@ifc-lite/parser 2.1.8 → 2.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.
Files changed (59) hide show
  1. package/README.md +60 -269
  2. package/dist/classification-extractor.d.ts +1 -1
  3. package/dist/classification-extractor.d.ts.map +1 -1
  4. package/dist/classification-resolver.d.ts +18 -0
  5. package/dist/classification-resolver.d.ts.map +1 -0
  6. package/dist/classification-resolver.js +126 -0
  7. package/dist/classification-resolver.js.map +1 -0
  8. package/dist/columnar-parser-attributes.d.ts +39 -0
  9. package/dist/columnar-parser-attributes.d.ts.map +1 -0
  10. package/dist/columnar-parser-attributes.js +225 -0
  11. package/dist/columnar-parser-attributes.js.map +1 -0
  12. package/dist/columnar-parser-indexes.d.ts +42 -0
  13. package/dist/columnar-parser-indexes.d.ts.map +1 -0
  14. package/dist/columnar-parser-indexes.js +102 -0
  15. package/dist/columnar-parser-indexes.js.map +1 -0
  16. package/dist/columnar-parser-relationships.d.ts +17 -0
  17. package/dist/columnar-parser-relationships.d.ts.map +1 -0
  18. package/dist/columnar-parser-relationships.js +95 -0
  19. package/dist/columnar-parser-relationships.js.map +1 -0
  20. package/dist/columnar-parser.d.ts +2 -21
  21. package/dist/columnar-parser.d.ts.map +1 -1
  22. package/dist/columnar-parser.js +13 -411
  23. package/dist/columnar-parser.js.map +1 -1
  24. package/dist/deterministic-global-id.d.ts +2 -0
  25. package/dist/deterministic-global-id.d.ts.map +1 -0
  26. package/dist/deterministic-global-id.js +71 -0
  27. package/dist/deterministic-global-id.js.map +1 -0
  28. package/dist/georef-extractor.d.ts +7 -1
  29. package/dist/georef-extractor.d.ts.map +1 -1
  30. package/dist/georef-extractor.js +29 -5
  31. package/dist/georef-extractor.js.map +1 -1
  32. package/dist/ifc-schema.d.ts +11 -0
  33. package/dist/ifc-schema.d.ts.map +1 -1
  34. package/dist/ifc-schema.js +20 -1
  35. package/dist/ifc-schema.js.map +1 -1
  36. package/dist/index.d.ts +4 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +12 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/material-extractor.d.ts +1 -1
  41. package/dist/material-extractor.d.ts.map +1 -1
  42. package/dist/material-resolver.d.ts +37 -0
  43. package/dist/material-resolver.d.ts.map +1 -0
  44. package/dist/material-resolver.js +230 -0
  45. package/dist/material-resolver.js.map +1 -0
  46. package/dist/on-demand-extractors.d.ts +4 -51
  47. package/dist/on-demand-extractors.d.ts.map +1 -1
  48. package/dist/on-demand-extractors.js +35 -342
  49. package/dist/on-demand-extractors.js.map +1 -1
  50. package/dist/schedule-extractor.d.ts +95 -0
  51. package/dist/schedule-extractor.d.ts.map +1 -0
  52. package/dist/schedule-extractor.js +511 -0
  53. package/dist/schedule-extractor.js.map +1 -0
  54. package/dist/schedule-serializer.d.ts +57 -0
  55. package/dist/schedule-serializer.d.ts.map +1 -0
  56. package/dist/schedule-serializer.js +309 -0
  57. package/dist/schedule-serializer.js.map +1 -0
  58. package/dist/style-extractor.js.map +1 -1
  59. package/package.json +7 -7
@@ -0,0 +1,225 @@
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 { decodeIfcString } from '@ifc-lite/encoding';
5
+ /**
6
+ * Find the byte range of a quoted string at a specific attribute position in STEP entity bytes.
7
+ * Returns [start, end) byte offsets (excluding quotes), or null if not found.
8
+ *
9
+ * @param buffer - The IFC file buffer
10
+ * @param entityStart - byte offset of the entity
11
+ * @param entityLen - byte length of the entity
12
+ * @param attrIndex - 0-based attribute index (0=GlobalId, 2=Name)
13
+ */
14
+ export function findQuotedAttrRange(buffer, entityStart, entityLen, attrIndex) {
15
+ const end = entityStart + entityLen;
16
+ let pos = entityStart;
17
+ // Skip to opening paren '(' after TYPE name
18
+ while (pos < end && buffer[pos] !== 0x28 /* ( */)
19
+ pos++;
20
+ if (pos >= end)
21
+ return null;
22
+ pos++; // skip '('
23
+ // Skip commas to reach the target attribute
24
+ if (attrIndex > 0) {
25
+ let toSkip = attrIndex;
26
+ let depth = 0;
27
+ let inStr = false;
28
+ while (pos < end && toSkip > 0) {
29
+ const ch = buffer[pos];
30
+ if (ch === 0x27 /* ' */) {
31
+ if (inStr && pos + 1 < end && buffer[pos + 1] === 0x27) {
32
+ pos += 2;
33
+ continue;
34
+ }
35
+ inStr = !inStr;
36
+ }
37
+ else if (!inStr) {
38
+ if (ch === 0x28)
39
+ depth++;
40
+ else if (ch === 0x29)
41
+ depth--;
42
+ else if (ch === 0x2C && depth === 0)
43
+ toSkip--;
44
+ }
45
+ pos++;
46
+ }
47
+ }
48
+ // Skip whitespace
49
+ while (pos < end && (buffer[pos] === 0x20 || buffer[pos] === 0x09))
50
+ pos++;
51
+ // Check for quoted string
52
+ if (pos >= end || buffer[pos] !== 0x27 /* ' */)
53
+ return null;
54
+ pos++; // skip opening quote
55
+ const start = pos;
56
+ // Find closing quote (handle escaped quotes '')
57
+ while (pos < end) {
58
+ if (buffer[pos] === 0x27) {
59
+ if (pos + 1 < end && buffer[pos + 1] === 0x27) {
60
+ pos += 2;
61
+ continue;
62
+ }
63
+ break;
64
+ }
65
+ pos++;
66
+ }
67
+ return [start, pos];
68
+ }
69
+ /**
70
+ * Skip N commas at depth 0 in STEP bytes.
71
+ */
72
+ export function skipCommas(buffer, start, end, count) {
73
+ let pos = start;
74
+ let remaining = count;
75
+ let depth = 0;
76
+ let inString = false;
77
+ while (pos < end && remaining > 0) {
78
+ const ch = buffer[pos];
79
+ if (ch === 0x27) {
80
+ if (inString && pos + 1 < end && buffer[pos + 1] === 0x27) {
81
+ pos += 2;
82
+ continue;
83
+ }
84
+ inString = !inString;
85
+ }
86
+ else if (!inString) {
87
+ if (ch === 0x28)
88
+ depth++;
89
+ else if (ch === 0x29)
90
+ depth--;
91
+ else if (ch === 0x2C && depth === 0)
92
+ remaining--;
93
+ }
94
+ pos++;
95
+ }
96
+ return pos;
97
+ }
98
+ /** Read a #ID entity reference as a number. Returns -1 if not an entity ref. */
99
+ export function readRefId(buffer, pos, end) {
100
+ while (pos < end && (buffer[pos] === 0x20 || buffer[pos] === 0x09))
101
+ pos++;
102
+ if (pos < end && buffer[pos] === 0x23) {
103
+ pos++;
104
+ let num = 0;
105
+ while (pos < end && buffer[pos] >= 0x30 && buffer[pos] <= 0x39) {
106
+ num = num * 10 + (buffer[pos] - 0x30);
107
+ pos++;
108
+ }
109
+ return [num, pos];
110
+ }
111
+ return [-1, pos];
112
+ }
113
+ /** Read a list of entity refs (#id1,#id2,...) or a single #id. Returns [ids, newPos]. */
114
+ export function readRefList(buffer, pos, end) {
115
+ while (pos < end && (buffer[pos] === 0x20 || buffer[pos] === 0x09))
116
+ pos++;
117
+ const ids = [];
118
+ if (pos < end && buffer[pos] === 0x28) {
119
+ pos++;
120
+ while (pos < end && buffer[pos] !== 0x29) {
121
+ while (pos < end && (buffer[pos] === 0x20 || buffer[pos] === 0x09 || buffer[pos] === 0x2C))
122
+ pos++;
123
+ if (pos < end && buffer[pos] === 0x23) {
124
+ const [id, np] = readRefId(buffer, pos, end);
125
+ if (id >= 0)
126
+ ids.push(id);
127
+ pos = np;
128
+ }
129
+ else if (pos < end && buffer[pos] !== 0x29) {
130
+ pos++;
131
+ }
132
+ }
133
+ }
134
+ else if (pos < end && buffer[pos] === 0x23) {
135
+ const [id, np] = readRefId(buffer, pos, end);
136
+ if (id >= 0)
137
+ ids.push(id);
138
+ pos = np;
139
+ }
140
+ return [ids, pos];
141
+ }
142
+ /**
143
+ * Batch extract GlobalId (attr[0]) and Name (attr[2]) for many entities using
144
+ * only 2 TextDecoder.decode() calls total (one for all GlobalIds, one for all Names).
145
+ *
146
+ * This is ~100x faster than calling extractEntity() per entity for large batches
147
+ * because it eliminates per-entity TextDecoder overhead which is significant in Firefox.
148
+ *
149
+ * Returns a Map from expressId → { globalId, name }.
150
+ */
151
+ export async function batchExtractGlobalIdAndName(buffer, refs, yieldIfNeeded) {
152
+ const result = new Map();
153
+ if (refs.length === 0)
154
+ return result;
155
+ const CHUNK_SIZE = 2048;
156
+ // Phase 1: Scan byte ranges for GlobalId and Name positions (no string allocation)
157
+ const gidRanges = []; // [start, end) for each entity
158
+ const nameRanges = [];
159
+ const validIndices = []; // indices into refs for entities with valid ranges
160
+ for (let i = 0; i < refs.length; i++) {
161
+ if (yieldIfNeeded && (i & (CHUNK_SIZE - 1)) === 0) {
162
+ await yieldIfNeeded();
163
+ }
164
+ const ref = refs[i];
165
+ const gidRange = findQuotedAttrRange(buffer, ref.byteOffset, ref.byteLength, 0);
166
+ const nameRange = findQuotedAttrRange(buffer, ref.byteOffset, ref.byteLength, 2);
167
+ gidRanges.push(gidRange ?? [0, 0]);
168
+ nameRanges.push(nameRange ?? [0, 0]);
169
+ validIndices.push(i);
170
+ }
171
+ // Phase 2: Concatenate all GlobalId bytes into one buffer, decode once
172
+ // Use null byte (0x00) as separator (never appears in IFC string content)
173
+ let totalGidBytes = 0;
174
+ let totalNameBytes = 0;
175
+ for (let i = 0; i < validIndices.length; i++) {
176
+ if (yieldIfNeeded && (i & (CHUNK_SIZE - 1)) === 0) {
177
+ await yieldIfNeeded();
178
+ }
179
+ const [gs, ge] = gidRanges[i];
180
+ const [ns, ne] = nameRanges[i];
181
+ totalGidBytes += (ge - gs) + 1; // +1 for separator
182
+ totalNameBytes += (ne - ns) + 1;
183
+ }
184
+ const gidBuf = new Uint8Array(totalGidBytes);
185
+ const nameBuf = new Uint8Array(totalNameBytes);
186
+ let gidOffset = 0;
187
+ let nameOffset = 0;
188
+ for (let i = 0; i < validIndices.length; i++) {
189
+ if (yieldIfNeeded && (i & (CHUNK_SIZE - 1)) === 0) {
190
+ await yieldIfNeeded();
191
+ }
192
+ const [gs, ge] = gidRanges[i];
193
+ const [ns, ne] = nameRanges[i];
194
+ if (ge > gs) {
195
+ gidBuf.set(buffer.subarray(gs, ge), gidOffset);
196
+ gidOffset += ge - gs;
197
+ }
198
+ gidBuf[gidOffset++] = 0; // null separator
199
+ if (ne > ns) {
200
+ nameBuf.set(buffer.subarray(ns, ne), nameOffset);
201
+ nameOffset += ne - ns;
202
+ }
203
+ nameBuf[nameOffset++] = 0;
204
+ }
205
+ // Phase 3: Two TextDecoder calls for ALL entities
206
+ const decoder = new TextDecoder();
207
+ const allGids = decoder.decode(gidBuf.subarray(0, gidOffset));
208
+ const allNames = decoder.decode(nameBuf.subarray(0, nameOffset));
209
+ const gids = allGids.split('\0');
210
+ const names = allNames.split('\0');
211
+ // Phase 4: Build result map
212
+ for (let i = 0; i < validIndices.length; i++) {
213
+ if (yieldIfNeeded && (i & (CHUNK_SIZE - 1)) === 0) {
214
+ await yieldIfNeeded();
215
+ }
216
+ const ref = refs[validIndices[i]];
217
+ const rawName = names[i] || '';
218
+ result.set(ref.expressId, {
219
+ globalId: gids[i] || '',
220
+ name: rawName ? decodeIfcString(rawName) : '',
221
+ });
222
+ }
223
+ return result;
224
+ }
225
+ //# sourceMappingURL=columnar-parser-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnar-parser-attributes.js","sourceRoot":"","sources":["../src/columnar-parser-attributes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Index building and type classification for columnar parsing.
3
+ *
4
+ * Pre-computed type sets for O(1) lookups, type-checking predicates,
5
+ * and interface definitions for spatial and entity-by-ID indexes.
6
+ */
7
+ import type { EntityRef } from './types.js';
8
+ import { RelationshipType, QuantityType } from '@ifc-lite/data';
9
+ export interface SpatialIndex {
10
+ queryAABB(bounds: {
11
+ min: [number, number, number];
12
+ max: [number, number, number];
13
+ }): number[];
14
+ raycast(origin: [number, number, number], direction: [number, number, number]): number[];
15
+ }
16
+ /**
17
+ * Entity-by-ID lookup interface. Supports both Map<number, EntityRef> (legacy)
18
+ * and CompactEntityIndex (memory-optimized typed arrays with LRU cache).
19
+ */
20
+ export type EntityByIdIndex = {
21
+ get(expressId: number): EntityRef | undefined;
22
+ has(expressId: number): boolean;
23
+ readonly size: number;
24
+ keys(): IterableIterator<number>;
25
+ values(): IterableIterator<EntityRef>;
26
+ entries(): IterableIterator<[number, EntityRef]>;
27
+ forEach(callback: (value: EntityRef, key: number) => void): void;
28
+ [Symbol.iterator](): IterableIterator<[number, EntityRef]>;
29
+ };
30
+ export declare const GEOMETRY_TYPES: Set<string>;
31
+ export declare const RELATIONSHIP_TYPES: Set<string>;
32
+ export declare const REL_TYPE_MAP: Record<string, RelationshipType>;
33
+ export declare const QUANTITY_TYPE_MAP: Record<string, QuantityType>;
34
+ export declare const SPATIAL_TYPES: Set<string>;
35
+ export declare const HIERARCHY_REL_TYPES: Set<string>;
36
+ export declare const PROPERTY_REL_TYPES: Set<string>;
37
+ export declare const ASSOCIATION_REL_TYPES: Set<string>;
38
+ export declare const SKIP_DISPLAY_ATTRS: Set<string>;
39
+ export declare const PROPERTY_ENTITY_TYPES: Set<string>;
40
+ export declare const PROPERTY_CONTAINER_TYPES: Set<string>;
41
+ export declare function isIfcTypeLikeEntity(typeUpper: string): boolean;
42
+ //# sourceMappingURL=columnar-parser-indexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnar-parser-indexes.d.ts","sourceRoot":"","sources":["../src/columnar-parser-indexes.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACH,gBAAgB,EAChB,YAAY,EACf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,YAAY;IACzB,SAAS,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,MAAM,EAAE,CAAC;IAC9F,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;CAC5F;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CAC9D,CAAC;AAGF,eAAO,MAAM,cAAc,aAQzB,CAAC;AAIH,eAAO,MAAM,kBAAkB,aAU7B,CAAC;AAIH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAgBzD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAO1D,CAAC;AAGF,eAAO,MAAM,aAAa,aAOxB,CAAC;AAGH,eAAO,MAAM,mBAAmB,aAS9B,CAAC;AAGH,eAAO,MAAM,kBAAkB,aAE7B,CAAC;AAGH,eAAO,MAAM,qBAAqB,aAGhC,CAAC;AAGH,eAAO,MAAM,kBAAkB,aAAsH,CAAC;AAGtJ,eAAO,MAAM,qBAAqB,aAOhC,CAAC;AAEH,eAAO,MAAM,wBAAwB,aAGnC,CAAC;AAEH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9D"}
@@ -0,0 +1,102 @@
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, QuantityType, } from '@ifc-lite/data';
5
+ // Pre-computed type sets for O(1) lookups
6
+ export const GEOMETRY_TYPES = new Set([
7
+ 'IFCWALL', 'IFCWALLSTANDARDCASE', 'IFCDOOR', 'IFCWINDOW', 'IFCSLAB',
8
+ 'IFCCOLUMN', 'IFCBEAM', 'IFCROOF', 'IFCSTAIR', 'IFCSTAIRFLIGHT',
9
+ 'IFCRAILING', 'IFCRAMP', 'IFCRAMPFLIGHT', 'IFCPLATE', 'IFCMEMBER',
10
+ 'IFCCURTAINWALL', 'IFCFOOTING', 'IFCPILE', 'IFCBUILDINGELEMENTPROXY',
11
+ 'IFCFURNISHINGELEMENT', 'IFCFLOWSEGMENT', 'IFCFLOWTERMINAL',
12
+ 'IFCFLOWCONTROLLER', 'IFCFLOWFITTING', 'IFCSPACE', 'IFCOPENINGELEMENT',
13
+ 'IFCSITE', 'IFCBUILDING', 'IFCBUILDINGSTOREY',
14
+ ]);
15
+ // IMPORTANT: This set MUST include ALL RelationshipType enum values to prevent semantic loss
16
+ // Missing types will be skipped during parsing, causing incomplete relationship graphs
17
+ export const RELATIONSHIP_TYPES = new Set([
18
+ 'IFCRELCONTAINEDINSPATIALSTRUCTURE', 'IFCRELAGGREGATES',
19
+ 'IFCRELDEFINESBYPROPERTIES', 'IFCRELDEFINESBYTYPE',
20
+ 'IFCRELASSOCIATESMATERIAL', 'IFCRELASSOCIATESCLASSIFICATION',
21
+ 'IFCRELASSOCIATESDOCUMENT',
22
+ 'IFCRELVOIDSELEMENT', 'IFCRELFILLSELEMENT',
23
+ 'IFCRELCONNECTSPATHELEMENTS', 'IFCRELCONNECTSELEMENTS',
24
+ 'IFCRELSPACEBOUNDARY',
25
+ 'IFCRELASSIGNSTOGROUP', 'IFCRELASSIGNSTOPRODUCT',
26
+ 'IFCRELREFERENCEDINSPATIALSTRUCTURE',
27
+ ]);
28
+ // Map IFC relationship type strings to RelationshipType enum
29
+ // MUST cover ALL RelationshipType enum values (15 types total)
30
+ export const REL_TYPE_MAP = {
31
+ 'IFCRELCONTAINEDINSPATIALSTRUCTURE': RelationshipType.ContainsElements,
32
+ 'IFCRELAGGREGATES': RelationshipType.Aggregates,
33
+ 'IFCRELDEFINESBYPROPERTIES': RelationshipType.DefinesByProperties,
34
+ 'IFCRELDEFINESBYTYPE': RelationshipType.DefinesByType,
35
+ 'IFCRELASSOCIATESMATERIAL': RelationshipType.AssociatesMaterial,
36
+ 'IFCRELASSOCIATESCLASSIFICATION': RelationshipType.AssociatesClassification,
37
+ 'IFCRELASSOCIATESDOCUMENT': RelationshipType.AssociatesDocument,
38
+ 'IFCRELVOIDSELEMENT': RelationshipType.VoidsElement,
39
+ 'IFCRELFILLSELEMENT': RelationshipType.FillsElement,
40
+ 'IFCRELCONNECTSPATHELEMENTS': RelationshipType.ConnectsPathElements,
41
+ 'IFCRELCONNECTSELEMENTS': RelationshipType.ConnectsElements,
42
+ 'IFCRELSPACEBOUNDARY': RelationshipType.SpaceBoundary,
43
+ 'IFCRELASSIGNSTOGROUP': RelationshipType.AssignsToGroup,
44
+ 'IFCRELASSIGNSTOPRODUCT': RelationshipType.AssignsToProduct,
45
+ 'IFCRELREFERENCEDINSPATIALSTRUCTURE': RelationshipType.ReferencedInSpatialStructure,
46
+ };
47
+ export const QUANTITY_TYPE_MAP = {
48
+ 'IFCQUANTITYLENGTH': QuantityType.Length,
49
+ 'IFCQUANTITYAREA': QuantityType.Area,
50
+ 'IFCQUANTITYVOLUME': QuantityType.Volume,
51
+ 'IFCQUANTITYCOUNT': QuantityType.Count,
52
+ 'IFCQUANTITYWEIGHT': QuantityType.Weight,
53
+ 'IFCQUANTITYTIME': QuantityType.Time,
54
+ };
55
+ // Types needed for spatial hierarchy (small subset)
56
+ export const SPATIAL_TYPES = new Set([
57
+ 'IFCPROJECT', 'IFCSITE', 'IFCBUILDING', 'IFCBUILDINGSTOREY', 'IFCSPACE',
58
+ 'IFCFACILITY', 'IFCFACILITYPART',
59
+ 'IFCBRIDGE', 'IFCBRIDGEPART',
60
+ 'IFCROAD', 'IFCROADPART',
61
+ 'IFCRAILWAY', 'IFCRAILWAYPART',
62
+ 'IFCMARINEFACILITY',
63
+ ]);
64
+ // Relationship types needed for hierarchy and structural relationships
65
+ export const HIERARCHY_REL_TYPES = new Set([
66
+ 'IFCRELAGGREGATES', 'IFCRELCONTAINEDINSPATIALSTRUCTURE',
67
+ 'IFCRELDEFINESBYTYPE',
68
+ // Structural relationships (voids, fills, connections, groups)
69
+ 'IFCRELVOIDSELEMENT', 'IFCRELFILLSELEMENT',
70
+ 'IFCRELCONNECTSPATHELEMENTS', 'IFCRELCONNECTSELEMENTS',
71
+ 'IFCRELSPACEBOUNDARY',
72
+ 'IFCRELASSIGNSTOGROUP', 'IFCRELASSIGNSTOPRODUCT',
73
+ 'IFCRELREFERENCEDINSPATIALSTRUCTURE',
74
+ ]);
75
+ // Relationship types for on-demand property loading
76
+ export const PROPERTY_REL_TYPES = new Set([
77
+ 'IFCRELDEFINESBYPROPERTIES',
78
+ ]);
79
+ // Relationship types for on-demand classification/material loading
80
+ export const ASSOCIATION_REL_TYPES = new Set([
81
+ 'IFCRELASSOCIATESCLASSIFICATION', 'IFCRELASSOCIATESMATERIAL',
82
+ 'IFCRELASSOCIATESDOCUMENT',
83
+ ]);
84
+ // Attributes to skip in extractAllEntityAttributes (shown elsewhere or non-displayable)
85
+ export const SKIP_DISPLAY_ATTRS = new Set(['GlobalId', 'OwnerHistory', 'ObjectPlacement', 'Representation', 'HasPropertySets', 'RepresentationMaps']);
86
+ // Property-related entity types for on-demand extraction
87
+ export const PROPERTY_ENTITY_TYPES = new Set([
88
+ 'IFCPROPERTYSET', 'IFCELEMENTQUANTITY',
89
+ 'IFCPROPERTYSINGLEVALUE', 'IFCPROPERTYENUMERATEDVALUE',
90
+ 'IFCPROPERTYBOUNDEDVALUE', 'IFCPROPERTYTABLEVALUE',
91
+ 'IFCPROPERTYLISTVALUE', 'IFCPROPERTYREFERENCEVALUE',
92
+ 'IFCQUANTITYLENGTH', 'IFCQUANTITYAREA', 'IFCQUANTITYVOLUME',
93
+ 'IFCQUANTITYCOUNT', 'IFCQUANTITYWEIGHT', 'IFCQUANTITYTIME',
94
+ ]);
95
+ export const PROPERTY_CONTAINER_TYPES = new Set([
96
+ 'IFCPROPERTYSET',
97
+ 'IFCELEMENTQUANTITY',
98
+ ]);
99
+ export function isIfcTypeLikeEntity(typeUpper) {
100
+ return typeUpper.endsWith('TYPE') || typeUpper.endsWith('STYLE');
101
+ }
102
+ //# sourceMappingURL=columnar-parser-indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnar-parser-indexes.js","sourceRoot":"","sources":["../src/columnar-parser-indexes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Extract relatingObject and relatedObjects from a relationship entity using byte-level scanning.
3
+ * No TextDecoder needed - only extracts numeric entity IDs.
4
+ */
5
+ export declare function extractRelFast(buffer: Uint8Array, byteOffset: number, byteLength: number, typeUpper: string): {
6
+ relatingObject: number;
7
+ relatedObjects: number[];
8
+ } | null;
9
+ /**
10
+ * Extract property rel data: attr[4]=relatedObjects, attr[5]=relatingDef.
11
+ * Numbers only, no TextDecoder.
12
+ */
13
+ export declare function extractPropertyRelFast(buffer: Uint8Array, byteOffset: number, byteLength: number): {
14
+ relatedObjects: number[];
15
+ relatingDef: number;
16
+ } | null;
17
+ //# sourceMappingURL=columnar-parser-relationships.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnar-parser-relationships.d.ts","sourceRoot":"","sources":["../src/columnar-parser-relationships.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAClB;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CA+C7D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACnB;IAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkB1D"}
@@ -0,0 +1,95 @@
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
+ * Relationship extraction for columnar parsing.
6
+ *
7
+ * Byte-level relationship scanners that extract numeric entity IDs
8
+ * from STEP relationship entities without TextDecoder overhead.
9
+ */
10
+ import { skipCommas, readRefId, readRefList } from './columnar-parser-attributes.js';
11
+ /**
12
+ * Extract relatingObject and relatedObjects from a relationship entity using byte-level scanning.
13
+ * No TextDecoder needed - only extracts numeric entity IDs.
14
+ */
15
+ export function extractRelFast(buffer, byteOffset, byteLength, typeUpper) {
16
+ const end = byteOffset + byteLength;
17
+ let pos = byteOffset;
18
+ while (pos < end && buffer[pos] !== 0x28)
19
+ pos++;
20
+ if (pos >= end)
21
+ return null;
22
+ pos++;
23
+ // Skip to attr[4] (all IfcRelationship subtypes have 4 shared IfcRoot+IfcRelationship attrs)
24
+ pos = skipCommas(buffer, pos, end, 4);
25
+ if (typeUpper === 'IFCRELCONTAINEDINSPATIALSTRUCTURE'
26
+ || typeUpper === 'IFCRELREFERENCEDINSPATIALSTRUCTURE'
27
+ || typeUpper === 'IFCRELDEFINESBYPROPERTIES'
28
+ || typeUpper === 'IFCRELDEFINESBYTYPE') {
29
+ // attr[4]=RelatedObjects, attr[5]=RelatingObject
30
+ const [related, rp] = readRefList(buffer, pos, end);
31
+ pos = rp;
32
+ while (pos < end && buffer[pos] !== 0x2C)
33
+ pos++;
34
+ pos++;
35
+ const [relating, _] = readRefId(buffer, pos, end);
36
+ if (relating < 0 || related.length === 0)
37
+ return null;
38
+ return { relatingObject: relating, relatedObjects: related };
39
+ }
40
+ else if (typeUpper === 'IFCRELASSIGNSTOGROUP' || typeUpper === 'IFCRELASSIGNSTOPRODUCT') {
41
+ const [related, rp] = readRefList(buffer, pos, end);
42
+ pos = skipCommas(buffer, rp, end, 2);
43
+ const [relating, _] = readRefId(buffer, pos, end);
44
+ if (relating < 0 || related.length === 0)
45
+ return null;
46
+ return { relatingObject: relating, relatedObjects: related };
47
+ }
48
+ else if (typeUpper === 'IFCRELCONNECTSELEMENTS' || typeUpper === 'IFCRELCONNECTSPATHELEMENTS') {
49
+ pos = skipCommas(buffer, pos, end, 1);
50
+ const [relating, rp2] = readRefId(buffer, pos, end);
51
+ pos = skipCommas(buffer, rp2, end, 1);
52
+ const [related, _] = readRefId(buffer, pos, end);
53
+ if (relating < 0 || related < 0)
54
+ return null;
55
+ return { relatingObject: relating, relatedObjects: [related] };
56
+ }
57
+ else {
58
+ // Default: attr[4]=RelatingObject, attr[5]=RelatedObject(s)
59
+ const [relating, rp] = readRefId(buffer, pos, end);
60
+ if (relating < 0)
61
+ return null;
62
+ pos = rp;
63
+ while (pos < end && buffer[pos] !== 0x2C)
64
+ pos++;
65
+ pos++;
66
+ const [related, _] = readRefList(buffer, pos, end);
67
+ if (related.length === 0)
68
+ return null;
69
+ return { relatingObject: relating, relatedObjects: related };
70
+ }
71
+ }
72
+ /**
73
+ * Extract property rel data: attr[4]=relatedObjects, attr[5]=relatingDef.
74
+ * Numbers only, no TextDecoder.
75
+ */
76
+ export function extractPropertyRelFast(buffer, byteOffset, byteLength) {
77
+ const end = byteOffset + byteLength;
78
+ let pos = byteOffset;
79
+ while (pos < end && buffer[pos] !== 0x28)
80
+ pos++;
81
+ if (pos >= end)
82
+ return null;
83
+ pos++;
84
+ pos = skipCommas(buffer, pos, end, 4);
85
+ const [relatedObjects, rp] = readRefList(buffer, pos, end);
86
+ pos = rp;
87
+ while (pos < end && buffer[pos] !== 0x2C)
88
+ pos++;
89
+ pos++;
90
+ const [relatingDef, _] = readRefId(buffer, pos, end);
91
+ if (relatingDef < 0 || relatedObjects.length === 0)
92
+ return null;
93
+ return { relatedObjects, relatingDef };
94
+ }
95
+ //# sourceMappingURL=columnar-parser-relationships.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnar-parser-relationships.js","sourceRoot":"","sources":["../src/columnar-parser-relationships.ts"],"names":[],"mappings":"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"}
@@ -7,27 +7,8 @@
7
7
  import type { EntityRef } from './types.js';
8
8
  import { StringTable, EntityTableBuilder, PropertyTableBuilder, RelationshipGraphBuilder } from '@ifc-lite/data';
9
9
  import type { SpatialHierarchy, QuantityTable, PropertyValue } from '@ifc-lite/data';
10
- export interface SpatialIndex {
11
- queryAABB(bounds: {
12
- min: [number, number, number];
13
- max: [number, number, number];
14
- }): number[];
15
- raycast(origin: [number, number, number], direction: [number, number, number]): number[];
16
- }
17
- /**
18
- * Entity-by-ID lookup interface. Supports both Map<number, EntityRef> (legacy)
19
- * and CompactEntityIndex (memory-optimized typed arrays with LRU cache).
20
- */
21
- export type EntityByIdIndex = {
22
- get(expressId: number): EntityRef | undefined;
23
- has(expressId: number): boolean;
24
- readonly size: number;
25
- keys(): IterableIterator<number>;
26
- values(): IterableIterator<EntityRef>;
27
- entries(): IterableIterator<[number, EntityRef]>;
28
- forEach(callback: (value: EntityRef, key: number) => void): void;
29
- [Symbol.iterator](): IterableIterator<[number, EntityRef]>;
30
- };
10
+ import type { SpatialIndex, EntityByIdIndex } from './columnar-parser-indexes.js';
11
+ export type { SpatialIndex, EntityByIdIndex } from './columnar-parser-indexes.js';
31
12
  export interface IfcDataStore {
32
13
  fileSize: number;
33
14
  schemaVersion: 'IFC2X3' | 'IFC4' | 'IFC4X3' | 'IFC5';
@@ -1 +1 @@
1
- {"version":3,"file":"columnar-parser.d.ts","sourceRoot":"","sources":["../src/columnar-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"columnar-parser.d.ts","sourceRoot":"","sources":["../src/columnar-parser.ts"],"names":[],"mappings":"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"}