@ifc-lite/parser 9.4.0 → 9.5.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.
@@ -0,0 +1,131 @@
1
+ /**
2
+ * The bound on one unit resolution in `project-units.ts` (#7547): the
3
+ * TypeScript twin of `UnitWalk` in `rust/core/src/project_units/mod.rs`
4
+ * (#4603). It has the same depth and read limits, plus a 64 KiB cap on the
5
+ * bytes of charged reads that Rust does not have. It differs in what the read
6
+ * budget counts, and it remembers free reads inside the top-level unit.
7
+ *
8
+ * `IfcDerivedUnit -> IfcDerivedUnitElement -> Unit` is a walk over
9
+ * file-supplied references. The schema types that `Unit` as an `IfcNamedUnit`,
10
+ * so a real derived unit is flat: its elements name SI, conversion-based or
11
+ * context-dependent units, never another derived unit. The reader follows
12
+ * whatever the file names, though. Before #7547 only the native read path
13
+ * carried a path set, and the parsed-source path had no bound at all. A
14
+ * derived unit that names itself threw `RangeError: Maximum call stack size
15
+ * exceeded`, and so did a long acyclic chain. An acyclic fan-out ran for
16
+ * seconds and composed a symbol exponential in its depth. AGENTS.md "Bounding
17
+ * walks over file-supplied references" names the three mechanisms; each one
18
+ * here closes one of them:
19
+ *
20
+ * - `path` (insert on the way in, remove on the way out): a repeat is a cycle.
21
+ * - `MAX_UNIT_RESOLVE_DEPTH`: one path's length, so the stack stays bounded
22
+ * while the path set never fires on an acyclic chain.
23
+ * - `MAX_UNIT_RESOLVE_READS` and `MAX_UNIT_RESOLVE_BYTES`: the reads a walk
24
+ * may be charged, and the bytes those reads may parse. That bounds an
25
+ * acyclic fan-out, which neither of the others sees, and with it the
26
+ * symbol composed.
27
+ *
28
+ * What is charged follows the schema. Inside the top-level unit, a read is
29
+ * free when the index types its target as the schema allows at that place
30
+ * ({@link FLAT_UNIT}). So a flat derived unit of any width (`Elements` is
31
+ * `SET [1:?]`) resolves as before. Every other read is charged before it is
32
+ * made. That covers a nested derived unit, one named as the `Unit` of another
33
+ * derived unit's element, and every read below it. It also covers any target
34
+ * the schema forbids, such as an element whose `Unit` is not a unit. Rust charges every
35
+ * decode instead, so there a flat unit of 128 or more SI elements is refused.
36
+ *
37
+ * Each free read inside the top-level unit is made once per walk. A named
38
+ * unit's resolution, a conversion factor and the factor's `UnitComponent` are
39
+ * kept by id ({@link once}). An element id read a second time is charged:
40
+ * `Elements` is a SET, so a real unit never repeats one. So the free reads of
41
+ * one walk parse each record at most twice (as a `Unit` and as a
42
+ * `UnitComponent`), plus the top-level unit's own reads (at most three
43
+ * records). Their bytes stay within twice the file size plus those three. A
44
+ * nested unit is charged on every visit and never kept. A unit's SYMBOL
45
+ * concatenates its elements' symbols, so a fan-out that a memo made cheap to
46
+ * walk would still compose an output exponential in the depth. Bounding
47
+ * charged reads bounds the elements composed.
48
+ *
49
+ * The depth cap, the budget and the memo apply to the parsed-source path only.
50
+ * Every native (`readEntity`) caller already counts its reads and refuses with
51
+ * its own "exceed the read limit" error (#7353), which this walk must not
52
+ * pre-empt. That limit also bounds a native chain's depth. There the path set
53
+ * alone refuses a cycle, as before #7547.
54
+ *
55
+ * A trip is sticky (`refused`). The top level then refuses the whole authored
56
+ * unit, rather than hand back a symbol and scale composed of the elements the
57
+ * walk happened to reach. A refused unit is reported the way any unit this
58
+ * reader cannot resolve already is, so nothing throws. One difference from
59
+ * Rust follows. `resolve_declared_unit` there skips every refused unit in the
60
+ * project assignment. `extractProjectUnits` keeps one declared without a
61
+ * scale when some of its elements composed, as its "incomplete" rule (#4833)
62
+ * already does for a derived unit with an element it cannot read.
63
+ */
64
+ import type { EntityRef } from './types.js';
65
+ /**
66
+ * What IFC2X3, IFC4 and IFC4X3 allow at each place of a flat derived unit. That
67
+ * is its elements and the `Unit` each names (`IfcNamedUnit`). For a
68
+ * conversion-based unit it is also its `ConversionFactor` and that measure's
69
+ * `UnitComponent` (`IfcUnit`). Inside the top-level unit, a read is free only
70
+ * for these types.
71
+ */
72
+ export declare const FLAT_UNIT: {
73
+ readonly element: Set<string>;
74
+ readonly unit: Set<string>;
75
+ readonly factor: Set<string>;
76
+ readonly factorUnit: Set<string>;
77
+ };
78
+ /** A place in a flat derived unit, as {@link FLAT_UNIT} names it. */
79
+ export type UnitPlace = keyof typeof FLAT_UNIT;
80
+ /** Bookkeeping for one top-level unit resolution. */
81
+ export interface UnitWalk {
82
+ /** Unit ids on the current chain: a repeat is a cycle, the size the depth. */
83
+ readonly path: Set<number>;
84
+ /** Derived units on the current chain whose elements are being read. */
85
+ derived: number;
86
+ /** Entity reads charged so far. */
87
+ reads: number;
88
+ /** Bytes those charged reads parse. */
89
+ bytes: number;
90
+ /** A cycle, the depth cap or the read budget refused part of the walk. */
91
+ refused: boolean;
92
+ /** Whether the depth cap, the budget and the memo apply: the parsed-source path only (see above). */
93
+ readonly budgeted: boolean;
94
+ /** Free reads made inside the top-level unit, by place and id, and what each gave. */
95
+ readonly memo: Partial<Record<UnitPlace, Map<number, unknown>>>;
96
+ }
97
+ export declare function newUnitWalk(budgeted: boolean): UnitWalk;
98
+ /** Put `ref` on the path; `false`, and the walk refused, for a cycle or, when budgeted, past the depth cap. */
99
+ export declare function enterUnit(walk: UnitWalk, ref: number): boolean;
100
+ /**
101
+ * Call before reading `target`, the index entry of the entity about to be
102
+ * read at `place`. Free: any read before the walk enters a derived unit (the
103
+ * top-level unit and its own factor), and a dangling reference (nothing is
104
+ * read). Free too, inside the top-level unit: a target whose type is allowed at
105
+ * `place`. An element id read before in this walk is the one exception: it is charged.
106
+ * Anything else is charged here, before the read. `false`, and the walk
107
+ * refused, once the charged reads or their bytes pass the budget.
108
+ */
109
+ export declare function chargeRead(walk: UnitWalk, target: EntityRef | undefined, place: UnitPlace): boolean;
110
+ /**
111
+ * `read()`, made once per id when it is a free read at `place` inside the
112
+ * top-level unit: a later call returns what the first one gave. That covers
113
+ * a named unit's resolution, a conversion factor and its `UnitComponent`.
114
+ * Anywhere else, and on the native path, `read()` runs every time.
115
+ */
116
+ export declare function once<T>(walk: UnitWalk, target: EntityRef | undefined, place: Exclude<UnitPlace, 'element'>, read: () => T): T;
117
+ /** Go into a derived unit's elements. */
118
+ export declare function enterDerived(walk: UnitWalk): void;
119
+ /** Leave the elements {@link enterDerived} went into. */
120
+ export declare function leaveDerived(walk: UnitWalk): void;
121
+ /**
122
+ * {@link composeDerived}, or `undefined` when the symbol would pass the
123
+ * engine's string limit. A flat unit is not charged, so its symbol grows with
124
+ * its width times the length of the names it joins. `IfcLabel` has no length
125
+ * limit in IFC2X3, so a small file can pass the limit: V8 throws
126
+ * `RangeError: Invalid string length`. Any `RangeError` counts, whatever its
127
+ * message, so the guard does not depend on the engine. Any other error is
128
+ * thrown on.
129
+ */
130
+ export declare function composeWithinLimit(parts: Array<[string, number]>): string | undefined;
131
+ //# sourceMappingURL=project-unit-walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-unit-walk.d.ts","sourceRoot":"","sources":["../src/project-unit-walk.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqB5C;;;;;;GAMG;AACH,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AAEX,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,SAAS,CAAC;AAE/C,qDAAqD;AACrD,MAAM,WAAW,QAAQ;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,qGAAqG;IACrG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACjE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAEvD;AAED,+GAA+G;AAC/G,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAO9D;AAYD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAenG;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAO7H;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAOrF"}
@@ -0,0 +1,123 @@
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 { composeDerived } from './project-units-symbols.js';
5
+ /** Max path length for one walk on the parsed-source path; `MAX_UNIT_RESOLVE_DEPTH` in Rust. */
6
+ const MAX_UNIT_RESOLVE_DEPTH = 16;
7
+ /**
8
+ * Charged reads one walk may make; `MAX_UNIT_RESOLVE_DECODES` in Rust, which
9
+ * charges every decode. A real derived unit is flat, so it is charged none.
10
+ */
11
+ const MAX_UNIT_RESOLVE_READS = 256;
12
+ /**
13
+ * Bytes the charged reads of one walk may parse between them. Without it, a
14
+ * nested unit whose `Elements` list is long but holds no reference costs one
15
+ * charge per visit, and a full parse each time. Rust has no such cap.
16
+ */
17
+ const MAX_UNIT_RESOLVE_BYTES = 64 * 1024;
18
+ const NAMED_UNIT = ['IFCSIUNIT', 'IFCCONVERSIONBASEDUNIT', 'IFCCONVERSIONBASEDUNITWITHOFFSET', 'IFCCONTEXTDEPENDENTUNIT'];
19
+ /**
20
+ * What IFC2X3, IFC4 and IFC4X3 allow at each place of a flat derived unit. That
21
+ * is its elements and the `Unit` each names (`IfcNamedUnit`). For a
22
+ * conversion-based unit it is also its `ConversionFactor` and that measure's
23
+ * `UnitComponent` (`IfcUnit`). Inside the top-level unit, a read is free only
24
+ * for these types.
25
+ */
26
+ export const FLAT_UNIT = {
27
+ element: new Set(['IFCDERIVEDUNITELEMENT']),
28
+ unit: new Set(NAMED_UNIT),
29
+ factor: new Set(['IFCMEASUREWITHUNIT']),
30
+ factorUnit: new Set([...NAMED_UNIT, 'IFCDERIVEDUNIT', 'IFCMONETARYUNIT']),
31
+ };
32
+ export function newUnitWalk(budgeted) {
33
+ return { path: new Set(), derived: 0, reads: 0, bytes: 0, refused: false, budgeted, memo: {} };
34
+ }
35
+ /** Put `ref` on the path; `false`, and the walk refused, for a cycle or, when budgeted, past the depth cap. */
36
+ export function enterUnit(walk, ref) {
37
+ if (walk.path.has(ref) || (walk.budgeted && walk.path.size >= MAX_UNIT_RESOLVE_DEPTH)) {
38
+ walk.refused = true;
39
+ return false;
40
+ }
41
+ walk.path.add(ref);
42
+ return true;
43
+ }
44
+ /** Whether reading `target` at `place` is a free read inside the top-level unit of a budgeted walk. */
45
+ function freeInTopUnit(walk, target, place) {
46
+ return walk.budgeted && walk.derived === 1 && target !== undefined && FLAT_UNIT[place].has(target.type.toUpperCase());
47
+ }
48
+ /** The walk's memo for `place`, made on first use. */
49
+ function memoOf(walk, place) {
50
+ return (walk.memo[place] ??= new Map());
51
+ }
52
+ /**
53
+ * Call before reading `target`, the index entry of the entity about to be
54
+ * read at `place`. Free: any read before the walk enters a derived unit (the
55
+ * top-level unit and its own factor), and a dangling reference (nothing is
56
+ * read). Free too, inside the top-level unit: a target whose type is allowed at
57
+ * `place`. An element id read before in this walk is the one exception: it is charged.
58
+ * Anything else is charged here, before the read. `false`, and the walk
59
+ * refused, once the charged reads or their bytes pass the budget.
60
+ */
61
+ export function chargeRead(walk, target, place) {
62
+ if (!walk.budgeted || target === undefined || walk.derived === 0)
63
+ return true;
64
+ if (freeInTopUnit(walk, target, place)) {
65
+ if (place !== 'element')
66
+ return true;
67
+ const seen = memoOf(walk, place);
68
+ if (!seen.has(target.expressId)) {
69
+ seen.set(target.expressId, true);
70
+ return true;
71
+ }
72
+ }
73
+ walk.reads += 1;
74
+ walk.bytes += target.byteLength;
75
+ if (walk.reads <= MAX_UNIT_RESOLVE_READS && walk.bytes <= MAX_UNIT_RESOLVE_BYTES)
76
+ return true;
77
+ walk.refused = true;
78
+ return false;
79
+ }
80
+ /**
81
+ * `read()`, made once per id when it is a free read at `place` inside the
82
+ * top-level unit: a later call returns what the first one gave. That covers
83
+ * a named unit's resolution, a conversion factor and its `UnitComponent`.
84
+ * Anywhere else, and on the native path, `read()` runs every time.
85
+ */
86
+ export function once(walk, target, place, read) {
87
+ if (!freeInTopUnit(walk, target, place))
88
+ return read();
89
+ const memo = memoOf(walk, place);
90
+ if (memo.has(target.expressId))
91
+ return memo.get(target.expressId);
92
+ const value = read();
93
+ memo.set(target.expressId, value);
94
+ return value;
95
+ }
96
+ /** Go into a derived unit's elements. */
97
+ export function enterDerived(walk) {
98
+ walk.derived += 1;
99
+ }
100
+ /** Leave the elements {@link enterDerived} went into. */
101
+ export function leaveDerived(walk) {
102
+ walk.derived -= 1;
103
+ }
104
+ /**
105
+ * {@link composeDerived}, or `undefined` when the symbol would pass the
106
+ * engine's string limit. A flat unit is not charged, so its symbol grows with
107
+ * its width times the length of the names it joins. `IfcLabel` has no length
108
+ * limit in IFC2X3, so a small file can pass the limit: V8 throws
109
+ * `RangeError: Invalid string length`. Any `RangeError` counts, whatever its
110
+ * message, so the guard does not depend on the engine. Any other error is
111
+ * thrown on.
112
+ */
113
+ export function composeWithinLimit(parts) {
114
+ try {
115
+ return composeDerived(parts);
116
+ }
117
+ catch (error) {
118
+ if (error instanceof RangeError)
119
+ return undefined;
120
+ throw error;
121
+ }
122
+ }
123
+ //# sourceMappingURL=project-unit-walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-unit-walk.js","sourceRoot":"","sources":["../src/project-unit-walk.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,11 @@ interface UnitEntry {
68
68
  monetary: boolean;
69
69
  }
70
70
  /** Resolve a single unit entity by expressId (used for the assignment loop and
71
- * for per-property / per-quantity `Unit` overrides). */
71
+ * for per-property / per-quantity `Unit` overrides). One bounded walk per
72
+ * call: a cycle is unresolved, never a throw. On the parsed-source path so is
73
+ * a chain past the depth cap or a unit whose charged reads run past the budget,
74
+ * while native callers keep their own read limit (#7547). A flat derived unit,
75
+ * as the schema types it, is never charged. */
72
76
  export declare function resolveUnitByRef(extractor: EntityExtractor, entityIndex: EntityByIdIndexLike, ref: number, readEntity?: UnitEntityReader): UnitEntry | null;
73
77
  /**
74
78
  * Resolve the file's declared units from `IFCPROJECT → IFCUNITASSIGNMENT`.
@@ -1 +1 @@
1
- {"version":3,"file":"project-units.d.ts","sourceRoot":"","sources":["../src/project-units.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAIL,WAAW,EAEX,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,WAAW,EAAE,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;+DAE+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qFAAqF;AACrF,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC;AAE9G,yFAAyF;AACzF,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAElD,UAAU,mBAAmB;IAC3B,IAAI,EAAE;QAAE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;KAAE,CAAC;CACzD;AAED,UAAU,eAAgB,SAAQ,mBAAmB;IACnD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/B;AAMD,2DAA2D;AAC3D,qBAAa,YAAY;IACvB;6EACyE;IACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAEvC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKnF,MAAM,CAAC,KAAK,IAAI,YAAY;IAI5B;;kFAE8E;IAC9E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IASxD,iFAAiF;IACjF,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/D,QAAQ,IAAI,YAAY,GAAG,IAAI;IAI/B,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAOD;yDACyD;AACzD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,mBAAmB,EAChC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,gBAAgB,GAC5B,SAAS,GAAG,IAAI,CAElB;AA8JD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,cAAc,EACnC,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,YAAY,CA2Ed"}
1
+ {"version":3,"file":"project-units.d.ts","sourceRoot":"","sources":["../src/project-units.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAGL,WAAW,EAEX,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAIpC,YAAY,EAAE,WAAW,EAAE,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;+DAE+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qFAAqF;AACrF,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC;AAE9G,yFAAyF;AACzF,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAElD,UAAU,mBAAmB;IAC3B,IAAI,EAAE;QAAE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;KAAE,CAAC;CACzD;AAED,UAAU,eAAgB,SAAQ,mBAAmB;IACnD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/B;AAMD,2DAA2D;AAC3D,qBAAa,YAAY;IACvB;6EACyE;IACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAEvC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKnF,MAAM,CAAC,KAAK,IAAI,YAAY;IAI5B;;kFAE8E;IAC9E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IASxD,iFAAiF;IACjF,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/D,QAAQ,IAAI,YAAY,GAAG,IAAI;IAI/B,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAOD;;;;;gDAKgD;AAChD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,mBAAmB,EAChC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,gBAAgB,GAC5B,SAAS,GAAG,IAAI,CAIlB;AA4KD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,cAAc,EACnC,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,YAAY,CA8Ed"}
@@ -3,8 +3,9 @@
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { EntityExtractor } from './entity-extractor.js';
5
5
  import { getReference } from './attribute-helpers.js';
6
- import { composeDerived, conversionUnitSymbol, currencySymbol, measureUnit, siUnitSymbolAndScale, } from './project-units-symbols.js';
6
+ import { conversionUnitSymbol, currencySymbol, measureUnit, siUnitSymbolAndScale, } from './project-units-symbols.js';
7
7
  import { CONVERSION_BASED_UNIT_FACTORS } from './unit-extractor.js';
8
+ import { chargeRead, composeWithinLimit, enterDerived, enterUnit, leaveDerived, newUnitWalk, once } from './project-unit-walk.js';
8
9
  export { measureUnit };
9
10
  /** Expected refusal of a current native context; source-only defaults stay unchanged. */
10
11
  export class ProjectUnitReadError extends Error {
@@ -51,27 +52,38 @@ export class ProjectUnits {
51
52
  }
52
53
  }
53
54
  /** Resolve a single unit entity by expressId (used for the assignment loop and
54
- * for per-property / per-quantity `Unit` overrides). */
55
+ * for per-property / per-quantity `Unit` overrides). One bounded walk per
56
+ * call: a cycle is unresolved, never a throw. On the parsed-source path so is
57
+ * a chain past the depth cap or a unit whose charged reads run past the budget,
58
+ * while native callers keep their own read limit (#7547). A flat derived unit,
59
+ * as the schema types it, is never charged. */
55
60
  export function resolveUnitByRef(extractor, entityIndex, ref, readEntity) {
56
- return resolveUnit(extractor, entityIndex, ref, readEntity, readEntity ? new Set() : undefined);
61
+ const walk = newUnitWalk(!readEntity);
62
+ const entry = resolveUnit(extractor, entityIndex, ref, readEntity, walk);
63
+ return walk.refused ? null : entry;
57
64
  }
58
- function resolveUnit(extractor, entityIndex, ref, readEntity, active) {
59
- // Native current callers also count every dependency read; this path set
60
- // refuses cycles immediately, before recursion consumes the read budget.
61
- if (active?.has(ref))
65
+ function resolveUnit(extractor, entityIndex, ref, readEntity, walk) {
66
+ const entry = walkDeclaredUnit(extractor, entityIndex, ref, readEntity, walk);
67
+ return entry?.resolved ? { ...entry, resolved: entry.resolved } : null;
68
+ }
69
+ /** The only way into {@link resolveDeclaredUnit}: a cycle, or on the parsed-source
70
+ * path a chain past the depth cap, is refused before anything is read (#7547). */
71
+ function walkDeclaredUnit(extractor, entityIndex, ref, readEntity, walk) {
72
+ if (!enterUnit(walk, ref))
62
73
  return null;
63
- active?.add(ref);
64
74
  try {
65
- const entry = resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active);
66
- return entry?.resolved ? { ...entry, resolved: entry.resolved } : null;
75
+ return resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, walk);
67
76
  }
68
77
  finally {
69
- active?.delete(ref);
78
+ walk.path.delete(ref);
70
79
  }
71
80
  }
72
- function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active) {
81
+ function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, walk) {
73
82
  // @raw-entity-enumeration-ok resolve a declared unit from the parsed source index
74
83
  const entRef = entityIndex.byId.get(ref);
84
+ // Free at the top level and for a named unit in the top-level unit; else charged before the read (#7547).
85
+ if (!chargeRead(walk, entRef, 'unit'))
86
+ return null;
75
87
  const entity = readEntity ? readEntity(ref) : entRef ? extractor.extractEntity(entRef) : null;
76
88
  if (!entity)
77
89
  return null;
@@ -103,7 +115,7 @@ function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active) {
103
115
  // at 1.0 (#4690).
104
116
  const namedFactor = unitType === 'LENGTHUNIT' ? CONVERSION_BASED_UNIT_FACTORS[name.toUpperCase()] : undefined;
105
117
  const scale = (typeof attrs[3] === 'number'
106
- ? conversionFactorScale(extractor, entityIndex, attrs[3], readEntity, withOffset)
118
+ ? conversionFactorScale(extractor, entityIndex, attrs[3], readEntity, withOffset, walk)
107
119
  : null) ?? (readEntity ? undefined : namedFactor);
108
120
  const symbol = conversionUnitSymbol(name);
109
121
  if (!withOffset)
@@ -119,6 +131,7 @@ function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active) {
119
131
  }
120
132
  case 'IFCDERIVEDUNIT': {
121
133
  // [0]=Elements (list of refs), [1]=UnitType
134
+ enterDerived(walk);
122
135
  const unitType = cleanEnum(attrs[1]);
123
136
  const elemRefs = Array.isArray(attrs[0]) ? attrs[0] : [];
124
137
  const parts = [];
@@ -130,7 +143,7 @@ function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active) {
130
143
  incomplete = true;
131
144
  continue;
132
145
  }
133
- const el = resolveDerivedElement(extractor, entityIndex, elementRef, readEntity, active);
146
+ const el = resolveDerivedElement(extractor, entityIndex, elementRef, readEntity, walk);
134
147
  if (el) {
135
148
  scale *= Math.pow(el.unitScale, el.exponent);
136
149
  parts.push([el.symbol, el.exponent]);
@@ -139,7 +152,10 @@ function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active) {
139
152
  incomplete = true; // a factor we cannot read: the product is not this unit's scale (#4833)
140
153
  }
141
154
  }
142
- const symbol = composeDerived(parts);
155
+ leaveDerived(walk);
156
+ const symbol = composeWithinLimit(parts); // undefined past the engine's string limit (#7547)
157
+ if (symbol === undefined)
158
+ return { unitType, resolved: null, monetary: false };
143
159
  if (symbol.length === 0)
144
160
  return null;
145
161
  return { unitType, resolved: incomplete ? null : { symbol, siScale: scale }, monetary: false };
@@ -153,9 +169,11 @@ function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active) {
153
169
  return null;
154
170
  }
155
171
  }
156
- function resolveDerivedElement(extractor, entityIndex, elemRef, readEntity, active) {
172
+ function resolveDerivedElement(extractor, entityIndex, elemRef, readEntity, walk) {
157
173
  // @raw-entity-enumeration-ok resolve an element of a parsed derived unit
158
174
  const ref = entityIndex.byId.get(elemRef);
175
+ if (!chargeRead(walk, ref, 'element'))
176
+ return null;
159
177
  const elem = readEntity ? readEntity(elemRef) : ref ? extractor.extractEntity(ref) : null;
160
178
  if (!elem || elem.type.toUpperCase() !== 'IFCDERIVEDUNITELEMENT')
161
179
  return null;
@@ -164,15 +182,18 @@ function resolveDerivedElement(extractor, entityIndex, elemRef, readEntity, acti
164
182
  if (typeof unitRef !== 'number')
165
183
  return null;
166
184
  const exponent = typeof attrs[1] === 'number' ? Math.trunc(attrs[1]) : 1;
167
- const entry = resolveUnit(extractor, entityIndex, unitRef, readEntity, active);
185
+ // @raw-entity-enumeration-ok a named unit in the top-level unit is resolved once per walk (#7547)
186
+ const entry = once(walk, entityIndex.byId.get(unitRef), 'unit', () => resolveUnit(extractor, entityIndex, unitRef, readEntity, walk));
168
187
  if (!entry)
169
188
  return null;
170
189
  return { symbol: entry.resolved.symbol, unitScale: entry.resolved.siScale, exponent };
171
190
  }
172
- function conversionFactorScale(extractor, entityIndex, measureRef, readEntity, withOffset = false) {
191
+ function conversionFactorScale(extractor, entityIndex, measureRef, readEntity, withOffset, walk) {
173
192
  // @raw-entity-enumeration-ok read the source measure in a conversion-based unit
174
193
  const ref = entityIndex.byId.get(measureRef);
175
- const measure = readEntity ? readEntity(measureRef) : ref ? extractor.extractEntity(ref) : null;
194
+ if (!chargeRead(walk, ref, 'factor'))
195
+ return null;
196
+ const measure = readEntity ? readEntity(measureRef) : ref ? once(walk, ref, 'factor', () => extractor.extractEntity(ref)) : null;
176
197
  if (!measure || measure.type.toUpperCase() !== 'IFCMEASUREWITHUNIT')
177
198
  return null;
178
199
  const attrs = measure.attributes ?? [];
@@ -191,7 +212,9 @@ function conversionFactorScale(extractor, entityIndex, measureRef, readEntity, w
191
212
  const compRef = attrs[1];
192
213
  // @raw-entity-enumeration-ok follow the source unit component reference
193
214
  const cRef = typeof compRef === 'number' ? entityIndex.byId.get(compRef) : undefined;
194
- const comp = readEntity && typeof compRef === 'number' ? readEntity(compRef) : cRef ? extractor.extractEntity(cRef) : null;
215
+ if (!chargeRead(walk, cRef, 'factorUnit'))
216
+ return null;
217
+ const comp = readEntity && typeof compRef === 'number' ? readEntity(compRef) : cRef ? once(walk, cRef, 'factorUnit', () => extractor.extractEntity(cRef)) : null;
195
218
  if (!comp)
196
219
  return null;
197
220
  if (comp.type.toUpperCase() !== 'IFCSIUNIT')
@@ -280,7 +303,10 @@ export function extractProjectUnits(source, entityIndex, projectId, readEntity)
280
303
  throw new ProjectUnitReadError('Native project unit assignment member is unreadable');
281
304
  continue;
282
305
  }
283
- const entry = resolveDeclaredUnit(extractor, entityIndex, unitRef, readEntity, readEntity ? new Set() : undefined);
306
+ const walk = newUnitWalk(!readEntity);
307
+ const walked = walkDeclaredUnit(extractor, entityIndex, unitRef, readEntity, walk);
308
+ // A refused walk keeps the unit declared, unresolved, never a partial scale (#7547).
309
+ const entry = walked && walk.refused ? { ...walked, resolved: null } : walked;
284
310
  if (readEntity && (!entry?.resolved || !Number.isFinite(entry.resolved.siScale) || entry.resolved.siScale <= 0)) {
285
311
  throw new ProjectUnitReadError('Native project unit is unresolved or unsupported');
286
312
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-units.js","sourceRoot":"","sources":["../src/project-units.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-units.js","sourceRoot":"","sources":["../src/project-units.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmB/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,oBAAoB,GAErB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAiB,MAAM,wBAAwB,CAAC;AAGjJ,OAAO,EAAE,WAAW,EAAE,CAAC;AAgBvB,yFAAyF;AACzF,MAAM,OAAO,oBAAqB,SAAQ,KAAK;CAAG;AAUlD,+EAA+E;AAC/E,2DAA2D;AAC3D,+EAA+E;AAE/E,2DAA2D;AAC3D,MAAM,OAAO,YAAY;IACvB;6EACyE;IACxD,MAAM,CAAmC;IACzC,YAAY,CAAsB;IAEnD,YAAY,MAAwC,EAAE,QAA6B;QACjF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;kFAE8E;IAC9E,cAAc,CAAC,WAAmB;QAChC,MAAM,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,IAAI,CAAC;QAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACvF,CAAC;IAED,iFAAiF;IACjF,mBAAmB,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;IAChD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAaD;;;;;gDAKgD;AAChD,MAAM,UAAU,gBAAgB,CAC9B,SAA0B,EAC1B,WAAgC,EAChC,GAAW,EACX,UAA6B;IAE7B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,SAA0B,EAAE,WAAgC,EAC/E,GAAW,EAAE,UAAwC,EAAE,IAAc;IACrE,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9E,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED;mFACmF;AACnF,SAAS,gBAAgB,CAAC,SAA0B,EAAE,WAAgC,EACpF,GAAW,EAAE,UAAwC,EAAE,IAAc;IACrE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAA0B,EAC1B,WAAgC,EAChC,GAAW,EACX,UAAwC,EACxC,IAAc;IAEd,kFAAkF;IAClF,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,0GAA0G;IAC1G,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAiB,EAAE,CAC9C,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAClC,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,qCAAqC;YACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACxF,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7F,CAAC;QACD,KAAK,wBAAwB,CAAC;QAC9B,KAAK,kCAAkC,CAAC,CAAC,CAAC;YACxC,qEAAqE;YACrE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,kCAAkC,CAAC;YACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,oEAAoE;YACpE,yEAAyE;YACzE,yEAAyE;YACzE,kBAAkB;YAClB,MAAM,WAAW,GAAG,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9G,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;gBACzC,CAAC,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC;gBACvF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU;gBAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YACzH,uEAAuE;YACvE,mEAAmE;YACnE,+DAA+D;YAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5F,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC7E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,4CAA4C;YAC5C,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3F,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAAC,UAAU,GAAG,IAAI,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAC9D,MAAM,EAAE,GAAG,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvF,IAAI,EAAE,EAAE,CAAC;oBACP,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;oBAC7C,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,IAAI,CAAC,CAAC,wEAAwE;gBAC7F,CAAC;YACH,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,mDAAmD;YAC7F,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC/E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjG,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,qEAAqE;YACrE,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1G,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAA0B,EAC1B,WAAgC,EAChC,OAAe,EACf,UAAwC,EACxC,IAAc;IAEd,yEAAyE;IACzE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,uBAAuB;QAAE,OAAO,IAAI,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,kGAAkG;IAClG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IACtI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAA0B,EAC1B,WAAgC,EAChC,UAAkB,EAClB,UAAwC,EACxC,UAAmB,EACnB,IAAc;IAEd,gFAAgF;IAChF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IACvC,mEAAmE;IACnE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,KAAyB,CAAC;IAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,KAAK,GAAG,SAAS,CAAC;SAChD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACtH,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/E,2EAA2E;IAC3E,4EAA4E;IAC5E,sDAAsD;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,wEAAwE;IACxE,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,IAAI,GAAG,UAAU,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW;QAAE,OAAO,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,sEAAsE;IACtE,IAAI,UAAU,IAAI,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAC3F,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAmC,EACnC,WAA4B,EAC5B,SAAkB,EAClB,UAA6B;IAE7B,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,UAAU,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,UAAU,GAAG,EAAE,CAAC,EAAE;YAChB,IAAI,EAAE,KAAK,GAAG,GAAG;gBAAE,MAAM,IAAI,oBAAoB,CAAC,wDAAwD,CAAC,CAAC;YAC5G,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA+B,CAAC;IACtD,IAAI,QAAQ,GAAwB,IAAI,CAAC;IAEzC,uGAAuG;IACvG,MAAM,UAAU,GAAG,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxE,gGAAgG;IAChG,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,UAAW,CAAC,CAAC;IAC3F,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;QAC5D,IAAI,UAAU;YAAE,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,CAAC,CAAC;QAC5F,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,qDAAqD;IACrD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,UAAU;YAAE,MAAM,IAAI,oBAAoB,CAAC,sCAAsC,CAAC,CAAC;QACvF,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,UAAU;YAAE,MAAM,IAAI,oBAAoB,CAAC,wDAAwD,CAAC,CAAC;QACzG,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,sFAAsF;IACtF,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC;IAC/F,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,mBAAmB,EAAE,CAAC;QACzE,IAAI,UAAU;YAAE,MAAM,IAAI,oBAAoB,CAAC,8CAA8C,CAAC,CAAC;QAC/F,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAI,UAAU;YAAE,MAAM,IAAI,oBAAoB,CAAC,uDAAuD,CAAC,CAAC;QACxG,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,oBAAoB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAClD,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC;IAC3G,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,UAAU;gBAAE,MAAM,IAAI,oBAAoB,CAAC,qDAAqD,CAAC,CAAC;YACtG,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACnF,qFAAqF;QACrF,MAAM,KAAK,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,IAAI,UAAU,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC;YAChH,MAAM,IAAI,oBAAoB,CAAC,kDAAkD,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,oBAAoB,CAAC,oDAAoD,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/parser",
3
- "version": "9.4.0",
3
+ "version": "9.5.1",
4
4
  "description": "IFC/STEP parser for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -23,9 +23,9 @@
23
23
  "@ifc-lite/data": "^6.2.0",
24
24
  "@ifc-lite/encoding": "^2.3.0",
25
25
  "@ifc-lite/ifcx": "^4.4.0",
26
- "@ifc-lite/load-trace": "^0.2.0",
27
26
  "@ifc-lite/wasm": "^10.4.0",
28
- "@ifc-lite/wasm-lifecycle": "^0.2.0"
27
+ "@ifc-lite/wasm-lifecycle": "^0.2.0",
28
+ "@ifc-lite/load-trace": "^0.3.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "typescript": "^6.0.3",