@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.
Files changed (226) hide show
  1. package/README.md +3 -0
  2. package/dist/barcode/contracts.d.ts +44 -0
  3. package/dist/barcode/contracts.d.ts.map +1 -0
  4. package/dist/barcode/contracts.js +33 -0
  5. package/dist/barcode/contracts.js.map +1 -0
  6. package/dist/barcode/format-selection.d.ts +12 -0
  7. package/dist/barcode/format-selection.d.ts.map +1 -0
  8. package/dist/barcode/format-selection.js +32 -0
  9. package/dist/barcode/format-selection.js.map +1 -0
  10. package/dist/barcode/format.d.ts +7 -0
  11. package/dist/barcode/format.d.ts.map +1 -0
  12. package/dist/barcode/format.js +20 -0
  13. package/dist/barcode/format.js.map +1 -0
  14. package/dist/barcode/index.d.ts +5 -0
  15. package/dist/barcode/index.d.ts.map +1 -0
  16. package/dist/barcode/index.js +5 -0
  17. package/dist/barcode/index.js.map +1 -0
  18. package/dist/barcode/retail.d.ts +16 -0
  19. package/dist/barcode/retail.d.ts.map +1 -0
  20. package/dist/barcode/retail.js +95 -0
  21. package/dist/barcode/retail.js.map +1 -0
  22. package/dist/contracts/engine.d.ts +84 -0
  23. package/dist/contracts/engine.d.ts.map +1 -0
  24. package/dist/contracts/engine.js +2 -0
  25. package/dist/contracts/engine.js.map +1 -0
  26. package/dist/contracts/errors.d.ts +17 -0
  27. package/dist/contracts/errors.d.ts.map +1 -0
  28. package/dist/contracts/errors.js +31 -0
  29. package/dist/contracts/errors.js.map +1 -0
  30. package/dist/contracts/frame.d.ts +37 -0
  31. package/dist/contracts/frame.d.ts.map +1 -0
  32. package/dist/contracts/frame.js +77 -0
  33. package/dist/contracts/frame.js.map +1 -0
  34. package/dist/contracts/operator.d.ts +46 -0
  35. package/dist/contracts/operator.d.ts.map +1 -0
  36. package/dist/contracts/operator.js +14 -0
  37. package/dist/contracts/operator.js.map +1 -0
  38. package/dist/contracts/result.d.ts +135 -0
  39. package/dist/contracts/result.d.ts.map +1 -0
  40. package/dist/contracts/result.js +2 -0
  41. package/dist/contracts/result.js.map +1 -0
  42. package/dist/contracts/validator.d.ts +15 -0
  43. package/dist/contracts/validator.d.ts.map +1 -0
  44. package/dist/contracts/validator.js +2 -0
  45. package/dist/contracts/validator.js.map +1 -0
  46. package/dist/index.d.ts +29 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +28 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/industrial/candidate-region.d.ts +15 -0
  51. package/dist/industrial/candidate-region.d.ts.map +1 -0
  52. package/dist/industrial/candidate-region.js +108 -0
  53. package/dist/industrial/candidate-region.js.map +1 -0
  54. package/dist/industrial/coordinate-transform.d.ts +9 -0
  55. package/dist/industrial/coordinate-transform.d.ts.map +1 -0
  56. package/dist/industrial/coordinate-transform.js +42 -0
  57. package/dist/industrial/coordinate-transform.js.map +1 -0
  58. package/dist/industrial/decode-candidate-conflict.d.ts +8 -0
  59. package/dist/industrial/decode-candidate-conflict.d.ts.map +1 -0
  60. package/dist/industrial/decode-candidate-conflict.js +97 -0
  61. package/dist/industrial/decode-candidate-conflict.js.map +1 -0
  62. package/dist/industrial/difficulty-diagnosis.d.ts +15 -0
  63. package/dist/industrial/difficulty-diagnosis.d.ts.map +1 -0
  64. package/dist/industrial/difficulty-diagnosis.js +291 -0
  65. package/dist/industrial/difficulty-diagnosis.js.map +1 -0
  66. package/dist/industrial/index.d.ts +13 -0
  67. package/dist/industrial/index.d.ts.map +1 -0
  68. package/dist/industrial/index.js +13 -0
  69. package/dist/industrial/index.js.map +1 -0
  70. package/dist/industrial/memory.d.ts +28 -0
  71. package/dist/industrial/memory.d.ts.map +1 -0
  72. package/dist/industrial/memory.js +65 -0
  73. package/dist/industrial/memory.js.map +1 -0
  74. package/dist/industrial/pixels.d.ts +44 -0
  75. package/dist/industrial/pixels.d.ts.map +1 -0
  76. package/dist/industrial/pixels.js +295 -0
  77. package/dist/industrial/pixels.js.map +1 -0
  78. package/dist/industrial/recovery-pipeline.d.ts +26 -0
  79. package/dist/industrial/recovery-pipeline.d.ts.map +1 -0
  80. package/dist/industrial/recovery-pipeline.js +149 -0
  81. package/dist/industrial/recovery-pipeline.js.map +1 -0
  82. package/dist/industrial/recovery-planner.d.ts +10 -0
  83. package/dist/industrial/recovery-planner.d.ts.map +1 -0
  84. package/dist/industrial/recovery-planner.js +107 -0
  85. package/dist/industrial/recovery-planner.js.map +1 -0
  86. package/dist/industrial/recovery-route-registry.d.ts +12 -0
  87. package/dist/industrial/recovery-route-registry.d.ts.map +1 -0
  88. package/dist/industrial/recovery-route-registry.js +15 -0
  89. package/dist/industrial/recovery-route-registry.js.map +1 -0
  90. package/dist/industrial/recovery-routes.d.ts +89 -0
  91. package/dist/industrial/recovery-routes.d.ts.map +1 -0
  92. package/dist/industrial/recovery-routes.js +280 -0
  93. package/dist/industrial/recovery-routes.js.map +1 -0
  94. package/dist/industrial/scan-evidence.d.ts +5 -0
  95. package/dist/industrial/scan-evidence.d.ts.map +1 -0
  96. package/dist/industrial/scan-evidence.js +63 -0
  97. package/dist/industrial/scan-evidence.js.map +1 -0
  98. package/dist/industrial/scanner-diagnostics.d.ts +19 -0
  99. package/dist/industrial/scanner-diagnostics.d.ts.map +1 -0
  100. package/dist/industrial/scanner-diagnostics.js +35 -0
  101. package/dist/industrial/scanner-diagnostics.js.map +1 -0
  102. package/dist/industrial/types.d.ts +189 -0
  103. package/dist/industrial/types.d.ts.map +1 -0
  104. package/dist/industrial/types.js +2 -0
  105. package/dist/industrial/types.js.map +1 -0
  106. package/dist/node.d.ts +2 -0
  107. package/dist/node.d.ts.map +1 -0
  108. package/dist/node.js +2 -0
  109. package/dist/node.js.map +1 -0
  110. package/dist/qr/candidate-dedupe.d.ts +6 -0
  111. package/dist/qr/candidate-dedupe.d.ts.map +1 -0
  112. package/dist/qr/candidate-dedupe.js +27 -0
  113. package/dist/qr/candidate-dedupe.js.map +1 -0
  114. package/dist/qr/candidate-generation.d.ts +46 -0
  115. package/dist/qr/candidate-generation.d.ts.map +1 -0
  116. package/dist/qr/candidate-generation.js +277 -0
  117. package/dist/qr/candidate-generation.js.map +1 -0
  118. package/dist/qr/decode-pipeline.d.ts +14 -0
  119. package/dist/qr/decode-pipeline.d.ts.map +1 -0
  120. package/dist/qr/decode-pipeline.js +615 -0
  121. package/dist/qr/decode-pipeline.js.map +1 -0
  122. package/dist/qr/geometry.d.ts +24 -0
  123. package/dist/qr/geometry.d.ts.map +1 -0
  124. package/dist/qr/geometry.js +64 -0
  125. package/dist/qr/geometry.js.map +1 -0
  126. package/dist/qr/grayscale.d.ts +13 -0
  127. package/dist/qr/grayscale.d.ts.map +1 -0
  128. package/dist/qr/grayscale.js +46 -0
  129. package/dist/qr/grayscale.js.map +1 -0
  130. package/dist/qr/image-loader-node.d.ts +4 -0
  131. package/dist/qr/image-loader-node.d.ts.map +1 -0
  132. package/dist/qr/image-loader-node.js +26 -0
  133. package/dist/qr/image-loader-node.js.map +1 -0
  134. package/dist/qr/index.d.ts +15 -0
  135. package/dist/qr/index.d.ts.map +1 -0
  136. package/dist/qr/index.js +15 -0
  137. package/dist/qr/index.js.map +1 -0
  138. package/dist/qr/jsqr-decoder.d.ts +10 -0
  139. package/dist/qr/jsqr-decoder.d.ts.map +1 -0
  140. package/dist/qr/jsqr-decoder.js +18 -0
  141. package/dist/qr/jsqr-decoder.js.map +1 -0
  142. package/dist/qr/preprocess.d.ts +18 -0
  143. package/dist/qr/preprocess.d.ts.map +1 -0
  144. package/dist/qr/preprocess.js +165 -0
  145. package/dist/qr/preprocess.js.map +1 -0
  146. package/dist/qr/region-detection.d.ts +25 -0
  147. package/dist/qr/region-detection.d.ts.map +1 -0
  148. package/dist/qr/region-detection.js +129 -0
  149. package/dist/qr/region-detection.js.map +1 -0
  150. package/dist/qr/result-normalizer.d.ts +9 -0
  151. package/dist/qr/result-normalizer.d.ts.map +1 -0
  152. package/dist/qr/result-normalizer.js +70 -0
  153. package/dist/qr/result-normalizer.js.map +1 -0
  154. package/dist/qr/rotate.d.ts +5 -0
  155. package/dist/qr/rotate.d.ts.map +1 -0
  156. package/dist/qr/rotate.js +51 -0
  157. package/dist/qr/rotate.js.map +1 -0
  158. package/dist/qr/types.d.ts +186 -0
  159. package/dist/qr/types.d.ts.map +1 -0
  160. package/dist/qr/types.js +67 -0
  161. package/dist/qr/types.js.map +1 -0
  162. package/dist/qr/zxing-decoder.d.ts +8 -0
  163. package/dist/qr/zxing-decoder.d.ts.map +1 -0
  164. package/dist/qr/zxing-decoder.js +33 -0
  165. package/dist/qr/zxing-decoder.js.map +1 -0
  166. package/dist/runtime/artifacts.d.ts +16 -0
  167. package/dist/runtime/artifacts.d.ts.map +1 -0
  168. package/dist/runtime/artifacts.js +52 -0
  169. package/dist/runtime/artifacts.js.map +1 -0
  170. package/dist/runtime/builtin-operators.d.ts +12 -0
  171. package/dist/runtime/builtin-operators.d.ts.map +1 -0
  172. package/dist/runtime/builtin-operators.js +487 -0
  173. package/dist/runtime/builtin-operators.js.map +1 -0
  174. package/dist/runtime/capabilities.d.ts +32 -0
  175. package/dist/runtime/capabilities.d.ts.map +1 -0
  176. package/dist/runtime/capabilities.js +18 -0
  177. package/dist/runtime/capabilities.js.map +1 -0
  178. package/dist/runtime/engine-registry.d.ts +19 -0
  179. package/dist/runtime/engine-registry.d.ts.map +1 -0
  180. package/dist/runtime/engine-registry.js +136 -0
  181. package/dist/runtime/engine-registry.js.map +1 -0
  182. package/dist/runtime/execution-budget.d.ts +25 -0
  183. package/dist/runtime/execution-budget.d.ts.map +1 -0
  184. package/dist/runtime/execution-budget.js +41 -0
  185. package/dist/runtime/execution-budget.js.map +1 -0
  186. package/dist/runtime/frame-lease.d.ts +10 -0
  187. package/dist/runtime/frame-lease.d.ts.map +1 -0
  188. package/dist/runtime/frame-lease.js +17 -0
  189. package/dist/runtime/frame-lease.js.map +1 -0
  190. package/dist/runtime/frame-normalization.d.ts +13 -0
  191. package/dist/runtime/frame-normalization.d.ts.map +1 -0
  192. package/dist/runtime/frame-normalization.js +21 -0
  193. package/dist/runtime/frame-normalization.js.map +1 -0
  194. package/dist/runtime/memory-budget.d.ts +32 -0
  195. package/dist/runtime/memory-budget.d.ts.map +1 -0
  196. package/dist/runtime/memory-budget.js +109 -0
  197. package/dist/runtime/memory-budget.js.map +1 -0
  198. package/dist/runtime/operator-registry.d.ts +11 -0
  199. package/dist/runtime/operator-registry.d.ts.map +1 -0
  200. package/dist/runtime/operator-registry.js +19 -0
  201. package/dist/runtime/operator-registry.js.map +1 -0
  202. package/dist/runtime/result-policies.d.ts +21 -0
  203. package/dist/runtime/result-policies.d.ts.map +1 -0
  204. package/dist/runtime/result-policies.js +62 -0
  205. package/dist/runtime/result-policies.js.map +1 -0
  206. package/dist/runtime/router.d.ts +45 -0
  207. package/dist/runtime/router.d.ts.map +1 -0
  208. package/dist/runtime/router.js +202 -0
  209. package/dist/runtime/router.js.map +1 -0
  210. package/dist/runtime/scenario-compiler.d.ts +32 -0
  211. package/dist/runtime/scenario-compiler.d.ts.map +1 -0
  212. package/dist/runtime/scenario-compiler.js +131 -0
  213. package/dist/runtime/scenario-compiler.js.map +1 -0
  214. package/dist/runtime/scenario-runtime.d.ts +4 -0
  215. package/dist/runtime/scenario-runtime.d.ts.map +1 -0
  216. package/dist/runtime/scenario-runtime.js +32 -0
  217. package/dist/runtime/scenario-runtime.js.map +1 -0
  218. package/dist/runtime/session.d.ts +40 -0
  219. package/dist/runtime/session.d.ts.map +1 -0
  220. package/dist/runtime/session.js +117 -0
  221. package/dist/runtime/session.js.map +1 -0
  222. package/dist/runtime/validator-registry.d.ts +11 -0
  223. package/dist/runtime/validator-registry.d.ts.map +1 -0
  224. package/dist/runtime/validator-registry.js +16 -0
  225. package/dist/runtime/validator-registry.js.map +1 -0
  226. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=result.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/contracts/validator.ts"],"names":[],"mappings":""}
@@ -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":"AAGA,MAAM,UAAU,yBAAyB;IACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAmC,EACnC,UAA+C,EAC/C,YAAiD;IAEjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,mBAAsC,EACtC,mBAAsC;IAEtC,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAC;IAC9I,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC;QACvD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAA+C,EAC/C,YAAiD;IAEjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAkC,EAClC,KAAkC;IAElC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA0C,EAAE,SAAsC;IACpH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5G,CAAC;AAED,SAAS,OAAO,CAAC,MAAyB,EAAE,KAAkB;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI;QAAE,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3G,OAAO;QACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW;QACxE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW;KACzE,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,KAAkB,IAAiB,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -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"}