@ifc-lite/parser 9.2.0 → 9.4.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 +31 -0
- package/dist/abort-error.d.ts +7 -0
- package/dist/abort-error.d.ts.map +1 -0
- package/dist/abort-error.js +17 -0
- package/dist/abort-error.js.map +1 -0
- package/dist/classification-overlay.d.ts +13 -0
- package/dist/classification-overlay.d.ts.map +1 -0
- package/dist/classification-overlay.js +65 -0
- package/dist/classification-overlay.js.map +1 -0
- package/dist/classification-resolver.d.ts +13 -9
- package/dist/classification-resolver.d.ts.map +1 -1
- package/dist/classification-resolver.js +109 -74
- package/dist/classification-resolver.js.map +1 -1
- 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 +16 -6
- package/dist/columnar-parser-attributes.js.map +1 -1
- package/dist/columnar-parser-root-attributes.d.ts +15 -1
- package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-root-attributes.js +26 -11
- package/dist/columnar-parser-root-attributes.js.map +1 -1
- package/dist/columnar-parser.d.ts +9 -8
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +11 -23
- package/dist/columnar-parser.js.map +1 -1
- package/dist/current-occurrence-quantities.d.ts +13 -0
- package/dist/current-occurrence-quantities.d.ts.map +1 -0
- package/dist/current-occurrence-quantities.js +69 -0
- package/dist/current-occurrence-quantities.js.map +1 -0
- package/dist/current-project-units.d.ts +11 -0
- package/dist/current-project-units.d.ts.map +1 -0
- package/dist/current-project-units.js +41 -0
- package/dist/current-project-units.js.map +1 -0
- package/dist/current-type-quantities.d.ts +13 -0
- package/dist/current-type-quantities.d.ts.map +1 -0
- package/dist/current-type-quantities.js +274 -0
- package/dist/current-type-quantities.js.map +1 -0
- package/dist/data-store-transport.d.ts +1 -0
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +2 -0
- package/dist/data-store-transport.js.map +1 -1
- package/dist/document-resolver.d.ts +23 -0
- package/dist/document-resolver.d.ts.map +1 -0
- package/dist/document-resolver.js +122 -0
- package/dist/document-resolver.js.map +1 -0
- package/dist/effective-entity-record.d.ts +3 -2
- package/dist/effective-entity-record.d.ts.map +1 -1
- package/dist/effective-entity-record.js +5 -5
- package/dist/effective-entity-record.js.map +1 -1
- package/dist/effective-metadata-record.d.ts +23 -0
- package/dist/effective-metadata-record.d.ts.map +1 -0
- package/dist/effective-metadata-record.js +50 -0
- package/dist/effective-metadata-record.js.map +1 -0
- package/dist/entity-scanner.d.ts +6 -8
- package/dist/entity-scanner.d.ts.map +1 -1
- package/dist/entity-scanner.js +26 -13
- package/dist/entity-scanner.js.map +1 -1
- package/dist/ifc-schema.d.ts +2 -1
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +4 -3
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +8 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -10
- package/dist/index.js.map +1 -1
- package/dist/length-unit-source.d.ts +25 -0
- package/dist/length-unit-source.d.ts.map +1 -0
- package/dist/length-unit-source.js +14 -0
- package/dist/length-unit-source.js.map +1 -0
- package/dist/material-definitions.d.ts +10 -0
- package/dist/material-definitions.d.ts.map +1 -0
- package/dist/material-definitions.js +224 -0
- package/dist/material-definitions.js.map +1 -0
- package/dist/material-overlay.d.ts +38 -0
- package/dist/material-overlay.d.ts.map +1 -0
- package/dist/material-overlay.js +146 -0
- package/dist/material-overlay.js.map +1 -0
- package/dist/material-properties-extractor.d.ts +2 -11
- package/dist/material-properties-extractor.d.ts.map +1 -1
- package/dist/material-properties-extractor.js +21 -38
- package/dist/material-properties-extractor.js.map +1 -1
- package/dist/material-resolver.d.ts +6 -4
- package/dist/material-resolver.d.ts.map +1 -1
- package/dist/material-resolver.js +176 -386
- package/dist/material-resolver.js.map +1 -1
- package/dist/measure-unit-scale.d.ts +2 -0
- package/dist/measure-unit-scale.d.ts.map +1 -1
- package/dist/measure-unit-scale.js +7 -1
- package/dist/measure-unit-scale.js.map +1 -1
- package/dist/metadata-edit-value.d.ts +4 -0
- package/dist/metadata-edit-value.d.ts.map +1 -0
- package/dist/metadata-edit-value.js +57 -0
- package/dist/metadata-edit-value.js.map +1 -0
- package/dist/native-metadata-public.d.ts +9 -0
- package/dist/native-metadata-public.d.ts.map +1 -0
- package/dist/native-metadata-public.js +12 -0
- package/dist/native-metadata-public.js.map +1 -0
- package/dist/occurrence-quantity-read-error.d.ts +7 -0
- package/dist/occurrence-quantity-read-error.d.ts.map +1 -0
- package/dist/occurrence-quantity-read-error.js +13 -0
- package/dist/occurrence-quantity-read-error.js.map +1 -0
- package/dist/on-demand-extractors.d.ts +3 -38
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +4 -184
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/parser-worker-trace.d.ts +18 -0
- package/dist/parser-worker-trace.d.ts.map +1 -0
- package/dist/parser-worker-trace.js +32 -0
- package/dist/parser-worker-trace.js.map +1 -0
- package/dist/parser.worker.d.ts.map +1 -1
- package/dist/parser.worker.js +34 -13
- package/dist/parser.worker.js.map +1 -1
- package/dist/project-units.d.ts +17 -4
- package/dist/project-units.d.ts.map +1 -1
- package/dist/project-units.js +104 -37
- package/dist/project-units.js.map +1 -1
- package/dist/property-complex-value.d.ts.map +1 -1
- package/dist/property-complex-value.js +1 -0
- package/dist/property-complex-value.js.map +1 -1
- package/dist/property-unit.d.ts +2 -0
- package/dist/property-unit.d.ts.map +1 -1
- package/dist/property-unit.js +4 -1
- package/dist/property-unit.js.map +1 -1
- package/dist/property-value-parser.d.ts +14 -1
- package/dist/property-value-parser.d.ts.map +1 -1
- package/dist/property-value-parser.js +42 -22
- package/dist/property-value-parser.js.map +1 -1
- package/dist/quantity-collect.d.ts +14 -2
- package/dist/quantity-collect.d.ts.map +1 -1
- package/dist/quantity-collect.js +19 -8
- package/dist/quantity-collect.js.map +1 -1
- package/dist/relationship-schema-slots.d.ts.map +1 -1
- package/dist/relationship-schema-slots.js +2 -1
- package/dist/relationship-schema-slots.js.map +1 -1
- package/dist/scan-worker-inline.d.ts.map +1 -1
- package/dist/scan-worker-inline.js +2 -1
- package/dist/scan-worker-inline.js.map +1 -1
- package/dist/schedule-extractor.d.ts +2 -1
- package/dist/schedule-extractor.d.ts.map +1 -1
- package/dist/schedule-extractor.js +11 -2
- package/dist/schedule-extractor.js.map +1 -1
- package/dist/schedule-serializer-builders.d.ts +7 -0
- package/dist/schedule-serializer-builders.d.ts.map +1 -1
- package/dist/schedule-serializer-builders.js +17 -17
- package/dist/schedule-serializer-builders.js.map +1 -1
- package/dist/schedule-serializer.d.ts +8 -3
- package/dist/schedule-serializer.d.ts.map +1 -1
- package/dist/schedule-serializer.js +36 -1
- package/dist/schedule-serializer.js.map +1 -1
- package/dist/schedule-task-products.d.ts +38 -0
- package/dist/schedule-task-products.d.ts.map +1 -0
- package/dist/schedule-task-products.js +69 -0
- package/dist/schedule-task-products.js.map +1 -0
- package/dist/schedule-types.d.ts +11 -1
- package/dist/schedule-types.d.ts.map +1 -1
- package/dist/schedule-types.js.map +1 -1
- package/dist/schema-entity-name.d.ts +14 -0
- package/dist/schema-entity-name.d.ts.map +1 -0
- package/dist/schema-entity-name.js +34 -0
- package/dist/schema-entity-name.js.map +1 -0
- package/dist/schema-exports.d.ts +7 -0
- package/dist/schema-exports.d.ts.map +1 -0
- package/dist/schema-exports.js +10 -0
- package/dist/schema-exports.js.map +1 -0
- package/dist/source-project-length-unit.d.ts +53 -0
- package/dist/source-project-length-unit.d.ts.map +1 -0
- package/dist/source-project-length-unit.js +201 -0
- package/dist/source-project-length-unit.js.map +1 -0
- package/dist/structural-extractor.js +2 -2
- package/dist/structural-extractor.js.map +1 -1
- package/dist/structural-load-extractor.d.ts +9 -3
- package/dist/structural-load-extractor.d.ts.map +1 -1
- package/dist/structural-load-extractor.js +26 -20
- package/dist/structural-load-extractor.js.map +1 -1
- package/dist/structural-step-values.d.ts +0 -9
- package/dist/structural-step-values.d.ts.map +1 -1
- package/dist/structural-step-values.js +13 -1
- package/dist/structural-step-values.js.map +1 -1
- package/dist/type-own-quantity-source.d.ts +37 -0
- package/dist/type-own-quantity-source.d.ts.map +1 -0
- package/dist/type-own-quantity-source.js +204 -0
- package/dist/type-own-quantity-source.js.map +1 -0
- package/dist/unit-extractor.d.ts +13 -0
- package/dist/unit-extractor.d.ts.map +1 -1
- package/dist/unit-extractor.js +32 -29
- package/dist/unit-extractor.js.map +1 -1
- package/dist/worker-parser.d.ts +7 -0
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +14 -16
- package/dist/worker-parser.js.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -28,6 +28,12 @@ console.log(`Parsed ${store.entityCount} entities in ${(performance.now() - t0).
|
|
|
28
28
|
shared scan selection, and on-demand extraction for properties, quantities,
|
|
29
29
|
materials, classifications, documents, and attributes.
|
|
30
30
|
|
|
31
|
+
`extractDocumentsOnDemand(store, expressId, mutationView?)` folds current native
|
|
32
|
+
document and association edits with the same positional precedence as STEP export.
|
|
33
|
+
Existing normalized document fields keep their casing. Optional target identity and
|
|
34
|
+
`unresolved`/`sourceOrigin` distinguish unreadable metadata and immutable forwarded
|
|
35
|
+
associations when source bytes are absent; such rows do not prove current membership.
|
|
36
|
+
|
|
31
37
|
```typescript
|
|
32
38
|
const store = await parser.parseColumnar(buffer);
|
|
33
39
|
|
|
@@ -84,15 +90,26 @@ const psets = extractPropertiesOnDemand(store, wallId);
|
|
|
84
90
|
// [{ name: 'Pset_WallCommon', properties: [{ name: 'FireRating', value: 'REI 60' }, ...] }]
|
|
85
91
|
|
|
86
92
|
const qsets = extractQuantitiesOnDemand(store, wallId);
|
|
93
|
+
// Pass a native mutation view to resolve current occurrence member Units and dependencies.
|
|
94
|
+
// const currentQsets = extractQuantitiesOnDemand(store, wallId, mutationView);
|
|
87
95
|
// [{ name: 'Qto_WallBaseQuantities', quantities: [{ name: 'Length', value: 5.0 }, ...] }]
|
|
88
96
|
|
|
89
97
|
const material = extractMaterialsOnDemand(store, wallId);
|
|
90
98
|
// { name: 'Concrete C30/37', layers: [{ name: 'Concrete', thickness: 0.15 }, ...] }
|
|
91
99
|
|
|
92
100
|
const classifications = extractClassificationsOnDemand(store, wallId);
|
|
101
|
+
// Pass a native mutation view to read current classification edits before export.
|
|
102
|
+
// const currentClassifications = extractClassificationsOnDemand(store, wallId, mutationView);
|
|
93
103
|
// [{ system: 'Uniclass 2015', identification: 'Pr_60_10_32', name: 'External walls', ... }]
|
|
94
104
|
```
|
|
95
105
|
|
|
106
|
+
Current occurrence quantity reads with a native mutation view throw
|
|
107
|
+
`OccurrenceQuantityReadError` when their complete inventory cannot be read within
|
|
108
|
+
the 256-set / 4,096-member / 512-unit-read bounds, a unit record is oversized,
|
|
109
|
+
or a member list is unreadable. Report this as
|
|
110
|
+
unavailable coverage instead of treating it as an empty inventory. Source-only
|
|
111
|
+
two-argument reads retain their existing behavior.
|
|
112
|
+
|
|
96
113
|
## Georeferencing
|
|
97
114
|
|
|
98
115
|
```typescript
|
|
@@ -151,3 +168,17 @@ See the [Parsing Guide](https://ifclite.dev/docs/guide/parsing/) and [API Refere
|
|
|
151
168
|
## License
|
|
152
169
|
|
|
153
170
|
[MPL-2.0](../../LICENSE)
|
|
171
|
+
|
|
172
|
+
`effectiveMetadataRecord(store, expressId, mutationView?)` is the shared native
|
|
173
|
+
metadata read primitive used by classification, document and viewer structural
|
|
174
|
+
consumers. It returns the current EXPRESS class/attributes, applies native edit
|
|
175
|
+
markers and named/positional precedence, and invalidates cached source fields
|
|
176
|
+
when the model's source transport changes. It never reads retained source-byte
|
|
177
|
+
closures when the current store has no source bytes.
|
|
178
|
+
|
|
179
|
+
Structural extraction retains its existing `StructuralExtractionView.readEntity`
|
|
180
|
+
callback. Applied loads and supports now use that same current record callback;
|
|
181
|
+
the native configuration walk keeps its depth, path-cycle and work bounds and
|
|
182
|
+
reports dropped slots and truncation. Existing normalized structural DTO casing
|
|
183
|
+
is unchanged. IFC2X3-only divergences remain the native reader's documented
|
|
184
|
+
best-effort boundary.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build an `AbortError`-shaped error for a cancelled parse. Uses `DOMException`
|
|
3
|
+
* when available (browsers, modern Node) so `err.name === 'AbortError'` matches
|
|
4
|
+
* the same check callers already use for `fetch`/`AbortController` cancellation.
|
|
5
|
+
*/
|
|
6
|
+
export declare function makeAbortError(message?: string): Error;
|
|
7
|
+
//# sourceMappingURL=abort-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-error.d.ts","sourceRoot":"","sources":["../src/abort-error.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAA6B,GAAG,KAAK,CAO1E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* Build an `AbortError`-shaped error for a cancelled parse. Uses `DOMException`
|
|
6
|
+
* when available (browsers, modern Node) so `err.name === 'AbortError'` matches
|
|
7
|
+
* the same check callers already use for `fetch`/`AbortController` cancellation.
|
|
8
|
+
*/
|
|
9
|
+
export function makeAbortError(message = 'Parser worker terminated') {
|
|
10
|
+
if (typeof DOMException !== 'undefined') {
|
|
11
|
+
return new DOMException(message, 'AbortError');
|
|
12
|
+
}
|
|
13
|
+
const err = new Error(message);
|
|
14
|
+
err.name = 'AbortError';
|
|
15
|
+
return err;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=abort-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-error.js","sourceRoot":"","sources":["../src/abort-error.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,0BAA0B;IACjE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,YAAY,CAAqB,CAAC;IACrE,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IfcDataStore } from './columnar-parser.js';
|
|
2
|
+
export type { MetadataReadView as ClassificationReadView } from './effective-metadata-record.js';
|
|
3
|
+
import { effectiveMetadataRecord as classificationRecord, type MetadataReadView as ClassificationReadView } from './effective-metadata-record.js';
|
|
4
|
+
export { classificationRecord };
|
|
5
|
+
interface ClassificationEdges {
|
|
6
|
+
references: Map<number, number[]>;
|
|
7
|
+
types: Map<number, number[]>;
|
|
8
|
+
unresolvedSource: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Build all association/type edges once per model overlay revision; no per-element relationship scan. */
|
|
11
|
+
export declare function classificationEdges(store: IfcDataStore, view: ClassificationReadView): ClassificationEdges;
|
|
12
|
+
export declare function classificationSystemIds(store: IfcDataStore, view: ClassificationReadView): number[];
|
|
13
|
+
//# sourceMappingURL=classification-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classification-overlay.d.ts","sourceRoot":"","sources":["../src/classification-overlay.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,YAAY,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,uBAAuB,IAAI,oBAAoB,EAAE,KAAK,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAClJ,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,UAAU,mBAAmB;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAGD,0GAA0G;AAC1G,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,GAAG,mBAAmB,CAyC1G;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,GAAG,MAAM,EAAE,CAEnG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
/** Model-local classification inputs as the native edit session will export (#7131). */
|
|
5
|
+
import { iterateEffectiveEntities } from '@ifc-lite/data';
|
|
6
|
+
import { resolveEffectiveRelationshipOverlay } from './effective-relationship-overlay.js';
|
|
7
|
+
import { effectiveMetadataRecord as classificationRecord } from './effective-metadata-record.js';
|
|
8
|
+
export { classificationRecord };
|
|
9
|
+
const cache = new WeakMap();
|
|
10
|
+
/** Build all association/type edges once per model overlay revision; no per-element relationship scan. */
|
|
11
|
+
export function classificationEdges(store, view) {
|
|
12
|
+
const revision = view.getMutationRevision();
|
|
13
|
+
const cached = cache.get(store)?.get(view);
|
|
14
|
+
if (cached?.revision === revision)
|
|
15
|
+
return cached.edges;
|
|
16
|
+
const relationTypes = ['IFCRELASSOCIATESCLASSIFICATION', 'IFCRELDEFINESBYTYPE'];
|
|
17
|
+
// @raw-entity-enumeration-ok source relationship ids feed the canonical effective relationship reader; it applies deletion, edits and retypes
|
|
18
|
+
const sourceIds = relationTypes.flatMap(type => store.entityIndex.byType.get(type) ?? []);
|
|
19
|
+
for (const id of view.getTypeMutations?.().keys() ?? [])
|
|
20
|
+
sourceIds.push(id);
|
|
21
|
+
const overlay = resolveEffectiveRelationshipOverlay(store.source?.length ? store : { ...store, getEntity: () => null }, {
|
|
22
|
+
createdEntities: () => view.getNewEntities(),
|
|
23
|
+
mutatedEntityIds: () => sourceIds,
|
|
24
|
+
namedAttributes: id => view.getAttributeMutationsForEntity(id).map(row => [row.name, row.value]),
|
|
25
|
+
positionalAttributes: id => view.getPositionalMutationsForEntity(id) ?? [],
|
|
26
|
+
entityType: id => view.getTypeMutations?.().get(id)?.newType,
|
|
27
|
+
isDeleted: id => view.isDeleted(id),
|
|
28
|
+
});
|
|
29
|
+
// A source-empty transport does not carry enough attributes to reconstruct
|
|
30
|
+
// edited source associations or chains. Preserve uncertainty instead of
|
|
31
|
+
// treating the original forwarded rows as effective live data.
|
|
32
|
+
const unknownSourceIds = [...sourceIds,
|
|
33
|
+
// @raw-entity-enumeration-ok source definition/reference ids are inspected only for live edits when their bytes are unavailable
|
|
34
|
+
...(store.entityIndex.byType.get('IFCCLASSIFICATION') ?? []), ...(store.entityIndex.byType.get('IFCCLASSIFICATIONREFERENCE') ?? [])];
|
|
35
|
+
const unresolvedSource = !store.source?.length && unknownSourceIds.some(id => view.isDeleted(id)
|
|
36
|
+
|| view.getTypeMutations?.().has(id) || view.getAttributeMutationsForEntity(id).length > 0
|
|
37
|
+
|| (view.getPositionalMutationsForEntity(id)?.size ?? 0) > 0);
|
|
38
|
+
const edges = { references: new Map(), types: new Map(), unresolvedSource };
|
|
39
|
+
for (const relation of overlay.relationships) {
|
|
40
|
+
const upper = relation.relationshipType.toUpperCase();
|
|
41
|
+
const index = upper === relationTypes[0] ? edges.references : upper === relationTypes[1] ? edges.types : null;
|
|
42
|
+
if (!index)
|
|
43
|
+
continue;
|
|
44
|
+
for (const related of relation.related) {
|
|
45
|
+
if (view.isDeleted(related))
|
|
46
|
+
continue;
|
|
47
|
+
const values = index.get(related) ?? [];
|
|
48
|
+
for (const target of relation.relating)
|
|
49
|
+
if (!view.isDeleted(target) && !values.includes(target))
|
|
50
|
+
values.push(target);
|
|
51
|
+
index.set(related, values);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
let modelCache = cache.get(store);
|
|
55
|
+
if (!modelCache) {
|
|
56
|
+
modelCache = new WeakMap();
|
|
57
|
+
cache.set(store, modelCache);
|
|
58
|
+
}
|
|
59
|
+
modelCache.set(view, { revision, edges });
|
|
60
|
+
return edges;
|
|
61
|
+
}
|
|
62
|
+
export function classificationSystemIds(store, view) {
|
|
63
|
+
return [...iterateEffectiveEntities(store, view, ['IFCCLASSIFICATION'])].map(entity => entity.expressId);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=classification-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classification-overlay.js","sourceRoot":"","sources":["../src/classification-overlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IfcDataStore } from './columnar-parser.js';
|
|
2
|
+
import { type ClassificationReadView } from './classification-overlay.js';
|
|
2
3
|
export interface ClassificationInfo {
|
|
3
4
|
system?: string;
|
|
4
5
|
identification?: string;
|
|
@@ -7,13 +8,15 @@ export interface ClassificationInfo {
|
|
|
7
8
|
description?: string;
|
|
8
9
|
path?: string[];
|
|
9
10
|
/**
|
|
10
|
-
* True when
|
|
11
|
-
*
|
|
12
|
-
* (
|
|
13
|
-
* store has no source bytes — a server-parsed store (issue #3948).
|
|
11
|
+
* True when an association is known but its system or attributes cannot
|
|
12
|
+
* be fully resolved: missing source bytes (#3948), a broken chain, or a
|
|
13
|
+
* cycle (#5290). Known leaf attributes can remain on a partial entry.
|
|
14
14
|
* Distinguishes "classified but unresolved" from "genuinely unclassified"
|
|
15
15
|
* (an empty result array), which are otherwise byte-identical to every
|
|
16
|
-
* caller.
|
|
16
|
+
* caller. A graph-only marker has no other fields.
|
|
17
|
+
* With live edits on a source-empty store these markers retain immutable
|
|
18
|
+
* source evidence; edited source membership needs the original bytes and
|
|
19
|
+
* must not be counted as a known current population.
|
|
17
20
|
*/
|
|
18
21
|
unresolved?: boolean;
|
|
19
22
|
}
|
|
@@ -24,7 +27,7 @@ export interface ClassificationInfo {
|
|
|
24
27
|
* Also checks type-level associations via IfcRelDefinesByType.
|
|
25
28
|
* Returns an array of classification references with system info.
|
|
26
29
|
*/
|
|
27
|
-
export declare function extractClassificationsOnDemand(store: IfcDataStore, entityId: number): ClassificationInfo[];
|
|
30
|
+
export declare function extractClassificationsOnDemand(store: IfcDataStore, entityId: number, view?: ClassificationReadView): ClassificationInfo[];
|
|
28
31
|
/** Result of {@link extractClassificationSystemsOnDemand}. */
|
|
29
32
|
export interface ClassificationSystemNames {
|
|
30
33
|
/** Distinct system names, sorted. Empty when the model genuinely has no
|
|
@@ -36,8 +39,9 @@ export interface ClassificationSystemNames {
|
|
|
36
39
|
* byType index) but their `Name` could not be read because this store
|
|
37
40
|
* has no source bytes — a server-parsed store (issue #3948), the same
|
|
38
41
|
* condition `extractClassificationsOnDemand` signals per-entity via
|
|
39
|
-
* `ClassificationInfo.unresolved`.
|
|
40
|
-
*
|
|
42
|
+
* `ClassificationInfo.unresolved`. An effective view may still supply
|
|
43
|
+
* complete authored names alongside unreadable source systems. When
|
|
44
|
+
* true, `names` is incomplete and cannot establish a system's absence.
|
|
41
45
|
*/
|
|
42
46
|
unresolved: boolean;
|
|
43
47
|
}
|
|
@@ -56,5 +60,5 @@ export interface ClassificationSystemNames {
|
|
|
56
60
|
* A model can carry SEVERAL systems at once (e.g. Uniclass, OmniClass, and
|
|
57
61
|
* a national system) — this returns all of them, sorted alphabetically.
|
|
58
62
|
*/
|
|
59
|
-
export declare function extractClassificationSystemsOnDemand(store: IfcDataStore): ClassificationSystemNames;
|
|
63
|
+
export declare function extractClassificationSystemsOnDemand(store: IfcDataStore, view?: ClassificationReadView): ClassificationSystemNames;
|
|
60
64
|
//# sourceMappingURL=classification-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classification-resolver.d.ts","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"classification-resolver.d.ts","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAsE,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE9I,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,sBAAsB,GAC9B,kBAAkB,EAAE,CAuFtB;AA0DD,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACtC;;uCAEmC;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;;OAQG;IACH,UAAU,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,sBAAsB,GAAG,yBAAyB,CA+BlI"}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
* Classification extraction — resolves IfcClassificationReference chains
|
|
6
6
|
* and IfcClassification systems for entity classification lookups.
|
|
7
7
|
*/
|
|
8
|
+
import { getReference } from './attribute-helpers.js';
|
|
8
9
|
import { EntityExtractor } from './entity-extractor.js';
|
|
9
10
|
import { RelationshipType } from '@ifc-lite/data';
|
|
11
|
+
import { classificationEdges, classificationRecord, classificationSystemIds } from './classification-overlay.js';
|
|
10
12
|
/**
|
|
11
13
|
* Extract classifications for a single entity ON-DEMAND.
|
|
12
14
|
* Uses the onDemandClassificationMap built during parsing.
|
|
@@ -14,10 +16,19 @@ import { RelationshipType } from '@ifc-lite/data';
|
|
|
14
16
|
* Also checks type-level associations via IfcRelDefinesByType.
|
|
15
17
|
* Returns an array of classification references with system info.
|
|
16
18
|
*/
|
|
17
|
-
export function extractClassificationsOnDemand(store, entityId) {
|
|
19
|
+
export function extractClassificationsOnDemand(store, entityId, view) {
|
|
20
|
+
if (view?.isDeleted(entityId))
|
|
21
|
+
return [];
|
|
22
|
+
const overlayEdges = view ? classificationEdges(store, view) : null;
|
|
23
|
+
const effectiveEdges = store.source?.length ? overlayEdges : null;
|
|
24
|
+
const baseId = view?.resolveBaseEntityId?.(entityId) ?? entityId;
|
|
25
|
+
const subjects = baseId === entityId ? [entityId] : [entityId, baseId];
|
|
18
26
|
let classRefIds;
|
|
19
|
-
if (
|
|
20
|
-
classRefIds =
|
|
27
|
+
if (effectiveEdges) {
|
|
28
|
+
classRefIds = subjects.flatMap(id => effectiveEdges.references.get(id) ?? []);
|
|
29
|
+
}
|
|
30
|
+
else if (store.onDemandClassificationMap) {
|
|
31
|
+
classRefIds = subjects.flatMap(id => store.onDemandClassificationMap?.get(id) ?? []);
|
|
21
32
|
}
|
|
22
33
|
else if (store.relationships) {
|
|
23
34
|
// Fallback: use relationship graph (server-loaded models)
|
|
@@ -26,15 +37,18 @@ export function extractClassificationsOnDemand(store, entityId) {
|
|
|
26
37
|
classRefIds = related;
|
|
27
38
|
}
|
|
28
39
|
// Also check type-level classifications via IfcRelDefinesByType
|
|
29
|
-
if (store.relationships) {
|
|
30
|
-
const typeIds = store.relationships
|
|
40
|
+
if (effectiveEdges || store.relationships) {
|
|
41
|
+
const typeIds = effectiveEdges ? subjects.flatMap(id => effectiveEdges.types.get(id) ?? []) : store.relationships?.getRelated(baseId, RelationshipType.DefinesByType, 'inverse') ?? [];
|
|
31
42
|
for (const typeId of typeIds) {
|
|
32
43
|
let typeClassRefs;
|
|
33
|
-
if (
|
|
44
|
+
if (effectiveEdges) {
|
|
45
|
+
typeClassRefs = effectiveEdges.references.get(typeId);
|
|
46
|
+
}
|
|
47
|
+
else if (store.onDemandClassificationMap) {
|
|
34
48
|
typeClassRefs = store.onDemandClassificationMap.get(typeId);
|
|
35
49
|
}
|
|
36
50
|
else {
|
|
37
|
-
const related = store.relationships
|
|
51
|
+
const related = store.relationships?.getRelated(typeId, RelationshipType.AssociatesClassification, 'inverse') ?? [];
|
|
38
52
|
if (related.length > 0)
|
|
39
53
|
typeClassRefs = related;
|
|
40
54
|
}
|
|
@@ -43,8 +57,16 @@ export function extractClassificationsOnDemand(store, entityId) {
|
|
|
43
57
|
}
|
|
44
58
|
}
|
|
45
59
|
}
|
|
60
|
+
const authoredRefIds = !store.source?.length && overlayEdges
|
|
61
|
+
? subjects.flatMap(id => [...(overlayEdges.references.get(id) ?? []),
|
|
62
|
+
...(overlayEdges.types.get(id) ?? []).flatMap(typeId => overlayEdges.references.get(typeId) ?? [])])
|
|
63
|
+
: [];
|
|
64
|
+
const authored = authoredRefIds.flatMap(id => {
|
|
65
|
+
const info = classificationInfoForRef(store, id, view);
|
|
66
|
+
return info ? [info] : [];
|
|
67
|
+
});
|
|
46
68
|
if (!classRefIds || classRefIds.length === 0)
|
|
47
|
-
return
|
|
69
|
+
return authored;
|
|
48
70
|
if (!store.source?.length) {
|
|
49
71
|
// Server-parsed / source-empty store: no source bytes to decode the
|
|
50
72
|
// classification reference's own attributes. The relationship graph
|
|
@@ -71,7 +93,7 @@ export function extractClassificationsOnDemand(store, entityId) {
|
|
|
71
93
|
// as its graph. Repeated relationships emit repeated rows while
|
|
72
94
|
// the graph deduplicates edges, so their counts need not match.
|
|
73
95
|
if (resolved.length > 0)
|
|
74
|
-
return resolved;
|
|
96
|
+
return [...(overlayEdges?.unresolvedSource ? resolved.map(() => ({ unresolved: true })) : resolved), ...authored];
|
|
75
97
|
}
|
|
76
98
|
// No forwarded resolved data. Turning an id into
|
|
77
99
|
// system/identification/name/path needs raw STEP bytes
|
|
@@ -81,61 +103,67 @@ export function extractClassificationsOnDemand(store, entityId) {
|
|
|
81
103
|
// Surface one unresolved marker per resolved id instead, so callers
|
|
82
104
|
// — the IDS bridge in particular — can tell "classified, but this
|
|
83
105
|
// data source can't say more" from "none".
|
|
84
|
-
return classRefIds.map(() => ({ unresolved: true }));
|
|
106
|
+
return [...classRefIds.map(() => ({ unresolved: true })), ...authored];
|
|
85
107
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
// IfcClassification: [Source, Edition, EditionDate, Name, Description, Location, ReferenceTokens]
|
|
130
|
-
results.push({
|
|
131
|
-
system: typeof attrs[3] === 'string' ? attrs[3] : undefined,
|
|
132
|
-
name: typeof attrs[3] === 'string' ? attrs[3] : undefined,
|
|
133
|
-
description: typeof attrs[4] === 'string' ? attrs[4] : undefined,
|
|
134
|
-
location: typeof attrs[5] === 'string' ? attrs[5] : undefined,
|
|
135
|
-
});
|
|
108
|
+
return classRefIds.flatMap(id => {
|
|
109
|
+
const info = classificationInfoForRef(store, id, view);
|
|
110
|
+
return info ? [info] : [];
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/** One source/authored reference, through the same effective record and bounded chain reader. */
|
|
114
|
+
function classificationInfoForRef(store, classRefId, view) {
|
|
115
|
+
const entity = classificationRecord(store, classRefId, view);
|
|
116
|
+
// The association proves membership even when its root target is missing.
|
|
117
|
+
// Losing that evidence would assert an authoritative unclassified result.
|
|
118
|
+
if (!entity)
|
|
119
|
+
return { unresolved: true };
|
|
120
|
+
const typeUpper = entity.type.toUpperCase();
|
|
121
|
+
const attrs = entity.attributes || [];
|
|
122
|
+
const unreadableSource = !store.source?.length && !view?.getNewEntity(classRefId);
|
|
123
|
+
if (typeUpper === 'IFCCLASSIFICATIONREFERENCE') {
|
|
124
|
+
// IfcClassificationReference: [Location, Identification, Name, ReferencedSource, Description, Sort]
|
|
125
|
+
const info = {
|
|
126
|
+
location: typeof attrs[0] === 'string' ? attrs[0] : undefined,
|
|
127
|
+
identification: typeof attrs[1] === 'string' ? attrs[1] : undefined,
|
|
128
|
+
name: typeof attrs[2] === 'string' ? attrs[2] : undefined,
|
|
129
|
+
description: typeof attrs[4] === 'string' ? attrs[4] : undefined,
|
|
130
|
+
...(unreadableSource ? { unresolved: true } : {}),
|
|
131
|
+
};
|
|
132
|
+
// Walk up to find the classification system name
|
|
133
|
+
const referencedSourceId = getReference(attrs[3]);
|
|
134
|
+
if (referencedSourceId) {
|
|
135
|
+
const path = walkClassificationChain(store, new EntityExtractor(store.source), referencedSourceId, view);
|
|
136
|
+
info.system = path.systemName;
|
|
137
|
+
info.path = path.codes;
|
|
138
|
+
// A dangling link, an unreadable entity, or an unexpected
|
|
139
|
+
// type broke the walk before it reached an IfcClassification
|
|
140
|
+
// root (#5290) — distinct from a `ReferencedSource` that was
|
|
141
|
+
// never there to begin with, which `path.chainUnresolved`
|
|
142
|
+
// leaves `false` (see the function doc). `info.system` stays
|
|
143
|
+
// `undefined` either way, so without this flag
|
|
144
|
+
// `resolveClassifications` cannot tell "chain could not be
|
|
145
|
+
// resolved" from "chain resolved to no system", and flattens
|
|
146
|
+
// both to a confident empty system (`c.system || ''`) — a
|
|
147
|
+
// definite mismatch, not the unresolved-chain result this
|
|
148
|
+
// marks it for.
|
|
149
|
+
if (path.chainUnresolved)
|
|
150
|
+
info.unresolved = true;
|
|
136
151
|
}
|
|
152
|
+
return info;
|
|
137
153
|
}
|
|
138
|
-
|
|
154
|
+
else if (typeUpper === 'IFCCLASSIFICATION') {
|
|
155
|
+
// IfcClassification: [Source, Edition, EditionDate, Name, Description, Location, ReferenceTokens]
|
|
156
|
+
return {
|
|
157
|
+
system: typeof attrs[3] === 'string' ? attrs[3] : undefined,
|
|
158
|
+
name: typeof attrs[3] === 'string' ? attrs[3] : undefined,
|
|
159
|
+
description: typeof attrs[4] === 'string' ? attrs[4] : undefined,
|
|
160
|
+
location: typeof attrs[5] === 'string' ? attrs[5] : undefined,
|
|
161
|
+
...(unreadableSource ? { unresolved: true } : {}),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// An association aimed at a non-IfcClassificationSelect entity is broken,
|
|
165
|
+
// rather than proof that the subject has no classification membership.
|
|
166
|
+
return { unresolved: true };
|
|
139
167
|
}
|
|
140
168
|
/**
|
|
141
169
|
* List the distinct classification system names present in a model —
|
|
@@ -152,12 +180,12 @@ export function extractClassificationsOnDemand(store, entityId) {
|
|
|
152
180
|
* A model can carry SEVERAL systems at once (e.g. Uniclass, OmniClass, and
|
|
153
181
|
* a national system) — this returns all of them, sorted alphabetically.
|
|
154
182
|
*/
|
|
155
|
-
export function extractClassificationSystemsOnDemand(store) {
|
|
183
|
+
export function extractClassificationSystemsOnDemand(store, view) {
|
|
156
184
|
// @raw-entity-enumeration-ok this parser API enumerates systems in the parsed source; live viewer sessions use effectiveClassificationSystems
|
|
157
|
-
const ids = store.entityIndex.byType.get('IFCCLASSIFICATION');
|
|
185
|
+
const ids = view ? classificationSystemIds(store, view) : store.entityIndex.byType.get('IFCCLASSIFICATION');
|
|
158
186
|
if (!ids || ids.length === 0)
|
|
159
187
|
return { names: [], unresolved: false };
|
|
160
|
-
if (!store.source?.length) {
|
|
188
|
+
if (!store.source?.length && !view) {
|
|
161
189
|
// The model has classification systems (confirmed by the byType
|
|
162
190
|
// index), but reading their Name needs raw STEP bytes this
|
|
163
191
|
// server-parsed store doesn't carry. `[]` alone would be
|
|
@@ -166,20 +194,25 @@ export function extractClassificationSystemsOnDemand(store) {
|
|
|
166
194
|
}
|
|
167
195
|
const extractor = new EntityExtractor(store.source);
|
|
168
196
|
const names = new Set();
|
|
197
|
+
let unresolved = false;
|
|
169
198
|
for (const id of ids) {
|
|
170
199
|
// @raw-entity-enumeration-ok each source classification id needs its STEP byte span to decode Name
|
|
171
200
|
const ref = store.entityIndex.byId.get(id);
|
|
172
|
-
if (!ref)
|
|
201
|
+
if (!ref && !view?.getNewEntity(id))
|
|
173
202
|
continue;
|
|
174
|
-
const entity = extractor.extractEntity(ref);
|
|
175
|
-
if (!entity)
|
|
203
|
+
const entity = view ? classificationRecord(store, id, view) : extractor.extractEntity(ref);
|
|
204
|
+
if (!entity) {
|
|
205
|
+
unresolved = true;
|
|
176
206
|
continue;
|
|
207
|
+
}
|
|
177
208
|
// IfcClassification: [Source, Edition, EditionDate, Name, ...]
|
|
178
209
|
const name = entity.attributes?.[3];
|
|
179
210
|
if (typeof name === 'string' && name.length > 0)
|
|
180
211
|
names.add(name);
|
|
212
|
+
else if (!store.source?.length && name === undefined)
|
|
213
|
+
unresolved = true;
|
|
181
214
|
}
|
|
182
|
-
return { names: Array.from(names).sort(), unresolved
|
|
215
|
+
return { names: Array.from(names).sort(), unresolved };
|
|
183
216
|
}
|
|
184
217
|
/**
|
|
185
218
|
* Walk up the IfcClassificationReference chain to find the root IfcClassification system.
|
|
@@ -197,10 +230,11 @@ export function extractClassificationSystemsOnDemand(store) {
|
|
|
197
230
|
* `chainUnresolved: false`): the two are otherwise byte-identical, both
|
|
198
231
|
* returning `systemName: undefined`.
|
|
199
232
|
*/
|
|
200
|
-
function walkClassificationChain(store, extractor, startId) {
|
|
233
|
+
function walkClassificationChain(store, extractor, startId, view) {
|
|
201
234
|
const codes = [];
|
|
202
235
|
let currentId = startId;
|
|
203
236
|
const visited = new Set();
|
|
237
|
+
let unreadableSourceReference = false;
|
|
204
238
|
while (currentId !== undefined) {
|
|
205
239
|
if (visited.has(currentId)) {
|
|
206
240
|
return { codes, chainUnresolved: true };
|
|
@@ -208,9 +242,9 @@ function walkClassificationChain(store, extractor, startId) {
|
|
|
208
242
|
visited.add(currentId);
|
|
209
243
|
// @raw-entity-enumeration-ok chain cursor follows source ReferencedSource links and decodes each STEP record
|
|
210
244
|
const ref = store.entityIndex.byId.get(currentId);
|
|
211
|
-
if (!ref)
|
|
245
|
+
if (!ref && !view?.getNewEntity(currentId))
|
|
212
246
|
return { codes, chainUnresolved: true };
|
|
213
|
-
const entity = extractor.extractEntity(ref);
|
|
247
|
+
const entity = view ? classificationRecord(store, currentId, view) : extractor.extractEntity(ref);
|
|
214
248
|
if (!entity)
|
|
215
249
|
return { codes, chainUnresolved: true };
|
|
216
250
|
const typeUpper = entity.type.toUpperCase();
|
|
@@ -218,15 +252,16 @@ function walkClassificationChain(store, extractor, startId) {
|
|
|
218
252
|
if (typeUpper === 'IFCCLASSIFICATION') {
|
|
219
253
|
// Root: IfcClassification [Source, Edition, EditionDate, Name, ...]
|
|
220
254
|
const systemName = typeof attrs[3] === 'string' ? attrs[3] : undefined;
|
|
221
|
-
return { systemName, codes, chainUnresolved:
|
|
255
|
+
return { systemName, codes, chainUnresolved: unreadableSourceReference || (!store.source?.length && systemName === undefined && !view?.getNewEntity(currentId)) };
|
|
222
256
|
}
|
|
223
257
|
if (typeUpper === 'IFCCLASSIFICATIONREFERENCE') {
|
|
258
|
+
unreadableSourceReference ||= !store.source?.length && !view?.getNewEntity(currentId);
|
|
224
259
|
// IfcClassificationReference [Location, Identification, Name, ReferencedSource, ...]
|
|
225
260
|
const code = typeof attrs[1] === 'string' ? attrs[1] :
|
|
226
261
|
typeof attrs[2] === 'string' ? attrs[2] : undefined;
|
|
227
262
|
if (code)
|
|
228
263
|
codes.unshift(code);
|
|
229
|
-
currentId =
|
|
264
|
+
currentId = getReference(attrs[3]);
|
|
230
265
|
}
|
|
231
266
|
else {
|
|
232
267
|
return { codes, chainUnresolved: true };
|
|
@@ -235,6 +270,6 @@ function walkClassificationChain(store, extractor, startId) {
|
|
|
235
270
|
// `currentId` became `undefined`: `ReferencedSource` was omitted (`$`).
|
|
236
271
|
// Schema-legal, not malformed — an `IfcClassificationReference` is
|
|
237
272
|
// allowed to not name a system.
|
|
238
|
-
return { codes, chainUnresolved:
|
|
273
|
+
return { codes, chainUnresolved: unreadableSourceReference };
|
|
239
274
|
}
|
|
240
275
|
//# sourceMappingURL=classification-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classification-resolver.js","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"classification-resolver.js","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ export declare function readRefId(buffer: Uint8Array, pos: number, end: number):
|
|
|
59
59
|
/** Read a list of entity refs (#id1,#id2,...) or a single #id. Returns [ids, newPos]. */
|
|
60
60
|
export declare function readRefList(buffer: Uint8Array, pos: number, end: number): [number[], number];
|
|
61
61
|
/**
|
|
62
|
-
* Batch extract GlobalId
|
|
62
|
+
* Batch extract schema-declared GlobalId and Name for many entities using
|
|
63
63
|
* only 2 TextDecoder.decode() calls total (one for all GlobalIds, one for all Names).
|
|
64
64
|
*
|
|
65
65
|
* This is ~100x faster than calling extractEntity() per entity for large batches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnar-parser-attributes.d.ts","sourceRoot":"","sources":["../src/columnar-parser-attributes.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"columnar-parser-attributes.d.ts","sourceRoot":"","sources":["../src/columnar-parser-attributes.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAiB5C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAuDzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,OAAO,CAWT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBhG;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCxF;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAuB5F;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC7C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,SAAS,EAAE,EACjB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC,CAwHtE"}
|