@ifc-lite/parser 6.5.0 → 7.1.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/README.md +21 -0
- 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 +4 -0
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +2 -47
- package/dist/columnar-parser.js.map +1 -1
- package/dist/cost-category-buckets.d.ts +5 -0
- package/dist/cost-category-buckets.d.ts.map +1 -0
- package/dist/cost-category-buckets.js +37 -0
- package/dist/cost-category-buckets.js.map +1 -0
- package/dist/cost-compatibility-tree.d.ts +4 -0
- package/dist/cost-compatibility-tree.d.ts.map +1 -0
- package/dist/cost-compatibility-tree.js +46 -0
- package/dist/cost-compatibility-tree.js.map +1 -0
- package/dist/cost-evaluation-arithmetic.d.ts +16 -0
- package/dist/cost-evaluation-arithmetic.d.ts.map +1 -0
- package/dist/cost-evaluation-arithmetic.js +181 -0
- package/dist/cost-evaluation-arithmetic.js.map +1 -0
- package/dist/cost-evaluation-context.d.ts +20 -0
- package/dist/cost-evaluation-context.d.ts.map +1 -0
- package/dist/cost-evaluation-context.js +54 -0
- package/dist/cost-evaluation-context.js.map +1 -0
- package/dist/cost-evaluation-result.d.ts +5 -0
- package/dist/cost-evaluation-result.d.ts.map +1 -0
- package/dist/cost-evaluation-result.js +20 -0
- package/dist/cost-evaluation-result.js.map +1 -0
- package/dist/cost-evaluator.d.ts +6 -0
- package/dist/cost-evaluator.d.ts.map +1 -0
- package/dist/cost-evaluator.js +398 -0
- package/dist/cost-evaluator.js.map +1 -0
- package/dist/cost-extractor.d.ts +4 -8
- package/dist/cost-extractor.d.ts.map +1 -1
- package/dist/cost-extractor.js +346 -334
- package/dist/cost-extractor.js.map +1 -1
- package/dist/cost-overlay.d.ts +72 -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-quantities.d.ts +5 -0
- package/dist/cost-quantities.d.ts.map +1 -0
- package/dist/cost-quantities.js +116 -0
- package/dist/cost-quantities.js.map +1 -0
- package/dist/cost-quantity-evaluator.d.ts +23 -0
- package/dist/cost-quantity-evaluator.d.ts.map +1 -0
- package/dist/cost-quantity-evaluator.js +153 -0
- package/dist/cost-quantity-evaluator.js.map +1 -0
- package/dist/cost-reader.d.ts +59 -0
- package/dist/cost-reader.d.ts.map +1 -0
- package/dist/cost-reader.js +210 -0
- package/dist/cost-reader.js.map +1 -0
- package/dist/cost-relationships.d.ts +7 -0
- package/dist/cost-relationships.d.ts.map +1 -0
- package/dist/cost-relationships.js +237 -0
- package/dist/cost-relationships.js.map +1 -0
- package/dist/cost-step-lexemes.d.ts +16 -0
- package/dist/cost-step-lexemes.d.ts.map +1 -0
- package/dist/cost-step-lexemes.js +131 -0
- package/dist/cost-step-lexemes.js.map +1 -0
- package/dist/cost-types.d.ts +218 -76
- package/dist/cost-types.d.ts.map +1 -1
- package/dist/cost-units.d.ts +38 -0
- package/dist/cost-units.d.ts.map +1 -0
- package/dist/cost-units.js +348 -0
- package/dist/cost-units.js.map +1 -0
- package/dist/cost-value-evaluation-session.d.ts +19 -0
- package/dist/cost-value-evaluation-session.d.ts.map +1 -0
- package/dist/cost-value-evaluation-session.js +25 -0
- package/dist/cost-value-evaluation-session.js.map +1 -0
- package/dist/cost.d.ts +5 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +6 -0
- package/dist/cost.js.map +1 -0
- package/dist/entity-extractor.d.ts.map +1 -1
- package/dist/entity-extractor.js +5 -2
- package/dist/entity-extractor.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +3 -4
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +9 -6
- 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/step-entity-parameters.d.ts +9 -0
- package/dist/step-entity-parameters.d.ts.map +1 -0
- package/dist/step-entity-parameters.js +30 -0
- package/dist/step-entity-parameters.js.map +1 -0
- 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 +6 -5
- package/dist/cost-schedule-2x3.d.ts +0 -31
- package/dist/cost-schedule-2x3.d.ts.map +0 -1
- package/dist/cost-schedule-2x3.js +0 -75
- package/dist/cost-schedule-2x3.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-extractor.js","sourceRoot":"","sources":["../src/cost-extractor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cost-extractor.js","sourceRoot":"","sources":["../src/cost-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pending-mutation overlay the cost read model reads THROUGH (#4857).
|
|
3
|
+
*
|
|
4
|
+
* `extractCostOnDemand` reads a loaded model's cost graph straight out of the
|
|
5
|
+
* source bytes. A loaded model, though, also carries an edit overlay — the
|
|
6
|
+
* viewer's `MutablePropertyView` — that the STEP exporter applies on the way
|
|
7
|
+
* out. Without this module the two disagree: rename an `IfcCostItem` in a
|
|
8
|
+
* loaded model and `bim.cost.data()` still reports the on-disk name while
|
|
9
|
+
* `bim.export.ifc()` writes the new one.
|
|
10
|
+
*
|
|
11
|
+
* WHERE THIS IS APPLIED, AND WHY THERE
|
|
12
|
+
*
|
|
13
|
+
* At `CostEntityReader` — the single funnel every cost extractor reads an
|
|
14
|
+
* entity through (`ids`, `get`, `typeOf`, `attributeLexeme`) — and nowhere
|
|
15
|
+
* else. Projecting the overlay onto the finished `CostGraphExtraction`
|
|
16
|
+
* instead would mean re-deriving nesting parents, child lists, controlling
|
|
17
|
+
* schedules, compatibility value trees, unit resolution and every diagnostic
|
|
18
|
+
* a second time, from a second implementation. Applied at the reader, the
|
|
19
|
+
* whole of that derivation recomputes itself from one path, and an overlaid
|
|
20
|
+
* model reads EXACTLY as a file that literally stated those values would.
|
|
21
|
+
*
|
|
22
|
+
* The consequence is deliberate and is the safe-delete answer: a cost value
|
|
23
|
+
* deleted while an `IfcCostItem` still lists it in `CostValues` reads back as
|
|
24
|
+
* a `MISSING_REFERENCE` **error** diagnostic against that item — the same
|
|
25
|
+
* answer the reader already gives for a file with a genuinely dangling
|
|
26
|
+
* reference.
|
|
27
|
+
*
|
|
28
|
+
* WHY THE OVERLAY HANDS OVER RECORD TEXT, NOT EDITS
|
|
29
|
+
*
|
|
30
|
+
* What an edit becomes in the file is the exporter's decision: an enum slot
|
|
31
|
+
* is written `.ADD.`, a string slot `'ADD'`, a REAL slot refuses a non-number,
|
|
32
|
+
* a positional value is SELECT-qualified, a retype re-lays-out the argument
|
|
33
|
+
* list, and a slot past the end of a truncated record is skipped. A parser-
|
|
34
|
+
* side copy of those rules is a second implementation that drifts — the first
|
|
35
|
+
* version of this overlay quoted every value, so an `ArithmeticOperator` edit
|
|
36
|
+
* read as absent while export wrote `.ADD.`. So the overlay returns the record
|
|
37
|
+
* as `@ifc-lite/export`'s `effectiveSourceRecord` writes it, and the reader
|
|
38
|
+
* parses that text exactly as it parses the file.
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* A loaded model's pending edits, as the cost read model observes them. The
|
|
42
|
+
* SDK builds one from a `MutablePropertyView` over `@ifc-lite/export`'s
|
|
43
|
+
* `effectiveSourceRecord`; every member is required, so an overlay cannot
|
|
44
|
+
* quietly omit an edit kind.
|
|
45
|
+
*/
|
|
46
|
+
export interface CostMutationOverlay {
|
|
47
|
+
/** True when `expressId` is tombstoned — deleted, pending export. */
|
|
48
|
+
isDeleted(expressId: number): boolean;
|
|
49
|
+
/** Pending class of every retyped entity, keyed by expressId (any casing). */
|
|
50
|
+
retypes(): ReadonlyMap<number, string>;
|
|
51
|
+
/**
|
|
52
|
+
* The record `expressId` as the exporter will write it, given its source
|
|
53
|
+
* text and class. `notWritten` lists pending edits the exporter declines to
|
|
54
|
+
* place (it keeps the source slot and warns); the reader reports each as a
|
|
55
|
+
* diagnostic instead of passing the source value off as current.
|
|
56
|
+
*/
|
|
57
|
+
effectiveRecord(expressId: number, sourceText: string, sourceType: string): {
|
|
58
|
+
text: string;
|
|
59
|
+
notWritten: readonly string[];
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Options for `extractCostOnDemand`. */
|
|
63
|
+
export interface CostExtractionOptions {
|
|
64
|
+
/**
|
|
65
|
+
* The loaded model's pending edits (#4857). When supplied, every entity the
|
|
66
|
+
* extraction reads is read THROUGH the overlay, so the graph returned
|
|
67
|
+
* describes the model as the exporter would write it — not as the file on
|
|
68
|
+
* disk states it. Omit it for the on-disk graph.
|
|
69
|
+
*/
|
|
70
|
+
overlay?: CostMutationOverlay;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=cost-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-overlay.d.ts","sourceRoot":"","sources":["../src/cost-overlay.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,8EAA8E;IAC9E,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;QAC1E,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;KAC/B,CAAC;CACH;AAED,yCAAyC;AACzC,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-overlay.js","sourceRoot":"","sources":["../src/cost-overlay.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CostEntityReader } from './cost-reader.js';
|
|
2
|
+
import type { CostDiagnostic, CostQuantityInfo } from './cost-types.js';
|
|
3
|
+
export declare function costQuantityExactValue(quantity: CostQuantityInfo): string | undefined;
|
|
4
|
+
export declare function extractCostQuantities(reader: CostEntityReader, roots: number[], quantities: Map<number, CostQuantityInfo>, diagnostics: CostDiagnostic[]): void;
|
|
5
|
+
//# sourceMappingURL=cost-quantities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-quantities.d.ts","sourceRoot":"","sources":["../src/cost-quantities.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAyB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAuC/F,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAGrF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACzC,WAAW,EAAE,cAAc,EAAE,GAC5B,IAAI,CAoEN"}
|
|
@@ -0,0 +1,116 @@
|
|
|
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 { asString } from './cost-reader.js';
|
|
5
|
+
import { getInheritanceChain } from './ifc-schema.js';
|
|
6
|
+
function quantityDimension(type) {
|
|
7
|
+
switch (type) {
|
|
8
|
+
case 'IFCQUANTITYLENGTH': return 'length';
|
|
9
|
+
case 'IFCQUANTITYAREA': return 'area';
|
|
10
|
+
case 'IFCQUANTITYVOLUME': return 'volume';
|
|
11
|
+
case 'IFCQUANTITYWEIGHT': return 'mass';
|
|
12
|
+
case 'IFCQUANTITYTIME': return 'time';
|
|
13
|
+
case 'IFCQUANTITYCOUNT': return 'count';
|
|
14
|
+
case 'IFCQUANTITYNUMBER': return 'number';
|
|
15
|
+
default: return undefined;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function quantityMeasureType(type) {
|
|
19
|
+
switch (type) {
|
|
20
|
+
case 'IFCQUANTITYLENGTH': return 'IFCLENGTHMEASURE';
|
|
21
|
+
case 'IFCQUANTITYAREA': return 'IFCAREAMEASURE';
|
|
22
|
+
case 'IFCQUANTITYVOLUME': return 'IFCVOLUMEMEASURE';
|
|
23
|
+
case 'IFCQUANTITYWEIGHT': return 'IFCMASSMEASURE';
|
|
24
|
+
case 'IFCQUANTITYTIME': return 'IFCTIMEMEASURE';
|
|
25
|
+
case 'IFCQUANTITYCOUNT': return 'IFCCOUNTMEASURE';
|
|
26
|
+
case 'IFCQUANTITYNUMBER': return 'IFCNUMERICMEASURE';
|
|
27
|
+
default: return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function pascalType(type) {
|
|
31
|
+
const known = {
|
|
32
|
+
IFCQUANTITYLENGTH: 'IfcQuantityLength', IFCQUANTITYAREA: 'IfcQuantityArea',
|
|
33
|
+
IFCQUANTITYVOLUME: 'IfcQuantityVolume', IFCQUANTITYWEIGHT: 'IfcQuantityWeight',
|
|
34
|
+
IFCQUANTITYTIME: 'IfcQuantityTime', IFCQUANTITYCOUNT: 'IfcQuantityCount',
|
|
35
|
+
IFCQUANTITYNUMBER: 'IfcQuantityNumber',
|
|
36
|
+
IFCPHYSICALCOMPLEXQUANTITY: 'IfcPhysicalComplexQuantity',
|
|
37
|
+
};
|
|
38
|
+
return known[type] ?? type;
|
|
39
|
+
}
|
|
40
|
+
export function costQuantityExactValue(quantity) {
|
|
41
|
+
return quantity.LengthValue ?? quantity.AreaValue ?? quantity.VolumeValue ?? quantity.CountValue ??
|
|
42
|
+
quantity.WeightValue ?? quantity.TimeValue ?? quantity.NumberValue;
|
|
43
|
+
}
|
|
44
|
+
export function extractCostQuantities(reader, roots, quantities, diagnostics) {
|
|
45
|
+
const state = new Map();
|
|
46
|
+
const stack = roots.map(id => ({ id, exit: false })).reverse();
|
|
47
|
+
while (stack.length > 0) {
|
|
48
|
+
const frame = stack.pop();
|
|
49
|
+
if (frame.exit) {
|
|
50
|
+
state.set(frame.id, 2);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (state.get(frame.id) === 1) {
|
|
54
|
+
diagnostics.push({ Code: 'QUANTITY_CYCLE', Message: `Cost quantity cycle includes #${frame.id}`,
|
|
55
|
+
Severity: 'error', expressId: frame.id });
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (state.get(frame.id) === 2 || quantities.has(frame.id))
|
|
59
|
+
continue;
|
|
60
|
+
const entity = reader.get(frame.id);
|
|
61
|
+
if (!entity) {
|
|
62
|
+
diagnostics.push({ Code: 'MISSING_REFERENCE', Message: `Cost quantity #${frame.id} cannot be resolved`,
|
|
63
|
+
Severity: 'error', expressId: frame.id });
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const type = entity.type.toUpperCase();
|
|
67
|
+
if (!getInheritanceChain(type).some(entry => entry.toUpperCase() === 'IFCPHYSICALQUANTITY')) {
|
|
68
|
+
diagnostics.push({ Code: 'INVALID_LIST',
|
|
69
|
+
Message: `Cost quantity reference #${frame.id} does not resolve to IfcPhysicalQuantity`,
|
|
70
|
+
Severity: 'error', expressId: frame.id });
|
|
71
|
+
state.set(frame.id, 2);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const attributes = entity.attributes ?? [];
|
|
75
|
+
const isComplex = type === 'IFCPHYSICALCOMPLEXQUANTITY';
|
|
76
|
+
const children = isComplex ? reader.referenceListLexeme(frame.id, 2) : undefined;
|
|
77
|
+
const invalidChildren = isComplex && (!Array.isArray(attributes[2]) ||
|
|
78
|
+
children === undefined || children.length !== attributes[2].length);
|
|
79
|
+
const valueType = isComplex ? undefined : reader.decimalTypeLexeme(frame.id, 3);
|
|
80
|
+
const invalidValueType = valueType !== undefined && valueType !== quantityMeasureType(type);
|
|
81
|
+
const value = isComplex || invalidValueType ? undefined : reader.decimalLexeme(frame.id, 3);
|
|
82
|
+
if (!isComplex && value === undefined && reader.attributePresent(frame.id, 3)) {
|
|
83
|
+
diagnostics.push({ Code: invalidValueType ? 'INCOMPATIBLE_UNIT' : 'INVALID_NUMBER',
|
|
84
|
+
Message: invalidValueType
|
|
85
|
+
? `Cost quantity #${frame.id} uses ${valueType} where ${quantityMeasureType(type)} is required`
|
|
86
|
+
: `Cost quantity #${frame.id} has a malformed value`,
|
|
87
|
+
Severity: 'error', expressId: frame.id });
|
|
88
|
+
}
|
|
89
|
+
const Unit = isComplex ? undefined : reader.referenceLexeme(frame.id, 2);
|
|
90
|
+
const InvalidUnit = !isComplex && reader.attributePresent(frame.id, 2) && Unit === undefined;
|
|
91
|
+
if (InvalidUnit)
|
|
92
|
+
diagnostics.push({ Code: 'UNSUPPORTED_UNIT',
|
|
93
|
+
Message: `Unit on cost quantity #${frame.id} is not an entity reference`, Severity: 'error', expressId: frame.id });
|
|
94
|
+
const valueAttribute = {
|
|
95
|
+
IFCQUANTITYLENGTH: 'LengthValue', IFCQUANTITYAREA: 'AreaValue',
|
|
96
|
+
IFCQUANTITYVOLUME: 'VolumeValue', IFCQUANTITYCOUNT: 'CountValue',
|
|
97
|
+
IFCQUANTITYWEIGHT: 'WeightValue', IFCQUANTITYTIME: 'TimeValue',
|
|
98
|
+
IFCQUANTITYNUMBER: 'NumberValue',
|
|
99
|
+
};
|
|
100
|
+
const exactValue = value === undefined || valueAttribute[type] === undefined
|
|
101
|
+
? {} : { [valueAttribute[type]]: value };
|
|
102
|
+
quantities.set(frame.id, {
|
|
103
|
+
expressId: frame.id, Type: pascalType(type),
|
|
104
|
+
Name: asString(attributes[0]), Description: asString(attributes[1]),
|
|
105
|
+
Unit, InvalidUnit: InvalidUnit || undefined, ...exactValue,
|
|
106
|
+
Formula: isComplex ? undefined : asString(attributes[4]),
|
|
107
|
+
Dimension: quantityDimension(type), HasQuantities: isComplex ? children ?? [] : undefined,
|
|
108
|
+
InvalidHasQuantities: invalidChildren || undefined,
|
|
109
|
+
});
|
|
110
|
+
state.set(frame.id, 1);
|
|
111
|
+
stack.push({ id: frame.id, exit: true });
|
|
112
|
+
for (const child of [...(children ?? [])].reverse())
|
|
113
|
+
stack.push({ id: child, exit: false });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=cost-quantities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-quantities.js","sourceRoot":"","sources":["../src/cost-quantities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Decimal } from 'decimal.js';
|
|
2
|
+
import type { CostDiagnostic, CostGraphExtraction, CostItemInfo, CostQuantityDimension, CostQuantityInfo, CostUnitInfo } from './cost-types.js';
|
|
3
|
+
export interface QuantityValue {
|
|
4
|
+
amount: Decimal;
|
|
5
|
+
dimension: CostQuantityDimension;
|
|
6
|
+
}
|
|
7
|
+
interface QuantityContext {
|
|
8
|
+
DecimalValue: Decimal.Constructor;
|
|
9
|
+
extraction: CostGraphExtraction;
|
|
10
|
+
quantities: Map<number, CostQuantityInfo>;
|
|
11
|
+
units: Map<number, CostUnitInfo>;
|
|
12
|
+
diagnostics: CostDiagnostic[];
|
|
13
|
+
}
|
|
14
|
+
export interface QuantityEvaluationCache {
|
|
15
|
+
memo: Map<number, QuantityValue[]>;
|
|
16
|
+
work: number;
|
|
17
|
+
exhausted: boolean;
|
|
18
|
+
reported: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function quantityEvaluationCache(): QuantityEvaluationCache;
|
|
21
|
+
export declare function itemQuantities(item: CostItemInfo, context: QuantityContext, cache?: QuantityEvaluationCache): QuantityValue[] | undefined;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=cost-quantity-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-quantity-evaluator.d.ts","sourceRoot":"","sources":["../src/cost-quantity-evaluator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,KAAK,EACV,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EACxE,gBAAgB,EAAE,YAAY,EAC/B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,qBAAqB,CAAC;CAClC;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC;IAClC,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,uBAAuB,IAAI,uBAAuB,CAEjE;AAiCD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,eAAe,EACxB,KAAK,GAAE,uBAAmD,GACzD,aAAa,EAAE,GAAG,SAAS,CA2G7B"}
|
|
@@ -0,0 +1,153 @@
|
|
|
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 { isZeroCostNumericLexeme } from './cost-step-lexemes.js';
|
|
5
|
+
export function quantityEvaluationCache() {
|
|
6
|
+
return { memo: new Map(), work: 0, exhausted: false, reported: false };
|
|
7
|
+
}
|
|
8
|
+
function diagnostic(context, Code, Message, expressId) {
|
|
9
|
+
context.diagnostics.push({ Code, Message, Severity: 'error', expressId });
|
|
10
|
+
}
|
|
11
|
+
function decimal(value, expressId, context) {
|
|
12
|
+
try {
|
|
13
|
+
const parsed = new context.DecimalValue(value);
|
|
14
|
+
if (parsed.isFinite() && !(parsed.isZero() && !isZeroCostNumericLexeme(value)))
|
|
15
|
+
return parsed;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
diagnostic(context, 'INVALID_NUMBER', `#${expressId} contains an invalid decimal: ${String(error)}`, expressId);
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
diagnostic(context, 'INVALID_NUMBER', `#${expressId} contains a non-finite or underflowed decimal`, expressId);
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
function quantityUnit(quantity, context) {
|
|
25
|
+
if (quantity.Unit !== undefined)
|
|
26
|
+
return context.units.get(quantity.Unit);
|
|
27
|
+
if (quantity.Dimension === 'count' || quantity.Dimension === 'number') {
|
|
28
|
+
return { expressId: 0, Type: 'Dimensionless', Dimension: quantity.Dimension, Scale: '1' };
|
|
29
|
+
}
|
|
30
|
+
const id = quantity.Dimension ? context.extraction.ProjectUnits[quantity.Dimension] : undefined;
|
|
31
|
+
return id === undefined ? undefined : context.units.get(id);
|
|
32
|
+
}
|
|
33
|
+
function quantityValue(quantity) {
|
|
34
|
+
return quantity.LengthValue ?? quantity.AreaValue ?? quantity.VolumeValue ?? quantity.CountValue ??
|
|
35
|
+
quantity.WeightValue ?? quantity.TimeValue ?? quantity.NumberValue;
|
|
36
|
+
}
|
|
37
|
+
export function itemQuantities(item, context, cache = quantityEvaluationCache()) {
|
|
38
|
+
if (item.CostQuantities === undefined)
|
|
39
|
+
return [];
|
|
40
|
+
if (item.CostQuantities.length === 0) {
|
|
41
|
+
diagnostic(context, 'INVALID_LIST', `CostQuantities on #${item.expressId} must not be empty`, item.expressId);
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const memo = cache.memo;
|
|
45
|
+
const state = new Map();
|
|
46
|
+
let work = 0;
|
|
47
|
+
const consume = (amount = 1) => {
|
|
48
|
+
work += amount;
|
|
49
|
+
cache.work += amount;
|
|
50
|
+
if (work > 100_000 || cache.work > 1_000_000)
|
|
51
|
+
cache.exhausted = true;
|
|
52
|
+
if (!cache.exhausted)
|
|
53
|
+
return true;
|
|
54
|
+
if (!cache.reported) {
|
|
55
|
+
diagnostic(context, 'INVALID_LIST', `Cost quantity graph on #${item.expressId} exceeds the evaluation budget`, item.expressId);
|
|
56
|
+
cache.reported = true;
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
};
|
|
60
|
+
for (const root of item.CostQuantities) {
|
|
61
|
+
const stack = [{ id: root, exit: false }];
|
|
62
|
+
while (stack.length > 0) {
|
|
63
|
+
if (!consume())
|
|
64
|
+
return undefined;
|
|
65
|
+
const frame = stack.pop();
|
|
66
|
+
const id = frame.id;
|
|
67
|
+
if (frame.exit) {
|
|
68
|
+
state.set(id, 2);
|
|
69
|
+
const quantity = context.quantities.get(id);
|
|
70
|
+
if (quantity?.HasQuantities !== undefined) {
|
|
71
|
+
if (!consume(quantity.HasQuantities.length))
|
|
72
|
+
return undefined;
|
|
73
|
+
const totals = new Map();
|
|
74
|
+
for (const child of quantity.HasQuantities) {
|
|
75
|
+
const childValues = memo.get(child);
|
|
76
|
+
if (!childValues)
|
|
77
|
+
return undefined;
|
|
78
|
+
for (const entry of childValues) {
|
|
79
|
+
totals.set(entry.dimension, (totals.get(entry.dimension) ?? new context.DecimalValue(0)).plus(entry.amount));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
memo.set(id, [...totals].map(([dimension, amount]) => ({ dimension, amount })));
|
|
83
|
+
}
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (memo.has(id))
|
|
87
|
+
continue;
|
|
88
|
+
const quantity = context.quantities.get(id);
|
|
89
|
+
if (!quantity) {
|
|
90
|
+
diagnostic(context, 'MISSING_REFERENCE', `Cost quantity #${id} cannot be resolved`, item.expressId);
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
if (quantity.HasQuantities !== undefined) {
|
|
94
|
+
if (quantity.InvalidHasQuantities) {
|
|
95
|
+
diagnostic(context, 'INVALID_LIST', `Complex cost quantity #${id} has malformed children`, id);
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
if (quantity.HasQuantities.length === 0) {
|
|
99
|
+
diagnostic(context, 'INVALID_LIST', `Complex cost quantity #${id} has no children`, id);
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
if (state.get(id) === 1) {
|
|
103
|
+
diagnostic(context, 'QUANTITY_CYCLE', `Cost quantity cycle includes #${id}`, id);
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
state.set(id, 1);
|
|
107
|
+
stack.push({ id, exit: true });
|
|
108
|
+
for (const child of [...new Set(quantity.HasQuantities)].reverse()) {
|
|
109
|
+
if (!memo.has(child))
|
|
110
|
+
stack.push({ id: child, exit: false });
|
|
111
|
+
}
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const value = quantityValue(quantity);
|
|
115
|
+
if (!quantity.Dimension || value === undefined) {
|
|
116
|
+
diagnostic(context, 'MISSING_VALUE', `Cost quantity #${id} has no evaluable value`, id);
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const amount = decimal(value, id, context);
|
|
120
|
+
if (quantity.InvalidUnit) {
|
|
121
|
+
diagnostic(context, 'UNSUPPORTED_UNIT', `Cost quantity #${id} has a malformed Unit`, id);
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
const unit = quantityUnit(quantity, context);
|
|
125
|
+
const wrongDimension = unit?.Dimension !== undefined && unit.Dimension !== quantity.Dimension;
|
|
126
|
+
if (!amount || amount.isNegative() || !unit?.Scale || wrongDimension) {
|
|
127
|
+
if (amount?.isNegative())
|
|
128
|
+
diagnostic(context, 'INVALID_NUMBER', `Cost quantity #${id} is negative`, id);
|
|
129
|
+
else if (amount && wrongDimension) {
|
|
130
|
+
diagnostic(context, 'INCOMPATIBLE_UNIT', `Cost quantity #${id} uses a ${unit?.Dimension} unit for ${quantity.Dimension}`, id);
|
|
131
|
+
}
|
|
132
|
+
else if (amount && !unit?.Scale) {
|
|
133
|
+
diagnostic(context, 'UNSUPPORTED_UNIT', `Cost quantity #${id} has no resolvable unit`, id);
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
const normalized = amount.mul(unit.Scale);
|
|
138
|
+
if (!normalized.isFinite() || (normalized.isZero() && !amount.isZero())) {
|
|
139
|
+
diagnostic(context, 'INVALID_NUMBER', `Cost quantity #${id} has a non-finite normalized value`, id);
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
memo.set(id, [{ amount: normalized, dimension: quantity.Dimension }]);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const totals = new Map();
|
|
146
|
+
for (const root of item.CostQuantities) {
|
|
147
|
+
for (const entry of memo.get(root) ?? []) {
|
|
148
|
+
totals.set(entry.dimension, (totals.get(entry.dimension) ?? new context.DecimalValue(0)).plus(entry.amount));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return [...totals].map(([dimension, amount]) => ({ dimension, amount }));
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=cost-quantity-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-quantity-evaluator.js","sourceRoot":"","sources":["../src/cost-quantity-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { IfcEntity } from '@ifc-lite/data';
|
|
2
|
+
import type { IfcDataStore } from './columnar-parser.js';
|
|
3
|
+
import type { CostMutationOverlay } from './cost-overlay.js';
|
|
4
|
+
import type { CostDiagnostic } from './cost-types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Memoized source reader used once per cost extraction.
|
|
7
|
+
*
|
|
8
|
+
* When an {@link CostMutationOverlay} is supplied, every read goes through it
|
|
9
|
+
* first: a tombstoned entity does not exist (no id, no type, no record), a
|
|
10
|
+
* retyped entity is listed under and reports its pending class, and a record
|
|
11
|
+
* any pending edit reaches is read from the text the exporter will write for
|
|
12
|
+
* it. This is the one place the overlay is applied — see `cost-overlay.ts`
|
|
13
|
+
* for why it is here and not on the finished graph. The caches below are
|
|
14
|
+
* per-reader and a reader is built per extraction, so an overlaid read never
|
|
15
|
+
* reuses an unoverlaid entry.
|
|
16
|
+
*/
|
|
17
|
+
export declare class CostEntityReader {
|
|
18
|
+
private readonly store;
|
|
19
|
+
private readonly overlay?;
|
|
20
|
+
private readonly diagnostics?;
|
|
21
|
+
private readonly extractor;
|
|
22
|
+
private readonly source;
|
|
23
|
+
private readonly cache;
|
|
24
|
+
private readonly lexemeCache;
|
|
25
|
+
private readonly recordCache;
|
|
26
|
+
private retyped;
|
|
27
|
+
constructor(store: IfcDataStore, overlay?: CostMutationOverlay | undefined, diagnostics?: CostDiagnostic[] | undefined);
|
|
28
|
+
/** True when a pending edit has deleted `expressId` from the loaded model. */
|
|
29
|
+
private isDeleted;
|
|
30
|
+
/** Pending retypes, UPPERCASE, restricted to entities the source actually has. */
|
|
31
|
+
private retypes;
|
|
32
|
+
/**
|
|
33
|
+
* The record text an overlaid read sees, or `undefined` when the record
|
|
34
|
+
* reads exactly as the source states it (no overlay, or no edit reaches it)
|
|
35
|
+
* and the unoverlaid source path applies. `null` means no record at all.
|
|
36
|
+
*/
|
|
37
|
+
private overlaidRecord;
|
|
38
|
+
ids(type: string): readonly number[];
|
|
39
|
+
get schemaVersion(): IfcDataStore['schemaVersion'];
|
|
40
|
+
get(expressId: number): IfcEntity | null;
|
|
41
|
+
typeOf(expressId: number): string | undefined;
|
|
42
|
+
attributeLexeme(expressId: number, index: number): string | undefined;
|
|
43
|
+
decimalLexeme(expressId: number, index: number): string | undefined;
|
|
44
|
+
decimalTypeLexeme(expressId: number, index: number): string | undefined;
|
|
45
|
+
referenceLexeme(expressId: number, index: number): number | undefined;
|
|
46
|
+
referenceListLexeme(expressId: number, index: number): number[] | undefined;
|
|
47
|
+
attributePresent(expressId: number, index: number): boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read a STEP string attribute (IfcLabel/IfcText/IfcIdentifier) as-is,
|
|
51
|
+
* keeping an explicit `''` distinct from an absent (`$`) attribute — both
|
|
52
|
+
* are legal `IfcLabel` values per the schema, and IfcOpenShell keeps them
|
|
53
|
+
* distinct too (see #4881). Only `undefined` means "not a string at all".
|
|
54
|
+
*/
|
|
55
|
+
export declare function asString(value: unknown): string | undefined;
|
|
56
|
+
export declare function asEnum(value: unknown): string | undefined;
|
|
57
|
+
export declare function asRef(value: unknown): number | undefined;
|
|
58
|
+
export declare function asRefList(value: unknown): number[] | undefined;
|
|
59
|
+
//# sourceMappingURL=cost-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-reader.d.ts","sourceRoot":"","sources":["../src/cost-reader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA2BtD;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB;IASzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAV/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,OAAO,CAA0C;gBAGtC,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,mBAAmB,YAAA,EAC7B,WAAW,CAAC,EAAE,cAAc,EAAE,YAAA;IAMjD,8EAA8E;IAC9E,OAAO,CAAC,SAAS;IAIjB,kFAAkF;IAClF,OAAO,CAAC,OAAO;IAWf;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAqBtB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAWpC,IAAI,aAAa,IAAI,YAAY,CAAC,eAAe,CAAC,CAEjD;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAoBxC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO7C,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYrE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAI3E,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAG5D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIzD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIxD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAQ9D"}
|