@ifc-lite/parser 5.1.0 → 6.1.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 (199) hide show
  1. package/dist/classification-resolver.d.ts.map +1 -1
  2. package/dist/classification-resolver.js +35 -10
  3. package/dist/classification-resolver.js.map +1 -1
  4. package/dist/columnar-entity-preparation.d.ts +25 -0
  5. package/dist/columnar-entity-preparation.d.ts.map +1 -0
  6. package/dist/columnar-entity-preparation.js +282 -0
  7. package/dist/columnar-entity-preparation.js.map +1 -0
  8. package/dist/columnar-parser-indexes.d.ts +17 -1
  9. package/dist/columnar-parser-indexes.d.ts.map +1 -1
  10. package/dist/columnar-parser-indexes.js +31 -21
  11. package/dist/columnar-parser-indexes.js.map +1 -1
  12. package/dist/columnar-parser-root-attributes.d.ts +66 -0
  13. package/dist/columnar-parser-root-attributes.d.ts.map +1 -0
  14. package/dist/columnar-parser-root-attributes.js +245 -0
  15. package/dist/columnar-parser-root-attributes.js.map +1 -0
  16. package/dist/columnar-parser.d.ts +26 -63
  17. package/dist/columnar-parser.d.ts.map +1 -1
  18. package/dist/columnar-parser.js +384 -751
  19. package/dist/columnar-parser.js.map +1 -1
  20. package/dist/compact-entity-index-columns.d.ts +17 -0
  21. package/dist/compact-entity-index-columns.d.ts.map +1 -0
  22. package/dist/compact-entity-index-columns.js +15 -0
  23. package/dist/compact-entity-index-columns.js.map +1 -0
  24. package/dist/compact-entity-index-transport.d.ts +2 -12
  25. package/dist/compact-entity-index-transport.d.ts.map +1 -1
  26. package/dist/compact-entity-index-transport.js +1 -11
  27. package/dist/compact-entity-index-transport.js.map +1 -1
  28. package/dist/compact-entity-index.d.ts +6 -0
  29. package/dist/compact-entity-index.d.ts.map +1 -1
  30. package/dist/compact-entity-index.js +12 -20
  31. package/dist/compact-entity-index.js.map +1 -1
  32. package/dist/cost-extractor.d.ts +10 -0
  33. package/dist/cost-extractor.d.ts.map +1 -0
  34. package/dist/cost-extractor.js +369 -0
  35. package/dist/cost-extractor.js.map +1 -0
  36. package/dist/cost-schedule-2x3.d.ts +31 -0
  37. package/dist/cost-schedule-2x3.d.ts.map +1 -0
  38. package/dist/cost-schedule-2x3.js +75 -0
  39. package/dist/cost-schedule-2x3.js.map +1 -0
  40. package/dist/cost-types.d.ts +105 -0
  41. package/dist/cost-types.d.ts.map +1 -0
  42. package/dist/cost-types.js +5 -0
  43. package/dist/cost-types.js.map +1 -0
  44. package/dist/data-store-transport.d.ts +3 -2
  45. package/dist/data-store-transport.d.ts.map +1 -1
  46. package/dist/data-store-transport.js +10 -34
  47. package/dist/data-store-transport.js.map +1 -1
  48. package/dist/drop-census.d.ts +136 -0
  49. package/dist/drop-census.d.ts.map +1 -0
  50. package/dist/drop-census.js +53 -0
  51. package/dist/drop-census.js.map +1 -0
  52. package/dist/entity-refs-from-index.d.ts +10 -0
  53. package/dist/entity-refs-from-index.d.ts.map +1 -1
  54. package/dist/entity-refs-from-index.js +52 -36
  55. package/dist/entity-refs-from-index.js.map +1 -1
  56. package/dist/entity-scanner.d.ts +5 -0
  57. package/dist/entity-scanner.d.ts.map +1 -1
  58. package/dist/entity-scanner.js +30 -12
  59. package/dist/entity-scanner.js.map +1 -1
  60. package/dist/entity-type-byte-interner.d.ts +12 -0
  61. package/dist/entity-type-byte-interner.d.ts.map +1 -0
  62. package/dist/entity-type-byte-interner.js +66 -0
  63. package/dist/entity-type-byte-interner.js.map +1 -0
  64. package/dist/generated/ifc2x3/schema-registry.d.ts +50 -0
  65. package/dist/generated/ifc2x3/schema-registry.d.ts.map +1 -0
  66. package/dist/generated/ifc2x3/schema-registry.js +50052 -0
  67. package/dist/generated/ifc2x3/schema-registry.js.map +1 -0
  68. package/dist/generated/ifc4x3/schema-registry.d.ts +50 -0
  69. package/dist/generated/ifc4x3/schema-registry.d.ts.map +1 -0
  70. package/dist/generated/ifc4x3/schema-registry.js +71299 -0
  71. package/dist/generated/ifc4x3/schema-registry.js.map +1 -0
  72. package/dist/generated/schema-registry-by-version.d.ts +61 -0
  73. package/dist/generated/schema-registry-by-version.d.ts.map +1 -0
  74. package/dist/generated/schema-registry-by-version.js +86 -0
  75. package/dist/generated/schema-registry-by-version.js.map +1 -0
  76. package/dist/group-assignment-factor.d.ts +13 -0
  77. package/dist/group-assignment-factor.d.ts.map +1 -0
  78. package/dist/group-assignment-factor.js +30 -0
  79. package/dist/group-assignment-factor.js.map +1 -0
  80. package/dist/ifczip.d.ts +6 -0
  81. package/dist/ifczip.d.ts.map +1 -1
  82. package/dist/ifczip.js +20 -11
  83. package/dist/ifczip.js.map +1 -1
  84. package/dist/index.d.ts +10 -6
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +17 -7
  87. package/dist/index.js.map +1 -1
  88. package/dist/on-demand-extractors.d.ts +1 -0
  89. package/dist/on-demand-extractors.d.ts.map +1 -1
  90. package/dist/on-demand-extractors.js +2 -1
  91. package/dist/on-demand-extractors.js.map +1 -1
  92. package/dist/parser.worker.d.ts +6 -3
  93. package/dist/parser.worker.d.ts.map +1 -1
  94. package/dist/parser.worker.js +24 -12
  95. package/dist/parser.worker.js.map +1 -1
  96. package/dist/prepass-source-fingerprint.d.ts +3 -0
  97. package/dist/prepass-source-fingerprint.d.ts.map +1 -0
  98. package/dist/prepass-source-fingerprint.js +13 -0
  99. package/dist/prepass-source-fingerprint.js.map +1 -0
  100. package/dist/property-value-parser.d.ts +10 -0
  101. package/dist/property-value-parser.d.ts.map +1 -1
  102. package/dist/property-value-parser.js +40 -1
  103. package/dist/property-value-parser.js.map +1 -1
  104. package/dist/scan-entities-balanced.d.ts.map +1 -1
  105. package/dist/scan-entities-balanced.js +8 -6
  106. package/dist/scan-entities-balanced.js.map +1 -1
  107. package/dist/scan-worker-lexing.d.ts +14 -0
  108. package/dist/scan-worker-lexing.d.ts.map +1 -0
  109. package/dist/scan-worker-lexing.js +101 -0
  110. package/dist/scan-worker-lexing.js.map +1 -0
  111. package/dist/scan-worker-source.d.ts +1 -1
  112. package/dist/scan-worker-source.d.ts.map +1 -1
  113. package/dist/scan-worker-source.js +61 -59
  114. package/dist/scan-worker-source.js.map +1 -1
  115. package/dist/schedule-extractor.d.ts +2 -80
  116. package/dist/schedule-extractor.d.ts.map +1 -1
  117. package/dist/schedule-extractor.js +100 -225
  118. package/dist/schedule-extractor.js.map +1 -1
  119. package/dist/schedule-serializer-builders.d.ts +28 -0
  120. package/dist/schedule-serializer-builders.d.ts.map +1 -0
  121. package/dist/schedule-serializer-builders.js +163 -0
  122. package/dist/schedule-serializer-builders.js.map +1 -0
  123. package/dist/schedule-serializer.d.ts +6 -0
  124. package/dist/schedule-serializer.d.ts.map +1 -1
  125. package/dist/schedule-serializer.js +26 -165
  126. package/dist/schedule-serializer.js.map +1 -1
  127. package/dist/schedule-types.d.ts +211 -0
  128. package/dist/schedule-types.d.ts.map +1 -0
  129. package/dist/schedule-types.js +221 -0
  130. package/dist/schedule-types.js.map +1 -0
  131. package/dist/select-entity-columns.d.ts +7 -0
  132. package/dist/select-entity-columns.d.ts.map +1 -0
  133. package/dist/select-entity-columns.js +43 -0
  134. package/dist/select-entity-columns.js.map +1 -0
  135. package/dist/spatial-hierarchy-ambiguity.d.ts +39 -0
  136. package/dist/spatial-hierarchy-ambiguity.d.ts.map +1 -0
  137. package/dist/spatial-hierarchy-ambiguity.js +25 -0
  138. package/dist/spatial-hierarchy-ambiguity.js.map +1 -0
  139. package/dist/spatial-hierarchy-attributes.d.ts +54 -0
  140. package/dist/spatial-hierarchy-attributes.d.ts.map +1 -0
  141. package/dist/spatial-hierarchy-attributes.js +145 -0
  142. package/dist/spatial-hierarchy-attributes.js.map +1 -0
  143. package/dist/spatial-hierarchy-builder.d.ts +6 -38
  144. package/dist/spatial-hierarchy-builder.d.ts.map +1 -1
  145. package/dist/spatial-hierarchy-builder.js +48 -166
  146. package/dist/spatial-hierarchy-builder.js.map +1 -1
  147. package/dist/spatial-hierarchy-canonical-parent.d.ts +86 -0
  148. package/dist/spatial-hierarchy-canonical-parent.d.ts.map +1 -0
  149. package/dist/spatial-hierarchy-canonical-parent.js +212 -0
  150. package/dist/spatial-hierarchy-canonical-parent.js.map +1 -0
  151. package/dist/step-lexing.d.ts +1 -1
  152. package/dist/step-lexing.d.ts.map +1 -1
  153. package/dist/step-lexing.js +1 -56
  154. package/dist/step-lexing.js.map +1 -1
  155. package/dist/step-record-boundary.d.ts +28 -0
  156. package/dist/step-record-boundary.d.ts.map +1 -0
  157. package/dist/step-record-boundary.js +108 -0
  158. package/dist/step-record-boundary.js.map +1 -0
  159. package/dist/step-record-boundary.vectors.d.ts +58 -0
  160. package/dist/step-record-boundary.vectors.d.ts.map +1 -0
  161. package/dist/step-record-boundary.vectors.js +80 -0
  162. package/dist/step-record-boundary.vectors.js.map +1 -0
  163. package/dist/structural-extractor.d.ts +9 -0
  164. package/dist/structural-extractor.d.ts.map +1 -0
  165. package/dist/structural-extractor.js +310 -0
  166. package/dist/structural-extractor.js.map +1 -0
  167. package/dist/structural-load-extractor.d.ts +147 -0
  168. package/dist/structural-load-extractor.d.ts.map +1 -0
  169. package/dist/structural-load-extractor.js +178 -0
  170. package/dist/structural-load-extractor.js.map +1 -0
  171. package/dist/structural-step-values.d.ts +51 -0
  172. package/dist/structural-step-values.d.ts.map +1 -0
  173. package/dist/structural-step-values.js +109 -0
  174. package/dist/structural-step-values.js.map +1 -0
  175. package/dist/structural-types.d.ts +145 -0
  176. package/dist/structural-types.d.ts.map +1 -0
  177. package/dist/structural-types.js +5 -0
  178. package/dist/structural-types.js.map +1 -0
  179. package/dist/tokenizer.d.ts +11 -5
  180. package/dist/tokenizer.d.ts.map +1 -1
  181. package/dist/tokenizer.js +75 -21
  182. package/dist/tokenizer.js.map +1 -1
  183. package/dist/wasm-init-retry.d.ts +6 -42
  184. package/dist/wasm-init-retry.d.ts.map +1 -1
  185. package/dist/wasm-init-retry.js +6 -99
  186. package/dist/wasm-init-retry.js.map +1 -1
  187. package/dist/wasm-panic-forward.d.ts +7 -63
  188. package/dist/wasm-panic-forward.d.ts.map +1 -1
  189. package/dist/wasm-panic-forward.js +7 -100
  190. package/dist/wasm-panic-forward.js.map +1 -1
  191. package/dist/worker-index-publication.d.ts +43 -0
  192. package/dist/worker-index-publication.d.ts.map +1 -0
  193. package/dist/worker-index-publication.js +129 -0
  194. package/dist/worker-index-publication.js.map +1 -0
  195. package/dist/worker-parser.d.ts +5 -2
  196. package/dist/worker-parser.d.ts.map +1 -1
  197. package/dist/worker-parser.js +22 -10
  198. package/dist/worker-parser.js.map +1 -1
  199. package/package.json +5 -4
@@ -2,17 +2,25 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { safeUtf8Decode } from '@ifc-lite/data';
5
- import { buildEntityRefsFromIndex } from './entity-refs-from-index.js';
5
+ import { buildEntityRefsFromIndex, buildEntityColumnsFromIndex } from './entity-refs-from-index.js';
6
6
  import { MAX_EXPRESS_ID } from './express-id.js';
7
7
  import { scanEntitiesInWorker } from './scan-worker-inline.js';
8
8
  import { StepTokenizer } from './tokenizer.js';
9
9
  const HUGE_STRING_SCAN_BYTES = 256 * 1024 * 1024;
10
+ /** Internal columnar consumer; public scanIfcEntities still returns EntityRef[]. */
11
+ export function scanColumnarEntities(buffer, options = {}) {
12
+ return scanEntities(buffer, options, true);
13
+ }
10
14
  export async function scanIfcEntities(buffer, options = {}) {
15
+ return scanEntities(buffer, options, false);
16
+ }
17
+ async function scanEntities(buffer, options, keepColumns) {
11
18
  const uint8Buffer = new Uint8Array(buffer);
12
19
  const fileSizeMB = buffer.byteLength / (1024 * 1024);
13
20
  options.onProgress?.({ phase: 'scanning', percent: 0 });
14
21
  const scanStartTime = performance.now();
15
22
  let entityRefs = [];
23
+ let entityColumns;
16
24
  let processed = 0;
17
25
  let scanPath = 'tokenizer';
18
26
  let oversizedIdCount = 0;
@@ -20,8 +28,11 @@ export async function scanIfcEntities(buffer, options = {}) {
20
28
  let preScanCountUnreported = false;
21
29
  if (options.preScannedEntityIndex) {
22
30
  const { ids, starts, lengths } = options.preScannedEntityIndex;
23
- entityRefs = buildEntityRefsFromIndex(uint8Buffer, ids, starts, lengths);
24
- processed = entityRefs.length;
31
+ if (keepColumns)
32
+ entityColumns = buildEntityColumnsFromIndex(uint8Buffer, ids, starts, lengths);
33
+ else
34
+ entityRefs = buildEntityRefsFromIndex(uint8Buffer, ids, starts, lengths);
35
+ processed = ids.length;
25
36
  scanPath = 'pre-scanned';
26
37
  // `undefined` means this producer does not report, which the field's own
27
38
  // doc says is NOT the claim `0` makes. Coercing it here would turn "not
@@ -36,7 +47,9 @@ export async function scanIfcEntities(buffer, options = {}) {
36
47
  // existing diagnostic below rather than a second channel (#3790).
37
48
  malformedRecordCount = options.preScannedEntityIndex.malformedRecordCount ?? 0;
38
49
  }
39
- if (entityRefs.length === 0 && !options.disableWorkerScan && typeof Worker !== 'undefined') {
50
+ if (processed === 0)
51
+ entityColumns = undefined;
52
+ if (processed === 0 && !options.disableWorkerScan && typeof Worker !== 'undefined') {
40
53
  try {
41
54
  const scan = await scanEntitiesInWorker(buffer);
42
55
  entityRefs = scan.refs;
@@ -54,7 +67,7 @@ export async function scanIfcEntities(buffer, options = {}) {
54
67
  }
55
68
  }
56
69
  const wasmScanFn = selectWasmScanFunction(options.wasmApi, uint8Buffer);
57
- if (entityRefs.length === 0 && wasmScanFn) {
70
+ if (processed === 0 && wasmScanFn) {
58
71
  try {
59
72
  entityRefs = normalizeWasmEntityRefs(wasmScanFn());
60
73
  processed = entityRefs.length;
@@ -76,7 +89,7 @@ export async function scanIfcEntities(buffer, options = {}) {
76
89
  processed = 0;
77
90
  }
78
91
  }
79
- if (entityRefs.length === 0) {
92
+ if (processed === 0) {
80
93
  const tokenizer = new StepTokenizer(uint8Buffer);
81
94
  const yieldInterval = 5000;
82
95
  const estimatedTotalEntities = Math.max(fileSizeMB * 13500, 10000);
@@ -112,17 +125,22 @@ export async function scanIfcEntities(buffer, options = {}) {
112
125
  // Before this diagnostic existed, that stop was entirely silent: fewer
113
126
  // entities came back, and nothing said the file might be incomplete.
114
127
  //
115
- // Deliberately singular and generic, not "N record(s)": the scan always
116
- // stops at the first one it hits (there is no reliable place to resume),
128
+ // Deliberately generic: the flag covers three shapes collapsed into one, so a
129
+ // message naming only one of them would misdescribe the others. It no longer
130
+ // says the scan STOPS: since #4179 a record missing its ';' is DROPPED and the
131
+ // scan resumes at the balancing ')', so the common case loses one record from a
132
+ // file otherwise read to completion. The Rust twin
133
+ // (rust/core/src/parser/malformed_records.rs:34) carries the same wording and
134
+ // these two halves must not diverge.
117
135
  // so malformedRecordCount is 0 or 1, never a density, and it covers three
118
136
  // shapes -- an unterminated string, an unterminated comment, and a
119
137
  // declaration cut off before its own '(' -- collapsed into one flag, so a
120
138
  // message naming only one of them would misdescribe the other two every
121
139
  // time it fires.
122
140
  if (malformedRecordCount > 0) {
123
- const message = 'scan: stopped early, a record had a string literal or comment that never closed, or ' +
124
- 'was cut off, before end of input, so scanning could not continue past it; the entities ' +
125
- 'returned may be an incomplete view of this file';
141
+ const message = "scan: dropped a record with no terminating ';' (an unterminated quoted string, " +
142
+ 'comment, or truncated file); the entities returned may be an incomplete view of ' +
143
+ 'this file (#3695)';
126
144
  console.warn(`[IfcParser] ${message}`);
127
145
  options.onDiagnostic?.(message);
128
146
  }
@@ -145,7 +163,7 @@ export async function scanIfcEntities(buffer, options = {}) {
145
163
  const elapsedMs = performance.now() - scanStartTime;
146
164
  options.onDiagnostic?.(`scan complete: entities=${processed} elapsed=${elapsedMs.toFixed(0)}ms`);
147
165
  options.onProgress?.({ phase: 'scanning', percent: 100 });
148
- return { entityRefs, processed, elapsedMs, scanPath, oversizedIdCount, malformedRecordCount };
166
+ return { entityRefs, ...(entityColumns && processed > 0 && scanPath === 'pre-scanned' ? { entityColumns } : {}), processed, elapsedMs, scanPath, oversizedIdCount, malformedRecordCount };
149
167
  }
150
168
  /**
151
169
  * Whether the byte-level WASM scan may run for a source of this size.
@@ -1 +1 @@
1
- {"version":3,"file":"entity-scanner.js","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-scanner.js","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAA6B,MAAM,6BAA6B,CAAC;AAC/H,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAgG/C,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAClC,MAAuC,EACvC,UAA6B,EAAE;IAE/B,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuC,EACvC,UAA6B,EAAE;IAE/B,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,MAAuC,EACvC,OAA0B,EAC1B,WAAoB;IAEpB,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAErD,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAExC,IAAI,UAAU,GAAgB,EAAE,CAAC;IACjC,IAAI,aAA+C,CAAC;IACpD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,QAAQ,GAAmB,WAAW,CAAC;IAC3C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,sBAAsB,GAAG,KAAK,CAAC;IAEnC,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAC/D,IAAI,WAAW;YAAE,aAAa,GAAG,2BAA2B,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;;YAC3F,UAAU,GAAG,wBAAwB,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9E,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;QACvB,QAAQ,GAAG,aAAa,CAAC;QACzB,yEAAyE;QACzE,wEAAwE;QACxE,sEAAsE;QACtE,4EAA4E;QAC5E,qEAAqE;QACrE,wEAAwE;QACxE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACvE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,KAAK,SAAS,CAAC;QACtF,wEAAwE;QACxE,oEAAoE;QACpE,kEAAkE;QAClE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,oBAAoB,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,SAAS,KAAK,CAAC;QAAE,aAAa,GAAG,SAAS,CAAC;IAE/C,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAChD,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACzC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACjD,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;YAC9B,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,8DAA8D,EAAE,KAAK,CAAC,CAAC;YACpF,UAAU,GAAG,EAAE,CAAC;YAChB,SAAS,GAAG,CAAC,CAAC;YACd,gBAAgB,GAAG,CAAC,CAAC;YACrB,oBAAoB,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACxE,IAAI,SAAS,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,UAAU,GAAG,uBAAuB,CAAC,UAAU,EAAE,CAAC,CAAC;YACnD,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;YAC9B,QAAQ,GAAG,MAAM,CAAC;YAClB,uEAAuE;YACvE,gEAAgE;YAChE,uEAAuE;YACvE,qEAAqE;YACrE,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,wCAAwC;YACxC,gBAAgB,GAAG,CAAC,CAAC;YACrB,oBAAoB,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,KAAK,CAAC,CAAC;YACjF,UAAU,GAAG,EAAE,CAAC;YAChB,SAAS,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC;QAC3B,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;QAEnE,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,IAAI;aACrB,CAAC,CAAC;YAEH,SAAS,EAAE,CAAC;YACZ,IAAI,SAAS,GAAG,aAAa,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5E,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;gBAClE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QACD,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;QAC9C,oBAAoB,GAAG,SAAS,CAAC,oBAAoB,CAAC;IACxD,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,8BAA8B;IAC9B,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GACX,iBAAiB,gBAAgB,uCAAuC,cAAc,UAAU,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,uEAAuE;IACvE,2EAA2E;IAC3E,uEAAuE;IACvE,uEAAuE;IACvE,qEAAqE;IACrE,EAAE;IACF,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,gFAAgF;IAChF,mDAAmD;IACnD,8EAA8E;IAC9E,qCAAqC;IACrC,0EAA0E;IAC1E,mEAAmE;IACnE,0EAA0E;IAC1E,wEAAwE;IACxE,iBAAiB;IACjB,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GACX,iFAAiF;YACjF,kFAAkF;YAClF,mBAAmB,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,yEAAyE;IACzE,IAAI,sBAAsB,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QACzD,qEAAqE;QACrE,qEAAqE;QACrE,yEAAyE;QACzE,QAAQ;QACR,MAAM,OAAO,GACX,6EAA6E;YAC7E,0EAA0E,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;IACpD,OAAO,CAAC,YAAY,EAAE,CAAC,2BAA2B,SAAS,YAAY,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjG,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1D,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS,GAAG,CAAC,IAAI,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAC5L,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,UAAU,GAAG,aAAa,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,GAA4B,EAAE,WAAuB;IACnF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,OAAO,GAAG,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;QACpD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CACV,4HAA4H,EAC5H,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CACnD,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,WAAW,CAAC,UAAU,GAAG,sBAAsB,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CACV,sIAAsI,EACtI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,EAClD,sBAAsB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CACvC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAEvF,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC1G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,SAAS;QACT,IAAI;QACJ,UAAU;QACV,UAAU;QACV,UAAU,EAAE,UAAU,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,MAA+B,EAAE,GAAW;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,UAAU,CAAC,MAA+B,EAAE,GAAW;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** Scan-scoped byte interning (#3985). A hash selects candidates, never identity.
2
+ * Repeated normal tokens allocate no string; adversarial collisions switch to
3
+ * native string-key lookup after a bounded number of byte comparisons.
4
+ */
5
+ export declare class EntityTypeByteInterner {
6
+ private readonly buckets;
7
+ private readonly overflow;
8
+ intern(bytes: Uint8Array, start: number, end: number, hash: number): string;
9
+ private internString;
10
+ private readString;
11
+ }
12
+ //# sourceMappingURL=entity-type-byte-interner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-type-byte-interner.d.ts","sourceRoot":"","sources":["../src/entity-type-byte-interner.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IA+B3E,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,UAAU;CAOnB"}
@@ -0,0 +1,66 @@
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
+ const MAX_COLLISION_BUCKET = 8;
5
+ const MAX_FAST_BUCKETS = 4096;
6
+ /** Scan-scoped byte interning (#3985). A hash selects candidates, never identity.
7
+ * Repeated normal tokens allocate no string; adversarial collisions switch to
8
+ * native string-key lookup after a bounded number of byte comparisons.
9
+ */
10
+ export class EntityTypeByteInterner {
11
+ buckets = new Map();
12
+ overflow = new Map();
13
+ intern(bytes, start, end, hash) {
14
+ const bucket = this.buckets.get(hash);
15
+ if (bucket instanceof Map)
16
+ return this.internString(bucket, bytes, start, end);
17
+ if (bucket) {
18
+ const length = end - start;
19
+ for (const candidate of bucket) {
20
+ if (candidate.length !== length)
21
+ continue;
22
+ let i = 0;
23
+ while (i < length && candidate.charCodeAt(i) === bytes[start + i])
24
+ i++;
25
+ if (i === length)
26
+ return candidate;
27
+ }
28
+ const value = this.readString(bytes, start, end);
29
+ if (bucket.length < MAX_COLLISION_BUCKET)
30
+ bucket.push(value);
31
+ else {
32
+ const strings = new Map();
33
+ for (const candidate of bucket)
34
+ strings.set(candidate, candidate);
35
+ strings.set(value, value);
36
+ this.buckets.set(hash, strings);
37
+ }
38
+ return value;
39
+ }
40
+ // A source containing millions of different type spellings must not gain
41
+ // an extra array/map per spelling compared with the original interner.
42
+ if (this.buckets.size >= MAX_FAST_BUCKETS) {
43
+ return this.internString(this.overflow, bytes, start, end);
44
+ }
45
+ const value = this.readString(bytes, start, end);
46
+ this.buckets.set(hash, [value]);
47
+ return value;
48
+ }
49
+ internString(strings, bytes, start, end) {
50
+ const value = this.readString(bytes, start, end);
51
+ const previous = strings.get(value);
52
+ if (previous !== undefined)
53
+ return previous;
54
+ strings.set(value, value);
55
+ return value;
56
+ }
57
+ readString(bytes, start, end) {
58
+ // Deliberately byte→char, matching the existing scanner's raw token
59
+ // spelling for mixed case, unknown names and non-ASCII bytes.
60
+ let value = '';
61
+ for (let i = start; i < end; i++)
62
+ value += String.fromCharCode(bytes[i]);
63
+ return value;
64
+ }
65
+ }
66
+ //# sourceMappingURL=entity-type-byte-interner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-type-byte-interner.js","sourceRoot":"","sources":["../src/entity-type-byte-interner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * IFC Schema Registry
3
+ * Generated from EXPRESS schema: IFC2X3
4
+ *
5
+ * Runtime metadata for IFC entities, types, and relationships.
6
+ *
7
+ * DO NOT EDIT - This file is auto-generated
8
+ */
9
+ export interface EntityMetadata {
10
+ name: string;
11
+ isAbstract: boolean;
12
+ parent?: string;
13
+ attributes: AttributeMetadata[];
14
+ allAttributes?: AttributeMetadata[];
15
+ inheritanceChain?: string[];
16
+ }
17
+ export interface AttributeMetadata {
18
+ name: string;
19
+ type: string;
20
+ optional: boolean;
21
+ isArray: boolean;
22
+ isList: boolean;
23
+ isSet: boolean;
24
+ arrayBounds?: [number, number];
25
+ }
26
+ export interface SchemaRegistry {
27
+ name: string;
28
+ entities: Record<string, EntityMetadata>;
29
+ types: Record<string, string>;
30
+ enums: Record<string, string[]>;
31
+ selects: Record<string, string[]>;
32
+ }
33
+ export declare const SCHEMA_REGISTRY: SchemaRegistry;
34
+ /**
35
+ * Get entity metadata by name (case-insensitive)
36
+ */
37
+ export declare function getEntityMetadata(typeName: string): EntityMetadata | undefined;
38
+ /**
39
+ * Get all attributes for an entity (including inherited)
40
+ */
41
+ export declare function getAllAttributesForEntity(typeName: string): AttributeMetadata[];
42
+ /**
43
+ * Get inheritance chain for an entity
44
+ */
45
+ export declare function getInheritanceChainForEntity(typeName: string): string[];
46
+ /**
47
+ * Check if a type is a known entity
48
+ */
49
+ export declare function isKnownEntity(typeName: string): boolean;
50
+ //# sourceMappingURL=schema-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-registry.d.ts","sourceRoot":"","sources":["../../../src/generated/ifc2x3/schema-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,eAAe,EAAE,cAm/hD7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAK9E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAG/E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAGvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD"}