@scanly/core 2.0.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/README.md +3 -0
- package/dist/barcode/contracts.d.ts +44 -0
- package/dist/barcode/contracts.d.ts.map +1 -0
- package/dist/barcode/contracts.js +33 -0
- package/dist/barcode/contracts.js.map +1 -0
- package/dist/barcode/format-selection.d.ts +12 -0
- package/dist/barcode/format-selection.d.ts.map +1 -0
- package/dist/barcode/format-selection.js +32 -0
- package/dist/barcode/format-selection.js.map +1 -0
- package/dist/barcode/format.d.ts +7 -0
- package/dist/barcode/format.d.ts.map +1 -0
- package/dist/barcode/format.js +20 -0
- package/dist/barcode/format.js.map +1 -0
- package/dist/barcode/index.d.ts +5 -0
- package/dist/barcode/index.d.ts.map +1 -0
- package/dist/barcode/index.js +5 -0
- package/dist/barcode/index.js.map +1 -0
- package/dist/barcode/retail.d.ts +16 -0
- package/dist/barcode/retail.d.ts.map +1 -0
- package/dist/barcode/retail.js +95 -0
- package/dist/barcode/retail.js.map +1 -0
- package/dist/contracts/engine.d.ts +84 -0
- package/dist/contracts/engine.d.ts.map +1 -0
- package/dist/contracts/engine.js +2 -0
- package/dist/contracts/engine.js.map +1 -0
- package/dist/contracts/errors.d.ts +17 -0
- package/dist/contracts/errors.d.ts.map +1 -0
- package/dist/contracts/errors.js +31 -0
- package/dist/contracts/errors.js.map +1 -0
- package/dist/contracts/frame.d.ts +37 -0
- package/dist/contracts/frame.d.ts.map +1 -0
- package/dist/contracts/frame.js +77 -0
- package/dist/contracts/frame.js.map +1 -0
- package/dist/contracts/operator.d.ts +46 -0
- package/dist/contracts/operator.d.ts.map +1 -0
- package/dist/contracts/operator.js +14 -0
- package/dist/contracts/operator.js.map +1 -0
- package/dist/contracts/result.d.ts +135 -0
- package/dist/contracts/result.d.ts.map +1 -0
- package/dist/contracts/result.js +2 -0
- package/dist/contracts/result.js.map +1 -0
- package/dist/contracts/validator.d.ts +15 -0
- package/dist/contracts/validator.d.ts.map +1 -0
- package/dist/contracts/validator.js +2 -0
- package/dist/contracts/validator.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/industrial/candidate-region.d.ts +15 -0
- package/dist/industrial/candidate-region.d.ts.map +1 -0
- package/dist/industrial/candidate-region.js +108 -0
- package/dist/industrial/candidate-region.js.map +1 -0
- package/dist/industrial/coordinate-transform.d.ts +9 -0
- package/dist/industrial/coordinate-transform.d.ts.map +1 -0
- package/dist/industrial/coordinate-transform.js +42 -0
- package/dist/industrial/coordinate-transform.js.map +1 -0
- package/dist/industrial/decode-candidate-conflict.d.ts +8 -0
- package/dist/industrial/decode-candidate-conflict.d.ts.map +1 -0
- package/dist/industrial/decode-candidate-conflict.js +97 -0
- package/dist/industrial/decode-candidate-conflict.js.map +1 -0
- package/dist/industrial/difficulty-diagnosis.d.ts +15 -0
- package/dist/industrial/difficulty-diagnosis.d.ts.map +1 -0
- package/dist/industrial/difficulty-diagnosis.js +291 -0
- package/dist/industrial/difficulty-diagnosis.js.map +1 -0
- package/dist/industrial/index.d.ts +13 -0
- package/dist/industrial/index.d.ts.map +1 -0
- package/dist/industrial/index.js +13 -0
- package/dist/industrial/index.js.map +1 -0
- package/dist/industrial/memory.d.ts +28 -0
- package/dist/industrial/memory.d.ts.map +1 -0
- package/dist/industrial/memory.js +65 -0
- package/dist/industrial/memory.js.map +1 -0
- package/dist/industrial/pixels.d.ts +44 -0
- package/dist/industrial/pixels.d.ts.map +1 -0
- package/dist/industrial/pixels.js +295 -0
- package/dist/industrial/pixels.js.map +1 -0
- package/dist/industrial/recovery-pipeline.d.ts +26 -0
- package/dist/industrial/recovery-pipeline.d.ts.map +1 -0
- package/dist/industrial/recovery-pipeline.js +149 -0
- package/dist/industrial/recovery-pipeline.js.map +1 -0
- package/dist/industrial/recovery-planner.d.ts +10 -0
- package/dist/industrial/recovery-planner.d.ts.map +1 -0
- package/dist/industrial/recovery-planner.js +107 -0
- package/dist/industrial/recovery-planner.js.map +1 -0
- package/dist/industrial/recovery-route-registry.d.ts +12 -0
- package/dist/industrial/recovery-route-registry.d.ts.map +1 -0
- package/dist/industrial/recovery-route-registry.js +15 -0
- package/dist/industrial/recovery-route-registry.js.map +1 -0
- package/dist/industrial/recovery-routes.d.ts +89 -0
- package/dist/industrial/recovery-routes.d.ts.map +1 -0
- package/dist/industrial/recovery-routes.js +280 -0
- package/dist/industrial/recovery-routes.js.map +1 -0
- package/dist/industrial/scan-evidence.d.ts +5 -0
- package/dist/industrial/scan-evidence.d.ts.map +1 -0
- package/dist/industrial/scan-evidence.js +63 -0
- package/dist/industrial/scan-evidence.js.map +1 -0
- package/dist/industrial/scanner-diagnostics.d.ts +19 -0
- package/dist/industrial/scanner-diagnostics.d.ts.map +1 -0
- package/dist/industrial/scanner-diagnostics.js +35 -0
- package/dist/industrial/scanner-diagnostics.js.map +1 -0
- package/dist/industrial/types.d.ts +189 -0
- package/dist/industrial/types.d.ts.map +1 -0
- package/dist/industrial/types.js +2 -0
- package/dist/industrial/types.js.map +1 -0
- package/dist/node.d.ts +2 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +2 -0
- package/dist/node.js.map +1 -0
- package/dist/qr/candidate-dedupe.d.ts +6 -0
- package/dist/qr/candidate-dedupe.d.ts.map +1 -0
- package/dist/qr/candidate-dedupe.js +27 -0
- package/dist/qr/candidate-dedupe.js.map +1 -0
- package/dist/qr/candidate-generation.d.ts +46 -0
- package/dist/qr/candidate-generation.d.ts.map +1 -0
- package/dist/qr/candidate-generation.js +277 -0
- package/dist/qr/candidate-generation.js.map +1 -0
- package/dist/qr/decode-pipeline.d.ts +14 -0
- package/dist/qr/decode-pipeline.d.ts.map +1 -0
- package/dist/qr/decode-pipeline.js +615 -0
- package/dist/qr/decode-pipeline.js.map +1 -0
- package/dist/qr/geometry.d.ts +24 -0
- package/dist/qr/geometry.d.ts.map +1 -0
- package/dist/qr/geometry.js +64 -0
- package/dist/qr/geometry.js.map +1 -0
- package/dist/qr/grayscale.d.ts +13 -0
- package/dist/qr/grayscale.d.ts.map +1 -0
- package/dist/qr/grayscale.js +46 -0
- package/dist/qr/grayscale.js.map +1 -0
- package/dist/qr/image-loader-node.d.ts +4 -0
- package/dist/qr/image-loader-node.d.ts.map +1 -0
- package/dist/qr/image-loader-node.js +26 -0
- package/dist/qr/image-loader-node.js.map +1 -0
- package/dist/qr/index.d.ts +15 -0
- package/dist/qr/index.d.ts.map +1 -0
- package/dist/qr/index.js +15 -0
- package/dist/qr/index.js.map +1 -0
- package/dist/qr/jsqr-decoder.d.ts +10 -0
- package/dist/qr/jsqr-decoder.d.ts.map +1 -0
- package/dist/qr/jsqr-decoder.js +18 -0
- package/dist/qr/jsqr-decoder.js.map +1 -0
- package/dist/qr/preprocess.d.ts +18 -0
- package/dist/qr/preprocess.d.ts.map +1 -0
- package/dist/qr/preprocess.js +165 -0
- package/dist/qr/preprocess.js.map +1 -0
- package/dist/qr/region-detection.d.ts +25 -0
- package/dist/qr/region-detection.d.ts.map +1 -0
- package/dist/qr/region-detection.js +129 -0
- package/dist/qr/region-detection.js.map +1 -0
- package/dist/qr/result-normalizer.d.ts +9 -0
- package/dist/qr/result-normalizer.d.ts.map +1 -0
- package/dist/qr/result-normalizer.js +70 -0
- package/dist/qr/result-normalizer.js.map +1 -0
- package/dist/qr/rotate.d.ts +5 -0
- package/dist/qr/rotate.d.ts.map +1 -0
- package/dist/qr/rotate.js +51 -0
- package/dist/qr/rotate.js.map +1 -0
- package/dist/qr/types.d.ts +186 -0
- package/dist/qr/types.d.ts.map +1 -0
- package/dist/qr/types.js +67 -0
- package/dist/qr/types.js.map +1 -0
- package/dist/qr/zxing-decoder.d.ts +8 -0
- package/dist/qr/zxing-decoder.d.ts.map +1 -0
- package/dist/qr/zxing-decoder.js +33 -0
- package/dist/qr/zxing-decoder.js.map +1 -0
- package/dist/runtime/artifacts.d.ts +16 -0
- package/dist/runtime/artifacts.d.ts.map +1 -0
- package/dist/runtime/artifacts.js +52 -0
- package/dist/runtime/artifacts.js.map +1 -0
- package/dist/runtime/builtin-operators.d.ts +12 -0
- package/dist/runtime/builtin-operators.d.ts.map +1 -0
- package/dist/runtime/builtin-operators.js +487 -0
- package/dist/runtime/builtin-operators.js.map +1 -0
- package/dist/runtime/capabilities.d.ts +32 -0
- package/dist/runtime/capabilities.d.ts.map +1 -0
- package/dist/runtime/capabilities.js +18 -0
- package/dist/runtime/capabilities.js.map +1 -0
- package/dist/runtime/engine-registry.d.ts +19 -0
- package/dist/runtime/engine-registry.d.ts.map +1 -0
- package/dist/runtime/engine-registry.js +136 -0
- package/dist/runtime/engine-registry.js.map +1 -0
- package/dist/runtime/execution-budget.d.ts +25 -0
- package/dist/runtime/execution-budget.d.ts.map +1 -0
- package/dist/runtime/execution-budget.js +41 -0
- package/dist/runtime/execution-budget.js.map +1 -0
- package/dist/runtime/frame-lease.d.ts +10 -0
- package/dist/runtime/frame-lease.d.ts.map +1 -0
- package/dist/runtime/frame-lease.js +17 -0
- package/dist/runtime/frame-lease.js.map +1 -0
- package/dist/runtime/frame-normalization.d.ts +13 -0
- package/dist/runtime/frame-normalization.d.ts.map +1 -0
- package/dist/runtime/frame-normalization.js +21 -0
- package/dist/runtime/frame-normalization.js.map +1 -0
- package/dist/runtime/memory-budget.d.ts +32 -0
- package/dist/runtime/memory-budget.d.ts.map +1 -0
- package/dist/runtime/memory-budget.js +109 -0
- package/dist/runtime/memory-budget.js.map +1 -0
- package/dist/runtime/operator-registry.d.ts +11 -0
- package/dist/runtime/operator-registry.d.ts.map +1 -0
- package/dist/runtime/operator-registry.js +19 -0
- package/dist/runtime/operator-registry.js.map +1 -0
- package/dist/runtime/result-policies.d.ts +21 -0
- package/dist/runtime/result-policies.d.ts.map +1 -0
- package/dist/runtime/result-policies.js +62 -0
- package/dist/runtime/result-policies.js.map +1 -0
- package/dist/runtime/router.d.ts +45 -0
- package/dist/runtime/router.d.ts.map +1 -0
- package/dist/runtime/router.js +202 -0
- package/dist/runtime/router.js.map +1 -0
- package/dist/runtime/scenario-compiler.d.ts +32 -0
- package/dist/runtime/scenario-compiler.d.ts.map +1 -0
- package/dist/runtime/scenario-compiler.js +131 -0
- package/dist/runtime/scenario-compiler.js.map +1 -0
- package/dist/runtime/scenario-runtime.d.ts +4 -0
- package/dist/runtime/scenario-runtime.d.ts.map +1 -0
- package/dist/runtime/scenario-runtime.js +32 -0
- package/dist/runtime/scenario-runtime.js.map +1 -0
- package/dist/runtime/session.d.ts +40 -0
- package/dist/runtime/session.d.ts.map +1 -0
- package/dist/runtime/session.js +117 -0
- package/dist/runtime/session.js.map +1 -0
- package/dist/runtime/validator-registry.d.ts +11 -0
- package/dist/runtime/validator-registry.d.ts.map +1 -0
- package/dist/runtime/validator-registry.js +16 -0
- package/dist/runtime/validator-registry.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/contracts/frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export type OperatorBehavior = "deterministic" | "stateful";
|
|
2
|
+
export type ThreadSafety = "thread-safe" | "instance-confined" | "single-thread-only";
|
|
3
|
+
export interface OperatorCostHint {
|
|
4
|
+
cpu: "low" | "medium" | "high";
|
|
5
|
+
memoryBytes?: number;
|
|
6
|
+
attempts?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface OperatorDescriptor {
|
|
9
|
+
id: string;
|
|
10
|
+
version: string;
|
|
11
|
+
accepts: readonly string[];
|
|
12
|
+
produces: readonly string[];
|
|
13
|
+
configurationSchemaId: string;
|
|
14
|
+
cost: OperatorCostHint;
|
|
15
|
+
cancellation: "cooperative" | "termination-required" | "not-supported";
|
|
16
|
+
behavior: OperatorBehavior;
|
|
17
|
+
threadSafety: ThreadSafety;
|
|
18
|
+
}
|
|
19
|
+
export interface OperatorContext {
|
|
20
|
+
readonly signal?: AbortSignal;
|
|
21
|
+
readonly artifacts: FrameArtifactStore;
|
|
22
|
+
readonly budget?: ExecutionBudget;
|
|
23
|
+
readonly phaseTimings?: Record<string, number>;
|
|
24
|
+
readonly trace: (stage: string, detail?: string) => void;
|
|
25
|
+
}
|
|
26
|
+
export interface Operator<I, O, C = unknown> {
|
|
27
|
+
readonly descriptor: OperatorDescriptor;
|
|
28
|
+
execute(input: I, configuration: C, context: OperatorContext): Promise<O>;
|
|
29
|
+
}
|
|
30
|
+
export interface FrameArtifactStore {
|
|
31
|
+
readonly allocationCount: number;
|
|
32
|
+
readonly retainedBytes: number;
|
|
33
|
+
readonly memoryBudget: FrameMemoryBudget;
|
|
34
|
+
get<T>(key: string): T | undefined;
|
|
35
|
+
set<T>(key: string, value: T, estimatedBytes?: number, lease?: MemoryLease): void;
|
|
36
|
+
dispose(): void;
|
|
37
|
+
}
|
|
38
|
+
export interface TaskGraphNode {
|
|
39
|
+
id: string;
|
|
40
|
+
dependencies: string[];
|
|
41
|
+
run(context: OperatorContext): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
export declare function executeTaskGraph(nodes: TaskGraphNode[], context: OperatorContext, mode?: "sequential" | "parallel"): Promise<void>;
|
|
44
|
+
import type { ExecutionBudget } from "../runtime/execution-budget.js";
|
|
45
|
+
import type { FrameMemoryBudget, MemoryLease } from "../runtime/memory-budget.js";
|
|
46
|
+
//# sourceMappingURL=operator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../src/contracts/operator.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,UAAU,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AACtF,MAAM,WAAW,gBAAgB;IAAG,GAAG,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAC7G,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,GAAG,sBAAsB,GAAG,eAAe,CAAC;IACvE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;CAC5B;AACD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AACD,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO;IACzC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClF,OAAO,IAAI,IAAI,CAAC;CACjB;AACD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,GAAE,YAAY,GAAG,UAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtJ;AACD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export async function executeTaskGraph(nodes, context, mode = "sequential") {
|
|
2
|
+
const pending = new Map(nodes.map((node) => [node.id, node]));
|
|
3
|
+
const complete = new Set();
|
|
4
|
+
while (pending.size) {
|
|
5
|
+
if (context.signal?.aborted)
|
|
6
|
+
throw Object.assign(new Error("Capture graph cancelled."), { name: "AbortError" });
|
|
7
|
+
const ready = [...pending.values()].filter((node) => node.dependencies.every((id) => complete.has(id)));
|
|
8
|
+
if (!ready.length)
|
|
9
|
+
throw new Error("Capture graph has a cycle or a missing dependency.");
|
|
10
|
+
const batch = mode === "parallel" ? ready : ready.slice(0, 1);
|
|
11
|
+
await Promise.all(batch.map(async (node) => { await node.run(context); pending.delete(node.id); complete.add(node.id); }));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=operator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator.js","sourceRoot":"","sources":["../../src/contracts/operator.ts"],"names":[],"mappings":"AAuCA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAsB,EAAE,OAAwB,EAAE,OAAkC,YAAY;IACrI,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAChH,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACzF,MAAM,KAAK,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7H,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { StructuredPayload } from "@scanly/parsers";
|
|
2
|
+
import type { BarcodeFormat, BarcodeFormatClass } from "@scanly/scenario-schema";
|
|
3
|
+
import type { SdkError } from "./errors.js";
|
|
4
|
+
import type { MemoryObservation } from "../runtime/memory-budget.js";
|
|
5
|
+
export interface CornerPoint {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ValidationResult {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
validatorIds: string[];
|
|
12
|
+
messages: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface HeuristicQualitySignal {
|
|
15
|
+
value: number;
|
|
16
|
+
definition: string;
|
|
17
|
+
}
|
|
18
|
+
export interface HeuristicDebugMetrics {
|
|
19
|
+
entropyScore: number;
|
|
20
|
+
highFrequencyRatio: number;
|
|
21
|
+
candidateCountBeforeCap: number;
|
|
22
|
+
pathologicalPathActivated: boolean;
|
|
23
|
+
fallbackAttemptsUsed: number;
|
|
24
|
+
finalResult: "success" | "not-found" | "failure";
|
|
25
|
+
}
|
|
26
|
+
export interface ScanTiming {
|
|
27
|
+
totalMs: number;
|
|
28
|
+
timeToFirstResultMs?: number;
|
|
29
|
+
frameNormalizationMs?: number;
|
|
30
|
+
roiMs?: number;
|
|
31
|
+
localizationMs?: number;
|
|
32
|
+
candidateGenerationMs?: number;
|
|
33
|
+
candidateDeduplicationMs?: number;
|
|
34
|
+
preprocessingMs?: number;
|
|
35
|
+
rotationMs?: number;
|
|
36
|
+
decodingMs?: number;
|
|
37
|
+
engineMs?: Record<string, number>;
|
|
38
|
+
validationMs?: number;
|
|
39
|
+
semanticParsingMs?: number;
|
|
40
|
+
workerSetupMs?: number;
|
|
41
|
+
workerTransferMs?: number;
|
|
42
|
+
controlledMemory?: MemoryObservation;
|
|
43
|
+
}
|
|
44
|
+
export interface CandidateMetadata {
|
|
45
|
+
index: number;
|
|
46
|
+
score?: number;
|
|
47
|
+
padding?: string;
|
|
48
|
+
scale?: string;
|
|
49
|
+
rotation?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface ScanResult {
|
|
52
|
+
format: BarcodeFormat;
|
|
53
|
+
/** Alpha.5 generic execution class; optional for Alpha.4-compatible custom results. */
|
|
54
|
+
formatClass?: BarcodeFormatClass;
|
|
55
|
+
rawText: string;
|
|
56
|
+
rawBytes?: Uint8Array;
|
|
57
|
+
/** Pixel coordinates in the original normalized frame coordinate space. */
|
|
58
|
+
cornerPoints?: CornerPoint[];
|
|
59
|
+
/** Clockwise symbol orientation relative to the original normalized frame, when engine-derived. */
|
|
60
|
+
orientation?: number;
|
|
61
|
+
heuristicQuality?: HeuristicQualitySignal;
|
|
62
|
+
engine: {
|
|
63
|
+
id: string;
|
|
64
|
+
version: string;
|
|
65
|
+
variant?: string;
|
|
66
|
+
executionModel?: "javascript" | "wasm" | "native";
|
|
67
|
+
initializationMs?: number;
|
|
68
|
+
wasmLinearMemoryBytes?: number;
|
|
69
|
+
};
|
|
70
|
+
preprocessingPath: string[];
|
|
71
|
+
candidate?: CandidateMetadata;
|
|
72
|
+
frameId: string;
|
|
73
|
+
trackId?: string;
|
|
74
|
+
structuredPayload: StructuredPayload | null;
|
|
75
|
+
symbologyIdentifier?: string;
|
|
76
|
+
isGs1?: boolean;
|
|
77
|
+
metadata?: Record<string, unknown>;
|
|
78
|
+
validation: ValidationResult;
|
|
79
|
+
warnings: string[];
|
|
80
|
+
timing: ScanTiming;
|
|
81
|
+
}
|
|
82
|
+
export type NonEmptyArray<T> = [T, ...T[]];
|
|
83
|
+
export interface DebugTraceEvent {
|
|
84
|
+
atMs: number;
|
|
85
|
+
stage: string;
|
|
86
|
+
detail?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface ScanAttempt {
|
|
89
|
+
index: number;
|
|
90
|
+
engineId: string;
|
|
91
|
+
candidateIndex: number;
|
|
92
|
+
preprocessing: string;
|
|
93
|
+
rotation: number;
|
|
94
|
+
elapsedMs: number;
|
|
95
|
+
success: boolean;
|
|
96
|
+
}
|
|
97
|
+
export type EngineDiagnosticStatus = "success" | "not-found" | "unsupported" | "cancelled" | "timeout" | "initialization-failure" | "execution-failure";
|
|
98
|
+
export interface EngineDiagnostic {
|
|
99
|
+
engineId: string;
|
|
100
|
+
engineVersion: string;
|
|
101
|
+
status: EngineDiagnosticStatus;
|
|
102
|
+
elapsedMs: number;
|
|
103
|
+
attemptCount: number;
|
|
104
|
+
resultCount: number;
|
|
105
|
+
errorCode?: string;
|
|
106
|
+
variant?: string;
|
|
107
|
+
message?: string;
|
|
108
|
+
}
|
|
109
|
+
export interface ScanSuccess {
|
|
110
|
+
ok: true;
|
|
111
|
+
results: NonEmptyArray<ScanResult>;
|
|
112
|
+
primary: ScanResult;
|
|
113
|
+
frameId: string;
|
|
114
|
+
scenarioId: string;
|
|
115
|
+
attemptCount: number;
|
|
116
|
+
timing: ScanTiming;
|
|
117
|
+
trace?: DebugTraceEvent[];
|
|
118
|
+
attempts?: ScanAttempt[];
|
|
119
|
+
engineDiagnostics?: EngineDiagnostic[];
|
|
120
|
+
heuristics?: HeuristicDebugMetrics;
|
|
121
|
+
}
|
|
122
|
+
export interface ScanFailure {
|
|
123
|
+
ok: false;
|
|
124
|
+
error: SdkError;
|
|
125
|
+
frameId: string;
|
|
126
|
+
scenarioId: string;
|
|
127
|
+
attemptCount: number;
|
|
128
|
+
timing: ScanTiming;
|
|
129
|
+
trace?: DebugTraceEvent[];
|
|
130
|
+
attempts?: ScanAttempt[];
|
|
131
|
+
engineDiagnostics?: EngineDiagnostic[];
|
|
132
|
+
heuristics?: HeuristicDebugMetrics;
|
|
133
|
+
}
|
|
134
|
+
export type ScanOutcome = ScanSuccess | ScanFailure;
|
|
135
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/contracts/result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/contracts/result.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ScanResult } from "./result.js";
|
|
2
|
+
export interface ResultValidatorContext {
|
|
3
|
+
readonly signal?: AbortSignal;
|
|
4
|
+
readonly frameId: string;
|
|
5
|
+
readonly scenarioId: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ResultValidatorOutcome {
|
|
8
|
+
valid: boolean;
|
|
9
|
+
messages?: readonly string[];
|
|
10
|
+
}
|
|
11
|
+
export interface ResultValidator {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
validate(result: Readonly<ScanResult>, context: ResultValidatorContext): ResultValidatorOutcome | Promise<ResultValidatorOutcome>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/contracts/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,sBAAsB,GAAG,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACnI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/contracts/validator.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const SDK_VERSION: "2.0.0";
|
|
2
|
+
export * from "./contracts/frame.js";
|
|
3
|
+
export * from "./contracts/errors.js";
|
|
4
|
+
export * from "./contracts/result.js";
|
|
5
|
+
export * from "./contracts/engine.js";
|
|
6
|
+
export * from "./contracts/operator.js";
|
|
7
|
+
export * from "./contracts/validator.js";
|
|
8
|
+
export * from "./runtime/artifacts.js";
|
|
9
|
+
export * from "./runtime/execution-budget.js";
|
|
10
|
+
export * from "./runtime/memory-budget.js";
|
|
11
|
+
export * from "./runtime/engine-registry.js";
|
|
12
|
+
export * from "./runtime/operator-registry.js";
|
|
13
|
+
export * from "./runtime/validator-registry.js";
|
|
14
|
+
export * from "./runtime/scenario-compiler.js";
|
|
15
|
+
export * from "./runtime/builtin-operators.js";
|
|
16
|
+
export * from "./runtime/result-policies.js";
|
|
17
|
+
export * from "./runtime/frame-lease.js";
|
|
18
|
+
export * from "./runtime/frame-normalization.js";
|
|
19
|
+
export * from "./runtime/capabilities.js";
|
|
20
|
+
export * from "./runtime/router.js";
|
|
21
|
+
export * from "./runtime/session.js";
|
|
22
|
+
export * from "./barcode/format.js";
|
|
23
|
+
export * from "./barcode/format-selection.js";
|
|
24
|
+
export * from "./barcode/contracts.js";
|
|
25
|
+
export * from "./barcode/retail.js";
|
|
26
|
+
export * from "./industrial/index.js";
|
|
27
|
+
export { SCENARIO_SCHEMA_VERSION, BUILTIN_SCENARIOS, getBuiltinScenario, validateScenario, migrateScenario } from "@scanly/scenario-schema";
|
|
28
|
+
export type { ScenarioDefinition, ScenarioValidationIssue, BarcodeFormat, BarcodeFormatClass, BuiltinScenarioId, ScenarioPresetId } from "@scanly/scenario-schema";
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,EAAG,OAAgB,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5I,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const SDK_VERSION = "2.0.0";
|
|
2
|
+
export * from "./contracts/frame.js";
|
|
3
|
+
export * from "./contracts/errors.js";
|
|
4
|
+
export * from "./contracts/result.js";
|
|
5
|
+
export * from "./contracts/engine.js";
|
|
6
|
+
export * from "./contracts/operator.js";
|
|
7
|
+
export * from "./contracts/validator.js";
|
|
8
|
+
export * from "./runtime/artifacts.js";
|
|
9
|
+
export * from "./runtime/execution-budget.js";
|
|
10
|
+
export * from "./runtime/memory-budget.js";
|
|
11
|
+
export * from "./runtime/engine-registry.js";
|
|
12
|
+
export * from "./runtime/operator-registry.js";
|
|
13
|
+
export * from "./runtime/validator-registry.js";
|
|
14
|
+
export * from "./runtime/scenario-compiler.js";
|
|
15
|
+
export * from "./runtime/builtin-operators.js";
|
|
16
|
+
export * from "./runtime/result-policies.js";
|
|
17
|
+
export * from "./runtime/frame-lease.js";
|
|
18
|
+
export * from "./runtime/frame-normalization.js";
|
|
19
|
+
export * from "./runtime/capabilities.js";
|
|
20
|
+
export * from "./runtime/router.js";
|
|
21
|
+
export * from "./runtime/session.js";
|
|
22
|
+
export * from "./barcode/format.js";
|
|
23
|
+
export * from "./barcode/format-selection.js";
|
|
24
|
+
export * from "./barcode/contracts.js";
|
|
25
|
+
export * from "./barcode/retail.js";
|
|
26
|
+
export * from "./industrial/index.js";
|
|
27
|
+
export { SCENARIO_SCHEMA_VERSION, BUILTIN_SCENARIOS, getBuiltinScenario, validateScenario, migrateScenario } from "@scanly/scenario-schema";
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,OAAgB,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { NormalizedFrame } from "../contracts/frame.js";
|
|
2
|
+
import type { BarcodeCandidateRegion } from "./types.js";
|
|
3
|
+
export interface CandidateRegionDetectorOptions {
|
|
4
|
+
gridSize?: number;
|
|
5
|
+
windowCells?: number;
|
|
6
|
+
maximumRegions?: number;
|
|
7
|
+
minimumScore?: number;
|
|
8
|
+
}
|
|
9
|
+
/** Lightweight edge/line detector. Callers must retain a full-frame fallback. */
|
|
10
|
+
export declare class CandidateRegionDetector {
|
|
11
|
+
private readonly options;
|
|
12
|
+
constructor(options?: CandidateRegionDetectorOptions);
|
|
13
|
+
detect(frame: NormalizedFrame): BarcodeCandidateRegion[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=candidate-region.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidate-region.d.ts","sourceRoot":"","sources":["../../src/industrial/candidate-region.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,iFAAiF;AACjF,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,GAAE,8BAAmC;IAEzE,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,sBAAsB,EAAE;CAuCzD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/** Lightweight edge/line detector. Callers must retain a full-frame fallback. */
|
|
2
|
+
export class CandidateRegionDetector {
|
|
3
|
+
options;
|
|
4
|
+
constructor(options = {}) {
|
|
5
|
+
this.options = options;
|
|
6
|
+
}
|
|
7
|
+
detect(frame) {
|
|
8
|
+
const grid = clampInt(this.options.gridSize ?? 12, 4, 24);
|
|
9
|
+
const windowCells = clampInt(this.options.windowCells ?? 3, 1, Math.min(6, grid));
|
|
10
|
+
const maximumRegions = clampInt(this.options.maximumRegions ?? 6, 1, 16);
|
|
11
|
+
const cellWidth = Math.max(1, Math.ceil(frame.width / grid));
|
|
12
|
+
const cellHeight = Math.max(1, Math.ceil(frame.height / grid));
|
|
13
|
+
const cells = new Array(grid * grid);
|
|
14
|
+
for (let gy = 0; gy < grid; gy += 1)
|
|
15
|
+
for (let gx = 0; gx < grid; gx += 1) {
|
|
16
|
+
cells[gy * grid + gx] = inspectCell(frame, gx * cellWidth, gy * cellHeight, cellWidth, cellHeight);
|
|
17
|
+
}
|
|
18
|
+
const raw = [];
|
|
19
|
+
for (let gy = 0; gy <= grid - windowCells; gy += 1)
|
|
20
|
+
for (let gx = 0; gx <= grid - windowCells; gx += 1) {
|
|
21
|
+
let edge = 0;
|
|
22
|
+
let horizontal = 0;
|
|
23
|
+
let vertical = 0;
|
|
24
|
+
let contrast = 0;
|
|
25
|
+
for (let wy = 0; wy < windowCells; wy += 1)
|
|
26
|
+
for (let wx = 0; wx < windowCells; wx += 1) {
|
|
27
|
+
const cell = cells[(gy + wy) * grid + gx + wx];
|
|
28
|
+
edge += cell.edge;
|
|
29
|
+
horizontal += cell.horizontal;
|
|
30
|
+
vertical += cell.vertical;
|
|
31
|
+
contrast += cell.contrast;
|
|
32
|
+
}
|
|
33
|
+
const count = windowCells * windowCells;
|
|
34
|
+
const lineCoherence = Math.abs(horizontal - vertical) / Math.max(1, horizontal + vertical);
|
|
35
|
+
const score = Math.min(1, edge / count * 0.6 + contrast / count * 0.25 + lineCoherence * 0.15);
|
|
36
|
+
if (score < (this.options.minimumScore ?? 0.16))
|
|
37
|
+
continue;
|
|
38
|
+
const x = gx * cellWidth;
|
|
39
|
+
const y = gy * cellHeight;
|
|
40
|
+
const width = Math.min(frame.width - x, windowCells * cellWidth);
|
|
41
|
+
const height = Math.min(frame.height - y, windowCells * cellHeight);
|
|
42
|
+
raw.push({
|
|
43
|
+
id: `region-${gx}-${gy}`,
|
|
44
|
+
boundingBox: { x, y, width, height },
|
|
45
|
+
score,
|
|
46
|
+
orientationEstimate: horizontal >= vertical ? 0 : 90,
|
|
47
|
+
difficultyHints: [
|
|
48
|
+
...(contrast / count < 0.2 ? ["low-contrast"] : []),
|
|
49
|
+
...(lineCoherence > 0.55 ? ["linear-structure"] : []),
|
|
50
|
+
...(Math.min(width, height) < Math.min(frame.width, frame.height) * 0.18 ? ["small-module"] : []),
|
|
51
|
+
],
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return nonMaximumSuppression(raw, maximumRegions);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function inspectCell(frame, x0, y0, width, height) {
|
|
58
|
+
const step = Math.max(1, Math.floor(Math.min(width, height) / 8));
|
|
59
|
+
let edge = 0;
|
|
60
|
+
let horizontal = 0;
|
|
61
|
+
let vertical = 0;
|
|
62
|
+
let minimum = 255;
|
|
63
|
+
let maximum = 0;
|
|
64
|
+
let count = 0;
|
|
65
|
+
for (let y = y0 + step; y < Math.min(frame.height, y0 + height); y += step)
|
|
66
|
+
for (let x = x0 + step; x < Math.min(frame.width, x0 + width); x += step) {
|
|
67
|
+
const value = luminance(frame, x, y);
|
|
68
|
+
const dx = Math.abs(value - luminance(frame, x - step, y));
|
|
69
|
+
const dy = Math.abs(value - luminance(frame, x, y - step));
|
|
70
|
+
horizontal += dx;
|
|
71
|
+
vertical += dy;
|
|
72
|
+
edge += Math.min(1, (dx + dy) / 96);
|
|
73
|
+
minimum = Math.min(minimum, value);
|
|
74
|
+
maximum = Math.max(maximum, value);
|
|
75
|
+
count += 1;
|
|
76
|
+
}
|
|
77
|
+
return { edge: edge / Math.max(1, count), horizontal, vertical, contrast: (maximum - minimum) / 255 };
|
|
78
|
+
}
|
|
79
|
+
function nonMaximumSuppression(regions, maximum) {
|
|
80
|
+
const sorted = [...regions].sort((a, b) => b.score - a.score || a.id.localeCompare(b.id));
|
|
81
|
+
const kept = [];
|
|
82
|
+
for (const region of sorted) {
|
|
83
|
+
if (kept.length >= maximum)
|
|
84
|
+
break;
|
|
85
|
+
if (!kept.some((existing) => intersectionOverUnion(existing.boundingBox, region.boundingBox) > 0.45))
|
|
86
|
+
kept.push(region);
|
|
87
|
+
}
|
|
88
|
+
return kept;
|
|
89
|
+
}
|
|
90
|
+
function intersectionOverUnion(a, b) {
|
|
91
|
+
const left = Math.max(a.x, b.x);
|
|
92
|
+
const top = Math.max(a.y, b.y);
|
|
93
|
+
const right = Math.min(a.x + a.width, b.x + b.width);
|
|
94
|
+
const bottom = Math.min(a.y + a.height, b.y + b.height);
|
|
95
|
+
const intersection = Math.max(0, right - left) * Math.max(0, bottom - top);
|
|
96
|
+
const union = a.width * a.height + b.width * b.height - intersection;
|
|
97
|
+
return union <= 0 ? 0 : intersection / union;
|
|
98
|
+
}
|
|
99
|
+
function luminance(frame, x, y) {
|
|
100
|
+
const row = y * frame.rowStride;
|
|
101
|
+
if (frame.pixelFormat === "gray8" || frame.pixelFormat === "yuv420")
|
|
102
|
+
return frame.data[row + x] ?? 0;
|
|
103
|
+
const channels = frame.pixelFormat === "rgba8888" ? 4 : 3;
|
|
104
|
+
const offset = row + x * channels;
|
|
105
|
+
return (frame.data[offset] ?? 0) * 0.2126 + (frame.data[offset + 1] ?? 0) * 0.7152 + (frame.data[offset + 2] ?? 0) * 0.0722;
|
|
106
|
+
}
|
|
107
|
+
function clampInt(value, minimum, maximum) { return Math.max(minimum, Math.min(maximum, Math.floor(value))); }
|
|
108
|
+
//# sourceMappingURL=candidate-region.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidate-region.js","sourceRoot":"","sources":["../../src/industrial/candidate-region.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CornerPoint } from "../contracts/result.js";
|
|
2
|
+
import type { RecoveryCoordinateTransform } from "./types.js";
|
|
3
|
+
export declare function identityRecoveryTransform(): RecoveryCoordinateTransform;
|
|
4
|
+
export declare function affineRecoveryTransform(kind: "crop" | "resize" | "padding", toOriginal: (point: CornerPoint) => CornerPoint, fromOriginal: (point: CornerPoint) => CornerPoint): RecoveryCoordinateTransform;
|
|
5
|
+
export declare function projectiveRecoveryTransform(candidateToOriginal: readonly number[], originalToCandidate: readonly number[]): RecoveryCoordinateTransform;
|
|
6
|
+
export declare function curvedRecoveryTransform(toOriginal: (point: CornerPoint) => CornerPoint, fromOriginal: (point: CornerPoint) => CornerPoint): RecoveryCoordinateTransform;
|
|
7
|
+
export declare function composeRecoveryTransforms(inner: RecoveryCoordinateTransform, outer: RecoveryCoordinateTransform): RecoveryCoordinateTransform;
|
|
8
|
+
export declare function mapRecoveryGeometry(points: readonly CornerPoint[] | undefined, transform: RecoveryCoordinateTransform): CornerPoint[] | undefined;
|
|
9
|
+
//# sourceMappingURL=coordinate-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinate-transform.d.ts","sourceRoot":"","sources":["../../src/industrial/coordinate-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,yBAAyB,IAAI,2BAA2B,CAEvE;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,EACnC,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,EAC/C,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,GAChD,2BAA2B,CAE7B;AAED,wBAAgB,2BAA2B,CACzC,mBAAmB,EAAE,SAAS,MAAM,EAAE,EACtC,mBAAmB,EAAE,SAAS,MAAM,EAAE,GACrC,2BAA2B,CAO7B;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,EAC/C,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,GAChD,2BAA2B,CAE7B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,2BAA2B,EAClC,KAAK,EAAE,2BAA2B,GACjC,2BAA2B,CAM7B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,2BAA2B,GAAG,WAAW,EAAE,GAAG,SAAS,CAIjJ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export function identityRecoveryTransform() {
|
|
2
|
+
return { kind: "identity", forward: copy, inverse: copy };
|
|
3
|
+
}
|
|
4
|
+
export function affineRecoveryTransform(kind, toOriginal, fromOriginal) {
|
|
5
|
+
return { kind, forward: toOriginal, inverse: fromOriginal };
|
|
6
|
+
}
|
|
7
|
+
export function projectiveRecoveryTransform(candidateToOriginal, originalToCandidate) {
|
|
8
|
+
if (candidateToOriginal.length !== 9 || originalToCandidate.length !== 9)
|
|
9
|
+
throw new RangeError("Projective transforms require 3x3 matrices.");
|
|
10
|
+
return {
|
|
11
|
+
kind: "perspective",
|
|
12
|
+
forward: (point) => project(candidateToOriginal, point),
|
|
13
|
+
inverse: (point) => project(originalToCandidate, point),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export function curvedRecoveryTransform(toOriginal, fromOriginal) {
|
|
17
|
+
return { kind: "curved", forward: toOriginal, inverse: fromOriginal };
|
|
18
|
+
}
|
|
19
|
+
export function composeRecoveryTransforms(inner, outer) {
|
|
20
|
+
return {
|
|
21
|
+
kind: "composed",
|
|
22
|
+
forward: (point) => outer.forward(inner.forward(point)),
|
|
23
|
+
inverse: (point) => inner.inverse(outer.inverse(point)),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function mapRecoveryGeometry(points, transform) {
|
|
27
|
+
if (!points || points.length < 3)
|
|
28
|
+
return undefined;
|
|
29
|
+
const mapped = points.map((point) => transform.forward(point));
|
|
30
|
+
return mapped.every((point) => Number.isFinite(point.x) && Number.isFinite(point.y)) ? mapped : undefined;
|
|
31
|
+
}
|
|
32
|
+
function project(matrix, point) {
|
|
33
|
+
const denominator = matrix[6] * point.x + matrix[7] * point.y + matrix[8];
|
|
34
|
+
if (!Number.isFinite(denominator) || Math.abs(denominator) < 1e-9)
|
|
35
|
+
return { x: Number.NaN, y: Number.NaN };
|
|
36
|
+
return {
|
|
37
|
+
x: (matrix[0] * point.x + matrix[1] * point.y + matrix[2]) / denominator,
|
|
38
|
+
y: (matrix[3] * point.x + matrix[4] * point.y + matrix[5]) / denominator,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function copy(point) { return { x: point.x, y: point.y }; }
|
|
42
|
+
//# sourceMappingURL=coordinate-transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinate-transform.js","sourceRoot":"","sources":["../../src/industrial/coordinate-transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DecodeCandidate, DecodeCandidateSet } from "./types.js";
|
|
2
|
+
export interface DecodeCandidateResolverOptions {
|
|
3
|
+
temporalObservations?: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class DecodeCandidateResolver {
|
|
6
|
+
resolve(candidates: readonly DecodeCandidate[], options?: DecodeCandidateResolverOptions): DecodeCandidateSet;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=decode-candidate-conflict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode-candidate-conflict.d.ts","sourceRoot":"","sources":["../../src/industrial/decode-candidate-conflict.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAA2B,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/F,MAAM,WAAW,8BAA8B;IAAG,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAAE;AAElF,qBAAa,uBAAuB;IAClC,OAAO,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,EAAE,OAAO,GAAE,8BAAmC,GAAG,kBAAkB;CAoClH"}
|