@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
|
@@ -0,0 +1,122 @@
|
|
|
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 { RelationshipType } from '@ifc-lite/data';
|
|
5
|
+
import { getReference } from './attribute-helpers.js';
|
|
6
|
+
import { normalizeIfcTypeName } from './ifc-schema.js';
|
|
7
|
+
import { effectiveMetadataRecord } from './effective-metadata-record.js';
|
|
8
|
+
import { resolveEffectiveRelationshipOverlay } from './effective-relationship-overlay.js';
|
|
9
|
+
const cache = new WeakMap();
|
|
10
|
+
function effectiveEdges(store, view) {
|
|
11
|
+
const revision = view.getMutationRevision();
|
|
12
|
+
const previous = cache.get(store)?.get(view);
|
|
13
|
+
if (previous?.revision === revision && previous.source === store.source)
|
|
14
|
+
return previous.edges;
|
|
15
|
+
const kinds = ['IFCRELASSOCIATESDOCUMENT', 'IFCRELDEFINESBYTYPE'];
|
|
16
|
+
// @raw-entity-enumeration-ok native source relationship ids feed the canonical effective relationship reader
|
|
17
|
+
const sourceIds = kinds.flatMap(type => store.entityIndex.byType.get(type) ?? []);
|
|
18
|
+
sourceIds.push(...(view.getTypeMutations?.().keys() ?? []));
|
|
19
|
+
const overlay = resolveEffectiveRelationshipOverlay(store.source?.length ? store : { ...store, getEntity: () => null }, {
|
|
20
|
+
createdEntities: () => view.getNewEntities(), mutatedEntityIds: () => sourceIds,
|
|
21
|
+
namedAttributes: id => view.getAttributeMutationsForEntity(id).map(row => [row.name, row.value]),
|
|
22
|
+
positionalAttributes: id => view.getPositionalMutationsForEntity(id) ?? [],
|
|
23
|
+
entityType: id => view.getTypeMutations?.().get(id)?.newType,
|
|
24
|
+
isDeleted: id => view.isDeleted(id),
|
|
25
|
+
});
|
|
26
|
+
const edges = { references: new Map(), types: new Map() };
|
|
27
|
+
for (const relation of overlay.relationships) {
|
|
28
|
+
const type = relation.relationshipType.toUpperCase();
|
|
29
|
+
const target = type === kinds[0] ? edges.references : type === kinds[1] ? edges.types : null;
|
|
30
|
+
if (!target)
|
|
31
|
+
continue;
|
|
32
|
+
for (const subject of relation.related) {
|
|
33
|
+
if (view.isDeleted(subject))
|
|
34
|
+
continue;
|
|
35
|
+
const values = target.get(subject) ?? [];
|
|
36
|
+
for (const id of relation.relating)
|
|
37
|
+
if (!values.includes(id))
|
|
38
|
+
values.push(id);
|
|
39
|
+
target.set(subject, values);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
let modelCache = cache.get(store);
|
|
43
|
+
if (!modelCache) {
|
|
44
|
+
modelCache = new WeakMap();
|
|
45
|
+
cache.set(store, modelCache);
|
|
46
|
+
}
|
|
47
|
+
modelCache.set(view, { revision, source: store.source, edges });
|
|
48
|
+
return edges;
|
|
49
|
+
}
|
|
50
|
+
function forwardedReferences(store, subjects) {
|
|
51
|
+
const references = (id) => store.onDemandDocumentMap
|
|
52
|
+
? store.onDemandDocumentMap.get(id) ?? []
|
|
53
|
+
: store.relationships?.getRelated(id, RelationshipType.AssociatesDocument, 'inverse') ?? [];
|
|
54
|
+
const types = subjects.flatMap(id => store.relationships?.getRelated(id, RelationshipType.DefinesByType, 'inverse') ?? []);
|
|
55
|
+
return [...subjects, ...types].flatMap(references);
|
|
56
|
+
}
|
|
57
|
+
const text = (value) => typeof value === 'string' ? value : undefined;
|
|
58
|
+
function informationFields(attributes) {
|
|
59
|
+
return { identification: text(attributes[0]), name: text(attributes[1]), description: text(attributes[2]),
|
|
60
|
+
location: text(attributes[3]), purpose: text(attributes[4]), intendedUse: text(attributes[5]),
|
|
61
|
+
revision: text(attributes[7]), confidentiality: text(attributes[15]) };
|
|
62
|
+
}
|
|
63
|
+
function documentRecord(store, id, view) {
|
|
64
|
+
const record = effectiveMetadataRecord(store, id, view);
|
|
65
|
+
const identity = { expressId: id, type: record ? normalizeIfcTypeName(record.type) : undefined };
|
|
66
|
+
if (!record)
|
|
67
|
+
return { ...identity, unresolved: true };
|
|
68
|
+
const attrs = record.attributes;
|
|
69
|
+
const unreadable = !store.source?.length && !view?.getNewEntity(id);
|
|
70
|
+
if (record.type.toUpperCase() === 'IFCDOCUMENTINFORMATION') {
|
|
71
|
+
return { ...identity, ...informationFields(attrs), ...(unreadable ? { unresolved: true } : {}) };
|
|
72
|
+
}
|
|
73
|
+
if (record.type.toUpperCase() !== 'IFCDOCUMENTREFERENCE')
|
|
74
|
+
return { ...identity, unresolved: true };
|
|
75
|
+
const result = { ...identity, location: text(attrs[0]), identification: text(attrs[1]), name: text(attrs[2]),
|
|
76
|
+
description: store.schemaVersion === 'IFC2X3' ? undefined : text(attrs[3]), ...(unreadable ? { unresolved: true } : {}) };
|
|
77
|
+
// IFC4 has exactly one ReferencedDocument hop. No recursive document walk.
|
|
78
|
+
const target = store.schemaVersion === 'IFC2X3' ? null : getReference(attrs[4]);
|
|
79
|
+
if (target !== null && target !== undefined) {
|
|
80
|
+
result.referencedDocumentId = target;
|
|
81
|
+
const info = effectiveMetadataRecord(store, target, view);
|
|
82
|
+
if (info?.type.toUpperCase() === 'IFCDOCUMENTINFORMATION') {
|
|
83
|
+
const fields = informationFields(info.attributes);
|
|
84
|
+
result.identification ??= fields.identification;
|
|
85
|
+
result.name ??= fields.name;
|
|
86
|
+
result.description ??= fields.description;
|
|
87
|
+
result.location ??= fields.location;
|
|
88
|
+
result.purpose = fields.purpose;
|
|
89
|
+
result.intendedUse = fields.intendedUse;
|
|
90
|
+
result.revision = fields.revision;
|
|
91
|
+
result.confidentiality = fields.confidentiality;
|
|
92
|
+
if (!store.source?.length && !view?.getNewEntity(target))
|
|
93
|
+
result.unresolved = true;
|
|
94
|
+
}
|
|
95
|
+
else
|
|
96
|
+
result.unresolved = true;
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
/** One canonical native document reader for Properties, SDK and selected evidence (#7187). */
|
|
101
|
+
export function extractDocumentsOnDemand(store, entityId, view) {
|
|
102
|
+
if (view?.isDeleted(entityId))
|
|
103
|
+
return [];
|
|
104
|
+
const baseId = view?.resolveBaseEntityId?.(entityId) ?? entityId;
|
|
105
|
+
const subjects = baseId === entityId ? [entityId] : [entityId, baseId];
|
|
106
|
+
const edges = view ? effectiveEdges(store, view) : null;
|
|
107
|
+
const live = edges ? [...subjects, ...subjects.flatMap(id => edges.types.get(id) ?? [])]
|
|
108
|
+
.flatMap(id => edges.references.get(id) ?? []) : [];
|
|
109
|
+
if (store.source?.length) {
|
|
110
|
+
return [...new Set(edges ? live : forwardedReferences(store, subjects))].map(id => documentRecord(store, id, view));
|
|
111
|
+
}
|
|
112
|
+
// Retained source closures cannot reconstruct absent bytes. Forwarded graph
|
|
113
|
+
// rows remain known source-origin markers; complete authored rows are separate.
|
|
114
|
+
const original = new Set(forwardedReferences(store, subjects));
|
|
115
|
+
const markers = [...original].map(id => {
|
|
116
|
+
// @raw-entity-enumeration-ok class identity of a forwarded immutable source-origin marker, not a current entity enumeration
|
|
117
|
+
const type = store.entityIndex.byId.get(id)?.type ?? store.entities.getTypeName(id);
|
|
118
|
+
return { expressId: id, type: normalizeIfcTypeName(type), unresolved: true, sourceOrigin: true };
|
|
119
|
+
});
|
|
120
|
+
return [...markers, ...[...new Set(live)].filter(id => !original.has(id)).map(id => documentRecord(store, id, view))];
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=document-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-resolver.js","sourceRoot":"","sources":["../src/document-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IfcAttributeValue } from '@ifc-lite/data';
|
|
2
|
+
import type { SchemaEntityNameSnapshot } from './schema-entity-name.js';
|
|
2
3
|
/** The pending edits a read model must fold into one entity record. */
|
|
3
4
|
export interface EntityRecordEdits {
|
|
4
5
|
/** Class a queued `setEntityType` gives the entity, when present. */
|
|
@@ -20,7 +21,7 @@ export interface EffectiveEntityRecord {
|
|
|
20
21
|
* a resolvable source layout export keeps the list verbatim (keyword-only
|
|
21
22
|
* swap), and so does this.
|
|
22
23
|
*/
|
|
23
|
-
export declare function retypedAttributes(sourceType: string, attributes: readonly unknown[], effectiveType: string, targetNames: readonly string[], schemaVersion: string | undefined): unknown[];
|
|
24
|
+
export declare function retypedAttributes(sourceType: string, attributes: readonly unknown[], effectiveType: string, targetNames: readonly string[], schemaVersion: string | undefined, snapshot?: SchemaEntityNameSnapshot): unknown[];
|
|
24
25
|
/**
|
|
25
26
|
* One entity record as export will write it: retype first (name-based
|
|
26
27
|
* re-layout), then named edits resolved against the effective class, then
|
|
@@ -31,5 +32,5 @@ export declare function retypedAttributes(sourceType: string, attributes: readon
|
|
|
31
32
|
export declare function resolveEffectiveEntityRecord(entity: {
|
|
32
33
|
type: string;
|
|
33
34
|
attributes: readonly unknown[];
|
|
34
|
-
}, edits: EntityRecordEdits, schemaVersion: string | undefined): EffectiveEntityRecord;
|
|
35
|
+
}, edits: EntityRecordEdits, schemaVersion: string | undefined, snapshot?: SchemaEntityNameSnapshot): EffectiveEntityRecord;
|
|
35
36
|
//# sourceMappingURL=effective-entity-record.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAExD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,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,EACjC,QAAQ,CAAC,EAAE,wBAAwB,GAClC,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,EACjC,QAAQ,CAAC,EAAE,wBAAwB,GAClC,qBAAqB,CAYvB"}
|
|
@@ -9,10 +9,10 @@ import { getAttributeNamesForSchema, normalizeIfcTypeName } from './ifc-schema.j
|
|
|
9
9
|
* a resolvable source layout export keeps the list verbatim (keyword-only
|
|
10
10
|
* swap), and so does this.
|
|
11
11
|
*/
|
|
12
|
-
export function retypedAttributes(sourceType, attributes, effectiveType, targetNames, schemaVersion) {
|
|
12
|
+
export function retypedAttributes(sourceType, attributes, effectiveType, targetNames, schemaVersion, snapshot) {
|
|
13
13
|
if (effectiveType.toUpperCase() === sourceType.toUpperCase())
|
|
14
14
|
return [...attributes];
|
|
15
|
-
const sourceNames = getAttributeNamesForSchema(sourceType, schemaVersion);
|
|
15
|
+
const sourceNames = getAttributeNamesForSchema(sourceType, schemaVersion, snapshot);
|
|
16
16
|
if (sourceNames.length === 0)
|
|
17
17
|
return [...attributes];
|
|
18
18
|
const byName = new Map(sourceNames.map((name, index) => [name, attributes[index]]));
|
|
@@ -25,11 +25,11 @@ export function retypedAttributes(sourceType, attributes, effectiveType, targetN
|
|
|
25
25
|
* surface (CLI, MCP, viewer) must describe a created or edited entity
|
|
26
26
|
* through this, or it disagrees with the saved file (#5009 review).
|
|
27
27
|
*/
|
|
28
|
-
export function resolveEffectiveEntityRecord(entity, edits, schemaVersion) {
|
|
28
|
+
export function resolveEffectiveEntityRecord(entity, edits, schemaVersion, snapshot) {
|
|
29
29
|
const type = edits.retype ? normalizeIfcTypeName(edits.retype) : entity.type;
|
|
30
|
-
const names = getAttributeNamesForSchema(type, schemaVersion);
|
|
30
|
+
const names = getAttributeNamesForSchema(type, schemaVersion, snapshot);
|
|
31
31
|
const attributes = names.length > 0
|
|
32
|
-
? retypedAttributes(entity.type, entity.attributes, type, names, schemaVersion)
|
|
32
|
+
? retypedAttributes(entity.type, entity.attributes, type, names, schemaVersion, snapshot)
|
|
33
33
|
: [...entity.attributes];
|
|
34
34
|
for (const [name, value] of edits.named) {
|
|
35
35
|
const index = names.indexOf(name);
|
|
@@ -1 +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;
|
|
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;AAmBnF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,UAA8B,EAC9B,aAAqB,EACrB,WAA8B,EAC9B,aAAiC,EACjC,QAAmC;IAEnC,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,EAAE,QAAQ,CAAC,CAAC;IACpF,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,EACjC,QAAmC;IAEnC,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,EAAE,QAAQ,CAAC,CAAC;IACxE,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,EAAE,QAAQ,CAAC;QACzF,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,23 @@
|
|
|
1
|
+
import type { EffectiveEntityOverlay, IfcAttributeValue } from '@ifc-lite/data';
|
|
2
|
+
import type { IfcDataStore } from './columnar-parser.js';
|
|
3
|
+
import { type EffectiveEntityRecord } from './effective-entity-record.js';
|
|
4
|
+
export interface MetadataReadView extends EffectiveEntityOverlay {
|
|
5
|
+
getNewEntities(): ReadonlyArray<{
|
|
6
|
+
readonly expressId: number;
|
|
7
|
+
readonly type: string;
|
|
8
|
+
readonly attributes: IfcAttributeValue[];
|
|
9
|
+
}>;
|
|
10
|
+
getNewEntity(expressId: number): {
|
|
11
|
+
readonly type: string;
|
|
12
|
+
readonly attributes: IfcAttributeValue[];
|
|
13
|
+
} | null;
|
|
14
|
+
getPositionalMutationsForEntity(expressId: number): ReadonlyMap<number, IfcAttributeValue> | null;
|
|
15
|
+
getAttributeMutationsForEntity(expressId: number): ReadonlyArray<{
|
|
16
|
+
name: string;
|
|
17
|
+
value: string;
|
|
18
|
+
}>;
|
|
19
|
+
getMutationRevision(): number;
|
|
20
|
+
resolveBaseEntityId?(expressId: number): number;
|
|
21
|
+
}
|
|
22
|
+
export declare function effectiveMetadataRecord(store: IfcDataStore, expressId: number, view?: MetadataReadView): EffectiveEntityRecord | null;
|
|
23
|
+
//# sourceMappingURL=effective-metadata-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-metadata-record.d.ts","sourceRoot":"","sources":["../src/effective-metadata-record.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAKxG,MAAM,WAAW,gBAAiB,SAAQ,sBAAsB;IAC9D,cAAc,IAAI,aAAa,CAAC;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC,CAAC;IACjI,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5G,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAClG,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,mBAAmB,IAAI,MAAM,CAAC;IAC9B,mBAAmB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACjD;AAYD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,qBAAqB,GAAG,IAAI,CAwBrI"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 { resolveEffectiveEntityRecord } from './effective-entity-record.js';
|
|
5
|
+
import { getEntityRefFromStore } from './columnar-parser-root-attributes.js';
|
|
6
|
+
import { normalizeIfcTypeName } from './ifc-schema.js';
|
|
7
|
+
import { namedMetadataValue, positionalMetadataValue } from './metadata-edit-value.js';
|
|
8
|
+
const records = new WeakMap();
|
|
9
|
+
/** Retained native indexes provide resource types absent from the entity table.
|
|
10
|
+
* Only the type is read: source-free attributes must still come from current edits. */
|
|
11
|
+
function sourceFreeMetadataType(store, expressId) {
|
|
12
|
+
const tableType = store.entities.getTypeName(expressId);
|
|
13
|
+
return tableType && tableType !== 'Unknown' ? tableType
|
|
14
|
+
: getEntityRefFromStore(store, expressId)?.type ?? tableType;
|
|
15
|
+
}
|
|
16
|
+
export function effectiveMetadataRecord(store, expressId, view) {
|
|
17
|
+
if (view?.isDeleted(expressId))
|
|
18
|
+
return null;
|
|
19
|
+
let modelRecords = records.get(store);
|
|
20
|
+
if (!modelRecords) {
|
|
21
|
+
modelRecords = new WeakMap();
|
|
22
|
+
records.set(store, modelRecords);
|
|
23
|
+
}
|
|
24
|
+
const revision = view?.getMutationRevision();
|
|
25
|
+
let memo = view ? modelRecords.get(view) : undefined;
|
|
26
|
+
if (view && (!memo || memo.revision !== revision || memo.source !== store.source)) {
|
|
27
|
+
memo = { revision: revision, source: store.source, rows: new Map() };
|
|
28
|
+
modelRecords.set(view, memo);
|
|
29
|
+
}
|
|
30
|
+
if (memo?.rows.has(expressId))
|
|
31
|
+
return memo.rows.get(expressId) ?? null;
|
|
32
|
+
const created = view?.getNewEntity(expressId);
|
|
33
|
+
// Source-empty stores cannot reveal source attributes through a stale accessor closure.
|
|
34
|
+
// Named/positional edits may still supply a known field on an otherwise unreadable row.
|
|
35
|
+
const base = created ? { ...created, attributes: created.attributes.map(positionalMetadataValue) } : (store.source?.length ? store.getEntity(expressId) : {
|
|
36
|
+
type: sourceFreeMetadataType(store, expressId), attributes: [],
|
|
37
|
+
});
|
|
38
|
+
if (!base)
|
|
39
|
+
return null;
|
|
40
|
+
const retype = view?.getTypeMutations?.().get(expressId)?.newType;
|
|
41
|
+
const result = resolveEffectiveEntityRecord(base, {
|
|
42
|
+
retype,
|
|
43
|
+
named: view?.getAttributeMutationsForEntity(expressId).map(row => [row.name, namedMetadataValue(row.value, retype ?? base.type, row.name, store.schemaVersion)]) ?? [],
|
|
44
|
+
positional: [...(view?.getPositionalMutationsForEntity(expressId) ?? [])].map(([index, value]) => [index, positionalMetadataValue(value)]),
|
|
45
|
+
}, store.schemaVersion);
|
|
46
|
+
const normalized = { ...result, type: normalizeIfcTypeName(result.type) };
|
|
47
|
+
memo?.rows.set(expressId, normalized);
|
|
48
|
+
return normalized;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=effective-metadata-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-metadata-record.js","sourceRoot":"","sources":["../src/effective-metadata-record.ts"],"names":[],"mappings":"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"}
|
package/dist/entity-scanner.d.ts
CHANGED
|
@@ -61,11 +61,10 @@ export interface EntityScanResult {
|
|
|
61
61
|
* which is the path the viewer takes for every SAB-backed worker load of a
|
|
62
62
|
* file at or above 2 MB (`useIfcLoader.ts`'s `geometryWillEmitEntityIndex`).
|
|
63
63
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* the number is not — a zero on THAT path still is not proof of none.
|
|
64
|
+
* `wasm` reads it off the array `scanEntitiesFast`/`scanEntitiesFastBytes`
|
|
65
|
+
* return (an own `oversizedIdCount` property, #7393). A wasm build from
|
|
66
|
+
* before that property existed, or a caller-supplied `wasmApi` that returns
|
|
67
|
+
* a plain array, reads as `0` -- not proof of none on that path.
|
|
69
68
|
*/
|
|
70
69
|
oversizedIdCount: number;
|
|
71
70
|
/**
|
|
@@ -83,9 +82,8 @@ export interface EntityScanResult {
|
|
|
83
82
|
* (`PreScannedEntityIndex.malformedRecordCount`, #3790) -- the geometry
|
|
84
83
|
* pre-pass path the viewer takes for every SAB-backed worker load at or
|
|
85
84
|
* above 2 MB. A producer built before that field sends none, and reads as
|
|
86
|
-
* `0`. `wasm`
|
|
87
|
-
*
|
|
88
|
-
* so a `0` on THAT path is not proof of a clean scan.
|
|
85
|
+
* `0`. `wasm` reads it off the returned array's own `malformedRecordCount`
|
|
86
|
+
* property (#7393), with the same older-build caveat as `oversizedIdCount`.
|
|
89
87
|
*/
|
|
90
88
|
malformedRecordCount: number;
|
|
91
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-scanner.d.ts","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAyD,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAI/H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC;IACtD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB
|
|
1
|
+
{"version":3,"file":"entity-scanner.d.ts","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAyD,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAI/H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC;IACtD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;;OAiBG;IACH,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAMD,oFAAoF;AACpF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,iBAAiB,EACvC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,GAAG;IAAE,aAAa,CAAC,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAEtE;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,GAAG,iBAAiB,EACvC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AA+KD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEhE"}
|
package/dist/entity-scanner.js
CHANGED
|
@@ -69,19 +69,18 @@ async function scanEntities(buffer, options, keepColumns) {
|
|
|
69
69
|
const wasmScanFn = selectWasmScanFunction(options.wasmApi, uint8Buffer);
|
|
70
70
|
if (processed === 0 && wasmScanFn) {
|
|
71
71
|
try {
|
|
72
|
-
|
|
72
|
+
const raw = wasmScanFn();
|
|
73
|
+
entityRefs = normalizeWasmEntityRefs(raw);
|
|
73
74
|
processed = entityRefs.length;
|
|
74
75
|
scanPath = 'wasm';
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
oversizedIdCount = 0;
|
|
84
|
-
malformedRecordCount = 0;
|
|
76
|
+
// The Rust scan sets both counts as own properties of the array it
|
|
77
|
+
// returns (#7393). Always overwritten, never carried: the worker branch
|
|
78
|
+
// above may have run first, found zero refs, and set
|
|
79
|
+
// `malformedRecordCount` to 1 before falling through, and that number
|
|
80
|
+
// belongs to a scan whose result was discarded. A build without the
|
|
81
|
+
// properties reads as 0.
|
|
82
|
+
oversizedIdCount = readWasmScanCount(raw, 'oversizedIdCount');
|
|
83
|
+
malformedRecordCount = readWasmScanCount(raw, 'malformedRecordCount');
|
|
85
84
|
}
|
|
86
85
|
catch (error) {
|
|
87
86
|
console.warn('[IfcParser] WASM scan failed, falling back to TypeScript:', error);
|
|
@@ -90,6 +89,7 @@ async function scanEntities(buffer, options, keepColumns) {
|
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
if (processed === 0) {
|
|
92
|
+
scanPath = 'tokenizer'; // an empty worker/wasm result fell through: this scan's counts, not Rust's console (#7393)
|
|
93
93
|
const tokenizer = new StepTokenizer(uint8Buffer);
|
|
94
94
|
const yieldInterval = 5000;
|
|
95
95
|
const estimatedTotalEntities = Math.max(fileSizeMB * 13500, 10000);
|
|
@@ -111,12 +111,17 @@ async function scanEntities(buffer, options, keepColumns) {
|
|
|
111
111
|
oversizedIdCount = tokenizer.oversizedIdCount;
|
|
112
112
|
malformedRecordCount = tokenizer.malformedRecordCount;
|
|
113
113
|
}
|
|
114
|
+
// On the wasm path Rust already printed these exact sentences (its report
|
|
115
|
+
// sink, kept for direct `@ifc-lite/wasm` callers); printing them again here
|
|
116
|
+
// would log each refusal twice, so that path adds only `onDiagnostic` (#7393).
|
|
117
|
+
const consoleAlreadyReported = scanPath === 'wasm';
|
|
114
118
|
// A refused record is a record the caller will not find. Say so on both
|
|
115
119
|
// channels the loader already watches, rather than letting the model come
|
|
116
120
|
// back quietly short (#3395).
|
|
117
121
|
if (oversizedIdCount > 0) {
|
|
118
122
|
const message = `scan: skipped ${oversizedIdCount} record(s) with an express id above ${MAX_EXPRESS_ID} (#3395)`;
|
|
119
|
-
|
|
123
|
+
if (!consoleAlreadyReported)
|
|
124
|
+
console.warn(`[IfcParser] ${message}`);
|
|
120
125
|
options.onDiagnostic?.(message);
|
|
121
126
|
}
|
|
122
127
|
// Worse than the oversized-id case: this is not "one record the caller
|
|
@@ -141,7 +146,8 @@ async function scanEntities(buffer, options, keepColumns) {
|
|
|
141
146
|
const message = "scan: dropped a record with no terminating ';' (an unterminated quoted string, " +
|
|
142
147
|
'comment, or truncated file); the entities returned may be an incomplete view of ' +
|
|
143
148
|
'this file (#3695)';
|
|
144
|
-
|
|
149
|
+
if (!consoleAlreadyReported)
|
|
150
|
+
console.warn(`[IfcParser] ${message}`);
|
|
145
151
|
options.onDiagnostic?.(message);
|
|
146
152
|
}
|
|
147
153
|
// Independent of the branch above, not chained onto it (#3790 round 2).
|
|
@@ -201,6 +207,13 @@ function selectWasmScanFunction(api, uint8Buffer) {
|
|
|
201
207
|
}
|
|
202
208
|
return () => api.scanEntitiesFast?.(safeUtf8Decode(uint8Buffer));
|
|
203
209
|
}
|
|
210
|
+
/** A refusal count the Rust scan attached to its result array, or 0 (#7393). */
|
|
211
|
+
function readWasmScanCount(value, key) {
|
|
212
|
+
if (!isRecord(value))
|
|
213
|
+
return 0;
|
|
214
|
+
const count = readNumber(value, key);
|
|
215
|
+
return count !== undefined && count > 0 ? count : 0;
|
|
216
|
+
}
|
|
204
217
|
function normalizeWasmEntityRefs(value) {
|
|
205
218
|
if (!Array.isArray(value))
|
|
206
219
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-scanner.js","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAA6B,MAAM,6BAA6B,CAAC;AAC/H,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-scanner.js","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"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"}
|
package/dist/ifc-schema.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SchemaEntityNameSnapshot } from './schema-entity-name.js';
|
|
1
2
|
export declare const ENTITY_NAME_ALIASES: Record<string, string>;
|
|
2
3
|
/**
|
|
3
4
|
* Resolve an entity name through {@link ENTITY_NAME_ALIASES}, returning the
|
|
@@ -29,7 +30,7 @@ export declare function getAttributeNames(type: string): string[];
|
|
|
29
30
|
*/
|
|
30
31
|
export declare function getAttributeNamesAcrossSchemas(type: string): string[];
|
|
31
32
|
/** Attribute names in one model schema, falling back to the bundled union. */
|
|
32
|
-
export declare function getAttributeNamesForSchema(type: string, schema: string | undefined): string[];
|
|
33
|
+
export declare function getAttributeNamesForSchema(type: string, schema: string | undefined, snapshot?: SchemaEntityNameSnapshot): string[];
|
|
33
34
|
/**
|
|
34
35
|
* The declared EXPRESS type of one attribute (`IfcDoorPanelProperties.PanelOperation`
|
|
35
36
|
* → `IfcDoorPanelOperationEnum`) in one model schema, falling back to the IFC4
|
package/dist/ifc-schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-schema.d.ts","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ifc-schema.d.ts","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAkDhG,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBtD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAoED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,wBAAwB,GAAG,MAAM,EAAE,CASlI;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUzH;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3D"}
|
package/dist/ifc-schema.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { getCanonicalEntityName } from './schema-entity-name.js';
|
|
4
5
|
/**
|
|
5
6
|
* IFC Schema accessors — thin wrappers over the generated schema registry.
|
|
6
7
|
*
|
|
@@ -171,11 +172,11 @@ export function getAttributeNamesAcrossSchemas(type) {
|
|
|
171
172
|
return info ? [...info.attributes] : [];
|
|
172
173
|
}
|
|
173
174
|
/** Attribute names in one model schema, falling back to the bundled union. */
|
|
174
|
-
export function getAttributeNamesForSchema(type, schema) {
|
|
175
|
+
export function getAttributeNamesForSchema(type, schema, snapshot) {
|
|
175
176
|
const normalized = schema?.toUpperCase().replace(/[^A-Z0-9]/g, '');
|
|
176
177
|
if (normalized === 'IFC2X3' || normalized === 'IFC4' || normalized === 'IFC4X3') {
|
|
177
178
|
const registry = getSchemaRegistryForVersion(normalized);
|
|
178
|
-
const canonical =
|
|
179
|
+
const canonical = getCanonicalEntityName(registry, type, snapshot);
|
|
179
180
|
const attributes = canonical ? registry.entities[canonical]?.allAttributes : undefined;
|
|
180
181
|
if (attributes)
|
|
181
182
|
return attributes.map(attribute => attribute.name);
|
|
@@ -193,7 +194,7 @@ export function getAttributeTypeForSchema(type, attribute, schema) {
|
|
|
193
194
|
let attributes;
|
|
194
195
|
if (normalized === 'IFC2X3' || normalized === 'IFC4' || normalized === 'IFC4X3') {
|
|
195
196
|
const registry = getSchemaRegistryForVersion(normalized);
|
|
196
|
-
const canonical =
|
|
197
|
+
const canonical = getCanonicalEntityName(registry, type);
|
|
197
198
|
attributes = canonical ? registry.entities[canonical]?.allAttributes : undefined;
|
|
198
199
|
}
|
|
199
200
|
attributes ??= getAllAttributesForEntity(type);
|
package/dist/ifc-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-schema.js","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"ifc-schema.js","sourceRoot":"","sources":["../src/ifc-schema.ts"],"names":[],"mappings":"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"}
|