tapirscan 1.2.1 → 1.3.0
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/LICENSE +220 -0
- package/README.md +384 -226
- package/dist/browser-worker.d.ts +33 -0
- package/dist/browser-worker.js +83 -0
- package/dist/browser.d.ts +44 -0
- package/dist/browser.js +211 -0
- package/dist/freeze.d.ts +6 -0
- package/dist/freeze.js +7 -0
- package/dist/index.d.ts +53 -46
- package/dist/index.js +168 -209
- package/dist/layout.d.ts +19 -0
- package/dist/layout.js +27 -0
- package/dist/multiformat/format-registry.d.ts +26 -0
- package/dist/multiformat/format-registry.js +63 -0
- package/dist/multiformat/formats.d.ts +4 -24
- package/dist/multiformat/formats.js +15 -46
- package/dist/rust-session.d.ts +19 -0
- package/dist/rust-session.js +102 -0
- package/examples/camera.html +28 -29
- package/examples/vite/README.md +31 -0
- package/examples/vite/index.html +14 -0
- package/examples/vite/main.js +33 -0
- package/examples/vite/package.json +16 -0
- package/examples/vite/vite.config.js +6 -0
- package/package.json +28 -11
- package/wasm/build.json +295 -0
- package/wasm/experimental-turbo16.wasm +0 -0
- package/wasm/experimental-turbo2.wasm +0 -0
- package/wasm/experimental-turbo4.wasm +0 -0
- package/wasm/experimental-turbo8.wasm +0 -0
- package/wasm/high.wasm +0 -0
- package/wasm/low.wasm +0 -0
- package/wasm/medium.wasm +0 -0
- package/wasm/very-high.wasm +0 -0
- package/dist/completion-host.d.mts +0 -40
- package/dist/completion-host.mjs +0 -188
- package/dist/detail-20260914/continuity.d.mts +0 -2
- package/dist/detail-20260914/continuity.mjs +0 -62
- package/dist/detail-20260914/detail-proposals-rich.d.mts +0 -13
- package/dist/detail-20260914/detail-proposals-rich.mjs +0 -53
- package/dist/detail-20260914/direct-recovery.d.mts +0 -28
- package/dist/detail-20260914/direct-recovery.mjs +0 -139
- package/dist/detail-20260914/host.d.mts +0 -40
- package/dist/detail-20260914/host.mjs +0 -280
- package/dist/detail-20260914/scanner.d.mts +0 -12
- package/dist/detail-20260914/scanner.mjs +0 -64
- package/dist/detail-20260914/source-evidence.d.mts +0 -10
- package/dist/detail-20260914/source-evidence.mjs +0 -94
- package/dist/detail-canvas.d.ts +0 -35
- package/dist/detail-canvas.js +0 -73
- package/dist/detail-runtime/direct-recovery.d.mts +0 -28
- package/dist/detail-runtime/direct-recovery.mjs +0 -142
- package/dist/detail-runtime/host.d.mts +0 -40
- package/dist/detail-runtime/host.mjs +0 -284
- package/dist/detail-runtime/scanner.d.mts +0 -12
- package/dist/detail-runtime/scanner.mjs +0 -70
- package/dist/detail.d.ts +0 -20
- package/dist/detail.js +0 -84
- package/dist/host.d.ts +0 -112
- package/dist/host.js +0 -184
- package/dist/host64.d.ts +0 -112
- package/dist/host64.js +0 -184
- package/dist/multiformat/coverage.d.ts +0 -7
- package/dist/multiformat/coverage.js +0 -26
- package/dist/multiformat/geometry.d.ts +0 -37
- package/dist/multiformat/geometry.js +0 -132
- package/dist/multiformat/linear-duplicates.d.ts +0 -16
- package/dist/multiformat/linear-duplicates.js +0 -163
- package/dist/multiformat/pixels.d.ts +0 -3
- package/dist/multiformat/pixels.js +0 -36
- package/dist/multiformat/scanner.d.ts +0 -60
- package/dist/multiformat/scanner.js +0 -382
- package/dist/multiformat-host.d.ts +0 -121
- package/dist/multiformat-host.js +0 -207
- package/dist/policy.d.ts +0 -12
- package/dist/policy.js +0 -12
- package/examples/scan-worker.mjs +0 -20
- package/examples/worker-client.mjs +0 -63
- package/wasm/high-shared-retail-portable-20260919.wasm +0 -0
- package/wasm/low-shared-retail-portable-20260919.wasm +0 -0
- package/wasm/medium-shared-retail-portable-20260919.wasm +0 -0
- package/wasm/multiformat.json +0 -7
- package/wasm/multiformat.wasm +0 -0
- package/wasm/very-high-shared-retail-portable-20260919.wasm +0 -0
package/wasm/build.json
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 2,
|
|
3
|
+
"rustToolchain": "1.91.1",
|
|
4
|
+
"sourceDigest": "874a9b1e4c11042bdf086145dcb98469d7f6bbf4e6166ffc605b913145fa6304",
|
|
5
|
+
"sourceFiles": {
|
|
6
|
+
"bindings/rust/Cargo.lock": "382d94a1feeb3f1b3d9367aa5b302571e19924a0e239e3581651a891135e4594",
|
|
7
|
+
"bindings/rust/Cargo.toml": "7b50b04d67c1b0104971abf102f902a8c1efbec9f73617280fc9a0a1a05aa454",
|
|
8
|
+
"bindings/rust/api/format.rs": "03e81b2ed51508a9ad7fdf95cc6104a91778eb5541db34c807f736ef743c2dc4",
|
|
9
|
+
"bindings/rust/api/lib.rs": "29a7197c65f3c387822efe990ac8e297f8c069d2718177365b66cbccd7a2549d",
|
|
10
|
+
"bindings/rust/api/pixels.rs": "8c7938acec68c80355b752294f89bb1eeb85d8f2493d1fe16bb8b545b96ccac9",
|
|
11
|
+
"bindings/rust/api/timer.rs": "b27954265e72d1749468e3cbf66b71ca88fdf5b409da23767ac254e4317d9127",
|
|
12
|
+
"bindings/rust/api/types.rs": "b12992dd742b97ea936964e084db795099322b17073fb0c3cf24c67cf7919bb9",
|
|
13
|
+
"bindings/rust/examples/scan_raw.rs": "7c11807f396e3a6108bae7435d733b5ae9ef8b0616ed553ec4127876d55f8341",
|
|
14
|
+
"bindings/rust/src/detail.rs": "a9e64993442b4f224ea24eaae3c091398ef00d2972fb3007f77aa1ba060074ab",
|
|
15
|
+
"bindings/rust/src/effort.rs": "61f2511470037a7f55cb6ff3068b4f580ed643832ccc7e560c9efd23488acd85",
|
|
16
|
+
"bindings/rust/src/fast_linear.rs": "fc36d3b9fd457dcae4abce395691f4ad670770403621774e3a8ae66926c56fd5",
|
|
17
|
+
"bindings/rust/src/fast_linear/recovery.rs": "6d060c04cfe42e94d5e80b6f6a11fd93f3109a7b4b433b55ce94db4f4c4d4672",
|
|
18
|
+
"bindings/rust/src/fast_linear/recovery/band_probe_tests.rs": "5504487d173c7d320fb0015078efb78e0e75b1105c516764e96849b82494d2b9",
|
|
19
|
+
"bindings/rust/src/fast_linear/recovery/bridge_tests.rs": "d18f4b969cc5b47fac72f6d4593354d52a7512f796abfaf6bfe49c1bca59ec87",
|
|
20
|
+
"bindings/rust/src/fast_linear/restored_quiet_tests.rs": "1562440e21540f8361eaa20d86e0bcca56e52edba775eb4c772807e170ec6906",
|
|
21
|
+
"bindings/rust/src/fast_linear/source_ean8_tests.rs": "0fdd767c477c66745112ae6723b1f5607604fea66301502299c24f90611f831e",
|
|
22
|
+
"bindings/rust/src/fast_linear/tests.rs": "b9008a57d382102df68634341090bb6560534ef7bf5c6190594b6843c97d92cd",
|
|
23
|
+
"bindings/rust/src/fast_sparse.rs": "8a238da81735f5420cad499f794327ec887a773b94dc472959eb58ba98a31311",
|
|
24
|
+
"bindings/rust/src/format_registry.rs": "e956596a5094917d650b26ab989a913872f44722be3f0998b79047ba401b0a25",
|
|
25
|
+
"bindings/rust/src/formats.rs": "162127303c0b9b44645b87d90fb108ebceed192edf2aa579104d962428880c0a",
|
|
26
|
+
"bindings/rust/src/formats/grayscale_reuse_tests.rs": "786de798c256549b5c87eb007539ffb97b02fb62258f3d77dd5665742e151d6e",
|
|
27
|
+
"bindings/rust/src/formats/result_tests.rs": "66470971c73732a8a85cc749c0f90600ef47f748473cd9de6e695b2dd421c210",
|
|
28
|
+
"bindings/rust/src/geometry.rs": "cec2076a2a9a6025d4e7d8af59e90212b8311cd1e02066c9c9d94b1617453d74",
|
|
29
|
+
"bindings/rust/src/lib.rs": "b37246eeeb6983f3040ed69a071d36ebd11c8f57d1d9b428e89931107a3f1155",
|
|
30
|
+
"bindings/rust/src/linear_duplicates.rs": "adfccdb23ca198ddb82b8b4a08ce43206fb0d0091e6a473848d773d7336676e2",
|
|
31
|
+
"bindings/rust/src/linear_duplicates/area.rs": "a1a6524ea3769a94748a6316c8cea6192d669253d6e0b846f74962235aa5f1f4",
|
|
32
|
+
"bindings/rust/src/linear_duplicates/footprint.rs": "c415c3da026aa96067e3732b5b56cf9a8248ce503c1f44095a68c6de423b7675",
|
|
33
|
+
"bindings/rust/src/linear_duplicates/footprint/display.rs": "3d15484e572a2f1365b867781ee41eaa17eef3029f52350d1ff13ceaf861b171",
|
|
34
|
+
"bindings/rust/src/linear_duplicates/tests.rs": "357c35584385ef8c0a5c057a08fe4f8915ed882a20d683b207b7e92e61c34eca",
|
|
35
|
+
"bindings/rust/src/matrix_frontend.rs": "281f8e962ebe5c544d0710523d913e3bb663c068971f1a7b63edac43af08e115",
|
|
36
|
+
"bindings/rust/src/matrix_grid.rs": "28c3466d620301a9f74c3731c9d655f0460ffef1d3b552ff3f4a0dca5cc3c770",
|
|
37
|
+
"bindings/rust/src/pipeline.rs": "9cd944802e45c298cfe6017362c73cc3620fa5aae83ce790fb490ae0f1f0d102",
|
|
38
|
+
"bindings/rust/src/pipeline/deblur.rs": "bcbf1d198263d3f0d61635536cf6fe74e79f2584614a8c5e61480b5a1fef5976",
|
|
39
|
+
"bindings/rust/src/pipeline/independent_source_rows_tests.rs": "2fe562a90057c917ed8e57a45ca7befd55afd2832e1e4368c8d10999abbf5ed4",
|
|
40
|
+
"bindings/rust/src/pipeline/recovered_source_tests.rs": "8773f5180276dd34ed37d79d86a05c9640ab19dab3b4b328fbc0f5d3b2e2f33d",
|
|
41
|
+
"bindings/rust/src/pipeline/recovery_tests.rs": "788e8e1993575f4e0490e7b2017b97836067c5f380e1a64e009e0da58ff46c1d",
|
|
42
|
+
"bindings/rust/src/pipeline/restoration.rs": "29a316d8cc723948bfe29e3a419a2bd72cf368f3af49952703d917f57cf6600b",
|
|
43
|
+
"bindings/rust/src/pipeline/segment_voting.rs": "697e4ff057f73f132fe7bf5d745a623bd9a9ea1acfc809b582396d0404f92e45",
|
|
44
|
+
"bindings/rust/src/pipeline/source_evidence.rs": "5071aa47313af18b70da7854c43100df6d467a09fb95d325c6f7b439aafdb6b6",
|
|
45
|
+
"bindings/rust/src/pipeline/tests.rs": "b82e1e7af0c74d152869959ec67eb61b90b9680a8307d9bbd026c895f38a9684",
|
|
46
|
+
"bindings/rust/src/read.rs": "2a358a65ff7dc4d5165db3e5b9a835b06297ec2d89c20869f9888c60580311d0",
|
|
47
|
+
"bindings/rust/src/recovery_conflicts.rs": "d2c9ea06b06202fdec45372dfa8286a40f3e8f591c533f9248aa6c12e4e70a8d",
|
|
48
|
+
"bindings/rust/src/result.rs": "f86acfb6fc879ae2cad9888650f032c625f02e1c8a9b90c86d113a5809fa54a2",
|
|
49
|
+
"bindings/rust/src/short_crop.rs": "d2420735119f8f66c514db72599b295099a325337890392b2aec68847d850cd5",
|
|
50
|
+
"bindings/rust/src/signal_recovery.rs": "0a12c219707231dca9ff02d35a2484985cd21b857c10a9ddda240fa404d65db4",
|
|
51
|
+
"bindings/rust/src/timer.rs": "3c1fff0a0c7e4e5595b22721e857632213ecefd240e50332f6e6a9cec6f973ac",
|
|
52
|
+
"bindings/rust/tests/api.rs": "becbeabad623e635a1bbc734f61bae869f86aab259b2187641e6a49a3150cca7",
|
|
53
|
+
"bindings/rust/tests/parity.rs": "bfff70f75f0da7debcf5243b9ac6e6107fab7045956ecc368a491e37580a6027",
|
|
54
|
+
"bindings/wasm/Cargo.toml.in": "5e9b7bdc521717bacb2600c0afc428f359710298914004e0cf961ee0e4b32c18",
|
|
55
|
+
"bindings/wasm/src/lib.rs": "0a654939f1866207a4e04f6e7c5f331113ba54c40baa77ac655b2323641d5b57",
|
|
56
|
+
"config/formats.json": "28331396b0ca925ad5e95d42a51dcaebec173a31cefa17e8514788f741897ee1",
|
|
57
|
+
"config/modes.json": "3c8d83d7cb2db9ce380778b12cc3c04fa297b0fdc1d2ea2d24e29598bc907791",
|
|
58
|
+
"core/Cargo.lock": "15ffd408087f5f1c4a680140b741615968b6a12d51c3e99091b2b0f5ccf1c532",
|
|
59
|
+
"core/Cargo.toml": "ee31ed20e58ad75d8fc83e022918155d4db5b18a63c21c1f26653b1655163d37",
|
|
60
|
+
"core/src/association.rs": "1bb52ff994ece9460832332a6a7295bf4ad96faf838b2104f4d48d153ea9ce3a",
|
|
61
|
+
"core/src/aztec_frontend/center_index.rs": "da62ef62b5b139f0e8f780c069636198c1316a142b9789169f85c8d76ae168ee",
|
|
62
|
+
"core/src/aztec_frontend/curves.rs": "b8d89c932dc801aa3b00dbb266cc18ee6b2c8ca2a4bd699981c4d1a54c5a3e13",
|
|
63
|
+
"core/src/aztec_frontend/decoder.rs": "41d26f15a3657a5585b8092314d9d3670050cab4581156baff2ce7b9255e83d8",
|
|
64
|
+
"core/src/aztec_frontend/geometry.rs": "66419f20aa04b3ea47f19e8d6ad5c70070b26e329a1150a59cea90209b57ec29",
|
|
65
|
+
"core/src/aztec_frontend/mod.rs": "a9bac0888cbd8cb676d2dc92934764f69931bc6f68d09c3d4c3cb6ee6be365b8",
|
|
66
|
+
"core/src/aztec_frontend/refinement.rs": "8d23b557cb20b9c95c60b320ebe2f1f18431025ebae06944d36d0bcd7f42a56e",
|
|
67
|
+
"core/src/bands.rs": "627fd73277267cd6693a54f37c269929dd7017eeabd8c1e59537de654ff1dcd5",
|
|
68
|
+
"core/src/candidate_scanner.rs": "e7f1f2b01c459d7e7180abfd802d355d7fb34a6672bd0ed8e628ae1bb3c7bab7",
|
|
69
|
+
"core/src/candidate_scanner/association.rs": "96df1fede4fae65ec6bb91df9c6f51f82f4792a6938da379bc41ecba6f8f231a",
|
|
70
|
+
"core/src/candidate_scanner/dark_gap_replay_tests.rs": "333db4d195c5f68953da83a9e25c935118e1581d48f52bf93dfb92c16b52abde",
|
|
71
|
+
"core/src/candidate_scanner/decoding.rs": "2eb9acdaf9619011715f6b2596f101a083c4f2dc88e2daaae0eac82eced575af",
|
|
72
|
+
"core/src/candidate_scanner/diagnostic_validation_tests.rs": "7b0f5e17a3df4b65463215b433a7a9b0ea0f7125b68b5be3294667276534f4c2",
|
|
73
|
+
"core/src/candidate_scanner/evidence_span_tests.rs": "7e7d105b5125c8d97119ff5398534210ccd4975e3a106d7e79c6590eaf65da05",
|
|
74
|
+
"core/src/candidate_scanner/folded_boundary_confirmation_tests.rs": "83449d5b70537ae519c4bd6f2d5d77d9aae6b90bfdec16e1be0a789d19eb6e18",
|
|
75
|
+
"core/src/candidate_scanner/forward_blur_region_tests.rs": "cff79de4e87cbf4d1e2c6406a1c5ec96c2a8c99ede6d1c1de753d346fa285d39",
|
|
76
|
+
"core/src/candidate_scanner/interior_bounds_tests.rs": "ce12ec170eb668ae16e11104b90833fc14cdcd991e4dd3c2ee7e00f4015fde3e",
|
|
77
|
+
"core/src/candidate_scanner/low_contrast_signal_tests.rs": "bf0ac275a1589f1a2f369cc8b167cdaf3baaae11d65484f460875fc7774f61c5",
|
|
78
|
+
"core/src/candidate_scanner/lowres_threshold_tests.rs": "8e664c61fc055fd7e90cea9ebc79bd2098fe220f8f0cb13ed47359a09a223130",
|
|
79
|
+
"core/src/candidate_scanner/nearest_lowres_tests.rs": "4ef2870a49691ac86a4cd1178dae828878e74166ddb06c031bdb5f6afc2a2e46",
|
|
80
|
+
"core/src/candidate_scanner/redundant_collection_test.rs": "6d50eaa91dae6a8f549a68834b053d6c812013a6658eda3edc1cd32eeb6999ee",
|
|
81
|
+
"core/src/candidate_scanner/sampling.rs": "10fd4ff7601d1902341a87a158478f0a73860a6bb39017829f84e31d42ab1d94",
|
|
82
|
+
"core/src/candidate_scanner/segment_diagnostic_tests.rs": "dcd62a2995a8bc0c1c7a9ec9bebd58301680bd9261347e9443713c8df389c63e",
|
|
83
|
+
"core/src/candidate_scanner/tests.rs": "eadfc2690fa3bfa80aea74f6c29203d4cb1270dbfadf915a3bcd8eb8b1a40e63",
|
|
84
|
+
"core/src/continuity.rs": "e6692c36cd1d00abbfa8da99e704eb2791403428a812a42d682a672f03a2347b",
|
|
85
|
+
"core/src/contrast.rs": "664b3302a249de18b6270a92b69ad2438517093411167223e215271ee26ab471",
|
|
86
|
+
"core/src/coverage_arithmetic_tests.rs": "3883dc3a3005b1fdce7a0d8855644d69956af2b8b06e03012d3673db88f33170",
|
|
87
|
+
"core/src/ean.rs": "fc121304194ae2856d14fab8248318b49b54e47a1d370e334032c32087472db0",
|
|
88
|
+
"core/src/ean_blur.rs": "0bf19c8431db4a061bc32dd42d7a71477759b340c3467165c57add90fbac4d62",
|
|
89
|
+
"core/src/extrema_runs.rs": "3393c5f0ae0a8ca4123e46b919ada3b66e7b8a63b2a3d83d42b283014be2334c",
|
|
90
|
+
"core/src/fast_profile.rs": "88211abc16afb4e280bf64e5bcb1563d16ba1e9c71e0e8f62e0312de79f0ca6a",
|
|
91
|
+
"core/src/frame.rs": "9ab7b49497384bf9a134de637713e8de7d83a11dc33e8965b0cba34b4af295a8",
|
|
92
|
+
"core/src/frame/conflict.rs": "661f03b43661655406e2e3b723e84bf9ddd033368fba4e550633d188e8675cac",
|
|
93
|
+
"core/src/frame/crossing_identity_tests.rs": "3503de5cccaf8ee475cfd9ebaea3395db1c617ad1eb829d98de6eddfa848449d",
|
|
94
|
+
"core/src/frame/crossing_physical_evidence_tests.rs": "68045ff73a54d6392ebd0e7b9737b65bf6de53abbc98785c7dda4f825d3153c3",
|
|
95
|
+
"core/src/frame/identity.rs": "0d27e246c2c4a9761f3b8cbb7cb3b5106397ed7b04d2b32963a9be74a95946f4",
|
|
96
|
+
"core/src/frame/optional_identity_tests.rs": "c9fef1b29948baaf7d762fa4d7d2d9ad12ad6b92f26542229d729434ac9bc66e",
|
|
97
|
+
"core/src/frame/paired_pixel_tests.rs": "fc9f5e8dd4c1dc09055d13c8afe7f4caefdbe983e4656ffe121d6779aaaa8ac6",
|
|
98
|
+
"core/src/frame/source_conflict_probe_tests.rs": "0a3b0945544807d019fb6d726cc78f6b7e89467e02123a858ed06fac6d97cc51",
|
|
99
|
+
"core/src/frame/tests.rs": "02699ba4e5085e8bdf75cf2198eb19f7df54d470ebe9fbfc5afabb7e2858b371",
|
|
100
|
+
"core/src/geometry.rs": "3ecd3ad79ef8eba5efdf091da1625dbee3a9d5bbacfe7963793d6ad827afee41",
|
|
101
|
+
"core/src/identity.rs": "4224e8721451c1851bb87a580ae6310e4d338818ff25fe835ddbf3fdb638ae7a",
|
|
102
|
+
"core/src/invalid_visual.rs": "fcd5c2e871888f60aca92c67bd824e42468cf9748169734d2383d07d3079e567",
|
|
103
|
+
"core/src/lib.rs": "8e46249a843826a2f43645136215267ad4e11602828c91e76a505203499d0fc5",
|
|
104
|
+
"core/src/local_signal.rs": "ba42f0cddc32a2db280c8db72f9dc8bdaf8f9ac528c55eac7a1f2542cb1ca2e8",
|
|
105
|
+
"core/src/lowres.rs": "9db7b8ffc6e5fef3d477c3ab14dbe105683300d7d31112b4bc2217fdeeec0fed",
|
|
106
|
+
"core/src/lowres/photo.rs": "5d43a1b32469f4352bf7d3f589c571e7b0ae2e2b76721f535c41518edba08366",
|
|
107
|
+
"core/src/multi_profile.rs": "d4019ec58a145618375c2568ccce2532b0dc4613ed6bd6e83c7e713b713ee018",
|
|
108
|
+
"core/src/multi_profile/asymmetric_quiet_tests.rs": "2bbba6c5c34a1949a9c1c58614ac2f04916f14ac20161eea99318cf8db4666f2",
|
|
109
|
+
"core/src/multi_profile/folded_boundary_tests.rs": "91ef3faee05bc425acdbd3ceba9dbdfb7bff064a228d444124d6b9d0cdeab83f",
|
|
110
|
+
"core/src/multi_profile/redundant_exact_tests.rs": "0bfccef607b8dcbf0be64995ffcfd07df142d9585e474b78da463a3794c1655c",
|
|
111
|
+
"core/src/multi_profile/tests.rs": "bd949ed0d57218f53818235988ac57dcdf5436b7927397eda63757ff70ce8adb",
|
|
112
|
+
"core/src/multi_profile/weak_tests.rs": "0c9e36df651dae3705f13f0ae0643951c1a23eb0c989374ef0db6db39f786b88",
|
|
113
|
+
"core/src/multi_scan.rs": "bdb7359f54cc9018a0b43b05dc21e2ce83a1d1c6e857ff0692dc07f600fce960",
|
|
114
|
+
"core/src/multi_scan/execution.rs": "f6c0f9e9008515b08750a51dfd75f8bea078152ab046a83bcafb680910afb1c2",
|
|
115
|
+
"core/src/multi_scan/plan.rs": "68fb8ded85035b7543ca1d2ab407a823831849279a64b293e5c6d88522f47335",
|
|
116
|
+
"core/src/numeric.rs": "683a108ec8483661cfdef39b570f280ec373d29e384ccd40229e62b658b7346c",
|
|
117
|
+
"core/src/oriented.rs": "a197622f5833d91324c827bd5dcd084f35ea34ea39ae446c7cda2a7ac10bd152",
|
|
118
|
+
"core/src/profile.rs": "0f9b1268ddee001d4960e79a4155063bef867e65fa13867a389adc5f639027e9",
|
|
119
|
+
"core/src/qr_frontend/binarization.rs": "a707d890bf37d6a8afc35a92c7947e29ce0bdb47128cc5046fe13d83104b292b",
|
|
120
|
+
"core/src/qr_frontend/component_geometry.rs": "3c999da2e3e67cb3f7e23304ffa7ff32e4764dce69c4bc6ba27ef13ca1b7e185",
|
|
121
|
+
"core/src/qr_frontend/dm_detect.rs": "a3b7ae82bc8d049ad6580db07f9cbc755507af119eb15616cd0489eba71a434c",
|
|
122
|
+
"core/src/qr_frontend/mod.rs": "229add071e60424bfcc633611f47ffb8f5e246f2430f8a9484810af893631a32",
|
|
123
|
+
"core/src/qr_frontend/qr_detect.rs": "b88ee9663f371b6488b152aefe2a4b43ae90ff38ea73329fafd31f6aaa5c04e8",
|
|
124
|
+
"core/src/qr_frontend/qr_detect/alignment_cached.rs": "ecf8c64aa10a30f74af465f0aafe36da8dee687684bdbeb1c39f54d22d37a6a0",
|
|
125
|
+
"core/src/qr_frontend/qr_detect/curved.rs": "4bcf97aba089dfa3f114d38fe635ccc3b1cd043328d7f0ec5cd68be6a7614909",
|
|
126
|
+
"core/src/qr_frontend/qr_detect/finder_index.rs": "4e0807d84a6c9a58c56d0910b6ed9830e1dbd27bc703eb4c4b89396dda48ca8a",
|
|
127
|
+
"core/src/qr_frontend/qr_detect/partial.rs": "4adeef4317f05bac32bae7845abea11316a61db0ce1ae1885a9568281d141382",
|
|
128
|
+
"core/src/qr_frontend/qr_detect/ring.rs": "72d8af532c8ca3dc6365aa731a6432293f1d22595cfc0bf3f28231c8375cabee",
|
|
129
|
+
"core/src/qr_frontend/qr_detect/single.rs": "c1db0c9d1338d8c79170ed89c27ac9cddf3d8ed93499d752c14670752c43903e",
|
|
130
|
+
"core/src/qr_frontend/qr_enhance.rs": "4c8c61f309c61aa45929be12eea9ba605e9a7989892aa4aa631feff942ba841f",
|
|
131
|
+
"core/src/qr_grid.rs": "e537d7563b54962599ce69a538dccc6f0ef5f6e8b13434a62a78b8ae9c0b0b62",
|
|
132
|
+
"core/src/region_json.rs": "a9d71637e3af7e69e5e7c58e38aba7bfe9bc456b26ad644edb4bf523337dcd98",
|
|
133
|
+
"core/src/region_scan.rs": "4397270adb57b463f653533fc946872da281e9384431efba1bb7805e8bbda249",
|
|
134
|
+
"core/src/retail_anchors.rs": "9fd0155ea56a8b5f419a26afd7e44031c079b1132374c9b1120384395b5a73fc",
|
|
135
|
+
"core/src/retail_peak_scratch.rs": "77f668cc39b41232d32f9c092c8249323da3a1ad48b8fb978459e19c35dd6d13",
|
|
136
|
+
"core/src/retail_peaks.rs": "2e24e066abb4e96b3ebcc088418b9dc51068f18df3e63475dce089ac0c13ab1a",
|
|
137
|
+
"core/src/retail_pipeline.rs": "98d21798d173812dcb9456241549570170fefafee6d05a1671430b40d642389a",
|
|
138
|
+
"core/src/retail_protection.rs": "5aee4e1153a713b619e55dd15c30b5cac80db355e88fdf9a423a51f85192f037",
|
|
139
|
+
"core/src/retail_roi.rs": "9f073d79a0899f846ca450c872383335b163cef3affed0ad3a0b8649cfec1c35",
|
|
140
|
+
"core/src/retail_short.rs": "9287a52900cd6876a5ac13a7a5116c3d9d1dff0143417d11b5b0a28de4598ab6",
|
|
141
|
+
"core/src/run_ean.rs": "0a4186cbe7ec297722d8efdc746ca7a29a0090b62d6a96ace4dfaf5a148f7ede",
|
|
142
|
+
"core/src/run_profile.rs": "5056f889336f57121ebb2936b3744093574f2532c3ff46a79522a0a363517e6c",
|
|
143
|
+
"core/src/sampling.rs": "2b05686ae0894668918e43a92d6b39bd183ea271117e220167f6f4ae3b0938d6",
|
|
144
|
+
"core/src/scan.rs": "2dafbd798135b30aa8d7b84b221b71148c00c069a5895dbaeb7f187e4db045bb",
|
|
145
|
+
"core/src/scanner_clock.rs": "22195a922b297d967ed7c20738fd2cd89bbb00f74fc88a17cdde85957d575976",
|
|
146
|
+
"core/src/shear.rs": "65c7d1ba7e1c58392cf0c32e67badf03af786c845b41921ccc67b6236a3b472e",
|
|
147
|
+
"core/src/source_rescue.rs": "1aa4c8788d967312ca0dbaf1755880f32c5db46f9fb3e908dee53035312ae72d",
|
|
148
|
+
"core/src/stripes.rs": "58a3fad86d12ea9cda07ca254b4d7b906deb918074565306d35c27f70875eb71",
|
|
149
|
+
"core/src/stripes/groups.rs": "ba4215e5d44b78aed4153903b0095d4d0733a8a04a33cd0a17f398d64cfdbc12",
|
|
150
|
+
"core/src/stripes/proposals.rs": "636a5f65814b90671175c7889180d6e3d67f53b38ef7153a23c54a5b3604c81c",
|
|
151
|
+
"core/src/stripes/quick.rs": "fb43b4baed4e8a6d13ed558b92a0ab888125d65159018f40695411f073f0d35f",
|
|
152
|
+
"core/src/stripes/raster.rs": "cf09ce3c1048fa05e5916617cfa657d2fc476910cf361e32408ef9bf647db1b1",
|
|
153
|
+
"core/src/stripes/refinement.rs": "b5033fcc4e86f4a19a15eeb8e777335a042686c9115461300ae71259d4f7507e",
|
|
154
|
+
"core/src/subpixel.rs": "b5b5679b25f678e3b4e73ca857e152dbdc21640c42a406cd7ca44d1ee3f3b25d",
|
|
155
|
+
"core/src/subpixel/model.rs": "7a5b696450b7fd60d3163f9c75eec24f3fc1c668fbe9273f8050a4eb0b93e5bc",
|
|
156
|
+
"core/src/subpixel/sequence.rs": "d55cb16e74f2d8016c0c9ca97ad481a8d3069af3407efecb1868bc8df776b8a4",
|
|
157
|
+
"core/src/transition.rs": "68f44c9dd45d9b2de411ac25757bb974eace9c2933ca949695e3b333b40d1f0a",
|
|
158
|
+
"core/src/verified_coverage.rs": "e0d5a059e1520aae5e6a30df6a78e61db5dd9f659dbeac4c75416fbeb002e788",
|
|
159
|
+
"multiformat/Cargo.lock": "df2ac9308658ddd8c8b2a464f281c99cf133e94406a04c0286cbe4011ae4889e",
|
|
160
|
+
"multiformat/Cargo.toml": "322c2664cf79929ec201ab7cca6101f74add778932d56d3f0149a18ec78ccb2d",
|
|
161
|
+
"multiformat/src/aztec.rs": "7be10cbc7cdf9e984985f5261fa2f5d34d1c7209f9a19e908a60f383653a31a6",
|
|
162
|
+
"multiformat/src/aztec_detect.rs": "0a3074bcbf509d4e89b9faa168909cbe9efbb47980e63203d03028f62748d8ac",
|
|
163
|
+
"multiformat/src/aztec_detect/center_index.rs": "816d3fbdf87c8abdb47ac989c96ce47183531d07a4b4bc53be9e488a71455af8",
|
|
164
|
+
"multiformat/src/bin/finders.rs": "77a5081a20324af6e8c019c4acc714f9d88790d5218c078f7883bb9a8be4cdbc",
|
|
165
|
+
"multiformat/src/bin/matrix.rs": "51f45074f194f75f3f105e4688e17f1e44bf5661b75c78e6917ddcbf35bf5e1a",
|
|
166
|
+
"multiformat/src/bin/oracle.rs": "4b3c7330d0b6c8aec1e843d72587ac1e7df4564b0d36b29e26a08ce2ac76872a",
|
|
167
|
+
"multiformat/src/bin/pdf_probe.rs": "37f65b766c21e5be8298b1f40f08ef48dcf53ea2e9187ec265f1ab5d1dad8f92",
|
|
168
|
+
"multiformat/src/bin/scan.rs": "66a2476d11e25e2c9de39dc89f98033637d1caf614d83079556b22cd79f260fe",
|
|
169
|
+
"multiformat/src/binarization.rs": "f76f699782f0281cb2b374c88bc65b75c74f29cd2681edf2744c927519a0195c",
|
|
170
|
+
"multiformat/src/component_geometry.rs": "1dc761a26c8ae7f02f99992ff0f03e8b7206ac8d445f917e7a92bb6c5a0f26ca",
|
|
171
|
+
"multiformat/src/databar.rs": "e3ad35e28983ba5be48c66f0f6e448f861968b7b80c86754c0b440d31aa64ebe",
|
|
172
|
+
"multiformat/src/datamatrix.rs": "82667d9e6f400e08fb73c2d11edbc326d14685341a4928f49cafb89f9be36294",
|
|
173
|
+
"multiformat/src/dm_detect.rs": "894b311d80d3a133f08eba5c3fc2fdfb39a6c16557551d021855c397a12fe9e3",
|
|
174
|
+
"multiformat/src/encoding.rs": "3ef802254b637c2b62df99171a540d6cb04ff2c8a0b233b1a18eb3b48ae2e192",
|
|
175
|
+
"multiformat/src/encoding_tables.rs": "17162b094e106b6f175d021e74de97daa64fc6b0fcef26f74195af58ffcdce5a",
|
|
176
|
+
"multiformat/src/expanded.rs": "75749adff31553818a1e8458e8da8ba809eadca4d39dd85e5a1cfeffbb4bf9fd",
|
|
177
|
+
"multiformat/src/lib.rs": "cbcd465150b30e295916efc680a317ddeca3ae524c64751bf5a57c9a28f335de",
|
|
178
|
+
"multiformat/src/linear.rs": "7eb68cfa1e6681f2e161259c9266b425237b0c821405206ecbd99a2f7477ffb8",
|
|
179
|
+
"multiformat/src/linear_geometry.rs": "fc22d47e5c8bbf9c72c5f23ee00ffb9cacd5f0504699c226622a8123c2d6660b",
|
|
180
|
+
"multiformat/src/maxicode.rs": "ea033b3e75db3b61b19ab9c3cf3f7019e7adbce99eb8d57979eb9d4f90825c15",
|
|
181
|
+
"multiformat/src/maxicode_detect.rs": "eecd4c109a58d84956570b35668b319de41e7e31a91425fde8453c22d4227d47",
|
|
182
|
+
"multiformat/src/maxicode_tables.rs": "41a539bce7e5731a343f5a582d323bd3dc320fdb17150b638a422fc58899ea0d",
|
|
183
|
+
"multiformat/src/numeric.rs": "eae0ecb1290b9f08aa6aef9e147d85ffa2a69b79aa9d31269b4a9e9c3a82eec8",
|
|
184
|
+
"multiformat/src/pdf417.rs": "a2df2217f5cc461fe2e47723d88085e77993ba6f2d03b6cc85517d0eda4deaa0",
|
|
185
|
+
"multiformat/src/pdf417_tables.rs": "692e75fc7563d5dae6c1691d3112b2928f900a0c97a091f6db2b969fd914d737",
|
|
186
|
+
"multiformat/src/pdf_localize.rs": "8b718bb445ae1b7740ee62604e496bffff7a80965b9b7f51872447fde11d5a3a",
|
|
187
|
+
"multiformat/src/qr.rs": "c4fb2b55936b7c6d42f550b3ee902c66628a0224a1c8f82329eb74aa7797cb9f",
|
|
188
|
+
"multiformat/src/qr_detect.rs": "7a23cdf55ae022ed99d3d556422a9479b1cfe173f0cc774ad27afe6159aae7a5",
|
|
189
|
+
"multiformat/src/qr_detect/curved.rs": "046820f490d19b7735e89ee5a3b3db7e1450c7e9462e9227665595b684e6c1b2",
|
|
190
|
+
"multiformat/src/qr_detect/finder_index.rs": "4e0807d84a6c9a58c56d0910b6ed9830e1dbd27bc703eb4c4b89396dda48ca8a",
|
|
191
|
+
"multiformat/src/qr_detect/partial.rs": "ebc5fa95b0f85aa4a6bcf14bf645971b5b66f143f1790b2069fdb68992f176ef",
|
|
192
|
+
"multiformat/src/qr_detect/ring.rs": "72d8af532c8ca3dc6365aa731a6432293f1d22595cfc0bf3f28231c8375cabee",
|
|
193
|
+
"multiformat/src/qr_detect/single.rs": "8505b41b38c06531a082ca5401678743672b3745ae76ba8a7960920ad2842f86",
|
|
194
|
+
"multiformat/src/qr_enhance.rs": "4c8c61f309c61aa45929be12eea9ba605e9a7989892aa4aa631feff942ba841f",
|
|
195
|
+
"multiformat/src/qr_tables.rs": "50cb91143498ac7b06aae9eb60ac85ce3144ab8a19f8c38d32805b8434c3407b",
|
|
196
|
+
"multiformat/src/rectify.rs": "619d8302452db8224e48b23ec80e344e96787edea6b96aa2b217e8ad18eee49a",
|
|
197
|
+
"multiformat/src/reed_binary.rs": "f45f5925b646b554f881294800fc31f8b59d3caa80ef89170c2df8f01dceafe7",
|
|
198
|
+
"multiformat/src/reed_prime.rs": "df5a08883e0e186c3458174e2c3c2b84f20985dafeb99118a5c179a4be3eda5a",
|
|
199
|
+
"multiformat/src/reed_solomon.rs": "a024d683b542308d475f1c6ef6b32977e987079b05444cb940cfab361fb1991f",
|
|
200
|
+
"multiformat/src/regions.rs": "e00a40a616b4ab813e4cacbe9f5f8c9c79a20ff45fd3833215a5061d5a6dfe22",
|
|
201
|
+
"multiformat/src/retail_gray.rs": "186c34273643914a2947b79220c6b63cf25cf8ac1446fa959a1346cb8dc65c9e",
|
|
202
|
+
"multiformat/src/retail_profile.rs": "af85e22f4828802bab84f33256cc07ecba841f2a9435406de20225274082051c",
|
|
203
|
+
"scripts/build.py": "e16fe0ffdbf68c590a1b03d22562aa40b075bedc82570b886d670d9ea0de7475",
|
|
204
|
+
"scripts/build_turbo.py": "cdf932e08ad2e401fd64d950eb522cb5d8692c5673cf631ffba4aeaf0285d4f8",
|
|
205
|
+
"scripts/build_wasm.py": "3b129ebd69ea05e05d4642bde43881b16ccc50ed36d0b55c3025be2afb49738e",
|
|
206
|
+
"scripts/prepare_rust.py": "0a102eec86e2ed58a4dd7b9e884526828936cba4b65aa55b4db138c8799db907",
|
|
207
|
+
"scripts/wasm_rustc.py": "2a775dbb3cdc5d886f510dfc2f60a8035932aace6503758ad17b196d5714f335",
|
|
208
|
+
"tools/package-source/Cargo.lock": "b869f3edae87ac8e4652d1ef1d01a70c8d6694c80c03cf82f8f52a21c12847cf",
|
|
209
|
+
"tools/package-source/Cargo.toml": "565ad3a7ce72b4cea33a0468de1192efff8e1b3c0b5a632d17d1c4faedfd3ed1",
|
|
210
|
+
"tools/package-source/src/main.rs": "e41bcb2e036a6b754bc84a483c72497ed2e22cee338d9f813bc63ab7120419d5"
|
|
211
|
+
},
|
|
212
|
+
"files": {
|
|
213
|
+
"experimental-turbo16.wasm": {
|
|
214
|
+
"mode": "low",
|
|
215
|
+
"preset": 16,
|
|
216
|
+
"environment": {
|
|
217
|
+
"TAPIRSCAN_EXPERIMENTAL_TURBO": "1",
|
|
218
|
+
"TAPIRSCAN_TURBO_TIER": "16",
|
|
219
|
+
"TAPIRSCAN_TURBO_LEGACY_OUTLINES": "1",
|
|
220
|
+
"TAPIRSCAN_TURBO_BAND_OUTLINES": "1",
|
|
221
|
+
"TAPIRSCAN_EXPERIMENT_TILE_CACHE": "1",
|
|
222
|
+
"TAPIRSCAN_TURBO_FINITE_EXTREMA": "1",
|
|
223
|
+
"TAPIRSCAN_TURBO_DIRECT_SAMPLE": "1"
|
|
224
|
+
},
|
|
225
|
+
"sha256": "5a3ee3af81ed164df64deb763dce042d82df1ab80aa5ea4a802e4608b618bf04",
|
|
226
|
+
"bytes": 1789882
|
|
227
|
+
},
|
|
228
|
+
"experimental-turbo2.wasm": {
|
|
229
|
+
"mode": "low",
|
|
230
|
+
"preset": 2,
|
|
231
|
+
"environment": {
|
|
232
|
+
"TAPIRSCAN_EXPERIMENTAL_TURBO": "1",
|
|
233
|
+
"TAPIRSCAN_TURBO_TIER": "2",
|
|
234
|
+
"TAPIRSCAN_TURBO_LEGACY_OUTLINES": "1",
|
|
235
|
+
"TAPIRSCAN_TURBO_BAND_OUTLINES": "1",
|
|
236
|
+
"TAPIRSCAN_EXPERIMENT_TILE_CACHE": "1",
|
|
237
|
+
"TAPIRSCAN_TURBO_FINITE_EXTREMA": "1",
|
|
238
|
+
"TAPIRSCAN_TURBO_SELECTIVE_OUTLINES": "1"
|
|
239
|
+
},
|
|
240
|
+
"sha256": "ac2f79fd382172b14ce3a60234f25ed36f929942d81b747ba1149ce5c1ed4198",
|
|
241
|
+
"bytes": 1801556
|
|
242
|
+
},
|
|
243
|
+
"experimental-turbo4.wasm": {
|
|
244
|
+
"mode": "low",
|
|
245
|
+
"preset": 4,
|
|
246
|
+
"environment": {
|
|
247
|
+
"TAPIRSCAN_EXPERIMENTAL_TURBO": "1",
|
|
248
|
+
"TAPIRSCAN_TURBO_TIER": "4",
|
|
249
|
+
"TAPIRSCAN_TURBO_LEGACY_OUTLINES": "1",
|
|
250
|
+
"TAPIRSCAN_TURBO_BAND_OUTLINES": "1",
|
|
251
|
+
"TAPIRSCAN_EXPERIMENT_TILE_CACHE": "1",
|
|
252
|
+
"TAPIRSCAN_TURBO_FINITE_EXTREMA": "1",
|
|
253
|
+
"TAPIRSCAN_TURBO_SELECTIVE_OUTLINES": "1"
|
|
254
|
+
},
|
|
255
|
+
"sha256": "18c939330be27b8f363fe9c60a3971cdbff5fb7210f52618187c133b3d93229d",
|
|
256
|
+
"bytes": 1796481
|
|
257
|
+
},
|
|
258
|
+
"experimental-turbo8.wasm": {
|
|
259
|
+
"mode": "low",
|
|
260
|
+
"preset": 8,
|
|
261
|
+
"environment": {
|
|
262
|
+
"TAPIRSCAN_EXPERIMENTAL_TURBO": "1",
|
|
263
|
+
"TAPIRSCAN_TURBO_TIER": "8",
|
|
264
|
+
"TAPIRSCAN_TURBO_LEGACY_OUTLINES": "1",
|
|
265
|
+
"TAPIRSCAN_TURBO_BAND_OUTLINES": "1",
|
|
266
|
+
"TAPIRSCAN_EXPERIMENT_TILE_CACHE": "1",
|
|
267
|
+
"TAPIRSCAN_TURBO_FINITE_EXTREMA": "1",
|
|
268
|
+
"TAPIRSCAN_TURBO_SELECTIVE_OUTLINES": "1",
|
|
269
|
+
"TAPIRSCAN_TURBO_PROFILE_CAP": "576"
|
|
270
|
+
},
|
|
271
|
+
"sha256": "d05a0a454bb8921261b60d413d1d6cac0e67a438d797438d33cc02def4705a6b",
|
|
272
|
+
"bytes": 1794556
|
|
273
|
+
},
|
|
274
|
+
"high.wasm": {
|
|
275
|
+
"mode": "high",
|
|
276
|
+
"sha256": "0eb910a865e2fd526fd235f94d58c7df7701a9c583f2a3f938e8d77a93349313",
|
|
277
|
+
"bytes": 2414659
|
|
278
|
+
},
|
|
279
|
+
"low.wasm": {
|
|
280
|
+
"mode": "low",
|
|
281
|
+
"sha256": "57d6bc21ddacd4d47feddc44aeaae1e58e269069eb5eaa746020e6eec49c64b2",
|
|
282
|
+
"bytes": 1841468
|
|
283
|
+
},
|
|
284
|
+
"medium.wasm": {
|
|
285
|
+
"mode": "medium",
|
|
286
|
+
"sha256": "537c49059c2289f7e07d25cb9bc3c290dee1a3510d2f2b9c031c4c46a582f0d3",
|
|
287
|
+
"bytes": 2450297
|
|
288
|
+
},
|
|
289
|
+
"very-high.wasm": {
|
|
290
|
+
"mode": "very-high",
|
|
291
|
+
"sha256": "8dc4622da970c340e6b7d815083c253ba10d7f56437721b086a38caaca922b39",
|
|
292
|
+
"bytes": 2501485
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/wasm/high.wasm
ADDED
|
Binary file
|
package/wasm/low.wasm
ADDED
|
Binary file
|
package/wasm/medium.wasm
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/** Explicit indices reject sparse arrays; nonfinite numeric geometry reaches Rust. */
|
|
2
|
-
export function isQuadShape(value: any): boolean;
|
|
3
|
-
/** Validate before asynchronous work; returned bytes are owned by the caller. */
|
|
4
|
-
export function snapshotImage(image: any): {
|
|
5
|
-
data: Uint8Array<any>;
|
|
6
|
-
width: any;
|
|
7
|
-
height: any;
|
|
8
|
-
channels: any;
|
|
9
|
-
stride: any;
|
|
10
|
-
};
|
|
11
|
-
export function snapshotPolicy(policy: any): any;
|
|
12
|
-
/** Uncalibrated support ordering; ties preserve spatial output order. */
|
|
13
|
-
export function rankBarcodes(barcodes: any): any[];
|
|
14
|
-
export class ScannerError extends Error {
|
|
15
|
-
constructor(code: any, message: any);
|
|
16
|
-
code: any;
|
|
17
|
-
}
|
|
18
|
-
export class IndependentScanner {
|
|
19
|
-
static create(bytes: any): Promise<IndependentScanner>;
|
|
20
|
-
constructor(exports: any);
|
|
21
|
-
/** All supplied regions receive the cheap pass; successful reads do not end scanning. */
|
|
22
|
-
scan(image: any, quads: any, policy?: {}): any;
|
|
23
|
-
/** Synchronous transaction: upload once, localize, decode the same owned pixels. */
|
|
24
|
-
scanLocalized(image: any, policy?: {}, fitLimit?: number, fullFrame?: boolean): {
|
|
25
|
-
localization: any;
|
|
26
|
-
searchWindows: {
|
|
27
|
-
kind: string;
|
|
28
|
-
polygon: number[][];
|
|
29
|
-
candidateIndex: any;
|
|
30
|
-
}[];
|
|
31
|
-
scan: any;
|
|
32
|
-
localizationMs: number;
|
|
33
|
-
decodingMs: number;
|
|
34
|
-
scanMs: number;
|
|
35
|
-
};
|
|
36
|
-
/** Separate convenience; it never changes find-all work or suppresses frame evidence. */
|
|
37
|
-
best(result: any): any;
|
|
38
|
-
dispose(): void;
|
|
39
|
-
#private;
|
|
40
|
-
}
|
package/dist/completion-host.mjs
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/** Explicit indices reject sparse arrays; nonfinite numeric geometry reaches Rust. */
|
|
2
|
-
export function isQuadShape(value) {
|
|
3
|
-
if (!Array.isArray(value) || value.length !== 4)
|
|
4
|
-
return false;
|
|
5
|
-
for (let i = 0; i < 4; i++) {
|
|
6
|
-
if (!Object.hasOwn(value, i))
|
|
7
|
-
return false;
|
|
8
|
-
const point = value[i];
|
|
9
|
-
if (!Array.isArray(point) || point.length !== 2)
|
|
10
|
-
return false;
|
|
11
|
-
for (let j = 0; j < 2; j++)
|
|
12
|
-
if (!Object.hasOwn(point, j) || typeof point[j] !== 'number')
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
export class ScannerError extends Error {
|
|
18
|
-
code;
|
|
19
|
-
constructor(code, message) { super(message); this.name = 'ScannerError'; this.code = code; }
|
|
20
|
-
}
|
|
21
|
-
function integer(value, min, max, name) {
|
|
22
|
-
if (!Number.isSafeInteger(value) || value < min || value > max)
|
|
23
|
-
throw new ScannerError('invalid_input', `Invalid ${name}`);
|
|
24
|
-
return value;
|
|
25
|
-
}
|
|
26
|
-
function status(code) {
|
|
27
|
-
if (code !== 0)
|
|
28
|
-
throw new ScannerError(`core_${code}`, `Independent scanner rejected operation (${code})`);
|
|
29
|
-
}
|
|
30
|
-
function parseFrame(text, count) {
|
|
31
|
-
const v = JSON.parse(text);
|
|
32
|
-
if (!v || typeof v !== 'object')
|
|
33
|
-
throw new ScannerError('invalid_output', 'Expected frame object');
|
|
34
|
-
const f = v;
|
|
35
|
-
if (!Array.isArray(f.candidates) || f.candidates.length !== count || !Array.isArray(f.barcodes) || typeof f.unfinished !== 'boolean' || !f.reconciliation)
|
|
36
|
-
throw new ScannerError('invalid_output', 'Invalid frame shape');
|
|
37
|
-
for (let i = 0; i < f.candidates.length; i++) {
|
|
38
|
-
const c = f.candidates[i];
|
|
39
|
-
if (c.candidate_index !== i || !Array.isArray(c.coverage) || c.coverage.length !== 4 || !Array.isArray(c.observations) || !Array.isArray(c.detections) || typeof c.error !== 'boolean')
|
|
40
|
-
throw new ScannerError('invalid_output', 'Invalid candidate shape');
|
|
41
|
-
}
|
|
42
|
-
for (const b of f.barcodes)
|
|
43
|
-
if (!/^\d{13}$/.test(b.text) || !Array.isArray(b.polygon) || b.polygon.length !== 4 || !Array.isArray(b.candidate_indices) || b.candidate_indices.some(i => !Number.isInteger(i) || i < 0 || i >= count))
|
|
44
|
-
throw new ScannerError('invalid_output', 'Invalid barcode shape');
|
|
45
|
-
return f;
|
|
46
|
-
}
|
|
47
|
-
/** Validate before asynchronous work; returned bytes are owned by the caller. */
|
|
48
|
-
export function snapshotImage(image) {
|
|
49
|
-
if (!image || typeof image !== 'object')
|
|
50
|
-
throw new ScannerError('invalid_input', 'Invalid image');
|
|
51
|
-
const width = integer(image.width, 1, 0xffffffff, 'width'), height = integer(image.height, 1, 0xffffffff, 'height');
|
|
52
|
-
if (![1, 3, 4].includes(image.channels) || !(image.data instanceof Uint8Array))
|
|
53
|
-
throw new ScannerError('invalid_input', 'Invalid image buffer/channels');
|
|
54
|
-
const stride = integer(image.stride, width * image.channels, 0xffffffff, 'stride');
|
|
55
|
-
const required = integer((height - 1) * stride + width * image.channels, 1, 128 * 1024 * 1024, 'image length');
|
|
56
|
-
if (image.data.byteLength < required)
|
|
57
|
-
throw new ScannerError('invalid_input', 'Image buffer is too short');
|
|
58
|
-
return { data: new Uint8Array(image.data.subarray(0, required)), width, height, channels: image.channels, stride };
|
|
59
|
-
}
|
|
60
|
-
export function snapshotPolicy(policy) {
|
|
61
|
-
if (!policy || typeof policy !== 'object')
|
|
62
|
-
throw new ScannerError('invalid_input', 'Invalid policy');
|
|
63
|
-
const copy = { ...policy };
|
|
64
|
-
for (const key of ['transitionCleanup', 'sourceIdentity', 'interiorNormalization', 'guardBias', 'allowSingleRow'])
|
|
65
|
-
if (copy[key] !== undefined && typeof copy[key] !== 'boolean')
|
|
66
|
-
throw new ScannerError('invalid_input', `Invalid ${key}`);
|
|
67
|
-
integer(copy.maxRetryPathsPerCandidate ?? 512, 0, 4096, 'candidate budget');
|
|
68
|
-
integer(copy.maxRetryPathsPerFrame ?? 8192, 0, 65536, 'frame budget');
|
|
69
|
-
integer(copy.maxAssociationChecks ?? 200000, 0, 2000000, 'comparison budget');
|
|
70
|
-
integer(copy.maxAssociationPixels ?? 2000000, 0, 16000000, 'pixel budget');
|
|
71
|
-
integer(copy.maxResults ?? 1024, 1, 4096, 'result budget');
|
|
72
|
-
return copy;
|
|
73
|
-
}
|
|
74
|
-
/** Uncalibrated support ordering; ties preserve spatial output order. */
|
|
75
|
-
export function rankBarcodes(barcodes) {
|
|
76
|
-
return [...barcodes].sort((a, b) => b.support - a.support);
|
|
77
|
-
}
|
|
78
|
-
export class IndependentScanner {
|
|
79
|
-
#exports;
|
|
80
|
-
#handle;
|
|
81
|
-
constructor(exports) {
|
|
82
|
-
this.#exports = exports;
|
|
83
|
-
if (exports.regions_version() !== 1)
|
|
84
|
-
throw new ScannerError('abi_version', 'Unsupported scanner ABI');
|
|
85
|
-
this.#handle = exports.regions_new();
|
|
86
|
-
if (!this.#handle)
|
|
87
|
-
throw new ScannerError('capacity', 'Scanner handle capacity exhausted');
|
|
88
|
-
}
|
|
89
|
-
static async create(bytes) {
|
|
90
|
-
const module = await WebAssembly.compile(bytes);
|
|
91
|
-
const instance = await WebAssembly.instantiate(module, {});
|
|
92
|
-
const exports = instance.exports;
|
|
93
|
-
for (const name of ['regions_localize', 'regions_version', 'regions_new', 'regions_destroy', 'regions_prepare', 'regions_input_ptr', 'regions_input_len', 'regions_quads_ptr', 'regions_output_ptr', 'regions_output_len', 'regions_scan']) {
|
|
94
|
-
if (typeof instance.exports[name] !== 'function')
|
|
95
|
-
throw new ScannerError('abi_shape', `Missing ${name}`);
|
|
96
|
-
}
|
|
97
|
-
if (!(exports.memory instanceof WebAssembly.Memory))
|
|
98
|
-
throw new ScannerError('abi_shape', 'Missing memory');
|
|
99
|
-
return new IndependentScanner(exports);
|
|
100
|
-
}
|
|
101
|
-
/** All supplied regions receive the cheap pass; successful reads do not end scanning. */
|
|
102
|
-
scan(image, quads, policy = {}) {
|
|
103
|
-
return this.#scan(image, quads, policy, false);
|
|
104
|
-
}
|
|
105
|
-
/** Synchronous transaction: upload once, localize, decode the same owned pixels. */
|
|
106
|
-
scanLocalized(image, policy = {}, fitLimit = 8, fullFrame = false) {
|
|
107
|
-
const start = performance.now();
|
|
108
|
-
if (!this.#handle)
|
|
109
|
-
throw new ScannerError('disposed', 'Scanner is disposed');
|
|
110
|
-
if (!image || typeof image !== 'object')
|
|
111
|
-
throw new ScannerError('invalid_input', 'Invalid image');
|
|
112
|
-
const width = integer(image.width, 3, 0xffffffff, 'width'), height = integer(image.height, 3, 0xffffffff, 'height');
|
|
113
|
-
if (![1, 3, 4].includes(image.channels) || !(image.data instanceof Uint8Array))
|
|
114
|
-
throw new ScannerError('invalid_input', 'Invalid image buffer/channels');
|
|
115
|
-
const stride = integer(image.stride, width * image.channels, 0xffffffff, 'stride');
|
|
116
|
-
const required = integer((height - 1) * stride + width * image.channels, 1, 128 * 1024 * 1024, 'image length');
|
|
117
|
-
if (image.data.byteLength < required)
|
|
118
|
-
throw new ScannerError('invalid_input', 'Image buffer is too short');
|
|
119
|
-
integer(fitLimit, 0, 8, 'shear limit');
|
|
120
|
-
const e = this.#exports, id = this.#handle;
|
|
121
|
-
status(e.regions_prepare(id, width, height, image.channels, stride));
|
|
122
|
-
if (e.regions_input_len(id) !== required)
|
|
123
|
-
throw new ScannerError('abi_shape', 'Input allocation mismatch');
|
|
124
|
-
new Uint8Array(e.memory.buffer, e.regions_input_ptr(id), required).set(image.data.subarray(0, required));
|
|
125
|
-
status(e.regions_localize(id, fitLimit));
|
|
126
|
-
const localization = JSON.parse(new TextDecoder().decode(new Uint8Array(e.memory.buffer, e.regions_output_ptr(id), e.regions_output_len(id))));
|
|
127
|
-
if (!Array.isArray(localization.proposals) || localization.proposals.length > 32 || localization.proposals.some((p) => !isQuadShape(p.polygon)))
|
|
128
|
-
throw new ScannerError('abi_shape', 'Invalid localization');
|
|
129
|
-
const searchWindows = fullFrame ? [{ kind: 'full_frame_search', polygon: [[0, 0], [width - 1, 0], [width - 1, height - 1], [0, height - 1]], candidateIndex: localization.proposals.length }] : [];
|
|
130
|
-
const localizationMs = performance.now() - start, decodeStart = performance.now();
|
|
131
|
-
const scan = this.#scan(image, [...localization.proposals.map((p) => p.polygon), ...searchWindows.map(p => p.polygon)], policy, true);
|
|
132
|
-
return { localization, searchWindows, scan, localizationMs, decodingMs: performance.now() - decodeStart, scanMs: performance.now() - start };
|
|
133
|
-
}
|
|
134
|
-
#scan(image, quads, policy, prepared) {
|
|
135
|
-
const start = performance.now();
|
|
136
|
-
if (!this.#handle)
|
|
137
|
-
throw new ScannerError('disposed', 'Scanner is disposed');
|
|
138
|
-
if (!image || typeof image !== 'object' || !Array.isArray(quads) || !policy || typeof policy !== 'object')
|
|
139
|
-
throw new ScannerError('invalid_input', 'Invalid scan arguments');
|
|
140
|
-
for (const key of ['transitionCleanup', 'sourceIdentity', 'interiorNormalization', 'guardBias', 'allowSingleRow'])
|
|
141
|
-
if (policy[key] !== undefined && typeof policy[key] !== 'boolean')
|
|
142
|
-
throw new ScannerError('invalid_input', `Invalid ${key}`);
|
|
143
|
-
const e = this.#exports, id = this.#handle;
|
|
144
|
-
const width = integer(image.width, 1, 0xffffffff, 'width'), height = integer(image.height, 1, 0xffffffff, 'height');
|
|
145
|
-
if (![1, 3, 4].includes(image.channels) || !(image.data instanceof Uint8Array))
|
|
146
|
-
throw new ScannerError('invalid_input', 'Invalid image buffer/channels');
|
|
147
|
-
const stride = integer(image.stride, width * image.channels, 0xffffffff, 'stride');
|
|
148
|
-
const required = integer((height - 1) * stride + width * image.channels, 1, 128 * 1024 * 1024, 'image length');
|
|
149
|
-
if (image.data.byteLength < required)
|
|
150
|
-
throw new ScannerError('invalid_input', 'Image buffer is too short');
|
|
151
|
-
integer(quads.length, 0, 64, 'candidate count');
|
|
152
|
-
for (const q of quads)
|
|
153
|
-
if (!isQuadShape(q))
|
|
154
|
-
throw new ScannerError('invalid_input', 'Invalid quad shape');
|
|
155
|
-
const perCandidate = integer(policy.maxRetryPathsPerCandidate ?? 512, 0, 4096, 'candidate budget');
|
|
156
|
-
const perFrame = integer(policy.maxRetryPathsPerFrame ?? 8192, 0, 65536, 'frame budget');
|
|
157
|
-
const checks = integer(policy.maxAssociationChecks ?? 200000, 0, 2000000, 'comparison budget');
|
|
158
|
-
const pixels = integer(policy.maxAssociationPixels ?? 2000000, 0, 16000000, 'pixel budget');
|
|
159
|
-
const results = integer(policy.maxResults ?? 1024, 1, 4096, 'result budget');
|
|
160
|
-
if (policy.finishCandidates && e.regions_completion_supported?.() !== 1)
|
|
161
|
-
throw new Error("This WASM build does not support finishCandidates");
|
|
162
|
-
const flags = (policy.transitionCleanup ? 1 : 0) | (policy.sourceIdentity ? 2 : 0) | (policy.interiorNormalization ? 4 : 0) | (policy.guardBias ? 8 : 0) | (policy.allowSingleRow ? 16 : 0) | (policy.finishCandidates ? 32 : 0);
|
|
163
|
-
if (!prepared) {
|
|
164
|
-
status(e.regions_prepare(id, width, height, image.channels, stride));
|
|
165
|
-
if (e.regions_input_len(id) !== required)
|
|
166
|
-
throw new ScannerError('abi_shape', 'Input allocation mismatch');
|
|
167
|
-
new Uint8Array(e.memory.buffer, e.regions_input_ptr(id), required).set(image.data.subarray(0, required));
|
|
168
|
-
}
|
|
169
|
-
const coordinates = new Float64Array(e.memory.buffer, e.regions_quads_ptr(id), 512);
|
|
170
|
-
quads.forEach((q, i) => q.forEach((p, j) => { coordinates[i * 8 + j * 2] = p[0]; coordinates[i * 8 + j * 2 + 1] = p[1]; }));
|
|
171
|
-
status(e.regions_scan(id, quads.length, flags, perCandidate, perFrame, checks, pixels, results));
|
|
172
|
-
// Scan can grow memory. Never reuse the earlier input/coordinate views.
|
|
173
|
-
const output = new Uint8Array(e.memory.buffer, e.regions_output_ptr(id), e.regions_output_len(id)).slice();
|
|
174
|
-
const frame = parseFrame(new TextDecoder().decode(output), quads.length);
|
|
175
|
-
return { ...frame, candidateTimingsAvailable: false, elapsedMs: performance.now() - start };
|
|
176
|
-
}
|
|
177
|
-
/** Separate convenience; it never changes find-all work or suppresses frame evidence. */
|
|
178
|
-
best(result) {
|
|
179
|
-
return rankBarcodes(result.barcodes)[0];
|
|
180
|
-
}
|
|
181
|
-
dispose() {
|
|
182
|
-
if (this.#handle) {
|
|
183
|
-
const id = this.#handle;
|
|
184
|
-
this.#handle = 0;
|
|
185
|
-
status(this.#exports.regions_destroy(id));
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/** A bounded physical continuity claim; equal text alone never establishes identity. */
|
|
2
|
-
export function coveredByContinuousBars(image, point, barcode) {
|
|
3
|
-
const polygon = barcode.polygon;
|
|
4
|
-
const left = [(polygon[0][0] + polygon[3][0]) / 2, (polygon[0][1] + polygon[3][1]) / 2];
|
|
5
|
-
const right = [(polygon[1][0] + polygon[2][0]) / 2, (polygon[1][1] + polygon[2][1]) / 2];
|
|
6
|
-
const dx = right[0] - left[0], dy = right[1] - left[1], width = Math.hypot(dx, dy);
|
|
7
|
-
if (width < 45)
|
|
8
|
-
return false;
|
|
9
|
-
const nx = -dy / width, ny = dx / width;
|
|
10
|
-
const along = ((point[0] - left[0]) * dx + (point[1] - left[1]) * dy) / (width * width);
|
|
11
|
-
const offset = (point[0] - left[0]) * nx + (point[1] - left[1]) * ny;
|
|
12
|
-
if (along < 0 || along > 1 || Math.abs(offset) > Math.min(128, width * 0.5))
|
|
13
|
-
return false;
|
|
14
|
-
const { data, width: iw, height: ih } = image;
|
|
15
|
-
const gray = (x, y) => {
|
|
16
|
-
x = Math.max(0, Math.min(iw - 1, x));
|
|
17
|
-
y = Math.max(0, Math.min(ih - 1, y));
|
|
18
|
-
const x0 = Math.floor(x), y0 = Math.floor(y), x1 = Math.min(iw - 1, x0 + 1), y1 = Math.min(ih - 1, y0 + 1), fx = x - x0, fy = y - y0;
|
|
19
|
-
const sample = (a, b) => {
|
|
20
|
-
const k = (b * iw + a) * 4;
|
|
21
|
-
return (77 * data[k] + 150 * data[k + 1] + 29 * data[k + 2]) / 256;
|
|
22
|
-
};
|
|
23
|
-
return ((sample(x0, y0) * (1 - fx) + sample(x1, y0) * fx) * (1 - fy) +
|
|
24
|
-
(sample(x0, y1) * (1 - fx) + sample(x1, y1) * fx) * fy);
|
|
25
|
-
};
|
|
26
|
-
const count = Math.min(256, Math.max(95, Math.round(width * 1.5)));
|
|
27
|
-
const profile = (displacement) => {
|
|
28
|
-
const values = new Float64Array(count);
|
|
29
|
-
let sum = 0, energy = 0;
|
|
30
|
-
for (let i = 0; i < count; i++) {
|
|
31
|
-
const fraction = 0.02 + (0.96 * i) / (count - 1);
|
|
32
|
-
const v = gray(left[0] + dx * fraction + nx * displacement, left[1] + dy * fraction + ny * displacement);
|
|
33
|
-
values[i] = v;
|
|
34
|
-
sum += v;
|
|
35
|
-
energy += v * v;
|
|
36
|
-
}
|
|
37
|
-
return {
|
|
38
|
-
values,
|
|
39
|
-
mean: sum / count,
|
|
40
|
-
deviation: Math.sqrt(Math.max(0, energy / count - (sum / count) ** 2)),
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
const reference = profile(0);
|
|
44
|
-
if (reference.deviation < 5)
|
|
45
|
-
return false;
|
|
46
|
-
const agrees = (displacement) => {
|
|
47
|
-
const row = profile(displacement);
|
|
48
|
-
if (row.deviation < reference.deviation * 0.65 || row.deviation < 5)
|
|
49
|
-
return false;
|
|
50
|
-
let covariance = 0;
|
|
51
|
-
for (let i = 0; i < count; i++)
|
|
52
|
-
covariance += (reference.values[i] - reference.mean) * (row.values[i] - row.mean);
|
|
53
|
-
return covariance / (count * reference.deviation * row.deviation) > 0.8;
|
|
54
|
-
};
|
|
55
|
-
if (!agrees(offset) || !agrees(offset / 2))
|
|
56
|
-
return false;
|
|
57
|
-
const steps = Math.ceil(Math.abs(offset) * 2);
|
|
58
|
-
for (let i = 1; i < steps; i++)
|
|
59
|
-
if (!agrees((offset * i) / steps))
|
|
60
|
-
return false;
|
|
61
|
-
return true;
|
|
62
|
-
}
|