@ifc-lite/geometry 4.1.0 → 4.2.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 (47) hide show
  1. package/README.md +6 -3
  2. package/dist/diagnostics.d.ts +42 -3
  3. package/dist/diagnostics.d.ts.map +1 -1
  4. package/dist/diagnostics.js +37 -8
  5. package/dist/diagnostics.js.map +1 -1
  6. package/dist/energy-export-bridge.d.ts +35 -0
  7. package/dist/energy-export-bridge.d.ts.map +1 -0
  8. package/dist/energy-export-bridge.js +31 -0
  9. package/dist/energy-export-bridge.js.map +1 -0
  10. package/dist/geometry-parallel.d.ts +2 -1
  11. package/dist/geometry-parallel.d.ts.map +1 -1
  12. package/dist/geometry-parallel.js +29 -85
  13. package/dist/geometry-parallel.js.map +1 -1
  14. package/dist/geometry.worker.d.ts +7 -0
  15. package/dist/geometry.worker.d.ts.map +1 -1
  16. package/dist/geometry.worker.js +3 -2
  17. package/dist/geometry.worker.js.map +1 -1
  18. package/dist/hbjson-stats.d.ts +28 -0
  19. package/dist/hbjson-stats.d.ts.map +1 -0
  20. package/dist/hbjson-stats.js +5 -0
  21. package/dist/hbjson-stats.js.map +1 -0
  22. package/dist/ifc-lite-bridge.d.ts +11 -14
  23. package/dist/ifc-lite-bridge.d.ts.map +1 -1
  24. package/dist/ifc-lite-bridge.js +12 -16
  25. package/dist/ifc-lite-bridge.js.map +1 -1
  26. package/dist/index.d.ts +23 -20
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +56 -63
  29. package/dist/index.js.map +1 -1
  30. package/dist/packed-instanced-decoder.d.ts +20 -3
  31. package/dist/packed-instanced-decoder.d.ts.map +1 -1
  32. package/dist/packed-instanced-decoder.js +122 -17
  33. package/dist/packed-instanced-decoder.js.map +1 -1
  34. package/dist/shard-stitch.d.ts +110 -0
  35. package/dist/shard-stitch.d.ts.map +1 -0
  36. package/dist/shard-stitch.js +112 -0
  37. package/dist/shard-stitch.js.map +1 -0
  38. package/dist/symbolic-types.d.ts +3 -2
  39. package/dist/symbolic-types.d.ts.map +1 -1
  40. package/dist/types.d.ts +5 -1
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/types.js.map +1 -1
  43. package/dist/wasm-asset-error.d.ts +17 -0
  44. package/dist/wasm-asset-error.d.ts.map +1 -1
  45. package/dist/wasm-asset-error.js +32 -0
  46. package/dist/wasm-asset-error.js.map +1 -1
  47. package/package.json +4 -4
@@ -0,0 +1,112 @@
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
+ * SPIKE: stitch N speculative shard scans into the full entity index —
6
+ * byte-identical to the single-threaded scan. Port of the native
7
+ * `parallel_scan::stitch`: shard 0 is authoritative (header-aware start); for
8
+ * shard i>0 the previous shard's validated `handoff` is a real entity start, so
9
+ * binary-search shard i's `starts` for it and drop the speculative prefix before
10
+ * it. Concatenates the validated slices in shard order (= file order), so
11
+ * last-wins on a duplicate id is preserved when the worker rebuilds its map.
12
+ *
13
+ * Returns null on the rare "handoff not found" case (speculative overshoot / a
14
+ * record spanning a whole shard), which needs the serial-rescan fallback the JS
15
+ * spike doesn't implement — the caller falls back to the pre-pass's own index.
16
+ */
17
+ export function stitchShards(shards) {
18
+ const n = shards.length;
19
+ // Phase 1 — locate each shard's validated slice (binary-search the previous
20
+ // shard's handoff) WITHOUT copying, so the output size is exact before any
21
+ // allocation. Exactness matters: the id/start/length columns are allocated
22
+ // SAB-backed below and handed to every worker as full-buffer views, so a
23
+ // cap-sized buffer would let consumers read past the last real record.
24
+ const sliceFrom = new Array(n).fill(0);
25
+ let used = 1;
26
+ let w = shards[0].ids.length; // shard 0 is authoritative, take every record
27
+ // Shard 0 started at the header-skip boundary, so every refusal it made is
28
+ // one a serial scan makes too. Later shards are attributed in the loop.
29
+ let oversizedIdCount = shards[0].oversizedIdStarts.length;
30
+ // Same authority argument as the refusals above: shard 0 starts at the
31
+ // header-skip boundary, so a stop it reports is one a serial scan makes too.
32
+ let malformedStopped = shards[0].malformedStart !== undefined;
33
+ let expectedStart = shards[0].handoff; // -1 => no more real entities
34
+ for (let i = 1; i < n; i++) {
35
+ // -1 means the previous shard hit EOF: every later shard is speculative
36
+ // end to end, so its records AND its refusals are dropped by breaking.
37
+ if (expectedStart < 0)
38
+ break;
39
+ // starts is strictly increasing → binary-search for expectedStart.
40
+ const starts = shards[i].starts;
41
+ let lo = 0;
42
+ let hi = starts.length - 1;
43
+ let p = -1;
44
+ while (lo <= hi) {
45
+ const mid = (lo + hi) >>> 1;
46
+ const v = starts[mid];
47
+ if (v === expectedStart) {
48
+ p = mid;
49
+ break;
50
+ }
51
+ if (v < expectedStart)
52
+ lo = mid + 1;
53
+ else
54
+ hi = mid - 1;
55
+ }
56
+ if (p < 0) {
57
+ // Handoff not present in this shard — fallback path (not implemented here).
58
+ return null;
59
+ }
60
+ sliceFrom[i] = p;
61
+ w += starts.length - p;
62
+ // Refusals are cut at the SAME boundary as the records: scanner positions
63
+ // only advance, so everything below `expectedStart` came from the
64
+ // speculative prefix just dropped, and everything from it on is what a
65
+ // serial scan over those bytes produces.
66
+ const refusals = shards[i].oversizedIdStarts;
67
+ for (let k = 0; k < refusals.length; k++) {
68
+ if (refusals[k] >= expectedStart)
69
+ oversizedIdCount++;
70
+ }
71
+ // Cut at the SAME boundary, for the same reason: a stop below
72
+ // `expectedStart` was produced by the speculative prefix just dropped, so
73
+ // it describes bytes this stitch is not taking from this shard.
74
+ const stop = shards[i].malformedStart;
75
+ if (stop !== undefined && stop >= expectedStart)
76
+ malformedStopped = true;
77
+ expectedStart = shards[i].handoff;
78
+ used = i + 1;
79
+ }
80
+ // Phase 2 — single concatenation copy, straight into SharedArrayBuffer-backed
81
+ // columns. The stitched index used to be copied THREE times per column on the
82
+ // main thread (cap-array stitch → `.slice()` to contiguous → `.set()` into
83
+ // fresh SABs in deliverEntityIndex); writing the stitch output into SABs
84
+ // directly makes index delivery zero-copy (~450 MB of critical-path memcpy
85
+ // saved on a 19M-entity file). `classes` stays plain: its only consumer past
86
+ // the span-extraction loop is the pre-pass worker, which takes it by transfer.
87
+ const sabAvailable = typeof SharedArrayBuffer !== 'undefined';
88
+ const u32Column = (len) => new Uint32Array(sabAvailable ? new SharedArrayBuffer(len * 4) : new ArrayBuffer(len * 4));
89
+ const outIds = u32Column(w);
90
+ const outStarts = u32Column(w);
91
+ const outLengths = u32Column(w);
92
+ const outClasses = new Uint8Array(w);
93
+ let o = 0;
94
+ for (let i = 0; i < used; i++) {
95
+ const s = shards[i];
96
+ const p = sliceFrom[i];
97
+ outIds.set(p === 0 ? s.ids : s.ids.subarray(p), o);
98
+ outStarts.set(p === 0 ? s.starts : s.starts.subarray(p), o);
99
+ outLengths.set(p === 0 ? s.lengths : s.lengths.subarray(p), o);
100
+ outClasses.set(p === 0 ? s.classes : s.classes.subarray(p), o);
101
+ o += s.ids.length - p;
102
+ }
103
+ return {
104
+ ids: outIds,
105
+ starts: outStarts,
106
+ lengths: outLengths,
107
+ classes: outClasses,
108
+ oversizedIdCount,
109
+ malformedRecordCount: malformedStopped ? 1 : undefined,
110
+ };
111
+ }
112
+ //# sourceMappingURL=shard-stitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shard-stitch.js","sourceRoot":"","sources":["../src/shard-stitch.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@
2
2
  * The symbolic-representation type family, split out of `types.ts` (#3199).
3
3
  *
4
4
  * Moved rather than trimmed: `types.ts` sat EXACTLY at its module-size budget,
5
- * and the TS allowlist is explicit that budgets ratchet DOWN only and are never
6
- * raised to make a red gate green. This family is self-contained -- nothing
5
+ * and the TS allowlist is explicit that budgets ratchet DOWN by default -- a
6
+ * raise is sanctioned but deliberate, and wants a per-file justification in the
7
+ * PR, which a split does not. This family is self-contained -- nothing
7
8
  * imports it from `types.ts`, and the names the package root exposes come from
8
9
  * `ifc-lite-bridge.ts` -- so it is the natural seam. `types.ts` re-exports it,
9
10
  * so the public surface is unchanged.
@@ -1 +1 @@
1
- {"version":3,"file":"symbolic-types.d.ts","sourceRoot":"","sources":["../src/symbolic-types.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACzD,0BAA0B;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACrD,6DAA6D;IAC7D,aAAa,IAAI,WAAW,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3C,oDAAoD;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IACvC,4DAA4D;IAC5D,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"symbolic-types.d.ts","sourceRoot":"","sources":["../src/symbolic-types.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACzD,0BAA0B;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACrD,6DAA6D;IAC7D,aAAa,IAAI,WAAW,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3C,oDAAoD;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IACvC,4DAA4D;IAC5D,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB"}
package/dist/types.d.ts CHANGED
@@ -56,7 +56,11 @@ export interface MeshData {
56
56
  geometryItemId?: number;
57
57
  /** The `IfcMaterial` layer this mesh slices. DISJOINT from `geometryItemId`,
58
58
  * which used to carry it — so following that field for a layered wall landed
59
- * on the wrong entity. `geometryClass === 3` cannot substitute (#3199). */
59
+ * on the wrong entity. `geometryClass === 3` cannot substitute (#3199).
60
+ * Same id space as `expressId`: a federated viewer session re-homes it
61
+ * alongside `expressId` and `geometryItemId` (`applyFederationOffsetToMesh`
62
+ * in `apps/viewer/src/hooks/useIfcLoader.ts`), so a value read off this
63
+ * field is always safe to resolve the same way as `expressId` (#3525). */
60
64
  materialId?: number;
61
65
  /** Per-vertex texture coordinates (u, v pairs, 1:1 with positions), present
62
66
  * only for textured meshes (issue #961). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmX/D,8EAA8E;AAC9E,gCAAgC;AAChC,2EAA2E;AAC3E,8EAA8E;AAE9E,kFAAkF;AAClF,6EAA6E;AAC7E,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAuX/D,8EAA8E;AAC9E,gCAAgC;AAChC,2EAA2E;AAC3E,8EAA8E;AAE9E,kFAAkF;AAClF,6EAA6E;AAC7E,cAAc,qBAAqB,CAAC"}
@@ -58,6 +58,23 @@ export type WasmAssetUnavailableKind = 'wasm-asset' | 'worker-script';
58
58
  * loop without fixing them.
59
59
  */
60
60
  export declare function isWasmAssetUnavailableError(err: unknown): boolean;
61
+ /**
62
+ * True when `err`'s message is the worker-script version-skew signature
63
+ * synthesized by `geometry-parallel.ts`'s pre-pass or process-worker `onerror`
64
+ * handlers (`Pre-pass worker failed: worker script failed to load (possibly a
65
+ * stale deployment)` / `Geometry worker failed: …` — same suffix). This is a
66
+ * DIFFERENT (and deliberately narrower) test than
67
+ * {@link isWasmAssetUnavailableError}: that one matches the wasm-binary
68
+ * MIME/404 signature (#1363) and is used both to trigger a reload from an
69
+ * arbitrary unclassified error AND, by a host, to decide whether an already-
70
+ * recovered exception is safe to drop from error tracking. The worker-script
71
+ * variant never carries a wasm/MIME/status token (see the messageless
72
+ * `ErrorEvent` this wraps), so `isWasmAssetUnavailableError` structurally
73
+ * cannot see it; this function exists so a host-side classifier that only has
74
+ * the final message text (not the `kind` on the `WASM_ASSET_UNAVAILABLE_EVENT`
75
+ * detail) can still recognize the same recovered condition.
76
+ */
77
+ export declare function isWorkerScriptSkewMessage(err: unknown): boolean;
61
78
  /**
62
79
  * If `err` is the version-skew signature, broadcast
63
80
  * {@link WASM_ASSET_UNAVAILABLE_EVENT} on `globalThis` so an opted-in host can
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-asset-error.d.ts","sourceRoot":"","sources":["../src/wasm-asset-error.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,eAAe,CAAC;AAYtE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAmCjE;AAaD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIlE;AAkBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,EACZ,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAiBT"}
1
+ {"version":3,"file":"wasm-asset-error.d.ts","sourceRoot":"","sources":["../src/wasm-asset-error.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,eAAe,CAAC;AAYtE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAmCjE;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE/D;AAaD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIlE;AAkBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,EACZ,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAiBT"}
@@ -89,6 +89,38 @@ export function isWasmAssetUnavailableError(err) {
89
89
  }
90
90
  return false;
91
91
  }
92
+ // The literal detail text `geometry-parallel.ts`'s worker `onerror` handlers
93
+ // (pre-pass AND the process-worker pool — both wrap it as `Pre-pass worker
94
+ // failed: ${detail}` / `Geometry worker failed: ${detail}`) synthesize ONLY
95
+ // when the worker never posted a message and the ErrorEvent itself carried no
96
+ // `.message`/`.filename` — i.e. exactly the condition under which
97
+ // `notifyIfWorkerScriptUnavailable` below dispatches
98
+ // `WASM_ASSET_UNAVAILABLE_EVENT` with `kind: 'worker-script'` and the host
99
+ // reloads. It carries none of the wasm/MIME/status-code tokens
100
+ // `isWasmAssetUnavailableError` looks for, so a caller that re-derives
101
+ // classification from the message text alone (rather than trusting the
102
+ // `kind` the library already assigned) misses it entirely — see
103
+ // `isWorkerScriptSkewMessage` below.
104
+ const WORKER_SCRIPT_SKEW_SIGNATURE = 'worker script failed to load (possibly a stale deployment)';
105
+ /**
106
+ * True when `err`'s message is the worker-script version-skew signature
107
+ * synthesized by `geometry-parallel.ts`'s pre-pass or process-worker `onerror`
108
+ * handlers (`Pre-pass worker failed: worker script failed to load (possibly a
109
+ * stale deployment)` / `Geometry worker failed: …` — same suffix). This is a
110
+ * DIFFERENT (and deliberately narrower) test than
111
+ * {@link isWasmAssetUnavailableError}: that one matches the wasm-binary
112
+ * MIME/404 signature (#1363) and is used both to trigger a reload from an
113
+ * arbitrary unclassified error AND, by a host, to decide whether an already-
114
+ * recovered exception is safe to drop from error tracking. The worker-script
115
+ * variant never carries a wasm/MIME/status token (see the messageless
116
+ * `ErrorEvent` this wraps), so `isWasmAssetUnavailableError` structurally
117
+ * cannot see it; this function exists so a host-side classifier that only has
118
+ * the final message text (not the `kind` on the `WASM_ASSET_UNAVAILABLE_EVENT`
119
+ * detail) can still recognize the same recovered condition.
120
+ */
121
+ export function isWorkerScriptSkewMessage(err) {
122
+ return messageOf(err).includes(WORKER_SCRIPT_SKEW_SIGNATURE);
123
+ }
92
124
  function domDispatcher() {
93
125
  const g = globalThis;
94
126
  return typeof g.dispatchEvent === 'function' && typeof g.CustomEvent === 'function'
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-asset-error.js","sourceRoot":"","sources":["../src/wasm-asset-error.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,gCAAgC,CAAC;AAc7E,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;QAChD,MAAM,CAAC,GAAI,GAA6B,CAAC,OAAO,CAAC;QACjD,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,6EAA6E;IAC7E,IAAI,mFAAmF,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClG,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gEAAgE;IAChE,6EAA6E;IAC7E,2EAA2E;IAC3E,aAAa;IACb,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,uDAAuD,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,4CAA4C;IAC5C,IACE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7B,gFAAgF,CAAC,IAAI,CAAC,GAAG,CAAC,EAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,IACE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,kGAAkG,CAAC,IAAI,CAAC,GAAG,CAAC,EAC5G,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,SAAS,aAAa;IACpB,MAAM,CAAC,GAAG,UAA2E,CAAC;IACtF,OAAO,OAAO,CAAC,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,UAAU;QACjF,CAAC,CAAE,CAAmB;QACtB,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAY;IACvD,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe,EAAE,IAA8B;IAC/E,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,CAAC;QACH,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAC7E,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,+DAA+D;QAC/D,uEAAuE;QACvE,2EAA2E;QAC3E,oCAAoC;QACpC,OAAO,CAAC,IAAI,CAAC,kEAAkE,EAAE,GAAG,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,+BAA+B,CAC7C,GAAY,EACZ,kBAA2B;IAE3B,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,GAAG,GACP,OAAO,GAAG,KAAK,QAAQ;QACrB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,OAAQ,GAA6B,CAAC,OAAO,KAAK,QAAQ;YACzE,CAAC,CAAC,CAAE,GAA2B,CAAC,OAAO,CAAC;YACxC,CAAC,CAAC,EAAE,CAAC;IACX,IAAI,GAAG;QAAE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,kBAAkB;QAAE,OAAO,KAAK,CAAC;IACrC,wBAAwB,CACtB,0FAA0F,EAC1F,eAAe,CAChB,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"wasm-asset-error.js","sourceRoot":"","sources":["../src/wasm-asset-error.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/geometry",
3
- "version": "4.1.0",
3
+ "version": "4.2.0",
4
4
  "description": "Geometry processing bridge for IFC-Lite - exact-arithmetic CSG, streamed across workers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,8 +18,8 @@
18
18
  }
19
19
  },
20
20
  "dependencies": {
21
- "@ifc-lite/data": "^3.5.0",
22
- "@ifc-lite/wasm": "^6.1.0"
21
+ "@ifc-lite/data": "^4.0.0",
22
+ "@ifc-lite/wasm": "^6.2.0"
23
23
  },
24
24
  "optionalDependencies": {
25
25
  "@tauri-apps/api": "^2.11.1"
@@ -27,7 +27,7 @@
27
27
  "devDependencies": {
28
28
  "@tauri-apps/api": "^2.11.1",
29
29
  "typescript": "^6.0.3",
30
- "vitest": "^4.1.10"
30
+ "vitest": "^4.1.11"
31
31
  },
32
32
  "license": "MPL-2.0",
33
33
  "author": "Louis True",