@ifc-lite/parser 5.0.0 → 5.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 (82) hide show
  1. package/dist/classification-resolver.d.ts +28 -2
  2. package/dist/classification-resolver.d.ts.map +1 -1
  3. package/dist/classification-resolver.js +49 -6
  4. package/dist/classification-resolver.js.map +1 -1
  5. package/dist/columnar-entity-preparation.d.ts +22 -0
  6. package/dist/columnar-entity-preparation.d.ts.map +1 -0
  7. package/dist/columnar-entity-preparation.js +192 -0
  8. package/dist/columnar-entity-preparation.js.map +1 -0
  9. package/dist/columnar-parser-root-attributes.d.ts +66 -0
  10. package/dist/columnar-parser-root-attributes.d.ts.map +1 -0
  11. package/dist/columnar-parser-root-attributes.js +245 -0
  12. package/dist/columnar-parser-root-attributes.js.map +1 -0
  13. package/dist/columnar-parser.d.ts +17 -63
  14. package/dist/columnar-parser.d.ts.map +1 -1
  15. package/dist/columnar-parser.js +371 -779
  16. package/dist/columnar-parser.js.map +1 -1
  17. package/dist/compact-entity-index-columns.d.ts +17 -0
  18. package/dist/compact-entity-index-columns.d.ts.map +1 -0
  19. package/dist/compact-entity-index-columns.js +15 -0
  20. package/dist/compact-entity-index-columns.js.map +1 -0
  21. package/dist/compact-entity-index-transport.d.ts +2 -12
  22. package/dist/compact-entity-index-transport.d.ts.map +1 -1
  23. package/dist/compact-entity-index-transport.js +1 -11
  24. package/dist/compact-entity-index-transport.js.map +1 -1
  25. package/dist/compact-entity-index.d.ts +7 -0
  26. package/dist/compact-entity-index.d.ts.map +1 -1
  27. package/dist/compact-entity-index.js +20 -32
  28. package/dist/compact-entity-index.js.map +1 -1
  29. package/dist/data-store-transport.d.ts +9 -16
  30. package/dist/data-store-transport.d.ts.map +1 -1
  31. package/dist/data-store-transport.js +14 -20
  32. package/dist/data-store-transport.js.map +1 -1
  33. package/dist/entity-refs-from-index.d.ts +10 -0
  34. package/dist/entity-refs-from-index.d.ts.map +1 -1
  35. package/dist/entity-refs-from-index.js +64 -49
  36. package/dist/entity-refs-from-index.js.map +1 -1
  37. package/dist/entity-scanner.d.ts +5 -0
  38. package/dist/entity-scanner.d.ts.map +1 -1
  39. package/dist/entity-scanner.js +20 -7
  40. package/dist/entity-scanner.js.map +1 -1
  41. package/dist/entity-type-byte-interner.d.ts +12 -0
  42. package/dist/entity-type-byte-interner.d.ts.map +1 -0
  43. package/dist/entity-type-byte-interner.js +66 -0
  44. package/dist/entity-type-byte-interner.js.map +1 -0
  45. package/dist/index.d.ts +4 -5
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -5
  48. package/dist/index.js.map +1 -1
  49. package/dist/on-demand-extractors.d.ts +1 -1
  50. package/dist/on-demand-extractors.d.ts.map +1 -1
  51. package/dist/on-demand-georeferencing.d.ts +3 -3
  52. package/dist/on-demand-georeferencing.js +27 -4
  53. package/dist/on-demand-georeferencing.js.map +1 -1
  54. package/dist/parser.worker.d.ts +6 -3
  55. package/dist/parser.worker.d.ts.map +1 -1
  56. package/dist/parser.worker.js +36 -13
  57. package/dist/parser.worker.js.map +1 -1
  58. package/dist/prepass-source-fingerprint.d.ts +3 -0
  59. package/dist/prepass-source-fingerprint.d.ts.map +1 -0
  60. package/dist/prepass-source-fingerprint.js +13 -0
  61. package/dist/prepass-source-fingerprint.js.map +1 -0
  62. package/dist/select-entity-columns.d.ts +7 -0
  63. package/dist/select-entity-columns.d.ts.map +1 -0
  64. package/dist/select-entity-columns.js +43 -0
  65. package/dist/select-entity-columns.js.map +1 -0
  66. package/dist/spatial-hierarchy-builder.d.ts +6 -8
  67. package/dist/spatial-hierarchy-builder.d.ts.map +1 -1
  68. package/dist/spatial-hierarchy-builder.js +4 -0
  69. package/dist/spatial-hierarchy-builder.js.map +1 -1
  70. package/dist/spatial-hierarchy-canonical-parent.d.ts +36 -0
  71. package/dist/spatial-hierarchy-canonical-parent.d.ts.map +1 -0
  72. package/dist/spatial-hierarchy-canonical-parent.js +63 -0
  73. package/dist/spatial-hierarchy-canonical-parent.js.map +1 -0
  74. package/dist/worker-index-publication.d.ts +43 -0
  75. package/dist/worker-index-publication.d.ts.map +1 -0
  76. package/dist/worker-index-publication.js +129 -0
  77. package/dist/worker-index-publication.js.map +1 -0
  78. package/dist/worker-parser.d.ts +5 -2
  79. package/dist/worker-parser.d.ts.map +1 -1
  80. package/dist/worker-parser.js +30 -12
  81. package/dist/worker-parser.js.map +1 -1
  82. package/package.json +2 -2
@@ -0,0 +1,63 @@
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
+ import { IfcTypeEnum, RelationshipType, isSpatialStructureType } from '@ifc-lite/data';
5
+ /**
6
+ * Resolve each spatial-structure entity's ONE canonical parent, globally,
7
+ * before any recursion starts - so the result cannot depend on traversal
8
+ * order. Mirrors apps/server's `canonical_parent` (`spatial.rs`, #3973):
9
+ *
10
+ * 1. IfcRelAggregates always wins over mere containment. A child aggregated
11
+ * by more than one parent (a malformed file) resolves to the parent
12
+ * whose `IfcRelAggregates` was declared FIRST in the file - STEP does
13
+ * not require express ids to ascend with declaration position, so a
14
+ * lowest-express-id tie-break can disagree with declaration order (a
15
+ * legally-valid file can declare a high-id relationship before a
16
+ * low-id one). `relationships.inverse.getEdges` returns edges in
17
+ * declaration order: `RelationshipGraphBuilder.addEdge` is called by
18
+ * the parser while it scans `IfcRel*` records in file/byte order (see
19
+ * `columnar-parser.ts`'s relationship loop), and `buildCSR`'s counting
20
+ * sort is stable per key (`relationship-graph.ts`) - it scatters edges
21
+ * for the same child in the order they were appended, never
22
+ * reordering by id. So `edges[0]` for a given child is the
23
+ * first-declared parent edge; no id comparison is needed or correct.
24
+ * 2. Only when a child has NO aggregates edge at all does a containment edge
25
+ * (IfcRelContainedInSpatialStructure targeting a spatial-structure type -
26
+ * the Revit Family/Dynamo `IfcSpace`/`IfcSpatialZone` pattern, #1075)
27
+ * get to claim it, with the same first-declared tie-break.
28
+ *
29
+ * `SpatialHierarchyBuilder.buildNode`'s `addSpatialChild` then only recurses
30
+ * into a child from its canonical parent - every other parent that also
31
+ * names the child drops the edge instead of adding an empty-stub duplicate
32
+ * (#4095).
33
+ */
34
+ export function computeCanonicalParent(entities, relationships) {
35
+ const canonicalParent = new Map();
36
+ const claimFirstDeclaredParent = (predicate, relType) => {
37
+ for (const childId of relationships.inverse.offsets.keys()) {
38
+ if (canonicalParent.has(childId) || !predicate(childId))
39
+ continue;
40
+ const edges = relationships.inverse.getEdges(childId, relType);
41
+ if (edges.length === 0)
42
+ continue;
43
+ // `edges[0]` is the first-declared edge of this type for this child -
44
+ // see the doc comment above for why the CSR preserves declaration
45
+ // order here. This mirrors apps/server's `canonical_parent`
46
+ // (`spatial.rs`), which does `entry(...).or_insert(...)` while
47
+ // iterating relationships in file-scan order: first occurrence wins.
48
+ const winner = edges[0];
49
+ // Inverse edges flip source/target, so `target` here is the original
50
+ // relationship's `relating_id` (the parent).
51
+ canonicalParent.set(childId, winner.target);
52
+ }
53
+ };
54
+ // Pass 1: aggregation, unconditionally - it always wins.
55
+ claimFirstDeclaredParent(() => true, RelationshipType.Aggregates);
56
+ // Pass 2: promotion-by-containment, only for children aggregation left unclaimed.
57
+ claimFirstDeclaredParent((childId) => {
58
+ const childType = entities.getTypeEnum(childId);
59
+ return isSpatialStructureType(childType) && childType !== IfcTypeEnum.IfcProject;
60
+ }, RelationshipType.ContainsElements);
61
+ return canonicalParent;
62
+ }
63
+ //# sourceMappingURL=spatial-hierarchy-canonical-parent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spatial-hierarchy-canonical-parent.js","sourceRoot":"","sources":["../src/spatial-hierarchy-canonical-parent.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAQ/D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAqB,EAAE,aAAgC;IAC5F,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD,MAAM,wBAAwB,GAAG,CAC/B,SAAuC,EACvC,OAAyB,EACnB,EAAE;QACR,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAAE,SAAS;YAClE,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACjC,sEAAsE;YACtE,kEAAkE;YAClE,4DAA4D;YAC5D,+DAA+D;YAC/D,qEAAqE;YACrE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,qEAAqE;YACrE,6CAA6C;YAC7C,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;IAEF,yDAAyD;IACzD,wBAAwB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAClE,kFAAkF;IAClF,wBAAwB,CACtB,CAAC,OAAO,EAAE,EAAE;QACV,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,sBAAsB,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,WAAW,CAAC,UAAU,CAAC;IACnF,CAAC,EACD,gBAAgB,CAAC,gBAAgB,CAClC,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { IfcDataStore } from './columnar-parser.js';
2
+ import { type CompactEntityIndexColumns } from './compact-entity-index-transport.js';
3
+ import { type DataStoreTransport } from './data-store-transport.js';
4
+ import type { IfcSourceBytes } from './source-bytes.js';
5
+ interface PackedIndex {
6
+ format: 'packed-index-v1';
7
+ byId: CompactEntityIndexColumns;
8
+ names: string[];
9
+ offsets: Uint32Array;
10
+ ids: Uint32Array | Float64Array;
11
+ }
12
+ interface IndexReference {
13
+ format: 'published-index-v1';
14
+ }
15
+ export type WorkerStorePayload = Omit<DataStoreTransport, 'entityIndex'> & {
16
+ entityIndex: DataStoreTransport['entityIndex'] | PackedIndex | IndexReference;
17
+ };
18
+ /** #3985: canonical parser primary columns/byType are immutable after the
19
+ * spatial callback. Deferred atoms get a separate final index. This publisher
20
+ * must not be used by a producer that edits published numeric columns in place.
21
+ * Public receiver arrays and LRU entries are never the retained wire seed.
22
+ */
23
+ export declare class WorkerIndexPublisher {
24
+ private readonly enabled;
25
+ private published?;
26
+ constructor(enabled: boolean);
27
+ serialize(store: IfcDataStore, final: boolean): {
28
+ payload: WorkerStorePayload;
29
+ transfers: Transferable[];
30
+ transportBytes: number;
31
+ };
32
+ /** Call only after the partial postMessage succeeds. */
33
+ publishedPartial(store: IfcDataStore): void;
34
+ }
35
+ /** One instance per parse request, never a federation/global cache. */
36
+ export declare class WorkerIndexReceiver {
37
+ private seed?;
38
+ capturePartial(payload: WorkerStorePayload): void;
39
+ hydrate(payload: WorkerStorePayload, source: IfcSourceBytes): IfcDataStore;
40
+ clear(): void;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=worker-index-publication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-index-publication.d.ts","sourceRoot":"","sources":["../src/worker-index-publication.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAA+B,KAAK,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAClH,OAAO,EAAiD,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACnH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,UAAU,WAAW;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,yBAAyB,CAAC;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,WAAW,GAAG,YAAY,CAAC;CACjC;AACD,UAAU,cAAc;IAAG,MAAM,EAAE,oBAAoB,CAAA;CAAE;AACzD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,GAAG;IACzE,WAAW,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,WAAW,GAAG,cAAc,CAAC;CAC/E,CAAC;AA2BF;;;;GAIG;AACH,qBAAa,oBAAoB;IAOnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,SAAS,CAAC,CAIhB;gBAE2B,OAAO,EAAE,OAAO;IAE7C,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,kBAAkB,CAAC;QAAC,SAAS,EAAE,YAAY,EAAE,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAwClI,wDAAwD;IACxD,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;CAQ5C;AAED,uEAAuE;AACvE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAc;IAE3B,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAMjD,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,GAAG,YAAY;IAsB1E,KAAK,IAAI,IAAI;CACd"}
@@ -0,0 +1,129 @@
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
+ import { CompactEntityIndex } from './compact-entity-index.js';
5
+ import { compactEntityIndexToColumns } from './compact-entity-index-transport.js';
6
+ import { fromTransport, toTransport, transportByteSize } from './data-store-transport.js';
7
+ function packIndex(store, byId) {
8
+ const entries = [...store.entityIndex.byType];
9
+ let count = 0;
10
+ let u32 = true;
11
+ for (const [, values] of entries) {
12
+ count += values.length;
13
+ for (const id of values) {
14
+ if (!Number.isInteger(id) || id < 0 || id > 0xffffffff || Object.is(id, -0))
15
+ u32 = false;
16
+ }
17
+ }
18
+ if (count > 0xffffffff)
19
+ throw new Error('Packed byType index exceeds u32 offset capacity');
20
+ // Arbitrary number[] producers retain their numbers, including NaN/-0 and
21
+ // IDs above u32. Canonical parser IDs use the compact representation.
22
+ const ids = u32 ? new Uint32Array(count) : new Float64Array(count);
23
+ const offsets = new Uint32Array(entries.length + 1);
24
+ let offset = 0;
25
+ for (let i = 0; i < entries.length; i++) {
26
+ offsets[i] = offset;
27
+ ids.set(entries[i][1], offset);
28
+ offset += entries[i][1].length;
29
+ }
30
+ offsets[entries.length] = offset;
31
+ return { format: 'packed-index-v1', byId, names: entries.map(([name]) => name), offsets, ids };
32
+ }
33
+ /** #3985: canonical parser primary columns/byType are immutable after the
34
+ * spatial callback. Deferred atoms get a separate final index. This publisher
35
+ * must not be used by a producer that edits published numeric columns in place.
36
+ * Public receiver arrays and LRU entries are never the retained wire seed.
37
+ */
38
+ export class WorkerIndexPublisher {
39
+ enabled;
40
+ published;
41
+ constructor(enabled) {
42
+ this.enabled = enabled;
43
+ }
44
+ serialize(store, final) {
45
+ // TODO(remove-by: all supported parser-worker clients negotiate packed-index-v1, parser maintainers), #3985.
46
+ if (!this.enabled) {
47
+ const envelope = toTransport(store);
48
+ return { ...envelope, transfers: final ? envelope.transfers : [], transportBytes: transportByteSize(envelope.payload) };
49
+ }
50
+ if (!(store.entityIndex.byId instanceof CompactEntityIndex)) {
51
+ throw new Error('Worker publication requires CompactEntityIndex');
52
+ }
53
+ const byId = compactEntityIndexToColumns(store.entityIndex.byId);
54
+ const previous = this.published;
55
+ const entries = [...store.entityIndex.byType];
56
+ const reference = final && previous && previous.index === store.entityIndex
57
+ && previous.columns.expressIds === byId.expressIds
58
+ && previous.columns.byteOffsets === byId.byteOffsets
59
+ && previous.columns.byteLengths === byId.byteLengths
60
+ && previous.columns.typeIndices === byId.typeIndices
61
+ && previous.columns.typeStrings.length === byId.typeStrings.length
62
+ && previous.columns.typeStrings.every((name, i) => name === byId.typeStrings[i])
63
+ && previous.entries.length === store.entityIndex.byType.size
64
+ && previous.entries.every(([name, values, length], i) => entries[i][0] === name && entries[i][1] === values && values.length === length);
65
+ const envelope = toTransport(store, { byId, byType: [] });
66
+ const entityIndex = reference
67
+ ? { format: 'published-index-v1' } : packIndex(store, byId);
68
+ const primaryBuffers = new Set([
69
+ byId.expressIds.buffer, byId.byteOffsets.buffer, byId.byteLengths.buffer, byId.typeIndices.buffer,
70
+ ]);
71
+ // #3985: even a referenced index keeps its original ABs in this final
72
+ // transfer list. Unreachable transfers detach/dispose worker ownership at
73
+ // successful publication, without adding another main-thread index.
74
+ // This does not promise when the browser reclaims physical backing.
75
+ const transfers = final ? envelope.transfers : [];
76
+ if (entityIndex.format === 'packed-index-v1')
77
+ transfers.push(entityIndex.ids.buffer, entityIndex.offsets.buffer);
78
+ // Count reachable payload bytes, excluding detached disposal-only backing.
79
+ const transportBytes = transportByteSize(envelope.payload)
80
+ - (reference ? [...primaryBuffers].reduce((sum, buffer) => sum + (buffer instanceof ArrayBuffer ? buffer.byteLength : 0), 0) : 0)
81
+ + (entityIndex.format === 'packed-index-v1' ? entityIndex.ids.byteLength + entityIndex.offsets.byteLength : 0);
82
+ return { payload: { ...envelope.payload, entityIndex }, transfers, transportBytes };
83
+ }
84
+ /** Call only after the partial postMessage succeeds. */
85
+ publishedPartial(store) {
86
+ if (!this.enabled || !(store.entityIndex.byId instanceof CompactEntityIndex))
87
+ return;
88
+ this.published = {
89
+ index: store.entityIndex,
90
+ columns: compactEntityIndexToColumns(store.entityIndex.byId),
91
+ entries: [...store.entityIndex.byType].map(([name, values]) => [name, values, values.length]),
92
+ };
93
+ }
94
+ }
95
+ /** One instance per parse request, never a federation/global cache. */
96
+ export class WorkerIndexReceiver {
97
+ seed;
98
+ capturePartial(payload) {
99
+ if ('format' in payload.entityIndex && payload.entityIndex.format === 'packed-index-v1') {
100
+ this.seed = payload.entityIndex;
101
+ }
102
+ }
103
+ hydrate(payload, source) {
104
+ const index = payload.entityIndex;
105
+ if (!('format' in index))
106
+ return fromTransport({ ...payload, entityIndex: index }, source);
107
+ const packed = index.format === 'published-index-v1' ? this.seed : index;
108
+ if (!packed)
109
+ throw new Error('Final parser index references a missing partial publication');
110
+ if (packed.offsets.length !== packed.names.length + 1 || packed.offsets[0] !== 0
111
+ || packed.offsets[packed.names.length] !== packed.ids.length) {
112
+ throw new Error('Invalid packed parser index offsets');
113
+ }
114
+ const byType = new Map();
115
+ for (let i = 0; i < packed.names.length; i++) {
116
+ const start = packed.offsets[i], end = packed.offsets[i + 1];
117
+ if (end < start || end > packed.ids.length || byType.has(packed.names[i])) {
118
+ throw new Error('Invalid packed parser index range or duplicate type');
119
+ }
120
+ const values = new Array(end - start);
121
+ for (let row = start; row < end; row++)
122
+ values[row - start] = packed.ids[row];
123
+ byType.set(packed.names[i], values);
124
+ }
125
+ return fromTransport({ ...payload, entityIndex: { byId: packed.byId, byType: [] } }, source, byType);
126
+ }
127
+ clear() { this.seed = undefined; }
128
+ }
129
+ //# sourceMappingURL=worker-index-publication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-index-publication.js","sourceRoot":"","sources":["../src/worker-index-publication.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@
8
8
  * 2. Caller constructs a `WorkerParser` and calls `parseColumnar(sab, …)`.
9
9
  * 3. The worker emits `progress`, `diagnostic`, optional `partial-store`,
10
10
  * then `complete` (or `error`). This wrapper resolves the returned
11
- * Promise on `complete` and self-terminates afterward.
11
+ * Promise after receiving `complete` and hydrating the result. The
12
+ * completed worker is terminated before receiver reconstruction.
12
13
  *
13
14
  * On `partial-store` the wrapper invokes `options.onSpatialReady` so the
14
15
  * viewer can render the spatial-hierarchy panel before the full parse
@@ -16,8 +17,10 @@
16
17
  */
17
18
  import type { IfcDataStore } from './columnar-parser.js';
18
19
  import type { ParseOptions } from './index.js';
19
- import { type ParserMemorySnapshot } from './data-store-transport.js';
20
+ import type { ParserMemorySnapshot } from './data-store-transport.js';
20
21
  export interface WorkerParserOptions extends ParseOptions {
22
+ /** Fresh per-request 16-byte prepass fingerprint cell; never awaited. */
23
+ sourceFingerprint?: SharedArrayBuffer;
21
24
  /** Override the worker URL. Default: bundler-resolved `parser.worker.ts`. */
22
25
  workerUrl?: URL | string;
23
26
  /** Optional callback receiving the per-parse memory snapshot at completion. */
@@ -1 +1 @@
1
- {"version":3,"file":"worker-parser.d.ts","sourceRoot":"","sources":["../src/worker-parser.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAQnC,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,6EAA6E;IAC7E,SAAS,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;IACzB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAMT;IAEhB;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;gBAOjB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,GAAG,GAAG,MAAM,CAAA;KAAO;IAQtD;;;;;;OAMG;IACH,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IA8JlG;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CACZ,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI;IAmBP,gEAAgE;IAChE,SAAS,IAAI,IAAI;CAMlB"}
1
+ {"version":3,"file":"worker-parser.d.ts","sourceRoot":"","sources":["../src/worker-parser.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAQtE,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;IACzB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAMT;IAEhB;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;gBAOjB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,GAAG,GAAG,MAAM,CAAA;KAAO;IAQtD;;;;;;OAMG;IACH,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IA0KlG;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CACZ,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI;IAmBP,gEAAgE;IAChE,SAAS,IAAI,IAAI;CAUlB"}
@@ -1,7 +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 { fromTransport, } from './data-store-transport.js';
4
+ import { WorkerIndexReceiver } from './worker-index-publication.js';
5
5
  import { contiguousSourceBytes } from './source-bytes.js';
6
6
  import { restashWasmPanicLocation } from './wasm-panic-forward.js';
7
7
  export class WorkerParser {
@@ -70,8 +70,16 @@ export class WorkerParser {
70
70
  // on exactly the models #2183 is about. The previous code got one hash by
71
71
  // memoising on the shared Uint8Array; sharing the accessor is the same
72
72
  // guarantee without the side table.
73
- const sourceBytes = contiguousSourceBytes(new Uint8Array(source));
73
+ let sourceBytes;
74
+ const indexReceiver = new WorkerIndexReceiver();
75
+ const hydrate = (payload) => {
76
+ // #3983: the worker hashes the source before the first UI publication.
77
+ // Retain one accessor across partial/full stores and compression swaps.
78
+ sourceBytes ??= contiguousSourceBytes(new Uint8Array(source), payload.sourceContentKey ?? undefined);
79
+ return indexReceiver.hydrate(payload, sourceBytes);
80
+ };
74
81
  const settle = (cleanup) => {
82
+ indexReceiver.clear();
75
83
  worker.onmessage = null;
76
84
  worker.onerror = null;
77
85
  worker.onmessageerror = null;
@@ -89,10 +97,11 @@ export class WorkerParser {
89
97
  options.onDiagnostic?.(msg.message);
90
98
  return;
91
99
  case 'partial-store': {
92
- if (!options.onSpatialReady)
93
- return;
94
100
  try {
95
- const partial = fromTransport(msg.payload, sourceBytes);
101
+ indexReceiver.capturePartial(msg.payload);
102
+ if (!options.onSpatialReady)
103
+ return;
104
+ const partial = hydrate(msg.payload);
96
105
  options.onSpatialReady(partial);
97
106
  }
98
107
  catch (err) {
@@ -104,18 +113,21 @@ export class WorkerParser {
104
113
  }
105
114
  case 'complete': {
106
115
  try {
107
- const dataStore = fromTransport(msg.payload, sourceBytes);
108
- options.onMemorySnapshot?.(msg.memory);
109
- settle(() => {
110
- worker.terminate();
116
+ // #3985: the received message owns its transferred columns. Stop
117
+ // the completed sender before allocating receiver collections;
118
+ // retain indexReceiver's partial seed until hydration completes.
119
+ worker.terminate();
120
+ if (this.worker === worker)
111
121
  this.worker = null;
112
- });
122
+ const dataStore = hydrate(msg.payload);
123
+ options.onMemorySnapshot?.(msg.memory);
124
+ settle(() => { });
113
125
  resolve(dataStore);
114
126
  }
115
127
  catch (err) {
116
128
  settle(() => {
117
- worker.terminate();
118
- this.worker = null;
129
+ if (this.worker === worker)
130
+ this.worker = null;
119
131
  });
120
132
  reject(new Error(`complete hydrate failed: ${err instanceof Error ? err.message : String(err)}`));
121
133
  }
@@ -172,6 +184,8 @@ export class WorkerParser {
172
184
  }
173
185
  const input = {
174
186
  type: 'parse',
187
+ sourceFingerprint: options.sourceFingerprint,
188
+ indexTransport: 'packed-index-v1',
175
189
  id,
176
190
  source,
177
191
  yieldIntervalMs: options.yieldIntervalMs,
@@ -234,6 +248,10 @@ export class WorkerParser {
234
248
  /** Terminate the worker if running. Safe to call repeatedly. */
235
249
  terminate() {
236
250
  if (this.worker) {
251
+ // Drop the per-request hydration closure, including its packed index seed.
252
+ this.worker.onmessage = null;
253
+ this.worker.onerror = null;
254
+ this.worker.onmessageerror = null;
237
255
  this.worker.terminate();
238
256
  this.worker = null;
239
257
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker-parser.js","sourceRoot":"","sources":["../src/worker-parser.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAqB/D,OAAO,EACL,aAAa,GAGd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAenE,MAAM,OAAO,YAAY;IACf,MAAM,GAAkB,IAAI,CAAC;IAC7B,cAAc,GAAG,CAAC,CAAC;IACV,SAAS,CAAsB;IAChD;;;;OAIG;IACK,iBAAiB,GAMd,IAAI,CAAC;IAEhB;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,IAAI,OAAO,iBAAiB,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAC3D,MAAM,GAAG,GAAI,UAAgD,CAAC,mBAAmB,CAAC;QAClF,OAAO,GAAG,KAAK,KAAK,CAAC;IACvB,CAAC;IAED,YAAY,UAAwC,EAAE;QACpD,mEAAmE;QACnE,oEAAoE;QACpE,sEAAsE;QACtE,8CAA8C;QAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,MAAyB,EAAE,UAA+B,EAAE;QACxE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1D,IAAI,MAAc,CAAC;YACnB,IAAI,CAAC;gBACH,oEAAoE;gBACpE,gEAAgE;gBAChE,0CAA0C;gBAC1C,MAAM,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI;oBAC9B,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAChD,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxG,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,oEAAoE;YACpE,kEAAkE;YAClE,yEAAyE;YACzE,0EAA0E;YAC1E,0EAA0E;YAC1E,yEAAyE;YACzE,0EAA0E;YAC1E,uEAAuE;YACvE,oCAAoC;YACpC,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAElE,MAAM,MAAM,GAAG,CAAC,OAAmB,EAAE,EAAE;gBACrC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;gBACxB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,MAAM,CAAC,SAAS,GAAG,CAAC,KAA8C,EAAE,EAAE;gBACpE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE;oBAAE,OAAO;gBAElC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,UAAU;wBACb,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACnC,OAAO;oBAET,KAAK,YAAY;wBACf,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACpC,OAAO;oBAET,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,IAAI,CAAC,OAAO,CAAC,cAAc;4BAAE,OAAO;wBACpC,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,OAA6B,EAAE,WAAW,CAAC,CAAC;4BAC9E,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBAClC,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,wDAAwD;4BACxD,yCAAyC;4BACzC,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;wBACpE,CAAC;wBACD,OAAO;oBACT,CAAC;oBAED,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,OAA6B,EAAE,WAAW,CAAC,CAAC;4BAChF,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;4BACvC,MAAM,CAAC,GAAG,EAAE;gCACV,MAAM,CAAC,SAAS,EAAE,CAAC;gCACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;4BACrB,CAAC,CAAC,CAAC;4BACH,OAAO,CAAC,SAAS,CAAC,CAAC;wBACrB,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,CAAC,GAAG,EAAE;gCACV,MAAM,CAAC,SAAS,EAAE,CAAC;gCACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;4BACrB,CAAC,CAAC,CAAC;4BACH,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpG,CAAC;wBACD,OAAO;oBACT,CAAC;oBAED,KAAK,OAAO;wBACV,8DAA8D;wBAC9D,gEAAgE;wBAChE,4CAA4C;wBAC5C,0DAA0D;wBAC1D,0CAA0C;wBAC1C,wBAAwB,CAAC,UAAU,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBAC1F,MAAM,CAAC,GAAG,EAAE;4BACV,MAAM,CAAC,SAAS,EAAE,CAAC;4BACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;wBACrB,CAAC,CAAC,CAAC;wBACH,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC/B,OAAO;gBACX,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE;gBACvB,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACrB,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC,CAAC;YAEF,MAAM,CAAC,cAAc,GAAG,GAAG,EAAE;gBAC3B,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACrB,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC,CAAC;YACvF,CAAC,CAAC;YAEF,mEAAmE;YACnE,mEAAmE;YACnE,yBAAyB;YACzB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,CAAC,WAAW,CAAC;wBACjB,IAAI,EAAE,kBAAkB;wBACxB,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;wBACzC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;qBAClD,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAA6B;gBACtC,IAAI,EAAE,OAAO;gBACb,EAAE;gBACF,MAAM;gBACN,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;gBACtD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aAC/C,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sEAAsE;gBACtE,+DAA+D;gBAC/D,sEAAsE;gBACtE,iEAAiE;gBACjE,mEAAmE;gBACnE,gEAAgE;gBAChE,MAAM,CAAC,GAAG,EAAE;oBACV,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACrB,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CACZ,GAAgB,EAChB,MAAmB,EACnB,OAAoB,EACpB,gBAAyB,EACzB,oBAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;YAC1F,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,kBAAkB;gBACxB,GAAG;gBACH,MAAM;gBACN,OAAO;gBACP,gBAAgB;gBAChB,oBAAoB;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,SAAS;QACP,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"worker-parser.js","sourceRoot":"","sources":["../src/worker-parser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/parser",
3
- "version": "5.0.0",
3
+ "version": "5.2.0",
4
4
  "description": "IFC/STEP parser for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "@ifc-lite/data": "^4.0.0",
23
23
  "@ifc-lite/encoding": "^2.2.0",
24
24
  "@ifc-lite/ifcx": "^4.0.0",
25
- "@ifc-lite/wasm": "^6.2.0"
25
+ "@ifc-lite/wasm": "^6.4.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "typescript": "^6.0.3",