@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 @@
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../../../parser/src/tokenizer.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,EAAE,UAAU;IAI9B;;;OAGG;IACF,YAAY,IAAI,SAAS,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAmE7G,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,gBAAgB;CA8CzB"}
@@ -0,0 +1,181 @@
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
+ * STEP tokenizer - fast byte-level scanning for entity markers
6
+ * Leverages Spike 1 approach: ~1,259 MB/s throughput
7
+ */
8
+ export class StepTokenizer {
9
+ buffer;
10
+ position = 0;
11
+ lineNumber = 1;
12
+ constructor(buffer) {
13
+ this.buffer = buffer;
14
+ }
15
+ /**
16
+ * Scan for all entity declarations (#EXPRESS_ID = TYPE(...))
17
+ * Returns entity references without parsing full content
18
+ */
19
+ *scanEntities() {
20
+ this.position = 0;
21
+ this.lineNumber = 1;
22
+ while (this.position < this.buffer.length) {
23
+ // Look for '#' character (entity ID marker)
24
+ if (this.buffer[this.position] === 0x23) { // '#'
25
+ const startOffset = this.position;
26
+ const startLine = this.lineNumber;
27
+ // Read express ID
28
+ const expressId = this.readExpressId();
29
+ if (expressId === null) {
30
+ this.position++;
31
+ continue;
32
+ }
33
+ // Skip whitespace
34
+ this.skipWhitespace();
35
+ // Check for '=' (assignment)
36
+ if (this.position >= this.buffer.length || this.buffer[this.position] !== 0x3D) {
37
+ this.position++;
38
+ continue;
39
+ }
40
+ this.position++; // Skip '='
41
+ // Skip whitespace
42
+ this.skipWhitespace();
43
+ // Read type name
44
+ const type = this.readTypeName();
45
+ if (!type) {
46
+ this.position++;
47
+ continue;
48
+ }
49
+ // Skip whitespace
50
+ this.skipWhitespace();
51
+ // Check for '(' (start of parameters)
52
+ if (this.position >= this.buffer.length || this.buffer[this.position] !== 0x28) {
53
+ this.position++;
54
+ continue;
55
+ }
56
+ // Find matching closing parenthesis to get full entity length
57
+ const entityLength = this.findEntityLength(startOffset);
58
+ if (entityLength > 0) {
59
+ yield {
60
+ expressId,
61
+ type,
62
+ offset: startOffset,
63
+ length: entityLength,
64
+ line: startLine,
65
+ };
66
+ }
67
+ }
68
+ else if (this.buffer[this.position] === 0x0A) {
69
+ // Newline
70
+ this.lineNumber++;
71
+ this.position++;
72
+ }
73
+ else {
74
+ this.position++;
75
+ }
76
+ }
77
+ }
78
+ readExpressId() {
79
+ let id = 0;
80
+ let digits = 0;
81
+ let pos = this.position + 1; // Skip '#'
82
+ while (pos < this.buffer.length) {
83
+ const char = this.buffer[pos];
84
+ if (char >= 0x30 && char <= 0x39) { // '0'-'9'
85
+ id = id * 10 + (char - 0x30);
86
+ digits++;
87
+ pos++;
88
+ }
89
+ else {
90
+ break;
91
+ }
92
+ }
93
+ if (digits === 0)
94
+ return null;
95
+ this.position = pos;
96
+ return id;
97
+ }
98
+ readTypeName() {
99
+ let start = this.position;
100
+ let end = start;
101
+ // Type names start with uppercase letter
102
+ if (this.position >= this.buffer.length || this.buffer[this.position] < 0x41 || this.buffer[this.position] > 0x5A) {
103
+ return null;
104
+ }
105
+ while (end < this.buffer.length) {
106
+ const char = this.buffer[end];
107
+ // Allow letters, numbers, and underscore
108
+ if ((char >= 0x41 && char <= 0x5A) || // A-Z
109
+ (char >= 0x61 && char <= 0x7A) || // a-z
110
+ (char >= 0x30 && char <= 0x39) || // 0-9
111
+ char === 0x5F // _
112
+ ) {
113
+ end++;
114
+ }
115
+ else {
116
+ break;
117
+ }
118
+ }
119
+ if (end === start)
120
+ return null;
121
+ const typeName = new TextDecoder().decode(this.buffer.subarray(start, end));
122
+ this.position = end;
123
+ return typeName;
124
+ }
125
+ skipWhitespace() {
126
+ while (this.position < this.buffer.length) {
127
+ const char = this.buffer[this.position];
128
+ if (char === 0x20 || char === 0x09 || char === 0x0D || char === 0x0A) { // space, tab, CR, LF
129
+ if (char === 0x0A)
130
+ this.lineNumber++;
131
+ this.position++;
132
+ }
133
+ else {
134
+ break;
135
+ }
136
+ }
137
+ }
138
+ findEntityLength(startOffset) {
139
+ let pos = this.position;
140
+ let depth = 0;
141
+ let inString = false;
142
+ let escapeNext = false;
143
+ while (pos < this.buffer.length) {
144
+ const char = this.buffer[pos];
145
+ if (escapeNext) {
146
+ escapeNext = false;
147
+ pos++;
148
+ continue;
149
+ }
150
+ if (char === 0x27) { // Single quote (string delimiter)
151
+ inString = !inString;
152
+ pos++;
153
+ continue;
154
+ }
155
+ if (inString) {
156
+ if (char === 0x5C) { // Backslash (escape)
157
+ escapeNext = true;
158
+ }
159
+ pos++;
160
+ continue;
161
+ }
162
+ if (char === 0x28) { // '('
163
+ depth++;
164
+ pos++;
165
+ }
166
+ else if (char === 0x29) { // ')'
167
+ depth--;
168
+ pos++;
169
+ if (depth === 0) {
170
+ // Found matching closing parenthesis
171
+ return pos - startOffset;
172
+ }
173
+ }
174
+ else {
175
+ pos++;
176
+ }
177
+ }
178
+ return 0; // No matching closing parenthesis found
179
+ }
180
+ }
181
+ //# sourceMappingURL=tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../../../parser/src/tokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Core types for IFC parsing
3
+ */
4
+ export interface EntityRef {
5
+ expressId: number;
6
+ type: string;
7
+ byteOffset: number;
8
+ byteLength: number;
9
+ lineNumber: number;
10
+ }
11
+ export interface EntityIndex {
12
+ byId: Map<number, EntityRef>;
13
+ byType: Map<string, number[]>;
14
+ }
15
+ export interface IfcEntity {
16
+ expressId: number;
17
+ type: string;
18
+ attributes: any[];
19
+ }
20
+ export interface PropertyValue {
21
+ type: 'string' | 'number' | 'boolean' | 'null' | 'reference';
22
+ value: string | number | boolean | null | number;
23
+ }
24
+ export interface PropertySet {
25
+ name: string;
26
+ properties: Map<string, PropertyValue>;
27
+ }
28
+ export interface Relationship {
29
+ type: string;
30
+ relatingObject: number;
31
+ relatedObjects: number[];
32
+ attributes?: Record<string, any>;
33
+ }
34
+ export interface ParseResult {
35
+ entities: Map<number, IfcEntity>;
36
+ propertySets: Map<number, PropertySet>;
37
+ relationships: Relationship[];
38
+ entityIndex: EntityIndex;
39
+ fileSize: number;
40
+ entityCount: number;
41
+ }
42
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../parser/src/types.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IAC7D,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,5 @@
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
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../parser/src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * DuckDB-WASM integration for SQL queries
3
+ * Lazy-loaded to avoid adding ~4MB to bundle unless needed
4
+ */
5
+ import type { IfcDataStore } from '@ifc-lite/parser';
6
+ export interface SQLResult {
7
+ columns: string[];
8
+ rows: any[][];
9
+ toArray(): any[];
10
+ toJSON(): any[];
11
+ }
12
+ export declare class DuckDBIntegration {
13
+ private db;
14
+ private conn;
15
+ private initPromise;
16
+ private initialized;
17
+ /**
18
+ * Initialize DuckDB (lazy-loaded)
19
+ */
20
+ init(store: IfcDataStore): Promise<void>;
21
+ /**
22
+ * Execute SQL query
23
+ */
24
+ query(sql: string): Promise<SQLResult>;
25
+ /**
26
+ * Register tables from columnar store using SQL INSERT statements
27
+ * This approach works without Arrow dependencies and is more portable
28
+ */
29
+ private registerTables;
30
+ /**
31
+ * Create and populate entities table
32
+ */
33
+ private createEntitiesTable;
34
+ /**
35
+ * Create and populate properties table
36
+ */
37
+ private createPropertiesTable;
38
+ /**
39
+ * Create and populate quantities table
40
+ */
41
+ private createQuantitiesTable;
42
+ /**
43
+ * Create and populate relationships table
44
+ */
45
+ private createRelationshipsTable;
46
+ /**
47
+ * Create convenience views
48
+ */
49
+ private createViews;
50
+ /**
51
+ * Check if DuckDB is available
52
+ */
53
+ static isAvailable(): Promise<boolean>;
54
+ /**
55
+ * Dispose of DuckDB resources
56
+ */
57
+ dispose(): Promise<void>;
58
+ }
59
+ //# sourceMappingURL=duckdb-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duckdb-integration.d.ts","sourceRoot":"","sources":["../../../src/duckdb-integration.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,OAAO,IAAI,GAAG,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,EAAE,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC9C;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAuB5C;;;OAGG;YACW,cAAc;IAkB5B;;OAEG;YACW,mBAAmB;IAgDjC;;OAEG;YACW,qBAAqB;IA6DnC;;OAEG;YACW,qBAAqB;IAgDnC;;OAEG;YACW,wBAAwB;IAgEtC;;OAEG;YACW,WAAW;IAiEzB;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAW5C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}