@ifc-lite/query 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/LICENSE +373 -0
  2. package/dist/parser/src/classification-extractor.d.ts +73 -0
  3. package/dist/parser/src/classification-extractor.d.ts.map +1 -0
  4. package/dist/parser/src/classification-extractor.js +218 -0
  5. package/dist/parser/src/classification-extractor.js.map +1 -0
  6. package/dist/parser/src/columnar-parser.d.ts +43 -0
  7. package/dist/parser/src/columnar-parser.d.ts.map +1 -0
  8. package/dist/parser/src/columnar-parser.js +226 -0
  9. package/dist/parser/src/columnar-parser.js.map +1 -0
  10. package/dist/parser/src/entity-extractor.d.ts +15 -0
  11. package/dist/parser/src/entity-extractor.d.ts.map +1 -0
  12. package/dist/parser/src/entity-extractor.js +144 -0
  13. package/dist/parser/src/entity-extractor.js.map +1 -0
  14. package/dist/parser/src/entity-index.d.ts +11 -0
  15. package/dist/parser/src/entity-index.d.ts.map +1 -0
  16. package/dist/parser/src/entity-index.js +24 -0
  17. package/dist/parser/src/entity-index.js.map +1 -0
  18. package/dist/parser/src/generated/entities.d.ts +6198 -0
  19. package/dist/parser/src/generated/entities.d.ts.map +1 -0
  20. package/dist/parser/src/generated/entities.js +5 -0
  21. package/dist/parser/src/generated/entities.js.map +1 -0
  22. package/dist/parser/src/generated/enums.d.ts +2260 -0
  23. package/dist/parser/src/generated/enums.d.ts.map +1 -0
  24. package/dist/parser/src/generated/enums.js +2470 -0
  25. package/dist/parser/src/generated/enums.js.map +1 -0
  26. package/dist/parser/src/generated/schema-registry.d.ts +50 -0
  27. package/dist/parser/src/generated/schema-registry.d.ts.map +1 -0
  28. package/dist/parser/src/generated/schema-registry.js +60518 -0
  29. package/dist/parser/src/generated/schema-registry.js.map +1 -0
  30. package/dist/parser/src/georef-extractor.d.ts +60 -0
  31. package/dist/parser/src/georef-extractor.d.ts.map +1 -0
  32. package/dist/parser/src/georef-extractor.js +200 -0
  33. package/dist/parser/src/georef-extractor.js.map +1 -0
  34. package/dist/parser/src/ifc-schema.d.ts +13 -0
  35. package/dist/parser/src/ifc-schema.d.ts.map +1 -0
  36. package/dist/parser/src/ifc-schema.js +203 -0
  37. package/dist/parser/src/ifc-schema.js.map +1 -0
  38. package/dist/parser/src/index.d.ts +43 -0
  39. package/dist/parser/src/index.d.ts.map +1 -0
  40. package/dist/parser/src/index.js +150 -0
  41. package/dist/parser/src/index.js.map +1 -0
  42. package/dist/parser/src/material-extractor.d.ts +97 -0
  43. package/dist/parser/src/material-extractor.d.ts.map +1 -0
  44. package/dist/parser/src/material-extractor.js +283 -0
  45. package/dist/parser/src/material-extractor.js.map +1 -0
  46. package/dist/parser/src/property-extractor.d.ts +23 -0
  47. package/dist/parser/src/property-extractor.d.ts.map +1 -0
  48. package/dist/parser/src/property-extractor.js +102 -0
  49. package/dist/parser/src/property-extractor.js.map +1 -0
  50. package/dist/parser/src/quantity-extractor.d.ts +64 -0
  51. package/dist/parser/src/quantity-extractor.d.ts.map +1 -0
  52. package/dist/parser/src/quantity-extractor.js +202 -0
  53. package/dist/parser/src/quantity-extractor.js.map +1 -0
  54. package/dist/parser/src/relationship-extractor.d.ts +18 -0
  55. package/dist/parser/src/relationship-extractor.d.ts.map +1 -0
  56. package/dist/parser/src/relationship-extractor.js +91 -0
  57. package/dist/parser/src/relationship-extractor.js.map +1 -0
  58. package/dist/parser/src/spatial-hierarchy-builder.d.ts +21 -0
  59. package/dist/parser/src/spatial-hierarchy-builder.d.ts.map +1 -0
  60. package/dist/parser/src/spatial-hierarchy-builder.js +201 -0
  61. package/dist/parser/src/spatial-hierarchy-builder.js.map +1 -0
  62. package/dist/parser/src/style-extractor.d.ts +83 -0
  63. package/dist/parser/src/style-extractor.d.ts.map +1 -0
  64. package/dist/parser/src/style-extractor.js +327 -0
  65. package/dist/parser/src/style-extractor.js.map +1 -0
  66. package/dist/parser/src/tokenizer.d.ts +26 -0
  67. package/dist/parser/src/tokenizer.d.ts.map +1 -0
  68. package/dist/parser/src/tokenizer.js +181 -0
  69. package/dist/parser/src/tokenizer.js.map +1 -0
  70. package/dist/parser/src/types.d.ts +42 -0
  71. package/dist/parser/src/types.d.ts.map +1 -0
  72. package/dist/parser/src/types.js +5 -0
  73. package/dist/parser/src/types.js.map +1 -0
  74. package/dist/query/src/duckdb-integration.d.ts +59 -0
  75. package/dist/query/src/duckdb-integration.d.ts.map +1 -0
  76. package/dist/query/src/duckdb-integration.js +380 -0
  77. package/dist/query/src/duckdb-integration.js.map +1 -0
  78. package/dist/query/src/entity-node.d.ts +30 -0
  79. package/dist/query/src/entity-node.d.ts.map +1 -0
  80. package/dist/query/src/entity-node.js +114 -0
  81. package/dist/query/src/entity-node.js.map +1 -0
  82. package/dist/query/src/entity-query.d.ts +31 -0
  83. package/dist/query/src/entity-query.d.ts.map +1 -0
  84. package/dist/query/src/entity-query.js +129 -0
  85. package/dist/query/src/entity-query.js.map +1 -0
  86. package/dist/query/src/entity-table.d.ts +26 -0
  87. package/dist/query/src/entity-table.d.ts.map +1 -0
  88. package/dist/query/src/entity-table.js +37 -0
  89. package/dist/query/src/entity-table.js.map +1 -0
  90. package/dist/query/src/fluent-api.d.ts +45 -0
  91. package/dist/query/src/fluent-api.d.ts.map +1 -0
  92. package/dist/query/src/fluent-api.js +81 -0
  93. package/dist/query/src/fluent-api.js.map +1 -0
  94. package/dist/query/src/ifc-query.d.ts +34 -0
  95. package/dist/query/src/ifc-query.d.ts.map +1 -0
  96. package/dist/query/src/ifc-query.js +117 -0
  97. package/dist/query/src/ifc-query.js.map +1 -0
  98. package/dist/query/src/index.d.ts +12 -0
  99. package/dist/query/src/index.d.ts.map +1 -0
  100. package/dist/query/src/index.js +15 -0
  101. package/dist/query/src/index.js.map +1 -0
  102. package/dist/query/src/property-table.d.ts +30 -0
  103. package/dist/query/src/property-table.d.ts.map +1 -0
  104. package/dist/query/src/property-table.js +79 -0
  105. package/dist/query/src/property-table.js.map +1 -0
  106. package/dist/query/src/query-result-entity.d.ts +33 -0
  107. package/dist/query/src/query-result-entity.d.ts.map +1 -0
  108. package/dist/query/src/query-result-entity.js +84 -0
  109. package/dist/query/src/query-result-entity.js.map +1 -0
  110. package/package.json +50 -0
@@ -0,0 +1,380 @@
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 { IfcTypeEnumToString, PropertyValueType, QuantityType, RelationshipType } from '@ifc-lite/data';
5
+ export class DuckDBIntegration {
6
+ db = null;
7
+ conn = null;
8
+ initPromise = null;
9
+ initialized = false;
10
+ /**
11
+ * Initialize DuckDB (lazy-loaded)
12
+ */
13
+ async init(store) {
14
+ if (this.initialized)
15
+ return;
16
+ if (this.initPromise)
17
+ return this.initPromise;
18
+ this.initPromise = (async () => {
19
+ try {
20
+ // Dynamic import using Function constructor to prevent Vite static analysis
21
+ // DuckDB is optional - this will fail gracefully if not installed
22
+ // @ts-ignore - DuckDB is optional dependency
23
+ const duckdb = await new Function('return import("@duckdb/duckdb-wasm")')();
24
+ // @ts-ignore
25
+ const bundle = await duckdb.selectBundle(duckdb.getJsDelivrBundles());
26
+ const worker = new Worker(bundle.mainWorker);
27
+ // @ts-ignore
28
+ this.db = new duckdb.AsyncDuckDB(new duckdb.ConsoleLogger(), worker);
29
+ await this.db.instantiate(bundle.mainModule, bundle.pthreadWorker);
30
+ this.conn = await this.db.connect();
31
+ await this.registerTables(store);
32
+ await this.createViews();
33
+ this.initialized = true;
34
+ console.log('[DuckDB] Initialization complete');
35
+ }
36
+ catch (error) {
37
+ throw new Error(`Failed to initialize DuckDB: ${error}`);
38
+ }
39
+ })();
40
+ return this.initPromise;
41
+ }
42
+ /**
43
+ * Execute SQL query
44
+ */
45
+ async query(sql) {
46
+ if (!this.initialized) {
47
+ throw new Error('DuckDB not initialized. Call init() first.');
48
+ }
49
+ const result = await this.conn.query(sql);
50
+ const rows = result.toArray();
51
+ return {
52
+ columns: result.schema.fields.map((f) => f.name),
53
+ rows: rows,
54
+ toArray: () => rows,
55
+ toJSON: () => rows.map((row) => {
56
+ const obj = {};
57
+ result.schema.fields.forEach((field, i) => {
58
+ // Handle DuckDB row format (could be array or object)
59
+ obj[field.name] = Array.isArray(row) ? row[i] : row[field.name];
60
+ });
61
+ return obj;
62
+ }),
63
+ };
64
+ }
65
+ /**
66
+ * Register tables from columnar store using SQL INSERT statements
67
+ * This approach works without Arrow dependencies and is more portable
68
+ */
69
+ async registerTables(store) {
70
+ console.log('[DuckDB] Registering tables from store with', store.entities.count, 'entities');
71
+ // Create and populate entities table
72
+ await this.createEntitiesTable(store);
73
+ // Create and populate properties table
74
+ await this.createPropertiesTable(store);
75
+ // Create and populate quantities table
76
+ await this.createQuantitiesTable(store);
77
+ // Create and populate relationships table
78
+ await this.createRelationshipsTable(store);
79
+ console.log('[DuckDB] All tables registered successfully');
80
+ }
81
+ /**
82
+ * Create and populate entities table
83
+ */
84
+ async createEntitiesTable(store) {
85
+ // Create table
86
+ await this.conn.query(`
87
+ CREATE TABLE entities (
88
+ express_id INTEGER PRIMARY KEY,
89
+ global_id VARCHAR,
90
+ name VARCHAR,
91
+ description VARCHAR,
92
+ type VARCHAR,
93
+ object_type VARCHAR,
94
+ has_geometry BOOLEAN,
95
+ is_type BOOLEAN,
96
+ contained_in_storey INTEGER,
97
+ defined_by_type INTEGER
98
+ )
99
+ `);
100
+ const { entities, strings } = store;
101
+ const batchSize = 1000;
102
+ // Insert in batches for performance
103
+ for (let i = 0; i < entities.count; i += batchSize) {
104
+ const end = Math.min(i + batchSize, entities.count);
105
+ const values = [];
106
+ for (let j = i; j < end; j++) {
107
+ const expressId = entities.expressId[j];
108
+ const globalId = escapeSQL(strings.get(entities.globalId[j]));
109
+ const name = escapeSQL(strings.get(entities.name[j]));
110
+ const description = escapeSQL(strings.get(entities.description[j]));
111
+ const type = escapeSQL(IfcTypeEnumToString(entities.typeEnum[j]));
112
+ const objectType = escapeSQL(strings.get(entities.objectType[j]));
113
+ const hasGeometry = (entities.flags[j] & 1) !== 0;
114
+ const isType = (entities.flags[j] & 2) !== 0;
115
+ const containedInStorey = entities.containedInStorey[j] || 'NULL';
116
+ const definedByType = entities.definedByType[j] || 'NULL';
117
+ values.push(`(${expressId}, '${globalId}', '${name}', '${description}', '${type}', '${objectType}', ${hasGeometry}, ${isType}, ${containedInStorey}, ${definedByType})`);
118
+ }
119
+ if (values.length > 0) {
120
+ await this.conn.query(`INSERT INTO entities VALUES ${values.join(', ')}`);
121
+ }
122
+ }
123
+ console.log(`[DuckDB] Registered entities table with ${entities.count} rows`);
124
+ }
125
+ /**
126
+ * Create and populate properties table
127
+ */
128
+ async createPropertiesTable(store) {
129
+ await this.conn.query(`
130
+ CREATE TABLE properties (
131
+ entity_id INTEGER,
132
+ pset_name VARCHAR,
133
+ pset_global_id VARCHAR,
134
+ prop_name VARCHAR,
135
+ prop_type VARCHAR,
136
+ value_string VARCHAR,
137
+ value_real DOUBLE,
138
+ value_int INTEGER,
139
+ value_bool BOOLEAN
140
+ )
141
+ `);
142
+ const { properties, strings } = store;
143
+ const batchSize = 1000;
144
+ const propTypeNames = {
145
+ [PropertyValueType.String]: 'String',
146
+ [PropertyValueType.Real]: 'Real',
147
+ [PropertyValueType.Integer]: 'Integer',
148
+ [PropertyValueType.Boolean]: 'Boolean',
149
+ [PropertyValueType.Logical]: 'Logical',
150
+ [PropertyValueType.Label]: 'Label',
151
+ [PropertyValueType.Identifier]: 'Identifier',
152
+ [PropertyValueType.Text]: 'Text',
153
+ [PropertyValueType.Enum]: 'Enum',
154
+ [PropertyValueType.Reference]: 'Reference',
155
+ [PropertyValueType.List]: 'List',
156
+ };
157
+ for (let i = 0; i < properties.count; i += batchSize) {
158
+ const end = Math.min(i + batchSize, properties.count);
159
+ const values = [];
160
+ for (let j = i; j < end; j++) {
161
+ const entityId = properties.entityId[j];
162
+ const psetName = escapeSQL(strings.get(properties.psetName[j]));
163
+ const psetGlobalId = escapeSQL(strings.get(properties.psetGlobalId[j]));
164
+ const propName = escapeSQL(strings.get(properties.propName[j]));
165
+ const propType = propTypeNames[properties.propType[j]] || 'Unknown';
166
+ const valueStringIdx = properties.valueString[j];
167
+ const valueString = valueStringIdx >= 0 ? escapeSQL(strings.get(valueStringIdx)) : '';
168
+ const valueReal = isNaN(properties.valueReal[j]) ? 'NULL' : properties.valueReal[j];
169
+ const valueInt = properties.valueInt[j];
170
+ const valueBoolRaw = properties.valueBool[j];
171
+ const valueBool = valueBoolRaw === 255 ? 'NULL' : valueBoolRaw === 1 ? 'true' : 'false';
172
+ values.push(`(${entityId}, '${psetName}', '${psetGlobalId}', '${propName}', '${propType}', '${valueString}', ${valueReal}, ${valueInt}, ${valueBool})`);
173
+ }
174
+ if (values.length > 0) {
175
+ await this.conn.query(`INSERT INTO properties VALUES ${values.join(', ')}`);
176
+ }
177
+ }
178
+ console.log(`[DuckDB] Registered properties table with ${properties.count} rows`);
179
+ }
180
+ /**
181
+ * Create and populate quantities table
182
+ */
183
+ async createQuantitiesTable(store) {
184
+ await this.conn.query(`
185
+ CREATE TABLE quantities (
186
+ entity_id INTEGER,
187
+ qset_name VARCHAR,
188
+ quantity_name VARCHAR,
189
+ quantity_type VARCHAR,
190
+ value DOUBLE,
191
+ formula VARCHAR
192
+ )
193
+ `);
194
+ const { quantities, strings } = store;
195
+ const batchSize = 1000;
196
+ const quantTypeNames = {
197
+ [QuantityType.Length]: 'Length',
198
+ [QuantityType.Area]: 'Area',
199
+ [QuantityType.Volume]: 'Volume',
200
+ [QuantityType.Count]: 'Count',
201
+ [QuantityType.Weight]: 'Weight',
202
+ [QuantityType.Time]: 'Time',
203
+ };
204
+ for (let i = 0; i < quantities.count; i += batchSize) {
205
+ const end = Math.min(i + batchSize, quantities.count);
206
+ const values = [];
207
+ for (let j = i; j < end; j++) {
208
+ const entityId = quantities.entityId[j];
209
+ const qsetName = escapeSQL(strings.get(quantities.qsetName[j]));
210
+ const quantityName = escapeSQL(strings.get(quantities.quantityName[j]));
211
+ const quantityType = quantTypeNames[quantities.quantityType[j]] || 'Unknown';
212
+ const value = quantities.value[j];
213
+ const formulaIdx = quantities.formula[j];
214
+ const formula = formulaIdx > 0 ? escapeSQL(strings.get(formulaIdx)) : '';
215
+ values.push(`(${entityId}, '${qsetName}', '${quantityName}', '${quantityType}', ${value}, '${formula}')`);
216
+ }
217
+ if (values.length > 0) {
218
+ await this.conn.query(`INSERT INTO quantities VALUES ${values.join(', ')}`);
219
+ }
220
+ }
221
+ console.log(`[DuckDB] Registered quantities table with ${quantities.count} rows`);
222
+ }
223
+ /**
224
+ * Create and populate relationships table
225
+ */
226
+ async createRelationshipsTable(store) {
227
+ await this.conn.query(`
228
+ CREATE TABLE relationships (
229
+ source_id INTEGER,
230
+ target_id INTEGER,
231
+ rel_type VARCHAR,
232
+ rel_id INTEGER
233
+ )
234
+ `);
235
+ const { relationships } = store;
236
+ const edges = relationships.forward;
237
+ const batchSize = 1000;
238
+ const relTypeNames = {
239
+ [RelationshipType.ContainsElements]: 'ContainsElements',
240
+ [RelationshipType.Aggregates]: 'Aggregates',
241
+ [RelationshipType.DefinesByProperties]: 'DefinesByProperties',
242
+ [RelationshipType.DefinesByType]: 'DefinesByType',
243
+ [RelationshipType.AssociatesMaterial]: 'AssociatesMaterial',
244
+ [RelationshipType.AssociatesClassification]: 'AssociatesClassification',
245
+ [RelationshipType.VoidsElement]: 'VoidsElement',
246
+ [RelationshipType.FillsElement]: 'FillsElement',
247
+ [RelationshipType.ConnectsPathElements]: 'ConnectsPathElements',
248
+ [RelationshipType.ConnectsElements]: 'ConnectsElements',
249
+ [RelationshipType.SpaceBoundary]: 'SpaceBoundary',
250
+ [RelationshipType.AssignsToGroup]: 'AssignsToGroup',
251
+ [RelationshipType.AssignsToProduct]: 'AssignsToProduct',
252
+ [RelationshipType.ReferencedInSpatialStructure]: 'ReferencedInSpatialStructure',
253
+ };
254
+ // Flatten CSR format to rows
255
+ const rows = [];
256
+ for (const [sourceId, offset] of edges.offsets) {
257
+ const count = edges.counts.get(sourceId) || 0;
258
+ for (let i = offset; i < offset + count; i++) {
259
+ rows.push({
260
+ sourceId,
261
+ targetId: edges.edgeTargets[i],
262
+ relType: relTypeNames[edges.edgeTypes[i]] || 'Unknown',
263
+ relId: edges.edgeRelIds[i],
264
+ });
265
+ }
266
+ }
267
+ // Insert in batches
268
+ for (let i = 0; i < rows.length; i += batchSize) {
269
+ const end = Math.min(i + batchSize, rows.length);
270
+ const values = [];
271
+ for (let j = i; j < end; j++) {
272
+ const row = rows[j];
273
+ values.push(`(${row.sourceId}, ${row.targetId}, '${row.relType}', ${row.relId})`);
274
+ }
275
+ if (values.length > 0) {
276
+ await this.conn.query(`INSERT INTO relationships VALUES ${values.join(', ')}`);
277
+ }
278
+ }
279
+ console.log(`[DuckDB] Registered relationships table with ${rows.length} rows`);
280
+ }
281
+ /**
282
+ * Create convenience views
283
+ */
284
+ async createViews() {
285
+ try {
286
+ await this.conn.query(`
287
+ CREATE VIEW IF NOT EXISTS walls AS
288
+ SELECT * FROM entities WHERE type IN ('IfcWall', 'IfcWallStandardCase')
289
+ `);
290
+ await this.conn.query(`
291
+ CREATE VIEW IF NOT EXISTS doors AS
292
+ SELECT * FROM entities WHERE type = 'IfcDoor'
293
+ `);
294
+ await this.conn.query(`
295
+ CREATE VIEW IF NOT EXISTS windows AS
296
+ SELECT * FROM entities WHERE type = 'IfcWindow'
297
+ `);
298
+ await this.conn.query(`
299
+ CREATE VIEW IF NOT EXISTS slabs AS
300
+ SELECT * FROM entities WHERE type = 'IfcSlab'
301
+ `);
302
+ await this.conn.query(`
303
+ CREATE VIEW IF NOT EXISTS columns AS
304
+ SELECT * FROM entities WHERE type = 'IfcColumn'
305
+ `);
306
+ await this.conn.query(`
307
+ CREATE VIEW IF NOT EXISTS beams AS
308
+ SELECT * FROM entities WHERE type = 'IfcBeam'
309
+ `);
310
+ await this.conn.query(`
311
+ CREATE VIEW IF NOT EXISTS spaces AS
312
+ SELECT * FROM entities WHERE type = 'IfcSpace'
313
+ `);
314
+ // Create a view joining entities with their properties
315
+ await this.conn.query(`
316
+ CREATE VIEW IF NOT EXISTS entity_properties AS
317
+ SELECT
318
+ e.express_id, e.name as entity_name, e.type as entity_type,
319
+ p.pset_name, p.prop_name, p.prop_type,
320
+ p.value_string, p.value_real, p.value_int, p.value_bool
321
+ FROM entities e
322
+ LEFT JOIN properties p ON e.express_id = p.entity_id
323
+ `);
324
+ // Create a view joining entities with their quantities
325
+ await this.conn.query(`
326
+ CREATE VIEW IF NOT EXISTS entity_quantities AS
327
+ SELECT
328
+ e.express_id, e.name as entity_name, e.type as entity_type,
329
+ q.qset_name, q.quantity_name, q.quantity_type, q.value
330
+ FROM entities e
331
+ LEFT JOIN quantities q ON e.express_id = q.entity_id
332
+ `);
333
+ console.log('[DuckDB] Created convenience views');
334
+ }
335
+ catch (error) {
336
+ // Views may fail if tables aren't registered yet - that's OK
337
+ console.warn('[DuckDB] Could not create views:', error);
338
+ }
339
+ }
340
+ /**
341
+ * Check if DuckDB is available
342
+ */
343
+ static async isAvailable() {
344
+ try {
345
+ // Dynamic import using Function constructor to prevent Vite static analysis
346
+ // @ts-ignore - DuckDB is optional dependency
347
+ await new Function('return import("@duckdb/duckdb-wasm")')();
348
+ return true;
349
+ }
350
+ catch {
351
+ return false;
352
+ }
353
+ }
354
+ /**
355
+ * Dispose of DuckDB resources
356
+ */
357
+ async dispose() {
358
+ if (this.conn) {
359
+ await this.conn.close();
360
+ this.conn = null;
361
+ }
362
+ if (this.db) {
363
+ await this.db.terminate();
364
+ this.db = null;
365
+ }
366
+ this.initialized = false;
367
+ this.initPromise = null;
368
+ }
369
+ }
370
+ /**
371
+ * Escape a string for SQL (prevent SQL injection)
372
+ */
373
+ function escapeSQL(value) {
374
+ if (value === null || value === undefined) {
375
+ return '';
376
+ }
377
+ // Replace single quotes with two single quotes (SQL escape)
378
+ return value.replace(/'/g, "''");
379
+ }
380
+ //# sourceMappingURL=duckdb-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duckdb-integration.js","sourceRoot":"","sources":["../../../src/duckdb-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Entity node for graph traversal
3
+ */
4
+ import type { IfcDataStore } from '@ifc-lite/parser';
5
+ import { RelationshipType } from '@ifc-lite/data';
6
+ export declare class EntityNode {
7
+ private store;
8
+ readonly expressId: number;
9
+ constructor(store: IfcDataStore, expressId: number);
10
+ get globalId(): string;
11
+ get name(): string;
12
+ get type(): string;
13
+ contains(): EntityNode[];
14
+ containedIn(): EntityNode | null;
15
+ decomposes(): EntityNode[];
16
+ decomposedBy(): EntityNode | null;
17
+ definingType(): EntityNode | null;
18
+ instances(): EntityNode[];
19
+ voids(): EntityNode[];
20
+ filledBy(): EntityNode[];
21
+ traverse(relType: RelationshipType, depth: number, direction?: 'forward' | 'inverse'): EntityNode[];
22
+ building(): EntityNode | null;
23
+ storey(): EntityNode | null;
24
+ properties(): ReturnType<typeof this.store.properties.getForEntity>;
25
+ property(psetName: string, propName: string): ReturnType<typeof this.store.properties.getPropertyValue>;
26
+ quantities(): ReturnType<typeof this.store.quantities.getForEntity>;
27
+ quantity(qsetName: string, quantityName: string): number | null;
28
+ private getRelated;
29
+ }
30
+ //# sourceMappingURL=entity-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-node.d.ts","sourceRoot":"","sources":["../../../src/entity-node.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAKlD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAGD,QAAQ,IAAI,UAAU,EAAE;IAIxB,WAAW,IAAI,UAAU,GAAG,IAAI;IAMhC,UAAU,IAAI,UAAU,EAAE;IAI1B,YAAY,IAAI,UAAU,GAAG,IAAI;IAMjC,YAAY,IAAI,UAAU,GAAG,IAAI;IAKjC,SAAS,IAAI,UAAU,EAAE;IAKzB,KAAK,IAAI,UAAU,EAAE;IAIrB,QAAQ,IAAI,UAAU,EAAE;IAKxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,GAAG,SAAqB,GAAG,UAAU,EAAE;IAwB9G,QAAQ,IAAI,UAAU,GAAG,IAAI;IAY7B,MAAM,IAAI,UAAU,GAAG,IAAI;IAa3B,UAAU,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;IAInE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;IAIvG,UAAU,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;IAInE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI/D,OAAO,CAAC,UAAU;CAInB"}
@@ -0,0 +1,114 @@
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
+ export class EntityNode {
6
+ store;
7
+ expressId;
8
+ constructor(store, expressId) {
9
+ this.store = store;
10
+ this.expressId = expressId;
11
+ }
12
+ get globalId() {
13
+ return this.store.entities.getGlobalId(this.expressId);
14
+ }
15
+ get name() {
16
+ return this.store.entities.getName(this.expressId);
17
+ }
18
+ get type() {
19
+ return this.store.entities.getTypeName(this.expressId);
20
+ }
21
+ // Spatial containment
22
+ contains() {
23
+ return this.getRelated(RelationshipType.ContainsElements, 'forward');
24
+ }
25
+ containedIn() {
26
+ const nodes = this.getRelated(RelationshipType.ContainsElements, 'inverse');
27
+ return nodes[0] ?? null;
28
+ }
29
+ // Aggregation
30
+ decomposes() {
31
+ return this.getRelated(RelationshipType.Aggregates, 'forward');
32
+ }
33
+ decomposedBy() {
34
+ const nodes = this.getRelated(RelationshipType.Aggregates, 'inverse');
35
+ return nodes[0] ?? null;
36
+ }
37
+ // Types
38
+ definingType() {
39
+ const nodes = this.getRelated(RelationshipType.DefinesByType, 'forward');
40
+ return nodes[0] ?? null;
41
+ }
42
+ instances() {
43
+ return this.getRelated(RelationshipType.DefinesByType, 'inverse');
44
+ }
45
+ // Openings
46
+ voids() {
47
+ return this.getRelated(RelationshipType.VoidsElement, 'forward');
48
+ }
49
+ filledBy() {
50
+ return this.getRelated(RelationshipType.FillsElement, 'inverse');
51
+ }
52
+ // Multi-hop traversal
53
+ traverse(relType, depth, direction = 'forward') {
54
+ const visited = new Set();
55
+ const result = [];
56
+ const visit = (nodeId, currentDepth) => {
57
+ if (currentDepth > depth || visited.has(nodeId))
58
+ return;
59
+ visited.add(nodeId);
60
+ if (nodeId !== this.expressId) {
61
+ result.push(new EntityNode(this.store, nodeId));
62
+ }
63
+ const edges = direction === 'forward'
64
+ ? this.store.relationships.forward.getEdges(nodeId, relType)
65
+ : this.store.relationships.inverse.getEdges(nodeId, relType);
66
+ for (const edge of edges) {
67
+ visit(edge.target, currentDepth + 1);
68
+ }
69
+ };
70
+ visit(this.expressId, 0);
71
+ return result;
72
+ }
73
+ // Spatial shortcuts
74
+ building() {
75
+ let current = this;
76
+ const visited = new Set();
77
+ while (current && !visited.has(current.expressId)) {
78
+ visited.add(current.expressId);
79
+ if (current.type === 'IfcBuilding')
80
+ return current;
81
+ current = current.containedIn() ?? current.decomposedBy();
82
+ }
83
+ return null;
84
+ }
85
+ storey() {
86
+ let current = this;
87
+ const visited = new Set();
88
+ while (current && !visited.has(current.expressId)) {
89
+ visited.add(current.expressId);
90
+ if (current.type === 'IfcBuildingStorey')
91
+ return current;
92
+ current = current.containedIn() ?? current.decomposedBy();
93
+ }
94
+ return null;
95
+ }
96
+ // Data access
97
+ properties() {
98
+ return this.store.properties.getForEntity(this.expressId);
99
+ }
100
+ property(psetName, propName) {
101
+ return this.store.properties.getPropertyValue(this.expressId, psetName, propName);
102
+ }
103
+ quantities() {
104
+ return this.store.quantities.getForEntity(this.expressId);
105
+ }
106
+ quantity(qsetName, quantityName) {
107
+ return this.store.quantities.getQuantityValue(this.expressId, qsetName, quantityName);
108
+ }
109
+ getRelated(relType, direction) {
110
+ const targets = this.store.relationships.getRelated(this.expressId, relType, direction);
111
+ return targets.map(id => new EntityNode(this.store, id));
112
+ }
113
+ }
114
+ //# sourceMappingURL=entity-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-node.js","sourceRoot":"","sources":["../../../src/entity-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Fluent query builder for entities
3
+ */
4
+ import type { IfcDataStore } from '@ifc-lite/parser';
5
+ import { IfcTypeEnum } from '@ifc-lite/data';
6
+ import { QueryResultEntity } from './query-result-entity.js';
7
+ export type ComparisonOperator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith';
8
+ export declare class EntityQuery {
9
+ private store;
10
+ private typeFilter;
11
+ private idFilter;
12
+ private propertyFilters;
13
+ private limitCount;
14
+ private offsetCount;
15
+ private includeFlags;
16
+ constructor(store: IfcDataStore, types: IfcTypeEnum[] | null, ids?: number[] | null);
17
+ whereProperty(psetName: string, propName: string, operator: ComparisonOperator, value: any): this;
18
+ limit(count: number): this;
19
+ offset(count: number): this;
20
+ includeGeometry(): this;
21
+ includeProperties(): this;
22
+ includeQuantities(): this;
23
+ includeAll(): this;
24
+ execute(): QueryResultEntity[];
25
+ ids(): Promise<number[]>;
26
+ count(): Promise<number>;
27
+ first(): Promise<QueryResultEntity | null>;
28
+ private getCandidateIds;
29
+ private applyPropertyFilters;
30
+ }
31
+ //# sourceMappingURL=entity-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query.d.ts","sourceRoot":"","sources":["../../../src/entity-query.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,UAAU,GAAG,YAAY,CAAC;AAElG,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,eAAe,CAAiF;IACxG,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAA0E;gBAElF,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,EAAE,GAAG,IAAW;IAUzF,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAKjG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3B,eAAe,IAAI,IAAI;IAKvB,iBAAiB,IAAI,IAAI;IAKzB,iBAAiB,IAAI,IAAI;IAKzB,UAAU,IAAI,IAAI;IASlB,OAAO,IAAI,iBAAiB,EAAE;IA6BxB,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQxB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAMxB,KAAK,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAShD,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,oBAAoB;CAa7B"}