@ifc-lite/parser 1.1.7 → 1.2.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/LICENSE +373 -0
- package/README.md +1 -1
- package/dist/classification-extractor.js +3 -3
- package/dist/classification-extractor.js.map +1 -1
- package/dist/columnar-parser.d.ts +86 -2
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +440 -173
- package/dist/columnar-parser.js.map +1 -1
- package/dist/entity-extractor.d.ts.map +1 -1
- package/dist/entity-extractor.js +23 -11
- package/dist/entity-extractor.js.map +1 -1
- package/dist/generated/entities.d.ts +3 -2
- package/dist/generated/entities.d.ts.map +1 -1
- package/dist/generated/entities.js +6 -3
- package/dist/generated/entities.js.map +1 -1
- package/dist/generated/enums.d.ts.map +1 -1
- package/dist/generated/enums.js +0 -3
- package/dist/generated/enums.js.map +1 -1
- package/dist/generated/index.d.ts +4 -2
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +4 -2
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/schema-registry.d.ts.map +1 -1
- package/dist/generated/schema-registry.js +8 -3
- package/dist/generated/schema-registry.js.map +1 -1
- package/dist/generated/selects.d.ts +3 -0
- package/dist/generated/selects.d.ts.map +1 -1
- package/dist/generated/selects.js +6 -3
- package/dist/generated/selects.js.map +1 -1
- package/dist/generated/serializers.d.ts +71 -0
- package/dist/generated/serializers.d.ts.map +1 -0
- package/dist/generated/serializers.js +236 -0
- package/dist/generated/serializers.js.map +1 -0
- package/dist/generated/test-compile.d.ts +1 -6
- package/dist/generated/test-compile.d.ts.map +1 -1
- package/dist/generated/test-compile.js +30 -25
- package/dist/generated/test-compile.js.map +1 -1
- package/dist/generated/type-ids.d.ts +815 -0
- package/dist/generated/type-ids.d.ts.map +1 -0
- package/dist/generated/type-ids.js +1669 -0
- package/dist/generated/type-ids.js.map +1 -0
- package/dist/generated/types.d.ts +9 -542
- package/dist/generated/types.d.ts.map +1 -1
- package/dist/generated/types.js +6 -497
- package/dist/generated/types.js.map +1 -1
- package/dist/georef-extractor.js +2 -2
- package/dist/georef-extractor.js.map +1 -1
- package/dist/index.d.ts +38 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +233 -41
- package/dist/index.js.map +1 -1
- package/dist/material-extractor.js +8 -8
- package/dist/material-extractor.js.map +1 -1
- package/dist/parser.worker.d.ts +2 -0
- package/dist/parser.worker.d.ts.map +1 -0
- package/dist/parser.worker.js +43 -0
- package/dist/parser.worker.js.map +1 -0
- package/dist/property-extractor.d.ts +5 -1
- package/dist/property-extractor.d.ts.map +1 -1
- package/dist/property-extractor.js +22 -1
- package/dist/property-extractor.js.map +1 -1
- package/dist/quantity-extractor.d.ts +5 -1
- package/dist/quantity-extractor.d.ts.map +1 -1
- package/dist/quantity-extractor.js +29 -1
- package/dist/quantity-extractor.js.map +1 -1
- package/dist/relationship-extractor.d.ts +5 -1
- package/dist/relationship-extractor.d.ts.map +1 -1
- package/dist/relationship-extractor.js +27 -2
- package/dist/relationship-extractor.js.map +1 -1
- package/dist/spatial-hierarchy-builder.d.ts +4 -3
- package/dist/spatial-hierarchy-builder.d.ts.map +1 -1
- package/dist/spatial-hierarchy-builder.js +46 -34
- package/dist/spatial-hierarchy-builder.js.map +1 -1
- package/dist/style-extractor.d.ts +1 -0
- package/dist/style-extractor.d.ts.map +1 -1
- package/dist/style-extractor.js +18 -0
- package/dist/style-extractor.js.map +1 -1
- package/dist/tokenizer.d.ts +11 -0
- package/dist/tokenizer.d.ts.map +1 -1
- package/dist/tokenizer.js +150 -10
- package/dist/tokenizer.js.map +1 -1
- package/dist/unit-extractor.d.ts +22 -0
- package/dist/unit-extractor.d.ts.map +1 -0
- package/dist/unit-extractor.js +205 -0
- package/dist/unit-extractor.js.map +1 -0
- package/dist/worker-parser.d.ts +28 -0
- package/dist/worker-parser.d.ts.map +1 -0
- package/dist/worker-parser.js +81 -0
- package/dist/worker-parser.js.map +1 -0
- package/package.json +9 -8
- package/dist/examples/comprehensive-extraction.d.ts +0 -76
- package/dist/examples/comprehensive-extraction.d.ts.map +0 -1
- package/dist/examples/comprehensive-extraction.js +0 -228
- package/dist/examples/comprehensive-extraction.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @ifc-lite/parser - Main parser interface
|
|
3
|
+
* Supports both IFC4 (STEP) and IFC5 (IFCX/JSON) formats
|
|
3
4
|
*/
|
|
4
5
|
export { StepTokenizer } from './tokenizer.js';
|
|
5
6
|
export { EntityIndexBuilder } from './entity-index.js';
|
|
@@ -9,7 +10,10 @@ export { QuantityExtractor } from './quantity-extractor.js';
|
|
|
9
10
|
export { RelationshipExtractor } from './relationship-extractor.js';
|
|
10
11
|
export { StyleExtractor } from './style-extractor.js';
|
|
11
12
|
export { SpatialHierarchyBuilder } from './spatial-hierarchy-builder.js';
|
|
12
|
-
export {
|
|
13
|
+
export { extractLengthUnitScale } from './unit-extractor.js';
|
|
14
|
+
export { ColumnarParser, type IfcDataStore, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractEntityAttributesOnDemand } from './columnar-parser.js';
|
|
15
|
+
export { WorkerParser } from './worker-parser.js';
|
|
16
|
+
export { parseIfcx, detectFormat, composeIfcx, type IfcxParseResult, type IfcxFile, type IfcxNode, type ComposedNode, type MeshData as IfcxMeshData, } from '@ifc-lite/ifcx';
|
|
13
17
|
export { extractMaterials, getMaterialForElement, getMaterialNameForElement, type MaterialsData, type Material, type MaterialLayer, type MaterialLayerSet } from './material-extractor.js';
|
|
14
18
|
export { extractGeoreferencing, transformToWorld, transformToLocal, getCoordinateSystemDescription, type GeoreferenceInfo, type MapConversion, type ProjectedCRS } from './georef-extractor.js';
|
|
15
19
|
export { extractClassifications, getClassificationsForElement, getClassificationCodeForElement, getClassificationPath, groupElementsByClassification, type ClassificationsData, type Classification, type ClassificationReference } from './classification-extractor.js';
|
|
@@ -19,13 +23,14 @@ export * from './generated/enums.js';
|
|
|
19
23
|
export * from './types.js';
|
|
20
24
|
export * from './style-extractor.js';
|
|
21
25
|
export { getAttributeNames, getAttributeNameAt, isKnownType } from './ifc-schema.js';
|
|
22
|
-
import type { ParseResult } from './types.js';
|
|
26
|
+
import type { ParseResult, EntityRef } from './types.js';
|
|
23
27
|
import { type IfcDataStore } from './columnar-parser.js';
|
|
24
28
|
export interface ParseOptions {
|
|
25
29
|
onProgress?: (progress: {
|
|
26
30
|
phase: string;
|
|
27
31
|
percent: number;
|
|
28
32
|
}) => void;
|
|
33
|
+
wasmApi?: any;
|
|
29
34
|
}
|
|
30
35
|
/**
|
|
31
36
|
* Main parser class
|
|
@@ -36,8 +41,38 @@ export declare class IfcParser {
|
|
|
36
41
|
*/
|
|
37
42
|
parse(buffer: ArrayBuffer, options?: ParseOptions): Promise<ParseResult>;
|
|
38
43
|
/**
|
|
39
|
-
* Parse IFC file into columnar data store
|
|
44
|
+
* Parse IFC file into columnar data store
|
|
45
|
+
*
|
|
46
|
+
* Uses fast scan + on-demand property extraction for all files.
|
|
47
|
+
* Properties are extracted lazily when accessed, not upfront.
|
|
40
48
|
*/
|
|
41
49
|
parseColumnar(buffer: ArrayBuffer, options?: ParseOptions): Promise<IfcDataStore>;
|
|
42
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* On-demand entity parser for lite mode
|
|
53
|
+
* Parse a single entity's attributes from the source buffer
|
|
54
|
+
*/
|
|
55
|
+
export declare function parseEntityOnDemand(source: Uint8Array, entityRef: EntityRef): {
|
|
56
|
+
expressId: number;
|
|
57
|
+
type: string;
|
|
58
|
+
attributes: any[];
|
|
59
|
+
} | null;
|
|
60
|
+
import { type IfcxParseResult, type MeshData as IfcxMeshData } from '@ifc-lite/ifcx';
|
|
61
|
+
/**
|
|
62
|
+
* Result type for auto-parsing (union of IFC4 and IFC5 results)
|
|
63
|
+
*/
|
|
64
|
+
export type AutoParseResult = {
|
|
65
|
+
format: 'ifc';
|
|
66
|
+
data: IfcDataStore;
|
|
67
|
+
meshes?: undefined;
|
|
68
|
+
} | {
|
|
69
|
+
format: 'ifcx';
|
|
70
|
+
data: IfcxParseResult;
|
|
71
|
+
meshes: IfcxMeshData[];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Auto-detect file format and parse accordingly.
|
|
75
|
+
* Returns unified result with format indicator.
|
|
76
|
+
*/
|
|
77
|
+
export declare function parseAuto(buffer: ArrayBuffer, options?: ParseOptions): Promise<AutoParseResult>;
|
|
43
78
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
/**
|
|
5
5
|
* @ifc-lite/parser - Main parser interface
|
|
6
|
+
* Supports both IFC4 (STEP) and IFC5 (IFCX/JSON) formats
|
|
6
7
|
*/
|
|
7
8
|
export { StepTokenizer } from './tokenizer.js';
|
|
8
9
|
export { EntityIndexBuilder } from './entity-index.js';
|
|
@@ -12,7 +13,11 @@ export { QuantityExtractor } from './quantity-extractor.js';
|
|
|
12
13
|
export { RelationshipExtractor } from './relationship-extractor.js';
|
|
13
14
|
export { StyleExtractor } from './style-extractor.js';
|
|
14
15
|
export { SpatialHierarchyBuilder } from './spatial-hierarchy-builder.js';
|
|
15
|
-
export {
|
|
16
|
+
export { extractLengthUnitScale } from './unit-extractor.js';
|
|
17
|
+
export { ColumnarParser, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractEntityAttributesOnDemand } from './columnar-parser.js';
|
|
18
|
+
export { WorkerParser } from './worker-parser.js';
|
|
19
|
+
// IFC5 (IFCX) support - re-export from @ifc-lite/ifcx
|
|
20
|
+
export { parseIfcx, detectFormat, composeIfcx, } from '@ifc-lite/ifcx';
|
|
16
21
|
// New extractors with 100% schema coverage
|
|
17
22
|
export { extractMaterials, getMaterialForElement, getMaterialNameForElement } from './material-extractor.js';
|
|
18
23
|
export { extractGeoreferencing, transformToWorld, transformToLocal, getCoordinateSystemDescription } from './georef-extractor.js';
|
|
@@ -98,53 +103,240 @@ export class IfcParser {
|
|
|
98
103
|
};
|
|
99
104
|
}
|
|
100
105
|
/**
|
|
101
|
-
* Parse IFC file into columnar data store
|
|
106
|
+
* Parse IFC file into columnar data store
|
|
107
|
+
*
|
|
108
|
+
* Uses fast scan + on-demand property extraction for all files.
|
|
109
|
+
* Properties are extracted lazily when accessed, not upfront.
|
|
102
110
|
*/
|
|
103
111
|
async parseColumnar(buffer, options = {}) {
|
|
104
112
|
const uint8Buffer = new Uint8Array(buffer);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
indexBuilder.build();
|
|
129
|
-
options.onProgress?.({ phase: 'scan', percent: 100 });
|
|
130
|
-
// Phase 2: Extract entities
|
|
131
|
-
options.onProgress?.({ phase: 'extract', percent: 0 });
|
|
132
|
-
const extractor = new EntityExtractor(uint8Buffer);
|
|
133
|
-
const entities = new Map();
|
|
134
|
-
for (let i = 0; i < entityRefs.length; i++) {
|
|
135
|
-
const ref = entityRefs[i];
|
|
136
|
-
const entity = extractor.extractEntity(ref);
|
|
137
|
-
if (entity) {
|
|
138
|
-
entities.set(ref.expressId, entity);
|
|
113
|
+
const startTime = performance.now();
|
|
114
|
+
const fileSizeMB = buffer.byteLength / (1024 * 1024);
|
|
115
|
+
console.log(`[IfcParser] Parsing ${fileSizeMB.toFixed(1)}MB file with on-demand property extraction`);
|
|
116
|
+
// Fast scan: try WASM scanner first (5-10x faster), fallback to TypeScript
|
|
117
|
+
options.onProgress?.({ phase: 'scanning', percent: 0 });
|
|
118
|
+
let entityRefs = [];
|
|
119
|
+
let processed = 0;
|
|
120
|
+
// Try WASM scanner if available
|
|
121
|
+
if (options.wasmApi && typeof options.wasmApi.scanEntitiesFast === 'function') {
|
|
122
|
+
try {
|
|
123
|
+
const decoder = new TextDecoder();
|
|
124
|
+
const content = decoder.decode(buffer);
|
|
125
|
+
const wasmRefs = options.wasmApi.scanEntitiesFast(content);
|
|
126
|
+
// Direct mapping - optimized by JS engine, no intermediate loop/push
|
|
127
|
+
entityRefs = wasmRefs.map((ref) => ({
|
|
128
|
+
expressId: ref.express_id,
|
|
129
|
+
type: ref.entity_type,
|
|
130
|
+
byteOffset: ref.byte_offset,
|
|
131
|
+
byteLength: ref.byte_length,
|
|
132
|
+
lineNumber: ref.line_number,
|
|
133
|
+
}));
|
|
134
|
+
processed = entityRefs.length;
|
|
135
|
+
console.log(`[IfcParser] WASM scan: ${processed} entities`);
|
|
139
136
|
}
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.warn('[IfcParser] WASM scan failed, falling back to TypeScript:', error);
|
|
139
|
+
// Fall through to TypeScript scanner
|
|
140
|
+
entityRefs.length = 0;
|
|
141
|
+
processed = 0;
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
// Fallback to TypeScript scanner if WASM not available or failed
|
|
145
|
+
if (entityRefs.length === 0) {
|
|
146
|
+
const tokenizer = new StepTokenizer(uint8Buffer);
|
|
147
|
+
// Yield frequently to avoid blocking geometry streaming
|
|
148
|
+
// Reduced from 50000 to 5000 for better interleaving with geometry processor
|
|
149
|
+
const YIELD_INTERVAL = 5000;
|
|
150
|
+
// Estimate total entities based on file size (~13,500 entities per MB typical for IFC)
|
|
151
|
+
const estimatedTotalEntities = Math.max(fileSizeMB * 13500, 10000);
|
|
152
|
+
for (const ref of tokenizer.scanEntitiesFast()) {
|
|
153
|
+
entityRefs.push({
|
|
154
|
+
expressId: ref.expressId,
|
|
155
|
+
type: ref.type,
|
|
156
|
+
byteOffset: ref.offset,
|
|
157
|
+
byteLength: ref.length,
|
|
158
|
+
lineNumber: ref.line,
|
|
159
|
+
});
|
|
160
|
+
processed++;
|
|
161
|
+
if (processed % YIELD_INTERVAL === 0) {
|
|
162
|
+
// Progress capped at 95% (scanning phase), 100% reported after loop completes
|
|
163
|
+
const scanPercent = Math.min(95, (processed / estimatedTotalEntities) * 95);
|
|
164
|
+
options.onProgress?.({ phase: 'scanning', percent: scanPercent });
|
|
165
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const scanTime = performance.now() - startTime;
|
|
170
|
+
console.log(`[IfcParser] Fast scan: ${processed} entities in ${scanTime.toFixed(0)}ms`);
|
|
171
|
+
options.onProgress?.({ phase: 'scanning', percent: 100 });
|
|
172
|
+
// Build columnar structures with on-demand property extraction
|
|
146
173
|
const columnarParser = new ColumnarParser();
|
|
147
|
-
return columnarParser.
|
|
174
|
+
return columnarParser.parseLite(buffer, entityRefs, options);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* On-demand entity parser for lite mode
|
|
179
|
+
* Parse a single entity's attributes from the source buffer
|
|
180
|
+
*/
|
|
181
|
+
export function parseEntityOnDemand(source, entityRef) {
|
|
182
|
+
try {
|
|
183
|
+
const entityText = new TextDecoder().decode(source.subarray(entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength));
|
|
184
|
+
// Parse: #ID = TYPE(attr1, attr2, ...)
|
|
185
|
+
const match = entityText.match(/^#(\d+)\s*=\s*(\w+)\((.*)\)/);
|
|
186
|
+
if (!match)
|
|
187
|
+
return null;
|
|
188
|
+
const expressId = parseInt(match[1], 10);
|
|
189
|
+
const type = match[2];
|
|
190
|
+
const paramsText = match[3];
|
|
191
|
+
// Parse attributes
|
|
192
|
+
const attributes = parseAttributeList(paramsText);
|
|
193
|
+
return { expressId, type, attributes };
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
console.warn(`Failed to parse entity #${entityRef.expressId}:`, error);
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Parse attribute list from STEP format
|
|
202
|
+
*/
|
|
203
|
+
function parseAttributeList(paramsText) {
|
|
204
|
+
if (!paramsText.trim())
|
|
205
|
+
return [];
|
|
206
|
+
const attributes = [];
|
|
207
|
+
let depth = 0;
|
|
208
|
+
let current = '';
|
|
209
|
+
let inString = false;
|
|
210
|
+
for (let i = 0; i < paramsText.length; i++) {
|
|
211
|
+
const char = paramsText[i];
|
|
212
|
+
if (char === "'") {
|
|
213
|
+
if (inString) {
|
|
214
|
+
// Check for escaped quote ('') - STEP uses doubled quotes
|
|
215
|
+
if (i + 1 < paramsText.length && paramsText[i + 1] === "'") {
|
|
216
|
+
current += "''";
|
|
217
|
+
i++;
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
inString = false;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
inString = true;
|
|
224
|
+
}
|
|
225
|
+
current += char;
|
|
226
|
+
}
|
|
227
|
+
else if (inString) {
|
|
228
|
+
current += char;
|
|
229
|
+
}
|
|
230
|
+
else if (char === '(') {
|
|
231
|
+
depth++;
|
|
232
|
+
current += char;
|
|
233
|
+
}
|
|
234
|
+
else if (char === ')') {
|
|
235
|
+
depth--;
|
|
236
|
+
current += char;
|
|
237
|
+
}
|
|
238
|
+
else if (char === ',' && depth === 0) {
|
|
239
|
+
attributes.push(parseAttributeValue(current.trim()));
|
|
240
|
+
current = '';
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
current += char;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (current.trim()) {
|
|
247
|
+
attributes.push(parseAttributeValue(current.trim()));
|
|
248
|
+
}
|
|
249
|
+
return attributes;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Parse a single attribute value
|
|
253
|
+
*/
|
|
254
|
+
function parseAttributeValue(value) {
|
|
255
|
+
value = value.trim();
|
|
256
|
+
if (!value || value === '$') {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
// TypedValue: IFCTYPENAME(value) - must check before list check
|
|
260
|
+
// Pattern: identifier followed by parentheses (e.g., IFCNORMALISEDRATIOMEASURE(0.5))
|
|
261
|
+
const typedValueMatch = value.match(/^([A-Z][A-Z0-9_]*)\((.+)\)$/i);
|
|
262
|
+
if (typedValueMatch) {
|
|
263
|
+
const typeName = typedValueMatch[1];
|
|
264
|
+
const innerValue = typedValueMatch[2].trim();
|
|
265
|
+
// Return as array [typeName, parsedValue] to match Rust structure
|
|
266
|
+
return [typeName, parseAttributeValue(innerValue)];
|
|
267
|
+
}
|
|
268
|
+
// List/Array
|
|
269
|
+
if (value.startsWith('(') && value.endsWith(')')) {
|
|
270
|
+
const listContent = value.slice(1, -1).trim();
|
|
271
|
+
if (!listContent)
|
|
272
|
+
return [];
|
|
273
|
+
const items = [];
|
|
274
|
+
let depth = 0;
|
|
275
|
+
let current = '';
|
|
276
|
+
for (let i = 0; i < listContent.length; i++) {
|
|
277
|
+
const char = listContent[i];
|
|
278
|
+
if (char === '(') {
|
|
279
|
+
depth++;
|
|
280
|
+
current += char;
|
|
281
|
+
}
|
|
282
|
+
else if (char === ')') {
|
|
283
|
+
depth--;
|
|
284
|
+
current += char;
|
|
285
|
+
}
|
|
286
|
+
else if (char === ',' && depth === 0) {
|
|
287
|
+
const itemValue = current.trim();
|
|
288
|
+
if (itemValue)
|
|
289
|
+
items.push(parseAttributeValue(itemValue));
|
|
290
|
+
current = '';
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
current += char;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (current.trim())
|
|
297
|
+
items.push(parseAttributeValue(current.trim()));
|
|
298
|
+
return items;
|
|
299
|
+
}
|
|
300
|
+
// Reference: #123
|
|
301
|
+
if (value.startsWith('#')) {
|
|
302
|
+
const id = parseInt(value.substring(1), 10);
|
|
303
|
+
return isNaN(id) ? null : id;
|
|
304
|
+
}
|
|
305
|
+
// String: 'text'
|
|
306
|
+
if (value.startsWith("'") && value.endsWith("'")) {
|
|
307
|
+
return value.slice(1, -1).replace(/''/g, "'");
|
|
308
|
+
}
|
|
309
|
+
// Number
|
|
310
|
+
const num = parseFloat(value);
|
|
311
|
+
if (!isNaN(num))
|
|
312
|
+
return num;
|
|
313
|
+
// Enumeration or other identifier
|
|
314
|
+
return value;
|
|
315
|
+
}
|
|
316
|
+
// Import for auto-parser
|
|
317
|
+
import { parseIfcx, detectFormat } from '@ifc-lite/ifcx';
|
|
318
|
+
/**
|
|
319
|
+
* Auto-detect file format and parse accordingly.
|
|
320
|
+
* Returns unified result with format indicator.
|
|
321
|
+
*/
|
|
322
|
+
export async function parseAuto(buffer, options = {}) {
|
|
323
|
+
const format = detectFormat(buffer);
|
|
324
|
+
if (format === 'ifcx') {
|
|
325
|
+
const result = await parseIfcx(buffer, options);
|
|
326
|
+
return {
|
|
327
|
+
format: 'ifcx',
|
|
328
|
+
data: result,
|
|
329
|
+
meshes: result.meshes,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
if (format === 'ifc') {
|
|
333
|
+
const parser = new IfcParser();
|
|
334
|
+
const data = await parser.parseColumnar(buffer, options);
|
|
335
|
+
return {
|
|
336
|
+
format: 'ifc',
|
|
337
|
+
data,
|
|
338
|
+
};
|
|
148
339
|
}
|
|
340
|
+
throw new Error('Unknown file format. Expected IFC (STEP) or IFCX (JSON).');
|
|
149
341
|
}
|
|
150
342
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAqB,yBAAyB,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAChK,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,sDAAsD;AACtD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,GAMZ,MAAM,gBAAgB,CAAC;AAExB,2CAA2C;AAC3C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAgF,MAAM,yBAAyB,CAAC;AAC3L,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,8BAA8B,EAAgE,MAAM,uBAAuB,CAAC;AAChM,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,6BAA6B,EAA+E,MAAM,+BAA+B,CAAC;AAEzQ,6EAA6E;AAC7E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE5J,cAAc,sBAAsB,CAAC;AAErC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGrF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AAOzE;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAmB,EAAE,UAAwB,EAAE;QACzD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAE3C,6BAA6B;QAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE9C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3C,YAAY,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACzC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAEzD,8BAA8B;QAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;QAC7D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE5D,iCAAiC;QACjC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,qBAAqB,CAAC,oBAAoB,EAAE,CAAC;QACnE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE/D,OAAO;YACL,QAAQ;YACR,YAAY;YACZ,aAAa;YACb,WAAW;YACX,QAAQ,EAAE,MAAM,CAAC,UAAU;YAC3B,WAAW,EAAE,QAAQ,CAAC,IAAI;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,MAAmB,EAAE,UAAwB,EAAE;QACjE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC;QAEtG,2EAA2E;QAC3E,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAExD,IAAI,UAAU,GAAgB,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,gCAAgC;QAChC,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAC9E,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAMvD,CAAC;gBAEH,qEAAqE;gBACrE,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAClC,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,IAAI,EAAE,GAAG,CAAC,WAAW;oBACrB,UAAU,EAAE,GAAG,CAAC,WAAW;oBAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;oBAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;iBAC5B,CAAC,CAAC,CAAC;gBAEJ,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,WAAW,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,KAAK,CAAC,CAAC;gBACjF,qCAAqC;gBACrC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtB,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;YACjD,wDAAwD;YACxD,6EAA6E;YAC7E,MAAM,cAAc,GAAG,IAAI,CAAC;YAC5B,uFAAuF;YACvF,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;YAEnE,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBAC/C,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,UAAU,EAAE,GAAG,CAAC,MAAM;oBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;oBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;iBACrB,CAAC,CAAC;gBAEH,SAAS,EAAE,CAAC;gBACZ,IAAI,SAAS,GAAG,cAAc,KAAK,CAAC,EAAE,CAAC;oBACrC,8EAA8E;oBAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC5E,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;oBAClE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,gBAAgB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE1D,+DAA+D;QAC/D,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,OAAO,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAkB,EAClB,SAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACzC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CACnF,CAAC;QAEF,uCAAuC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,mBAAmB;QACnB,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,SAAS,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,UAAU,GAAU,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,QAAQ,EAAE,CAAC;gBACb,0DAA0D;gBAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC3D,OAAO,IAAI,IAAI,CAAC;oBAChB,CAAC,EAAE,CAAC;oBACJ,SAAS;gBACX,CAAC;gBACD,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,EAAE,CAAC;YACR,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,EAAE,CAAC;YACR,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACvC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAErB,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,qFAAqF;IACrF,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpE,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,kEAAkE;QAClE,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,aAAa;IACb,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAE5B,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAE5B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,SAAS;oBAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1D,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,iBAAiB;IACjB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,SAAS;IACT,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAE5B,kCAAkC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yBAAyB;AACzB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAuD,MAAM,gBAAgB,CAAC;AAe9G;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB,EACnB,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,IAAI;SACL,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -86,7 +86,7 @@ export function extractMaterials(entities, entitiesByType) {
|
|
|
86
86
|
}
|
|
87
87
|
function extractMaterial(entity) {
|
|
88
88
|
return {
|
|
89
|
-
id: entity.
|
|
89
|
+
id: entity.expressId,
|
|
90
90
|
name: getString(entity.attributes[0]) || '',
|
|
91
91
|
description: getString(entity.attributes[1]),
|
|
92
92
|
category: getString(entity.attributes[2]),
|
|
@@ -96,7 +96,7 @@ function extractMaterialLayer(entity, entities) {
|
|
|
96
96
|
const materialRef = getReference(entity.attributes[0]);
|
|
97
97
|
const thickness = getNumber(entity.attributes[1]) || 0;
|
|
98
98
|
return {
|
|
99
|
-
id: entity.
|
|
99
|
+
id: entity.expressId,
|
|
100
100
|
material: materialRef || 0,
|
|
101
101
|
thickness,
|
|
102
102
|
isVentilated: getBoolean(entity.attributes[2]),
|
|
@@ -120,7 +120,7 @@ function extractMaterialLayerSet(entity, entities) {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
return {
|
|
123
|
-
id: entity.
|
|
123
|
+
id: entity.expressId,
|
|
124
124
|
name,
|
|
125
125
|
description,
|
|
126
126
|
layers,
|
|
@@ -129,7 +129,7 @@ function extractMaterialLayerSet(entity, entities) {
|
|
|
129
129
|
}
|
|
130
130
|
function extractMaterialProfile(entity, entities) {
|
|
131
131
|
return {
|
|
132
|
-
id: entity.
|
|
132
|
+
id: entity.expressId,
|
|
133
133
|
name: getString(entity.attributes[0]),
|
|
134
134
|
description: getString(entity.attributes[1]),
|
|
135
135
|
material: getReference(entity.attributes[2]),
|
|
@@ -140,7 +140,7 @@ function extractMaterialProfile(entity, entities) {
|
|
|
140
140
|
}
|
|
141
141
|
function extractMaterialProfileSet(entity, entities) {
|
|
142
142
|
return {
|
|
143
|
-
id: entity.
|
|
143
|
+
id: entity.expressId,
|
|
144
144
|
name: getString(entity.attributes[0]),
|
|
145
145
|
description: getString(entity.attributes[1]),
|
|
146
146
|
profiles: getReferences(entity.attributes[2]) || [],
|
|
@@ -148,7 +148,7 @@ function extractMaterialProfileSet(entity, entities) {
|
|
|
148
148
|
}
|
|
149
149
|
function extractMaterialConstituent(entity, entities) {
|
|
150
150
|
return {
|
|
151
|
-
id: entity.
|
|
151
|
+
id: entity.expressId,
|
|
152
152
|
name: getString(entity.attributes[0]),
|
|
153
153
|
description: getString(entity.attributes[1]),
|
|
154
154
|
material: getReference(entity.attributes[2]) || 0,
|
|
@@ -158,7 +158,7 @@ function extractMaterialConstituent(entity, entities) {
|
|
|
158
158
|
}
|
|
159
159
|
function extractMaterialConstituentSet(entity, entities) {
|
|
160
160
|
return {
|
|
161
|
-
id: entity.
|
|
161
|
+
id: entity.expressId,
|
|
162
162
|
name: getString(entity.attributes[0]),
|
|
163
163
|
description: getString(entity.attributes[1]),
|
|
164
164
|
constituents: getReferences(entity.attributes[2]) || [],
|
|
@@ -193,7 +193,7 @@ function extractMaterialAssociation(entity, entities) {
|
|
|
193
193
|
materialType = 'ConstituentSet';
|
|
194
194
|
}
|
|
195
195
|
return {
|
|
196
|
-
relationshipId: entity.
|
|
196
|
+
relationshipId: entity.expressId,
|
|
197
197
|
relatingMaterialId: relatingMaterialRef,
|
|
198
198
|
materialType,
|
|
199
199
|
relatedObjects,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-extractor.js","sourceRoot":"","sources":["../src/material-extractor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"material-extractor.js","sourceRoot":"","sources":["../src/material-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.worker.d.ts","sourceRoot":"","sources":["../src/parser.worker.ts"],"names":[],"mappings":""}
|
|
@@ -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
|
+
/**
|
|
5
|
+
* Web Worker for parsing IFC data model in parallel
|
|
6
|
+
* Runs parseColumnar in a separate thread to avoid blocking geometry processing
|
|
7
|
+
*/
|
|
8
|
+
import { IfcParser } from './index.js';
|
|
9
|
+
// Worker message handler
|
|
10
|
+
self.onmessage = async (e) => {
|
|
11
|
+
const { buffer, id } = e.data;
|
|
12
|
+
try {
|
|
13
|
+
const parser = new IfcParser();
|
|
14
|
+
// Parse with progress updates
|
|
15
|
+
const dataStore = await parser.parseColumnar(buffer, {
|
|
16
|
+
onProgress: (progress) => {
|
|
17
|
+
// Send progress updates back to main thread
|
|
18
|
+
self.postMessage({
|
|
19
|
+
type: 'progress',
|
|
20
|
+
id,
|
|
21
|
+
progress,
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
// Send result back to main thread
|
|
26
|
+
// Note: We can't transfer complex objects, so we'll serialize
|
|
27
|
+
// The main thread will reconstruct the data store
|
|
28
|
+
self.postMessage({
|
|
29
|
+
type: 'complete',
|
|
30
|
+
id,
|
|
31
|
+
dataStore,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
// Send error back to main thread
|
|
36
|
+
self.postMessage({
|
|
37
|
+
type: 'error',
|
|
38
|
+
id,
|
|
39
|
+
error: error instanceof Error ? error.message : String(error),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=parser.worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.worker.js","sourceRoot":"","sources":["../src/parser.worker.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,yBAAyB;AACzB,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAoD,EAAE,EAAE;IAC9E,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,8BAA8B;QAC9B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;YACnD,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvB,4CAA4C;gBAC5C,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,EAAE,UAAU;oBAChB,EAAE;oBACF,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,kCAAkC;QAClC,8DAA8D;QAC9D,kDAAkD;QAClD,IAAI,CAAC,WAAW,CAAC;YACf,IAAI,EAAE,UAAU;YAChB,EAAE;YACF,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iCAAiC;QACjC,IAAI,CAAC,WAAW,CAAC;YACf,IAAI,EAAE,OAAO;YACb,EAAE;YACF,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -6,7 +6,11 @@ export declare class PropertyExtractor {
|
|
|
6
6
|
private entities;
|
|
7
7
|
constructor(entities: Map<number, IfcEntity>);
|
|
8
8
|
/**
|
|
9
|
-
* Extract all PropertySets from entities
|
|
9
|
+
* Extract all PropertySets from entities (async version with yields)
|
|
10
|
+
*/
|
|
11
|
+
extractPropertySetsAsync(): Promise<Map<number, PropertySet>>;
|
|
12
|
+
/**
|
|
13
|
+
* Extract all PropertySets from entities (sync version for backward compatibility)
|
|
10
14
|
*/
|
|
11
15
|
extractPropertySets(): Map<number, PropertySet>;
|
|
12
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-extractor.d.ts","sourceRoot":"","sources":["../src/property-extractor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;AAExE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAI5C;;OAEG;IACH,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAgB/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,iBAAiB;CAM1B"}
|
|
1
|
+
{"version":3,"file":"property-extractor.d.ts","sourceRoot":"","sources":["../src/property-extractor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;AAExE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAI5C;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAsBnE;;OAEG;IACH,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAgB/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,iBAAiB;CAM1B"}
|
|
@@ -7,7 +7,28 @@ export class PropertyExtractor {
|
|
|
7
7
|
this.entities = entities;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Extract all PropertySets from entities
|
|
10
|
+
* Extract all PropertySets from entities (async version with yields)
|
|
11
|
+
*/
|
|
12
|
+
async extractPropertySetsAsync() {
|
|
13
|
+
const propertySets = new Map();
|
|
14
|
+
let processed = 0;
|
|
15
|
+
for (const [id, entity] of this.entities) {
|
|
16
|
+
if (entity.type.toUpperCase() === 'IFCPROPERTYSET') {
|
|
17
|
+
const pset = this.extractPropertySet(entity);
|
|
18
|
+
if (pset) {
|
|
19
|
+
propertySets.set(id, pset);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
processed++;
|
|
23
|
+
// Yield to event loop every 2000 entities to prevent blocking
|
|
24
|
+
if (processed % 2000 === 0) {
|
|
25
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return propertySets;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract all PropertySets from entities (sync version for backward compatibility)
|
|
11
32
|
*/
|
|
12
33
|
extractPropertySets() {
|
|
13
34
|
const propertySets = new Map();
|