{
  "checkedDate": "2026-10-15",
  "environment": "Node.js v22.19.0; direct RGBA fixtures, not browser screenshots",
  "engines": {
    "jsqr": "1.4.0",
    "qrcode": "1.5.4",
    "pngjs": "5.0.0",
    "fast-xml-parser": "5.11.1",
    "prettier": "3.9.9",
    "terser": "5.51.2"
  },
  "qr": [
    {
      "id": "clear-url",
      "condition": "Clear URL, 8 pixels per module",
      "file": "qr-clear-url.png",
      "width": 264,
      "height": 264,
      "bytes": 1545,
      "expected": "https://kitlumi.com/",
      "decoded": "https://kitlumi.com/",
      "version": 2,
      "result": "Decoded exact payload"
    },
    {
      "id": "small-url",
      "condition": "Small URL, 2 pixels per module",
      "file": "qr-small-url.png",
      "width": 66,
      "height": 66,
      "bytes": 727,
      "expected": "https://kitlumi.com/",
      "decoded": "https://kitlumi.com/",
      "version": 2,
      "result": "Decoded exact payload"
    },
    {
      "id": "tiny-url",
      "condition": "Tiny URL, 1 pixel per module",
      "file": "qr-tiny-url.png",
      "width": 33,
      "height": 33,
      "bytes": 519,
      "expected": "https://kitlumi.com/",
      "decoded": "https://kitlumi.com/",
      "version": 2,
      "result": "Decoded exact payload"
    },
    {
      "id": "inverted-url",
      "condition": "White modules on black",
      "file": "qr-inverted-url.png",
      "width": 264,
      "height": 264,
      "bytes": 1539,
      "expected": "https://kitlumi.com/",
      "decoded": "https://kitlumi.com/",
      "version": 2,
      "result": "Decoded exact payload"
    },
    {
      "id": "low-contrast",
      "condition": "Gray modules 90 on gray background 160",
      "file": "qr-low-contrast.png",
      "width": 264,
      "height": 264,
      "bytes": 1573,
      "expected": "https://kitlumi.com/",
      "decoded": null,
      "version": null,
      "result": "No QR code found"
    },
    {
      "id": "light-blur",
      "condition": "Box blur, radius 1 pixel",
      "file": "qr-light-blur.png",
      "width": 264,
      "height": 264,
      "bytes": 6216,
      "expected": "https://kitlumi.com/",
      "decoded": "https://kitlumi.com/",
      "version": 2,
      "result": "Decoded exact payload"
    },
    {
      "id": "heavy-blur",
      "condition": "Box blur, radius 6 pixels",
      "file": "qr-heavy-blur.png",
      "width": 264,
      "height": 264,
      "bytes": 56017,
      "expected": "https://kitlumi.com/",
      "decoded": null,
      "version": null,
      "result": "No QR code found"
    },
    {
      "id": "cropped-left",
      "condition": "Left quarter removed, including finder detail",
      "file": "qr-cropped-left.png",
      "width": 198,
      "height": 264,
      "bytes": 1356,
      "expected": "https://kitlumi.com/",
      "decoded": null,
      "version": null,
      "result": "No QR code found"
    },
    {
      "id": "no-margin",
      "condition": "No quiet-zone margin",
      "file": "qr-no-margin.png",
      "width": 200,
      "height": 200,
      "bytes": 1224,
      "expected": "https://kitlumi.com/",
      "decoded": "https://kitlumi.com/",
      "version": 2,
      "result": "Decoded exact payload"
    },
    {
      "id": "two-codes",
      "condition": "Two separate QR codes in one image",
      "file": "qr-two-codes.png",
      "width": 560,
      "height": 264,
      "bytes": 2581,
      "expected": [
        "https://kitlumi.com/",
        "KitLumi sample B"
      ],
      "decoded": null,
      "version": null,
      "result": "No QR code found"
    },
    {
      "id": "plain-text",
      "condition": "Plain-text payload",
      "file": "qr-plain-text.png",
      "width": 264,
      "height": 264,
      "bytes": 1553,
      "expected": "KitLumi local QR sample",
      "decoded": "KitLumi local QR sample",
      "version": 2,
      "result": "Decoded exact payload"
    },
    {
      "id": "blank",
      "condition": "Blank image, no QR code",
      "file": "qr-blank.png",
      "width": 264,
      "height": 264,
      "bytes": 743,
      "expected": null,
      "decoded": null,
      "version": null,
      "result": "No QR code found"
    }
  ],
  "xml": [
    {
      "id": "catalog",
      "condition": "Attributes and repeated children",
      "input": "<catalog><book id=\"a\"><title>XML</title></book><book id=\"b\"><title>JSON</title></book></catalog>",
      "output": "{\n  \"catalog\": {\n    \"book\": [\n      {\n        \"title\": \"XML\",\n        \"@_id\": \"a\"\n      },\n      {\n        \"title\": \"JSON\",\n        \"@_id\": \"b\"\n      }\n    ]\n  }\n}",
      "file": "xml-catalog.xml"
    },
    {
      "id": "namespace",
      "condition": "Namespace prefix and declaration",
      "input": "<m:note xmlns:m=\"urn:kitlumi:example\" m:id=\"7\"><m:title>XML</m:title></m:note>",
      "output": "{\n  \"m:note\": {\n    \"m:title\": \"XML\",\n    \"@_xmlns:m\": \"urn:kitlumi:example\",\n    \"@_m:id\": \"7\"\n  }\n}",
      "file": "xml-namespace.xml"
    },
    {
      "id": "mixed-content",
      "condition": "Mixed text loses interleaving in an object",
      "input": "<p>Before <b>bold</b> after <i>italic</i> end.</p>",
      "output": "{\n  \"p\": {\n    \"b\": \"bold\",\n    \"i\": \"italic\",\n    \"#text\": \"Beforeafterend.\"\n  }\n}",
      "file": "xml-mixed-content.xml"
    }
  ],
  "typescript": [
    {
      "id": "nested",
      "condition": "Nested object",
      "input": "{\"id\":42,\"owner\":{\"name\":\"Ada\"}}",
      "parsedValue": "{\"id\":42,\"owner\":{\"name\":\"Ada\"}}",
      "output": "interface Root {\n  id: number;\n  owner: Owner;\n}\n\ninterface Owner {\n  name: string;\n}\n\ntype Payload = Root;",
      "typeOutput": "type Root = {\n  id: number;\n  owner: Owner;\n};\n\ntype Owner = {\n  name: string;\n};\n\ntype Payload = Root;"
    },
    {
      "id": "missing-field",
      "condition": "A second item omits name",
      "input": "[{\"id\":1,\"name\":\"Ada\"},{\"id\":2}]",
      "parsedValue": "[{\"id\":1,\"name\":\"Ada\"},{\"id\":2}]",
      "output": "interface RootItem {\n  id: number;\n  name: string;\n}\n\ntype Payload = RootItem[];",
      "typeOutput": "type RootItem = {\n  id: number;\n  name: string;\n};\n\ntype Payload = RootItem[];"
    },
    {
      "id": "heterogeneous",
      "condition": "Mixed array items",
      "input": "[1,\"two\",true]",
      "parsedValue": "[1,\"two\",true]",
      "output": "\n\ntype Payload = number[];",
      "typeOutput": "\n\ntype Payload = number[];"
    },
    {
      "id": "null",
      "condition": "Null is one observed type",
      "input": "{\"nickname\":null}",
      "parsedValue": "{\"nickname\":null}",
      "output": "interface Root {\n  nickname: null;\n}\n\ntype Payload = Root;",
      "typeOutput": "type Root = {\n  nickname: null;\n};\n\ntype Payload = Root;"
    },
    {
      "id": "empty-array",
      "condition": "No item shape to infer",
      "input": "{\"items\":[]}",
      "parsedValue": "{\"items\":[]}",
      "output": "interface Root {\n  items: unknown[];\n}\n\ntype Payload = Root;",
      "typeOutput": "type Root = {\n  items: unknown[];\n};\n\ntype Payload = Root;"
    },
    {
      "id": "large-id",
      "condition": "Numeric ID exceeds safe integer range",
      "input": "{\"id\":9007199254740993}",
      "parsedValue": "{\"id\":9007199254740992}",
      "output": "interface Root {\n  id: number;\n}\n\ntype Payload = Root;",
      "typeOutput": "type Root = {\n  id: number;\n};\n\ntype Payload = Root;"
    }
  ],
  "javascript": {
    "input": "const tools=[\"HTML\",\"JavaScript\"];function findTool(name){return tools.find((tool)=>tool===name)??null}",
    "formatted": "const tools = ['HTML', 'JavaScript'];\nfunction findTool(name) {\n  return tools.find((tool) => tool === name) ?? null;\n}\n",
    "minified": "const tools=[\"HTML\",\"JavaScript\"];function findTool(o){return tools.find(n=>n===o)??null}",
    "inputUtf8Bytes": 103,
    "formattedUtf8Bytes": 120,
    "minifiedUtf8Bytes": 89
  }
}
