@ifc-lite/geometry 7.6.0 → 7.8.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.
Files changed (101) hide show
  1. package/README.md +64 -0
  2. package/dist/domain-export-call.d.ts +4 -0
  3. package/dist/domain-export-call.d.ts.map +1 -0
  4. package/dist/domain-export-call.js +19 -0
  5. package/dist/domain-export-call.js.map +1 -0
  6. package/dist/geometry-parallel-options.d.ts +15 -0
  7. package/dist/geometry-parallel-options.d.ts.map +1 -1
  8. package/dist/geometry-parallel.d.ts +2 -47
  9. package/dist/geometry-parallel.d.ts.map +1 -1
  10. package/dist/geometry-parallel.js +50 -146
  11. package/dist/geometry-parallel.js.map +1 -1
  12. package/dist/geometry-worker-pool.d.ts +72 -0
  13. package/dist/geometry-worker-pool.d.ts.map +1 -0
  14. package/dist/geometry-worker-pool.js +176 -0
  15. package/dist/geometry-worker-pool.js.map +1 -0
  16. package/dist/geometry.worker.d.ts.map +1 -1
  17. package/dist/geometry.worker.js +34 -36
  18. package/dist/geometry.worker.js.map +1 -1
  19. package/dist/huge-file-error.d.ts +1 -2
  20. package/dist/huge-file-error.d.ts.map +1 -1
  21. package/dist/huge-file-error.js +4 -5
  22. package/dist/huge-file-error.js.map +1 -1
  23. package/dist/hung-job-recovery.d.ts +26 -2
  24. package/dist/hung-job-recovery.d.ts.map +1 -1
  25. package/dist/hung-job-recovery.js +42 -7
  26. package/dist/hung-job-recovery.js.map +1 -1
  27. package/dist/ifc-lite-bridge.d.ts +2 -0
  28. package/dist/ifc-lite-bridge.d.ts.map +1 -1
  29. package/dist/ifc-lite-bridge.js +19 -35
  30. package/dist/ifc-lite-bridge.js.map +1 -1
  31. package/dist/in-call-heartbeat.d.ts +20 -0
  32. package/dist/in-call-heartbeat.d.ts.map +1 -0
  33. package/dist/in-call-heartbeat.js +39 -0
  34. package/dist/in-call-heartbeat.js.map +1 -0
  35. package/dist/index.d.ts +9 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +15 -30
  38. package/dist/index.js.map +1 -1
  39. package/dist/main-engine-init.d.ts +5 -0
  40. package/dist/main-engine-init.d.ts.map +1 -0
  41. package/dist/main-engine-init.js +42 -0
  42. package/dist/main-engine-init.js.map +1 -0
  43. package/dist/map-normalization-capability.d.ts +7 -0
  44. package/dist/map-normalization-capability.d.ts.map +1 -0
  45. package/dist/map-normalization-capability.js +32 -0
  46. package/dist/map-normalization-capability.js.map +1 -0
  47. package/dist/native-bridge.d.ts +1 -0
  48. package/dist/native-bridge.d.ts.map +1 -1
  49. package/dist/native-bridge.js +1 -0
  50. package/dist/native-bridge.js.map +1 -1
  51. package/dist/perf-flags.d.ts +55 -0
  52. package/dist/perf-flags.d.ts.map +1 -0
  53. package/dist/perf-flags.js +66 -0
  54. package/dist/perf-flags.js.map +1 -0
  55. package/dist/platform-bridge.d.ts +2 -0
  56. package/dist/platform-bridge.d.ts.map +1 -1
  57. package/dist/platform-bridge.js.map +1 -1
  58. package/dist/prepass-routing.d.ts +53 -0
  59. package/dist/prepass-routing.d.ts.map +1 -0
  60. package/dist/prepass-routing.js +100 -0
  61. package/dist/prepass-routing.js.map +1 -0
  62. package/dist/remesh/remesh-client.d.ts.map +1 -1
  63. package/dist/remesh/remesh-client.js +5 -1
  64. package/dist/remesh/remesh-client.js.map +1 -1
  65. package/dist/remesh/remesh-core.d.ts.map +1 -1
  66. package/dist/remesh/remesh-core.js +29 -11
  67. package/dist/remesh/remesh-core.js.map +1 -1
  68. package/dist/remesh/remesh-protocol.d.ts +10 -4
  69. package/dist/remesh/remesh-protocol.d.ts.map +1 -1
  70. package/dist/remesh/remesh-protocol.js.map +1 -1
  71. package/dist/remesh/remesh.worker.js +25 -10
  72. package/dist/remesh/remesh.worker.js.map +1 -1
  73. package/dist/scan-proposals.d.ts +132 -0
  74. package/dist/scan-proposals.d.ts.map +1 -0
  75. package/dist/scan-proposals.js +12 -0
  76. package/dist/scan-proposals.js.map +1 -0
  77. package/dist/scan-segmentation.d.ts +205 -0
  78. package/dist/scan-segmentation.d.ts.map +1 -0
  79. package/dist/scan-segmentation.js +17 -0
  80. package/dist/scan-segmentation.js.map +1 -0
  81. package/dist/warm-pool.d.ts +27 -0
  82. package/dist/warm-pool.d.ts.map +1 -0
  83. package/dist/warm-pool.js +48 -0
  84. package/dist/warm-pool.js.map +1 -0
  85. package/dist/wasm-shared-module.d.ts +17 -19
  86. package/dist/wasm-shared-module.d.ts.map +1 -1
  87. package/dist/wasm-shared-module.js +90 -77
  88. package/dist/wasm-shared-module.js.map +1 -1
  89. package/dist/wasm-streaming-guard.d.ts +2 -0
  90. package/dist/wasm-streaming-guard.d.ts.map +1 -0
  91. package/dist/wasm-streaming-guard.js +22 -0
  92. package/dist/wasm-streaming-guard.js.map +1 -0
  93. package/dist/worker-count.d.ts +10 -0
  94. package/dist/worker-count.d.ts.map +1 -1
  95. package/dist/worker-count.js +19 -0
  96. package/dist/worker-count.js.map +1 -1
  97. package/dist/worker-trace.d.ts +16 -0
  98. package/dist/worker-trace.d.ts.map +1 -0
  99. package/dist/worker-trace.js +39 -0
  100. package/dist/worker-trace.js.map +1 -0
  101. package/package.json +17 -6
@@ -0,0 +1,100 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * Pure planning helpers of the parallel pipeline (moved out of
6
+ * `geometry-parallel.ts`, which re-exports them): the pre-pass class-byte span
7
+ * lists and content-affinity job routing.
8
+ */
9
+ /**
10
+ * Prepass class-byte layout, mirroring the `PREPASS_CLASS_*` definitions in
11
+ * `rust/processing/src/shard_classes.rs` (the source of truth — these are
12
+ * pinned to it by `prepass-class-spans.test.ts`).
13
+ *
14
+ * The producer packs a named code in the LOW bits and composes FLAG bits on
15
+ * top (`PREPASS_CLASS_FLAG_GEOMETRY_JOB` 0x80, `..._FLAG_TYPE_CANDIDATE`
16
+ * 0x40), so a consumer must mask before comparing — the Rust consumer does
17
+ * (`gpu_meshes/prepass_discovery.rs`), and so does {@link extractPrepassSpanLists}.
18
+ */
19
+ export const PREPASS_CLASS_CODE_MASK = 0x3f;
20
+ /** `IFCSTYLEDITEM`. */
21
+ export const PREPASS_CLASS_STYLED_ITEM = 4;
22
+ /** `IFCINDEXEDCOLOURMAP`. */
23
+ export const PREPASS_CLASS_INDEXED_COLOUR_MAP = 5;
24
+ /** `IFCMATERIALDEFINITIONREPRESENTATION`. */
25
+ export const PREPASS_CLASS_MATERIAL_DEF_REPR = 6;
26
+ /** `IFCRELASSOCIATESMATERIAL`. */
27
+ export const PREPASS_CLASS_REL_ASSOCIATES_MATERIAL = 7;
28
+ /** `IFCRELVOIDSELEMENT`. */
29
+ export const PREPASS_CLASS_REL_VOIDS = 8;
30
+ /** `IFCRELFILLSELEMENT`. */
31
+ export const PREPASS_CLASS_REL_FILLS = 9;
32
+ /** `IFCRELAGGREGATES`. */
33
+ export const PREPASS_CLASS_REL_AGGREGATES = 10;
34
+ /** The classes the host builds span lists for (every other code is ignored). */
35
+ const HOST_SPAN_CLASSES = [
36
+ PREPASS_CLASS_STYLED_ITEM,
37
+ PREPASS_CLASS_INDEXED_COLOUR_MAP,
38
+ PREPASS_CLASS_MATERIAL_DEF_REPR,
39
+ PREPASS_CLASS_REL_ASSOCIATES_MATERIAL,
40
+ PREPASS_CLASS_REL_VOIDS,
41
+ PREPASS_CLASS_REL_FILLS,
42
+ PREPASS_CLASS_REL_AGGREGATES,
43
+ ];
44
+ /**
45
+ * Build one `(id, start, length)` span list per host-consumed prepass class
46
+ * from the stitched shard columns, in FILE ORDER. Every comparison goes
47
+ * through {@link PREPASS_CLASS_CODE_MASK}, so a record that carries a flag bit
48
+ * alongside its named code still lands in its list instead of being dropped.
49
+ * Returns exact-size arrays (one entry per class in `HOST_SPAN_CLASSES`,
50
+ * empty when the file has none).
51
+ */
52
+ export function extractPrepassSpanLists(classes, ids, starts, lengths) {
53
+ // Sized by the code mask rather than by the highest class the host consumes:
54
+ // a masked code is always < 64, so a class added on the Rust side cannot
55
+ // write out of bounds here (typed arrays discard such writes silently).
56
+ const counts = new Uint32Array(PREPASS_CLASS_CODE_MASK + 1);
57
+ for (let i = 0; i < classes.length; i++)
58
+ counts[classes[i] & PREPASS_CLASS_CODE_MASK]++;
59
+ const slots = new Map();
60
+ for (const k of HOST_SPAN_CLASSES)
61
+ slots.set(k, { arr: new Uint32Array(counts[k] * 3), w: 0 });
62
+ for (let i = 0; i < classes.length; i++) {
63
+ const slot = slots.get(classes[i] & PREPASS_CLASS_CODE_MASK);
64
+ if (!slot)
65
+ continue;
66
+ slot.arr[slot.w] = ids[i];
67
+ slot.arr[slot.w + 1] = starts[i];
68
+ slot.arr[slot.w + 2] = lengths[i];
69
+ slot.w += 3;
70
+ }
71
+ const spans = new Map();
72
+ for (const [k, slot] of slots)
73
+ spans.set(k, slot.arr);
74
+ return spans;
75
+ }
76
+ /**
77
+ * Plan content-affinity routing for one chunk: assign each job (by index) to a
78
+ * worker bucket so that every job sharing an affinity key lands on the SAME
79
+ * worker — across the whole stream, since `keyToWorker` is the caller's sticky
80
+ * map. New keys are handed out round-robin from `startWorker`, so each worker
81
+ * owns roughly `1/workerCount` of the distinct keys (≈ distinct geometries, the
82
+ * dominant meshing cost). Pure: mutates only the passed `keyToWorker` and returns
83
+ * the advanced round-robin cursor. (#1130 follow-up — see `affinity_key` in Rust.)
84
+ */
85
+ export function planAffinityRouting(affinity, totalJobs, workerCount, keyToWorker, startWorker) {
86
+ const buckets = Array.from({ length: workerCount }, () => []);
87
+ let nextWorker = startWorker % workerCount;
88
+ for (let j = 0; j < totalJobs; j++) {
89
+ const key = affinity[j];
90
+ let w = keyToWorker.get(key);
91
+ if (w === undefined) {
92
+ w = nextWorker;
93
+ nextWorker = (nextWorker + 1) % workerCount;
94
+ keyToWorker.set(key, w);
95
+ }
96
+ buckets[w].push(j);
97
+ }
98
+ return { buckets, nextWorker };
99
+ }
100
+ //# sourceMappingURL=prepass-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepass-routing.js","sourceRoot":"","sources":["../src/prepass-routing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remesh-client.d.ts","sourceRoot":"","sources":["../../src/remesh/remesh-client.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7F,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAChC,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,qBAAa,YAAY;IAMH,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL/E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,aAAa,CAAK;IAC1B,yEAAyE;IACzE,OAAO,CAAC,IAAI,CAAsB;IAElC,OAAO;IAEP,+EAA+E;IAC/E,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,oEAAoE;WACvD,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IAanG,OAAO,CAAC,KAAK;IAqBb;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IASrD;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAIjD,OAAO,CAAC,OAAO;IAoBf,8EAA8E;IAC9E,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKrC,+EAA+E;IAC/E,OAAO,IAAI,IAAI;IAIf,4FAA4F;IAC5F,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,OAAO;CAIhB"}
1
+ {"version":3,"file":"remesh-client.d.ts","sourceRoot":"","sources":["../../src/remesh/remesh-client.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7F,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAChC,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,qBAAa,YAAY;IAMH,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL/E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,aAAa,CAAK;IAC1B,yEAAyE;IACzE,OAAO,CAAC,IAAI,CAAsB;IAElC,OAAO;IAEP,+EAA+E;IAC/E,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,oEAAoE;WACvD,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IAanG,OAAO,CAAC,KAAK;IAsBb;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IASrD;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAIjD,OAAO,CAAC,OAAO;IAoBf,8EAA8E;IAC9E,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKrC,+EAA+E;IAC/E,OAAO,IAAI,IAAI;IAIf,4FAA4F;IAC5F,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,OAAO;CAIhB"}
@@ -1,6 +1,7 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { restashWasmPanicLocation } from '../wasm-panic-forward.js';
4
5
  const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
5
6
  export class RemeshClient {
6
7
  worker;
@@ -40,6 +41,7 @@ export class RemeshClient {
40
41
  resolve();
41
42
  }
42
43
  else if (message.type === 'init-error') {
44
+ restashWasmPanicLocation(globalThis, message.wasmPanicLocation, message.wasmPanicAt, message.message);
43
45
  reject(new Error(`Re-mesh engine failed to start: ${message.message}`));
44
46
  }
45
47
  };
@@ -119,8 +121,10 @@ export class RemeshClient {
119
121
  pending.resolve(message.result);
120
122
  else if (message.type === 'style-wire')
121
123
  pending.resolve(message.wire);
122
- else
124
+ else {
125
+ restashWasmPanicLocation(globalThis, message.wasmPanicLocation, message.wasmPanicAt, message.message);
123
126
  pending.reject(new Error(`Re-mesh failed: ${message.message}`));
127
+ }
124
128
  }
125
129
  failAll(error) {
126
130
  for (const pending of this.pending.values())
@@ -1 +1 @@
1
- {"version":3,"file":"remesh-client.js","sourceRoot":"","sources":["../../src/remesh/remesh-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remesh-client.js","sourceRoot":"","sources":["../../src/remesh/remesh-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remesh-core.d.ts","sourceRoot":"","sources":["../../src/remesh/remesh-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remesh-core.d.ts","sourceRoot":"","sources":["../../src/remesh/remesh-core.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { restashWasmPanicLocation, takeWasmPanicStash } from '../wasm-panic-forward.js';
4
5
  import { convertMeshCollectionToBatch } from '../geometry-coordinate.js';
5
6
  /** Apply every config field, so a changed field can never be left stale. */
6
7
  export function applyRemeshConfig(api, config) {
@@ -37,6 +38,29 @@ export function filterStyleWire(styleIds, styleColors, keep) {
37
38
  }
38
39
  return { styleIds: Uint32Array.from(ids), styleColors: Uint8Array.from(colors) };
39
40
  }
41
+ /** Always clear the cache, preserving a primary operation failure if cleanup also fails. */
42
+ function withPrepassCache(api, operation) {
43
+ let result;
44
+ try {
45
+ result = operation();
46
+ }
47
+ catch (error) {
48
+ const realm = typeof self === 'undefined' ? globalThis : self;
49
+ const panic = takeWasmPanicStash(realm);
50
+ try {
51
+ api.clearPrePassCache();
52
+ }
53
+ catch (cleanupError) {
54
+ console.warn('[remesh] clearing the failed pre-pass cache also failed:', cleanupError);
55
+ }
56
+ takeWasmPanicStash(realm);
57
+ if (panic)
58
+ restashWasmPanicLocation(realm, panic.location, panic.at, error instanceof Error ? error.message : String(error));
59
+ throw error;
60
+ }
61
+ api.clearPrePassCache();
62
+ return result;
63
+ }
40
64
  /**
41
65
  * Pre-pass the subgraph, mesh the targets in the load frame, and release the
42
66
  * pre-pass cache on every exit (the per-content caches are keyed to this
@@ -44,8 +68,8 @@ export function filterStyleWire(styleIds, styleColors, keep) {
44
68
  */
45
69
  export function remeshOnApi(api, req, now = () => performance.now()) {
46
70
  const start = now();
47
- try {
48
- // Inside the `try`: a pre-pass that throws part-way may already have
71
+ return withPrepassCache(api, () => {
72
+ // Inside the scope: a pre-pass that throws part-way may already have
49
73
  // cached this buffer's index, which the next request must not inherit.
50
74
  const prePass = api.buildPrePassOnce(req.buffer);
51
75
  const prepassDone = now();
@@ -67,17 +91,14 @@ export function remeshOnApi(api, req, now = () => performance.now()) {
67
91
  }
68
92
  const meshes = convertMeshCollectionToBatch(collection);
69
93
  return { meshes, csgFailures, ms: { prepass: prepassDone - start, produce: now() - prepassDone } };
70
- }
71
- finally {
72
- api.clearPrePassCache();
73
- }
94
+ });
74
95
  }
75
96
  /**
76
97
  * Pre-pass a whole model once and keep only its style wire, releasing the
77
98
  * pre-pass cache. Copies each array so nothing aliases the wasm heap.
78
99
  */
79
100
  export function styleWireOnApi(api, source) {
80
- try {
101
+ return withPrepassCache(api, () => {
81
102
  const prePass = api.buildPrePassOnce(source);
82
103
  return {
83
104
  styleIds: prePass.styleIds.slice(),
@@ -86,9 +107,6 @@ export function styleWireOnApi(api, source) {
86
107
  materialColorCounts: prePass.materialColorCounts?.slice() ?? new Uint32Array(),
87
108
  materialColors: prePass.materialColors?.slice() ?? new Uint8Array(),
88
109
  };
89
- }
90
- finally {
91
- api.clearPrePassCache();
92
- }
110
+ });
93
111
  }
94
112
  //# sourceMappingURL=remesh-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remesh-core.js","sourceRoot":"","sources":["../../src/remesh/remesh-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remesh-core.js","sourceRoot":"","sources":["../../src/remesh/remesh-core.ts"],"names":[],"mappings":"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"}
@@ -20,10 +20,10 @@ export type RemeshWorkerInbound = {
20
20
  };
21
21
  export type RemeshWorkerOutbound = {
22
22
  type: 'ready';
23
- } | {
23
+ } | ({
24
24
  type: 'init-error';
25
25
  message: string;
26
- } | {
26
+ } & RemeshPanicDetails) | {
27
27
  type: 'result';
28
28
  requestId: number;
29
29
  result: RemeshResult;
@@ -31,11 +31,16 @@ export type RemeshWorkerOutbound = {
31
31
  type: 'style-wire';
32
32
  requestId: number;
33
33
  wire: StyleWire;
34
- } | {
34
+ } | ({
35
35
  type: 'error';
36
36
  requestId: number;
37
37
  message: string;
38
- };
38
+ } & RemeshPanicDetails);
39
+ /** Source location only: Rust panic messages can contain confidential model data. */
40
+ interface RemeshPanicDetails {
41
+ wasmPanicLocation?: string;
42
+ wasmPanicAt?: number;
43
+ }
39
44
  /** The large per-mesh buffers, moved rather than copied across the boundary. */
40
45
  export declare function meshTransferables(meshes: readonly MeshData[]): ArrayBuffer[];
41
46
  /** The wire's buffers, moved back to the caller. */
@@ -47,4 +52,5 @@ export declare function styleWireTransferables(wire: StyleWire): ArrayBuffer[];
47
52
  * worker, so its callers would wait forever.
48
53
  */
49
54
  export declare function serialQueue<T>(handle: (message: T) => Promise<void>, onError: (error: unknown) => void): (message: T) => void;
55
+ export {};
50
56
  //# sourceMappingURL=remesh-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remesh-protocol.d.ts","sourceRoot":"","sources":["../../src/remesh/remesh-protocol.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAE1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7F,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,WAAW,EAAE,CAQ5E;AAED,oDAAoD;AACpD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,EAAE,CAGrE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAKtB"}
1
+ {"version":3,"file":"remesh-protocol.d.ts","sourceRoot":"","sources":["../../src/remesh/remesh-protocol.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAE1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7F,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB,CAAC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAAC,GAC9D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC1D,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAAC,CAAC;AAEjF,qFAAqF;AACrF,UAAU,kBAAkB;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,WAAW,EAAE,CAQ5E;AAED,oDAAoD;AACpD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,EAAE,CAGrE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAKtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"remesh-protocol.js","sourceRoot":"","sources":["../../src/remesh/remesh-protocol.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoB/D,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,MAA2B;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1E,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,YAAY,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,sBAAsB,CAAC,IAAe;IACpD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC;SAC7G,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,MAAqC,EACrC,OAAiC;IAEjC,IAAI,IAAI,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5C,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"remesh-protocol.js","sourceRoot":"","sources":["../../src/remesh/remesh-protocol.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA0B/D,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,MAA2B;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1E,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,YAAY,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,sBAAsB,CAAC,IAAe;IACpD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC;SAC7G,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,MAAqC,EACrC,OAAiC;IAEjC,IAAI,IAAI,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5C,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC"}
@@ -7,12 +7,13 @@
7
7
  * handled strictly in order, so a `config` posted between two requests
8
8
  * applies to the second and not the first.
9
9
  *
10
- * A wasm trap poisons only the `IfcAPI` that took it: that handle is dropped
11
- * and the next request gets a fresh one with the current config.
10
+ * A failed request drops its `IfcAPI`: cleanup may trap independently of
11
+ * the primary error. The next request gets a fresh handle with current config.
12
12
  */
13
13
  import init, { initSync, IfcAPI } from '@ifc-lite/wasm';
14
14
  import { initWasmWithRetry } from '../wasm-init-retry.js';
15
15
  import { freeWasmInstanceQuietly } from '../wasm-instance-free.js';
16
+ import { restashWasmPanicLocation, takeWasmPanicStash } from '../wasm-panic-forward.js';
16
17
  import { applyRemeshConfig, remeshOnApi, styleWireOnApi } from './remesh-core.js';
17
18
  import { meshTransferables, serialQueue, styleWireTransferables, } from './remesh-protocol.js';
18
19
  const scope = self;
@@ -24,6 +25,14 @@ function post(message, transfer = []) {
24
25
  function errorMessage(error) {
25
26
  return error instanceof Error ? error.message : String(error);
26
27
  }
28
+ function errorDetails(error) {
29
+ const panic = takeWasmPanicStash(scope);
30
+ return { message: errorMessage(error), wasmPanicLocation: panic?.location, wasmPanicAt: panic?.at };
31
+ }
32
+ function freeFailedApi(instance) {
33
+ freeWasmInstanceQuietly(instance);
34
+ takeWasmPanicStash(scope); // A cleanup panic must not label the next operation.
35
+ }
27
36
  function currentApi() {
28
37
  if (!config)
29
38
  throw new Error('remesh worker used before init');
@@ -34,7 +43,10 @@ function currentApi() {
34
43
  applyRemeshConfig(fresh, config);
35
44
  }
36
45
  catch (error) {
37
- freeWasmInstanceQuietly(fresh);
46
+ const panic = takeWasmPanicStash(scope);
47
+ freeFailedApi(fresh);
48
+ if (panic)
49
+ restashWasmPanicLocation(scope, panic.location, panic.at, errorMessage(error));
38
50
  throw error;
39
51
  }
40
52
  api = fresh;
@@ -53,7 +65,7 @@ async function handle(message) {
53
65
  post({ type: 'ready' });
54
66
  }
55
67
  catch (error) {
56
- post({ type: 'init-error', message: errorMessage(error) });
68
+ post({ type: 'init-error', ...errorDetails(error) });
57
69
  }
58
70
  return;
59
71
  }
@@ -67,7 +79,9 @@ async function handle(message) {
67
79
  // No request to answer yet: drop the half-configured handle, so the
68
80
  // next request rebuilds it and reports this same failure to its caller.
69
81
  console.error('[remesh.worker] config rejected:', errorMessage(error));
70
- freeWasmInstanceQuietly(api);
82
+ // This failure has no request to capture; don't label a later trap.
83
+ takeWasmPanicStash(scope);
84
+ freeFailedApi(api);
71
85
  api = null;
72
86
  }
73
87
  return;
@@ -85,11 +99,12 @@ async function handle(message) {
85
99
  }
86
100
  }
87
101
  catch (error) {
88
- if (error instanceof WebAssembly.RuntimeError) {
89
- freeWasmInstanceQuietly(api);
90
- api = null;
91
- }
92
- post({ type: 'error', requestId: message.requestId, message: errorMessage(error) });
102
+ // Capture before freeing: cleanup of a poisoned handle can trap too.
103
+ const details = errorDetails(error);
104
+ // A non-trap primary error may hide a secondary cleanup trap.
105
+ freeFailedApi(api);
106
+ api = null;
107
+ post({ type: 'error', requestId: message.requestId, ...details });
93
108
  }
94
109
  return;
95
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remesh.worker.js","sourceRoot":"","sources":["../../src/remesh/remesh.worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remesh.worker.js","sourceRoot":"","sources":["../../src/remesh/remesh.worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Typed entry to scan-to-BIM element proposals (#6894). The logic is Rust
3
+ * (`ifc_lite_processing::scan_proposals`): opposite wall faces pair into
4
+ * walls, floors and ceilings into slabs, vertical cylinders into columns and
5
+ * the rest into pipes. This module only types the JSON the wasm call takes
6
+ * and returns.
7
+ *
8
+ * Proposals are in the IFC model frame: Z up, metres. `scanToModel` maps the
9
+ * segmentation report's frame into it; for the viewer's Y-up, decode-relative
10
+ * scan sample that is the point cloud's placement composed with the Y-up to
11
+ * Z-up swap and the model's world offset.
12
+ */
13
+ import type { IfcAPI } from '@ifc-lite/wasm';
14
+ import type { ScanSegmentationReport, ScanVec3 } from './scan-segmentation.js';
15
+ export type ProposalSchema = 'IFC2X3' | 'IFC4' | 'IFC4X3';
16
+ /** Every field is optional; omitted fields take the Rust defaults below. */
17
+ export interface ScanProposalOptions {
18
+ /**
19
+ * Row-major 4x4 similarity (rotation, uniform scale, translation) from the
20
+ * report's frame to the IFC model frame. Default identity. Reflections and
21
+ * non-uniform scale are refused.
22
+ */
23
+ scanToModel?: number[];
24
+ /** Decides the pipe class: IfcFlowSegment in IFC2X3, else IfcPipeSegment. Default IFC4. */
25
+ schema?: ProposalSchema;
26
+ /** Horizontal / vertical tolerance in the model frame. Default 10 degrees. */
27
+ classificationAngleDegrees?: number;
28
+ /** Wall faces pair when parallel within this. Default 5 degrees. */
29
+ pairingAngleDegrees?: number;
30
+ /** Paired wall faces lie this far apart or more. Default 0.05 m. */
31
+ minWallThicknessMetres?: number;
32
+ /** ... and at most this far. Default 0.6 m. */
33
+ maxWallThicknessMetres?: number;
34
+ /** Thickness of a wall seen from one side, placed behind the scanned side. Default 0.2 m. */
35
+ defaultWallThicknessMetres?: number;
36
+ /** Paired faces overlap along the wall by this share of the shorter one. Default 0.5. */
37
+ minWallOverlapFraction?: number;
38
+ /** Shorter vertical faces are not walls. Default 0.5 m. */
39
+ minWallLengthMetres?: number;
40
+ /** Lower vertical faces are not walls. Default 1 m. */
41
+ minWallHeightMetres?: number;
42
+ /** Smaller horizontal planes are not slabs. Default 1 m^2. */
43
+ minSlabAreaSquareMetres?: number;
44
+ /** Thickness of a slab seen from one side. Default 0.2 m. */
45
+ defaultSlabThicknessMetres?: number;
46
+ /** A ceiling and the floor above pair into one slab when this close (and at least `minWallThicknessMetres` apart). Default 0.6 m. */
47
+ maxSlabThicknessMetres?: number;
48
+ /** Wall and column ends within this of a floor or ceiling extend to it. Default 0.3 m. */
49
+ levelSnapMetres?: number;
50
+ /** A point inside the scanned space (model frame). Default: area-weighted plane centroid. */
51
+ interiorPoint?: ScanVec3 | null;
52
+ }
53
+ export type ProposalClass = 'IfcWall' | 'IfcSlab' | 'IfcColumn' | 'IfcPipeSegment' | 'IfcFlowSegment';
54
+ /** How the proposal was derived. */
55
+ export type ProposalBasis = 'pairedFaces' | 'singleFace' | 'floorCeilingPair' | 'floor' | 'ceiling' | 'cylinder';
56
+ /** An index into the segmentation report's `planes` or `cylinders`. */
57
+ export interface DetectionRef {
58
+ kind: 'plane' | 'cylinder';
59
+ index: number;
60
+ }
61
+ export interface ProposalFit {
62
+ /** Inlier-weighted RMS of the sources' residuals. */
63
+ rmsMetres: number;
64
+ inlierPoints: number;
65
+ inlierVoxels: number;
66
+ /** Measured area of the sources (cylinders: arc x radius x length). */
67
+ areaSquareMetres: number;
68
+ }
69
+ export type ProposalGeometry =
70
+ /** Axis line on the wall's centre plane, at its base elevation. */
71
+ {
72
+ kind: 'wall';
73
+ start: ScanVec3;
74
+ end: ScanVec3;
75
+ thicknessMetres: number;
76
+ heightMetres: number;
77
+ }
78
+ /** Top face outline, counter-clockwise from above; the slab extends `thicknessMetres` below. */
79
+ | {
80
+ kind: 'slab';
81
+ outline: ScanVec3[];
82
+ thicknessMetres: number;
83
+ }
84
+ /** `radiusMetres`: the fitted radius; a polygonal column gets the circle of equal cross-section area. */
85
+ | {
86
+ kind: 'column';
87
+ base: ScanVec3;
88
+ heightMetres: number;
89
+ radiusMetres: number;
90
+ } | {
91
+ kind: 'pipe';
92
+ start: ScanVec3;
93
+ end: ScanVec3;
94
+ radiusMetres: number;
95
+ };
96
+ export interface ScanElementProposal {
97
+ /** Stable within one report: `wall-0`, `slab-2`, `column-1`, `pipe-0`. */
98
+ id: string;
99
+ ifcClass: ProposalClass;
100
+ /** 0..1: prior(basis) x fit quality x coverage. */
101
+ confidence: number;
102
+ basis: ProposalBasis;
103
+ sources: DetectionRef[];
104
+ fit: ProposalFit;
105
+ geometry: ProposalGeometry;
106
+ }
107
+ export interface ScanProposalStats {
108
+ verticalPlanes: number;
109
+ horizontalPlanes: number;
110
+ slopedPlanes: number;
111
+ pairedWalls: number;
112
+ singleFaceWalls: number;
113
+ facesTooSmall: number;
114
+ pairedSlabs: number;
115
+ singleSlabs: number;
116
+ slabsTooSmall: number;
117
+ columns: number;
118
+ pipes: number;
119
+ }
120
+ export interface ScanProposalReport {
121
+ algorithm: string;
122
+ /** Walls, then slabs, columns and pipes; each class by descending support. */
123
+ proposals: ScanElementProposal[];
124
+ /** Uniform scale of `scanToModel`. */
125
+ transformScale: number;
126
+ stats: ScanProposalStats;
127
+ }
128
+ /** The wasm surface this needs: an initialised `IfcAPI` satisfies it. */
129
+ export type ScanProposalEngine = Pick<IfcAPI, 'proposeScanElements'>;
130
+ /** Propose IFC elements from `report`. Throws the Rust error message on invalid options. */
131
+ export declare function proposeScanElements(engine: ScanProposalEngine, report: ScanSegmentationReport, options?: ScanProposalOptions): ScanProposalReport;
132
+ //# sourceMappingURL=scan-proposals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-proposals.d.ts","sourceRoot":"","sources":["../src/scan-proposals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /** Propose IFC elements from `report`. Throws the Rust error message on invalid options. */
5
+ export function proposeScanElements(engine, report, options = {}) {
6
+ if (options.scanToModel && options.scanToModel.length !== 16) {
7
+ throw new RangeError(`scanToModel needs 16 row-major values, got ${options.scanToModel.length}`);
8
+ }
9
+ const bytes = engine.proposeScanElements(JSON.stringify(report), JSON.stringify(options));
10
+ return JSON.parse(new TextDecoder().decode(bytes));
11
+ }
12
+ //# sourceMappingURL=scan-proposals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-proposals.js","sourceRoot":"","sources":["../src/scan-proposals.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA4H/D,4FAA4F;AAC5F,MAAM,UAAU,mBAAmB,CACjC,MAA0B,EAC1B,MAA8B,EAC9B,UAA+B,EAAE;IAEjC,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,UAAU,CAAC,8CAA8C,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAuB,CAAC;AAC3E,CAAC"}