@ifc-lite/parser 9.5.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.
- package/dist/project-unit-walk.d.ts +131 -0
- package/dist/project-unit-walk.d.ts.map +1 -0
- package/dist/project-unit-walk.js +123 -0
- package/dist/project-unit-walk.js.map +1 -0
- package/dist/project-units.d.ts +5 -1
- package/dist/project-units.d.ts.map +1 -1
- package/dist/project-units.js +47 -21
- package/dist/project-units.js.map +1 -1
- package/package.json +3 -3
|
@@ -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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"}
|
package/dist/project-units.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/project-units.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
66
|
-
return entry?.resolved ? { ...entry, resolved: entry.resolved } : null;
|
|
75
|
+
return resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, walk);
|
|
67
76
|
}
|
|
68
77
|
finally {
|
|
69
|
-
|
|
78
|
+
walk.path.delete(ref);
|
|
70
79
|
}
|
|
71
80
|
}
|
|
72
|
-
function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/parser",
|
|
3
|
-
"version": "9.5.
|
|
3
|
+
"version": "9.5.1",
|
|
4
4
|
"description": "IFC/STEP parser for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"@ifc-lite/encoding": "^2.3.0",
|
|
25
25
|
"@ifc-lite/ifcx": "^4.4.0",
|
|
26
26
|
"@ifc-lite/wasm": "^10.4.0",
|
|
27
|
-
"@ifc-lite/
|
|
28
|
-
"@ifc-lite/
|
|
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",
|