barcode-detector 1.0.4 → 2.0.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/LICENSE +1 -1
- package/README.md +251 -63
- package/dist/cjs/BarcodeDetector.d.ts +35 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/pure.d.ts +1 -0
- package/dist/cjs/pure.js +3 -0
- package/dist/cjs/side-effects.d.ts +24 -0
- package/dist/cjs/side-effects.js +1 -0
- package/dist/cjs/utils.d.ts +9 -0
- package/dist/es/BarcodeDetector.d.ts +35 -0
- package/dist/es/index.d.ts +2 -0
- package/dist/es/index.js +6 -0
- package/dist/es/pure.d.ts +1 -0
- package/dist/es/pure.js +1930 -0
- package/dist/es/side-effects.d.ts +24 -0
- package/dist/es/side-effects.js +7 -0
- package/dist/es/utils.d.ts +9 -0
- package/dist/iife/index.js +3 -0
- package/dist/iife/pure.js +3 -0
- package/dist/iife/side-effects.js +3 -0
- package/package.json +89 -32
- package/dist/BarcodeDetector.d.ts +0 -2
- package/dist/BarcodeDetectorJsqr.d.ts +0 -10
- package/dist/BarcodeDetectorZXing.d.ts +0 -8
- package/dist/SleepyWorker.d.ts +0 -7
- package/dist/barcode-detector.js +0 -2
- package/dist/barcode-detector.js.map +0 -1
- package/dist/barcode-detector.mjs +0 -2
- package/dist/barcode-detector.mjs.map +0 -1
- package/dist/barcode-detector.umd.js +0 -2
- package/dist/barcode-detector.umd.js.map +0 -1
- package/dist/basic-types.d.ts +0 -14
- package/dist/image-data.d.ts +0 -1
- package/example_codes/aztec.gif +0 -0
- package/example_codes/codabar.png +0 -0
- package/example_codes/code_128.gif +0 -0
- package/example_codes/code_39.png +0 -0
- package/example_codes/code_93.png +0 -0
- package/example_codes/data_matrix.png +0 -0
- package/example_codes/ean_13.png +0 -0
- package/example_codes/ean_8.png +0 -0
- package/example_codes/ift.png +0 -0
- package/example_codes/multi_qr_code.jpeg +0 -0
- package/example_codes/pdf417.png +0 -0
- package/example_codes/qr_code.png +0 -0
- package/example_codes/upc_a.png +0 -0
- package/example_codes/upc_e.png +0 -0
- package/example_codes/upca.gif +0 -0
- package/example_codes/upca.jpeg +0 -0
- package/src/BarcodeDetector.ts +0 -3
- package/src/BarcodeDetectorJsqr.ts +0 -73
- package/src/BarcodeDetectorZXing.ts +0 -114
- package/src/SleepyWorker.ts +0 -30
- package/src/basic-types.ts +0 -33
- package/src/image-data.ts +0 -130
- package/src/worker/build.sh +0 -27
- package/src/worker/inline-worker.js +0 -3
- package/src/worker/tsconfig.json +0 -6
- package/src/worker/worker.ts +0 -57
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,77 +1,265 @@
|
|
|
1
|
-
#
|
|
2
|
-
Spec compliant polyfill of the [Barcode Detection API](https://wicg.github.io/shape-detection-api/#barcode-detection-api).
|
|
3
|
-
It can be used for barcode/QR-code recognition in images from various kinds of
|
|
4
|
-
sources including `<canvas>`, `<img>`, `<image>` (inside SVGs), `<video>`, `File`, `Blob`, `ImageData`, `ImageBitmap`, `OffscreenCanvas`.
|
|
1
|
+
# barcode-detector
|
|
5
2
|
|
|
6
|
-
[
|
|
3
|
+
[](https://www.npmjs.com/package/barcode-detector/v/latest) [](https://www.npmjs.com/package/barcode-detector/v/latest) [](https://cdn.jsdelivr.net/npm/barcode-detector@latest/)
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
* spec compliance
|
|
10
|
-
* support as many barcode formats as possible
|
|
11
|
-
* detect multiple codes in one image
|
|
12
|
-
* provide position/coordinate information of detected codes
|
|
13
|
-
* sufficient performance to process live video streams
|
|
5
|
+
A [Barcode Detection API](https://wicg.github.io/shape-detection-api/#barcode-detection-api) polyfill that uses [ZXing webassembly](https://github.com/Sec-ant/zxing-wasm) under the hood.
|
|
14
6
|
|
|
15
|
-
|
|
7
|
+
> This package was originally published as [`@sec-ant/barcode-detector`](https://www.npmjs.com/package/@sec-ant/barcode-detector) on the npm registry. With appreciation for the generous offer from [@gruhn](https://github.com/gruhn), the package is now released under the name `barcode-detector` starting from version 2.0.0. The original name `@sec-ant/barcode-detector` will continue to be used for versions prior to 2.0.0, and will be retained solely for maintenance purposes. Eventually, it will be deprecated at an appropriate juncture.
|
|
16
8
|
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
To install, run the following command:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm i barcode-detector
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Recommended Usage with Node + ESM
|
|
18
|
+
|
|
19
|
+
This package can be imported in three different ways:
|
|
20
|
+
|
|
21
|
+
### Pure Module
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { BarcodeDetector } from "barcode-detector/pure";
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
To avoid potential namespace collisions, you can also rename the export:
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
import { BarcodeDetector as BarcodeDetectorPolyfill } from "barcode-detector/pure";
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
This approach is beneficial when you want to use a package to detect barcodes without polluting `globalThis`, or when your runtime already provides an implementation of the Barcode Detection API, but you still want this package to function.
|
|
34
|
+
|
|
35
|
+
### Side Effects
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import "barcode-detector/side-effects";
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This approach is beneficial when you need a drop-in polyfill. If there's already an implementation of Barcode Detection API on `globalThis`, this won't take effect (type declarations will, as we cannot optionally declare types). In such cases, please use the [pure module](#pure-module) instead.
|
|
42
|
+
|
|
43
|
+
### Both
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
import { BarcodeDetector } from "barcode-detector";
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This approach combines the [pure module](#pure-module) and [side effects](#side-effects).
|
|
50
|
+
|
|
51
|
+
## Recommended Usage in Modern Browsers
|
|
52
|
+
|
|
53
|
+
For [modern browsers that support ES modules](https://caniuse.com/es6-module), this package can be imported via the `<script type="module">` tags:
|
|
54
|
+
|
|
55
|
+
1. Include side effects:
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<!-- register -->
|
|
59
|
+
<script
|
|
60
|
+
type="module"
|
|
61
|
+
src="https://cdn.jsdelivr.net/npm/barcode-detector@2/dist/es/side-effects.min.js"
|
|
62
|
+
></script>
|
|
63
|
+
|
|
64
|
+
<!-- use -->
|
|
65
|
+
<script type="module">
|
|
66
|
+
const barcodeDetector = new BarcodeDetector();
|
|
67
|
+
</script>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
2. Script scoped access:
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<script type="module">
|
|
74
|
+
import { BarcodeDetector } from "https://cdn.jsdelivr.net/npm/barcode-detector@2/dist/es/pure.min.js";
|
|
75
|
+
const barcodeDetector = new BarcodeDetector();
|
|
76
|
+
</script>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
3. With import maps:
|
|
80
|
+
|
|
81
|
+
```html
|
|
82
|
+
<!-- import map -->
|
|
83
|
+
<script type="importmap">
|
|
84
|
+
{
|
|
85
|
+
"imports": {
|
|
86
|
+
"barcode-detector/pure": "https://cdn.jsdelivr.net/npm/barcode-detector@2/dist/es/pure.min.js"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
</script>
|
|
90
|
+
|
|
91
|
+
<!-- script scoped access -->
|
|
92
|
+
<script type="module">
|
|
93
|
+
import { BarcodeDetector } from "barcode-detector/pure";
|
|
94
|
+
const barcodeDetector = new BarcodeDetector();
|
|
95
|
+
</script>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Usage with Legacy Compatibility
|
|
99
|
+
|
|
100
|
+
Starting from v1.2, this package supports IIFE and CJS build outputs for use cases that require legacy compatibility.
|
|
101
|
+
|
|
102
|
+
### IIFE
|
|
103
|
+
|
|
104
|
+
For legacy browsers that lack support for module type `<script>` tags, or for userscripts, IIFE is the preferred choice. Upon executing the IIFE script, a variable named `BarcodeDetectionAPI` will be registered in the global.
|
|
105
|
+
|
|
106
|
+
```html
|
|
107
|
+
<!--
|
|
108
|
+
IIFE pure.js registers:
|
|
109
|
+
window.BarcodeDetectionAPI.BarcodeDetector
|
|
110
|
+
window.BarcodeDetectionAPI.setZXingModuleOverrides
|
|
111
|
+
-->
|
|
112
|
+
<script src="https://cdn.jsdelivr.net/npm/barcode-detector@2/dist/iife/pure.min.js"></script>
|
|
113
|
+
|
|
114
|
+
<!--
|
|
115
|
+
IIFE side-effects.js registers:
|
|
116
|
+
window.BarcodeDetector
|
|
117
|
+
window.BarcodeDetectionAPI.setZXingModuleOverrides
|
|
118
|
+
-->
|
|
119
|
+
<script src="https://cdn.jsdelivr.net/npm/barcode-detector@2/dist/iife/side-effects.min.js"></script>
|
|
120
|
+
|
|
121
|
+
<!--
|
|
122
|
+
IIFE index.js registers:
|
|
123
|
+
window.BarcodeDetector
|
|
124
|
+
window.BarcodeDetectionAPI.BarcodeDetector
|
|
125
|
+
window.BarcodeDetectionAPI.setZXingModuleOverrides
|
|
126
|
+
-->
|
|
127
|
+
<script src="https://cdn.jsdelivr.net/npm/barcode-detector@2/dist/iife/index.min.js"></script>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### CJS
|
|
131
|
+
|
|
132
|
+
This package can also be consumed as a commonjs package:
|
|
133
|
+
|
|
134
|
+
1. Vanilla Javascript:
|
|
135
|
+
|
|
136
|
+
```js
|
|
137
|
+
// src/index.js
|
|
138
|
+
const { BarcodeDetector } = require("barcode-detector/pure");
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
2. With Typescript:
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
// src/index.ts
|
|
145
|
+
import { BarcodeDetector } from "barcode-detector/pure";
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`tsconfig.json`:
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"compilerOptions": {
|
|
153
|
+
"module": "CommonJS",
|
|
154
|
+
"moduleResolution": "Node",
|
|
155
|
+
"skipLibCheck": true
|
|
156
|
+
},
|
|
157
|
+
"include": ["src"]
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## `setZXingModuleOverrides`
|
|
162
|
+
|
|
163
|
+
In addition to `BarcodeDetector`, this package exports another function called `setZXingModuleOverrides`.
|
|
164
|
+
|
|
165
|
+
This package employs [Sec-ant/zxing-wasm](https://github.com/Sec-ant/zxing-wasm) to enable the core barcode reading functionality. As a result, a `.wasm` binary file is fetched at runtime. The default fetch path for this binary file is:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
https://cdn.jsdelivr.net/npm/@sec-ant/zxing-wasm@<version>/dist/reader/zxing_reader.wasm
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
The `setZXingModuleOverrides` function allows you to govern where the `.wasm` binary is served from, thereby enabling offline use of the package, use within a local network, or within a site having strict [CSP](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#unsafe_webassembly_execution) rules.
|
|
172
|
+
|
|
173
|
+
For instance, should you want to inline this `.wasm` file in your build output for offline usage, with the assistance of build tools, you could try:
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
// src/index.ts
|
|
177
|
+
import wasmFile from "../node_modules/@sec-ant/zxing-wasm/dist/reader/zxing_reader.wasm?url";
|
|
178
|
+
|
|
179
|
+
import {
|
|
180
|
+
setZXingModuleOverrides,
|
|
181
|
+
BarcodeDetector,
|
|
182
|
+
} from "barcode-detector/pure";
|
|
183
|
+
|
|
184
|
+
setZXingModuleOverrides({
|
|
185
|
+
locateFile: (path, prefix) => {
|
|
186
|
+
if (path.endsWith(".wasm")) {
|
|
187
|
+
return wasmFile;
|
|
188
|
+
}
|
|
189
|
+
return prefix + path;
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
const barcodeDetector = new BarcodeDetector();
|
|
194
|
+
|
|
195
|
+
// detect barcodes
|
|
196
|
+
// ...
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Alternatively, the `.wasm` file could be copied to your dist folder to be served from your local server, without incorporating it into the output as an extensive base64 data URL.
|
|
200
|
+
|
|
201
|
+
It's noteworthy that you'll always want to choose the correct version of the `.wasm` file, so the APIs exported by it are exactly what the js code expects.
|
|
202
|
+
|
|
203
|
+
For more information on how to use this function, you can check [the notes here](https://github.com/Sec-ant/zxing-wasm#notes) and [discussions here](https://github.com/gruhn/vue-qrcode-reader/issues/354).
|
|
204
|
+
|
|
205
|
+
This function is exported from all the subpaths, including the [side effects](#side-effects).
|
|
206
|
+
|
|
207
|
+
## API
|
|
208
|
+
|
|
209
|
+
Please check the [spec](https://wicg.github.io/shape-detection-api/#barcode-detection-api), [MDN doc](https://developer.mozilla.org/docs/Web/API/Barcode_Detection_API) and [Chromium implementation](https://github.com/chromium/chromium/tree/main/third_party/blink/renderer/modules/shapedetection) for more information.
|
|
210
|
+
|
|
211
|
+
## Lifecycle Events
|
|
212
|
+
|
|
213
|
+
The `BarcodeDetector` provided by this package also extends class `EventTarget` and provides 2 lifecycle events: `load` and `error`. You can use `addEventListener` and `removeEventListener` to register and remove callback hooks on these events.
|
|
214
|
+
|
|
215
|
+
### `load` Event
|
|
216
|
+
|
|
217
|
+
The `load` event, which is a `CustomEvent`, will be dispatched on the successful instanciation of ZXing wasm module. For advanced usage, the instanciated module is passed as the `detail` parameter.
|
|
218
|
+
|
|
219
|
+
```ts
|
|
220
|
+
import { BarcodeDetector } from "barcode-detector/pure";
|
|
221
|
+
|
|
222
|
+
const barcodeDetector = new BarcodeDetector();
|
|
223
|
+
|
|
224
|
+
barcodeDetector.addEventListener("load", ({ detail }) => {
|
|
225
|
+
console.log(detail); // zxing wasm module
|
|
226
|
+
});
|
|
19
227
|
```
|
|
20
|
-
```js
|
|
21
|
-
import BarcodeDetector from "barcode-detector"
|
|
22
228
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
229
|
+
### `error` Event
|
|
230
|
+
|
|
231
|
+
The `error` event, which is a `CustomEvent`, will be dispatched if the instanciation of ZXing wasm module is failed. An error is passed as the `detail` parameter.
|
|
232
|
+
|
|
233
|
+
```ts
|
|
234
|
+
import { BarcodeDetector } from "barcode-detector/pure";
|
|
235
|
+
|
|
236
|
+
const barcodeDetector = new BarcodeDetector();
|
|
237
|
+
|
|
238
|
+
barcodeDetector.addEventListener("error", ({ detail }) => {
|
|
239
|
+
console.log(detail); // an error
|
|
240
|
+
});
|
|
27
241
|
```
|
|
28
242
|
|
|
29
|
-
##
|
|
243
|
+
## Example
|
|
30
244
|
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
const barcodeDetector = new BarcodeDetector({ formats: ["qr_code"] })
|
|
245
|
+
```ts
|
|
246
|
+
import { BarcodeDetector } from "barcode-detector/pure";
|
|
34
247
|
|
|
35
|
-
|
|
36
|
-
|
|
248
|
+
const barcodeDetector: BarcodeDetector = new BarcodeDetector({
|
|
249
|
+
formats: ["qr_code"],
|
|
250
|
+
});
|
|
37
251
|
|
|
38
|
-
|
|
39
|
-
|
|
252
|
+
const imageFile = await fetch(
|
|
253
|
+
"https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Hello%20world!",
|
|
254
|
+
).then((resp) => resp.blob());
|
|
40
255
|
|
|
41
|
-
|
|
42
|
-
const { rawValue } = barcode1
|
|
256
|
+
barcodeDetector.detect(imageFile).then(console.log);
|
|
43
257
|
```
|
|
44
258
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
- :x: `code_39`
|
|
53
|
-
- :x: `code_93`
|
|
54
|
-
- :x: `codabar`
|
|
55
|
-
- :x: `data_matrix`
|
|
56
|
-
- :x: `ean_13`
|
|
57
|
-
- :x: `ean_8`
|
|
58
|
-
- :x: `itf`
|
|
59
|
-
- :x: `pdf417`
|
|
60
|
-
- :heavy_check_mark: `qr_code`
|
|
61
|
-
- :x: `upc_a`
|
|
62
|
-
- :x: `upc_e`
|
|
63
|
-
|
|
64
|
-
`src/BarcodeDetectorZXing.ts` (not exposed at the moment. See [#1](https://github.com/gruhn/barcode-detector-polyfill/issues/1)):
|
|
65
|
-
- :heavy_check_mark: `aztec`
|
|
66
|
-
- :heavy_check_mark: `code_128`
|
|
67
|
-
- :heavy_check_mark: `code_39`
|
|
68
|
-
- :x: `code_93`
|
|
69
|
-
- :x: `codabar`
|
|
70
|
-
- :heavy_check_mark: `data_matrix`
|
|
71
|
-
- :heavy_check_mark: `ean_13`
|
|
72
|
-
- :heavy_check_mark: `ean_8`
|
|
73
|
-
- :heavy_check_mark: `itf`
|
|
74
|
-
- :heavy_check_mark: `pdf417`
|
|
75
|
-
- :heavy_check_mark: `qr_code`
|
|
76
|
-
- :x: `upc_a`
|
|
77
|
-
- :x: `upc_e`
|
|
259
|
+
## License
|
|
260
|
+
|
|
261
|
+
The source code in this repository, as well as the build output, except for the parts listed below, is licensed under the [MIT license](./LICENSE).
|
|
262
|
+
|
|
263
|
+
Test samples and resources are collected from [zxing-cpp/zxing-cpp](https://github.com/zxing-cpp/zxing-cpp), which is licensed under the [Apache-2.0 license](https://raw.githubusercontent.com/zxing-cpp/zxing-cpp/master/LICENSE), and [web-platform-tests/wpt](https://github.com/web-platform-tests/wpt), which is licensed under the [3-Clause BSD license](https://raw.githubusercontent.com/web-platform-tests/wpt/master/LICENSE.md).
|
|
264
|
+
|
|
265
|
+
This package has an indirect dependency on [Sec-ant/zxing-wasm-build](https://github.com/Sec-ant/zxing-wasm-build), which is licensed under the [Apache-2.0 license](https://raw.githubusercontent.com/Sec-ant/zxing-wasm-build/main/LICENSE).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="dom-webcodecs" />
|
|
2
|
+
import { ZXingModule } from "@sec-ant/zxing-wasm/reader";
|
|
3
|
+
import { BARCODE_DETECTOR_FORMATS } from "./utils.js";
|
|
4
|
+
export type BarcodeFormat = (typeof BARCODE_DETECTOR_FORMATS)[number];
|
|
5
|
+
export interface BarcodeDetectorOptions {
|
|
6
|
+
formats?: BarcodeFormat[];
|
|
7
|
+
}
|
|
8
|
+
export interface Point2D {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
}
|
|
12
|
+
export interface DetectedBarcode {
|
|
13
|
+
boundingBox: DOMRectReadOnly;
|
|
14
|
+
rawValue: string;
|
|
15
|
+
format: BarcodeFormat;
|
|
16
|
+
cornerPoints: [Point2D, Point2D, Point2D, Point2D];
|
|
17
|
+
}
|
|
18
|
+
interface CustomEventMap {
|
|
19
|
+
load: CustomEvent<ZXingModule<"reader">>;
|
|
20
|
+
error: CustomEvent<unknown>;
|
|
21
|
+
}
|
|
22
|
+
type ChangeEventListener = <K extends keyof CustomEventMap>(type: K, callback: ((evt: CustomEventMap[K]) => void) | {
|
|
23
|
+
handleEvent(evt: CustomEventMap[K]): void;
|
|
24
|
+
} | null, options?: boolean | AddEventListenerOptions | undefined) => void;
|
|
25
|
+
export interface BarcodeDetector {
|
|
26
|
+
addEventListener: ChangeEventListener;
|
|
27
|
+
removeEventListener: ChangeEventListener;
|
|
28
|
+
}
|
|
29
|
+
export declare class BarcodeDetector extends EventTarget {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(barcodeDectorOptions?: BarcodeDetectorOptions);
|
|
32
|
+
static getSupportedFormats(): Promise<readonly BarcodeFormat[]>;
|
|
33
|
+
detect(image: ImageBitmapSourceWebCodecs): Promise<DetectedBarcode[]>;
|
|
34
|
+
}
|
|
35
|
+
export { setZXingModuleOverrides } from "@sec-ant/zxing-wasm";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./side-effects.js");const e=require("./pure.js");exports.BarcodeDetector=e.BarcodeDetector;exports.setZXingModuleOverrides=e.setZXingModuleOverrides;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./BarcodeDetector.js";
|
package/dist/cjs/pure.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";var ke=(c,p,i)=>{if(!p.has(c))throw TypeError("Cannot "+i)};var Ue=(c,p,i)=>(ke(c,p,"read from private field"),i?i.call(c):p.get(c)),Be=(c,p,i)=>{if(p.has(c))throw TypeError("Cannot add the same private member more than once");p instanceof WeakSet?p.add(c):p.set(c,i)},Ve=(c,p,i,g)=>(ke(c,p,"write to private field"),g?g.call(c,i):p.set(c,i),i);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Le=["aztec","code_128","code_39","code_93","codabar","data_matrix","ean_13","ean_8","itf","pdf417","qr_code","upc_a","upc_e","unknown"];function Ia(c){if(Xe(c))return{width:c.naturalWidth,height:c.naturalHeight};if(qe(c))return{width:c.width.baseVal.value,height:c.height.baseVal.value};if(Ze(c))return{width:c.videoWidth,height:c.videoHeight};if(Je(c))return{width:c.width,height:c.height};if(tr(c))return{width:c.displayWidth,height:c.displayHeight};if(Qe(c))return{width:c.width,height:c.height};if(Ke(c))return{width:c.width,height:c.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Xe(c){try{return c instanceof HTMLImageElement}catch{return!1}}function qe(c){try{return c instanceof SVGImageElement}catch{return!1}}function Ze(c){try{return c instanceof HTMLVideoElement}catch{return!1}}function Qe(c){try{return c instanceof HTMLCanvasElement}catch{return!1}}function Je(c){try{return c instanceof ImageBitmap}catch{return!1}}function Ke(c){try{return c instanceof OffscreenCanvas}catch{return!1}}function tr(c){try{return c instanceof VideoFrame}catch{return!1}}function Wa(c){try{return c instanceof Blob}catch{return!1}}function Ha(c){try{return c instanceof ImageData}catch{return!1}}function ka(c,p){try{const i=new OffscreenCanvas(c,p);if(i.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return i;throw void 0}catch{const i=document.createElement("canvas");return i.width=c,i.height=p,i}}async function er(c){if(Xe(c)&&!await La(c))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(qe(c)&&!await za(c))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(tr(c)&&Ya(c))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(Ze(c)&&(c.readyState===0||c.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Je(c)&&Ga(c))throw new DOMException("The image source is detached.","InvalidStateError");const{width:p,height:i}=Ia(c);if(p===0||i===0)return null;const w=ka(p,i).getContext("2d");w.drawImage(c,0,0);try{return w.getImageData(0,0,p,i)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Ua(c){let p;try{if(createImageBitmap)p=await createImageBitmap(c);else{p=new Image;let g="";try{g=URL.createObjectURL(c),p.src=g,await p.decode()}finally{URL.revokeObjectURL(g)}}}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await er(p)}function Ba(c){const{width:p,height:i}=c;if(p===0||i===0)return null;const g=c.getContext("2d");try{return g.getImageData(0,0,p,i)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Va(c){if(Wa(c))return await Ua(c);if(Ha(c)){if(Na(c))throw new DOMException("The image data has been detached.","InvalidStateError");return c}return Qe(c)||Ke(c)?Ba(c):await er(c)}async function La(c){try{return await c.decode(),!0}catch{return!1}}async function za(c){var p;try{return await((p=c.decode)==null?void 0:p.call(c)),!0}catch{return!1}}function Ya(c){return c.format===null}function Na(c){return c.data.buffer.byteLength===0}function Ga(c){return c.width===0&&c.height===0}function ze(c,p){return c instanceof DOMException?new DOMException(`${p}: ${c.message}`,c.name):c instanceof Error?new c.constructor(`${p}: ${c.message}`):new Error(`${p}: ${c}`)}const Ye=c=>{let p;const i=new Set,g=(M,Y)=>{const U=typeof M=="function"?M(p):M;if(!Object.is(U,p)){const j=p;p=Y??typeof U!="object"?U:Object.assign({},p,U),i.forEach(N=>N(p,j))}},w=()=>p,E={setState:g,getState:w,subscribe:M=>(i.add(M),()=>i.delete(M)),destroy:()=>{i.clear()}};return p=c(g,w,E),E},Xa=c=>c?Ye(c):Ye,qa={locateFile:(c,p)=>{var i;const g=(i=c.match(/_(.+?)\.wasm$/))==null?void 0:i[1];return g?`https://cdn.jsdelivr.net/npm/@sec-ant/zxing-wasm@2.1.4/dist/${g}/${c}`:p+c}},dt=Xa()(()=>({zxingModuleWeakMap:new WeakMap,zxingModuleOverrides:qa}));function Za(c){dt.setState({zxingModuleOverrides:c})}function rr(c,p=dt.getState().zxingModuleOverrides){const{zxingModuleWeakMap:i}=dt.getState(),g=i.get(c);if(g&&Object.is(p,dt.getState().zxingModuleOverrides))return g;{dt.setState({zxingModuleOverrides:p});const w=c(p);return i.set(c,w),w}}const Ne=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","UPC-A","UPC-E"],nt={tryHarder:!0,formats:[],maxSymbols:255};async function Qa(c,{tryHarder:p=nt.tryHarder,formats:i=nt.formats,maxSymbols:g=nt.maxSymbols}=nt,w){const E=await rr(w,dt.getState().zxingModuleOverrides),{data:M,width:Y,height:U,data:{byteLength:j}}=c,N=E._malloc(j);E.HEAP8.set(M,N);const X=E.readBarcodesFromPixmap(N,Y,U,p,Ja(i),g);E._free(N);const V=[];for(let B=0;B<X.size();++B){const q=X.get(B);V.push({...q,format:Ka(q.format)})}return V}function Ja(c){return c.join("|")}function Ka(c){const p=Ge(c);let i=0,g=Ne.length-1;for(;i<=g;){const w=Math.floor((i+g)/2),E=Ne[w],M=Ge(E);if(M===p)return E;M<p?i=w+1:g=w-1}return"None"}function Ge(c){return c.toLowerCase().replace(/_-\[\]/g,"")}var nr=(()=>{var c=typeof document>"u"?require("url").pathToFileURL(__filename).href:document.currentScript&&document.currentScript.src||new URL("pure.js",document.baseURI).href;return function(p={}){var i=p,g,w;i.ready=new Promise((t,e)=>{g=t,w=e});var E=Object.assign({},i),M="./this.program",Y=typeof window=="object",U=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var j="";function N(t){return i.locateFile?i.locateFile(t,j):j+t}var X;(Y||U)&&(U?j=self.location.href:typeof document<"u"&&document.currentScript&&(j=document.currentScript.src),c&&(j=c),j.indexOf("blob:")!==0?j=j.substr(0,j.replace(/[?#].*/,"").lastIndexOf("/")+1):j="",U&&(X=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),i.print||console.log.bind(console);var V=i.printErr||console.error.bind(console);Object.assign(i,E),E=null,i.arguments&&i.arguments,i.thisProgram&&(M=i.thisProgram),i.quit&&i.quit;var B;i.wasmBinary&&(B=i.wasmBinary),i.noExitRuntime,typeof WebAssembly!="object"&&_t("no native wasm support detected");var q,ft=!1,L,W,ht,Ct,H,A,qt,Zt;function Qt(){var t=q.buffer;i.HEAP8=L=new Int8Array(t),i.HEAP16=ht=new Int16Array(t),i.HEAPU8=W=new Uint8Array(t),i.HEAPU16=Ct=new Uint16Array(t),i.HEAP32=H=new Int32Array(t),i.HEAPU32=A=new Uint32Array(t),i.HEAPF32=qt=new Float32Array(t),i.HEAPF64=Zt=new Float64Array(t)}var Jt,Kt=[],te=[],ee=[];function or(){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)ur(i.preRun.shift());It(Kt)}function ir(){It(te)}function sr(){if(i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;)lr(i.postRun.shift());It(ee)}function ur(t){Kt.unshift(t)}function cr(t){te.unshift(t)}function lr(t){ee.unshift(t)}var at=0,pt=null;function dr(t){at++,i.monitorRunDependencies&&i.monitorRunDependencies(at)}function fr(t){if(at--,i.monitorRunDependencies&&i.monitorRunDependencies(at),at==0&&pt){var e=pt;pt=null,e()}}function _t(t){i.onAbort&&i.onAbort(t),t="Aborted("+t+")",V(t),ft=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw w(e),e}var hr="data:application/octet-stream;base64,";function re(t){return t.startsWith(hr)}var ot;i.locateFile?(ot="zxing_reader.wasm",re(ot)||(ot=N(ot))):ot=new URL("/reader/zxing_reader.wasm",self.location).href;function ne(t){if(t==ot&&B)return new Uint8Array(B);if(X)return X(t);throw"both async and sync fetching of the wasm failed"}function pr(t){return!B&&(Y||U)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>ne(t)):Promise.resolve().then(()=>ne(t))}function ae(t,e,r){return pr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{V(`failed to asynchronously prepare wasm: ${n}`),_t(n)})}function yr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!re(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var o=WebAssembly.instantiateStreaming(a,r);return o.then(n,function(s){return V(`wasm streaming compile failed: ${s}`),V("falling back to ArrayBuffer instantiation"),ae(e,r,n)})}):ae(e,r,n)}function mr(){var t={a:na};function e(n,a){var o=n.exports;return S=o,q=S.qa,Qt(),Jt=S.ua,cr(S.ra),fr(),o}dr();function r(n){e(n.instance)}if(i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(n){V(`Module.instantiateWasm callback failed with error: ${n}`),w(n)}return yr(B,ot,t,r).catch(w),{}}var It=t=>{for(;t.length>0;)t.shift()(i)},Tt=[],Pt=0,vr=t=>{var e=new Et(t);return e.get_caught()||(e.set_caught(!0),Pt--),e.set_rethrown(!1),Tt.push(e),Me(e.excPtr),e.get_exception_ptr()},Z=0,gr=()=>{$(0,0);var t=Tt.pop();Oe(t.excPtr),Z=0};function Et(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){A[this.ptr+4>>2]=e},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(e){A[this.ptr+8>>2]=e},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,L[this.ptr+12>>0]=e},this.get_caught=function(){return L[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,L[this.ptr+13>>0]=e},this.get_rethrown=function(){return L[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){A[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=Re(this.get_type());if(e)return A[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var wr=t=>{throw Z||(Z=t),Z},Wt=t=>{var e=Z;if(!e)return $t(0),0;var r=new Et(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return $t(0),e;for(var a in t){var o=t[a];if(o===0||o===n)break;var s=r.ptr+16;if(je(o,n,s))return $t(o),e}return $t(n),e},$r=()=>Wt([]),br=t=>Wt([t]),Cr=(t,e)=>Wt([t,e]),_r=t=>{var e=new Et(t).get_exception_ptr();return e},Tr=()=>{var t=Tt.pop();t||_t("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(Tt.push(t),t.set_rethrown(!0),t.set_caught(!1),Pt++),Z=e,Z},Pr=(t,e,r)=>{var n=new Et(t);throw n.init(e,r),Z=t,Pt++,Z},Er=()=>Pt,Dt={},oe=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Ht(t){return this.fromWireType(H[t>>2])}var ct={},it={},xt={},ie=void 0,At=t=>{throw new ie(t)},st=(t,e,r)=>{t.forEach(function(u){xt[u]=e});function n(u){var l=r(u);l.length!==t.length&&At("Mismatched type converter count");for(var d=0;d<t.length;++d)Q(t[d],l[d])}var a=new Array(e.length),o=[],s=0;e.forEach((u,l)=>{it.hasOwnProperty(u)?a[l]=it[u]:(o.push(u),ct.hasOwnProperty(u)||(ct[u]=[]),ct[u].push(()=>{a[l]=it[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)},Dr=t=>{var e=Dt[t];delete Dt[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,o=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));st([t],o,s=>{var u={};return a.forEach((l,d)=>{var h=l.fieldName,m=s[d],v=l.getter,_=l.getterContext,D=s[d+a.length],R=l.setter,x=l.setterContext;u[h]={read:I=>m.fromWireType(v(_,I)),write:(I,f)=>{var y=[];R(x,I,D.toWireType(y,f)),oe(y)}}}),[{name:e.name,fromWireType:l=>{var d={};for(var h in u)d[h]=u[h].read(l);return n(l),d},toWireType:(l,d)=>{for(var h in u)if(!(h in d))throw new TypeError(`Missing field: "${h}"`);var m=r();for(h in u)u[h].write(m,d[h]);return l!==null&&l.push(n,m),m},argPackAdvance:J,readValueFromPointer:Ht,destructorFunction:n}]})},xr=(t,e,r,n,a)=>{},Ar=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);se=t},se=void 0,k=t=>{for(var e="",r=t;W[r];)e+=se[W[r++]];return e},lt=void 0,T=t=>{throw new lt(t)};function Sr(t,e,r={}){var n=e.name;if(t||T(`type "${n}" must have a positive integer typeid pointer`),it.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;T(`Cannot register type '${n}' twice`)}if(it[t]=e,delete xt[t],ct.hasOwnProperty(t)){var a=ct[t];delete ct[t],a.forEach(o=>o())}}function Q(t,e,r={}){if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Sr(t,e,r)}var J=8,Fr=(t,e,r,n)=>{e=k(e),Q(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?r:n},argPackAdvance:J,readValueFromPointer:function(a){return this.fromWireType(W[a])},destructorFunction:null})};function Or(t){if(!(this instanceof et)||!(t instanceof et))return!1;for(var e=this.$$.ptrType.registeredClass,r=this.$$.ptr,n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a}var Mr=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),kt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}T(e(t)+" instance already deleted")},Ut=!1,ue=t=>{},jr=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},ce=t=>{t.count.value-=1;var e=t.count.value===0;e&&jr(t)},le=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=le(t,e,r.baseClass);return n===null?null:r.downcast(n)},de={},Rr=()=>Object.keys(vt).length,Ir=()=>{var t=[];for(var e in vt)vt.hasOwnProperty(e)&&t.push(vt[e]);return t},yt=[],Bt=()=>{for(;yt.length;){var t=yt.pop();t.$$.deleteScheduled=!1,t.delete()}},mt=void 0,Wr=t=>{mt=t,yt.length&&mt&&mt(Bt)},Hr=()=>{i.getInheritedInstanceCount=Rr,i.getLiveInheritedInstances=Ir,i.flushPendingDeletes=Bt,i.setDelayFunction=Wr},vt={},kr=(t,e)=>{for(e===void 0&&T("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},Ur=(t,e)=>(e=kr(t,e),vt[e]),St=(t,e)=>{(!e.ptrType||!e.ptr)&&At("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&At("Both smartPtrType and smartPtr must be specified"),e.count={value:1},gt(Object.create(t,{$$:{value:e}}))};function Br(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=Ur(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o=this.registeredClass.getActualType(e),s=de[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=le(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:t}):St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var gt=t=>typeof FinalizationRegistry>"u"?(gt=e=>e,t):(Ut=new FinalizationRegistry(e=>{ce(e.$$)}),gt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Ut.register(e,a,e)}return e},ue=e=>Ut.unregister(e),gt(t));function Vr(){if(this.$$.ptr||kt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=gt(Object.create(Object.getPrototypeOf(this),{$$:{value:Mr(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Lr(){this.$$.ptr||kt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&T("Object already scheduled for deletion"),ue(this),ce(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function zr(){return!this.$$.ptr}function Yr(){return this.$$.ptr||kt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&T("Object already scheduled for deletion"),yt.push(this),yt.length===1&&mt&&mt(Bt),this.$$.deleteScheduled=!0,this}var Nr=()=>{et.prototype.isAliasOf=Or,et.prototype.clone=Vr,et.prototype.delete=Lr,et.prototype.isDeleted=zr,et.prototype.deleteLater=Yr};function et(){}var Gr=48,Xr=57,fe=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Gr&&e<=Xr?`_${t}`:t};function he(t,e){return t=fe(t),{[t]:function(){return e.apply(this,arguments)}}[t]}var pe=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||T(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},ye=(t,e,r)=>{i.hasOwnProperty(t)?((r===void 0||i[t].overloadTable!==void 0&&i[t].overloadTable[r]!==void 0)&&T(`Cannot register public name '${t}' twice`),pe(i,t,t),i.hasOwnProperty(r)&&T(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),i[t].overloadTable[r]=e):(i[t]=e,r!==void 0&&(i[t].numArguments=r))};function qr(t,e,r,n,a,o,s,u){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Vt=(t,e,r)=>{for(;e!==r;)e.upcast||T(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function Zr(t,e){if(e===null)return this.isReference&&T(`null is not a valid ${this.name}`),0;e.$$||T(`Cannot pass "${Yt(e)}" as a ${this.name}`),e.$$.ptr||T(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Vt(e.$$.ptr,r,this.registeredClass);return n}function Qr(t,e){var r;if(e===null)return this.isReference&&T(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;e.$$||T(`Cannot pass "${Yt(e)}" as a ${this.name}`),e.$$.ptr||T(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&T(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Vt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&T("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:T(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,rt.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:T("Unsupporting sharing policy")}return r}function Jr(t,e){if(e===null)return this.isReference&&T(`null is not a valid ${this.name}`),0;e.$$||T(`Cannot pass "${Yt(e)}" as a ${this.name}`),e.$$.ptr||T(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&T(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Vt(e.$$.ptr,r,this.registeredClass);return n}function me(t){return this.fromWireType(A[t>>2])}function Kr(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t}function tn(t){this.rawDestructor&&this.rawDestructor(t)}var en=t=>{t!==null&&t.delete()},rn=()=>{K.prototype.getPointee=Kr,K.prototype.destructor=tn,K.prototype.argPackAdvance=J,K.prototype.readValueFromPointer=me,K.prototype.deleteObject=en,K.prototype.fromWireType=Br};function K(t,e,r,n,a,o,s,u,l,d,h){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=d,this.rawDestructor=h,!a&&e.baseClass===void 0?n?(this.toWireType=Zr,this.destructorFunction=null):(this.toWireType=Jr,this.destructorFunction=null):this.toWireType=Qr}var ve=(t,e,r)=>{i.hasOwnProperty(t)||At("Replacing nonexistant public symbol"),i[t].overloadTable!==void 0&&r!==void 0?i[t].overloadTable[r]=e:(i[t]=e,i[t].argCount=r)},nn=(t,e,r)=>{var n=i["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},Ft=[],P=t=>{var e=Ft[t];return e||(t>=Ft.length&&(Ft.length=t+1),Ft[t]=e=Jt.get(t)),e},an=(t,e,r)=>{if(t.includes("j"))return nn(t,e,r);var n=P(e).apply(null,r);return n},on=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),an(t,e,r)}},G=(t,e)=>{t=k(t);function r(){return t.includes("j")?on(t,e):P(e)}var n=r();return typeof n!="function"&&T(`unknown function pointer with signature ${t}: ${e}`),n},sn=(t,e)=>{var r=he(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+`
|
|
2
|
+
`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},ge=void 0,we=t=>{var e=Fe(t),r=k(e);return tt(e),r},Ot=(t,e)=>{var r=[],n={};function a(o){if(!n[o]&&!it[o]){if(xt[o]){xt[o].forEach(a);return}r.push(o),n[o]=!0}}throw e.forEach(a),new ge(`${t}: `+r.map(we).join([", "]))},un=(t,e,r,n,a,o,s,u,l,d,h,m,v)=>{h=k(h),o=G(a,o),u&&(u=G(s,u)),d&&(d=G(l,d)),v=G(m,v);var _=fe(h);ye(_,function(){Ot(`Cannot construct ${h} due to unbound types`,[n])}),st([t,e,r],n?[n]:[],function(D){D=D[0];var R,x;n?(R=D.registeredClass,x=R.instancePrototype):x=et.prototype;var I=he(_,function(){if(Object.getPrototypeOf(this)!==f)throw new lt("Use 'new' to construct "+h);if(y.constructor_body===void 0)throw new lt(h+" has no accessible constructor");var Rt=y.constructor_body[arguments.length];if(Rt===void 0)throw new lt(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(y.constructor_body).toString()}) parameters instead!`);return Rt.apply(this,arguments)}),f=Object.create(x,{constructor:{value:I}});I.prototype=f;var y=new qr(h,I,f,v,R,o,u,d);y.baseClass&&(y.baseClass.__derivedClasses===void 0&&(y.baseClass.__derivedClasses=[]),y.baseClass.__derivedClasses.push(y));var F=new K(h,y,!0,!1,!1),O=new K(h+"*",y,!1,!1,!1),ut=new K(h+" const*",y,!1,!0,!1);return de[t]={pointerType:O,constPointerType:ut},ve(_,I),[F,O,ut]})},Lt=(t,e)=>{for(var r=[],n=0;n<t;n++)r.push(A[e+n*4>>2]);return r};function zt(t,e,r,n,a,o){var s=e.length;s<2&&T("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var u=e[1]!==null&&r!==null,l=!1,d=1;d<e.length;++d)if(e[d]!==null&&e[d].destructorFunction===void 0){l=!0;break}var h=e[0].name!=="void",m=s-2,v=new Array(m),_=[],D=[];return function(){arguments.length!==m&&T(`function ${t} called with ${arguments.length} arguments, expected ${m}`),D.length=0;var R;_.length=u?2:1,_[0]=a,u&&(R=e[1].toWireType(D,this),_[1]=R);for(var x=0;x<m;++x)v[x]=e[x+2].toWireType(D,arguments[x]),_.push(v[x]);var I=n.apply(null,_);function f(y){if(l)oe(D);else for(var F=u?1:2;F<e.length;F++){var O=F===1?R:v[F-2];e[F].destructorFunction!==null&&e[F].destructorFunction(O)}if(h)return e[0].fromWireType(y)}return f(I)}}var cn=(t,e,r,n,a,o)=>{var s=Lt(e,r);a=G(n,a),st([],[t],function(u){u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new lt(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{Ot(`Cannot construct ${u.name} due to unbound types`,s)},st([],s,d=>(d.splice(1,0,null),u.registeredClass.constructor_body[e-1]=zt(l,d,null,a,o),[])),[]})},ln=(t,e,r,n,a,o,s,u,l)=>{var d=Lt(r,n);e=k(e),o=G(a,o),st([],[t],function(h){h=h[0];var m=`${h.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&h.registeredClass.pureVirtualFunctions.push(e);function v(){Ot(`Cannot call ${m} due to unbound types`,d)}var _=h.registeredClass.instancePrototype,D=_[e];return D===void 0||D.overloadTable===void 0&&D.className!==h.name&&D.argCount===r-2?(v.argCount=r-2,v.className=h.name,_[e]=v):(pe(_,e,m),_[e].overloadTable[r-2]=v),st([],d,function(R){var x=zt(m,R,h,o,s);return _[e].overloadTable===void 0?(x.argCount=r-2,_[e]=x):_[e].overloadTable[r-2]=x,[]}),[]})};function dn(){Object.assign($e.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function $e(){this.allocated=[void 0],this.freelist=[]}var z=new $e,be=t=>{t>=z.reserved&&--z.get(t).refcount===0&&z.free(t)},fn=()=>{for(var t=0,e=z.reserved;e<z.allocated.length;++e)z.allocated[e]!==void 0&&++t;return t},hn=()=>{z.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),z.reserved=z.allocated.length,i.count_emval_handles=fn},rt={toValue:t=>(t||T("Cannot use deleted val. handle = "+t),z.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return z.allocate({refcount:1,value:t})}}},pn=(t,e)=>{e=k(e),Q(t,{name:e,fromWireType:r=>{var n=rt.toValue(r);return be(r),n},toWireType:(r,n)=>rt.toHandle(n),argPackAdvance:J,readValueFromPointer:Ht,destructorFunction:null})},Yt=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},yn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(qt[r>>2])};case 8:return function(r){return this.fromWireType(Zt[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},mn=(t,e,r)=>{e=k(e),Q(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:J,readValueFromPointer:yn(e,r),destructorFunction:null})},vn=(t,e,r,n,a,o,s)=>{var u=Lt(e,r);t=k(t),a=G(n,a),ye(t,function(){Ot(`Cannot call ${t} due to unbound types`,u)},e-1),st([],u,function(l){var d=[l[0],null].concat(l.slice(1));return ve(t,zt(t,d,null,a,o),e-1),[]})},gn=(t,e,r)=>{switch(e){case 1:return r?n=>L[n>>0]:n=>W[n>>0];case 2:return r?n=>ht[n>>1]:n=>Ct[n>>1];case 4:return r?n=>H[n>>2]:n=>A[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},wn=(t,e,r,n,a)=>{e=k(e);var o=h=>h;if(n===0){var s=32-8*r;o=h=>h<<s>>>s}var u=e.includes("unsigned"),l=(h,m)=>{},d;u?d=function(h,m){return l(m,this.name),m>>>0}:d=function(h,m){return l(m,this.name),m},Q(t,{name:e,fromWireType:o,toWireType:d,argPackAdvance:J,readValueFromPointer:gn(e,r,n!==0),destructorFunction:null})},$n=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function o(s){var u=A[s>>2],l=A[s+4>>2];return new a(L.buffer,l,u)}r=k(r),Q(t,{name:r,fromWireType:o,argPackAdvance:J,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},Ce=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,o=r+n-1,s=0;s<t.length;++s){var u=t.charCodeAt(s);if(u>=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(r>=o)break;e[r++]=u}else if(u<=2047){if(r+1>=o)break;e[r++]=192|u>>6,e[r++]=128|u&63}else if(u<=65535){if(r+2>=o)break;e[r++]=224|u>>12,e[r++]=128|u>>6&63,e[r++]=128|u&63}else{if(r+3>=o)break;e[r++]=240|u>>18,e[r++]=128|u>>12&63,e[r++]=128|u>>6&63,e[r++]=128|u&63}}return e[r]=0,r-a},bn=(t,e,r)=>Ce(t,W,e,r),_e=t=>{for(var e=0,r=0;r<t.length;++r){var n=t.charCodeAt(r);n<=127?e++:n<=2047?e+=2:n>=55296&&n<=57343?(e+=4,++r):e+=3}return e},Te=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Cn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&Te)return Te.decode(t.subarray(e,a));for(var o="";e<a;){var s=t[e++];if(!(s&128)){o+=String.fromCharCode(s);continue}var u=t[e++]&63;if((s&224)==192){o+=String.fromCharCode((s&31)<<6|u);continue}var l=t[e++]&63;if((s&240)==224?s=(s&15)<<12|u<<6|l:s=(s&7)<<18|u<<12|l<<6|t[e++]&63,s<65536)o+=String.fromCharCode(s);else{var d=s-65536;o+=String.fromCharCode(55296|d>>10,56320|d&1023)}}return o},Nt=(t,e)=>t?Cn(W,t,e):"",_n=(t,e)=>{e=k(e);var r=e==="std::string";Q(t,{name:e,fromWireType:n=>{var a=A[n>>2],o=n+4,s;if(r)for(var u=o,l=0;l<=a;++l){var d=o+l;if(l==a||W[d]==0){var h=d-u,m=Nt(u,h);s===void 0?s=m:(s+=String.fromCharCode(0),s+=m),u=d+1}}else{for(var v=new Array(a),l=0;l<a;++l)v[l]=String.fromCharCode(W[o+l]);s=v.join("")}return tt(n),s},toWireType:(n,a)=>{a instanceof ArrayBuffer&&(a=new Uint8Array(a));var o,s=typeof a=="string";s||a instanceof Uint8Array||a instanceof Uint8ClampedArray||a instanceof Int8Array||T("Cannot pass non-string to std::string"),r&&s?o=_e(a):o=a.length;var u=Xt(4+o+1),l=u+4;if(A[u>>2]=o,r&&s)bn(a,l,o+1);else if(s)for(var d=0;d<o;++d){var h=a.charCodeAt(d);h>255&&(tt(l),T("String has UTF-16 code units that do not fit in 8 bits")),W[l+d]=h}else for(var d=0;d<o;++d)W[l+d]=a[d];return n!==null&&n.push(tt,u),u},argPackAdvance:J,readValueFromPointer:me,destructorFunction:n=>tt(n)})},Pe=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Tn=(t,e)=>{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&Ct[n];)++n;if(r=n<<1,r-t>32&&Pe)return Pe.decode(W.subarray(t,r));for(var o="",s=0;!(s>=e/2);++s){var u=ht[t+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},Pn=(t,e,r)=>{if(r===void 0&&(r=2147483647),r<2)return 0;r-=2;for(var n=e,a=r<t.length*2?r/2:t.length,o=0;o<a;++o){var s=t.charCodeAt(o);ht[e>>1]=s,e+=2}return ht[e>>1]=0,e-n},En=t=>t.length*2,Dn=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=H[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},xn=(t,e,r)=>{if(r===void 0&&(r=2147483647),r<4)return 0;for(var n=e,a=n+r-4,o=0;o<t.length;++o){var s=t.charCodeAt(o);if(s>=55296&&s<=57343){var u=t.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(H[e>>2]=s,e+=4,e+4>a)break}return H[e>>2]=0,e-n},An=t=>{for(var e=0,r=0;r<t.length;++r){var n=t.charCodeAt(r);n>=55296&&n<=57343&&++r,e+=4}return e},Sn=(t,e,r)=>{r=k(r);var n,a,o,s,u;e===2?(n=Tn,a=Pn,s=En,o=()=>Ct,u=1):e===4&&(n=Dn,a=xn,s=An,o=()=>A,u=2),Q(t,{name:r,fromWireType:l=>{for(var d=A[l>>2],h=o(),m,v=l+4,_=0;_<=d;++_){var D=l+4+_*e;if(_==d||h[D>>u]==0){var R=D-v,x=n(v,R);m===void 0?m=x:(m+=String.fromCharCode(0),m+=x),v=D+e}}return tt(l),m},toWireType:(l,d)=>{typeof d!="string"&&T(`Cannot pass non-string to C++ string type ${r}`);var h=s(d),m=Xt(4+h+e);return A[m>>2]=h>>u,a(d,m+4,h+e),l!==null&&l.push(tt,m),m},argPackAdvance:J,readValueFromPointer:Ht,destructorFunction:l=>tt(l)})},Fn=(t,e,r,n,a,o)=>{Dt[t]={name:k(e),rawConstructor:G(r,n),rawDestructor:G(a,o),fields:[]}},On=(t,e,r,n,a,o,s,u,l,d)=>{Dt[t].fields.push({fieldName:k(e),getterReturnType:r,getter:G(n,a),getterContext:o,setterArgumentType:s,setter:G(u,l),setterContext:d})},Mn=(t,e)=>{e=k(e),Q(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},jn={},Rn=t=>{var e=jn[t];return e===void 0?k(t):e},Ee=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},In=t=>t===0?rt.toHandle(Ee()):(t=Rn(t),rt.toHandle(Ee()[t])),Wn=t=>{t>4&&(z.get(t).refcount+=1)},De=(t,e)=>{var r=it[t];return r===void 0&&T(e+" has unknown type "+we(t)),r},Hn=t=>{var e=new Array(t+1);return function(r,n,a){e[0]=r;for(var o=0;o<t;++o){var s=De(A[n+o*4>>2],"parameter "+o);e[o+1]=s.readValueFromPointer(a),a+=s.argPackAdvance}var u=new(r.bind.apply(r,e));return rt.toHandle(u)}},xe={},kn=(t,e,r,n)=>{t=rt.toValue(t);var a=xe[e];return a||(a=Hn(e),xe[e]=a),a(t,r,n)},Un=(t,e)=>{t=De(t,"_emval_take_value");var r=t.readValueFromPointer(e);return rt.toHandle(r)},Bn=()=>{_t("")},Vn=(t,e,r)=>W.copyWithin(t,e,e+r),Ln=()=>2147483648,zn=t=>{var e=q.buffer,r=(t-e.byteLength+65535)/65536;try{return q.grow(r),Qt(),1}catch{}},Yn=t=>{var e=W.length;t>>>=0;var r=Ln();if(t>r)return!1;for(var n=(l,d)=>l+(d-l%d)%d,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,t+100663296);var s=Math.min(r,n(Math.max(t,o),65536)),u=zn(s);if(u)return!0}return!1},Gt={},Nn=()=>M||"./this.program",wt=()=>{if(!wt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Nn()};for(var r in Gt)Gt[r]===void 0?delete e[r]:e[r]=Gt[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);wt.strings=n}return wt.strings},Gn=(t,e)=>{for(var r=0;r<t.length;++r)L[e++>>0]=t.charCodeAt(r);L[e>>0]=0},Xn=(t,e)=>{var r=0;return wt().forEach((n,a)=>{var o=e+r;A[t+a*4>>2]=o,Gn(n,o),r+=n.length+1}),0},qn=(t,e)=>{var r=wt();A[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),A[e>>2]=n,0},Zn=t=>t,Mt=t=>t%4===0&&(t%100!==0||t%400===0),Qn=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Ae=[31,29,31,30,31,30,31,31,30,31,30,31],Se=[31,28,31,30,31,30,31,31,30,31,30,31],Jn=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=Mt(r.getFullYear()),a=r.getMonth(),o=(n?Ae:Se)[a];if(e>o-r.getDate())e-=o-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function Kn(t,e,r){var n=r>0?r:_e(t)+1,a=new Array(n),o=Ce(t,a,0,a.length);return e&&(a.length=o),a}var ta=(t,e)=>{L.set(t,e)},ea=(t,e,r,n)=>{var a=A[n+40>>2],o={tm_sec:H[n>>2],tm_min:H[n+4>>2],tm_hour:H[n+8>>2],tm_mday:H[n+12>>2],tm_mon:H[n+16>>2],tm_year:H[n+20>>2],tm_wday:H[n+24>>2],tm_yday:H[n+28>>2],tm_isdst:H[n+32>>2],tm_gmtoff:H[n+36>>2],tm_zone:a?Nt(a):""},s=Nt(r),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in u)s=s.replace(new RegExp(l,"g"),u[l]);var d=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function m(f,y,F){for(var O=typeof f=="number"?f.toString():f||"";O.length<y;)O=F[0]+O;return O}function v(f,y){return m(f,y,"0")}function _(f,y){function F(ut){return ut<0?-1:ut>0?1:0}var O;return(O=F(f.getFullYear()-y.getFullYear()))===0&&(O=F(f.getMonth()-y.getMonth()))===0&&(O=F(f.getDate()-y.getDate())),O}function D(f){switch(f.getDay()){case 0:return new Date(f.getFullYear()-1,11,29);case 1:return f;case 2:return new Date(f.getFullYear(),0,3);case 3:return new Date(f.getFullYear(),0,2);case 4:return new Date(f.getFullYear(),0,1);case 5:return new Date(f.getFullYear()-1,11,31);case 6:return new Date(f.getFullYear()-1,11,30)}}function R(f){var y=Jn(new Date(f.tm_year+1900,0,1),f.tm_yday),F=new Date(y.getFullYear(),0,4),O=new Date(y.getFullYear()+1,0,4),ut=D(F),Rt=D(O);return _(ut,y)<=0?_(Rt,y)<=0?y.getFullYear()+1:y.getFullYear():y.getFullYear()-1}var x={"%a":f=>d[f.tm_wday].substring(0,3),"%A":f=>d[f.tm_wday],"%b":f=>h[f.tm_mon].substring(0,3),"%B":f=>h[f.tm_mon],"%C":f=>{var y=f.tm_year+1900;return v(y/100|0,2)},"%d":f=>v(f.tm_mday,2),"%e":f=>m(f.tm_mday,2," "),"%g":f=>R(f).toString().substring(2),"%G":f=>R(f),"%H":f=>v(f.tm_hour,2),"%I":f=>{var y=f.tm_hour;return y==0?y=12:y>12&&(y-=12),v(y,2)},"%j":f=>v(f.tm_mday+Qn(Mt(f.tm_year+1900)?Ae:Se,f.tm_mon-1),3),"%m":f=>v(f.tm_mon+1,2),"%M":f=>v(f.tm_min,2),"%n":()=>`
|
|
3
|
+
`,"%p":f=>f.tm_hour>=0&&f.tm_hour<12?"AM":"PM","%S":f=>v(f.tm_sec,2),"%t":()=>" ","%u":f=>f.tm_wday||7,"%U":f=>{var y=f.tm_yday+7-f.tm_wday;return v(Math.floor(y/7),2)},"%V":f=>{var y=Math.floor((f.tm_yday+7-(f.tm_wday+6)%7)/7);if((f.tm_wday+371-f.tm_yday-2)%7<=2&&y++,y){if(y==53){var F=(f.tm_wday+371-f.tm_yday)%7;F!=4&&(F!=3||!Mt(f.tm_year))&&(y=1)}}else{y=52;var O=(f.tm_wday+7-f.tm_yday-1)%7;(O==4||O==5&&Mt(f.tm_year%400-1))&&y++}return v(y,2)},"%w":f=>f.tm_wday,"%W":f=>{var y=f.tm_yday+7-(f.tm_wday+6)%7;return v(Math.floor(y/7),2)},"%y":f=>(f.tm_year+1900).toString().substring(2),"%Y":f=>f.tm_year+1900,"%z":f=>{var y=f.tm_gmtoff,F=y>=0;return y=Math.abs(y)/60,y=y/60*100+y%60,(F?"+":"-")+("0000"+y).slice(-4)},"%Z":f=>f.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var l in x)s.includes(l)&&(s=s.replace(new RegExp(l,"g"),x[l](o)));s=s.replace(/\0\0/g,"%");var I=Kn(s,!1);return I.length>e?0:(ta(I,t),I.length-1)},ra=(t,e,r,n,a)=>ea(t,e,r,n);ie=i.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},Ar(),lt=i.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},Nr(),Hr(),rn(),ge=i.UnboundTypeError=sn(Error,"UnboundTypeError"),dn(),hn();var na={q:vr,u:gr,a:$r,h:br,l:Cr,I:_r,P:Tr,n:Pr,ba:Er,d:wr,oa:Dr,Y:xr,fa:Fr,na:un,ma:cn,D:ln,ea:pn,W:mn,J:vn,w:wn,s:$n,V:_n,L:Sn,Q:Fn,pa:On,ga:Mn,U:be,la:In,R:Wn,ia:kn,ka:Un,K:Bn,da:Vn,ca:Yn,$:Xn,aa:qn,H:Ca,T:Fa,B:Ta,p:wa,b:aa,C:ba,ha:Ea,c:ca,j:da,i:sa,x:_a,O:$a,v:va,G:xa,N:Aa,A:Pa,F:Oa,Z:ja,X:Ra,k:la,f:ua,e:ia,g:oa,M:Sa,m:ma,o:fa,S:ha,t:ya,ja:ga,y:Da,r:pa,E:Ma,z:Zn,_:ra},S=mr(),tt=i._free=t=>(tt=i._free=S.sa)(t),Xt=i._malloc=t=>(Xt=i._malloc=S.ta)(t),Fe=t=>(Fe=S.va)(t);i.__embind_initialize_bindings=()=>(i.__embind_initialize_bindings=S.wa)();var $=(t,e)=>($=S.xa)(t,e),$t=t=>($t=S.ya)(t),b=()=>(b=S.za)(),C=t=>(C=S.Aa)(t),Oe=t=>(Oe=S.Ba)(t),Me=t=>(Me=S.Ca)(t),je=(t,e,r)=>(je=S.Da)(t,e,r),Re=t=>(Re=S.Ea)(t);i.dynCall_viijii=(t,e,r,n,a,o,s)=>(i.dynCall_viijii=S.Fa)(t,e,r,n,a,o,s);var Ie=i.dynCall_jiii=(t,e,r,n)=>(Ie=i.dynCall_jiii=S.Ga)(t,e,r,n),We=i.dynCall_jiiii=(t,e,r,n,a)=>(We=i.dynCall_jiiii=S.Ha)(t,e,r,n,a);i.dynCall_iiiiij=(t,e,r,n,a,o,s)=>(i.dynCall_iiiiij=S.Ia)(t,e,r,n,a,o,s),i.dynCall_iiiiijj=(t,e,r,n,a,o,s,u,l)=>(i.dynCall_iiiiijj=S.Ja)(t,e,r,n,a,o,s,u,l),i.dynCall_iiiiiijj=(t,e,r,n,a,o,s,u,l,d)=>(i.dynCall_iiiiiijj=S.Ka)(t,e,r,n,a,o,s,u,l,d);function aa(t,e){var r=b();try{return P(t)(e)}catch(n){if(C(r),n!==n+0)throw n;$(1,0)}}function oa(t,e,r,n){var a=b();try{P(t)(e,r,n)}catch(o){if(C(a),o!==o+0)throw o;$(1,0)}}function ia(t,e,r){var n=b();try{P(t)(e,r)}catch(a){if(C(n),a!==a+0)throw a;$(1,0)}}function sa(t,e,r,n,a){var o=b();try{return P(t)(e,r,n,a)}catch(s){if(C(o),s!==s+0)throw s;$(1,0)}}function ua(t,e){var r=b();try{P(t)(e)}catch(n){if(C(r),n!==n+0)throw n;$(1,0)}}function ca(t,e,r){var n=b();try{return P(t)(e,r)}catch(a){if(C(n),a!==a+0)throw a;$(1,0)}}function la(t){var e=b();try{P(t)()}catch(r){if(C(e),r!==r+0)throw r;$(1,0)}}function da(t,e,r,n){var a=b();try{return P(t)(e,r,n)}catch(o){if(C(a),o!==o+0)throw o;$(1,0)}}function fa(t,e,r,n,a,o){var s=b();try{P(t)(e,r,n,a,o)}catch(u){if(C(s),u!==u+0)throw u;$(1,0)}}function ha(t,e,r,n,a,o,s){var u=b();try{P(t)(e,r,n,a,o,s)}catch(l){if(C(u),l!==l+0)throw l;$(1,0)}}function pa(t,e,r,n,a,o,s,u,l,d,h){var m=b();try{P(t)(e,r,n,a,o,s,u,l,d,h)}catch(v){if(C(m),v!==v+0)throw v;$(1,0)}}function ya(t,e,r,n,a,o,s,u){var l=b();try{P(t)(e,r,n,a,o,s,u)}catch(d){if(C(l),d!==d+0)throw d;$(1,0)}}function ma(t,e,r,n,a){var o=b();try{P(t)(e,r,n,a)}catch(s){if(C(o),s!==s+0)throw s;$(1,0)}}function va(t,e,r,n,a,o,s){var u=b();try{return P(t)(e,r,n,a,o,s)}catch(l){if(C(u),l!==l+0)throw l;$(1,0)}}function ga(t,e,r,n,a,o,s,u,l){var d=b();try{P(t)(e,r,n,a,o,s,u,l)}catch(h){if(C(d),h!==h+0)throw h;$(1,0)}}function wa(t){var e=b();try{return P(t)()}catch(r){if(C(e),r!==r+0)throw r;$(1,0)}}function $a(t,e,r,n,a,o,s){var u=b();try{return P(t)(e,r,n,a,o,s)}catch(l){if(C(u),l!==l+0)throw l;$(1,0)}}function ba(t,e,r,n){var a=b();try{return P(t)(e,r,n)}catch(o){if(C(a),o!==o+0)throw o;$(1,0)}}function Ca(t,e,r,n){var a=b();try{return P(t)(e,r,n)}catch(o){if(C(a),o!==o+0)throw o;$(1,0)}}function _a(t,e,r,n,a,o){var s=b();try{return P(t)(e,r,n,a,o)}catch(u){if(C(s),u!==u+0)throw u;$(1,0)}}function Ta(t,e,r,n,a,o){var s=b();try{return P(t)(e,r,n,a,o)}catch(u){if(C(s),u!==u+0)throw u;$(1,0)}}function Pa(t,e,r,n,a,o,s,u,l,d){var h=b();try{return P(t)(e,r,n,a,o,s,u,l,d)}catch(m){if(C(h),m!==m+0)throw m;$(1,0)}}function Ea(t,e,r){var n=b();try{return P(t)(e,r)}catch(a){if(C(n),a!==a+0)throw a;$(1,0)}}function Da(t,e,r,n,a,o,s,u,l,d){var h=b();try{P(t)(e,r,n,a,o,s,u,l,d)}catch(m){if(C(h),m!==m+0)throw m;$(1,0)}}function xa(t,e,r,n,a,o,s,u){var l=b();try{return P(t)(e,r,n,a,o,s,u)}catch(d){if(C(l),d!==d+0)throw d;$(1,0)}}function Aa(t,e,r,n,a,o,s,u,l){var d=b();try{return P(t)(e,r,n,a,o,s,u,l)}catch(h){if(C(d),h!==h+0)throw h;$(1,0)}}function Sa(t,e,r,n,a,o,s){var u=b();try{P(t)(e,r,n,a,o,s)}catch(l){if(C(u),l!==l+0)throw l;$(1,0)}}function Fa(t,e,r,n){var a=b();try{return P(t)(e,r,n)}catch(o){if(C(a),o!==o+0)throw o;$(1,0)}}function Oa(t,e,r,n,a,o,s,u,l,d,h,m){var v=b();try{return P(t)(e,r,n,a,o,s,u,l,d,h,m)}catch(_){if(C(v),_!==_+0)throw _;$(1,0)}}function Ma(t,e,r,n,a,o,s,u,l,d,h,m,v,_,D,R){var x=b();try{P(t)(e,r,n,a,o,s,u,l,d,h,m,v,_,D,R)}catch(I){if(C(x),I!==I+0)throw I;$(1,0)}}function ja(t,e,r,n){var a=b();try{return Ie(t,e,r,n)}catch(o){if(C(a),o!==o+0)throw o;$(1,0)}}function Ra(t,e,r,n,a){var o=b();try{return We(t,e,r,n,a)}catch(s){if(C(o),s!==s+0)throw s;$(1,0)}}var jt;pt=function t(){jt||He(),jt||(pt=t)};function He(){if(at>0||(or(),at>0))return;function t(){jt||(jt=!0,i.calledRun=!0,!ft&&(ir(),g(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),sr()))}i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),t()},1)):t()}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return He(),p.ready}})();function to(c){return rr(nr,c)}async function eo(c,{tryHarder:p=nt.tryHarder,formats:i=nt.formats,maxSymbols:g=nt.maxSymbols}=nt){return Qa(c,{tryHarder:p,formats:i,maxSymbols:g},nr)}const ar=new Map([["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["data_matrix","DataMatrix"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["pdf417","PDF417"],["qr_code","QRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"]]);function ro(c){for(const[p,i]of ar)if(c===i)return p;return"unknown"}var bt;class no extends EventTarget{constructor(i={}){var g;super();Be(this,bt,void 0);try{const w=(g=i==null?void 0:i.formats)==null?void 0:g.filter(E=>E!=="unknown");if((w==null?void 0:w.length)===0)throw new TypeError("Hint option provided, but is empty.");w==null||w.forEach(E=>{if(!Le.includes(E))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${E}' is not a valid enum value of type BarcodeFormat.`)}),Ve(this,bt,w??[]),to().then(E=>{this.dispatchEvent(new CustomEvent("load",{detail:E}))}).catch(E=>{this.dispatchEvent(new CustomEvent("error",{detail:E}))})}catch(w){throw ze(w,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return Le.filter(i=>i!=="unknown")}async detect(i){try{const g=await Va(i);if(g===null)return[];let w;try{w=await eo(g,{tryHarder:!0,formats:Ue(this,bt).map(E=>ar.get(E))})}catch{throw new DOMException("Barcode detection service unavailable. Use 'setZXingModuleOverrides' in offline or strict CSP environments.","NotSupportedError")}return w.map(E=>{const{topLeft:{x:M,y:Y},topRight:{x:U,y:j},bottomLeft:{x:N,y:X},bottomRight:{x:V,y:B}}=E.position,q=Math.min(M,U,N,V),ft=Math.min(Y,j,X,B),L=Math.max(M,U,N,V),W=Math.max(Y,j,X,B);return{boundingBox:new DOMRectReadOnly(q,ft,L-q,W-ft),rawValue:new TextDecoder().decode(E.bytes),format:ro(E.format),cornerPoints:[{x:M,y:Y},{x:U,y:j},{x:V,y:B},{x:N,y:X}]}})}catch(g){throw ze(g,"Failed to execute 'detect' on 'BarcodeDetector'")}}}bt=new WeakMap;exports.BarcodeDetector=no;exports.setZXingModuleOverrides=Za;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/// <reference types="dom-webcodecs" />
|
|
2
|
+
import { Point2D } from "./BarcodeDetector.js";
|
|
3
|
+
export { setZXingModuleOverrides } from "./BarcodeDetector.js";
|
|
4
|
+
import { BARCODE_DETECTOR_FORMATS } from "./utils.js";
|
|
5
|
+
declare global {
|
|
6
|
+
var BarcodeDetector: {
|
|
7
|
+
readonly prototype: BarcodeDetector;
|
|
8
|
+
new (barcodeDectorOptions?: BarcodeDetectorOptions): BarcodeDetector;
|
|
9
|
+
getSupportedFormats(): Promise<readonly BarcodeFormat[]>;
|
|
10
|
+
};
|
|
11
|
+
interface BarcodeDetector {
|
|
12
|
+
detect(image: ImageBitmapSourceWebCodecs): Promise<DetectedBarcode[]>;
|
|
13
|
+
}
|
|
14
|
+
type BarcodeFormat = (typeof BARCODE_DETECTOR_FORMATS)[number];
|
|
15
|
+
interface BarcodeDetectorOptions {
|
|
16
|
+
formats?: BarcodeFormat[];
|
|
17
|
+
}
|
|
18
|
+
interface DetectedBarcode {
|
|
19
|
+
boundingBox: DOMRectReadOnly;
|
|
20
|
+
rawValue: string;
|
|
21
|
+
format: BarcodeFormat;
|
|
22
|
+
cornerPoints: [Point2D, Point2D, Point2D, Point2D];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./pure.js");globalThis.BarcodeDetector??(globalThis.BarcodeDetector=e.BarcodeDetector);exports.setZXingModuleOverrides=e.setZXingModuleOverrides;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="dom-webcodecs" />
|
|
2
|
+
export declare const BARCODE_DETECTOR_FORMATS: readonly ["aztec", "code_128", "code_39", "code_93", "codabar", "data_matrix", "ean_13", "ean_8", "itf", "pdf417", "qr_code", "upc_a", "upc_e", "unknown"];
|
|
3
|
+
export declare function getImageDataFromImageBitmapSource(image: ImageBitmapSourceWebCodecs): Promise<ImageData | null>;
|
|
4
|
+
declare global {
|
|
5
|
+
interface SVGImageElement {
|
|
6
|
+
decode?(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare function addPrefixToExceptionOrError(e: unknown, prefix: string): TypeError | DOMException;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="dom-webcodecs" />
|
|
2
|
+
import { ZXingModule } from "@sec-ant/zxing-wasm/reader";
|
|
3
|
+
import { BARCODE_DETECTOR_FORMATS } from "./utils.js";
|
|
4
|
+
export type BarcodeFormat = (typeof BARCODE_DETECTOR_FORMATS)[number];
|
|
5
|
+
export interface BarcodeDetectorOptions {
|
|
6
|
+
formats?: BarcodeFormat[];
|
|
7
|
+
}
|
|
8
|
+
export interface Point2D {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
}
|
|
12
|
+
export interface DetectedBarcode {
|
|
13
|
+
boundingBox: DOMRectReadOnly;
|
|
14
|
+
rawValue: string;
|
|
15
|
+
format: BarcodeFormat;
|
|
16
|
+
cornerPoints: [Point2D, Point2D, Point2D, Point2D];
|
|
17
|
+
}
|
|
18
|
+
interface CustomEventMap {
|
|
19
|
+
load: CustomEvent<ZXingModule<"reader">>;
|
|
20
|
+
error: CustomEvent<unknown>;
|
|
21
|
+
}
|
|
22
|
+
type ChangeEventListener = <K extends keyof CustomEventMap>(type: K, callback: ((evt: CustomEventMap[K]) => void) | {
|
|
23
|
+
handleEvent(evt: CustomEventMap[K]): void;
|
|
24
|
+
} | null, options?: boolean | AddEventListenerOptions | undefined) => void;
|
|
25
|
+
export interface BarcodeDetector {
|
|
26
|
+
addEventListener: ChangeEventListener;
|
|
27
|
+
removeEventListener: ChangeEventListener;
|
|
28
|
+
}
|
|
29
|
+
export declare class BarcodeDetector extends EventTarget {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(barcodeDectorOptions?: BarcodeDetectorOptions);
|
|
32
|
+
static getSupportedFormats(): Promise<readonly BarcodeFormat[]>;
|
|
33
|
+
detect(image: ImageBitmapSourceWebCodecs): Promise<DetectedBarcode[]>;
|
|
34
|
+
}
|
|
35
|
+
export { setZXingModuleOverrides } from "@sec-ant/zxing-wasm";
|
package/dist/es/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./BarcodeDetector.js";
|