@ifc-lite/parser 7.0.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/columnar-parser-attributes.d.ts +1 -1
- package/dist/columnar-parser-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-attributes.js +36 -1
- package/dist/columnar-parser-attributes.js.map +1 -1
- package/dist/columnar-parser-indexes.d.ts.map +1 -1
- package/dist/columnar-parser-indexes.js +24 -1
- package/dist/columnar-parser-indexes.js.map +1 -1
- package/dist/columnar-parser-relationships.d.ts +2 -1
- package/dist/columnar-parser-relationships.d.ts.map +1 -1
- package/dist/columnar-parser-relationships.js +2 -2
- package/dist/columnar-parser-relationships.js.map +1 -1
- package/dist/columnar-parser-root-attributes.d.ts +2 -5
- package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-root-attributes.js +22 -2
- package/dist/columnar-parser-root-attributes.js.map +1 -1
- package/dist/columnar-parser.d.ts +5 -1
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +19 -56
- package/dist/columnar-parser.js.map +1 -1
- package/dist/cost-evaluator.d.ts.map +1 -1
- package/dist/cost-evaluator.js +6 -4
- package/dist/cost-evaluator.js.map +1 -1
- package/dist/cost-extractor.d.ts +2 -1
- package/dist/cost-extractor.d.ts.map +1 -1
- package/dist/cost-extractor.js +22 -5
- package/dist/cost-extractor.js.map +1 -1
- package/dist/cost-overlay.d.ts +104 -0
- package/dist/cost-overlay.d.ts.map +1 -0
- package/dist/cost-overlay.js +5 -0
- package/dist/cost-overlay.js.map +1 -0
- package/dist/cost-reader.d.ts +45 -2
- package/dist/cost-reader.d.ts.map +1 -1
- package/dist/cost-reader.js +168 -11
- package/dist/cost-reader.js.map +1 -1
- package/dist/cost-types.d.ts +9 -1
- package/dist/cost-types.d.ts.map +1 -1
- package/dist/cost.d.ts +1 -0
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js.map +1 -1
- package/dist/effective-entity-record.d.ts +35 -0
- package/dist/effective-entity-record.d.ts.map +1 -0
- package/dist/effective-entity-record.js +43 -0
- package/dist/effective-entity-record.js.map +1 -0
- package/dist/effective-relationship-overlay.d.ts +31 -0
- package/dist/effective-relationship-overlay.d.ts.map +1 -0
- package/dist/effective-relationship-overlay.js +111 -0
- package/dist/effective-relationship-overlay.js.map +1 -0
- package/dist/exact-relationship-edges.d.ts +46 -0
- package/dist/exact-relationship-edges.d.ts.map +1 -0
- package/dist/exact-relationship-edges.js +88 -0
- package/dist/exact-relationship-edges.js.map +1 -0
- package/dist/identity-hints.d.ts +32 -0
- package/dist/identity-hints.d.ts.map +1 -0
- package/dist/identity-hints.js +130 -0
- package/dist/identity-hints.js.map +1 -0
- package/dist/ifc-schema.d.ts +2 -0
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +13 -0
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +6 -31
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +18 -11
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/project-units.d.ts.map +1 -1
- package/dist/project-units.js +8 -2
- package/dist/project-units.js.map +1 -1
- package/dist/property-unit.d.ts +24 -0
- package/dist/property-unit.d.ts.map +1 -0
- package/dist/property-unit.js +29 -0
- package/dist/property-unit.js.map +1 -0
- package/dist/query-backend-maps.d.ts +5 -8
- package/dist/query-backend-maps.d.ts.map +1 -1
- package/dist/query-backend-maps.js +8 -15
- package/dist/query-backend-maps.js.map +1 -1
- package/dist/relationship-schema-slots.d.ts +8 -8
- package/dist/relationship-schema-slots.d.ts.map +1 -1
- package/dist/relationship-schema-slots.js +31 -18
- package/dist/relationship-schema-slots.js.map +1 -1
- package/dist/worker-parser.d.ts +29 -1
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +80 -7
- package/dist/worker-parser.js.map +1 -1
- package/package.json +7 -7
package/dist/worker-parser.d.ts
CHANGED
|
@@ -31,11 +31,28 @@ export interface WorkerParserOptions extends ParseOptions {
|
|
|
31
31
|
* entity index — saves a duplicate 6–10 s scan on huge files.
|
|
32
32
|
*/
|
|
33
33
|
waitForEntityIndex?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Cancel this parse. If already aborted when `parseColumnar` is called, the
|
|
36
|
+
* returned promise rejects immediately without spawning a worker. If
|
|
37
|
+
* aborted while the parse is in flight, only THIS request's worker is
|
|
38
|
+
* terminated and the promise rejects with `signal.reason`: a custom
|
|
39
|
+
* `abort(reason)` is passed through as-is, the default is an `AbortError`.
|
|
40
|
+
*/
|
|
41
|
+
signal?: AbortSignal;
|
|
34
42
|
}
|
|
35
43
|
export declare class WorkerParser {
|
|
36
44
|
private worker;
|
|
37
45
|
private requestCounter;
|
|
38
46
|
private readonly workerUrl;
|
|
47
|
+
/**
|
|
48
|
+
* One canceller per in-flight `parseColumnar` request. Each call spawns its
|
|
49
|
+
* OWN worker, so overlapping parses on one instance are possible: a
|
|
50
|
+
* request's `signal` cancels only that request (via its own closure), while
|
|
51
|
+
* `terminate()` cancels every entry, so the documented cancel path always
|
|
52
|
+
* settles each promise instead of leaving it pending forever (#4896).
|
|
53
|
+
* A request adds itself on spawn and removes itself in `settle()`.
|
|
54
|
+
*/
|
|
55
|
+
private readonly activeCancels;
|
|
39
56
|
/**
|
|
40
57
|
* Queued entity-index payload. If `setEntityIndex` is called before the
|
|
41
58
|
* worker is spawned (rare — happens only if the caller races a parser
|
|
@@ -79,7 +96,18 @@ export declare class WorkerParser {
|
|
|
79
96
|
* carry no trace of where it happened.
|
|
80
97
|
*/
|
|
81
98
|
setEntityIndex(ids: Uint32Array, starts: Uint32Array, lengths: Uint32Array, oversizedIdCount?: number, malformedRecordCount?: number): void;
|
|
82
|
-
/**
|
|
99
|
+
/**
|
|
100
|
+
* Terminate the worker if running. Safe to call repeatedly.
|
|
101
|
+
*
|
|
102
|
+
* #4896: an in-flight `parseColumnar` promise only ever settled on
|
|
103
|
+
* `complete`/`error`/`onerror`/`onmessageerror` — none of which fire once
|
|
104
|
+
* the worker is killed, so the documented "call terminate() to cancel"
|
|
105
|
+
* path hung the caller's `await` forever. `terminate()` now rejects EVERY
|
|
106
|
+
* in-flight request with an `AbortError` and tears down each one's worker,
|
|
107
|
+
* so cancellation is distinguishable from both a successful parse and a
|
|
108
|
+
* parse failure. To cancel just one of several overlapping parses, abort
|
|
109
|
+
* that request's `signal` instead.
|
|
110
|
+
*/
|
|
83
111
|
terminate(): void;
|
|
84
112
|
}
|
|
85
113
|
//# sourceMappingURL=worker-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAsBtE,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;IAC7B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE;;;;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;IAwMlG;;;;;;;;;;;;;;;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;;;;;;;;;;;OAWG;IACH,SAAS,IAAI,IAAI;CAclB"}
|
package/dist/worker-parser.js
CHANGED
|
@@ -4,10 +4,32 @@
|
|
|
4
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
|
+
/**
|
|
8
|
+
* Build an `AbortError`-shaped error for a cancelled parse. Uses `DOMException`
|
|
9
|
+
* when available (browsers, modern Node) so `err.name === 'AbortError'` matches
|
|
10
|
+
* the same check callers already use for `fetch`/`AbortController` cancellation.
|
|
11
|
+
*/
|
|
12
|
+
function makeAbortError(message = 'Parser worker terminated') {
|
|
13
|
+
if (typeof DOMException !== 'undefined') {
|
|
14
|
+
return new DOMException(message, 'AbortError');
|
|
15
|
+
}
|
|
16
|
+
const err = new Error(message);
|
|
17
|
+
err.name = 'AbortError';
|
|
18
|
+
return err;
|
|
19
|
+
}
|
|
7
20
|
export class WorkerParser {
|
|
8
21
|
worker = null;
|
|
9
22
|
requestCounter = 0;
|
|
10
23
|
workerUrl;
|
|
24
|
+
/**
|
|
25
|
+
* One canceller per in-flight `parseColumnar` request. Each call spawns its
|
|
26
|
+
* OWN worker, so overlapping parses on one instance are possible: a
|
|
27
|
+
* request's `signal` cancels only that request (via its own closure), while
|
|
28
|
+
* `terminate()` cancels every entry, so the documented cancel path always
|
|
29
|
+
* settles each promise instead of leaving it pending forever (#4896).
|
|
30
|
+
* A request adds itself on spawn and removes itself in `settle()`.
|
|
31
|
+
*/
|
|
32
|
+
activeCancels = new Set();
|
|
11
33
|
/**
|
|
12
34
|
* Queued entity-index payload. If `setEntityIndex` is called before the
|
|
13
35
|
* worker is spawned (rare — happens only if the caller races a parser
|
|
@@ -45,8 +67,12 @@ export class WorkerParser {
|
|
|
45
67
|
* pre-pass). The worker neither transfers nor mutates the buffer.
|
|
46
68
|
*/
|
|
47
69
|
parseColumnar(source, options = {}) {
|
|
70
|
+
if (options.signal?.aborted) {
|
|
71
|
+
return Promise.reject(options.signal.reason ?? makeAbortError('Parse aborted before start'));
|
|
72
|
+
}
|
|
48
73
|
return new Promise((resolve, reject) => {
|
|
49
74
|
const id = `parse_${Date.now()}_${++this.requestCounter}`;
|
|
75
|
+
let onSignalAbort = null;
|
|
50
76
|
let worker;
|
|
51
77
|
try {
|
|
52
78
|
// Inlining `new URL(..., import.meta.url)` inside `new Worker(...)`
|
|
@@ -54,13 +80,31 @@ export class WorkerParser {
|
|
|
54
80
|
// Caller-supplied URLs are honored as-is.
|
|
55
81
|
worker = this.workerUrl !== null
|
|
56
82
|
? new Worker(this.workerUrl, { type: 'module' })
|
|
57
|
-
: new Worker(new URL('./parser.worker.
|
|
83
|
+
: new Worker(new URL('./parser.worker.js', import.meta.url), { type: 'module' });
|
|
58
84
|
}
|
|
59
85
|
catch (err) {
|
|
60
86
|
reject(new Error(`Failed to spawn parser worker: ${err instanceof Error ? err.message : String(err)}`));
|
|
61
87
|
return;
|
|
62
88
|
}
|
|
89
|
+
// `this.worker` is only the `setEntityIndex` target: the most recently
|
|
90
|
+
// spawned worker. Every path below clears it only while it still points
|
|
91
|
+
// at THIS request's worker, so settling one request never detaches another.
|
|
63
92
|
this.worker = worker;
|
|
93
|
+
// Reject + terminate THIS request on demand, invoked by terminate() and by
|
|
94
|
+
// this request's own 'abort' listener. Removed from `activeCancels` in
|
|
95
|
+
// settle(), and the `settled` guard makes a stray late call a no-op.
|
|
96
|
+
let settled = false;
|
|
97
|
+
const cancel = (reason) => {
|
|
98
|
+
if (settled)
|
|
99
|
+
return;
|
|
100
|
+
settle(() => {
|
|
101
|
+
if (this.worker === worker)
|
|
102
|
+
this.worker = null;
|
|
103
|
+
worker.terminate();
|
|
104
|
+
});
|
|
105
|
+
reject(reason ?? makeAbortError());
|
|
106
|
+
};
|
|
107
|
+
this.activeCancels.add(cancel);
|
|
64
108
|
// ONE accessor, shared by the partial store and the final one. Both
|
|
65
109
|
// alias the same SAB, so this is not merely tidy: `contentKey` is
|
|
66
110
|
// memoised per accessor instance, and the viewer's overlay hooks read it
|
|
@@ -79,12 +123,21 @@ export class WorkerParser {
|
|
|
79
123
|
return indexReceiver.hydrate(payload, sourceBytes);
|
|
80
124
|
};
|
|
81
125
|
const settle = (cleanup) => {
|
|
126
|
+
settled = true;
|
|
82
127
|
indexReceiver.clear();
|
|
83
128
|
worker.onmessage = null;
|
|
84
129
|
worker.onerror = null;
|
|
85
130
|
worker.onmessageerror = null;
|
|
131
|
+
if (onSignalAbort && options.signal)
|
|
132
|
+
options.signal.removeEventListener('abort', onSignalAbort);
|
|
133
|
+
this.activeCancels.delete(cancel);
|
|
86
134
|
cleanup();
|
|
87
135
|
};
|
|
136
|
+
if (options.signal) {
|
|
137
|
+
const signal = options.signal;
|
|
138
|
+
onSignalAbort = () => cancel(signal.reason);
|
|
139
|
+
options.signal.addEventListener('abort', onSignalAbort, { once: true });
|
|
140
|
+
}
|
|
88
141
|
worker.onmessage = (event) => {
|
|
89
142
|
const msg = event.data;
|
|
90
143
|
if (!msg || msg.id !== id)
|
|
@@ -142,7 +195,8 @@ export class WorkerParser {
|
|
|
142
195
|
restashWasmPanicLocation(globalThis, msg.wasmPanicLocation, msg.wasmPanicAt, msg.message);
|
|
143
196
|
settle(() => {
|
|
144
197
|
worker.terminate();
|
|
145
|
-
this.worker
|
|
198
|
+
if (this.worker === worker)
|
|
199
|
+
this.worker = null;
|
|
146
200
|
});
|
|
147
201
|
reject(new Error(msg.message));
|
|
148
202
|
return;
|
|
@@ -151,14 +205,16 @@ export class WorkerParser {
|
|
|
151
205
|
worker.onerror = (err) => {
|
|
152
206
|
settle(() => {
|
|
153
207
|
worker.terminate();
|
|
154
|
-
this.worker
|
|
208
|
+
if (this.worker === worker)
|
|
209
|
+
this.worker = null;
|
|
155
210
|
});
|
|
156
211
|
reject(new Error(`Parser worker error: ${err.message || 'unknown failure'}`));
|
|
157
212
|
};
|
|
158
213
|
worker.onmessageerror = () => {
|
|
159
214
|
settle(() => {
|
|
160
215
|
worker.terminate();
|
|
161
|
-
this.worker
|
|
216
|
+
if (this.worker === worker)
|
|
217
|
+
this.worker = null;
|
|
162
218
|
});
|
|
163
219
|
reject(new Error('Parser worker structured-clone error (likely corrupted message)'));
|
|
164
220
|
};
|
|
@@ -204,7 +260,8 @@ export class WorkerParser {
|
|
|
204
260
|
// left running (and `this.worker` left pointing at it) forever.
|
|
205
261
|
settle(() => {
|
|
206
262
|
worker.terminate();
|
|
207
|
-
this.worker
|
|
263
|
+
if (this.worker === worker)
|
|
264
|
+
this.worker = null;
|
|
208
265
|
});
|
|
209
266
|
reject(err instanceof Error ? err : new Error(String(err)));
|
|
210
267
|
}
|
|
@@ -245,10 +302,26 @@ export class WorkerParser {
|
|
|
245
302
|
console.warn('[WorkerParser] setEntityIndex postMessage failed:', err);
|
|
246
303
|
}
|
|
247
304
|
}
|
|
248
|
-
/**
|
|
305
|
+
/**
|
|
306
|
+
* Terminate the worker if running. Safe to call repeatedly.
|
|
307
|
+
*
|
|
308
|
+
* #4896: an in-flight `parseColumnar` promise only ever settled on
|
|
309
|
+
* `complete`/`error`/`onerror`/`onmessageerror` — none of which fire once
|
|
310
|
+
* the worker is killed, so the documented "call terminate() to cancel"
|
|
311
|
+
* path hung the caller's `await` forever. `terminate()` now rejects EVERY
|
|
312
|
+
* in-flight request with an `AbortError` and tears down each one's worker,
|
|
313
|
+
* so cancellation is distinguishable from both a successful parse and a
|
|
314
|
+
* parse failure. To cancel just one of several overlapping parses, abort
|
|
315
|
+
* that request's `signal` instead.
|
|
316
|
+
*/
|
|
249
317
|
terminate() {
|
|
318
|
+
// Snapshot: each cancel removes itself from the set while we iterate.
|
|
319
|
+
for (const cancel of [...this.activeCancels])
|
|
320
|
+
cancel();
|
|
250
321
|
if (this.worker) {
|
|
251
|
-
//
|
|
322
|
+
// No in-flight promise to settle (e.g. called after a request already
|
|
323
|
+
// resolved/rejected but before a new one started) — just drop the
|
|
324
|
+
// worker's handlers and kill it.
|
|
252
325
|
this.worker.onmessage = null;
|
|
253
326
|
this.worker.onerror = null;
|
|
254
327
|
this.worker.onmessageerror = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-parser.js","sourceRoot":"","sources":["../src/worker-parser.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAsB/D,OAAO,EAAE,mBAAmB,EAA2B,MAAM,+BAA+B,CAAC;AAE7F,OAAO,EAAE,qBAAqB,EAAuB,MAAM,mBAAmB,CAAC;AAK/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;
|
|
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": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"description": "IFC/STEP parser for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"decimal.js": "^10.6.0",
|
|
21
21
|
"fflate": "^0.8.3",
|
|
22
22
|
"jszip": "^3.10.0",
|
|
23
|
-
"@ifc-lite/data": "^
|
|
24
|
-
"@ifc-lite/
|
|
25
|
-
"@ifc-lite/
|
|
26
|
-
"@ifc-lite/wasm": "^
|
|
27
|
-
"@ifc-lite/
|
|
23
|
+
"@ifc-lite/data": "^5.0.0",
|
|
24
|
+
"@ifc-lite/ifcx": "^4.1.2",
|
|
25
|
+
"@ifc-lite/wasm": "^9.2.0",
|
|
26
|
+
"@ifc-lite/wasm-lifecycle": "^0.2.0",
|
|
27
|
+
"@ifc-lite/encoding": "^2.2.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"typescript": "^6.0.3",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"README.md"
|
|
55
55
|
],
|
|
56
56
|
"scripts": {
|
|
57
|
-
"build": "pnpm exec tsc",
|
|
57
|
+
"build": "pnpm exec tsc && node ./scripts/rewrite-worker-urls.mjs && node ./scripts/verify-dist-worker-urls.mjs",
|
|
58
58
|
"typecheck": "node ../../scripts/typecheck-tests.mjs",
|
|
59
59
|
"dev": "pnpm exec tsc --watch",
|
|
60
60
|
"test": "vitest run"
|