@ifc-lite/query 1.0.0 → 1.1.1

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 (127) hide show
  1. package/dist/duckdb-integration.d.ts.map +1 -0
  2. package/dist/duckdb-integration.js.map +1 -0
  3. package/dist/entity-node.d.ts.map +1 -0
  4. package/dist/entity-node.js.map +1 -0
  5. package/dist/entity-query.d.ts.map +1 -0
  6. package/dist/entity-query.js.map +1 -0
  7. package/dist/entity-table.d.ts.map +1 -0
  8. package/dist/entity-table.js.map +1 -0
  9. package/dist/fluent-api.d.ts.map +1 -0
  10. package/dist/fluent-api.js.map +1 -0
  11. package/dist/ifc-query.d.ts.map +1 -0
  12. package/dist/ifc-query.js.map +1 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/property-table.d.ts.map +1 -0
  16. package/dist/property-table.js.map +1 -0
  17. package/dist/query-result-entity.d.ts.map +1 -0
  18. package/dist/query-result-entity.js.map +1 -0
  19. package/package.json +5 -5
  20. package/dist/parser/src/classification-extractor.d.ts +0 -73
  21. package/dist/parser/src/classification-extractor.d.ts.map +0 -1
  22. package/dist/parser/src/classification-extractor.js +0 -218
  23. package/dist/parser/src/classification-extractor.js.map +0 -1
  24. package/dist/parser/src/columnar-parser.d.ts +0 -43
  25. package/dist/parser/src/columnar-parser.d.ts.map +0 -1
  26. package/dist/parser/src/columnar-parser.js +0 -226
  27. package/dist/parser/src/columnar-parser.js.map +0 -1
  28. package/dist/parser/src/entity-extractor.d.ts +0 -15
  29. package/dist/parser/src/entity-extractor.d.ts.map +0 -1
  30. package/dist/parser/src/entity-extractor.js +0 -144
  31. package/dist/parser/src/entity-extractor.js.map +0 -1
  32. package/dist/parser/src/entity-index.d.ts +0 -11
  33. package/dist/parser/src/entity-index.d.ts.map +0 -1
  34. package/dist/parser/src/entity-index.js +0 -24
  35. package/dist/parser/src/entity-index.js.map +0 -1
  36. package/dist/parser/src/generated/entities.d.ts +0 -6198
  37. package/dist/parser/src/generated/entities.d.ts.map +0 -1
  38. package/dist/parser/src/generated/entities.js +0 -5
  39. package/dist/parser/src/generated/entities.js.map +0 -1
  40. package/dist/parser/src/generated/enums.d.ts +0 -2260
  41. package/dist/parser/src/generated/enums.d.ts.map +0 -1
  42. package/dist/parser/src/generated/enums.js +0 -2470
  43. package/dist/parser/src/generated/enums.js.map +0 -1
  44. package/dist/parser/src/generated/schema-registry.d.ts +0 -50
  45. package/dist/parser/src/generated/schema-registry.d.ts.map +0 -1
  46. package/dist/parser/src/generated/schema-registry.js +0 -60518
  47. package/dist/parser/src/generated/schema-registry.js.map +0 -1
  48. package/dist/parser/src/georef-extractor.d.ts +0 -60
  49. package/dist/parser/src/georef-extractor.d.ts.map +0 -1
  50. package/dist/parser/src/georef-extractor.js +0 -200
  51. package/dist/parser/src/georef-extractor.js.map +0 -1
  52. package/dist/parser/src/ifc-schema.d.ts +0 -13
  53. package/dist/parser/src/ifc-schema.d.ts.map +0 -1
  54. package/dist/parser/src/ifc-schema.js +0 -203
  55. package/dist/parser/src/ifc-schema.js.map +0 -1
  56. package/dist/parser/src/index.d.ts +0 -43
  57. package/dist/parser/src/index.d.ts.map +0 -1
  58. package/dist/parser/src/index.js +0 -150
  59. package/dist/parser/src/index.js.map +0 -1
  60. package/dist/parser/src/material-extractor.d.ts +0 -97
  61. package/dist/parser/src/material-extractor.d.ts.map +0 -1
  62. package/dist/parser/src/material-extractor.js +0 -283
  63. package/dist/parser/src/material-extractor.js.map +0 -1
  64. package/dist/parser/src/property-extractor.d.ts +0 -23
  65. package/dist/parser/src/property-extractor.d.ts.map +0 -1
  66. package/dist/parser/src/property-extractor.js +0 -102
  67. package/dist/parser/src/property-extractor.js.map +0 -1
  68. package/dist/parser/src/quantity-extractor.d.ts +0 -64
  69. package/dist/parser/src/quantity-extractor.d.ts.map +0 -1
  70. package/dist/parser/src/quantity-extractor.js +0 -202
  71. package/dist/parser/src/quantity-extractor.js.map +0 -1
  72. package/dist/parser/src/relationship-extractor.d.ts +0 -18
  73. package/dist/parser/src/relationship-extractor.d.ts.map +0 -1
  74. package/dist/parser/src/relationship-extractor.js +0 -91
  75. package/dist/parser/src/relationship-extractor.js.map +0 -1
  76. package/dist/parser/src/spatial-hierarchy-builder.d.ts +0 -21
  77. package/dist/parser/src/spatial-hierarchy-builder.d.ts.map +0 -1
  78. package/dist/parser/src/spatial-hierarchy-builder.js +0 -201
  79. package/dist/parser/src/spatial-hierarchy-builder.js.map +0 -1
  80. package/dist/parser/src/style-extractor.d.ts +0 -83
  81. package/dist/parser/src/style-extractor.d.ts.map +0 -1
  82. package/dist/parser/src/style-extractor.js +0 -327
  83. package/dist/parser/src/style-extractor.js.map +0 -1
  84. package/dist/parser/src/tokenizer.d.ts +0 -26
  85. package/dist/parser/src/tokenizer.d.ts.map +0 -1
  86. package/dist/parser/src/tokenizer.js +0 -181
  87. package/dist/parser/src/tokenizer.js.map +0 -1
  88. package/dist/parser/src/types.d.ts +0 -42
  89. package/dist/parser/src/types.d.ts.map +0 -1
  90. package/dist/parser/src/types.js +0 -5
  91. package/dist/parser/src/types.js.map +0 -1
  92. package/dist/query/src/duckdb-integration.d.ts.map +0 -1
  93. package/dist/query/src/duckdb-integration.js.map +0 -1
  94. package/dist/query/src/entity-node.d.ts.map +0 -1
  95. package/dist/query/src/entity-node.js.map +0 -1
  96. package/dist/query/src/entity-query.d.ts.map +0 -1
  97. package/dist/query/src/entity-query.js.map +0 -1
  98. package/dist/query/src/entity-table.d.ts.map +0 -1
  99. package/dist/query/src/entity-table.js.map +0 -1
  100. package/dist/query/src/fluent-api.d.ts.map +0 -1
  101. package/dist/query/src/fluent-api.js.map +0 -1
  102. package/dist/query/src/ifc-query.d.ts.map +0 -1
  103. package/dist/query/src/ifc-query.js.map +0 -1
  104. package/dist/query/src/index.d.ts.map +0 -1
  105. package/dist/query/src/index.js.map +0 -1
  106. package/dist/query/src/property-table.d.ts.map +0 -1
  107. package/dist/query/src/property-table.js.map +0 -1
  108. package/dist/query/src/query-result-entity.d.ts.map +0 -1
  109. package/dist/query/src/query-result-entity.js.map +0 -1
  110. /package/dist/{query/src/duckdb-integration.d.ts → duckdb-integration.d.ts} +0 -0
  111. /package/dist/{query/src/duckdb-integration.js → duckdb-integration.js} +0 -0
  112. /package/dist/{query/src/entity-node.d.ts → entity-node.d.ts} +0 -0
  113. /package/dist/{query/src/entity-node.js → entity-node.js} +0 -0
  114. /package/dist/{query/src/entity-query.d.ts → entity-query.d.ts} +0 -0
  115. /package/dist/{query/src/entity-query.js → entity-query.js} +0 -0
  116. /package/dist/{query/src/entity-table.d.ts → entity-table.d.ts} +0 -0
  117. /package/dist/{query/src/entity-table.js → entity-table.js} +0 -0
  118. /package/dist/{query/src/fluent-api.d.ts → fluent-api.d.ts} +0 -0
  119. /package/dist/{query/src/fluent-api.js → fluent-api.js} +0 -0
  120. /package/dist/{query/src/ifc-query.d.ts → ifc-query.d.ts} +0 -0
  121. /package/dist/{query/src/ifc-query.js → ifc-query.js} +0 -0
  122. /package/dist/{query/src/index.d.ts → index.d.ts} +0 -0
  123. /package/dist/{query/src/index.js → index.js} +0 -0
  124. /package/dist/{query/src/property-table.d.ts → property-table.d.ts} +0 -0
  125. /package/dist/{query/src/property-table.js → property-table.js} +0 -0
  126. /package/dist/{query/src/query-result-entity.d.ts → query-result-entity.d.ts} +0 -0
  127. /package/dist/{query/src/query-result-entity.js → query-result-entity.js} +0 -0
@@ -1,60 +0,0 @@
1
- /**
2
- * Georeferencing Extractor
3
- *
4
- * Extracts IFC georeferencing information for coordinate system transformations.
5
- *
6
- * IFC georeferencing concepts:
7
- * - IfcMapConversion: Transformation from local engineering CRS to map CRS
8
- * - IfcProjectedCRS: Target coordinate reference system (e.g., UTM, State Plane)
9
- * - IfcGeometricRepresentationContext: Context with coordinate system info
10
- *
11
- * This enables:
12
- * - Converting IFC coordinates to real-world coordinates (lat/lon or projected)
13
- * - Integration with GIS systems
14
- * - Multi-model coordination (ensuring models align in real-world space)
15
- */
16
- import type { IfcEntity } from './entity-extractor';
17
- export interface MapConversion {
18
- id: number;
19
- sourceCRS: number;
20
- targetCRS: number;
21
- eastings: number;
22
- northings: number;
23
- orthogonalHeight: number;
24
- xAxisAbscissa?: number;
25
- xAxisOrdinate?: number;
26
- scale?: number;
27
- }
28
- export interface ProjectedCRS {
29
- id: number;
30
- name: string;
31
- description?: string;
32
- geodeticDatum?: string;
33
- verticalDatum?: string;
34
- mapProjection?: string;
35
- mapZone?: string;
36
- mapUnit?: string;
37
- }
38
- export interface GeoreferenceInfo {
39
- hasGeoreference: boolean;
40
- mapConversion?: MapConversion;
41
- projectedCRS?: ProjectedCRS;
42
- transformMatrix?: number[];
43
- }
44
- /**
45
- * Extract georeferencing information from IFC entities
46
- */
47
- export declare function extractGeoreferencing(entities: Map<number, IfcEntity>, entitiesByType: Map<string, number[]>): GeoreferenceInfo;
48
- /**
49
- * Transform a point from local to world coordinates
50
- */
51
- export declare function transformToWorld(localPoint: [number, number, number], georef: GeoreferenceInfo): [number, number, number] | null;
52
- /**
53
- * Transform a point from world to local coordinates
54
- */
55
- export declare function transformToLocal(worldPoint: [number, number, number], georef: GeoreferenceInfo): [number, number, number] | null;
56
- /**
57
- * Get coordinate system description
58
- */
59
- export declare function getCoordinateSystemDescription(georef: GeoreferenceInfo): string;
60
- //# sourceMappingURL=georef-extractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"georef-extractor.d.ts","sourceRoot":"","sources":["../../../../parser/src/georef-extractor.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAChC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACpC,gBAAgB,CA+BlB;AAwFD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACpC,MAAM,EAAE,gBAAgB,GACvB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAcjC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACpC,MAAM,EAAE,gBAAgB,GACvB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA2BjC;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAuB/E"}
@@ -1,200 +0,0 @@
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
- * Extract georeferencing information from IFC entities
6
- */
7
- export function extractGeoreferencing(entities, entitiesByType) {
8
- const info = {
9
- hasGeoreference: false,
10
- };
11
- // Extract IfcMapConversion
12
- const mapConversionIds = entitiesByType.get('IfcMapConversion') || [];
13
- if (mapConversionIds.length > 0) {
14
- const entity = entities.get(mapConversionIds[0]);
15
- if (entity) {
16
- info.mapConversion = extractMapConversion(entity);
17
- info.hasGeoreference = true;
18
- }
19
- }
20
- // Extract IfcProjectedCRS
21
- const projectedCRSIds = entitiesByType.get('IfcProjectedCRS') || [];
22
- if (projectedCRSIds.length > 0) {
23
- const entity = entities.get(projectedCRSIds[0]);
24
- if (entity) {
25
- info.projectedCRS = extractProjectedCRS(entity);
26
- info.hasGeoreference = true;
27
- }
28
- }
29
- // Compute transformation matrix if we have map conversion
30
- if (info.mapConversion) {
31
- info.transformMatrix = computeTransformMatrix(info.mapConversion);
32
- }
33
- return info;
34
- }
35
- function extractMapConversion(entity) {
36
- // IfcMapConversion attributes (IFC4):
37
- // [0] SourceCRS (IfcCoordinateReferenceSystem)
38
- // [1] TargetCRS (IfcCoordinateReferenceSystem)
39
- // [2] Eastings (IfcLengthMeasure)
40
- // [3] Northings (IfcLengthMeasure)
41
- // [4] OrthogonalHeight (IfcLengthMeasure)
42
- // [5] XAxisAbscissa (OPTIONAL IfcReal)
43
- // [6] XAxisOrdinate (OPTIONAL IfcReal)
44
- // [7] Scale (OPTIONAL IfcReal)
45
- return {
46
- id: entity.id,
47
- sourceCRS: getReference(entity.attributes[0]) || 0,
48
- targetCRS: getReference(entity.attributes[1]) || 0,
49
- eastings: getNumber(entity.attributes[2]) || 0,
50
- northings: getNumber(entity.attributes[3]) || 0,
51
- orthogonalHeight: getNumber(entity.attributes[4]) || 0,
52
- xAxisAbscissa: getNumber(entity.attributes[5]),
53
- xAxisOrdinate: getNumber(entity.attributes[6]),
54
- scale: getNumber(entity.attributes[7]),
55
- };
56
- }
57
- function extractProjectedCRS(entity) {
58
- // IfcProjectedCRS attributes (IFC4):
59
- // [0] Name (IfcLabel)
60
- // [1] Description (OPTIONAL IfcText)
61
- // [2] GeodeticDatum (OPTIONAL IfcIdentifier)
62
- // [3] VerticalDatum (OPTIONAL IfcIdentifier)
63
- // [4] MapProjection (OPTIONAL IfcIdentifier)
64
- // [5] MapZone (OPTIONAL IfcIdentifier)
65
- // [6] MapUnit (OPTIONAL IfcNamedUnit)
66
- // Parse MapUnit if it's a reference
67
- let mapUnit;
68
- const mapUnitRef = getReference(entity.attributes[6]);
69
- if (mapUnitRef) {
70
- // Would need to resolve the IfcNamedUnit entity
71
- mapUnit = 'METRE'; // Default assumption
72
- }
73
- return {
74
- id: entity.id,
75
- name: getString(entity.attributes[0]) || '',
76
- description: getString(entity.attributes[1]),
77
- geodeticDatum: getString(entity.attributes[2]),
78
- verticalDatum: getString(entity.attributes[3]),
79
- mapProjection: getString(entity.attributes[4]),
80
- mapZone: getString(entity.attributes[5]),
81
- mapUnit,
82
- };
83
- }
84
- /**
85
- * Compute 4x4 transformation matrix from local to world coordinates
86
- */
87
- function computeTransformMatrix(mapConversion) {
88
- const { eastings, northings, orthogonalHeight, xAxisAbscissa, xAxisOrdinate, scale } = mapConversion;
89
- // Default scale to 1.0 if not specified
90
- const s = scale || 1.0;
91
- // Compute rotation angle from X-axis direction
92
- let angle = 0;
93
- if (xAxisAbscissa !== undefined && xAxisOrdinate !== undefined) {
94
- angle = Math.atan2(xAxisOrdinate, xAxisAbscissa);
95
- }
96
- const cos = Math.cos(angle);
97
- const sin = Math.sin(angle);
98
- // Build 4x4 transformation matrix:
99
- // [scale*cos -scale*sin 0 eastings ]
100
- // [scale*sin scale*cos 0 northings ]
101
- // [0 0 1 height ]
102
- // [0 0 0 1 ]
103
- return [
104
- s * cos, s * sin, 0, 0,
105
- -s * sin, s * cos, 0, 0,
106
- 0, 0, 1, 0,
107
- eastings, northings, orthogonalHeight, 1,
108
- ];
109
- }
110
- /**
111
- * Transform a point from local to world coordinates
112
- */
113
- export function transformToWorld(localPoint, georef) {
114
- if (!georef.transformMatrix) {
115
- return null;
116
- }
117
- const [x, y, z] = localPoint;
118
- const m = georef.transformMatrix;
119
- // Apply transformation: [x', y', z', 1] = [x, y, z, 1] * M
120
- const xWorld = m[0] * x + m[4] * y + m[8] * z + m[12];
121
- const yWorld = m[1] * x + m[5] * y + m[9] * z + m[13];
122
- const zWorld = m[2] * x + m[6] * y + m[10] * z + m[14];
123
- return [xWorld, yWorld, zWorld];
124
- }
125
- /**
126
- * Transform a point from world to local coordinates
127
- */
128
- export function transformToLocal(worldPoint, georef) {
129
- if (!georef.transformMatrix) {
130
- return null;
131
- }
132
- // Compute inverse transformation
133
- const m = georef.transformMatrix;
134
- const [xWorld, yWorld, zWorld] = worldPoint;
135
- // Extract rotation and scale
136
- const scale = georef.mapConversion?.scale || 1.0;
137
- const angle = Math.atan2(m[1], m[0]);
138
- const cos = Math.cos(-angle);
139
- const sin = Math.sin(-angle);
140
- const invScale = 1.0 / scale;
141
- // Apply inverse translation
142
- const xTrans = xWorld - m[12];
143
- const yTrans = yWorld - m[13];
144
- const zTrans = zWorld - m[14];
145
- // Apply inverse rotation and scale
146
- const x = invScale * (cos * xTrans - sin * yTrans);
147
- const y = invScale * (sin * xTrans + cos * yTrans);
148
- const z = zTrans;
149
- return [x, y, z];
150
- }
151
- /**
152
- * Get coordinate system description
153
- */
154
- export function getCoordinateSystemDescription(georef) {
155
- if (!georef.hasGeoreference) {
156
- return 'Local Engineering Coordinates';
157
- }
158
- const parts = [];
159
- if (georef.projectedCRS) {
160
- parts.push(georef.projectedCRS.name);
161
- if (georef.projectedCRS.mapProjection) {
162
- parts.push(`(${georef.projectedCRS.mapProjection})`);
163
- }
164
- if (georef.projectedCRS.geodeticDatum) {
165
- parts.push(`Datum: ${georef.projectedCRS.geodeticDatum}`);
166
- }
167
- }
168
- if (georef.mapConversion) {
169
- const { eastings, northings, orthogonalHeight } = georef.mapConversion;
170
- parts.push(`Origin: (${eastings.toFixed(2)}, ${northings.toFixed(2)}, ${orthogonalHeight.toFixed(2)})`);
171
- }
172
- return parts.join(' ');
173
- }
174
- // Helper functions
175
- function getString(value) {
176
- if (value === null || value === undefined)
177
- return undefined;
178
- if (typeof value === 'string')
179
- return value;
180
- return String(value);
181
- }
182
- function getNumber(value) {
183
- if (value === null || value === undefined)
184
- return undefined;
185
- if (typeof value === 'number')
186
- return value;
187
- const num = parseFloat(value);
188
- return isNaN(num) ? undefined : num;
189
- }
190
- function getReference(value) {
191
- if (value === null || value === undefined)
192
- return undefined;
193
- if (typeof value === 'number')
194
- return value;
195
- if (typeof value === 'string' && value.startsWith('#')) {
196
- return parseInt(value.substring(1));
197
- }
198
- return undefined;
199
- }
200
- //# sourceMappingURL=georef-extractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"georef-extractor.js","sourceRoot":"","sources":["../../../../parser/src/georef-extractor.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Get all attributes for an IFC entity type by walking the inheritance chain
3
- */
4
- export declare function getAttributeNames(type: string): string[];
5
- /**
6
- * Check if a type is known in the schema
7
- */
8
- export declare function isKnownType(type: string): boolean;
9
- /**
10
- * Get attribute name at a specific index for a type
11
- */
12
- export declare function getAttributeNameAt(type: string, index: number): string | null;
13
- //# sourceMappingURL=ifc-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ifc-schema.d.ts","sourceRoot":"","sources":["../../../../parser/src/ifc-schema.ts"],"names":[],"mappings":"AAmMA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E"}
@@ -1,203 +0,0 @@
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
- * IFC Schema Registry
6
- *
7
- * Defines IFC entity type inheritance hierarchy and attributes.
8
- * Follows the IFC specification inheritance structure.
9
- */
10
- /**
11
- * Type inheritance map: child -> parent
12
- */
13
- const INHERITANCE_MAP = new Map([
14
- // Root level
15
- ['IfcRoot', ''],
16
- // Object definition hierarchy
17
- ['IfcObjectDefinition', 'IfcRoot'],
18
- ['IfcObject', 'IfcObjectDefinition'],
19
- ['IfcProduct', 'IfcObject'],
20
- ['IfcElement', 'IfcProduct'],
21
- ['IfcBuildingElement', 'IfcElement'],
22
- // Spatial structure
23
- ['IfcSpatialElement', 'IfcProduct'],
24
- ['IfcSpatialStructureElement', 'IfcSpatialElement'],
25
- ['IfcProject', 'IfcSpatialStructureElement'],
26
- ['IfcSite', 'IfcSpatialStructureElement'],
27
- ['IfcBuilding', 'IfcSpatialStructureElement'],
28
- ['IfcBuildingStorey', 'IfcSpatialStructureElement'],
29
- ['IfcSpace', 'IfcSpatialElement'],
30
- // Building elements
31
- ['IfcWall', 'IfcBuildingElement'],
32
- ['IfcWallStandardCase', 'IfcWall'],
33
- ['IfcSlab', 'IfcBuildingElement'],
34
- ['IfcBeam', 'IfcBuildingElement'],
35
- ['IfcColumn', 'IfcBuildingElement'],
36
- ['IfcRoof', 'IfcBuildingElement'],
37
- ['IfcStair', 'IfcBuildingElement'],
38
- ['IfcRamp', 'IfcBuildingElement'],
39
- ['IfcRailing', 'IfcBuildingElement'],
40
- ['IfcFooting', 'IfcBuildingElement'],
41
- ['IfcBuildingElementProxy', 'IfcBuildingElement'],
42
- ['IfcFurnishingElement', 'IfcElement'],
43
- // Openings and fillings
44
- ['IfcOpeningElement', 'IfcElement'],
45
- ['IfcWindow', 'IfcBuildingElement'],
46
- ['IfcDoor', 'IfcBuildingElement'],
47
- // MEP
48
- ['IfcDistributionElement', 'IfcElement'],
49
- ['IfcFlowSegment', 'IfcDistributionElement'],
50
- ['IfcFlowTerminal', 'IfcDistributionElement'],
51
- // Relationships
52
- ['IfcRelationship', 'IfcRoot'],
53
- ['IfcRelDefines', 'IfcRelationship'],
54
- ['IfcRelDefinesByProperties', 'IfcRelDefines'],
55
- ['IfcRelDefinesByType', 'IfcRelDefines'],
56
- ['IfcRelConnects', 'IfcRelationship'],
57
- ['IfcRelVoidsElement', 'IfcRelConnects'],
58
- ['IfcRelFillsElement', 'IfcRelConnects'],
59
- ['IfcRelContainedInSpatialStructure', 'IfcRelConnects'],
60
- ['IfcRelAggregates', 'IfcRelConnects'],
61
- ['IfcRelAssociates', 'IfcRelationship'],
62
- ['IfcRelAssociatesMaterial', 'IfcRelAssociates'],
63
- // Property sets
64
- ['IfcPropertyDefinition', 'IfcRoot'],
65
- ['IfcPropertySet', 'IfcPropertyDefinition'],
66
- ['IfcProperty', 'IfcRoot'],
67
- ['IfcPropertySingleValue', 'IfcProperty'],
68
- // Geometry and placement
69
- ['IfcPlacement', 'IfcGeometricRepresentationItem'],
70
- ['IfcLocalPlacement', 'IfcPlacement'],
71
- ['IfcOwnerHistory', 'IfcRoot'],
72
- ]);
73
- /**
74
- * Attributes defined at each entity type level (only attributes added at this level)
75
- */
76
- const TYPE_ATTRIBUTES = new Map([
77
- // IfcRoot (base)
78
- ['IfcRoot', ['GlobalId', 'OwnerHistory', 'Name', 'Description']],
79
- // IfcObjectDefinition (no new attributes, but needed for inheritance walk)
80
- ['IfcObjectDefinition', []],
81
- // IfcObject
82
- ['IfcObject', ['ObjectType']],
83
- // IfcProduct
84
- ['IfcProduct', ['ObjectPlacement', 'Representation']],
85
- // IfcElement
86
- ['IfcElement', ['Tag']],
87
- // IfcBuildingElement (no new attributes, but needed for inheritance walk)
88
- ['IfcBuildingElement', []],
89
- // Spatial structure
90
- ['IfcProject', []],
91
- ['IfcSite', []],
92
- ['IfcBuilding', []],
93
- ['IfcBuildingStorey', []],
94
- ['IfcSpace', []],
95
- // Building elements
96
- ['IfcWall', ['PredefinedType']],
97
- ['IfcWallStandardCase', []],
98
- ['IfcSlab', ['PredefinedType']],
99
- ['IfcBeam', ['PredefinedType']],
100
- ['IfcColumn', ['PredefinedType']],
101
- ['IfcRoof', ['PredefinedType']],
102
- ['IfcStair', ['PredefinedType']],
103
- ['IfcRamp', ['PredefinedType']],
104
- ['IfcRailing', ['PredefinedType']],
105
- ['IfcFooting', ['PredefinedType']],
106
- ['IfcBuildingElementProxy', ['PredefinedType']],
107
- ['IfcFurnishingElement', ['PredefinedType']],
108
- // Openings and fillings
109
- ['IfcOpeningElement', ['PredefinedType']],
110
- ['IfcWindow', ['OverallHeight', 'OverallWidth', 'PredefinedType', 'PartitioningType', 'UserDefinedPartitioningType']],
111
- ['IfcDoor', ['OverallHeight', 'OverallWidth', 'PredefinedType', 'OperationType', 'UserDefinedOperationType']],
112
- // MEP
113
- ['IfcDistributionElement', ['PredefinedType']],
114
- ['IfcFlowSegment', []],
115
- ['IfcFlowTerminal', []],
116
- // Relationships
117
- ['IfcRelationship', []],
118
- ['IfcRelDefines', []],
119
- ['IfcRelDefinesByProperties', []], // Attributes handled specially in relationship-extractor
120
- ['IfcRelDefinesByType', []],
121
- ['IfcRelConnects', []],
122
- ['IfcRelVoidsElement', []],
123
- ['IfcRelFillsElement', []],
124
- ['IfcRelContainedInSpatialStructure', []],
125
- ['IfcRelAggregates', []],
126
- ['IfcRelAssociates', []],
127
- ['IfcRelAssociatesMaterial', []],
128
- // Property sets
129
- ['IfcPropertyDefinition', []],
130
- ['IfcPropertySet', ['HasProperties']],
131
- ['IfcProperty', ['Name']],
132
- ['IfcPropertySingleValue', ['NominalValue', 'Unit']],
133
- // Geometry and placement
134
- ['IfcPlacement', ['PlacementLocation']],
135
- ['IfcLocalPlacement', ['PlacementRelTo', 'RelativePlacement']],
136
- ['IfcOwnerHistory', ['OwningUser', 'OwningApplication', 'State', 'ChangeAction', 'LastModifiedDate', 'LastModifyingUser', 'LastModifyingApplication', 'CreationDate']],
137
- ]);
138
- /**
139
- * Get the parent type for a given IFC entity type
140
- */
141
- function getParentType(type) {
142
- const normalized = normalizeTypeName(type);
143
- const parent = INHERITANCE_MAP.get(normalized);
144
- return parent && parent !== '' ? parent : null;
145
- }
146
- /**
147
- * Normalize type name (handle case variations)
148
- * Converts: IFCWINDOW -> IfcWindow, IfcWindow -> IfcWindow, ifcwindow -> IfcWindow
149
- */
150
- function normalizeTypeName(type) {
151
- // If already in correct format (starts with "Ifc"), return as-is
152
- if (type.startsWith('Ifc')) {
153
- return type;
154
- }
155
- // Convert uppercase or mixed case to PascalCase
156
- const upper = type.toUpperCase();
157
- if (upper.startsWith('IFC')) {
158
- // IFCWINDOW -> IfcWindow
159
- // IFCWALLSTANDARDCASE -> IfcWallStandardCase
160
- const rest = type.slice(3); // Remove "IFC" or "Ifc"
161
- // Convert rest to PascalCase (capitalize first letter, lowercase rest)
162
- const pascalRest = rest.charAt(0).toUpperCase() + rest.slice(1).toLowerCase();
163
- return 'Ifc' + pascalRest;
164
- }
165
- // If doesn't start with IFC, assume it's already normalized or return as-is
166
- return type;
167
- }
168
- /**
169
- * Get all attributes for an IFC entity type by walking the inheritance chain
170
- */
171
- export function getAttributeNames(type) {
172
- const normalized = normalizeTypeName(type);
173
- const attributes = [];
174
- const visited = new Set();
175
- let currentType = normalized;
176
- // Walk up the inheritance chain
177
- while (currentType && !visited.has(currentType)) {
178
- visited.add(currentType);
179
- const typeAttrs = TYPE_ATTRIBUTES.get(currentType);
180
- if (typeAttrs) {
181
- // Prepend attributes (parent attributes come first)
182
- attributes.unshift(...typeAttrs);
183
- }
184
- currentType = getParentType(currentType);
185
- }
186
- // If no attributes found, return empty array (will fallback to indexed)
187
- return attributes;
188
- }
189
- /**
190
- * Check if a type is known in the schema
191
- */
192
- export function isKnownType(type) {
193
- const normalized = normalizeTypeName(type);
194
- return INHERITANCE_MAP.has(normalized) || TYPE_ATTRIBUTES.has(normalized);
195
- }
196
- /**
197
- * Get attribute name at a specific index for a type
198
- */
199
- export function getAttributeNameAt(type, index) {
200
- const attributes = getAttributeNames(type);
201
- return attributes[index] || null;
202
- }
203
- //# sourceMappingURL=ifc-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ifc-schema.js","sourceRoot":"","sources":["../../../../parser/src/ifc-schema.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- /**
2
- * @ifc-lite/parser - Main parser interface
3
- */
4
- export { StepTokenizer } from './tokenizer.js';
5
- export { EntityIndexBuilder } from './entity-index.js';
6
- export { EntityExtractor } from './entity-extractor.js';
7
- export { PropertyExtractor } from './property-extractor.js';
8
- export { QuantityExtractor } from './quantity-extractor.js';
9
- export { RelationshipExtractor } from './relationship-extractor.js';
10
- export { StyleExtractor } from './style-extractor.js';
11
- export { SpatialHierarchyBuilder } from './spatial-hierarchy-builder.js';
12
- export { ColumnarParser, type IfcDataStore } from './columnar-parser.js';
13
- export { extractMaterials, getMaterialForElement, getMaterialNameForElement, type MaterialsData, type Material, type MaterialLayer, type MaterialLayerSet } from './material-extractor.js';
14
- export { extractGeoreferencing, transformToWorld, transformToLocal, getCoordinateSystemDescription, type GeoreferenceInfo, type MapConversion, type ProjectedCRS } from './georef-extractor.js';
15
- export { extractClassifications, getClassificationsForElement, getClassificationCodeForElement, getClassificationPath, groupElementsByClassification, type ClassificationsData, type Classification, type ClassificationReference } from './classification-extractor.js';
16
- export { SCHEMA_REGISTRY, getEntityMetadata, getAllAttributesForEntity, getInheritanceChainForEntity, isKnownEntity } from './generated/schema-registry.js';
17
- export type * from './generated/entities.js';
18
- export * from './generated/enums.js';
19
- export * from './types.js';
20
- export * from './style-extractor.js';
21
- export { getAttributeNames, getAttributeNameAt, isKnownType } from './ifc-schema.js';
22
- import type { ParseResult } from './types.js';
23
- import { type IfcDataStore } from './columnar-parser.js';
24
- export interface ParseOptions {
25
- onProgress?: (progress: {
26
- phase: string;
27
- percent: number;
28
- }) => void;
29
- }
30
- /**
31
- * Main parser class
32
- */
33
- export declare class IfcParser {
34
- /**
35
- * Parse IFC file into structured data
36
- */
37
- parse(buffer: ArrayBuffer, options?: ParseOptions): Promise<ParseResult>;
38
- /**
39
- * Parse IFC file into columnar data store (new format)
40
- */
41
- parseColumnar(buffer: ArrayBuffer, options?: ParseOptions): Promise<IfcDataStore>;
42
- }
43
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../parser/src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;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,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3L,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChM,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAGzQ,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC5J,mBAAmB,yBAAyB,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AAErC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAErF,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AAMzD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwElF;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;CAsD5F"}