image-barcode-identifier 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/dist/zxing.js ADDED
@@ -0,0 +1,100 @@
1
+ import { prepareZXingModule, readBarcodes as zxingReadBarcodes } from 'zxing-wasm/reader';
2
+ export const BINARIZERS = [
3
+ { name: 'local', value: 'LocalAverage' },
4
+ { name: 'hist', value: 'GlobalHistogram' },
5
+ { name: 'fixed', value: 'FixedThreshold' },
6
+ ];
7
+ // zxing-wasm re-instantiates its module whenever the `overrides` object changes (by reference), and its
8
+ // default overrides download the wasm from a CDN. So the object is created once and reused for every call.
9
+ let userConfig = {};
10
+ let overrides;
11
+ let preparing;
12
+ export function configureZxing(config) {
13
+ userConfig = { url: config.zxingWasmUrl, binary: config.zxingWasmBinary };
14
+ overrides = undefined;
15
+ preparing = undefined;
16
+ }
17
+ function base64ToBytes(base64) {
18
+ const binary = atob(base64);
19
+ const bytes = new Uint8Array(binary.length);
20
+ for (let i = 0; i < binary.length; i++)
21
+ bytes[i] = binary.charCodeAt(i);
22
+ return bytes;
23
+ }
24
+ function toArrayBuffer(bytes) {
25
+ if (bytes instanceof Uint8Array)
26
+ return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
27
+ return bytes;
28
+ }
29
+ function ensureZxing() {
30
+ if (!preparing) {
31
+ preparing = (async () => {
32
+ if (userConfig.url) {
33
+ const url = userConfig.url;
34
+ overrides = { locateFile: (path, prefix) => (path.endsWith('.wasm') ? url : prefix + path) };
35
+ }
36
+ else {
37
+ // The wasm embedded in this package (scripts/embed-wasm.mjs): no asset configuration needed.
38
+ const binary = userConfig.binary ?? base64ToBytes((await import('./zxingWasm.generated.js')).zxingWasmBase64);
39
+ overrides = { wasmBinary: toArrayBuffer(binary) };
40
+ }
41
+ prepareZXingModule({ overrides });
42
+ })();
43
+ preparing.catch(() => {
44
+ preparing = undefined;
45
+ });
46
+ }
47
+ return preparing;
48
+ }
49
+ /** Compile the ZXing WASM now instead of on the first decode. */
50
+ export async function warmupZxing() {
51
+ await ensureZxing();
52
+ await prepareZXingModule({ overrides, fireImmediately: true });
53
+ }
54
+ function grayToImageData(g) {
55
+ const rgba = new Uint8ClampedArray(g.width * g.height * 4);
56
+ for (let i = 0, j = 0; i < g.data.length; i++, j += 4) {
57
+ const v = g.data[i];
58
+ rgba[j] = v;
59
+ rgba[j + 1] = v;
60
+ rgba[j + 2] = v;
61
+ rgba[j + 3] = 255;
62
+ }
63
+ return { data: rgba, width: g.width, height: g.height };
64
+ }
65
+ /** Decode with ZXing; `toOriginal` maps points of `img` into original image coordinates. */
66
+ export async function zxingDecode(img, strategy, toOriginal, binarizers = BINARIZERS, expired = () => false) {
67
+ await ensureZxing();
68
+ const imageData = grayToImageData(img);
69
+ for (const { name, value } of binarizers) {
70
+ if (expired())
71
+ return [];
72
+ let found;
73
+ try {
74
+ found = await zxingReadBarcodes(imageData, { binarizer: value });
75
+ }
76
+ catch {
77
+ continue;
78
+ }
79
+ const valid = found.filter((b) => b.isValid);
80
+ if (valid.length) {
81
+ return valid.map((b) => {
82
+ const p = b.position;
83
+ const corners = [
84
+ [p.topLeft.x, p.topLeft.y],
85
+ [p.topRight.x, p.topRight.y],
86
+ [p.bottomRight.x, p.bottomRight.y],
87
+ [p.bottomLeft.x, p.bottomLeft.y],
88
+ ];
89
+ return {
90
+ text: b.text,
91
+ format: b.format,
92
+ strategy: `${strategy}/${name}`,
93
+ position: toOriginal(corners).map(([x, y]) => [Math.round(x), Math.round(y)]),
94
+ };
95
+ });
96
+ }
97
+ }
98
+ return [];
99
+ }
100
+ //# sourceMappingURL=zxing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zxing.js","sourceRoot":"","sources":["../src/zxing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,IAAI,iBAAiB,EAAkB,MAAM,mBAAmB,CAAC;AAK1G,MAAM,CAAC,MAAM,UAAU,GAAyC;IAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;IACxC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC1C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE;CAC3C,CAAC;AAEF,wGAAwG;AACxG,2GAA2G;AAC3G,IAAI,UAAU,GAAwD,EAAE,CAAC;AACzE,IAAI,SAA8C,CAAC;AACnD,IAAI,SAAoC,CAAC;AAEzC,MAAM,UAAU,cAAc,CAAC,MAA2B;IACxD,UAAU,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;IAC1E,SAAS,GAAG,SAAS,CAAC;IACtB,SAAS,GAAG,SAAS,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAA+B;IACpD,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAgB,CAAC;IACjI,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,CAAC,KAAK,IAAI,EAAE;YACtB,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC3B,SAAS,GAAG,EAAE,UAAU,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;YAC/G,CAAC;iBAAM,CAAC;gBACN,6FAA6F;gBAC7F,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC9G,SAAS,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,CAAC;YACD,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;QACL,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;YACnB,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,WAAW,EAAE,CAAC;IACpB,MAAM,kBAAkB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,CAAO;IAC9B,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1D,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAS,EACT,QAAgB,EAChB,UAAoB,EACpB,aAAmD,UAAU,EAC7D,UAAyB,GAAG,EAAE,CAAC,KAAK;IAEpC,MAAM,WAAW,EAAE,CAAC;IACpB,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;QACzC,IAAI,OAAO,EAAE;YAAE,OAAO,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,iBAAiB,CAAC,SAAiC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;gBACrB,MAAM,OAAO,GAAY;oBACvB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;iBACjC,CAAC;gBACF,OAAO;oBACL,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE;oBAC/B,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAU,CAAC;iBACvF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const zxingWasmBase64: string;