@hexpro/qr-code-studio 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/LICENSE +21 -0
- package/README.md +62 -2
- package/dist/app/bulk.d.ts +21 -0
- package/dist/app/bulk.d.ts.map +1 -0
- package/dist/app/bulk.js +564 -0
- package/dist/app/bulk.js.map +1 -0
- package/dist/app/check.d.ts +23 -0
- package/dist/app/check.d.ts.map +1 -0
- package/dist/app/check.js +306 -0
- package/dist/app/check.js.map +1 -0
- package/dist/app/content.d.ts +19 -0
- package/dist/app/content.d.ts.map +1 -0
- package/dist/app/content.js +634 -0
- package/dist/app/content.js.map +1 -0
- package/dist/app/context.d.ts +25 -0
- package/dist/app/context.d.ts.map +1 -0
- package/dist/app/context.js +11 -0
- package/dist/app/context.js.map +1 -0
- package/dist/app/controls.d.ts +95 -0
- package/dist/app/controls.d.ts.map +1 -0
- package/dist/app/controls.js +278 -0
- package/dist/app/controls.js.map +1 -0
- package/dist/app/design-panels.d.ts +27 -0
- package/dist/app/design-panels.d.ts.map +1 -0
- package/dist/app/design-panels.js +1196 -0
- package/dist/app/design-panels.js.map +1 -0
- package/dist/app/dom.d.ts +74 -0
- package/dist/app/dom.d.ts.map +1 -0
- package/dist/app/dom.js +129 -0
- package/dist/app/dom.js.map +1 -0
- package/dist/app/images.d.ts +22 -0
- package/dist/app/images.d.ts.map +1 -0
- package/dist/app/images.js +50 -0
- package/dist/app/images.js.map +1 -0
- package/dist/app/library-view.d.ts +24 -0
- package/dist/app/library-view.d.ts.map +1 -0
- package/dist/app/library-view.js +260 -0
- package/dist/app/library-view.js.map +1 -0
- package/dist/app/main.d.ts +17 -0
- package/dist/app/main.d.ts.map +1 -0
- package/dist/app/main.js +518 -0
- package/dist/app/main.js.map +1 -0
- package/dist/app/measure.d.ts +26 -0
- package/dist/app/measure.d.ts.map +1 -0
- package/dist/app/measure.js +53 -0
- package/dist/app/measure.js.map +1 -0
- package/dist/app/proof.d.ts +30 -0
- package/dist/app/proof.d.ts.map +1 -0
- package/dist/app/proof.js +378 -0
- package/dist/app/proof.js.map +1 -0
- package/dist/app/save.d.ts +27 -0
- package/dist/app/save.d.ts.map +1 -0
- package/dist/app/save.js +331 -0
- package/dist/app/save.js.map +1 -0
- package/dist/app/scan.d.ts +25 -0
- package/dist/app/scan.d.ts.map +1 -0
- package/dist/app/scan.js +421 -0
- package/dist/app/scan.js.map +1 -0
- package/dist/app/shortcuts.d.ts +12 -0
- package/dist/app/shortcuts.d.ts.map +1 -0
- package/dist/app/shortcuts.js +17 -0
- package/dist/app/shortcuts.js.map +1 -0
- package/dist/app/text.d.ts +22 -0
- package/dist/app/text.d.ts.map +1 -0
- package/dist/app/text.js +50 -0
- package/dist/app/text.js.map +1 -0
- package/dist/batch/csv.d.ts +56 -0
- package/dist/batch/csv.d.ts.map +1 -0
- package/dist/batch/csv.js +327 -0
- package/dist/batch/csv.js.map +1 -0
- package/dist/batch/errors.d.ts +60 -0
- package/dist/batch/errors.d.ts.map +1 -0
- package/dist/batch/errors.js +60 -0
- package/dist/batch/errors.js.map +1 -0
- package/dist/batch/filename.d.ts +65 -0
- package/dist/batch/filename.d.ts.map +1 -0
- package/dist/batch/filename.js +205 -0
- package/dist/batch/filename.js.map +1 -0
- package/dist/batch/index.d.ts +17 -0
- package/dist/batch/index.d.ts.map +1 -0
- package/dist/batch/index.js +11 -0
- package/dist/batch/index.js.map +1 -0
- package/dist/batch/issues.d.ts +45 -0
- package/dist/batch/issues.d.ts.map +1 -0
- package/dist/batch/issues.js +47 -0
- package/dist/batch/issues.js.map +1 -0
- package/dist/batch/manifest.d.ts +43 -0
- package/dist/batch/manifest.d.ts.map +1 -0
- package/dist/batch/manifest.js +82 -0
- package/dist/batch/manifest.js.map +1 -0
- package/dist/batch/plan.d.ts +33 -0
- package/dist/batch/plan.d.ts.map +1 -0
- package/dist/batch/plan.js +254 -0
- package/dist/batch/plan.js.map +1 -0
- package/dist/batch/run.d.ts +68 -0
- package/dist/batch/run.d.ts.map +1 -0
- package/dist/batch/run.js +548 -0
- package/dist/batch/run.js.map +1 -0
- package/dist/batch/template.d.ts +54 -0
- package/dist/batch/template.d.ts.map +1 -0
- package/dist/batch/template.js +119 -0
- package/dist/batch/template.js.map +1 -0
- package/dist/batch/text-decoding.d.ts +49 -0
- package/dist/batch/text-decoding.d.ts.map +1 -0
- package/dist/batch/text-decoding.js +160 -0
- package/dist/batch/text-decoding.js.map +1 -0
- package/dist/batch/types.d.ts +240 -0
- package/dist/batch/types.d.ts.map +1 -0
- package/dist/batch/types.js +35 -0
- package/dist/batch/types.js.map +1 -0
- package/dist/batch/verify.d.ts +45 -0
- package/dist/batch/verify.d.ts.map +1 -0
- package/dist/batch/verify.js +72 -0
- package/dist/batch/verify.js.map +1 -0
- package/dist/batch/zip.d.ts +39 -0
- package/dist/batch/zip.d.ts.map +1 -0
- package/dist/batch/zip.js +201 -0
- package/dist/batch/zip.js.map +1 -0
- package/dist/conformance/finder.d.ts +67 -0
- package/dist/conformance/finder.d.ts.map +1 -0
- package/dist/conformance/finder.js +125 -0
- package/dist/conformance/finder.js.map +1 -0
- package/dist/conformance/frame.d.ts +28 -0
- package/dist/conformance/frame.d.ts.map +1 -0
- package/dist/conformance/frame.js +134 -0
- package/dist/conformance/frame.js.map +1 -0
- package/dist/conformance/index.d.ts +15 -0
- package/dist/conformance/index.d.ts.map +1 -0
- package/dist/conformance/index.js +8 -0
- package/dist/conformance/index.js.map +1 -0
- package/dist/conformance/module-shape.d.ts +35 -0
- package/dist/conformance/module-shape.d.ts.map +1 -0
- package/dist/conformance/module-shape.js +139 -0
- package/dist/conformance/module-shape.js.map +1 -0
- package/dist/conformance/payload-type.d.ts +48 -0
- package/dist/conformance/payload-type.d.ts.map +1 -0
- package/dist/conformance/payload-type.js +113 -0
- package/dist/conformance/payload-type.js.map +1 -0
- package/dist/conformance/preset.d.ts +37 -0
- package/dist/conformance/preset.d.ts.map +1 -0
- package/dist/conformance/preset.js +171 -0
- package/dist/conformance/preset.js.map +1 -0
- package/dist/conformance/region-captures.d.ts +41 -0
- package/dist/conformance/region-captures.d.ts.map +1 -0
- package/dist/conformance/region-captures.js +69 -0
- package/dist/conformance/region-captures.js.map +1 -0
- package/dist/conformance/region-shape.d.ts +43 -0
- package/dist/conformance/region-shape.d.ts.map +1 -0
- package/dist/conformance/region-shape.js +214 -0
- package/dist/conformance/region-shape.js.map +1 -0
- package/dist/conformance/sample.d.ts +13 -0
- package/dist/conformance/sample.d.ts.map +1 -0
- package/dist/conformance/sample.js +75 -0
- package/dist/conformance/sample.js.map +1 -0
- package/dist/conformance/types.d.ts +16 -0
- package/dist/conformance/types.d.ts.map +1 -0
- package/dist/conformance/types.js +10 -0
- package/dist/conformance/types.js.map +1 -0
- package/dist/core/bch.d.ts +36 -0
- package/dist/core/bch.d.ts.map +1 -0
- package/dist/core/bch.js +92 -0
- package/dist/core/bch.js.map +1 -0
- package/dist/core/bit-matrix.d.ts +56 -0
- package/dist/core/bit-matrix.d.ts.map +1 -0
- package/dist/core/bit-matrix.js +150 -0
- package/dist/core/bit-matrix.js.map +1 -0
- package/dist/core/bits.d.ts +53 -0
- package/dist/core/bits.d.ts.map +1 -0
- package/dist/core/bits.js +128 -0
- package/dist/core/bits.js.map +1 -0
- package/dist/core/checksums.d.ts +22 -0
- package/dist/core/checksums.d.ts.map +1 -0
- package/dist/core/checksums.js +64 -0
- package/dist/core/checksums.js.map +1 -0
- package/dist/core/deflate.d.ts +51 -0
- package/dist/core/deflate.d.ts.map +1 -0
- package/dist/core/deflate.js +851 -0
- package/dist/core/deflate.js.map +1 -0
- package/dist/core/errors.d.ts +123 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +168 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/field.d.ts +58 -0
- package/dist/core/field.d.ts.map +1 -0
- package/dist/core/field.js +184 -0
- package/dist/core/field.js.map +1 -0
- package/dist/core/huffman.d.ts +31 -0
- package/dist/core/huffman.d.ts.map +1 -0
- package/dist/core/huffman.js +131 -0
- package/dist/core/huffman.js.map +1 -0
- package/dist/core/image.d.ts +18 -0
- package/dist/core/image.d.ts.map +1 -0
- package/dist/core/image.js +2 -0
- package/dist/core/image.js.map +1 -0
- package/dist/core/index.d.ts +25 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +15 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/issue.d.ts +39 -0
- package/dist/core/issue.d.ts.map +1 -0
- package/dist/core/issue.js +24 -0
- package/dist/core/issue.js.map +1 -0
- package/dist/core/math.d.ts +56 -0
- package/dist/core/math.d.ts.map +1 -0
- package/dist/core/math.js +609 -0
- package/dist/core/math.js.map +1 -0
- package/dist/core/prng.d.ts +27 -0
- package/dist/core/prng.d.ts.map +1 -0
- package/dist/core/prng.js +111 -0
- package/dist/core/prng.js.map +1 -0
- package/dist/core/reed-solomon.d.ts +69 -0
- package/dist/core/reed-solomon.d.ts.map +1 -0
- package/dist/core/reed-solomon.js +308 -0
- package/dist/core/reed-solomon.js.map +1 -0
- package/dist/core/registry.d.ts +45 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +80 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/result.d.ts +33 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +52 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/zip.d.ts +36 -0
- package/dist/core/zip.d.ts.map +1 -0
- package/dist/core/zip.js +234 -0
- package/dist/core/zip.js.map +1 -0
- package/dist/decode/alignment.d.ts +34 -0
- package/dist/decode/alignment.d.ts.map +1 -0
- package/dist/decode/alignment.js +179 -0
- package/dist/decode/alignment.js.map +1 -0
- package/dist/decode/binarise.d.ts +95 -0
- package/dist/decode/binarise.d.ts.map +1 -0
- package/dist/decode/binarise.js +399 -0
- package/dist/decode/binarise.js.map +1 -0
- package/dist/decode/decoder.d.ts +75 -0
- package/dist/decode/decoder.d.ts.map +1 -0
- package/dist/decode/decoder.js +773 -0
- package/dist/decode/decoder.js.map +1 -0
- package/dist/decode/erasures.d.ts +26 -0
- package/dist/decode/erasures.d.ts.map +1 -0
- package/dist/decode/erasures.js +34 -0
- package/dist/decode/erasures.js.map +1 -0
- package/dist/decode/failure.d.ts +15 -0
- package/dist/decode/failure.d.ts.map +1 -0
- package/dist/decode/failure.js +22 -0
- package/dist/decode/failure.js.map +1 -0
- package/dist/decode/finder.d.ts +114 -0
- package/dist/decode/finder.d.ts.map +1 -0
- package/dist/decode/finder.js +441 -0
- package/dist/decode/finder.js.map +1 -0
- package/dist/decode/frame.d.ts +49 -0
- package/dist/decode/frame.d.ts.map +1 -0
- package/dist/decode/frame.js +228 -0
- package/dist/decode/frame.js.map +1 -0
- package/dist/decode/grey.d.ts +87 -0
- package/dist/decode/grey.d.ts.map +1 -0
- package/dist/decode/grey.js +226 -0
- package/dist/decode/grey.js.map +1 -0
- package/dist/decode/index.d.ts +4 -0
- package/dist/decode/index.d.ts.map +1 -0
- package/dist/decode/index.js +3 -0
- package/dist/decode/index.js.map +1 -0
- package/dist/decode/locate-qr.d.ts +80 -0
- package/dist/decode/locate-qr.d.ts.map +1 -0
- package/dist/decode/locate-qr.js +295 -0
- package/dist/decode/locate-qr.js.map +1 -0
- package/dist/decode/locate-single.d.ts +47 -0
- package/dist/decode/locate-single.d.ts.map +1 -0
- package/dist/decode/locate-single.js +169 -0
- package/dist/decode/locate-single.js.map +1 -0
- package/dist/decode/plain.d.ts +70 -0
- package/dist/decode/plain.d.ts.map +1 -0
- package/dist/decode/plain.js +460 -0
- package/dist/decode/plain.js.map +1 -0
- package/dist/decode/sample.d.ts +56 -0
- package/dist/decode/sample.d.ts.map +1 -0
- package/dist/decode/sample.js +154 -0
- package/dist/decode/sample.js.map +1 -0
- package/dist/decode/strict.d.ts +255 -0
- package/dist/decode/strict.d.ts.map +1 -0
- package/dist/decode/strict.js +597 -0
- package/dist/decode/strict.js.map +1 -0
- package/dist/decode/tiled.d.ts +137 -0
- package/dist/decode/tiled.d.ts.map +1 -0
- package/dist/decode/tiled.js +452 -0
- package/dist/decode/tiled.js.map +1 -0
- package/dist/decode/transform.d.ts +48 -0
- package/dist/decode/transform.d.ts.map +1 -0
- package/dist/decode/transform.js +180 -0
- package/dist/decode/transform.js.map +1 -0
- package/dist/decode/types.d.ts +163 -0
- package/dist/decode/types.d.ts.map +1 -0
- package/dist/decode/types.js +10 -0
- package/dist/decode/types.js.map +1 -0
- package/dist/design/base64.d.ts +16 -0
- package/dist/design/base64.d.ts.map +1 -0
- package/dist/design/base64.js +97 -0
- package/dist/design/base64.js.map +1 -0
- package/dist/design/canonical.d.ts +13 -0
- package/dist/design/canonical.d.ts.map +1 -0
- package/dist/design/canonical.js +100 -0
- package/dist/design/canonical.js.map +1 -0
- package/dist/design/caption.d.ts +54 -0
- package/dist/design/caption.d.ts.map +1 -0
- package/dist/design/caption.js +175 -0
- package/dist/design/caption.js.map +1 -0
- package/dist/design/catalogue/draw.d.ts +77 -0
- package/dist/design/catalogue/draw.d.ts.map +1 -0
- package/dist/design/catalogue/draw.js +260 -0
- package/dist/design/catalogue/draw.js.map +1 -0
- package/dist/design/catalogue/fills.d.ts +9 -0
- package/dist/design/catalogue/fills.d.ts.map +1 -0
- package/dist/design/catalogue/fills.js +64 -0
- package/dist/design/catalogue/fills.js.map +1 -0
- package/dist/design/catalogue/frames.d.ts +18 -0
- package/dist/design/catalogue/frames.d.ts.map +1 -0
- package/dist/design/catalogue/frames.js +451 -0
- package/dist/design/catalogue/frames.js.map +1 -0
- package/dist/design/catalogue/icons.d.ts +21 -0
- package/dist/design/catalogue/icons.d.ts.map +1 -0
- package/dist/design/catalogue/icons.js +293 -0
- package/dist/design/catalogue/icons.js.map +1 -0
- package/dist/design/catalogue/module-shapes.d.ts +21 -0
- package/dist/design/catalogue/module-shapes.d.ts.map +1 -0
- package/dist/design/catalogue/module-shapes.js +266 -0
- package/dist/design/catalogue/module-shapes.js.map +1 -0
- package/dist/design/catalogue/presets.d.ts +31 -0
- package/dist/design/catalogue/presets.d.ts.map +1 -0
- package/dist/design/catalogue/presets.js +696 -0
- package/dist/design/catalogue/presets.js.map +1 -0
- package/dist/design/catalogue/region-shapes.d.ts +41 -0
- package/dist/design/catalogue/region-shapes.d.ts.map +1 -0
- package/dist/design/catalogue/region-shapes.js +399 -0
- package/dist/design/catalogue/region-shapes.js.map +1 -0
- package/dist/design/catalogue/schema.d.ts +14 -0
- package/dist/design/catalogue/schema.d.ts.map +1 -0
- package/dist/design/catalogue/schema.js +58 -0
- package/dist/design/catalogue/schema.js.map +1 -0
- package/dist/design/constraints.d.ts +25 -0
- package/dist/design/constraints.d.ts.map +1 -0
- package/dist/design/constraints.js +194 -0
- package/dist/design/constraints.js.map +1 -0
- package/dist/design/document.d.ts +64 -0
- package/dist/design/document.d.ts.map +1 -0
- package/dist/design/document.js +66 -0
- package/dist/design/document.js.map +1 -0
- package/dist/design/finder.d.ts +79 -0
- package/dist/design/finder.d.ts.map +1 -0
- package/dist/design/finder.js +270 -0
- package/dist/design/finder.js.map +1 -0
- package/dist/design/index.d.ts +18 -0
- package/dist/design/index.d.ts.map +1 -0
- package/dist/design/index.js +15 -0
- package/dist/design/index.js.map +1 -0
- package/dist/design/link.d.ts +41 -0
- package/dist/design/link.d.ts.map +1 -0
- package/dist/design/link.js +131 -0
- package/dist/design/link.js.map +1 -0
- package/dist/design/logo.d.ts +57 -0
- package/dist/design/logo.d.ts.map +1 -0
- package/dist/design/logo.js +376 -0
- package/dist/design/logo.js.map +1 -0
- package/dist/design/migrate.d.ts +31 -0
- package/dist/design/migrate.d.ts.map +1 -0
- package/dist/design/migrate.js +87 -0
- package/dist/design/migrate.js.map +1 -0
- package/dist/design/neighbours.d.ts +24 -0
- package/dist/design/neighbours.d.ts.map +1 -0
- package/dist/design/neighbours.js +50 -0
- package/dist/design/neighbours.js.map +1 -0
- package/dist/design/paint.d.ts +47 -0
- package/dist/design/paint.d.ts.map +1 -0
- package/dist/design/paint.js +115 -0
- package/dist/design/paint.js.map +1 -0
- package/dist/design/params.d.ts +30 -0
- package/dist/design/params.d.ts.map +1 -0
- package/dist/design/params.js +85 -0
- package/dist/design/params.js.map +1 -0
- package/dist/design/preset-size.d.ts +14 -0
- package/dist/design/preset-size.d.ts.map +1 -0
- package/dist/design/preset-size.js +14 -0
- package/dist/design/preset-size.js.map +1 -0
- package/dist/design/registries.d.ts +9 -0
- package/dist/design/registries.d.ts.map +1 -0
- package/dist/design/registries.js +24 -0
- package/dist/design/registries.js.map +1 -0
- package/dist/design/scene.d.ts +38 -0
- package/dist/design/scene.d.ts.map +1 -0
- package/dist/design/scene.js +694 -0
- package/dist/design/scene.js.map +1 -0
- package/dist/design/swiss-cross.d.ts +54 -0
- package/dist/design/swiss-cross.d.ts.map +1 -0
- package/dist/design/swiss-cross.js +95 -0
- package/dist/design/swiss-cross.js.map +1 -0
- package/dist/design/types.d.ts +389 -0
- package/dist/design/types.d.ts.map +1 -0
- package/dist/design/types.js +29 -0
- package/dist/design/types.js.map +1 -0
- package/dist/design/validate.d.ts +48 -0
- package/dist/design/validate.d.ts.map +1 -0
- package/dist/design/validate.js +986 -0
- package/dist/design/validate.js.map +1 -0
- package/dist/dom/camera.d.ts +94 -0
- package/dist/dom/camera.d.ts.map +1 -0
- package/dist/dom/camera.js +288 -0
- package/dist/dom/camera.js.map +1 -0
- package/dist/dom/file-library.d.ts +297 -0
- package/dist/dom/file-library.d.ts.map +1 -0
- package/dist/dom/file-library.js +703 -0
- package/dist/dom/file-library.js.map +1 -0
- package/dist/dom/image.d.ts +77 -0
- package/dist/dom/image.d.ts.map +1 -0
- package/dist/dom/image.js +253 -0
- package/dist/dom/image.js.map +1 -0
- package/dist/dom/index.d.ts +19 -0
- package/dist/dom/index.d.ts.map +1 -0
- package/dist/dom/index.js +10 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/dom/library/index.d.ts +4 -0
- package/dist/dom/library/index.d.ts.map +1 -0
- package/dist/dom/library/index.js +2 -0
- package/dist/dom/library/index.js.map +1 -0
- package/dist/dom/library/indexeddb.d.ts +71 -0
- package/dist/dom/library/indexeddb.d.ts.map +1 -0
- package/dist/dom/library/indexeddb.js +365 -0
- package/dist/dom/library/indexeddb.js.map +1 -0
- package/dist/dom/logo.d.ts +36 -0
- package/dist/dom/logo.d.ts.map +1 -0
- package/dist/dom/logo.js +99 -0
- package/dist/dom/logo.js.map +1 -0
- package/dist/dom/orientation.d.ts +32 -0
- package/dist/dom/orientation.d.ts.map +1 -0
- package/dist/dom/orientation.js +152 -0
- package/dist/dom/orientation.js.map +1 -0
- package/dist/dom/output.d.ts +58 -0
- package/dist/dom/output.d.ts.map +1 -0
- package/dist/dom/output.js +93 -0
- package/dist/dom/output.js.map +1 -0
- package/dist/dom/print.d.ts +52 -0
- package/dist/dom/print.d.ts.map +1 -0
- package/dist/dom/print.js +101 -0
- package/dist/dom/print.js.map +1 -0
- package/dist/dom/raster-encoder.d.ts +43 -0
- package/dist/dom/raster-encoder.d.ts.map +1 -0
- package/dist/dom/raster-encoder.js +102 -0
- package/dist/dom/raster-encoder.js.map +1 -0
- package/dist/dom/resample.d.ts +20 -0
- package/dist/dom/resample.d.ts.map +1 -0
- package/dist/dom/resample.js +107 -0
- package/dist/dom/resample.js.map +1 -0
- package/dist/dom/types.d.ts +54 -0
- package/dist/dom/types.d.ts.map +1 -0
- package/dist/dom/types.js +13 -0
- package/dist/dom/types.js.map +1 -0
- package/dist/encode/bitstream.d.ts +14 -0
- package/dist/encode/bitstream.d.ts.map +1 -0
- package/dist/encode/bitstream.js +31 -0
- package/dist/encode/bitstream.js.map +1 -0
- package/dist/encode/encode.d.ts +21 -0
- package/dist/encode/encode.d.ts.map +1 -0
- package/dist/encode/encode.js +65 -0
- package/dist/encode/encode.js.map +1 -0
- package/dist/encode/index.d.ts +5 -0
- package/dist/encode/index.d.ts.map +1 -0
- package/dist/encode/index.js +4 -0
- package/dist/encode/index.js.map +1 -0
- package/dist/encode/plan.d.ts +61 -0
- package/dist/encode/plan.d.ts.map +1 -0
- package/dist/encode/plan.js +177 -0
- package/dist/encode/plan.js.map +1 -0
- package/dist/encode/structured-append.d.ts +35 -0
- package/dist/encode/structured-append.d.ts.map +1 -0
- package/dist/encode/structured-append.js +153 -0
- package/dist/encode/structured-append.js.map +1 -0
- package/dist/fonts/latin.d.ts +118 -0
- package/dist/fonts/latin.d.ts.map +1 -0
- package/dist/fonts/latin.js +137 -0
- package/dist/fonts/latin.js.map +1 -0
- package/dist/geometry/flatten.d.ts +60 -0
- package/dist/geometry/flatten.d.ts.map +1 -0
- package/dist/geometry/flatten.js +177 -0
- package/dist/geometry/flatten.js.map +1 -0
- package/dist/geometry/index.d.ts +10 -0
- package/dist/geometry/index.d.ts.map +1 -0
- package/dist/geometry/index.js +6 -0
- package/dist/geometry/index.js.map +1 -0
- package/dist/geometry/matrix.d.ts +50 -0
- package/dist/geometry/matrix.d.ts.map +1 -0
- package/dist/geometry/matrix.js +113 -0
- package/dist/geometry/matrix.js.map +1 -0
- package/dist/geometry/measure.d.ts +35 -0
- package/dist/geometry/measure.d.ts.map +1 -0
- package/dist/geometry/measure.js +206 -0
- package/dist/geometry/measure.js.map +1 -0
- package/dist/geometry/path.d.ts +137 -0
- package/dist/geometry/path.d.ts.map +1 -0
- package/dist/geometry/path.js +401 -0
- package/dist/geometry/path.js.map +1 -0
- package/dist/geometry/trace.d.ts +29 -0
- package/dist/geometry/trace.d.ts.map +1 -0
- package/dist/geometry/trace.js +166 -0
- package/dist/geometry/trace.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/inspect/explain.d.ts +32 -0
- package/dist/inspect/explain.d.ts.map +1 -0
- package/dist/inspect/explain.js +99 -0
- package/dist/inspect/explain.js.map +1 -0
- package/dist/inspect/gs1.d.ts +38 -0
- package/dist/inspect/gs1.d.ts.map +1 -0
- package/dist/inspect/gs1.js +130 -0
- package/dist/inspect/gs1.js.map +1 -0
- package/dist/inspect/index.d.ts +9 -0
- package/dist/inspect/index.d.ts.map +1 -0
- package/dist/inspect/index.js +6 -0
- package/dist/inspect/index.js.map +1 -0
- package/dist/inspect/inspect.d.ts +29 -0
- package/dist/inspect/inspect.d.ts.map +1 -0
- package/dist/inspect/inspect.js +98 -0
- package/dist/inspect/inspect.js.map +1 -0
- package/dist/inspect/keys.d.ts +54 -0
- package/dist/inspect/keys.d.ts.map +1 -0
- package/dist/inspect/keys.js +63 -0
- package/dist/inspect/keys.js.map +1 -0
- package/dist/inspect/sets.d.ts +27 -0
- package/dist/inspect/sets.d.ts.map +1 -0
- package/dist/inspect/sets.js +67 -0
- package/dist/inspect/sets.js.map +1 -0
- package/dist/inspect/types.d.ts +81 -0
- package/dist/inspect/types.d.ts.map +1 -0
- package/dist/inspect/types.js +16 -0
- package/dist/inspect/types.js.map +1 -0
- package/dist/messages/en/app.d.ts +11 -0
- package/dist/messages/en/app.d.ts.map +1 -0
- package/dist/messages/en/app.js +395 -0
- package/dist/messages/en/app.js.map +1 -0
- package/dist/messages/en/batch.d.ts +18 -0
- package/dist/messages/en/batch.d.ts.map +1 -0
- package/dist/messages/en/batch.js +42 -0
- package/dist/messages/en/batch.js.map +1 -0
- package/dist/messages/en/decode.d.ts +9 -0
- package/dist/messages/en/decode.d.ts.map +1 -0
- package/dist/messages/en/decode.js +21 -0
- package/dist/messages/en/decode.js.map +1 -0
- package/dist/messages/en/design.d.ts +13 -0
- package/dist/messages/en/design.d.ts.map +1 -0
- package/dist/messages/en/design.js +228 -0
- package/dist/messages/en/design.js.map +1 -0
- package/dist/messages/en/dom.d.ts +11 -0
- package/dist/messages/en/dom.d.ts.map +1 -0
- package/dist/messages/en/dom.js +14 -0
- package/dist/messages/en/dom.js.map +1 -0
- package/dist/messages/en/encode.d.ts +13 -0
- package/dist/messages/en/encode.d.ts.map +1 -0
- package/dist/messages/en/encode.js +20 -0
- package/dist/messages/en/encode.js.map +1 -0
- package/dist/messages/en/index.d.ts +48 -0
- package/dist/messages/en/index.d.ts.map +1 -0
- package/dist/messages/en/index.js +73 -0
- package/dist/messages/en/index.js.map +1 -0
- package/dist/messages/en/inspect.d.ts +13 -0
- package/dist/messages/en/inspect.d.ts.map +1 -0
- package/dist/messages/en/inspect.js +84 -0
- package/dist/messages/en/inspect.js.map +1 -0
- package/dist/messages/en/library.d.ts +12 -0
- package/dist/messages/en/library.d.ts.map +1 -0
- package/dist/messages/en/library.js +27 -0
- package/dist/messages/en/library.js.map +1 -0
- package/dist/messages/en/micro.d.ts +9 -0
- package/dist/messages/en/micro.d.ts.map +1 -0
- package/dist/messages/en/micro.js +13 -0
- package/dist/messages/en/micro.js.map +1 -0
- package/dist/messages/en/own-link.d.ts +7 -0
- package/dist/messages/en/own-link.d.ts.map +1 -0
- package/dist/messages/en/own-link.js +29 -0
- package/dist/messages/en/own-link.js.map +1 -0
- package/dist/messages/en/payload.d.ts +13 -0
- package/dist/messages/en/payload.d.ts.map +1 -0
- package/dist/messages/en/payload.js +427 -0
- package/dist/messages/en/payload.js.map +1 -0
- package/dist/messages/en/rmqr.d.ts +9 -0
- package/dist/messages/en/rmqr.d.ts.map +1 -0
- package/dist/messages/en/rmqr.js +12 -0
- package/dist/messages/en/rmqr.js.map +1 -0
- package/dist/messages/en/studio.d.ts +18 -0
- package/dist/messages/en/studio.d.ts.map +1 -0
- package/dist/messages/en/studio.js +117 -0
- package/dist/messages/en/studio.js.map +1 -0
- package/dist/messages/en/symbology.d.ts +13 -0
- package/dist/messages/en/symbology.d.ts.map +1 -0
- package/dist/messages/en/symbology.js +21 -0
- package/dist/messages/en/symbology.js.map +1 -0
- package/dist/messages/en/text.d.ts +23 -0
- package/dist/messages/en/text.d.ts.map +1 -0
- package/dist/messages/en/text.js +47 -0
- package/dist/messages/en/text.js.map +1 -0
- package/dist/messages/en/verify.d.ts +13 -0
- package/dist/messages/en/verify.d.ts.map +1 -0
- package/dist/messages/en/verify.js +117 -0
- package/dist/messages/en/verify.js.map +1 -0
- package/dist/messages/format.d.ts +30 -0
- package/dist/messages/format.d.ts.map +1 -0
- package/dist/messages/format.js +170 -0
- package/dist/messages/format.js.map +1 -0
- package/dist/own-link/index.d.ts +5 -0
- package/dist/own-link/index.d.ts.map +1 -0
- package/dist/own-link/index.js +3 -0
- package/dist/own-link/index.js.map +1 -0
- package/dist/own-link/query.d.ts +10 -0
- package/dist/own-link/query.d.ts.map +1 -0
- package/dist/own-link/query.js +33 -0
- package/dist/own-link/query.js.map +1 -0
- package/dist/own-link/redirects.d.ts +54 -0
- package/dist/own-link/redirects.d.ts.map +1 -0
- package/dist/own-link/redirects.js +271 -0
- package/dist/own-link/redirects.js.map +1 -0
- package/dist/own-link/utm.d.ts +24 -0
- package/dist/own-link/utm.d.ts.map +1 -0
- package/dist/own-link/utm.js +82 -0
- package/dist/own-link/utm.js.map +1 -0
- package/dist/payload/banking.d.ts +39 -0
- package/dist/payload/banking.d.ts.map +1 -0
- package/dist/payload/banking.js +87 -0
- package/dist/payload/banking.js.map +1 -0
- package/dist/payload/base58.d.ts +21 -0
- package/dist/payload/base58.d.ts.map +1 -0
- package/dist/payload/base58.js +75 -0
- package/dist/payload/base58.js.map +1 -0
- package/dist/payload/bech32.d.ts +59 -0
- package/dist/payload/bech32.d.ts.map +1 -0
- package/dist/payload/bech32.js +137 -0
- package/dist/payload/bech32.js.map +1 -0
- package/dist/payload/check-digits.d.ts +49 -0
- package/dist/payload/check-digits.d.ts.map +1 -0
- package/dist/payload/check-digits.js +101 -0
- package/dist/payload/check-digits.js.map +1 -0
- package/dist/payload/content/bitcoin.d.ts +34 -0
- package/dist/payload/content/bitcoin.d.ts.map +1 -0
- package/dist/payload/content/bitcoin.js +137 -0
- package/dist/payload/content/bitcoin.js.map +1 -0
- package/dist/payload/content/email.d.ts +19 -0
- package/dist/payload/content/email.d.ts.map +1 -0
- package/dist/payload/content/email.js +137 -0
- package/dist/payload/content/email.js.map +1 -0
- package/dist/payload/content/epc.d.ts +32 -0
- package/dist/payload/content/epc.d.ts.map +1 -0
- package/dist/payload/content/epc.js +160 -0
- package/dist/payload/content/epc.js.map +1 -0
- package/dist/payload/content/event.d.ts +35 -0
- package/dist/payload/content/event.d.ts.map +1 -0
- package/dist/payload/content/event.js +242 -0
- package/dist/payload/content/event.js.map +1 -0
- package/dist/payload/content/facetime.d.ts +14 -0
- package/dist/payload/content/facetime.d.ts.map +1 -0
- package/dist/payload/content/facetime.js +56 -0
- package/dist/payload/content/facetime.js.map +1 -0
- package/dist/payload/content/geo.d.ts +24 -0
- package/dist/payload/content/geo.d.ts.map +1 -0
- package/dist/payload/content/geo.js +139 -0
- package/dist/payload/content/geo.js.map +1 -0
- package/dist/payload/content/gs1-digital-link.d.ts +34 -0
- package/dist/payload/content/gs1-digital-link.d.ts.map +1 -0
- package/dist/payload/content/gs1-digital-link.js +171 -0
- package/dist/payload/content/gs1-digital-link.js.map +1 -0
- package/dist/payload/content/lightning.d.ts +22 -0
- package/dist/payload/content/lightning.d.ts.map +1 -0
- package/dist/payload/content/lightning.js +90 -0
- package/dist/payload/content/lightning.js.map +1 -0
- package/dist/payload/content/mecard.d.ts +23 -0
- package/dist/payload/content/mecard.d.ts.map +1 -0
- package/dist/payload/content/mecard.js +111 -0
- package/dist/payload/content/mecard.js.map +1 -0
- package/dist/payload/content/phone.d.ts +17 -0
- package/dist/payload/content/phone.d.ts.map +1 -0
- package/dist/payload/content/phone.js +39 -0
- package/dist/payload/content/phone.js.map +1 -0
- package/dist/payload/content/pix.d.ts +36 -0
- package/dist/payload/content/pix.d.ts.map +1 -0
- package/dist/payload/content/pix.js +191 -0
- package/dist/payload/content/pix.js.map +1 -0
- package/dist/payload/content/signal.d.ts +17 -0
- package/dist/payload/content/signal.d.ts.map +1 -0
- package/dist/payload/content/signal.js +43 -0
- package/dist/payload/content/signal.js.map +1 -0
- package/dist/payload/content/sms.d.ts +18 -0
- package/dist/payload/content/sms.d.ts.map +1 -0
- package/dist/payload/content/sms.js +64 -0
- package/dist/payload/content/sms.js.map +1 -0
- package/dist/payload/content/swiss-qr-bill.d.ts +61 -0
- package/dist/payload/content/swiss-qr-bill.d.ts.map +1 -0
- package/dist/payload/content/swiss-qr-bill.js +325 -0
- package/dist/payload/content/swiss-qr-bill.js.map +1 -0
- package/dist/payload/content/telegram.d.ts +18 -0
- package/dist/payload/content/telegram.d.ts.map +1 -0
- package/dist/payload/content/telegram.js +105 -0
- package/dist/payload/content/telegram.js.map +1 -0
- package/dist/payload/content/text.d.ts +9 -0
- package/dist/payload/content/text.d.ts.map +1 -0
- package/dist/payload/content/text.js +18 -0
- package/dist/payload/content/text.js.map +1 -0
- package/dist/payload/content/upi.d.ts +21 -0
- package/dist/payload/content/upi.d.ts.map +1 -0
- package/dist/payload/content/upi.js +89 -0
- package/dist/payload/content/upi.js.map +1 -0
- package/dist/payload/content/url.d.ts +31 -0
- package/dist/payload/content/url.d.ts.map +1 -0
- package/dist/payload/content/url.js +120 -0
- package/dist/payload/content/url.js.map +1 -0
- package/dist/payload/content/vcard.d.ts +42 -0
- package/dist/payload/content/vcard.d.ts.map +1 -0
- package/dist/payload/content/vcard.js +302 -0
- package/dist/payload/content/vcard.js.map +1 -0
- package/dist/payload/content/whatsapp.d.ts +17 -0
- package/dist/payload/content/whatsapp.d.ts.map +1 -0
- package/dist/payload/content/whatsapp.js +72 -0
- package/dist/payload/content/whatsapp.js.map +1 -0
- package/dist/payload/content/wifi.d.ts +48 -0
- package/dist/payload/content/wifi.d.ts.map +1 -0
- package/dist/payload/content/wifi.js +240 -0
- package/dist/payload/content/wifi.js.map +1 -0
- package/dist/payload/content/zatca.d.ts +35 -0
- package/dist/payload/content/zatca.d.ts.map +1 -0
- package/dist/payload/content/zatca.js +156 -0
- package/dist/payload/content/zatca.js.map +1 -0
- package/dist/payload/data/hosts.d.ts +39 -0
- package/dist/payload/data/hosts.d.ts.map +1 -0
- package/dist/payload/data/hosts.js +74 -0
- package/dist/payload/data/hosts.js.map +1 -0
- package/dist/payload/define.d.ts +57 -0
- package/dist/payload/define.d.ts.map +1 -0
- package/dist/payload/define.js +87 -0
- package/dist/payload/define.js.map +1 -0
- package/dist/payload/detect.d.ts +13 -0
- package/dist/payload/detect.d.ts.map +1 -0
- package/dist/payload/detect.js +32 -0
- package/dist/payload/detect.js.map +1 -0
- package/dist/payload/emv.d.ts +41 -0
- package/dist/payload/emv.d.ts.map +1 -0
- package/dist/payload/emv.js +73 -0
- package/dist/payload/emv.js.map +1 -0
- package/dist/payload/escape.d.ts +66 -0
- package/dist/payload/escape.d.ts.map +1 -0
- package/dist/payload/escape.js +225 -0
- package/dist/payload/escape.js.map +1 -0
- package/dist/payload/fields.d.ts +86 -0
- package/dist/payload/fields.d.ts.map +1 -0
- package/dist/payload/fields.js +368 -0
- package/dist/payload/fields.js.map +1 -0
- package/dist/payload/hash.d.ts +11 -0
- package/dist/payload/hash.d.ts.map +1 -0
- package/dist/payload/hash.js +82 -0
- package/dist/payload/hash.js.map +1 -0
- package/dist/payload/index.d.ts +58 -0
- package/dist/payload/index.d.ts.map +1 -0
- package/dist/payload/index.js +32 -0
- package/dist/payload/index.js.map +1 -0
- package/dist/payload/punycode.d.ts +18 -0
- package/dist/payload/punycode.d.ts.map +1 -0
- package/dist/payload/punycode.js +99 -0
- package/dist/payload/punycode.js.map +1 -0
- package/dist/payload/registry.d.ts +20 -0
- package/dist/payload/registry.d.ts.map +1 -0
- package/dist/payload/registry.js +64 -0
- package/dist/payload/registry.js.map +1 -0
- package/dist/payload/safety.d.ts +13 -0
- package/dist/payload/safety.d.ts.map +1 -0
- package/dist/payload/safety.js +30 -0
- package/dist/payload/safety.js.map +1 -0
- package/dist/payload/scripts.d.ts +25 -0
- package/dist/payload/scripts.d.ts.map +1 -0
- package/dist/payload/scripts.js +90 -0
- package/dist/payload/scripts.js.map +1 -0
- package/dist/payload/types.d.ts +138 -0
- package/dist/payload/types.d.ts.map +1 -0
- package/dist/payload/types.js +28 -0
- package/dist/payload/types.js.map +1 -0
- package/dist/payload/uri.d.ts +24 -0
- package/dist/payload/uri.d.ts.map +1 -0
- package/dist/payload/uri.js +69 -0
- package/dist/payload/uri.js.map +1 -0
- package/dist/payload/url-safety.d.ts +31 -0
- package/dist/payload/url-safety.d.ts.map +1 -0
- package/dist/payload/url-safety.js +221 -0
- package/dist/payload/url-safety.js.map +1 -0
- package/dist/payload/vectors/bitcoin.d.ts +13 -0
- package/dist/payload/vectors/bitcoin.d.ts.map +1 -0
- package/dist/payload/vectors/bitcoin.js +83 -0
- package/dist/payload/vectors/bitcoin.js.map +1 -0
- package/dist/payload/vectors/built-in.d.ts +15 -0
- package/dist/payload/vectors/built-in.d.ts.map +1 -0
- package/dist/payload/vectors/built-in.js +59 -0
- package/dist/payload/vectors/built-in.js.map +1 -0
- package/dist/payload/vectors/email.d.ts +8 -0
- package/dist/payload/vectors/email.d.ts.map +1 -0
- package/dist/payload/vectors/email.js +60 -0
- package/dist/payload/vectors/email.js.map +1 -0
- package/dist/payload/vectors/epc.d.ts +9 -0
- package/dist/payload/vectors/epc.d.ts.map +1 -0
- package/dist/payload/vectors/epc.js +38 -0
- package/dist/payload/vectors/epc.js.map +1 -0
- package/dist/payload/vectors/event.d.ts +9 -0
- package/dist/payload/vectors/event.d.ts.map +1 -0
- package/dist/payload/vectors/event.js +57 -0
- package/dist/payload/vectors/event.js.map +1 -0
- package/dist/payload/vectors/facetime.d.ts +9 -0
- package/dist/payload/vectors/facetime.d.ts.map +1 -0
- package/dist/payload/vectors/facetime.js +19 -0
- package/dist/payload/vectors/facetime.js.map +1 -0
- package/dist/payload/vectors/geo.d.ts +8 -0
- package/dist/payload/vectors/geo.d.ts.map +1 -0
- package/dist/payload/vectors/geo.js +22 -0
- package/dist/payload/vectors/geo.js.map +1 -0
- package/dist/payload/vectors/gs1-digital-link.d.ts +9 -0
- package/dist/payload/vectors/gs1-digital-link.d.ts.map +1 -0
- package/dist/payload/vectors/gs1-digital-link.js +21 -0
- package/dist/payload/vectors/gs1-digital-link.js.map +1 -0
- package/dist/payload/vectors/hosts.d.ts +12 -0
- package/dist/payload/vectors/hosts.d.ts.map +1 -0
- package/dist/payload/vectors/hosts.js +50 -0
- package/dist/payload/vectors/hosts.js.map +1 -0
- package/dist/payload/vectors/index.d.ts +10 -0
- package/dist/payload/vectors/index.d.ts.map +1 -0
- package/dist/payload/vectors/index.js +9 -0
- package/dist/payload/vectors/index.js.map +1 -0
- package/dist/payload/vectors/lightning.d.ts +9 -0
- package/dist/payload/vectors/lightning.d.ts.map +1 -0
- package/dist/payload/vectors/lightning.js +23 -0
- package/dist/payload/vectors/lightning.js.map +1 -0
- package/dist/payload/vectors/mecard.d.ts +9 -0
- package/dist/payload/vectors/mecard.d.ts.map +1 -0
- package/dist/payload/vectors/mecard.js +25 -0
- package/dist/payload/vectors/mecard.js.map +1 -0
- package/dist/payload/vectors/phone.d.ts +9 -0
- package/dist/payload/vectors/phone.d.ts.map +1 -0
- package/dist/payload/vectors/phone.js +13 -0
- package/dist/payload/vectors/phone.js.map +1 -0
- package/dist/payload/vectors/pix.d.ts +9 -0
- package/dist/payload/vectors/pix.d.ts.map +1 -0
- package/dist/payload/vectors/pix.js +21 -0
- package/dist/payload/vectors/pix.js.map +1 -0
- package/dist/payload/vectors/signal.d.ts +9 -0
- package/dist/payload/vectors/signal.d.ts.map +1 -0
- package/dist/payload/vectors/signal.js +14 -0
- package/dist/payload/vectors/signal.js.map +1 -0
- package/dist/payload/vectors/sms.d.ts +9 -0
- package/dist/payload/vectors/sms.d.ts.map +1 -0
- package/dist/payload/vectors/sms.js +18 -0
- package/dist/payload/vectors/sms.js.map +1 -0
- package/dist/payload/vectors/swiss-qr-bill.d.ts +9 -0
- package/dist/payload/vectors/swiss-qr-bill.d.ts.map +1 -0
- package/dist/payload/vectors/swiss-qr-bill.js +72 -0
- package/dist/payload/vectors/swiss-qr-bill.js.map +1 -0
- package/dist/payload/vectors/telegram.d.ts +9 -0
- package/dist/payload/vectors/telegram.d.ts.map +1 -0
- package/dist/payload/vectors/telegram.js +19 -0
- package/dist/payload/vectors/telegram.js.map +1 -0
- package/dist/payload/vectors/text.d.ts +9 -0
- package/dist/payload/vectors/text.d.ts.map +1 -0
- package/dist/payload/vectors/text.js +13 -0
- package/dist/payload/vectors/text.js.map +1 -0
- package/dist/payload/vectors/upi.d.ts +9 -0
- package/dist/payload/vectors/upi.d.ts.map +1 -0
- package/dist/payload/vectors/upi.js +14 -0
- package/dist/payload/vectors/upi.js.map +1 -0
- package/dist/payload/vectors/url.d.ts +8 -0
- package/dist/payload/vectors/url.d.ts.map +1 -0
- package/dist/payload/vectors/url.js +30 -0
- package/dist/payload/vectors/url.js.map +1 -0
- package/dist/payload/vectors/vcard.d.ts +9 -0
- package/dist/payload/vectors/vcard.d.ts.map +1 -0
- package/dist/payload/vectors/vcard.js +47 -0
- package/dist/payload/vectors/vcard.js.map +1 -0
- package/dist/payload/vectors/whatsapp.d.ts +9 -0
- package/dist/payload/vectors/whatsapp.d.ts.map +1 -0
- package/dist/payload/vectors/whatsapp.js +19 -0
- package/dist/payload/vectors/whatsapp.js.map +1 -0
- package/dist/payload/vectors/wifi.d.ts +13 -0
- package/dist/payload/vectors/wifi.d.ts.map +1 -0
- package/dist/payload/vectors/wifi.js +40 -0
- package/dist/payload/vectors/wifi.js.map +1 -0
- package/dist/payload/vectors/zatca.d.ts +12 -0
- package/dist/payload/vectors/zatca.d.ts.map +1 -0
- package/dist/payload/vectors/zatca.js +28 -0
- package/dist/payload/vectors/zatca.js.map +1 -0
- package/dist/qr-code-studio.html +190 -0
- package/dist/registries.d.ts +24 -0
- package/dist/registries.d.ts.map +1 -0
- package/dist/registries.js +23 -0
- package/dist/registries.js.map +1 -0
- package/dist/render/base64.d.ts +11 -0
- package/dist/render/base64.d.ts.map +1 -0
- package/dist/render/base64.js +40 -0
- package/dist/render/base64.js.map +1 -0
- package/dist/render/colour.d.ts +28 -0
- package/dist/render/colour.d.ts.map +1 -0
- package/dist/render/colour.js +72 -0
- package/dist/render/colour.js.map +1 -0
- package/dist/render/conic.d.ts +68 -0
- package/dist/render/conic.d.ts.map +1 -0
- package/dist/render/conic.js +205 -0
- package/dist/render/conic.js.map +1 -0
- package/dist/render/coverage.d.ts +154 -0
- package/dist/render/coverage.d.ts.map +1 -0
- package/dist/render/coverage.js +613 -0
- package/dist/render/coverage.js.map +1 -0
- package/dist/render/eps.d.ts +41 -0
- package/dist/render/eps.d.ts.map +1 -0
- package/dist/render/eps.js +377 -0
- package/dist/render/eps.js.map +1 -0
- package/dist/render/impose.d.ts +130 -0
- package/dist/render/impose.d.ts.map +1 -0
- package/dist/render/impose.js +288 -0
- package/dist/render/impose.js.map +1 -0
- package/dist/render/index.d.ts +22 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +13 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/paint.d.ts +62 -0
- package/dist/render/paint.d.ts.map +1 -0
- package/dist/render/paint.js +169 -0
- package/dist/render/paint.js.map +1 -0
- package/dist/render/pdf-colour.d.ts +34 -0
- package/dist/render/pdf-colour.d.ts.map +1 -0
- package/dist/render/pdf-colour.js +64 -0
- package/dist/render/pdf-colour.js.map +1 -0
- package/dist/render/pdf-content.d.ts +90 -0
- package/dist/render/pdf-content.d.ts.map +1 -0
- package/dist/render/pdf-content.js +367 -0
- package/dist/render/pdf-content.js.map +1 -0
- package/dist/render/pdf-document.d.ts +38 -0
- package/dist/render/pdf-document.d.ts.map +1 -0
- package/dist/render/pdf-document.js +110 -0
- package/dist/render/pdf-document.js.map +1 -0
- package/dist/render/pdf-hash.d.ts +14 -0
- package/dist/render/pdf-hash.d.ts.map +1 -0
- package/dist/render/pdf-hash.js +71 -0
- package/dist/render/pdf-hash.js.map +1 -0
- package/dist/render/pdf-syntax.d.ts +45 -0
- package/dist/render/pdf-syntax.d.ts.map +1 -0
- package/dist/render/pdf-syntax.js +100 -0
- package/dist/render/pdf-syntax.js.map +1 -0
- package/dist/render/pdf.d.ts +59 -0
- package/dist/render/pdf.d.ts.map +1 -0
- package/dist/render/pdf.js +267 -0
- package/dist/render/pdf.js.map +1 -0
- package/dist/render/png-decode.d.ts +33 -0
- package/dist/render/png-decode.d.ts.map +1 -0
- package/dist/render/png-decode.js +345 -0
- package/dist/render/png-decode.js.map +1 -0
- package/dist/render/png.d.ts +37 -0
- package/dist/render/png.d.ts.map +1 -0
- package/dist/render/png.js +350 -0
- package/dist/render/png.js.map +1 -0
- package/dist/render/raster.d.ts +40 -0
- package/dist/render/raster.d.ts.map +1 -0
- package/dist/render/raster.js +245 -0
- package/dist/render/raster.js.map +1 -0
- package/dist/render/scene.d.ts +84 -0
- package/dist/render/scene.d.ts.map +1 -0
- package/dist/render/scene.js +216 -0
- package/dist/render/scene.js.map +1 -0
- package/dist/render/sheets.d.ts +26 -0
- package/dist/render/sheets.d.ts.map +1 -0
- package/dist/render/sheets.js +83 -0
- package/dist/render/sheets.js.map +1 -0
- package/dist/render/svg.d.ts +54 -0
- package/dist/render/svg.d.ts.map +1 -0
- package/dist/render/svg.js +324 -0
- package/dist/render/svg.js.map +1 -0
- package/dist/render/types.d.ts +95 -0
- package/dist/render/types.d.ts.map +1 -0
- package/dist/render/types.js +9 -0
- package/dist/render/types.js.map +1 -0
- package/dist/segment/alphanumeric.d.ts +15 -0
- package/dist/segment/alphanumeric.d.ts.map +1 -0
- package/dist/segment/alphanumeric.js +23 -0
- package/dist/segment/alphanumeric.js.map +1 -0
- package/dist/segment/eci.d.ts +41 -0
- package/dist/segment/eci.d.ts.map +1 -0
- package/dist/segment/eci.js +194 -0
- package/dist/segment/eci.js.map +1 -0
- package/dist/segment/index.d.ts +10 -0
- package/dist/segment/index.d.ts.map +1 -0
- package/dist/segment/index.js +8 -0
- package/dist/segment/index.js.map +1 -0
- package/dist/segment/kanji.d.ts +57 -0
- package/dist/segment/kanji.d.ts.map +1 -0
- package/dist/segment/kanji.js +135 -0
- package/dist/segment/kanji.js.map +1 -0
- package/dist/segment/profile.d.ts +21 -0
- package/dist/segment/profile.d.ts.map +1 -0
- package/dist/segment/profile.js +66 -0
- package/dist/segment/profile.js.map +1 -0
- package/dist/segment/read.d.ts +29 -0
- package/dist/segment/read.d.ts.map +1 -0
- package/dist/segment/read.js +360 -0
- package/dist/segment/read.js.map +1 -0
- package/dist/segment/segment-text.d.ts +88 -0
- package/dist/segment/segment-text.d.ts.map +1 -0
- package/dist/segment/segment-text.js +422 -0
- package/dist/segment/segment-text.js.map +1 -0
- package/dist/segment/types.d.ts +89 -0
- package/dist/segment/types.d.ts.map +1 -0
- package/dist/segment/types.js +13 -0
- package/dist/segment/types.js.map +1 -0
- package/dist/segment/write.d.ts +36 -0
- package/dist/segment/write.d.ts.map +1 -0
- package/dist/segment/write.js +226 -0
- package/dist/segment/write.js.map +1 -0
- package/dist/studio/assets.d.ts +22 -0
- package/dist/studio/assets.d.ts.map +1 -0
- package/dist/studio/assets.js +66 -0
- package/dist/studio/assets.js.map +1 -0
- package/dist/studio/catalogue.d.ts +34 -0
- package/dist/studio/catalogue.d.ts.map +1 -0
- package/dist/studio/catalogue.js +359 -0
- package/dist/studio/catalogue.js.map +1 -0
- package/dist/studio/contrast.d.ts +16 -0
- package/dist/studio/contrast.d.ts.map +1 -0
- package/dist/studio/contrast.js +28 -0
- package/dist/studio/contrast.js.map +1 -0
- package/dist/studio/document.d.ts +61 -0
- package/dist/studio/document.d.ts.map +1 -0
- package/dist/studio/document.js +208 -0
- package/dist/studio/document.js.map +1 -0
- package/dist/studio/export.d.ts +52 -0
- package/dist/studio/export.d.ts.map +1 -0
- package/dist/studio/export.js +269 -0
- package/dist/studio/export.js.map +1 -0
- package/dist/studio/form.d.ts +15 -0
- package/dist/studio/form.d.ts.map +1 -0
- package/dist/studio/form.js +91 -0
- package/dist/studio/form.js.map +1 -0
- package/dist/studio/history.d.ts +66 -0
- package/dist/studio/history.d.ts.map +1 -0
- package/dist/studio/history.js +109 -0
- package/dist/studio/history.js.map +1 -0
- package/dist/studio/index.d.ts +16 -0
- package/dist/studio/index.d.ts.map +1 -0
- package/dist/studio/index.js +12 -0
- package/dist/studio/index.js.map +1 -0
- package/dist/studio/keys.d.ts +86 -0
- package/dist/studio/keys.d.ts.map +1 -0
- package/dist/studio/keys.js +165 -0
- package/dist/studio/keys.js.map +1 -0
- package/dist/studio/kit.d.ts +44 -0
- package/dist/studio/kit.d.ts.map +1 -0
- package/dist/studio/kit.js +114 -0
- package/dist/studio/kit.js.map +1 -0
- package/dist/studio/logo.d.ts +25 -0
- package/dist/studio/logo.d.ts.map +1 -0
- package/dist/studio/logo.js +49 -0
- package/dist/studio/logo.js.map +1 -0
- package/dist/studio/names.d.ts +18 -0
- package/dist/studio/names.d.ts.map +1 -0
- package/dist/studio/names.js +36 -0
- package/dist/studio/names.js.map +1 -0
- package/dist/studio/patch.d.ts +17 -0
- package/dist/studio/patch.d.ts.map +1 -0
- package/dist/studio/patch.js +64 -0
- package/dist/studio/patch.js.map +1 -0
- package/dist/studio/seams.d.ts +44 -0
- package/dist/studio/seams.d.ts.map +1 -0
- package/dist/studio/seams.js +36 -0
- package/dist/studio/seams.js.map +1 -0
- package/dist/studio/share.d.ts +16 -0
- package/dist/studio/share.d.ts.map +1 -0
- package/dist/studio/share.js +57 -0
- package/dist/studio/share.js.map +1 -0
- package/dist/studio/shuffle.d.ts +38 -0
- package/dist/studio/shuffle.d.ts.map +1 -0
- package/dist/studio/shuffle.js +181 -0
- package/dist/studio/shuffle.js.map +1 -0
- package/dist/studio/slices.d.ts +29 -0
- package/dist/studio/slices.d.ts.map +1 -0
- package/dist/studio/slices.js +84 -0
- package/dist/studio/slices.js.map +1 -0
- package/dist/studio/studio.d.ts +29 -0
- package/dist/studio/studio.d.ts.map +1 -0
- package/dist/studio/studio.js +1298 -0
- package/dist/studio/studio.js.map +1 -0
- package/dist/studio/symbol.d.ts +47 -0
- package/dist/studio/symbol.d.ts.map +1 -0
- package/dist/studio/symbol.js +159 -0
- package/dist/studio/symbol.js.map +1 -0
- package/dist/studio/timers.d.ts +18 -0
- package/dist/studio/timers.d.ts.map +1 -0
- package/dist/studio/timers.js +36 -0
- package/dist/studio/timers.js.map +1 -0
- package/dist/studio/types.d.ts +693 -0
- package/dist/studio/types.d.ts.map +1 -0
- package/dist/studio/types.js +26 -0
- package/dist/studio/types.js.map +1 -0
- package/dist/studio/verify.d.ts +47 -0
- package/dist/studio/verify.d.ts.map +1 -0
- package/dist/studio/verify.js +63 -0
- package/dist/studio/verify.js.map +1 -0
- package/dist/symbology/index.d.ts +8 -0
- package/dist/symbology/index.d.ts.map +1 -0
- package/dist/symbology/index.js +6 -0
- package/dist/symbology/index.js.map +1 -0
- package/dist/symbology/micro/blocks.d.ts +34 -0
- package/dist/symbology/micro/blocks.d.ts.map +1 -0
- package/dist/symbology/micro/blocks.js +63 -0
- package/dist/symbology/micro/blocks.js.map +1 -0
- package/dist/symbology/micro/entry.d.ts +70 -0
- package/dist/symbology/micro/entry.d.ts.map +1 -0
- package/dist/symbology/micro/entry.js +181 -0
- package/dist/symbology/micro/entry.js.map +1 -0
- package/dist/symbology/micro/format.d.ts +31 -0
- package/dist/symbology/micro/format.d.ts.map +1 -0
- package/dist/symbology/micro/format.js +48 -0
- package/dist/symbology/micro/format.js.map +1 -0
- package/dist/symbology/micro/index.d.ts +7 -0
- package/dist/symbology/micro/index.d.ts.map +1 -0
- package/dist/symbology/micro/index.js +5 -0
- package/dist/symbology/micro/index.js.map +1 -0
- package/dist/symbology/micro/layout.d.ts +40 -0
- package/dist/symbology/micro/layout.d.ts.map +1 -0
- package/dist/symbology/micro/layout.js +106 -0
- package/dist/symbology/micro/layout.js.map +1 -0
- package/dist/symbology/micro/mask.d.ts +25 -0
- package/dist/symbology/micro/mask.d.ts.map +1 -0
- package/dist/symbology/micro/mask.js +41 -0
- package/dist/symbology/micro/mask.js.map +1 -0
- package/dist/symbology/micro/modules.d.ts +76 -0
- package/dist/symbology/micro/modules.d.ts.map +1 -0
- package/dist/symbology/micro/modules.js +156 -0
- package/dist/symbology/micro/modules.js.map +1 -0
- package/dist/symbology/micro/profile.d.ts +16 -0
- package/dist/symbology/micro/profile.d.ts.map +1 -0
- package/dist/symbology/micro/profile.js +45 -0
- package/dist/symbology/micro/profile.js.map +1 -0
- package/dist/symbology/micro/read-helpers.d.ts +31 -0
- package/dist/symbology/micro/read-helpers.d.ts.map +1 -0
- package/dist/symbology/micro/read-helpers.js +66 -0
- package/dist/symbology/micro/read-helpers.js.map +1 -0
- package/dist/symbology/micro/tables.d.ts +63 -0
- package/dist/symbology/micro/tables.d.ts.map +1 -0
- package/dist/symbology/micro/tables.js +163 -0
- package/dist/symbology/micro/tables.js.map +1 -0
- package/dist/symbology/qr/blocks.d.ts +58 -0
- package/dist/symbology/qr/blocks.d.ts.map +1 -0
- package/dist/symbology/qr/blocks.js +176 -0
- package/dist/symbology/qr/blocks.js.map +1 -0
- package/dist/symbology/qr/build.d.ts +20 -0
- package/dist/symbology/qr/build.d.ts.map +1 -0
- package/dist/symbology/qr/build.js +91 -0
- package/dist/symbology/qr/build.js.map +1 -0
- package/dist/symbology/qr/entry.d.ts +13 -0
- package/dist/symbology/qr/entry.d.ts.map +1 -0
- package/dist/symbology/qr/entry.js +56 -0
- package/dist/symbology/qr/entry.js.map +1 -0
- package/dist/symbology/qr/index.d.ts +13 -0
- package/dist/symbology/qr/index.d.ts.map +1 -0
- package/dist/symbology/qr/index.js +9 -0
- package/dist/symbology/qr/index.js.map +1 -0
- package/dist/symbology/qr/info.d.ts +29 -0
- package/dist/symbology/qr/info.d.ts.map +1 -0
- package/dist/symbology/qr/info.js +53 -0
- package/dist/symbology/qr/info.js.map +1 -0
- package/dist/symbology/qr/layout.d.ts +37 -0
- package/dist/symbology/qr/layout.d.ts.map +1 -0
- package/dist/symbology/qr/layout.js +174 -0
- package/dist/symbology/qr/layout.js.map +1 -0
- package/dist/symbology/qr/mask.d.ts +35 -0
- package/dist/symbology/qr/mask.d.ts.map +1 -0
- package/dist/symbology/qr/mask.js +113 -0
- package/dist/symbology/qr/mask.js.map +1 -0
- package/dist/symbology/qr/read.d.ts +43 -0
- package/dist/symbology/qr/read.d.ts.map +1 -0
- package/dist/symbology/qr/read.js +219 -0
- package/dist/symbology/qr/read.js.map +1 -0
- package/dist/symbology/qr/tables.d.ts +62 -0
- package/dist/symbology/qr/tables.d.ts.map +1 -0
- package/dist/symbology/qr/tables.js +337 -0
- package/dist/symbology/qr/tables.js.map +1 -0
- package/dist/symbology/registry.d.ts +11 -0
- package/dist/symbology/registry.d.ts.map +1 -0
- package/dist/symbology/registry.js +19 -0
- package/dist/symbology/registry.js.map +1 -0
- package/dist/symbology/rmqr/entry.d.ts +56 -0
- package/dist/symbology/rmqr/entry.d.ts.map +1 -0
- package/dist/symbology/rmqr/entry.js +165 -0
- package/dist/symbology/rmqr/entry.js.map +1 -0
- package/dist/symbology/rmqr/format.d.ts +45 -0
- package/dist/symbology/rmqr/format.d.ts.map +1 -0
- package/dist/symbology/rmqr/format.js +72 -0
- package/dist/symbology/rmqr/format.js.map +1 -0
- package/dist/symbology/rmqr/index.d.ts +5 -0
- package/dist/symbology/rmqr/index.d.ts.map +1 -0
- package/dist/symbology/rmqr/index.js +5 -0
- package/dist/symbology/rmqr/index.js.map +1 -0
- package/dist/symbology/rmqr/layout.d.ts +46 -0
- package/dist/symbology/rmqr/layout.d.ts.map +1 -0
- package/dist/symbology/rmqr/layout.js +196 -0
- package/dist/symbology/rmqr/layout.js.map +1 -0
- package/dist/symbology/rmqr/profile.d.ts +15 -0
- package/dist/symbology/rmqr/profile.d.ts.map +1 -0
- package/dist/symbology/rmqr/profile.js +52 -0
- package/dist/symbology/rmqr/profile.js.map +1 -0
- package/dist/symbology/rmqr/tables.d.ts +62 -0
- package/dist/symbology/rmqr/tables.d.ts.map +1 -0
- package/dist/symbology/rmqr/tables.js +194 -0
- package/dist/symbology/rmqr/tables.js.map +1 -0
- package/dist/symbology/roles.d.ts +19 -0
- package/dist/symbology/roles.d.ts.map +1 -0
- package/dist/symbology/roles.js +35 -0
- package/dist/symbology/roles.js.map +1 -0
- package/dist/symbology/types.d.ts +126 -0
- package/dist/symbology/types.d.ts.map +1 -0
- package/dist/symbology/types.js +11 -0
- package/dist/symbology/types.js.map +1 -0
- package/dist/text/base64.d.ts +11 -0
- package/dist/text/base64.d.ts.map +1 -0
- package/dist/text/base64.js +49 -0
- package/dist/text/base64.js.map +1 -0
- package/dist/text/cmap.d.ts +17 -0
- package/dist/text/cmap.d.ts.map +1 -0
- package/dist/text/cmap.js +161 -0
- package/dist/text/cmap.js.map +1 -0
- package/dist/text/compiled.d.ts +52 -0
- package/dist/text/compiled.d.ts.map +1 -0
- package/dist/text/compiled.js +220 -0
- package/dist/text/compiled.js.map +1 -0
- package/dist/text/errors.d.ts +34 -0
- package/dist/text/errors.d.ts.map +1 -0
- package/dist/text/errors.js +26 -0
- package/dist/text/errors.js.map +1 -0
- package/dist/text/font.d.ts +29 -0
- package/dist/text/font.d.ts.map +1 -0
- package/dist/text/font.js +67 -0
- package/dist/text/font.js.map +1 -0
- package/dist/text/glyf.d.ts +62 -0
- package/dist/text/glyf.d.ts.map +1 -0
- package/dist/text/glyf.js +276 -0
- package/dist/text/glyf.js.map +1 -0
- package/dist/text/index.d.ts +13 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +9 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/kerning.d.ts +36 -0
- package/dist/text/kerning.d.ts.map +1 -0
- package/dist/text/kerning.js +382 -0
- package/dist/text/kerning.js.map +1 -0
- package/dist/text/layout.d.ts +35 -0
- package/dist/text/layout.d.ts.map +1 -0
- package/dist/text/layout.js +287 -0
- package/dist/text/layout.js.map +1 -0
- package/dist/text/outline.d.ts +22 -0
- package/dist/text/outline.d.ts.map +1 -0
- package/dist/text/outline.js +79 -0
- package/dist/text/outline.js.map +1 -0
- package/dist/text/reader.d.ts +43 -0
- package/dist/text/reader.d.ts.map +1 -0
- package/dist/text/reader.js +83 -0
- package/dist/text/reader.js.map +1 -0
- package/dist/text/registry.d.ts +21 -0
- package/dist/text/registry.d.ts.map +1 -0
- package/dist/text/registry.js +32 -0
- package/dist/text/registry.js.map +1 -0
- package/dist/text/truetype.d.ts +44 -0
- package/dist/text/truetype.d.ts.map +1 -0
- package/dist/text/truetype.js +127 -0
- package/dist/text/truetype.js.map +1 -0
- package/dist/text/types.d.ts +106 -0
- package/dist/text/types.d.ts.map +1 -0
- package/dist/text/types.js +11 -0
- package/dist/text/types.js.map +1 -0
- package/dist/verify/camera.d.ts +59 -0
- package/dist/verify/camera.d.ts.map +1 -0
- package/dist/verify/camera.js +76 -0
- package/dist/verify/camera.js.map +1 -0
- package/dist/verify/capture.d.ts +40 -0
- package/dist/verify/capture.d.ts.map +1 -0
- package/dist/verify/capture.js +118 -0
- package/dist/verify/capture.js.map +1 -0
- package/dist/verify/coverage.d.ts +61 -0
- package/dist/verify/coverage.d.ts.map +1 -0
- package/dist/verify/coverage.js +90 -0
- package/dist/verify/coverage.js.map +1 -0
- package/dist/verify/degrade.d.ts +143 -0
- package/dist/verify/degrade.d.ts.map +1 -0
- package/dist/verify/degrade.js +503 -0
- package/dist/verify/degrade.js.map +1 -0
- package/dist/verify/fixes.d.ts +28 -0
- package/dist/verify/fixes.d.ts.map +1 -0
- package/dist/verify/fixes.js +277 -0
- package/dist/verify/fixes.js.map +1 -0
- package/dist/verify/homography.d.ts +32 -0
- package/dist/verify/homography.d.ts.map +1 -0
- package/dist/verify/homography.js +79 -0
- package/dist/verify/homography.js.map +1 -0
- package/dist/verify/index.d.ts +17 -0
- package/dist/verify/index.d.ts.map +1 -0
- package/dist/verify/index.js +11 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/inks.d.ts +39 -0
- package/dist/verify/inks.d.ts.map +1 -0
- package/dist/verify/inks.js +101 -0
- package/dist/verify/inks.js.map +1 -0
- package/dist/verify/job.d.ts +89 -0
- package/dist/verify/job.d.ts.map +1 -0
- package/dist/verify/job.js +314 -0
- package/dist/verify/job.js.map +1 -0
- package/dist/verify/keys.d.ts +92 -0
- package/dist/verify/keys.d.ts.map +1 -0
- package/dist/verify/keys.js +95 -0
- package/dist/verify/keys.js.map +1 -0
- package/dist/verify/ladders.d.ts +68 -0
- package/dist/verify/ladders.d.ts.map +1 -0
- package/dist/verify/ladders.js +154 -0
- package/dist/verify/ladders.js.map +1 -0
- package/dist/verify/prepare.d.ts +78 -0
- package/dist/verify/prepare.d.ts.map +1 -0
- package/dist/verify/prepare.js +307 -0
- package/dist/verify/prepare.js.map +1 -0
- package/dist/verify/preset.d.ts +111 -0
- package/dist/verify/preset.d.ts.map +1 -0
- package/dist/verify/preset.js +200 -0
- package/dist/verify/preset.js.map +1 -0
- package/dist/verify/read.d.ts +23 -0
- package/dist/verify/read.d.ts.map +1 -0
- package/dist/verify/read.js +55 -0
- package/dist/verify/read.js.map +1 -0
- package/dist/verify/region.d.ts +37 -0
- package/dist/verify/region.d.ts.map +1 -0
- package/dist/verify/region.js +80 -0
- package/dist/verify/region.js.map +1 -0
- package/dist/verify/static.d.ts +56 -0
- package/dist/verify/static.d.ts.map +1 -0
- package/dist/verify/static.js +277 -0
- package/dist/verify/static.js.map +1 -0
- package/dist/verify/types.d.ts +173 -0
- package/dist/verify/types.d.ts.map +1 -0
- package/dist/verify/types.js +36 -0
- package/dist/verify/types.js.map +1 -0
- package/package.json +191 -5
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The library as a file, and the rules every library record follows.
|
|
3
|
+
*
|
|
4
|
+
* The offline app runs from `file://`, and storage there is not something to
|
|
5
|
+
* trust: WebKit refuses it outright, and Chromium may give every HTML file
|
|
6
|
+
* opened from disk one shared storage partition, so a design kept by one
|
|
7
|
+
* downloaded page could be read by any other. So the offline app keeps
|
|
8
|
+
* nothing in the browser. Its library lives in memory while the page is open;
|
|
9
|
+
* the person saves it as a `.qrlibrary.json` file and opens it again next
|
|
10
|
+
* time, the way they would any document. Nothing is written anywhere they did
|
|
11
|
+
* not choose, and closing the tab forgets everything the file did not take.
|
|
12
|
+
*
|
|
13
|
+
* The website's library (src/dom/library/indexeddb.ts) keeps the same records
|
|
14
|
+
* in IndexedDB. The rules for a record live here rather than there because
|
|
15
|
+
* the offline build may not reach into src/dom/library/ at all
|
|
16
|
+
* (tests/build/no-network.test.ts checks the metafile), and both stores have
|
|
17
|
+
* to agree on what a record is.
|
|
18
|
+
*
|
|
19
|
+
* A record holds a design or a brand kit, and never the content of a code.
|
|
20
|
+
* The content is the reason a code is private (a Wi-Fi password, a phone
|
|
21
|
+
* number, a link to a private document), and a library is for the look of a
|
|
22
|
+
* code, which a person reuses across many contents. So a record is built
|
|
23
|
+
* field by field from what a design needs, never by copying a document, its
|
|
24
|
+
* type has no room for a content field, and a record that arrives with one
|
|
25
|
+
* (from a file, or written into the database by something else) is refused.
|
|
26
|
+
*
|
|
27
|
+
* Every record is checked on the way in and again on the way out, with the
|
|
28
|
+
* design layer's own migration and validator, because the way out is where a
|
|
29
|
+
* file someone else wrote, or a database a newer build wrote, comes back in.
|
|
30
|
+
* A record that fails is left out and reported, never thrown: one damaged
|
|
31
|
+
* entry must not cost a person the other forty.
|
|
32
|
+
*/
|
|
33
|
+
import { QrStudioError } from '../core/errors.js';
|
|
34
|
+
import { issue } from '../core/issue.js';
|
|
35
|
+
import { err, ok } from '../core/result.js';
|
|
36
|
+
import { DEFAULT_CONDITIONS, conditionsFrom, defaultDocument, designFrom, } from '../studio/document.js';
|
|
37
|
+
import { errorKey } from '../studio/keys.js';
|
|
38
|
+
import { fileStem } from '../studio/names.js';
|
|
39
|
+
import { downloadBytes } from './output.js';
|
|
40
|
+
export const LIBRARY_SCHEMA = 'qr-library';
|
|
41
|
+
export const LIBRARY_VERSION = 1;
|
|
42
|
+
export const LIBRARY_EXTENSION = '.qrlibrary.json';
|
|
43
|
+
export const LIBRARY_MIME = 'application/json';
|
|
44
|
+
export const LIBRARY_LIMITS = Object.freeze({
|
|
45
|
+
/**
|
|
46
|
+
* Bytes in a library file. Room for forty designs that each carry the
|
|
47
|
+
* largest logo the design layer allows, and thousands that carry none,
|
|
48
|
+
* while staying a size JSON.parse reads in a moment on a phone.
|
|
49
|
+
*/
|
|
50
|
+
fileBytes: 32 * 1024 * 1024,
|
|
51
|
+
/** Designs in one library file. */
|
|
52
|
+
designs: 500,
|
|
53
|
+
/** Brand kits in one library file. */
|
|
54
|
+
kits: 100,
|
|
55
|
+
/** Characters (code points) in the name a person gives a saved item. */
|
|
56
|
+
name: 80,
|
|
57
|
+
/** Inks in one brand kit's palette. */
|
|
58
|
+
palette: 32,
|
|
59
|
+
/** Preferred presets in one brand kit. */
|
|
60
|
+
presets: 32,
|
|
61
|
+
/**
|
|
62
|
+
* How deep a library file may nest before it is refused unread. A design
|
|
63
|
+
* sits three levels down and the design layer allows it 32 of its own.
|
|
64
|
+
*/
|
|
65
|
+
depth: 40,
|
|
66
|
+
});
|
|
67
|
+
/** Everything the library says in its own words. Issues and the errors' specific sentences. */
|
|
68
|
+
export const LIBRARY_KEYS = Object.freeze({
|
|
69
|
+
tooLarge: 'dom.library.issue.too-large',
|
|
70
|
+
tooDeep: 'dom.library.issue.too-deep',
|
|
71
|
+
notJson: 'dom.library.issue.not-json',
|
|
72
|
+
notLibrary: 'dom.library.issue.not-a-library',
|
|
73
|
+
version: 'dom.library.issue.version',
|
|
74
|
+
unknownKey: 'dom.library.issue.unknown-key',
|
|
75
|
+
tooMany: 'dom.library.issue.too-many',
|
|
76
|
+
unreadable: 'dom.library.issue.unreadable',
|
|
77
|
+
content: 'dom.library.issue.content',
|
|
78
|
+
corrupt: 'dom.library.issue.corrupt',
|
|
79
|
+
blocked: 'dom.library.error.blocked',
|
|
80
|
+
missing: 'dom.library.error.missing',
|
|
81
|
+
fileFull: 'dom.library.error.file-full',
|
|
82
|
+
kit: 'dom.library.error.kit',
|
|
83
|
+
});
|
|
84
|
+
/**
|
|
85
|
+
* The names content goes by elsewhere in this package: a studio document's
|
|
86
|
+
* `fields`, a verify job's `content`, raw `text`, a `payload`. No record may
|
|
87
|
+
* have one. As a type, so code that tried to store one does not compile, and
|
|
88
|
+
* as a list, so a record that arrives carrying one is refused.
|
|
89
|
+
*/
|
|
90
|
+
export const CONTENT_KEYS = Object.freeze(['fields', 'content', 'text', 'payload']);
|
|
91
|
+
const DESIGN_KEYS = ['name', 'savedAt', 'typeId', 'design', 'conditions'];
|
|
92
|
+
const KIT_KEYS = ['palette', 'logo', 'presets'];
|
|
93
|
+
const KIT_ENTRY_KEYS = ['name', 'savedAt', ...KIT_KEYS];
|
|
94
|
+
const CONDITION_KEYS = ['sizeMm', 'dpi', 'distanceMm'];
|
|
95
|
+
const TOP_KEYS = ['schema', 'version', 'designs', 'kits'];
|
|
96
|
+
const KEBAB = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
97
|
+
/** Keys from a file that may appear in an issue's path: short and plain. */
|
|
98
|
+
const PLAIN_KEY = /^[A-Za-z][A-Za-z0-9_-]{0,31}$/;
|
|
99
|
+
/** Ids are the store's own counters, so a well-formed one is a positive integer well inside 2^53. */
|
|
100
|
+
const ID = /^[1-9][0-9]{0,14}$/;
|
|
101
|
+
/** The asset id the kit's logo is checked under. */
|
|
102
|
+
const PROBE_ASSET = 'logo';
|
|
103
|
+
function isRecord(value) {
|
|
104
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
105
|
+
}
|
|
106
|
+
function own(record, key) {
|
|
107
|
+
return Object.prototype.hasOwnProperty.call(record, key);
|
|
108
|
+
}
|
|
109
|
+
function freeze(value) {
|
|
110
|
+
return Object.freeze(value);
|
|
111
|
+
}
|
|
112
|
+
/** Whether `key` is one of the names content goes by. */
|
|
113
|
+
function isContentKey(key) {
|
|
114
|
+
return CONTENT_KEYS.includes(key);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Why a record's keys rule it out, or null when they are exactly what a record
|
|
118
|
+
* may have. Content is named on its own so a view can say what was refused.
|
|
119
|
+
*/
|
|
120
|
+
function keyProblem(record, allowed) {
|
|
121
|
+
const keys = Object.keys(record);
|
|
122
|
+
if (keys.some(isContentKey))
|
|
123
|
+
return LIBRARY_KEYS.content;
|
|
124
|
+
if (keys.some((key) => !allowed.includes(key)))
|
|
125
|
+
return LIBRARY_KEYS.corrupt;
|
|
126
|
+
return allowed.every((key) => own(record, key)) ? null : LIBRARY_KEYS.corrupt;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Characters a name loses: controls, the line and paragraph separators, a
|
|
130
|
+
* lone surrogate (half a character, which nothing can show), and the bidi
|
|
131
|
+
* overrides and isolates, which reorder how the text around them is drawn
|
|
132
|
+
* and so let a name in a file a stranger made read as something else.
|
|
133
|
+
*/
|
|
134
|
+
function isControl(point) {
|
|
135
|
+
return (point < 0x20 ||
|
|
136
|
+
(point >= 0x7f && point < 0xa0) ||
|
|
137
|
+
point === 0x2028 ||
|
|
138
|
+
point === 0x2029 ||
|
|
139
|
+
(point >= 0x202a && point <= 0x202e) ||
|
|
140
|
+
(point >= 0x2066 && point <= 0x2069) ||
|
|
141
|
+
(point >= 0xd800 && point <= 0xdfff));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The name a person gave a saved item, made safe to show and to keep: control
|
|
145
|
+
* characters and runs of white space become one space, the ends are trimmed,
|
|
146
|
+
* and it stops at LIBRARY_LIMITS.name code points without splitting one.
|
|
147
|
+
*/
|
|
148
|
+
export function cleanName(name) {
|
|
149
|
+
let out = '';
|
|
150
|
+
let count = 0;
|
|
151
|
+
let gap = false;
|
|
152
|
+
for (const char of name) {
|
|
153
|
+
if (isControl(char.codePointAt(0)) || /\s/.test(char)) {
|
|
154
|
+
gap = count > 0;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (gap) {
|
|
158
|
+
// A space is written only with a character after it, so a name never
|
|
159
|
+
// ends in one, even when the limit falls between the two.
|
|
160
|
+
if (count + 1 >= LIBRARY_LIMITS.name)
|
|
161
|
+
break;
|
|
162
|
+
out += ' ';
|
|
163
|
+
count += 1;
|
|
164
|
+
gap = false;
|
|
165
|
+
}
|
|
166
|
+
out += char;
|
|
167
|
+
count += 1;
|
|
168
|
+
if (count >= LIBRARY_LIMITS.name)
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
function isName(value) {
|
|
174
|
+
// Twice the limit in UTF-16 units is the most 80 code points can take, so
|
|
175
|
+
// a megabyte of name is refused before it is walked.
|
|
176
|
+
return (typeof value === 'string' &&
|
|
177
|
+
value.length <= LIBRARY_LIMITS.name * 2 &&
|
|
178
|
+
cleanName(value) === value);
|
|
179
|
+
}
|
|
180
|
+
function isTime(value) {
|
|
181
|
+
return typeof value === 'number' && Number.isFinite(value) && value >= 0;
|
|
182
|
+
}
|
|
183
|
+
function isTypeId(value) {
|
|
184
|
+
return typeof value === 'string' && value.length <= 64 && KEBAB.test(value);
|
|
185
|
+
}
|
|
186
|
+
/** Milliseconds now, from the store's clock. A clock that gives anything else is a caller's mistake. */
|
|
187
|
+
export function stamp(now) {
|
|
188
|
+
const at = now();
|
|
189
|
+
if (!isTime(at))
|
|
190
|
+
throw new TypeError('now: a clock gives milliseconds since 1970.');
|
|
191
|
+
return Math.floor(at);
|
|
192
|
+
}
|
|
193
|
+
/** The store key an id names, or null when no store could have given it out. */
|
|
194
|
+
export function recordKey(id) {
|
|
195
|
+
return ID.test(id) ? Number(id) : null;
|
|
196
|
+
}
|
|
197
|
+
export function missingError() {
|
|
198
|
+
return new QrStudioError('library/corrupt', 'That saved item is no longer in the library.', {
|
|
199
|
+
reason: 'missing',
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
export function corruptError() {
|
|
203
|
+
return new QrStudioError('library/corrupt', 'A saved item is damaged and cannot be opened.');
|
|
204
|
+
}
|
|
205
|
+
function kitError() {
|
|
206
|
+
return new QrStudioError('design/invalid', 'This brand kit has a colour, logo or preset the studio cannot use.', { reason: 'kit' });
|
|
207
|
+
}
|
|
208
|
+
function fileFull() {
|
|
209
|
+
return new QrStudioError('library/quota', 'This library holds as much as one file can. Remove something, or save it and start another.', { reason: 'file-full' });
|
|
210
|
+
}
|
|
211
|
+
/** The sentence each error's reason has, by code and reason, so a reason another layer uses means nothing here. */
|
|
212
|
+
const REASON_KEYS = Object.freeze({
|
|
213
|
+
'library/unavailable:blocked': LIBRARY_KEYS.blocked,
|
|
214
|
+
'library/corrupt:missing': LIBRARY_KEYS.missing,
|
|
215
|
+
'library/quota:file-full': LIBRARY_KEYS.fileFull,
|
|
216
|
+
'design/invalid:kit': LIBRARY_KEYS.kit,
|
|
217
|
+
});
|
|
218
|
+
/**
|
|
219
|
+
* The most specific sentence for an error from either library: the library's
|
|
220
|
+
* own for a blocked delete, a missing item, a full file or a kit it cannot
|
|
221
|
+
* keep, and the studio's for the rest.
|
|
222
|
+
*/
|
|
223
|
+
export function libraryErrorKey(error) {
|
|
224
|
+
const found = `${error.code}:${String(error.params.reason)}`;
|
|
225
|
+
return Object.prototype.hasOwnProperty.call(REASON_KEYS, found)
|
|
226
|
+
? REASON_KEYS[found]
|
|
227
|
+
: errorKey(error);
|
|
228
|
+
}
|
|
229
|
+
function rulesOf(deps, who) {
|
|
230
|
+
if (!isRecord(deps) || !isRecord(deps.registries)) {
|
|
231
|
+
throw new TypeError(`${who}: deps.registries is the registries the studio was given.`);
|
|
232
|
+
}
|
|
233
|
+
return deps;
|
|
234
|
+
}
|
|
235
|
+
/** The record rules for one store, over the registries and fonts it was given. */
|
|
236
|
+
export function libraryRecords(rules) {
|
|
237
|
+
const { registries, fonts } = rulesOf(rules, 'libraryRecords');
|
|
238
|
+
let base = null;
|
|
239
|
+
const probeBase = () => (base ??= defaultDocument(registries).design);
|
|
240
|
+
const designOf = (value) => designFrom(value, registries, fonts).design;
|
|
241
|
+
// An ink or a logo is checked by the design layer, inside a design built
|
|
242
|
+
// to hold it, so a kit accepts exactly what a design will: a colour the
|
|
243
|
+
// SVG writer's allow-list takes, a PNG this package can decode, within the
|
|
244
|
+
// same limits.
|
|
245
|
+
function checkInk(ink) {
|
|
246
|
+
const start = probeBase();
|
|
247
|
+
const checked = designOf({
|
|
248
|
+
...start,
|
|
249
|
+
modules: { ...start.modules, paint: { kind: 'solid', ink } },
|
|
250
|
+
});
|
|
251
|
+
return checked === null ? null : checked.modules.paint.ink;
|
|
252
|
+
}
|
|
253
|
+
function checkAsset(asset) {
|
|
254
|
+
const checked = designOf({
|
|
255
|
+
...probeBase(),
|
|
256
|
+
logo: {
|
|
257
|
+
source: { kind: 'asset', id: PROBE_ASSET },
|
|
258
|
+
size: 0.2,
|
|
259
|
+
clear: 'box',
|
|
260
|
+
padding: 1,
|
|
261
|
+
plate: null,
|
|
262
|
+
},
|
|
263
|
+
assets: { [PROBE_ASSET]: asset },
|
|
264
|
+
});
|
|
265
|
+
return checked === null
|
|
266
|
+
? null
|
|
267
|
+
: checked.assets[PROBE_ASSET];
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* A kit's parts, checked. A preset this build does not have is refused on
|
|
271
|
+
* the way in, where it can only be a caller's mistake, and left out on the
|
|
272
|
+
* way out, where it is a kit a newer build saved.
|
|
273
|
+
*/
|
|
274
|
+
function kitParts(value, incoming) {
|
|
275
|
+
const { palette, logo, presets } = value;
|
|
276
|
+
if (!Array.isArray(palette) || palette.length > LIBRARY_LIMITS.palette)
|
|
277
|
+
return null;
|
|
278
|
+
if (!Array.isArray(presets) || presets.length > LIBRARY_LIMITS.presets)
|
|
279
|
+
return null;
|
|
280
|
+
const inks = [];
|
|
281
|
+
for (const ink of palette) {
|
|
282
|
+
const checked = checkInk(ink);
|
|
283
|
+
if (checked === null)
|
|
284
|
+
return null;
|
|
285
|
+
inks.push(checked);
|
|
286
|
+
}
|
|
287
|
+
const picture = logo === null ? null : checkAsset(logo);
|
|
288
|
+
if (logo !== null && picture === null)
|
|
289
|
+
return null;
|
|
290
|
+
const kept = [];
|
|
291
|
+
for (const id of presets) {
|
|
292
|
+
if (!isTypeId(id))
|
|
293
|
+
return null;
|
|
294
|
+
if (!registries.design.presets.has(id)) {
|
|
295
|
+
if (incoming)
|
|
296
|
+
return null;
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
if (!kept.includes(id))
|
|
300
|
+
kept.push(id);
|
|
301
|
+
}
|
|
302
|
+
return freeze({ palette: freeze(inks), logo: picture, presets: freeze(kept) });
|
|
303
|
+
}
|
|
304
|
+
const designs = freeze({
|
|
305
|
+
store: 'designs',
|
|
306
|
+
max: LIBRARY_LIMITS.designs,
|
|
307
|
+
check(value) {
|
|
308
|
+
const corrupt = { entry: null, problem: LIBRARY_KEYS.corrupt };
|
|
309
|
+
if (!isRecord(value))
|
|
310
|
+
return corrupt;
|
|
311
|
+
const problem = keyProblem(value, DESIGN_KEYS);
|
|
312
|
+
if (problem !== null)
|
|
313
|
+
return { entry: null, problem };
|
|
314
|
+
const { name, savedAt, typeId, conditions } = value;
|
|
315
|
+
if (!isName(name) || !isTime(savedAt) || !isTypeId(typeId))
|
|
316
|
+
return corrupt;
|
|
317
|
+
if (!isRecord(conditions) ||
|
|
318
|
+
!Object.keys(conditions).every((key) => CONDITION_KEYS.includes(key))) {
|
|
319
|
+
return corrupt;
|
|
320
|
+
}
|
|
321
|
+
const read = conditionsFrom(conditions, DEFAULT_CONDITIONS);
|
|
322
|
+
if (read.bad.length > 0)
|
|
323
|
+
return corrupt;
|
|
324
|
+
const design = designOf(value.design);
|
|
325
|
+
if (design === null)
|
|
326
|
+
return corrupt;
|
|
327
|
+
return {
|
|
328
|
+
entry: freeze({ name, savedAt, typeId, design, conditions: read.conditions }),
|
|
329
|
+
problem: null,
|
|
330
|
+
};
|
|
331
|
+
},
|
|
332
|
+
summary(id, entry) {
|
|
333
|
+
return freeze({ id, name: entry.name, savedAt: entry.savedAt, typeId: entry.typeId });
|
|
334
|
+
},
|
|
335
|
+
item(id, entry) {
|
|
336
|
+
// A document with no content in it: the studio fills each field with its
|
|
337
|
+
// empty value, as it does for a design link.
|
|
338
|
+
const document = freeze({
|
|
339
|
+
mode: 'create',
|
|
340
|
+
typeId: entry.typeId,
|
|
341
|
+
fields: freeze({}),
|
|
342
|
+
design: entry.design,
|
|
343
|
+
conditions: entry.conditions,
|
|
344
|
+
});
|
|
345
|
+
return freeze({ ...designs.summary(id, entry), document });
|
|
346
|
+
},
|
|
347
|
+
});
|
|
348
|
+
const kits = freeze({
|
|
349
|
+
store: 'kits',
|
|
350
|
+
max: LIBRARY_LIMITS.kits,
|
|
351
|
+
check(value) {
|
|
352
|
+
const corrupt = { entry: null, problem: LIBRARY_KEYS.corrupt };
|
|
353
|
+
if (!isRecord(value))
|
|
354
|
+
return corrupt;
|
|
355
|
+
const problem = keyProblem(value, KIT_ENTRY_KEYS);
|
|
356
|
+
if (problem !== null)
|
|
357
|
+
return { entry: null, problem };
|
|
358
|
+
const { name, savedAt } = value;
|
|
359
|
+
if (!isName(name) || !isTime(savedAt))
|
|
360
|
+
return corrupt;
|
|
361
|
+
const parts = kitParts(value, false);
|
|
362
|
+
if (parts === null)
|
|
363
|
+
return corrupt;
|
|
364
|
+
return { entry: freeze({ name, savedAt, ...parts }), problem: null };
|
|
365
|
+
},
|
|
366
|
+
summary(id, entry) {
|
|
367
|
+
return freeze({ id, name: entry.name, savedAt: entry.savedAt });
|
|
368
|
+
},
|
|
369
|
+
item(id, entry) {
|
|
370
|
+
const kit = freeze({
|
|
371
|
+
palette: entry.palette,
|
|
372
|
+
logo: entry.logo,
|
|
373
|
+
presets: entry.presets,
|
|
374
|
+
});
|
|
375
|
+
return freeze({ ...kits.summary(id, entry), kit });
|
|
376
|
+
},
|
|
377
|
+
});
|
|
378
|
+
return freeze({
|
|
379
|
+
designs,
|
|
380
|
+
kits,
|
|
381
|
+
designIn(item, savedAt) {
|
|
382
|
+
if (!isRecord(item) || !isRecord(item.document)) {
|
|
383
|
+
throw new TypeError('save: the item is { name, document }.');
|
|
384
|
+
}
|
|
385
|
+
if (typeof item.name !== 'string')
|
|
386
|
+
throw new TypeError('save: name is a string.');
|
|
387
|
+
const document = item.document;
|
|
388
|
+
if (!isTypeId(document.typeId)) {
|
|
389
|
+
throw new TypeError("save: the document's typeId is a content type id.");
|
|
390
|
+
}
|
|
391
|
+
const checked = designFrom(document.design, registries, fonts);
|
|
392
|
+
if (checked.design === null) {
|
|
393
|
+
return err(new QrStudioError('design/invalid', 'This design has problems to fix before it can be saved.', { count: checked.issues.filter((found) => found.severity === 'error').length }));
|
|
394
|
+
}
|
|
395
|
+
const { conditions } = conditionsFrom(document.conditions, DEFAULT_CONDITIONS);
|
|
396
|
+
// Field by field, never a spread of the document: its `fields` are the
|
|
397
|
+
// content of the code, and a record has no room for them.
|
|
398
|
+
return ok(freeze({
|
|
399
|
+
name: cleanName(item.name),
|
|
400
|
+
savedAt,
|
|
401
|
+
typeId: document.typeId,
|
|
402
|
+
design: checked.design,
|
|
403
|
+
conditions,
|
|
404
|
+
}));
|
|
405
|
+
},
|
|
406
|
+
kitIn(item, savedAt) {
|
|
407
|
+
if (!isRecord(item) || !isRecord(item.kit)) {
|
|
408
|
+
throw new TypeError('saveKit: the item is { name, kit }.');
|
|
409
|
+
}
|
|
410
|
+
if (typeof item.name !== 'string')
|
|
411
|
+
throw new TypeError('saveKit: name is a string.');
|
|
412
|
+
if (keyProblem(item.kit, KIT_KEYS) !== null)
|
|
413
|
+
return err(kitError());
|
|
414
|
+
const parts = kitParts(item.kit, true);
|
|
415
|
+
if (parts === null)
|
|
416
|
+
return err(kitError());
|
|
417
|
+
return ok(freeze({ name: cleanName(item.name), savedAt, ...parts }));
|
|
418
|
+
},
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
/** The warning a store gives for a record it left out. */
|
|
422
|
+
export function skippedIssue(store, at, problem) {
|
|
423
|
+
return issue(problem, [store, at], 'warning');
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* The library file's text. Indented, so a person who opens it in an editor
|
|
427
|
+
* can see what they are keeping, and ending in a newline as text files do.
|
|
428
|
+
* Ids are not written: they are the page's own counters, given out again
|
|
429
|
+
* when the file is opened.
|
|
430
|
+
*/
|
|
431
|
+
export function serialiseLibrary(library) {
|
|
432
|
+
const file = {
|
|
433
|
+
schema: LIBRARY_SCHEMA,
|
|
434
|
+
version: LIBRARY_VERSION,
|
|
435
|
+
designs: library.designs,
|
|
436
|
+
kits: library.kits,
|
|
437
|
+
};
|
|
438
|
+
return `${JSON.stringify(file, null, '\t')}\n`;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Whether JSON text nests deeper than `limit`, found by counting brackets
|
|
442
|
+
* outside strings. Done before JSON.parse so a file of a million opening
|
|
443
|
+
* brackets is refused at the cost of reading it once, rather than handed to a
|
|
444
|
+
* parser and then to checks that walk what it built.
|
|
445
|
+
*/
|
|
446
|
+
function nestsDeeper(text, limit) {
|
|
447
|
+
let depth = 0;
|
|
448
|
+
let quoted = false;
|
|
449
|
+
for (let i = 0; i < text.length; i += 1) {
|
|
450
|
+
const unit = text.charCodeAt(i);
|
|
451
|
+
if (quoted) {
|
|
452
|
+
if (unit === 0x5c)
|
|
453
|
+
i += 1;
|
|
454
|
+
else if (unit === 0x22)
|
|
455
|
+
quoted = false;
|
|
456
|
+
}
|
|
457
|
+
else if (unit === 0x22)
|
|
458
|
+
quoted = true;
|
|
459
|
+
else if (unit === 0x5b || unit === 0x7b) {
|
|
460
|
+
depth += 1;
|
|
461
|
+
if (depth > limit)
|
|
462
|
+
return true;
|
|
463
|
+
}
|
|
464
|
+
else if (unit === 0x5d || unit === 0x7d)
|
|
465
|
+
depth -= 1;
|
|
466
|
+
}
|
|
467
|
+
return false;
|
|
468
|
+
}
|
|
469
|
+
function refused(code, path = [], params) {
|
|
470
|
+
return { library: null, issues: [issue(code, path, 'error', params)] };
|
|
471
|
+
}
|
|
472
|
+
function entriesOf(value, collection, issues) {
|
|
473
|
+
const at = collection.store;
|
|
474
|
+
if (!Array.isArray(value))
|
|
475
|
+
return issue(LIBRARY_KEYS.notLibrary, [at], 'error');
|
|
476
|
+
if (value.length > collection.max) {
|
|
477
|
+
return issue(LIBRARY_KEYS.tooMany, [at], 'error', {
|
|
478
|
+
count: value.length,
|
|
479
|
+
max: collection.max,
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
const out = [];
|
|
483
|
+
value.forEach((item, index) => {
|
|
484
|
+
const checked = collection.check(item);
|
|
485
|
+
if (checked.problem !== null)
|
|
486
|
+
issues.push(skippedIssue(at, index, checked.problem));
|
|
487
|
+
else
|
|
488
|
+
out.push(checked.entry);
|
|
489
|
+
});
|
|
490
|
+
return out;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Read a library file a person chose. Never throws for anything in the file:
|
|
494
|
+
* a file that is not a library, is too large, nests too deeply or comes from
|
|
495
|
+
* a different version is refused with an issue saying which, and an entry
|
|
496
|
+
* that cannot be used is left out with a warning, the rest kept.
|
|
497
|
+
*
|
|
498
|
+
* Strict where strictness costs nothing: a key the format does not have, at
|
|
499
|
+
* the top or in an entry, refuses that thing rather than being carried along
|
|
500
|
+
* unseen, and an entry holding content is refused by name.
|
|
501
|
+
*/
|
|
502
|
+
export function parseLibraryFile(text, rules) {
|
|
503
|
+
if (typeof text !== 'string') {
|
|
504
|
+
throw new TypeError('parseLibraryFile: text is the file as a string.');
|
|
505
|
+
}
|
|
506
|
+
return parseWith(text, libraryRecords(rules));
|
|
507
|
+
}
|
|
508
|
+
function parseWith(text, records) {
|
|
509
|
+
// Length in UTF-16 units is never more than the UTF-8 bytes it came from,
|
|
510
|
+
// so this holds a string to at least the limit the file's size was held to.
|
|
511
|
+
if (text.length > LIBRARY_LIMITS.fileBytes) {
|
|
512
|
+
return refused(LIBRARY_KEYS.tooLarge, [], { max: LIBRARY_LIMITS.fileBytes });
|
|
513
|
+
}
|
|
514
|
+
const body = text.charCodeAt(0) === 0xfeff ? text.slice(1) : text;
|
|
515
|
+
if (nestsDeeper(body, LIBRARY_LIMITS.depth)) {
|
|
516
|
+
return refused(LIBRARY_KEYS.tooDeep, [], { limit: LIBRARY_LIMITS.depth });
|
|
517
|
+
}
|
|
518
|
+
let parsed;
|
|
519
|
+
try {
|
|
520
|
+
parsed = JSON.parse(body);
|
|
521
|
+
}
|
|
522
|
+
catch {
|
|
523
|
+
return refused(LIBRARY_KEYS.notJson);
|
|
524
|
+
}
|
|
525
|
+
if (!isRecord(parsed) || parsed.schema !== LIBRARY_SCHEMA) {
|
|
526
|
+
return refused(LIBRARY_KEYS.notLibrary);
|
|
527
|
+
}
|
|
528
|
+
if (parsed.version !== LIBRARY_VERSION) {
|
|
529
|
+
return refused(LIBRARY_KEYS.version, ['version'], { supported: LIBRARY_VERSION });
|
|
530
|
+
}
|
|
531
|
+
for (const key of Object.keys(parsed)) {
|
|
532
|
+
if (isContentKey(key))
|
|
533
|
+
return refused(LIBRARY_KEYS.content, [key]);
|
|
534
|
+
if (!TOP_KEYS.includes(key)) {
|
|
535
|
+
return refused(LIBRARY_KEYS.unknownKey, PLAIN_KEY.test(key) ? [key] : []);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
const issues = [];
|
|
539
|
+
const designs = entriesOf(parsed.designs, records.designs, issues);
|
|
540
|
+
if (!Array.isArray(designs))
|
|
541
|
+
return { library: null, issues: [designs] };
|
|
542
|
+
const kits = entriesOf(parsed.kits, records.kits, issues);
|
|
543
|
+
if (!Array.isArray(kits))
|
|
544
|
+
return { library: null, issues: [kits] };
|
|
545
|
+
return { library: { designs, kits }, issues };
|
|
546
|
+
}
|
|
547
|
+
function shelfOf(entries = []) {
|
|
548
|
+
return {
|
|
549
|
+
entries: new Map(entries.map((entry, index) => [String(index + 1), entry])),
|
|
550
|
+
next: entries.length + 1,
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
function idOf(id, who) {
|
|
554
|
+
if (typeof id !== 'string')
|
|
555
|
+
throw new TypeError(`${who}: id is a string.`);
|
|
556
|
+
return id;
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* The offline app's library: the studio's LibraryStore over what this page
|
|
560
|
+
* holds in memory, saved and opened as a file the person keeps.
|
|
561
|
+
*
|
|
562
|
+
* It is always on, because switching it on stores nothing: `probe` says
|
|
563
|
+
* 'file' so the view shows Save and Open rather than a switch, `enable` does
|
|
564
|
+
* nothing, and `disable` forgets what the page holds (the person's file is
|
|
565
|
+
* theirs and is not touched).
|
|
566
|
+
*/
|
|
567
|
+
export function createFileLibrary(deps) {
|
|
568
|
+
const rules = rulesOf(deps, 'createFileLibrary');
|
|
569
|
+
const records = libraryRecords(rules);
|
|
570
|
+
const now = deps.now ?? Date.now;
|
|
571
|
+
const download = deps.download ?? downloadBytes;
|
|
572
|
+
const readText = deps.readText ?? ((file) => file.text());
|
|
573
|
+
let designs = shelfOf();
|
|
574
|
+
let kits = shelfOf();
|
|
575
|
+
let unsaved = false;
|
|
576
|
+
// Everything on a shelf came through `designIn`, `kitIn` or a checked file,
|
|
577
|
+
// and nothing else can reach one, so what is read back off a shelf is not
|
|
578
|
+
// checked a second time.
|
|
579
|
+
function summaries(shelf, collection) {
|
|
580
|
+
return [...shelf.entries].map(([id, entry]) => collection.summary(id, entry));
|
|
581
|
+
}
|
|
582
|
+
function put(shelf, collection, entry) {
|
|
583
|
+
if (shelf.entries.size >= collection.max)
|
|
584
|
+
return err(fileFull());
|
|
585
|
+
const id = String(shelf.next);
|
|
586
|
+
shelf.next += 1;
|
|
587
|
+
shelf.entries.set(id, entry);
|
|
588
|
+
unsaved = true;
|
|
589
|
+
return ok(collection.summary(id, entry));
|
|
590
|
+
}
|
|
591
|
+
function take(shelf, collection, id) {
|
|
592
|
+
const entry = shelf.entries.get(id);
|
|
593
|
+
return entry === undefined ? err(missingError()) : ok(collection.item(id, entry));
|
|
594
|
+
}
|
|
595
|
+
function drop(shelf, id) {
|
|
596
|
+
if (shelf.entries.delete(id))
|
|
597
|
+
unsaved = true;
|
|
598
|
+
return ok(null);
|
|
599
|
+
}
|
|
600
|
+
return Object.freeze({
|
|
601
|
+
async probe() {
|
|
602
|
+
return ok(freeze({ available: true, enabled: true, state: 'file' }));
|
|
603
|
+
},
|
|
604
|
+
async enable() {
|
|
605
|
+
return ok(null);
|
|
606
|
+
},
|
|
607
|
+
async disable() {
|
|
608
|
+
designs = shelfOf();
|
|
609
|
+
kits = shelfOf();
|
|
610
|
+
unsaved = false;
|
|
611
|
+
return ok(null);
|
|
612
|
+
},
|
|
613
|
+
async list() {
|
|
614
|
+
return ok(freeze(summaries(designs, records.designs)));
|
|
615
|
+
},
|
|
616
|
+
async contents() {
|
|
617
|
+
return ok(freeze({
|
|
618
|
+
designs: freeze(summaries(designs, records.designs)),
|
|
619
|
+
kits: freeze(summaries(kits, records.kits)),
|
|
620
|
+
skipped: freeze([]),
|
|
621
|
+
}));
|
|
622
|
+
},
|
|
623
|
+
async save(item) {
|
|
624
|
+
const entry = records.designIn(item, stamp(now));
|
|
625
|
+
return entry.ok ? put(designs, records.designs, entry.value) : entry;
|
|
626
|
+
},
|
|
627
|
+
async load(id) {
|
|
628
|
+
return take(designs, records.designs, idOf(id, 'load'));
|
|
629
|
+
},
|
|
630
|
+
async remove(id) {
|
|
631
|
+
return drop(designs, idOf(id, 'remove'));
|
|
632
|
+
},
|
|
633
|
+
async listKits() {
|
|
634
|
+
return ok(freeze(summaries(kits, records.kits)));
|
|
635
|
+
},
|
|
636
|
+
async saveKit(item) {
|
|
637
|
+
const entry = records.kitIn(item, stamp(now));
|
|
638
|
+
return entry.ok ? put(kits, records.kits, entry.value) : entry;
|
|
639
|
+
},
|
|
640
|
+
async loadKit(id) {
|
|
641
|
+
return take(kits, records.kits, idOf(id, 'loadKit'));
|
|
642
|
+
},
|
|
643
|
+
async removeKit(id) {
|
|
644
|
+
return drop(kits, idOf(id, 'removeKit'));
|
|
645
|
+
},
|
|
646
|
+
saveFile(name) {
|
|
647
|
+
const text = serialiseLibrary({
|
|
648
|
+
designs: [...designs.entries.values()],
|
|
649
|
+
kits: [...kits.entries.values()],
|
|
650
|
+
});
|
|
651
|
+
const bytes = new TextEncoder().encode(text);
|
|
652
|
+
// A file this page writes must be one it can open again.
|
|
653
|
+
if (bytes.length > LIBRARY_LIMITS.fileBytes)
|
|
654
|
+
return err(fileFull());
|
|
655
|
+
const filename = `${fileStem(name ?? 'qr-library')}${LIBRARY_EXTENSION}`;
|
|
656
|
+
const handed = download(bytes, filename, LIBRARY_MIME);
|
|
657
|
+
if (!handed.ok)
|
|
658
|
+
return handed;
|
|
659
|
+
unsaved = false;
|
|
660
|
+
return ok(freeze({ filename }));
|
|
661
|
+
},
|
|
662
|
+
async openFile(file) {
|
|
663
|
+
if (typeof file !== 'object' || file === null || typeof file.size !== 'number') {
|
|
664
|
+
throw new TypeError('openFile: file is the Blob or File the person chose.');
|
|
665
|
+
}
|
|
666
|
+
// Refused by its size before a byte is read, so a file built to be
|
|
667
|
+
// enormous costs nothing.
|
|
668
|
+
if (file.size > LIBRARY_LIMITS.fileBytes) {
|
|
669
|
+
return freeze({
|
|
670
|
+
opened: false,
|
|
671
|
+
issues: freeze([
|
|
672
|
+
issue(LIBRARY_KEYS.tooLarge, [], 'error', { max: LIBRARY_LIMITS.fileBytes }),
|
|
673
|
+
]),
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
let text;
|
|
677
|
+
try {
|
|
678
|
+
text = await readText(file);
|
|
679
|
+
}
|
|
680
|
+
catch {
|
|
681
|
+
text = null;
|
|
682
|
+
}
|
|
683
|
+
if (typeof text !== 'string') {
|
|
684
|
+
return freeze({
|
|
685
|
+
opened: false,
|
|
686
|
+
issues: freeze([issue(LIBRARY_KEYS.unreadable, [], 'error')]),
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
const parsed = parseWith(text, records);
|
|
690
|
+
if (parsed.library === null) {
|
|
691
|
+
return freeze({ opened: false, issues: freeze([...parsed.issues]) });
|
|
692
|
+
}
|
|
693
|
+
designs = shelfOf(parsed.library.designs);
|
|
694
|
+
kits = shelfOf(parsed.library.kits);
|
|
695
|
+
unsaved = false;
|
|
696
|
+
return freeze({ opened: true, issues: freeze([...parsed.issues]) });
|
|
697
|
+
},
|
|
698
|
+
hasUnsavedChanges() {
|
|
699
|
+
return unsaved;
|
|
700
|
+
},
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
//# sourceMappingURL=file-library.js.map
|