@ifc-lite/parser 9.1.0 → 9.4.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 (201) hide show
  1. package/README.md +35 -0
  2. package/dist/abort-error.d.ts +7 -0
  3. package/dist/abort-error.d.ts.map +1 -0
  4. package/dist/abort-error.js +17 -0
  5. package/dist/abort-error.js.map +1 -0
  6. package/dist/classification-overlay.d.ts +13 -0
  7. package/dist/classification-overlay.d.ts.map +1 -0
  8. package/dist/classification-overlay.js +65 -0
  9. package/dist/classification-overlay.js.map +1 -0
  10. package/dist/classification-resolver.d.ts +13 -9
  11. package/dist/classification-resolver.d.ts.map +1 -1
  12. package/dist/classification-resolver.js +109 -74
  13. package/dist/classification-resolver.js.map +1 -1
  14. package/dist/columnar-parser-attributes.d.ts +1 -1
  15. package/dist/columnar-parser-attributes.d.ts.map +1 -1
  16. package/dist/columnar-parser-attributes.js +16 -6
  17. package/dist/columnar-parser-attributes.js.map +1 -1
  18. package/dist/columnar-parser-root-attributes.d.ts +15 -1
  19. package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
  20. package/dist/columnar-parser-root-attributes.js +26 -11
  21. package/dist/columnar-parser-root-attributes.js.map +1 -1
  22. package/dist/columnar-parser.d.ts +13 -15
  23. package/dist/columnar-parser.d.ts.map +1 -1
  24. package/dist/columnar-parser.js +11 -23
  25. package/dist/columnar-parser.js.map +1 -1
  26. package/dist/current-occurrence-quantities.d.ts +13 -0
  27. package/dist/current-occurrence-quantities.d.ts.map +1 -0
  28. package/dist/current-occurrence-quantities.js +69 -0
  29. package/dist/current-occurrence-quantities.js.map +1 -0
  30. package/dist/current-project-units.d.ts +11 -0
  31. package/dist/current-project-units.d.ts.map +1 -0
  32. package/dist/current-project-units.js +41 -0
  33. package/dist/current-project-units.js.map +1 -0
  34. package/dist/current-type-quantities.d.ts +13 -0
  35. package/dist/current-type-quantities.d.ts.map +1 -0
  36. package/dist/current-type-quantities.js +274 -0
  37. package/dist/current-type-quantities.js.map +1 -0
  38. package/dist/data-store-transport.d.ts +1 -0
  39. package/dist/data-store-transport.d.ts.map +1 -1
  40. package/dist/data-store-transport.js +4 -4
  41. package/dist/data-store-transport.js.map +1 -1
  42. package/dist/document-resolver.d.ts +23 -0
  43. package/dist/document-resolver.d.ts.map +1 -0
  44. package/dist/document-resolver.js +122 -0
  45. package/dist/document-resolver.js.map +1 -0
  46. package/dist/effective-entity-record.d.ts +3 -2
  47. package/dist/effective-entity-record.d.ts.map +1 -1
  48. package/dist/effective-entity-record.js +5 -5
  49. package/dist/effective-entity-record.js.map +1 -1
  50. package/dist/effective-metadata-record.d.ts +23 -0
  51. package/dist/effective-metadata-record.d.ts.map +1 -0
  52. package/dist/effective-metadata-record.js +50 -0
  53. package/dist/effective-metadata-record.js.map +1 -0
  54. package/dist/effective-storey.d.ts.map +1 -1
  55. package/dist/effective-storey.js +5 -0
  56. package/dist/effective-storey.js.map +1 -1
  57. package/dist/entity-scanner.d.ts +6 -8
  58. package/dist/entity-scanner.d.ts.map +1 -1
  59. package/dist/entity-scanner.js +26 -13
  60. package/dist/entity-scanner.js.map +1 -1
  61. package/dist/georef-extractor.d.ts +1 -1
  62. package/dist/georef-extractor.d.ts.map +1 -1
  63. package/dist/georef-extractor.js +1 -1
  64. package/dist/georef-extractor.js.map +1 -1
  65. package/dist/ifc-schema.d.ts +2 -1
  66. package/dist/ifc-schema.d.ts.map +1 -1
  67. package/dist/ifc-schema.js +4 -3
  68. package/dist/ifc-schema.js.map +1 -1
  69. package/dist/index.d.ts +9 -12
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +9 -12
  72. package/dist/index.js.map +1 -1
  73. package/dist/length-unit-source.d.ts +25 -0
  74. package/dist/length-unit-source.d.ts.map +1 -0
  75. package/dist/length-unit-source.js +14 -0
  76. package/dist/length-unit-source.js.map +1 -0
  77. package/dist/material-definitions.d.ts +10 -0
  78. package/dist/material-definitions.d.ts.map +1 -0
  79. package/dist/material-definitions.js +224 -0
  80. package/dist/material-definitions.js.map +1 -0
  81. package/dist/material-overlay.d.ts +38 -0
  82. package/dist/material-overlay.d.ts.map +1 -0
  83. package/dist/material-overlay.js +146 -0
  84. package/dist/material-overlay.js.map +1 -0
  85. package/dist/material-properties-extractor.d.ts +2 -11
  86. package/dist/material-properties-extractor.d.ts.map +1 -1
  87. package/dist/material-properties-extractor.js +21 -38
  88. package/dist/material-properties-extractor.js.map +1 -1
  89. package/dist/material-resolver.d.ts +6 -4
  90. package/dist/material-resolver.d.ts.map +1 -1
  91. package/dist/material-resolver.js +176 -386
  92. package/dist/material-resolver.js.map +1 -1
  93. package/dist/measure-unit-scale.d.ts +2 -0
  94. package/dist/measure-unit-scale.d.ts.map +1 -1
  95. package/dist/measure-unit-scale.js +7 -1
  96. package/dist/measure-unit-scale.js.map +1 -1
  97. package/dist/metadata-edit-value.d.ts +4 -0
  98. package/dist/metadata-edit-value.d.ts.map +1 -0
  99. package/dist/metadata-edit-value.js +57 -0
  100. package/dist/metadata-edit-value.js.map +1 -0
  101. package/dist/native-metadata-public.d.ts +9 -0
  102. package/dist/native-metadata-public.d.ts.map +1 -0
  103. package/dist/native-metadata-public.js +12 -0
  104. package/dist/native-metadata-public.js.map +1 -0
  105. package/dist/occurrence-quantity-read-error.d.ts +7 -0
  106. package/dist/occurrence-quantity-read-error.d.ts.map +1 -0
  107. package/dist/occurrence-quantity-read-error.js +13 -0
  108. package/dist/occurrence-quantity-read-error.js.map +1 -0
  109. package/dist/on-demand-extractors.d.ts +3 -38
  110. package/dist/on-demand-extractors.d.ts.map +1 -1
  111. package/dist/on-demand-extractors.js +4 -184
  112. package/dist/on-demand-extractors.js.map +1 -1
  113. package/dist/on-demand-georeferencing.d.ts.map +1 -1
  114. package/dist/on-demand-georeferencing.js +2 -0
  115. package/dist/on-demand-georeferencing.js.map +1 -1
  116. package/dist/parser-worker-trace.d.ts +18 -0
  117. package/dist/parser-worker-trace.d.ts.map +1 -0
  118. package/dist/parser-worker-trace.js +32 -0
  119. package/dist/parser-worker-trace.js.map +1 -0
  120. package/dist/parser.worker.d.ts.map +1 -1
  121. package/dist/parser.worker.js +34 -13
  122. package/dist/parser.worker.js.map +1 -1
  123. package/dist/project-units.d.ts +17 -4
  124. package/dist/project-units.d.ts.map +1 -1
  125. package/dist/project-units.js +104 -37
  126. package/dist/project-units.js.map +1 -1
  127. package/dist/property-complex-value.d.ts.map +1 -1
  128. package/dist/property-complex-value.js +1 -0
  129. package/dist/property-complex-value.js.map +1 -1
  130. package/dist/property-unit.d.ts +2 -0
  131. package/dist/property-unit.d.ts.map +1 -1
  132. package/dist/property-unit.js +4 -1
  133. package/dist/property-unit.js.map +1 -1
  134. package/dist/property-value-parser.d.ts +14 -1
  135. package/dist/property-value-parser.d.ts.map +1 -1
  136. package/dist/property-value-parser.js +42 -22
  137. package/dist/property-value-parser.js.map +1 -1
  138. package/dist/quantity-collect.d.ts +14 -2
  139. package/dist/quantity-collect.d.ts.map +1 -1
  140. package/dist/quantity-collect.js +19 -8
  141. package/dist/quantity-collect.js.map +1 -1
  142. package/dist/relationship-schema-slots.d.ts.map +1 -1
  143. package/dist/relationship-schema-slots.js +2 -1
  144. package/dist/relationship-schema-slots.js.map +1 -1
  145. package/dist/scan-worker-inline.d.ts.map +1 -1
  146. package/dist/scan-worker-inline.js +2 -1
  147. package/dist/scan-worker-inline.js.map +1 -1
  148. package/dist/schedule-extractor.d.ts +2 -1
  149. package/dist/schedule-extractor.d.ts.map +1 -1
  150. package/dist/schedule-extractor.js +11 -2
  151. package/dist/schedule-extractor.js.map +1 -1
  152. package/dist/schedule-serializer-builders.d.ts +7 -0
  153. package/dist/schedule-serializer-builders.d.ts.map +1 -1
  154. package/dist/schedule-serializer-builders.js +17 -17
  155. package/dist/schedule-serializer-builders.js.map +1 -1
  156. package/dist/schedule-serializer.d.ts +8 -3
  157. package/dist/schedule-serializer.d.ts.map +1 -1
  158. package/dist/schedule-serializer.js +36 -1
  159. package/dist/schedule-serializer.js.map +1 -1
  160. package/dist/schedule-task-products.d.ts +38 -0
  161. package/dist/schedule-task-products.d.ts.map +1 -0
  162. package/dist/schedule-task-products.js +69 -0
  163. package/dist/schedule-task-products.js.map +1 -0
  164. package/dist/schedule-types.d.ts +11 -1
  165. package/dist/schedule-types.d.ts.map +1 -1
  166. package/dist/schedule-types.js.map +1 -1
  167. package/dist/schema-entity-name.d.ts +14 -0
  168. package/dist/schema-entity-name.d.ts.map +1 -0
  169. package/dist/schema-entity-name.js +34 -0
  170. package/dist/schema-entity-name.js.map +1 -0
  171. package/dist/schema-exports.d.ts +7 -0
  172. package/dist/schema-exports.d.ts.map +1 -0
  173. package/dist/schema-exports.js +10 -0
  174. package/dist/schema-exports.js.map +1 -0
  175. package/dist/source-project-length-unit.d.ts +53 -0
  176. package/dist/source-project-length-unit.d.ts.map +1 -0
  177. package/dist/source-project-length-unit.js +201 -0
  178. package/dist/source-project-length-unit.js.map +1 -0
  179. package/dist/structural-extractor.js +2 -2
  180. package/dist/structural-extractor.js.map +1 -1
  181. package/dist/structural-load-extractor.d.ts +9 -3
  182. package/dist/structural-load-extractor.d.ts.map +1 -1
  183. package/dist/structural-load-extractor.js +26 -20
  184. package/dist/structural-load-extractor.js.map +1 -1
  185. package/dist/structural-step-values.d.ts +0 -9
  186. package/dist/structural-step-values.d.ts.map +1 -1
  187. package/dist/structural-step-values.js +13 -1
  188. package/dist/structural-step-values.js.map +1 -1
  189. package/dist/type-own-quantity-source.d.ts +37 -0
  190. package/dist/type-own-quantity-source.d.ts.map +1 -0
  191. package/dist/type-own-quantity-source.js +204 -0
  192. package/dist/type-own-quantity-source.js.map +1 -0
  193. package/dist/unit-extractor.d.ts +14 -1
  194. package/dist/unit-extractor.d.ts.map +1 -1
  195. package/dist/unit-extractor.js +34 -31
  196. package/dist/unit-extractor.js.map +1 -1
  197. package/dist/worker-parser.d.ts +7 -0
  198. package/dist/worker-parser.d.ts.map +1 -1
  199. package/dist/worker-parser.js +14 -16
  200. package/dist/worker-parser.js.map +1 -1
  201. package/package.json +6 -5
package/README.md CHANGED
@@ -28,6 +28,12 @@ console.log(`Parsed ${store.entityCount} entities in ${(performance.now() - t0).
28
28
  shared scan selection, and on-demand extraction for properties, quantities,
29
29
  materials, classifications, documents, and attributes.
30
30
 
31
+ `extractDocumentsOnDemand(store, expressId, mutationView?)` folds current native
32
+ document and association edits with the same positional precedence as STEP export.
33
+ Existing normalized document fields keep their casing. Optional target identity and
34
+ `unresolved`/`sourceOrigin` distinguish unreadable metadata and immutable forwarded
35
+ associations when source bytes are absent; such rows do not prove current membership.
36
+
31
37
  ```typescript
32
38
  const store = await parser.parseColumnar(buffer);
33
39
 
@@ -84,15 +90,26 @@ const psets = extractPropertiesOnDemand(store, wallId);
84
90
  // [{ name: 'Pset_WallCommon', properties: [{ name: 'FireRating', value: 'REI 60' }, ...] }]
85
91
 
86
92
  const qsets = extractQuantitiesOnDemand(store, wallId);
93
+ // Pass a native mutation view to resolve current occurrence member Units and dependencies.
94
+ // const currentQsets = extractQuantitiesOnDemand(store, wallId, mutationView);
87
95
  // [{ name: 'Qto_WallBaseQuantities', quantities: [{ name: 'Length', value: 5.0 }, ...] }]
88
96
 
89
97
  const material = extractMaterialsOnDemand(store, wallId);
90
98
  // { name: 'Concrete C30/37', layers: [{ name: 'Concrete', thickness: 0.15 }, ...] }
91
99
 
92
100
  const classifications = extractClassificationsOnDemand(store, wallId);
101
+ // Pass a native mutation view to read current classification edits before export.
102
+ // const currentClassifications = extractClassificationsOnDemand(store, wallId, mutationView);
93
103
  // [{ system: 'Uniclass 2015', identification: 'Pr_60_10_32', name: 'External walls', ... }]
94
104
  ```
95
105
 
106
+ Current occurrence quantity reads with a native mutation view throw
107
+ `OccurrenceQuantityReadError` when their complete inventory cannot be read within
108
+ the 256-set / 4,096-member / 512-unit-read bounds, a unit record is oversized,
109
+ or a member list is unreadable. Report this as
110
+ unavailable coverage instead of treating it as an empty inventory. Source-only
111
+ two-argument reads retain their existing behavior.
112
+
96
113
  ## Georeferencing
97
114
 
98
115
  ```typescript
@@ -107,6 +124,10 @@ if (georef?.hasGeoreference) {
107
124
  }
108
125
  ```
109
126
 
127
+ The exported, immutable `SI_PREFIX_MULTIPLIERS` table maps the exact `IfcSIPrefix`
128
+ enumeration names to their numeric prefix factors. IFC readers and STEP compatibility writers
129
+ share this table; an unknown prefix must be refused rather than treated as 1.
130
+
110
131
  ## Read cost data
111
132
 
112
133
  ```typescript
@@ -147,3 +168,17 @@ See the [Parsing Guide](https://ifclite.dev/docs/guide/parsing/) and [API Refere
147
168
  ## License
148
169
 
149
170
  [MPL-2.0](../../LICENSE)
171
+
172
+ `effectiveMetadataRecord(store, expressId, mutationView?)` is the shared native
173
+ metadata read primitive used by classification, document and viewer structural
174
+ consumers. It returns the current EXPRESS class/attributes, applies native edit
175
+ markers and named/positional precedence, and invalidates cached source fields
176
+ when the model's source transport changes. It never reads retained source-byte
177
+ closures when the current store has no source bytes.
178
+
179
+ Structural extraction retains its existing `StructuralExtractionView.readEntity`
180
+ callback. Applied loads and supports now use that same current record callback;
181
+ the native configuration walk keeps its depth, path-cycle and work bounds and
182
+ reports dropped slots and truncation. Existing normalized structural DTO casing
183
+ is unchanged. IFC2X3-only divergences remain the native reader's documented
184
+ best-effort boundary.
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Build an `AbortError`-shaped error for a cancelled parse. Uses `DOMException`
3
+ * when available (browsers, modern Node) so `err.name === 'AbortError'` matches
4
+ * the same check callers already use for `fetch`/`AbortController` cancellation.
5
+ */
6
+ export declare function makeAbortError(message?: string): Error;
7
+ //# sourceMappingURL=abort-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-error.d.ts","sourceRoot":"","sources":["../src/abort-error.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAA6B,GAAG,KAAK,CAO1E"}
@@ -0,0 +1,17 @@
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
+ * Build an `AbortError`-shaped error for a cancelled parse. Uses `DOMException`
6
+ * when available (browsers, modern Node) so `err.name === 'AbortError'` matches
7
+ * the same check callers already use for `fetch`/`AbortController` cancellation.
8
+ */
9
+ export function makeAbortError(message = 'Parser worker terminated') {
10
+ if (typeof DOMException !== 'undefined') {
11
+ return new DOMException(message, 'AbortError');
12
+ }
13
+ const err = new Error(message);
14
+ err.name = 'AbortError';
15
+ return err;
16
+ }
17
+ //# sourceMappingURL=abort-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-error.js","sourceRoot":"","sources":["../src/abort-error.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,0BAA0B;IACjE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,YAAY,CAAqB,CAAC;IACrE,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { IfcDataStore } from './columnar-parser.js';
2
+ export type { MetadataReadView as ClassificationReadView } from './effective-metadata-record.js';
3
+ import { effectiveMetadataRecord as classificationRecord, type MetadataReadView as ClassificationReadView } from './effective-metadata-record.js';
4
+ export { classificationRecord };
5
+ interface ClassificationEdges {
6
+ references: Map<number, number[]>;
7
+ types: Map<number, number[]>;
8
+ unresolvedSource: boolean;
9
+ }
10
+ /** Build all association/type edges once per model overlay revision; no per-element relationship scan. */
11
+ export declare function classificationEdges(store: IfcDataStore, view: ClassificationReadView): ClassificationEdges;
12
+ export declare function classificationSystemIds(store: IfcDataStore, view: ClassificationReadView): number[];
13
+ //# sourceMappingURL=classification-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classification-overlay.d.ts","sourceRoot":"","sources":["../src/classification-overlay.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,YAAY,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,uBAAuB,IAAI,oBAAoB,EAAE,KAAK,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAClJ,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,UAAU,mBAAmB;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAGD,0GAA0G;AAC1G,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,GAAG,mBAAmB,CAyC1G;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,GAAG,MAAM,EAAE,CAEnG"}
@@ -0,0 +1,65 @@
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
+ /** Model-local classification inputs as the native edit session will export (#7131). */
5
+ import { iterateEffectiveEntities } from '@ifc-lite/data';
6
+ import { resolveEffectiveRelationshipOverlay } from './effective-relationship-overlay.js';
7
+ import { effectiveMetadataRecord as classificationRecord } from './effective-metadata-record.js';
8
+ export { classificationRecord };
9
+ const cache = new WeakMap();
10
+ /** Build all association/type edges once per model overlay revision; no per-element relationship scan. */
11
+ export function classificationEdges(store, view) {
12
+ const revision = view.getMutationRevision();
13
+ const cached = cache.get(store)?.get(view);
14
+ if (cached?.revision === revision)
15
+ return cached.edges;
16
+ const relationTypes = ['IFCRELASSOCIATESCLASSIFICATION', 'IFCRELDEFINESBYTYPE'];
17
+ // @raw-entity-enumeration-ok source relationship ids feed the canonical effective relationship reader; it applies deletion, edits and retypes
18
+ const sourceIds = relationTypes.flatMap(type => store.entityIndex.byType.get(type) ?? []);
19
+ for (const id of view.getTypeMutations?.().keys() ?? [])
20
+ sourceIds.push(id);
21
+ const overlay = resolveEffectiveRelationshipOverlay(store.source?.length ? store : { ...store, getEntity: () => null }, {
22
+ createdEntities: () => view.getNewEntities(),
23
+ mutatedEntityIds: () => sourceIds,
24
+ namedAttributes: id => view.getAttributeMutationsForEntity(id).map(row => [row.name, row.value]),
25
+ positionalAttributes: id => view.getPositionalMutationsForEntity(id) ?? [],
26
+ entityType: id => view.getTypeMutations?.().get(id)?.newType,
27
+ isDeleted: id => view.isDeleted(id),
28
+ });
29
+ // A source-empty transport does not carry enough attributes to reconstruct
30
+ // edited source associations or chains. Preserve uncertainty instead of
31
+ // treating the original forwarded rows as effective live data.
32
+ const unknownSourceIds = [...sourceIds,
33
+ // @raw-entity-enumeration-ok source definition/reference ids are inspected only for live edits when their bytes are unavailable
34
+ ...(store.entityIndex.byType.get('IFCCLASSIFICATION') ?? []), ...(store.entityIndex.byType.get('IFCCLASSIFICATIONREFERENCE') ?? [])];
35
+ const unresolvedSource = !store.source?.length && unknownSourceIds.some(id => view.isDeleted(id)
36
+ || view.getTypeMutations?.().has(id) || view.getAttributeMutationsForEntity(id).length > 0
37
+ || (view.getPositionalMutationsForEntity(id)?.size ?? 0) > 0);
38
+ const edges = { references: new Map(), types: new Map(), unresolvedSource };
39
+ for (const relation of overlay.relationships) {
40
+ const upper = relation.relationshipType.toUpperCase();
41
+ const index = upper === relationTypes[0] ? edges.references : upper === relationTypes[1] ? edges.types : null;
42
+ if (!index)
43
+ continue;
44
+ for (const related of relation.related) {
45
+ if (view.isDeleted(related))
46
+ continue;
47
+ const values = index.get(related) ?? [];
48
+ for (const target of relation.relating)
49
+ if (!view.isDeleted(target) && !values.includes(target))
50
+ values.push(target);
51
+ index.set(related, values);
52
+ }
53
+ }
54
+ let modelCache = cache.get(store);
55
+ if (!modelCache) {
56
+ modelCache = new WeakMap();
57
+ cache.set(store, modelCache);
58
+ }
59
+ modelCache.set(view, { revision, edges });
60
+ return edges;
61
+ }
62
+ export function classificationSystemIds(store, view) {
63
+ return [...iterateEffectiveEntities(store, view, ['IFCCLASSIFICATION'])].map(entity => entity.expressId);
64
+ }
65
+ //# sourceMappingURL=classification-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classification-overlay.js","sourceRoot":"","sources":["../src/classification-overlay.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { IfcDataStore } from './columnar-parser.js';
2
+ import { type ClassificationReadView } from './classification-overlay.js';
2
3
  export interface ClassificationInfo {
3
4
  system?: string;
4
5
  identification?: string;
@@ -7,13 +8,15 @@ export interface ClassificationInfo {
7
8
  description?: string;
8
9
  path?: string[];
9
10
  /**
10
- * True when the relationship graph proves this entity/type carries a
11
- * classification association, but the classification's own attributes
12
- * (system, identification, name, path) could not be read because this
13
- * store has no source bytes — a server-parsed store (issue #3948).
11
+ * True when an association is known but its system or attributes cannot
12
+ * be fully resolved: missing source bytes (#3948), a broken chain, or a
13
+ * cycle (#5290). Known leaf attributes can remain on a partial entry.
14
14
  * Distinguishes "classified but unresolved" from "genuinely unclassified"
15
15
  * (an empty result array), which are otherwise byte-identical to every
16
- * caller. All other fields are left `undefined` on an unresolved entry.
16
+ * caller. A graph-only marker has no other fields.
17
+ * With live edits on a source-empty store these markers retain immutable
18
+ * source evidence; edited source membership needs the original bytes and
19
+ * must not be counted as a known current population.
17
20
  */
18
21
  unresolved?: boolean;
19
22
  }
@@ -24,7 +27,7 @@ export interface ClassificationInfo {
24
27
  * Also checks type-level associations via IfcRelDefinesByType.
25
28
  * Returns an array of classification references with system info.
26
29
  */
27
- export declare function extractClassificationsOnDemand(store: IfcDataStore, entityId: number): ClassificationInfo[];
30
+ export declare function extractClassificationsOnDemand(store: IfcDataStore, entityId: number, view?: ClassificationReadView): ClassificationInfo[];
28
31
  /** Result of {@link extractClassificationSystemsOnDemand}. */
29
32
  export interface ClassificationSystemNames {
30
33
  /** Distinct system names, sorted. Empty when the model genuinely has no
@@ -36,8 +39,9 @@ export interface ClassificationSystemNames {
36
39
  * byType index) but their `Name` could not be read because this store
37
40
  * has no source bytes — a server-parsed store (issue #3948), the same
38
41
  * condition `extractClassificationsOnDemand` signals per-entity via
39
- * `ClassificationInfo.unresolved`. When true, `names` is always `[]`
40
- * and must not be read as "the model has no classification systems".
42
+ * `ClassificationInfo.unresolved`. An effective view may still supply
43
+ * complete authored names alongside unreadable source systems. When
44
+ * true, `names` is incomplete and cannot establish a system's absence.
41
45
  */
42
46
  unresolved: boolean;
43
47
  }
@@ -56,5 +60,5 @@ export interface ClassificationSystemNames {
56
60
  * A model can carry SEVERAL systems at once (e.g. Uniclass, OmniClass, and
57
61
  * a national system) — this returns all of them, sorted alphabetically.
58
62
  */
59
- export declare function extractClassificationSystemsOnDemand(store: IfcDataStore): ClassificationSystemNames;
63
+ export declare function extractClassificationSystemsOnDemand(store: IfcDataStore, view?: ClassificationReadView): ClassificationSystemNames;
60
64
  //# sourceMappingURL=classification-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"classification-resolver.d.ts","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACjB,kBAAkB,EAAE,CA0HtB;AAED,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACtC;;uCAEmC;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,UAAU,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,YAAY,GAAG,yBAAyB,CA6BnG"}
1
+ {"version":3,"file":"classification-resolver.d.ts","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAsE,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE9I,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,sBAAsB,GAC9B,kBAAkB,EAAE,CAuFtB;AA0DD,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACtC;;uCAEmC;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;;OAQG;IACH,UAAU,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,sBAAsB,GAAG,yBAAyB,CA+BlI"}
@@ -5,8 +5,10 @@
5
5
  * Classification extraction — resolves IfcClassificationReference chains
6
6
  * and IfcClassification systems for entity classification lookups.
7
7
  */
8
+ import { getReference } from './attribute-helpers.js';
8
9
  import { EntityExtractor } from './entity-extractor.js';
9
10
  import { RelationshipType } from '@ifc-lite/data';
11
+ import { classificationEdges, classificationRecord, classificationSystemIds } from './classification-overlay.js';
10
12
  /**
11
13
  * Extract classifications for a single entity ON-DEMAND.
12
14
  * Uses the onDemandClassificationMap built during parsing.
@@ -14,10 +16,19 @@ import { RelationshipType } from '@ifc-lite/data';
14
16
  * Also checks type-level associations via IfcRelDefinesByType.
15
17
  * Returns an array of classification references with system info.
16
18
  */
17
- export function extractClassificationsOnDemand(store, entityId) {
19
+ export function extractClassificationsOnDemand(store, entityId, view) {
20
+ if (view?.isDeleted(entityId))
21
+ return [];
22
+ const overlayEdges = view ? classificationEdges(store, view) : null;
23
+ const effectiveEdges = store.source?.length ? overlayEdges : null;
24
+ const baseId = view?.resolveBaseEntityId?.(entityId) ?? entityId;
25
+ const subjects = baseId === entityId ? [entityId] : [entityId, baseId];
18
26
  let classRefIds;
19
- if (store.onDemandClassificationMap) {
20
- classRefIds = store.onDemandClassificationMap.get(entityId);
27
+ if (effectiveEdges) {
28
+ classRefIds = subjects.flatMap(id => effectiveEdges.references.get(id) ?? []);
29
+ }
30
+ else if (store.onDemandClassificationMap) {
31
+ classRefIds = subjects.flatMap(id => store.onDemandClassificationMap?.get(id) ?? []);
21
32
  }
22
33
  else if (store.relationships) {
23
34
  // Fallback: use relationship graph (server-loaded models)
@@ -26,15 +37,18 @@ export function extractClassificationsOnDemand(store, entityId) {
26
37
  classRefIds = related;
27
38
  }
28
39
  // Also check type-level classifications via IfcRelDefinesByType
29
- if (store.relationships) {
30
- const typeIds = store.relationships.getRelated(entityId, RelationshipType.DefinesByType, 'inverse');
40
+ if (effectiveEdges || store.relationships) {
41
+ const typeIds = effectiveEdges ? subjects.flatMap(id => effectiveEdges.types.get(id) ?? []) : store.relationships?.getRelated(baseId, RelationshipType.DefinesByType, 'inverse') ?? [];
31
42
  for (const typeId of typeIds) {
32
43
  let typeClassRefs;
33
- if (store.onDemandClassificationMap) {
44
+ if (effectiveEdges) {
45
+ typeClassRefs = effectiveEdges.references.get(typeId);
46
+ }
47
+ else if (store.onDemandClassificationMap) {
34
48
  typeClassRefs = store.onDemandClassificationMap.get(typeId);
35
49
  }
36
50
  else {
37
- const related = store.relationships.getRelated(typeId, RelationshipType.AssociatesClassification, 'inverse');
51
+ const related = store.relationships?.getRelated(typeId, RelationshipType.AssociatesClassification, 'inverse') ?? [];
38
52
  if (related.length > 0)
39
53
  typeClassRefs = related;
40
54
  }
@@ -43,8 +57,16 @@ export function extractClassificationsOnDemand(store, entityId) {
43
57
  }
44
58
  }
45
59
  }
60
+ const authoredRefIds = !store.source?.length && overlayEdges
61
+ ? subjects.flatMap(id => [...(overlayEdges.references.get(id) ?? []),
62
+ ...(overlayEdges.types.get(id) ?? []).flatMap(typeId => overlayEdges.references.get(typeId) ?? [])])
63
+ : [];
64
+ const authored = authoredRefIds.flatMap(id => {
65
+ const info = classificationInfoForRef(store, id, view);
66
+ return info ? [info] : [];
67
+ });
46
68
  if (!classRefIds || classRefIds.length === 0)
47
- return [];
69
+ return authored;
48
70
  if (!store.source?.length) {
49
71
  // Server-parsed / source-empty store: no source bytes to decode the
50
72
  // classification reference's own attributes. The relationship graph
@@ -71,7 +93,7 @@ export function extractClassificationsOnDemand(store, entityId) {
71
93
  // as its graph. Repeated relationships emit repeated rows while
72
94
  // the graph deduplicates edges, so their counts need not match.
73
95
  if (resolved.length > 0)
74
- return resolved;
96
+ return [...(overlayEdges?.unresolvedSource ? resolved.map(() => ({ unresolved: true })) : resolved), ...authored];
75
97
  }
76
98
  // No forwarded resolved data. Turning an id into
77
99
  // system/identification/name/path needs raw STEP bytes
@@ -81,61 +103,67 @@ export function extractClassificationsOnDemand(store, entityId) {
81
103
  // Surface one unresolved marker per resolved id instead, so callers
82
104
  // — the IDS bridge in particular — can tell "classified, but this
83
105
  // data source can't say more" from "none".
84
- return classRefIds.map(() => ({ unresolved: true }));
106
+ return [...classRefIds.map(() => ({ unresolved: true })), ...authored];
85
107
  }
86
- const extractor = new EntityExtractor(store.source);
87
- const results = [];
88
- for (const classRefId of classRefIds) {
89
- // @raw-entity-enumeration-ok source classification association ids require source byte offsets for EntityExtractor
90
- const ref = store.entityIndex.byId.get(classRefId);
91
- if (!ref)
92
- continue;
93
- const entity = extractor.extractEntity(ref);
94
- if (!entity)
95
- continue;
96
- const typeUpper = entity.type.toUpperCase();
97
- const attrs = entity.attributes || [];
98
- if (typeUpper === 'IFCCLASSIFICATIONREFERENCE') {
99
- // IfcClassificationReference: [Location, Identification, Name, ReferencedSource, Description, Sort]
100
- const info = {
101
- location: typeof attrs[0] === 'string' ? attrs[0] : undefined,
102
- identification: typeof attrs[1] === 'string' ? attrs[1] : undefined,
103
- name: typeof attrs[2] === 'string' ? attrs[2] : undefined,
104
- description: typeof attrs[4] === 'string' ? attrs[4] : undefined,
105
- };
106
- // Walk up to find the classification system name
107
- const referencedSourceId = typeof attrs[3] === 'number' ? attrs[3] : undefined;
108
- if (referencedSourceId) {
109
- const path = walkClassificationChain(store, extractor, referencedSourceId);
110
- info.system = path.systemName;
111
- info.path = path.codes;
112
- // A dangling link, an unreadable entity, or an unexpected
113
- // type broke the walk before it reached an IfcClassification
114
- // root (#5290) — distinct from a `ReferencedSource` that was
115
- // never there to begin with, which `path.chainUnresolved`
116
- // leaves `false` (see the function doc). `info.system` stays
117
- // `undefined` either way, so without this flag
118
- // `resolveClassifications` cannot tell "chain could not be
119
- // resolved" from "chain resolved to no system", and flattens
120
- // both to a confident empty system (`c.system || ''`) — a
121
- // definite mismatch, not the unresolved-chain result this
122
- // marks it for.
123
- if (path.chainUnresolved)
124
- info.unresolved = true;
125
- }
126
- results.push(info);
127
- }
128
- else if (typeUpper === 'IFCCLASSIFICATION') {
129
- // IfcClassification: [Source, Edition, EditionDate, Name, Description, Location, ReferenceTokens]
130
- results.push({
131
- system: typeof attrs[3] === 'string' ? attrs[3] : undefined,
132
- name: typeof attrs[3] === 'string' ? attrs[3] : undefined,
133
- description: typeof attrs[4] === 'string' ? attrs[4] : undefined,
134
- location: typeof attrs[5] === 'string' ? attrs[5] : undefined,
135
- });
108
+ return classRefIds.flatMap(id => {
109
+ const info = classificationInfoForRef(store, id, view);
110
+ return info ? [info] : [];
111
+ });
112
+ }
113
+ /** One source/authored reference, through the same effective record and bounded chain reader. */
114
+ function classificationInfoForRef(store, classRefId, view) {
115
+ const entity = classificationRecord(store, classRefId, view);
116
+ // The association proves membership even when its root target is missing.
117
+ // Losing that evidence would assert an authoritative unclassified result.
118
+ if (!entity)
119
+ return { unresolved: true };
120
+ const typeUpper = entity.type.toUpperCase();
121
+ const attrs = entity.attributes || [];
122
+ const unreadableSource = !store.source?.length && !view?.getNewEntity(classRefId);
123
+ if (typeUpper === 'IFCCLASSIFICATIONREFERENCE') {
124
+ // IfcClassificationReference: [Location, Identification, Name, ReferencedSource, Description, Sort]
125
+ const info = {
126
+ location: typeof attrs[0] === 'string' ? attrs[0] : undefined,
127
+ identification: typeof attrs[1] === 'string' ? attrs[1] : undefined,
128
+ name: typeof attrs[2] === 'string' ? attrs[2] : undefined,
129
+ description: typeof attrs[4] === 'string' ? attrs[4] : undefined,
130
+ ...(unreadableSource ? { unresolved: true } : {}),
131
+ };
132
+ // Walk up to find the classification system name
133
+ const referencedSourceId = getReference(attrs[3]);
134
+ if (referencedSourceId) {
135
+ const path = walkClassificationChain(store, new EntityExtractor(store.source), referencedSourceId, view);
136
+ info.system = path.systemName;
137
+ info.path = path.codes;
138
+ // A dangling link, an unreadable entity, or an unexpected
139
+ // type broke the walk before it reached an IfcClassification
140
+ // root (#5290) — distinct from a `ReferencedSource` that was
141
+ // never there to begin with, which `path.chainUnresolved`
142
+ // leaves `false` (see the function doc). `info.system` stays
143
+ // `undefined` either way, so without this flag
144
+ // `resolveClassifications` cannot tell "chain could not be
145
+ // resolved" from "chain resolved to no system", and flattens
146
+ // both to a confident empty system (`c.system || ''`) — a
147
+ // definite mismatch, not the unresolved-chain result this
148
+ // marks it for.
149
+ if (path.chainUnresolved)
150
+ info.unresolved = true;
136
151
  }
152
+ return info;
137
153
  }
138
- return results;
154
+ else if (typeUpper === 'IFCCLASSIFICATION') {
155
+ // IfcClassification: [Source, Edition, EditionDate, Name, Description, Location, ReferenceTokens]
156
+ return {
157
+ system: typeof attrs[3] === 'string' ? attrs[3] : undefined,
158
+ name: typeof attrs[3] === 'string' ? attrs[3] : undefined,
159
+ description: typeof attrs[4] === 'string' ? attrs[4] : undefined,
160
+ location: typeof attrs[5] === 'string' ? attrs[5] : undefined,
161
+ ...(unreadableSource ? { unresolved: true } : {}),
162
+ };
163
+ }
164
+ // An association aimed at a non-IfcClassificationSelect entity is broken,
165
+ // rather than proof that the subject has no classification membership.
166
+ return { unresolved: true };
139
167
  }
140
168
  /**
141
169
  * List the distinct classification system names present in a model —
@@ -152,12 +180,12 @@ export function extractClassificationsOnDemand(store, entityId) {
152
180
  * A model can carry SEVERAL systems at once (e.g. Uniclass, OmniClass, and
153
181
  * a national system) — this returns all of them, sorted alphabetically.
154
182
  */
155
- export function extractClassificationSystemsOnDemand(store) {
183
+ export function extractClassificationSystemsOnDemand(store, view) {
156
184
  // @raw-entity-enumeration-ok this parser API enumerates systems in the parsed source; live viewer sessions use effectiveClassificationSystems
157
- const ids = store.entityIndex.byType.get('IFCCLASSIFICATION');
185
+ const ids = view ? classificationSystemIds(store, view) : store.entityIndex.byType.get('IFCCLASSIFICATION');
158
186
  if (!ids || ids.length === 0)
159
187
  return { names: [], unresolved: false };
160
- if (!store.source?.length) {
188
+ if (!store.source?.length && !view) {
161
189
  // The model has classification systems (confirmed by the byType
162
190
  // index), but reading their Name needs raw STEP bytes this
163
191
  // server-parsed store doesn't carry. `[]` alone would be
@@ -166,20 +194,25 @@ export function extractClassificationSystemsOnDemand(store) {
166
194
  }
167
195
  const extractor = new EntityExtractor(store.source);
168
196
  const names = new Set();
197
+ let unresolved = false;
169
198
  for (const id of ids) {
170
199
  // @raw-entity-enumeration-ok each source classification id needs its STEP byte span to decode Name
171
200
  const ref = store.entityIndex.byId.get(id);
172
- if (!ref)
201
+ if (!ref && !view?.getNewEntity(id))
173
202
  continue;
174
- const entity = extractor.extractEntity(ref);
175
- if (!entity)
203
+ const entity = view ? classificationRecord(store, id, view) : extractor.extractEntity(ref);
204
+ if (!entity) {
205
+ unresolved = true;
176
206
  continue;
207
+ }
177
208
  // IfcClassification: [Source, Edition, EditionDate, Name, ...]
178
209
  const name = entity.attributes?.[3];
179
210
  if (typeof name === 'string' && name.length > 0)
180
211
  names.add(name);
212
+ else if (!store.source?.length && name === undefined)
213
+ unresolved = true;
181
214
  }
182
- return { names: Array.from(names).sort(), unresolved: false };
215
+ return { names: Array.from(names).sort(), unresolved };
183
216
  }
184
217
  /**
185
218
  * Walk up the IfcClassificationReference chain to find the root IfcClassification system.
@@ -197,10 +230,11 @@ export function extractClassificationSystemsOnDemand(store) {
197
230
  * `chainUnresolved: false`): the two are otherwise byte-identical, both
198
231
  * returning `systemName: undefined`.
199
232
  */
200
- function walkClassificationChain(store, extractor, startId) {
233
+ function walkClassificationChain(store, extractor, startId, view) {
201
234
  const codes = [];
202
235
  let currentId = startId;
203
236
  const visited = new Set();
237
+ let unreadableSourceReference = false;
204
238
  while (currentId !== undefined) {
205
239
  if (visited.has(currentId)) {
206
240
  return { codes, chainUnresolved: true };
@@ -208,9 +242,9 @@ function walkClassificationChain(store, extractor, startId) {
208
242
  visited.add(currentId);
209
243
  // @raw-entity-enumeration-ok chain cursor follows source ReferencedSource links and decodes each STEP record
210
244
  const ref = store.entityIndex.byId.get(currentId);
211
- if (!ref)
245
+ if (!ref && !view?.getNewEntity(currentId))
212
246
  return { codes, chainUnresolved: true };
213
- const entity = extractor.extractEntity(ref);
247
+ const entity = view ? classificationRecord(store, currentId, view) : extractor.extractEntity(ref);
214
248
  if (!entity)
215
249
  return { codes, chainUnresolved: true };
216
250
  const typeUpper = entity.type.toUpperCase();
@@ -218,15 +252,16 @@ function walkClassificationChain(store, extractor, startId) {
218
252
  if (typeUpper === 'IFCCLASSIFICATION') {
219
253
  // Root: IfcClassification [Source, Edition, EditionDate, Name, ...]
220
254
  const systemName = typeof attrs[3] === 'string' ? attrs[3] : undefined;
221
- return { systemName, codes, chainUnresolved: false };
255
+ return { systemName, codes, chainUnresolved: unreadableSourceReference || (!store.source?.length && systemName === undefined && !view?.getNewEntity(currentId)) };
222
256
  }
223
257
  if (typeUpper === 'IFCCLASSIFICATIONREFERENCE') {
258
+ unreadableSourceReference ||= !store.source?.length && !view?.getNewEntity(currentId);
224
259
  // IfcClassificationReference [Location, Identification, Name, ReferencedSource, ...]
225
260
  const code = typeof attrs[1] === 'string' ? attrs[1] :
226
261
  typeof attrs[2] === 'string' ? attrs[2] : undefined;
227
262
  if (code)
228
263
  codes.unshift(code);
229
- currentId = typeof attrs[3] === 'number' ? attrs[3] : undefined;
264
+ currentId = getReference(attrs[3]);
230
265
  }
231
266
  else {
232
267
  return { codes, chainUnresolved: true };
@@ -235,6 +270,6 @@ function walkClassificationChain(store, extractor, startId) {
235
270
  // `currentId` became `undefined`: `ReferencedSource` was omitted (`$`).
236
271
  // Schema-legal, not malformed — an `IfcClassificationReference` is
237
272
  // allowed to not name a system.
238
- return { codes, chainUnresolved: false };
273
+ return { codes, chainUnresolved: unreadableSourceReference };
239
274
  }
240
275
  //# sourceMappingURL=classification-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"classification-resolver.js","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classification-resolver.js","sourceRoot":"","sources":["../src/classification-resolver.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,EAA+B,MAAM,6BAA6B,CAAC;AAuB9I;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC1C,KAAmB,EACnB,QAAgB,EAChB,IAA6B;IAE7B,IAAI,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,EAAE,mBAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvE,IAAI,WAAiC,CAAC;IAEtC,IAAI,cAAc,EAAE,CAAC;QACjB,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,CAAC;QACzC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;SAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QAC7B,0DAA0D;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;QAC/G,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,WAAW,GAAG,OAAO,CAAC;IAClD,CAAC;IAED,gEAAgE;IAChE,IAAI,cAAc,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;QACvL,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,aAAmC,CAAC;YACxC,IAAI,cAAc,EAAE,CAAC;gBACjB,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,CAAC;gBACzC,aAAa,GAAG,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,wBAAwB,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;gBACpH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,aAAa,GAAG,OAAO,CAAC;YACpD,CAAC;YACD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;YACxF,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,YAAY;QACxD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChE,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxG,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACzC,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACxB,oEAAoE;QACpE,oEAAoE;QACpE,qEAAqE;QACrE,2CAA2C;QAC3C,4CAA4C;QAC5C,EAAE;QACF,8DAA8D;QAC9D,oEAAoE;QACpE,oEAAoE;QACpE,mEAAmE;QACnE,eAAe;QACf,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAChG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBACpG,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC/D,IAAI,YAAY;wBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;YACD,+DAA+D;YAC/D,gEAAgE;YAChE,gEAAgE;YAChE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAuB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;QACnK,CAAC;QACD,iDAAiD;QACjD,uDAAuD;QACvD,iEAAiE;QACjE,+DAA+D;QAC/D,gEAAgE;QAChE,oEAAoE;QACpE,kEAAkE;QAClE,2CAA2C;QAC3C,OAAO,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAuB,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QAC5B,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,iGAAiG;AACjG,SAAS,wBAAwB,CAAC,KAAmB,EAAE,UAAkB,EAAE,IAA6B;IACpG,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7D,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IACtC,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElF,IAAI,SAAS,KAAK,4BAA4B,EAAE,CAAC;QAC7C,oGAAoG;QACpG,MAAM,IAAI,GAAuB;YAC7B,QAAQ,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,cAAc,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACnE,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACzD,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;QAEF,iDAAiD;QACjD,MAAM,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,kBAAkB,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACzG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,0DAA0D;YAC1D,6DAA6D;YAC7D,6DAA6D;YAC7D,0DAA0D;YAC1D,6DAA6D;YAC7D,+CAA+C;YAC/C,2DAA2D;YAC3D,6DAA6D;YAC7D,0DAA0D;YAC1D,0DAA0D;YAC1D,gBAAgB;YAChB,IAAI,IAAI,CAAC,eAAe;gBAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;SAAM,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;QAC3C,kGAAkG;QAClG,OAAO;YACH,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACzD,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,QAAQ,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;IACN,CAAC;IACD,0EAA0E;IAC1E,uEAAuE;IACvE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAoBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oCAAoC,CAAC,KAAmB,EAAE,IAA6B;IACnG,8IAA8I;IAC9I,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC5G,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,gEAAgE;QAChE,2DAA2D;QAC3D,yDAAyD;QACzD,qDAAqD;QACrD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACnB,mGAAmG;QACnG,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YAAE,SAAS;QAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,UAAU,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAE7C,+DAA+D;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC5D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,KAAK,SAAS;YAAE,UAAU,GAAG,IAAI,CAAC;IAC5E,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,uBAAuB,CAC5B,KAAmB,EACnB,SAA0B,EAC1B,OAAe,EACf,IAA6B;IAE7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAuB,OAAO,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,yBAAyB,GAAG,KAAK,CAAC;IAEtC,OAAO,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,6GAA6G;QAC7G,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAEpF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GAAI,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAErD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAEtC,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;YACpC,oEAAoE;YACpE,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,yBAAyB,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACtK,CAAC;QAED,IAAI,SAAS,KAAK,4BAA4B,EAAE,CAAC;YAC7C,yBAAyB,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YACtF,qFAAqF;YACrF,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjE,IAAI,IAAI;gBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE9B,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,mEAAmE;IACnE,gCAAgC;IAChC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,CAAC;AACjE,CAAC"}
@@ -59,7 +59,7 @@ export declare function readRefId(buffer: Uint8Array, pos: number, end: number):
59
59
  /** Read a list of entity refs (#id1,#id2,...) or a single #id. Returns [ids, newPos]. */
60
60
  export declare function readRefList(buffer: Uint8Array, pos: number, end: number): [number[], number];
61
61
  /**
62
- * Batch extract GlobalId (attr[0]) and Name (attr[2]) for many entities using
62
+ * Batch extract schema-declared GlobalId and Name for many entities using
63
63
  * only 2 TextDecoder.decode() calls total (one for all GlobalIds, one for all Names).
64
64
  *
65
65
  * This is ~100x faster than calling extractEntity() per entity for large batches
@@ -1 +1 @@
1
- {"version":3,"file":"columnar-parser-attributes.d.ts","sourceRoot":"","sources":["../src/columnar-parser-attributes.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgB5C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAuDzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,OAAO,CAWT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBhG;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCxF;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAuB5F;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC7C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,SAAS,EAAE,EACjB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC,CA+GtE"}
1
+ {"version":3,"file":"columnar-parser-attributes.d.ts","sourceRoot":"","sources":["../src/columnar-parser-attributes.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAiB5C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAuDzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,OAAO,CAWT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBhG;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCxF;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAuB5F;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC7C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,SAAS,EAAE,EACjB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC,CAwHtE"}