@ifc-lite/parser 7.0.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/columnar-parser-attributes.d.ts +1 -1
- package/dist/columnar-parser-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-attributes.js +36 -1
- package/dist/columnar-parser-attributes.js.map +1 -1
- package/dist/columnar-parser-indexes.d.ts.map +1 -1
- package/dist/columnar-parser-indexes.js +24 -1
- package/dist/columnar-parser-indexes.js.map +1 -1
- package/dist/columnar-parser-relationships.d.ts +2 -1
- package/dist/columnar-parser-relationships.d.ts.map +1 -1
- package/dist/columnar-parser-relationships.js +2 -2
- package/dist/columnar-parser-relationships.js.map +1 -1
- package/dist/columnar-parser-root-attributes.d.ts +2 -5
- package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-root-attributes.js +22 -2
- package/dist/columnar-parser-root-attributes.js.map +1 -1
- package/dist/columnar-parser.d.ts +5 -1
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +19 -56
- package/dist/columnar-parser.js.map +1 -1
- package/dist/cost-evaluator.d.ts.map +1 -1
- package/dist/cost-evaluator.js +6 -4
- package/dist/cost-evaluator.js.map +1 -1
- package/dist/cost-extractor.d.ts +2 -1
- package/dist/cost-extractor.d.ts.map +1 -1
- package/dist/cost-extractor.js +22 -5
- package/dist/cost-extractor.js.map +1 -1
- package/dist/cost-overlay.d.ts +104 -0
- package/dist/cost-overlay.d.ts.map +1 -0
- package/dist/cost-overlay.js +5 -0
- package/dist/cost-overlay.js.map +1 -0
- package/dist/cost-reader.d.ts +45 -2
- package/dist/cost-reader.d.ts.map +1 -1
- package/dist/cost-reader.js +168 -11
- package/dist/cost-reader.js.map +1 -1
- package/dist/cost-types.d.ts +9 -1
- package/dist/cost-types.d.ts.map +1 -1
- package/dist/cost.d.ts +1 -0
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js.map +1 -1
- package/dist/effective-entity-record.d.ts +35 -0
- package/dist/effective-entity-record.d.ts.map +1 -0
- package/dist/effective-entity-record.js +43 -0
- package/dist/effective-entity-record.js.map +1 -0
- package/dist/effective-relationship-overlay.d.ts +31 -0
- package/dist/effective-relationship-overlay.d.ts.map +1 -0
- package/dist/effective-relationship-overlay.js +111 -0
- package/dist/effective-relationship-overlay.js.map +1 -0
- package/dist/exact-relationship-edges.d.ts +46 -0
- package/dist/exact-relationship-edges.d.ts.map +1 -0
- package/dist/exact-relationship-edges.js +88 -0
- package/dist/exact-relationship-edges.js.map +1 -0
- package/dist/identity-hints.d.ts +32 -0
- package/dist/identity-hints.d.ts.map +1 -0
- package/dist/identity-hints.js +130 -0
- package/dist/identity-hints.js.map +1 -0
- package/dist/ifc-schema.d.ts +2 -0
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +13 -0
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/on-demand-extractors.d.ts +6 -31
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +18 -11
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/project-units.d.ts.map +1 -1
- package/dist/project-units.js +8 -2
- package/dist/project-units.js.map +1 -1
- package/dist/property-unit.d.ts +24 -0
- package/dist/property-unit.d.ts.map +1 -0
- package/dist/property-unit.js +29 -0
- package/dist/property-unit.js.map +1 -0
- package/dist/query-backend-maps.d.ts +5 -8
- package/dist/query-backend-maps.d.ts.map +1 -1
- package/dist/query-backend-maps.js +8 -15
- package/dist/query-backend-maps.js.map +1 -1
- package/dist/relationship-schema-slots.d.ts +8 -8
- package/dist/relationship-schema-slots.d.ts.map +1 -1
- package/dist/relationship-schema-slots.js +31 -18
- package/dist/relationship-schema-slots.js.map +1 -1
- package/dist/worker-parser.d.ts +29 -1
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +80 -7
- package/dist/worker-parser.js.map +1 -1
- package/package.json +7 -7
package/dist/cost-reader.js
CHANGED
|
@@ -32,20 +32,132 @@ class CostSourceCache {
|
|
|
32
32
|
}
|
|
33
33
|
toTransferable() { return this.source.toTransferable(); }
|
|
34
34
|
}
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Memoized source reader used once per cost extraction.
|
|
37
|
+
*
|
|
38
|
+
* When an {@link CostMutationOverlay} is supplied, every read goes through it
|
|
39
|
+
* first: a tombstoned entity does not exist (no id, no type, no record), a
|
|
40
|
+
* retyped entity is listed under and reports its pending class, and a record
|
|
41
|
+
* any pending edit reaches is read from the text the exporter will write for
|
|
42
|
+
* it. This is the one place the overlay is applied — see `cost-overlay.ts`
|
|
43
|
+
* for why it is here and not on the finished graph. The caches below are
|
|
44
|
+
* per-reader and a reader is built per extraction, so an overlaid read never
|
|
45
|
+
* reuses an unoverlaid entry.
|
|
46
|
+
*/
|
|
36
47
|
export class CostEntityReader {
|
|
37
48
|
store;
|
|
49
|
+
overlay;
|
|
50
|
+
diagnostics;
|
|
38
51
|
extractor;
|
|
39
52
|
source;
|
|
40
53
|
cache = new Map();
|
|
41
54
|
lexemeCache = new Map();
|
|
42
|
-
|
|
55
|
+
recordCache = new Map();
|
|
56
|
+
retyped;
|
|
57
|
+
created;
|
|
58
|
+
constructor(store, overlay, diagnostics) {
|
|
43
59
|
this.store = store;
|
|
60
|
+
this.overlay = overlay;
|
|
61
|
+
this.diagnostics = diagnostics;
|
|
44
62
|
this.source = new CostSourceCache(asSourceBytes(store.source));
|
|
45
63
|
this.extractor = new EntityExtractor(this.source);
|
|
46
64
|
}
|
|
65
|
+
/** GlobalId from the effective overlay record, then the immutable source table. */
|
|
66
|
+
globalId(expressId) {
|
|
67
|
+
return asString(this.get(expressId)?.attributes?.[0])
|
|
68
|
+
?? this.store.entities?.getGlobalId?.(expressId) ?? '';
|
|
69
|
+
}
|
|
70
|
+
/** True when a pending edit has deleted `expressId` from the loaded model. */
|
|
71
|
+
isDeleted(expressId) {
|
|
72
|
+
return this.overlay?.isDeleted(expressId) === true;
|
|
73
|
+
}
|
|
74
|
+
/** Pending retypes, UPPERCASE, restricted to entities the source actually has. */
|
|
75
|
+
retypes() {
|
|
76
|
+
if (!this.retyped) {
|
|
77
|
+
const retyped = new Map();
|
|
78
|
+
for (const [id, type] of this.overlay?.retypes() ?? []) {
|
|
79
|
+
if (getEntityRefFromStore(this.store, id))
|
|
80
|
+
retyped.set(id, type.toUpperCase());
|
|
81
|
+
}
|
|
82
|
+
this.retyped = retyped;
|
|
83
|
+
}
|
|
84
|
+
return this.retyped;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Overlay-CREATED entities (#4857 PR A), keyed by expressId, UPPERCASE
|
|
88
|
+
* class. An entry the overlay could not lay out (`error` set instead of
|
|
89
|
+
* `type`/`text`) surfaces as a `PENDING_EDIT_NOT_APPLIED` diagnostic here,
|
|
90
|
+
* once, rather than at every call site that would otherwise re-check it.
|
|
91
|
+
*/
|
|
92
|
+
createdEntities() {
|
|
93
|
+
if (!this.created) {
|
|
94
|
+
const created = new Map();
|
|
95
|
+
// A pre-authoring overlay may omit the optional `created()` capability.
|
|
96
|
+
const entries = this.overlay?.created?.() ?? [];
|
|
97
|
+
for (const entry of entries) {
|
|
98
|
+
if (entry.error !== undefined) {
|
|
99
|
+
this.diagnostics?.push({
|
|
100
|
+
Code: 'PENDING_EDIT_NOT_APPLIED', Severity: 'warning', expressId: entry.expressId,
|
|
101
|
+
Message: `Newly authored entity #${entry.expressId} is not readable here: ${entry.error}`,
|
|
102
|
+
});
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (entry.type !== undefined && entry.text !== undefined) {
|
|
106
|
+
created.set(entry.expressId, { type: entry.type.toUpperCase(), text: entry.text });
|
|
107
|
+
for (const reason of entry.notWritten ?? []) {
|
|
108
|
+
this.diagnostics?.push({
|
|
109
|
+
Code: 'PENDING_EDIT_NOT_APPLIED', Severity: 'warning', expressId: entry.expressId,
|
|
110
|
+
Message: `A pending edit to newly authored #${entry.expressId} is not written on export and is not reflected here: ${reason}`,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
this.created = created;
|
|
116
|
+
}
|
|
117
|
+
return this.created;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The record text an overlaid read sees, or `undefined` when the record
|
|
121
|
+
* reads exactly as the source states it (no overlay, or no edit reaches it)
|
|
122
|
+
* and the unoverlaid source path applies. `null` means no record at all.
|
|
123
|
+
*/
|
|
124
|
+
overlaidRecord(expressId) {
|
|
125
|
+
if (!this.overlay)
|
|
126
|
+
return undefined;
|
|
127
|
+
if (this.recordCache.has(expressId))
|
|
128
|
+
return this.recordCache.get(expressId);
|
|
129
|
+
const ref = this.isDeleted(expressId) ? null : getEntityRefFromStore(this.store, expressId);
|
|
130
|
+
let text = null;
|
|
131
|
+
if (ref) {
|
|
132
|
+
const sourceText = this.source.decodeUtf8(ref.byteOffset, ref.byteOffset + ref.byteLength);
|
|
133
|
+
const effective = this.overlay.effectiveRecord(expressId, sourceText, ref.type);
|
|
134
|
+
// Unchanged text reads through the shared source extractor and caches.
|
|
135
|
+
text = effective.text === sourceText ? undefined : effective.text;
|
|
136
|
+
for (const reason of effective.notWritten) {
|
|
137
|
+
this.diagnostics?.push({
|
|
138
|
+
Code: 'PENDING_EDIT_NOT_APPLIED', Severity: 'warning', expressId,
|
|
139
|
+
Message: `A pending edit to #${expressId} is not written on export and is not reflected here: ${reason}`,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
this.recordCache.set(expressId, text);
|
|
144
|
+
return text;
|
|
145
|
+
}
|
|
47
146
|
ids(type) {
|
|
48
|
-
|
|
147
|
+
const wanted = type.toUpperCase();
|
|
148
|
+
const ids = this.store.entityIndex.byType.get(wanted) ?? [];
|
|
149
|
+
if (!this.overlay)
|
|
150
|
+
return ids;
|
|
151
|
+
const retyped = this.retypes();
|
|
152
|
+
const kept = ids.filter(id => !this.isDeleted(id) && (retyped.get(id) ?? wanted) === wanted);
|
|
153
|
+
const createdIds = new Set(this.createdEntities().keys());
|
|
154
|
+
const retypedIn = [...retyped].filter(([id, newType]) => newType === wanted && !this.isDeleted(id) && !ids.includes(id) && !createdIds.has(id));
|
|
155
|
+
const createdIn = [...this.createdEntities()]
|
|
156
|
+
.filter(([id, entry]) => entry.type === wanted && !this.isDeleted(id))
|
|
157
|
+
.map(([id]) => id);
|
|
158
|
+
if (retypedIn.length === 0 && createdIn.length === 0)
|
|
159
|
+
return kept;
|
|
160
|
+
return [...kept, ...retypedIn.map(([id]) => id), ...createdIn].sort((a, b) => a - b);
|
|
49
161
|
}
|
|
50
162
|
get schemaVersion() {
|
|
51
163
|
return this.store.schemaVersion;
|
|
@@ -54,21 +166,60 @@ export class CostEntityReader {
|
|
|
54
166
|
const cached = this.cache.get(expressId);
|
|
55
167
|
if (cached !== undefined)
|
|
56
168
|
return cached;
|
|
57
|
-
const
|
|
58
|
-
|
|
169
|
+
const createdEntry = this.isDeleted(expressId) ? undefined : this.createdEntities().get(expressId);
|
|
170
|
+
let entity;
|
|
171
|
+
if (createdEntry) {
|
|
172
|
+
const bytes = new TextEncoder().encode(createdEntry.text);
|
|
173
|
+
entity = new EntityExtractor(bytes).extractEntity({
|
|
174
|
+
expressId, type: createdEntry.type, byteOffset: 0, byteLength: bytes.byteLength, lineNumber: 0,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const record = this.overlaidRecord(expressId);
|
|
179
|
+
if (record === undefined) {
|
|
180
|
+
const ref = getEntityRefFromStore(this.store, expressId);
|
|
181
|
+
entity = ref ? this.extractor.extractEntity(ref) : null;
|
|
182
|
+
}
|
|
183
|
+
else if (record === null) {
|
|
184
|
+
entity = null;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
const bytes = new TextEncoder().encode(record);
|
|
188
|
+
entity = new EntityExtractor(bytes).extractEntity({
|
|
189
|
+
expressId, type: this.typeOf(expressId) ?? '', byteOffset: 0, byteLength: bytes.byteLength, lineNumber: 0,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
59
193
|
this.cache.set(expressId, entity);
|
|
60
194
|
return entity;
|
|
61
195
|
}
|
|
62
196
|
typeOf(expressId) {
|
|
63
|
-
|
|
197
|
+
if (this.isDeleted(expressId))
|
|
198
|
+
return undefined;
|
|
199
|
+
if (this.overlay) {
|
|
200
|
+
const created = this.createdEntities().get(expressId);
|
|
201
|
+
if (created)
|
|
202
|
+
return created.type;
|
|
203
|
+
}
|
|
204
|
+
const type = getEntityRefFromStore(this.store, expressId)?.type.toUpperCase();
|
|
205
|
+
if (type === undefined || !this.overlay)
|
|
206
|
+
return type;
|
|
207
|
+
return this.retypes().get(expressId) ?? type;
|
|
64
208
|
}
|
|
65
209
|
attributeLexeme(expressId, index) {
|
|
66
210
|
let lexemes = this.lexemeCache.get(expressId);
|
|
67
211
|
if (!lexemes) {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
212
|
+
const createdEntry = this.isDeleted(expressId) ? undefined : this.createdEntities().get(expressId);
|
|
213
|
+
let text;
|
|
214
|
+
if (createdEntry) {
|
|
215
|
+
text = createdEntry.text;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
const record = this.overlaidRecord(expressId);
|
|
219
|
+
const ref = record === undefined ? getEntityRefFromStore(this.store, expressId) : undefined;
|
|
220
|
+
text = record ?? (ref ? this.source.decodeUtf8(ref.byteOffset, ref.byteOffset + ref.byteLength) : undefined);
|
|
221
|
+
}
|
|
222
|
+
lexemes = text === undefined ? [] : splitCostAttributeLexemes(text);
|
|
72
223
|
this.lexemeCache.set(expressId, lexemes);
|
|
73
224
|
}
|
|
74
225
|
return lexemes[index];
|
|
@@ -89,8 +240,14 @@ export class CostEntityReader {
|
|
|
89
240
|
return costAttributePresent(this.attributeLexeme(expressId, index));
|
|
90
241
|
}
|
|
91
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Read a STEP string attribute (IfcLabel/IfcText/IfcIdentifier) as-is,
|
|
245
|
+
* keeping an explicit `''` distinct from an absent (`$`) attribute — both
|
|
246
|
+
* are legal `IfcLabel` values per the schema, and IfcOpenShell keeps them
|
|
247
|
+
* distinct too (see #4881). Only `undefined` means "not a string at all".
|
|
248
|
+
*/
|
|
92
249
|
export function asString(value) {
|
|
93
|
-
return typeof value === 'string'
|
|
250
|
+
return typeof value === 'string' ? value : undefined;
|
|
94
251
|
}
|
|
95
252
|
export function asEnum(value) {
|
|
96
253
|
if (typeof value !== 'string')
|
package/dist/cost-reader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-reader.js","sourceRoot":"","sources":["../src/cost-reader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cost-reader.js","sourceRoot":"","sources":["../src/cost-reader.ts"],"names":[],"mappings":"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"}
|
package/dist/cost-types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { CollectedQuantity } from './quantity-collect.js';
|
|
3
3
|
export type { CollectedQuantity };
|
|
4
4
|
export type CostSchemaVersion = 'IFC2X3' | 'IFC4' | 'IFC4X3' | 'IFC5';
|
|
5
|
-
export type CostDiagnosticCode = 'IFC2X3_PARTIAL_READ' | 'UNSUPPORTED_SCHEMA' | 'MISSING_REFERENCE' | 'INVALID_LIST' | 'MULTIPLE_NESTING_PARENTS' | 'NESTING_CYCLE' | 'QUANTITY_CYCLE' | 'VALUE_CYCLE' | 'MISSING_VALUE' | 'INVALID_NUMBER' | 'UNSUPPORTED_APPLIED_VALUE' | 'UNSUPPORTED_CONDITION' | 'UNSUPPORTED_UNIT' | 'INCOMPATIBLE_UNIT' | 'MISSING_CURRENCY' | 'MIXED_CURRENCY' | 'DIVISION_BY_ZERO';
|
|
5
|
+
export type CostDiagnosticCode = 'IFC2X3_PARTIAL_READ' | 'UNSUPPORTED_SCHEMA' | 'MISSING_REFERENCE' | 'INVALID_LIST' | 'MULTIPLE_NESTING_PARENTS' | 'NESTING_CYCLE' | 'QUANTITY_CYCLE' | 'VALUE_CYCLE' | 'MISSING_VALUE' | 'INVALID_NUMBER' | 'UNSUPPORTED_APPLIED_VALUE' | 'UNSUPPORTED_CONDITION' | 'UNSUPPORTED_UNIT' | 'INCOMPATIBLE_UNIT' | 'MISSING_CURRENCY' | 'MIXED_CURRENCY' | 'DIVISION_BY_ZERO' | 'PENDING_EDIT_NOT_APPLIED';
|
|
6
6
|
export interface CostDiagnostic {
|
|
7
7
|
Code: CostDiagnosticCode;
|
|
8
8
|
Message: string;
|
|
@@ -62,7 +62,15 @@ export interface CostItemInfo {
|
|
|
62
62
|
costValues?: CostValueInfo[];
|
|
63
63
|
parentGlobalId?: string;
|
|
64
64
|
childGlobalIds: string[];
|
|
65
|
+
/**
|
|
66
|
+
* Express IDs of the `IfcProduct` instances assigned to this cost item,
|
|
67
|
+
* via either `IfcRelAssignsToProduct` or `IfcRelAssignsToControl`. Tasks,
|
|
68
|
+
* resources and actors assigned via `IfcRelAssignsToControl` are excluded
|
|
69
|
+
* — that relationship also legitimately binds those, but this field is
|
|
70
|
+
* a products-only view (#4877).
|
|
71
|
+
*/
|
|
65
72
|
productExpressIds: number[];
|
|
73
|
+
/** GlobalIds parallel to {@link productExpressIds}, same filtering. */
|
|
66
74
|
productGlobalIds: string[];
|
|
67
75
|
controllingScheduleGlobalIds: string[];
|
|
68
76
|
}
|
package/dist/cost-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-types.d.ts","sourceRoot":"","sources":["../src/cost-types.ts"],"names":[],"mappings":"AAIA,oDAAoD;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAC1B,qBAAqB,GACrB,oBAAoB,GACpB,mBAAmB,GACnB,cAAc,GACd,0BAA0B,GAC1B,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,2BAA2B,GAC3B,uBAAuB,GACvB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cost-types.d.ts","sourceRoot":"","sources":["../src/cost-types.ts"],"names":[],"mappings":"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"}
|
package/dist/cost.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { extractCostOnDemand } from './cost-extractor.js';
|
|
2
|
+
export type { CostExtractionOptions, CostMutationOverlay, CostCreatedRecord } from './cost-overlay.js';
|
|
2
3
|
export { evaluateCostItem, evaluateCostValue } from './cost-evaluator.js';
|
|
3
4
|
export type { CostAppliedValue, CostDiagnostic, CostDiagnosticCode, CostEvaluationOptions, CostEvaluationResult, CostExtraction, CostGraphExtraction, CostItemInfo, CostMeasureWithUnitInfo, CostQuantityDimension, CostQuantityInfo, CostRelationshipInfo, CostRelationshipType, CostScheduleInfo, CostSchemaVersion, CostUnitInfo, CostValueInfo, CostValueUnitBasis, } from './cost-types.js';
|
|
4
5
|
//# sourceMappingURL=cost.d.ts.map
|
package/dist/cost.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
|
package/dist/cost.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { IfcAttributeValue } from '@ifc-lite/data';
|
|
2
|
+
/** The pending edits a read model must fold into one entity record. */
|
|
3
|
+
export interface EntityRecordEdits {
|
|
4
|
+
/** Class a queued `setEntityType` gives the entity, when present. */
|
|
5
|
+
retype?: string;
|
|
6
|
+
named: Iterable<readonly [string, unknown]>;
|
|
7
|
+
positional: Iterable<readonly [number, IfcAttributeValue | unknown]>;
|
|
8
|
+
}
|
|
9
|
+
export interface EffectiveEntityRecord {
|
|
10
|
+
/** `IfcWall` spelling of the effective class. */
|
|
11
|
+
type: string;
|
|
12
|
+
attributes: unknown[];
|
|
13
|
+
/** Attribute names of the effective class, positionally aligned with `attributes`. */
|
|
14
|
+
names: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Re-lay authored attributes out by NAME into the target class's layout, as
|
|
18
|
+
* `retypeArgTokens` does on export: a slot the target class does not share
|
|
19
|
+
* is unset, never the value that happened to sit at the same index. Without
|
|
20
|
+
* a resolvable source layout export keeps the list verbatim (keyword-only
|
|
21
|
+
* swap), and so does this.
|
|
22
|
+
*/
|
|
23
|
+
export declare function retypedAttributes(sourceType: string, attributes: readonly unknown[], effectiveType: string, targetNames: readonly string[], schemaVersion: string | undefined): unknown[];
|
|
24
|
+
/**
|
|
25
|
+
* One entity record as export will write it: retype first (name-based
|
|
26
|
+
* re-layout), then named edits resolved against the effective class, then
|
|
27
|
+
* positional edits (which win over a named edit to the same slot). Every read
|
|
28
|
+
* surface (CLI, MCP, viewer) must describe a created or edited entity
|
|
29
|
+
* through this, or it disagrees with the saved file (#5009 review).
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveEffectiveEntityRecord(entity: {
|
|
32
|
+
type: string;
|
|
33
|
+
attributes: readonly unknown[];
|
|
34
|
+
}, edits: EntityRecordEdits, schemaVersion: string | undefined): EffectiveEntityRecord;
|
|
35
|
+
//# sourceMappingURL=effective-entity-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-entity-record.d.ts","sourceRoot":"","sources":["../src/effective-entity-record.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,sFAAsF;IACtF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,OAAO,EAAE,EAC9B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,OAAO,EAAE,CAMX;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,EACxD,KAAK,EAAE,iBAAiB,EACxB,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,qBAAqB,CAYvB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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 { getAttributeNamesForSchema, normalizeIfcTypeName } from './ifc-schema.js';
|
|
5
|
+
/**
|
|
6
|
+
* Re-lay authored attributes out by NAME into the target class's layout, as
|
|
7
|
+
* `retypeArgTokens` does on export: a slot the target class does not share
|
|
8
|
+
* is unset, never the value that happened to sit at the same index. Without
|
|
9
|
+
* a resolvable source layout export keeps the list verbatim (keyword-only
|
|
10
|
+
* swap), and so does this.
|
|
11
|
+
*/
|
|
12
|
+
export function retypedAttributes(sourceType, attributes, effectiveType, targetNames, schemaVersion) {
|
|
13
|
+
if (effectiveType.toUpperCase() === sourceType.toUpperCase())
|
|
14
|
+
return [...attributes];
|
|
15
|
+
const sourceNames = getAttributeNamesForSchema(sourceType, schemaVersion);
|
|
16
|
+
if (sourceNames.length === 0)
|
|
17
|
+
return [...attributes];
|
|
18
|
+
const byName = new Map(sourceNames.map((name, index) => [name, attributes[index]]));
|
|
19
|
+
return targetNames.map((name) => byName.get(name) ?? null);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* One entity record as export will write it: retype first (name-based
|
|
23
|
+
* re-layout), then named edits resolved against the effective class, then
|
|
24
|
+
* positional edits (which win over a named edit to the same slot). Every read
|
|
25
|
+
* surface (CLI, MCP, viewer) must describe a created or edited entity
|
|
26
|
+
* through this, or it disagrees with the saved file (#5009 review).
|
|
27
|
+
*/
|
|
28
|
+
export function resolveEffectiveEntityRecord(entity, edits, schemaVersion) {
|
|
29
|
+
const type = edits.retype ? normalizeIfcTypeName(edits.retype) : entity.type;
|
|
30
|
+
const names = getAttributeNamesForSchema(type, schemaVersion);
|
|
31
|
+
const attributes = names.length > 0
|
|
32
|
+
? retypedAttributes(entity.type, entity.attributes, type, names, schemaVersion)
|
|
33
|
+
: [...entity.attributes];
|
|
34
|
+
for (const [name, value] of edits.named) {
|
|
35
|
+
const index = names.indexOf(name);
|
|
36
|
+
if (index >= 0)
|
|
37
|
+
attributes[index] = value;
|
|
38
|
+
}
|
|
39
|
+
for (const [index, value] of edits.positional)
|
|
40
|
+
attributes[index] = value;
|
|
41
|
+
return { type, attributes, names };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=effective-entity-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-entity-record.js","sourceRoot":"","sources":["../src/effective-entity-record.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAkBnF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,UAA8B,EAC9B,aAAqB,EACrB,WAA8B,EAC9B,aAAiC;IAEjC,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE;QAAE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,0BAA0B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAwD,EACxD,KAAwB,EACxB,aAAiC;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7E,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QACjC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;QAC/E,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC5C,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU;QAAE,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACzE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { IfcAttributeValue, IfcEntity } from '@ifc-lite/data';
|
|
2
|
+
import type { IfcDataStore } from './columnar-parser.js';
|
|
3
|
+
export interface EffectiveRelationship {
|
|
4
|
+
relationshipId: number;
|
|
5
|
+
relationshipType: string;
|
|
6
|
+
relating: readonly number[];
|
|
7
|
+
related: readonly number[];
|
|
8
|
+
}
|
|
9
|
+
export interface RelationshipOverlayReader {
|
|
10
|
+
createdEntities(): readonly IfcEntity[];
|
|
11
|
+
mutatedEntityIds(): Iterable<number>;
|
|
12
|
+
namedAttributes(expressId: number): Iterable<readonly [string, unknown]>;
|
|
13
|
+
positionalAttributes(expressId: number): Iterable<readonly [number, IfcAttributeValue]>;
|
|
14
|
+
/** Effective class after a queued `setEntityType`, when present. */
|
|
15
|
+
entityType?(expressId: number): string | undefined;
|
|
16
|
+
isDeleted(expressId: number): boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface EffectiveRelationshipOverlay {
|
|
19
|
+
relationships: readonly EffectiveRelationship[];
|
|
20
|
+
/** Parsed relationship rows whose base graph edges must be suppressed. */
|
|
21
|
+
supersededSourceIds: ReadonlySet<number>;
|
|
22
|
+
}
|
|
23
|
+
/** Resolve created and endpoint-mutated relationship records as one effective graph. */
|
|
24
|
+
export declare function resolveEffectiveRelationshipOverlay(store: IfcDataStore, overlay: RelationshipOverlayReader): EffectiveRelationshipOverlay;
|
|
25
|
+
export declare function effectiveRelationshipEdges(overlay: EffectiveRelationshipOverlay, isDeleted: (expressId: number) => boolean, expressId: number, relationshipType?: string): Array<{
|
|
26
|
+
relationshipId: number;
|
|
27
|
+
relationshipType: string;
|
|
28
|
+
direction: 'forward' | 'inverse';
|
|
29
|
+
targetId: number;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=effective-relationship-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-relationship-overlay.d.ts","sourceRoot":"","sources":["../src/effective-relationship-overlay.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKzD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB;IACxC,eAAe,IAAI,SAAS,SAAS,EAAE,CAAC;IACxC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzE,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxF,oEAAoE;IACpE,UAAU,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAChD,0EAA0E;IAC1E,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC1C;AA+CD,wFAAwF;AACxF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,yBAAyB,GACjC,4BAA4B,CAqB9B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,4BAA4B,EACrC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EACzC,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,KAAK,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBjH"}
|
|
@@ -0,0 +1,111 @@
|
|
|
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 { getAttributeNamesForSchema, normalizeIfcTypeName } from './ifc-schema.js';
|
|
5
|
+
import { getRelationshipSlotPlan } from './relationship-schema-slots.js';
|
|
6
|
+
import { retypedAttributes } from './effective-entity-record.js';
|
|
7
|
+
function refIds(value) {
|
|
8
|
+
if (typeof value === 'number')
|
|
9
|
+
return Number.isSafeInteger(value) ? [value] : [];
|
|
10
|
+
if (typeof value === 'string') {
|
|
11
|
+
const match = /^#(\d+)$/.exec(value.trim());
|
|
12
|
+
if (!match)
|
|
13
|
+
return [];
|
|
14
|
+
const id = Number(match[1]);
|
|
15
|
+
return Number.isSafeInteger(id) ? [id] : [];
|
|
16
|
+
}
|
|
17
|
+
return Array.isArray(value) ? value.flatMap(refIds) : [];
|
|
18
|
+
}
|
|
19
|
+
function resolveRelationship(store, entity, overlay) {
|
|
20
|
+
const effectiveType = overlay.entityType?.(entity.expressId) ?? entity.type;
|
|
21
|
+
if (!effectiveType.toUpperCase().startsWith('IFCREL') || overlay.isDeleted(entity.expressId))
|
|
22
|
+
return null;
|
|
23
|
+
const names = getAttributeNamesForSchema(effectiveType, store.schemaVersion);
|
|
24
|
+
if (names.length === 0)
|
|
25
|
+
return null;
|
|
26
|
+
const attributes = retypedAttributes(entity.type, entity.attributes, effectiveType, names, store.schemaVersion);
|
|
27
|
+
const named = new Map(overlay.namedAttributes(entity.expressId));
|
|
28
|
+
const positional = new Map(overlay.positionalAttributes(entity.expressId));
|
|
29
|
+
// Match both STEP export pipelines: named edits resolve first, then a
|
|
30
|
+
// positional edit to the same slot wins. Querying a pending relationship
|
|
31
|
+
// must describe the file that saving that pending overlay will produce.
|
|
32
|
+
for (const [name] of named) {
|
|
33
|
+
const index = names.indexOf(name);
|
|
34
|
+
if (index >= 0)
|
|
35
|
+
attributes[index] = named.get(name);
|
|
36
|
+
}
|
|
37
|
+
for (const [index, value] of positional)
|
|
38
|
+
attributes[index] = value;
|
|
39
|
+
const plan = getRelationshipSlotPlan(effectiveType.toUpperCase(), store.schemaVersion);
|
|
40
|
+
if (!plan)
|
|
41
|
+
return null;
|
|
42
|
+
const relating = refIds(attributes[4 + plan.relating.index]);
|
|
43
|
+
const related = refIds(attributes[4 + plan.related.index]);
|
|
44
|
+
if (!relating.length || !related.length)
|
|
45
|
+
return null;
|
|
46
|
+
return {
|
|
47
|
+
relationshipId: entity.expressId,
|
|
48
|
+
relationshipType: normalizeIfcTypeName(effectiveType),
|
|
49
|
+
relating,
|
|
50
|
+
related,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Resolve created and endpoint-mutated relationship records as one effective graph. */
|
|
54
|
+
export function resolveEffectiveRelationshipOverlay(store, overlay) {
|
|
55
|
+
const relationships = [];
|
|
56
|
+
const supersededSourceIds = new Set();
|
|
57
|
+
const createdIds = new Set();
|
|
58
|
+
for (const entity of overlay.createdEntities()) {
|
|
59
|
+
createdIds.add(entity.expressId);
|
|
60
|
+
const relation = resolveRelationship(store, entity, overlay);
|
|
61
|
+
if (relation)
|
|
62
|
+
relationships.push(relation);
|
|
63
|
+
}
|
|
64
|
+
for (const expressId of new Set(overlay.mutatedEntityIds())) {
|
|
65
|
+
if (createdIds.has(expressId))
|
|
66
|
+
continue;
|
|
67
|
+
const entity = store.getEntity(expressId);
|
|
68
|
+
if (!entity)
|
|
69
|
+
continue;
|
|
70
|
+
const authoredRelationship = entity.type.toUpperCase().startsWith('IFCREL');
|
|
71
|
+
const effectiveType = overlay.entityType?.(expressId) ?? entity.type;
|
|
72
|
+
if (!authoredRelationship && !effectiveType.toUpperCase().startsWith('IFCREL'))
|
|
73
|
+
continue;
|
|
74
|
+
if (authoredRelationship)
|
|
75
|
+
supersededSourceIds.add(expressId);
|
|
76
|
+
const relation = resolveRelationship(store, entity, overlay);
|
|
77
|
+
if (relation)
|
|
78
|
+
relationships.push(relation);
|
|
79
|
+
}
|
|
80
|
+
return { relationships, supersededSourceIds };
|
|
81
|
+
}
|
|
82
|
+
export function effectiveRelationshipEdges(overlay, isDeleted, expressId, relationshipType) {
|
|
83
|
+
const upper = relationshipType?.toUpperCase();
|
|
84
|
+
const out = [];
|
|
85
|
+
for (const relation of overlay.relationships) {
|
|
86
|
+
if (upper && relation.relationshipType.toUpperCase() !== upper)
|
|
87
|
+
continue;
|
|
88
|
+
if (relation.relating.includes(expressId)) {
|
|
89
|
+
for (const targetId of relation.related)
|
|
90
|
+
if (!isDeleted(targetId))
|
|
91
|
+
out.push({
|
|
92
|
+
relationshipId: relation.relationshipId,
|
|
93
|
+
relationshipType: relation.relationshipType,
|
|
94
|
+
direction: 'forward',
|
|
95
|
+
targetId,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (relation.related.includes(expressId)) {
|
|
99
|
+
for (const targetId of relation.relating)
|
|
100
|
+
if (!isDeleted(targetId))
|
|
101
|
+
out.push({
|
|
102
|
+
relationshipId: relation.relationshipId,
|
|
103
|
+
relationshipType: relation.relationshipType,
|
|
104
|
+
direction: 'inverse',
|
|
105
|
+
targetId,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=effective-relationship-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-relationship-overlay.js","sourceRoot":"","sources":["../src/effective-relationship-overlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { IfcDataStore } from './columnar-parser.js';
|
|
2
|
+
/** One exact-class edge touching an entity (#4205). */
|
|
3
|
+
export interface ExactRelationshipEdge {
|
|
4
|
+
relationshipId: number;
|
|
5
|
+
relationshipType: string;
|
|
6
|
+
direction: 'forward' | 'inverse';
|
|
7
|
+
entity: {
|
|
8
|
+
id: number;
|
|
9
|
+
name?: string;
|
|
10
|
+
type: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** Structured relationship information for one entity. */
|
|
14
|
+
export interface EntityRelationships {
|
|
15
|
+
voids: Array<{
|
|
16
|
+
id: number;
|
|
17
|
+
name?: string;
|
|
18
|
+
type: string;
|
|
19
|
+
}>;
|
|
20
|
+
fills: Array<{
|
|
21
|
+
id: number;
|
|
22
|
+
name?: string;
|
|
23
|
+
type: string;
|
|
24
|
+
}>;
|
|
25
|
+
groups: Array<{
|
|
26
|
+
id: number;
|
|
27
|
+
name?: string;
|
|
28
|
+
type: string;
|
|
29
|
+
}>;
|
|
30
|
+
connections: Array<{
|
|
31
|
+
id: number;
|
|
32
|
+
name?: string;
|
|
33
|
+
type: string;
|
|
34
|
+
}>;
|
|
35
|
+
/** Optional for consumers/backends compiled against the pre-#4205 shape. */
|
|
36
|
+
relations?: ExactRelationshipEdge[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Return every graph edge touching `entityId`, preserving the exact IfcRel*
|
|
40
|
+
* STEP class. Compatibility aliases such as IfcRelNests occupy two enum
|
|
41
|
+
* buckets, so the result is deduplicated by relationship record and target.
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractExactRelationshipEdges(store: IfcDataStore, entityId: number): ExactRelationshipEdge[];
|
|
44
|
+
/** Return unique opposite-end ids for one exact EXPRESS relationship class. */
|
|
45
|
+
export declare function extractExactRelatedIds(store: IfcDataStore, entityId: number, relationshipType: string, direction: 'forward' | 'inverse', isDeletedRelationship?: (relationshipId: number) => boolean): number[];
|
|
46
|
+
//# sourceMappingURL=exact-relationship-edges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exact-relationship-edges.d.ts","sourceRoot":"","sources":["../src/exact-relationship-edges.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,4EAA4E;IAC5E,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACjB,qBAAqB,EAAE,CA4DzB;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,qBAAqB,GAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAqB,GACzE,MAAM,EAAE,CAUV"}
|