@ifc-lite/export 4.9.0 → 4.12.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 (191) hide show
  1. package/dist/affected-set.d.ts +9 -0
  2. package/dist/affected-set.d.ts.map +1 -0
  3. package/dist/affected-set.js +72 -0
  4. package/dist/affected-set.js.map +1 -0
  5. package/dist/anonymize-placement.d.ts +0 -34
  6. package/dist/anonymize-placement.d.ts.map +1 -1
  7. package/dist/anonymize-placement.js +58 -27
  8. package/dist/anonymize-placement.js.map +1 -1
  9. package/dist/declared-property-type.d.ts +7 -0
  10. package/dist/declared-property-type.d.ts.map +1 -1
  11. package/dist/declared-property-type.js +29 -2
  12. package/dist/declared-property-type.js.map +1 -1
  13. package/dist/edit-ownership.d.ts +7 -0
  14. package/dist/edit-ownership.d.ts.map +1 -0
  15. package/dist/edit-ownership.js +95 -0
  16. package/dist/edit-ownership.js.map +1 -0
  17. package/dist/effective-index.d.ts.map +1 -1
  18. package/dist/effective-index.js +12 -5
  19. package/dist/effective-index.js.map +1 -1
  20. package/dist/entity-subgraph.d.ts +11 -3
  21. package/dist/entity-subgraph.d.ts.map +1 -1
  22. package/dist/entity-subgraph.js +54 -11
  23. package/dist/entity-subgraph.js.map +1 -1
  24. package/dist/grid-placement-dependents.d.ts +4 -0
  25. package/dist/grid-placement-dependents.d.ts.map +1 -0
  26. package/dist/grid-placement-dependents.js +71 -0
  27. package/dist/grid-placement-dependents.js.map +1 -0
  28. package/dist/grid-reference-context.d.ts +6 -0
  29. package/dist/grid-reference-context.d.ts.map +1 -0
  30. package/dist/grid-reference-context.js +68 -0
  31. package/dist/grid-reference-context.js.map +1 -0
  32. package/dist/ifc5-exporter.d.ts.map +1 -1
  33. package/dist/ifc5-exporter.js +5 -4
  34. package/dist/ifc5-exporter.js.map +1 -1
  35. package/dist/index.d.ts +5 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +8 -4
  38. package/dist/index.js.map +1 -1
  39. package/dist/lod-geometry-types.d.ts +5 -0
  40. package/dist/lod-geometry-types.d.ts.map +1 -1
  41. package/dist/lod0-generator.d.ts.map +1 -1
  42. package/dist/lod0-generator.js +52 -18
  43. package/dist/lod0-generator.js.map +1 -1
  44. package/dist/lod1-generator.d.ts.map +1 -1
  45. package/dist/lod1-generator.js +4 -1
  46. package/dist/lod1-generator.js.map +1 -1
  47. package/dist/merged-empty-containers-refs.d.ts.map +1 -1
  48. package/dist/merged-empty-containers-refs.js +5 -3
  49. package/dist/merged-empty-containers-refs.js.map +1 -1
  50. package/dist/merged-exporter.d.ts.map +1 -1
  51. package/dist/merged-exporter.js +31 -31
  52. package/dist/merged-exporter.js.map +1 -1
  53. package/dist/merged-remap.d.ts +0 -8
  54. package/dist/merged-remap.d.ts.map +1 -1
  55. package/dist/merged-remap.js +7 -17
  56. package/dist/merged-remap.js.map +1 -1
  57. package/dist/obj.d.ts +8 -8
  58. package/dist/obj.js +8 -8
  59. package/dist/parquet-exporter.d.ts.map +1 -1
  60. package/dist/parquet-exporter.js +14 -2
  61. package/dist/parquet-exporter.js.map +1 -1
  62. package/dist/property-value-serialization.d.ts.map +1 -1
  63. package/dist/property-value-serialization.js +7 -3
  64. package/dist/property-value-serialization.js.map +1 -1
  65. package/dist/reference-collector.d.ts.map +1 -1
  66. package/dist/reference-collector.js +17 -16
  67. package/dist/reference-collector.js.map +1 -1
  68. package/dist/retype.d.ts.map +1 -1
  69. package/dist/retype.js +12 -11
  70. package/dist/retype.js.map +1 -1
  71. package/dist/schema-conversion-loss-report.d.ts +2 -1
  72. package/dist/schema-conversion-loss-report.d.ts.map +1 -1
  73. package/dist/schema-conversion-loss-report.js +20 -11
  74. package/dist/schema-conversion-loss-report.js.map +1 -1
  75. package/dist/schema-converter-mep.d.ts +2 -0
  76. package/dist/schema-converter-mep.d.ts.map +1 -0
  77. package/dist/schema-converter-mep.js +9 -0
  78. package/dist/schema-converter-mep.js.map +1 -0
  79. package/dist/schema-converter-mep.json +96 -0
  80. package/dist/schema-converter-product-proxy.d.ts +25 -0
  81. package/dist/schema-converter-product-proxy.d.ts.map +1 -0
  82. package/dist/schema-converter-product-proxy.js +33 -0
  83. package/dist/schema-converter-product-proxy.js.map +1 -0
  84. package/dist/schema-converter-renames.d.ts +32 -0
  85. package/dist/schema-converter-renames.d.ts.map +1 -0
  86. package/dist/schema-converter-renames.js +60 -0
  87. package/dist/schema-converter-renames.js.map +1 -0
  88. package/dist/schema-converter.d.ts +8 -16
  89. package/dist/schema-converter.d.ts.map +1 -1
  90. package/dist/schema-converter.js +44 -71
  91. package/dist/schema-converter.js.map +1 -1
  92. package/dist/schema-style-flatten.d.ts +82 -0
  93. package/dist/schema-style-flatten.d.ts.map +1 -0
  94. package/dist/schema-style-flatten.js +245 -0
  95. package/dist/schema-style-flatten.js.map +1 -0
  96. package/dist/step-argument-parser.d.ts +7 -2
  97. package/dist/step-argument-parser.d.ts.map +1 -1
  98. package/dist/step-argument-parser.js +69 -62
  99. package/dist/step-argument-parser.js.map +1 -1
  100. package/dist/step-attribute-mutations.d.ts.map +1 -1
  101. package/dist/step-attribute-mutations.js +21 -22
  102. package/dist/step-attribute-mutations.js.map +1 -1
  103. package/dist/step-coordinate-options.d.ts +8 -0
  104. package/dist/step-coordinate-options.d.ts.map +1 -1
  105. package/dist/step-export-contexts.d.ts +1 -1
  106. package/dist/step-export-contexts.d.ts.map +1 -1
  107. package/dist/step-export-contexts.js +4 -1
  108. package/dist/step-export-contexts.js.map +1 -1
  109. package/dist/step-export-types.d.ts +6 -0
  110. package/dist/step-export-types.d.ts.map +1 -1
  111. package/dist/step-export-types.js.map +1 -1
  112. package/dist/step-exporter.d.ts.map +1 -1
  113. package/dist/step-exporter.js +19 -19
  114. package/dist/step-exporter.js.map +1 -1
  115. package/dist/step-map-unit-normalization.d.ts +3 -5
  116. package/dist/step-map-unit-normalization.d.ts.map +1 -1
  117. package/dist/step-map-unit-normalization.js +12 -8
  118. package/dist/step-map-unit-normalization.js.map +1 -1
  119. package/dist/step-map-unit.d.ts +3 -78
  120. package/dist/step-map-unit.d.ts.map +1 -1
  121. package/dist/step-map-unit.js +33 -195
  122. package/dist/step-map-unit.js.map +1 -1
  123. package/dist/step-native-set-record.d.ts +6 -0
  124. package/dist/step-native-set-record.d.ts.map +1 -0
  125. package/dist/step-native-set-record.js +30 -0
  126. package/dist/step-native-set-record.js.map +1 -0
  127. package/dist/step-outer-args.d.ts +10 -0
  128. package/dist/step-outer-args.d.ts.map +1 -1
  129. package/dist/step-outer-args.js +29 -12
  130. package/dist/step-outer-args.js.map +1 -1
  131. package/dist/step-overlay-entities.d.ts +2 -0
  132. package/dist/step-overlay-entities.d.ts.map +1 -1
  133. package/dist/step-overlay-entities.js +43 -11
  134. package/dist/step-overlay-entities.js.map +1 -1
  135. package/dist/step-pass-builder.d.ts.map +1 -1
  136. package/dist/step-pass-builder.js +4 -0
  137. package/dist/step-pass-builder.js.map +1 -1
  138. package/dist/step-property-set-collection.d.ts.map +1 -1
  139. package/dist/step-property-set-collection.js +24 -8
  140. package/dist/step-property-set-collection.js.map +1 -1
  141. package/dist/step-property-set-generators.d.ts +8 -2
  142. package/dist/step-property-set-generators.d.ts.map +1 -1
  143. package/dist/step-property-set-generators.js +26 -10
  144. package/dist/step-property-set-generators.js.map +1 -1
  145. package/dist/step-property-set-index.d.ts.map +1 -1
  146. package/dist/step-property-set-index.js +8 -3
  147. package/dist/step-property-set-index.js.map +1 -1
  148. package/dist/step-property-set-readers.d.ts +6 -0
  149. package/dist/step-property-set-readers.d.ts.map +1 -1
  150. package/dist/step-property-set-readers.js +68 -14
  151. package/dist/step-property-set-readers.js.map +1 -1
  152. package/dist/step-property-sets.d.ts +17 -4
  153. package/dist/step-property-sets.d.ts.map +1 -1
  154. package/dist/step-property-sets.js +79 -20
  155. package/dist/step-property-sets.js.map +1 -1
  156. package/dist/step-record-frame.d.ts +69 -0
  157. package/dist/step-record-frame.d.ts.map +1 -0
  158. package/dist/step-record-frame.js +136 -0
  159. package/dist/step-record-frame.js.map +1 -0
  160. package/dist/step-ref-scan.d.ts +8 -0
  161. package/dist/step-ref-scan.d.ts.map +1 -1
  162. package/dist/step-ref-scan.js +29 -8
  163. package/dist/step-ref-scan.js.map +1 -1
  164. package/dist/step-serialization.d.ts +16 -4
  165. package/dist/step-serialization.d.ts.map +1 -1
  166. package/dist/step-serialization.js +39 -13
  167. package/dist/step-serialization.js.map +1 -1
  168. package/dist/step-slot-grammar.d.ts +21 -18
  169. package/dist/step-slot-grammar.d.ts.map +1 -1
  170. package/dist/step-slot-grammar.js +210 -177
  171. package/dist/step-slot-grammar.js.map +1 -1
  172. package/dist/step-source-iteration.d.ts +1 -1
  173. package/dist/step-source-iteration.d.ts.map +1 -1
  174. package/dist/step-source-iteration.js +27 -3
  175. package/dist/step-source-iteration.js.map +1 -1
  176. package/dist/step-type-owned-quantities.d.ts +34 -0
  177. package/dist/step-type-owned-quantities.d.ts.map +1 -0
  178. package/dist/step-type-owned-quantities.js +222 -0
  179. package/dist/step-type-owned-quantities.js.map +1 -0
  180. package/dist/step-vertical-datum-normalization.d.ts +17 -0
  181. package/dist/step-vertical-datum-normalization.d.ts.map +1 -0
  182. package/dist/step-vertical-datum-normalization.js +52 -0
  183. package/dist/step-vertical-datum-normalization.js.map +1 -0
  184. package/dist/unit-normalize.d.ts.map +1 -1
  185. package/dist/unit-normalize.js +13 -20
  186. package/dist/unit-normalize.js.map +1 -1
  187. package/dist/zero-content.d.ts +21 -3
  188. package/dist/zero-content.d.ts.map +1 -1
  189. package/dist/zero-content.js +35 -3
  190. package/dist/zero-content.js.map +1 -1
  191. package/package.json +11 -11
@@ -48,7 +48,7 @@
48
48
  * here, only ones that die because the file would otherwise be empty.
49
49
  */
50
50
  import type { IfcDataStore } from '@ifc-lite/parser';
51
- import { type IfcSchemaVersion } from './schema-converter.js';
51
+ import type { IfcSchemaVersion } from './schema-converter.js';
52
52
  import type { PropertySetContext } from './step-property-set-readers.js';
53
53
  import type { ExportPass, SourceLineMutations, StepExportOptions } from './step-exporter.js';
54
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"step-source-iteration.d.ts","sourceRoot":"","sources":["../src/step-source-iteration.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG7F;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC;;mCAE+B;IAC/B,QAAQ,CAAC,wBAAwB,EAAE,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACnD,YAAY,EAAE,gBAAgB,EAC9B,aAAa,EAAE,OAAO,EACtB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,KACnD,mBAAmB,CAAC;IACzB;8CAC0C;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD;2EACuE;IACvE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;IACtD;;;4DAGwD;IACxD,QAAQ,CAAC,2BAA2B,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,EAC1B,kBAAkB,EAAE,OAAO,EAC3B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EAC5C,GAAG,EAAE,sBAAsB,GAC1B,IAAI,CA4NN"}
1
+ {"version":3,"file":"step-source-iteration.d.ts","sourceRoot":"","sources":["../src/step-source-iteration.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG7F;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC;;mCAE+B;IAC/B,QAAQ,CAAC,wBAAwB,EAAE,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACnD,YAAY,EAAE,gBAAgB,EAC9B,aAAa,EAAE,OAAO,EACtB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,KACnD,mBAAmB,CAAC;IACzB;8CAC0C;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD;2EACuE;IACvE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;IACtD;;;4DAGwD;IACxD,QAAQ,CAAC,2BAA2B,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,EAC1B,kBAAkB,EAAE,OAAO,EAC3B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EAC5C,GAAG,EAAE,sBAAsB,GAC1B,IAAI,CA4NN"}
@@ -7,7 +7,7 @@ import { STYLE_RESCUE_TYPES } from './style-closure.js';
7
7
  import { NONREL_REF_LIST_TYPES } from './nonrel-ref-list-types.js';
8
8
  import { styleEntityWithheldWarning } from './step-export-types.js';
9
9
  import { applySourceLineMutationsReported } from './step-attribute-mutations.js';
10
- import { convertStepLine } from './schema-converter.js';
10
+ import { convertStepLineFlattening } from './schema-style-flatten.js';
11
11
  import { nominateDeliveredInPlaceEdits } from './in-place-nomination.js';
12
12
  import { decodeRange } from './source-ref-bounds.js';
13
13
  import { retainSharedAtoms } from './step-shared-atom-retention.js';
@@ -43,7 +43,7 @@ export function writeSourceEntityLines(pass, options, mayNameOmittedRefs, isOmit
43
43
  // Extract existing entities from source. The effective index has already
44
44
  // dropped everything the overlay tombstoned, so there is no separate
45
45
  // deleted check to forget here.
46
- for (const [expressId, entityRef] of pass.effective) {
46
+ for (const [expressId, entityRef] of lastRecordPerId(pass.effective, pass.warnings)) {
47
47
  // Skip overlay-only entities — emitted by the overlay-created-entities
48
48
  // block back in `export()`.
49
49
  // A ref this source cannot address is skipped by the same test rather
@@ -218,7 +218,7 @@ export function writeSourceEntityLines(pass, options, mayNameOmittedRefs, isOmit
218
218
  nominateDeliveredInPlaceEdits(pass.modifications, expressId, mutated, pass.inPlaceNominees);
219
219
  // Apply schema conversion if exporting to a different schema version
220
220
  if (pass.converting) {
221
- const converted = convertStepLine(nextEntityText, pass.sourceSchema, pass.schema, options.guidRandom, pass.slotFill, pass.withheldRefIds, pass.ifc4Slots, pass.enums);
221
+ const converted = convertStepLineFlattening(pass.styleFlatten, nextEntityText, pass.sourceSchema, pass.schema, options.guidRandom, pass.slotFill, pass.withheldRefIds, pass.ifc4Slots, pass.enums);
222
222
  if (converted !== null)
223
223
  pass.entities.push(converted);
224
224
  }
@@ -228,4 +228,28 @@ export function writeSourceEntityLines(pass, options, mayNameOmittedRefs, isOmit
228
228
  }
229
229
  }
230
230
  }
231
+ /**
232
+ * The entries of `entries` with a repeated express id collapsed to the LAST
233
+ * record with that id, the one core's index resolves it to (#7682,
234
+ * EXPORT-STEP-11; the Rust twin is `step_index::RecordIndex`). The source index
235
+ * is sorted by id with file order kept among equal ids, so repeats are
236
+ * adjacent and the last of a run is the last in the file. Each record dropped
237
+ * is reported in `warnings`, in the Rust writer's words.
238
+ */
239
+ function* lastRecordPerId(entries, warnings) {
240
+ let held;
241
+ for (const entry of entries) {
242
+ if (held !== undefined) {
243
+ if (held[0] === entry[0]) {
244
+ warnings.push(`Entity #${held[0]} appears more than once in the source; only its last record, the one ifc-lite reads, was written, and every earlier record with that id was dropped.`);
245
+ }
246
+ else {
247
+ yield held;
248
+ }
249
+ }
250
+ held = entry;
251
+ }
252
+ if (held !== undefined)
253
+ yield held;
254
+ }
231
255
  //# sourceMappingURL=step-source-iteration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"step-source-iteration.js","sourceRoot":"","sources":["../src/step-source-iteration.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAqD/D,OAAO,EAAE,oCAAoC,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,eAAe,EAAyB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAsClD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAgB,EAChB,OAA0B,EAC1B,kBAA2B,EAC3B,mBAA4C,EAC5C,GAA2B;IAE3B,8EAA8E;IAC9E,uEAAuE;IACvE,8EAA8E;IAC9E,8EAA8E;IAC9E,gFAAgF;IAChF,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;QAEpC,yEAAyE;QACzE,qEAAqE;QACrE,gCAAgC;QAChC,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,uEAAuE;YACvE,4BAA4B;YAC5B,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,+DAA+D;YAC/D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,SAAS;YACX,CAAC;YAED,4CAA4C;YAC5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5E,SAAS;YACX,CAAC;YAED,2DAA2D;YAC3D,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtF,SAAS;YACX,CAAC;YAED,uEAAuE;YACvE,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,qEAAqE;YACrE,qEAAqE;YACrE,oEAAoE;YACpE,mEAAmE;YACnE,kEAAkE;YAClE,mEAAmE;YACnE,kDAAkD;YAClD,qEAAqE;YACrE,6DAA6D;YAC7D,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,SAAS;YACX,CAAC;YAED,4DAA4D;YAC5D,6DAA6D;YAC7D,+DAA+D;YAC/D,qDAAqD;YACrD,MAAM,UAAU,GAAG,WAAW,CAC5B,MAAM,EACN,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAC5C,CAAC;YACF,qEAAqE;YACrE,oEAAoE;YACpE,iEAAiE;YACjE,kEAAkE;YAClE,sEAAsE;YACtE,yEAAyE;YACzE,qDAAqD;YACrD,EAAE;YACF,oEAAoE;YACpE,wEAAwE;YACxE,wEAAwE;YACxE,oEAAoE;YACpE,0EAA0E;YAC1E,yEAAyE;YACzE,0EAA0E;YAC1E,2EAA2E;YAC3E,yEAAyE;YACzE,0BAA0B;YAC1B,EAAE;YACF,2EAA2E;YAC3E,2EAA2E;YAC3E,yEAAyE;YACzE,0CAA0C;YAC1C,iDAAiD;YACjD,MAAM,gBAAgB,GAAa,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,gCAAgC,CAC9C,GAAG,CAAC,wBAAwB,EAC5B,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,SAAS,CAAC,IAAI,EACd,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EACtC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CACnB,CAAC;YACF,IAAI,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAClC,uEAAuE;YACvE,uEAAuE;YACvE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YACvE,IAAI,QAAQ,KAAK,IAAI;gBAAE,SAAS;YAChC,cAAc,GAAG,QAAQ,CAAC;YAE1B,+DAA+D;YAC/D,uEAAuE;YACvE,6DAA6D;YAC7D,qEAAqE;YACrE,8DAA8D;YAC9D,qEAAqE;YACrE,iEAAiE;YACjE,oEAAoE;YACpE,kEAAkE;YAClE,EAAE;YACF,oEAAoE;YACpE,gEAAgE;YAChE,yEAAyE;YACzE,qEAAqE;YACrE,4DAA4D;YAC5D,qEAAqE;YACrE,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/F,+DAA+D;YAC/D,0EAA0E;YAC1E,yDAAyD;YACzD,MAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC;YAC9E,IAAI,kBAAkB,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChE,MAAM,QAAQ,GAAG,oCAAoC,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;gBAC3F,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;oBAC/E,SAAS;gBACX,CAAC;gBACD,cAAc,GAAG,QAAQ,CAAC;YAC5B,CAAC;iBAAM,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1E,mDAAmD;gBACnD,+DAA+D;gBAC/D,sEAAsE;gBACtE,sEAAsE;gBACtE,qEAAqE;gBACrE,iEAAiE;gBACjE,qEAAqE;gBACrE,qEAAqE;gBACrE,mEAAmE;gBACnE,oEAAoE;gBACpE,sEAAsE;gBACtE,sEAAsE;gBACtE,qEAAqE;gBACrE,+DAA+D;gBAC/D,mEAAmE;gBACnE,oBAAoB;gBACpB,MAAM,QAAQ,GAAG,oCAAoC,CAAC,cAAc,EAAE,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9G,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;oBAC1E,SAAS;gBACX,CAAC;gBACD,cAAc,GAAG,QAAQ,CAAC;YAC5B,CAAC;iBAAM,IAAI,kBAAkB,IAAI,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC7E,4DAA4D;gBAC5D,kEAAkE;gBAClE,+DAA+D;gBAC/D,gFAAgF;gBAChF,qEAAqE;gBACrE,kEAAkE;gBAClE,EAAE;gBACF,sEAAsE;gBACtE,qEAAqE;gBACrE,6DAA6D;gBAC7D,sEAAsE;gBACtE,qEAAqE;gBACrE,qEAAqE;gBACrE,kEAAkE;gBAClE,yDAAyD;gBACzD,gEAAgE;gBAChE,8EAA8E;gBAC9E,sEAAsE;gBACtE,mEAAmE;gBACnE,sEAAsE;gBACtE,kEAAkE;gBAClE,uEAAuE;gBACvE,kEAAkE;gBAClE,oEAAoE;gBACpE,cAAc,GAAG,8BAA8B,CAC7C,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,CAAC,YAAY,CAClB,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,uEAAuE;YACvE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAExC,oEAAoE;YACpE,qEAAqE;YACrE,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,wEAAwE;YACxE,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU;gBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChF,IAAI,OAAO,CAAC,OAAO;gBAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACtE,IAAI,OAAO,CAAC,UAAU;gBAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC7E,gEAAgE;YAChE,wEAAwE;YACxE,8DAA8D;YAC9D,6BAA6B,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAE5F,qEAAqE;YACrE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtK,IAAI,SAAS,KAAK,IAAI;oBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"step-source-iteration.js","sourceRoot":"","sources":["../src/step-source-iteration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type IfcEntity } from '@ifc-lite/parser';
2
+ import type { Quantity, QuantitySet } from '@ifc-lite/data';
3
+ import type { ExportPass, StepExportOptions } from './step-export-types.js';
4
+ import { type PropertySetContext } from './step-property-set-readers.js';
5
+ import type { SharedSetDetachments } from './step-pset-copy-on-write.js';
6
+ /** Native atoms are retained independently of the lossy numeric quantity projection. */
7
+ export interface TypeQuantitySource {
8
+ readonly setId: number;
9
+ readonly line: string;
10
+ readonly entity: IfcEntity;
11
+ readonly members: readonly number[];
12
+ readonly quantities?: readonly Quantity[];
13
+ readonly unitSymbols?: ReadonlyMap<string, string | undefined>;
14
+ readonly unitTypes?: ReadonlyMap<string, string | undefined>;
15
+ }
16
+ /** Use canonical full-base claims; only unchanged relationship-owned siblings can pass through. */
17
+ export declare function projectTypeQuantityEdits(pass: ExportPass, ctx: PropertySetContext, entityId: number, qsetNames: ReadonlySet<string>, relationships: readonly {
18
+ relId: number;
19
+ psetId: number;
20
+ }[]): {
21
+ qsets: QuantitySet[];
22
+ };
23
+ /** Associate regenerated instances with their canonical source identity, not merely their name. */
24
+ export declare function collectTypeQuantitySources(pass: ExportPass, ctx: PropertySetContext, entityId: number, qsets: readonly QuantitySet[], affectedNames: ReadonlySet<string>, detachments: SharedSetDetachments): {
25
+ qsets: QuantitySet[];
26
+ sourceSets: Array<TypeQuantitySource | undefined>;
27
+ };
28
+ /** Copy edited atoms only. Untouched units, Formula and opaque physical quantities retain their IDs. */
29
+ export declare function generateTypeQuantityCopy(pass: ExportPass, options: StepExportOptions, ctx: PropertySetContext, entityId: number, qset: QuantitySet, source: TypeQuantitySource): {
30
+ lines: string[];
31
+ count: number;
32
+ setId: number;
33
+ };
34
+ //# sourceMappingURL=step-type-owned-quantities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-type-owned-quantities.d.ts","sourceRoot":"","sources":["../src/step-type-owned-quantities.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwI,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxL,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAA+D,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACtI,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAMzE,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC9D;AAED,mGAAmG;AACnG,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3F,aAAa,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1D;IAAE,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,CAuD1B;AAED,mGAAmG;AACnG,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,WAAW,EAAE,EAC1F,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,GACpE;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,UAAU,EAAE,KAAK,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAA;CAAE,CAwD7E;AAQD,wGAAwG;AACxG,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,kBAAkB,EACrE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,GAC9D;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgEnD"}
@@ -0,0 +1,222 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { extractTypeEntityOwnQuantities, getInheritanceChainAcrossSchemas, getAttributeNamesForSchema, getAttributeTypeForSchema, measureUnit } from '@ifc-lite/parser';
5
+ import { generateGlobalId, getTypeOwnedHasPropertySetIds, findUnitId } from './step-property-set-readers.js';
6
+ import { readStepSlots, replaceStepArgument } from './step-argument-parser.js';
7
+ import { quantityTypeToIfcType, toStepReal } from './step-serialization.js';
8
+ import { generateQuantityAtom } from './step-property-set-generators.js';
9
+ import { nativeSetLine, decodeNativeSetLine } from './step-native-set-record.js';
10
+ /** Use canonical full-base claims; only unchanged relationship-owned siblings can pass through. */
11
+ export function projectTypeQuantityEdits(pass, ctx, entityId, qsetNames, relationships) {
12
+ const mutationView = ctx.mutationView;
13
+ const ownIds = new Set(getTypeOwnedHasPropertySetIds(ctx, entityId, pass.effective));
14
+ const ownBase = extractTypeEntityOwnQuantities(ctx.dataStore, entityId, mutationView).map(set => ({
15
+ name: set.name, globalId: set.globalId, quantities: set.quantities.map(q => ({ name: q.name, type: q.type, value: q.value, unit: q.explicitUnit })),
16
+ }));
17
+ const sourceBase = extractTypeEntityOwnQuantities(ctx.dataStore, entityId);
18
+ const relatedBase = [];
19
+ const nativeEditIds = new Set([...(mutationView.getAttributeOverrideEntityIds?.() ?? []),
20
+ ...pass.modifiedAttributes.keys(), ...(mutationView.getTombstones?.() ?? [])]);
21
+ for (const { relId, psetId } of relationships) {
22
+ if (ownIds.has(psetId))
23
+ continue;
24
+ const currentQuantitySet = !pass.effective.isDeleted(psetId) && pass.effective.typeOf(psetId) === 'IFCELEMENTQUANTITY';
25
+ // @raw-entity-enumeration-ok original source type detects a related quantity set retyped/deleted in the effective view, so the unsupported edit cannot bypass refusal
26
+ if (!currentQuantitySet && ctx.dataStore.entityIndex.byId.get(psetId)?.type !== 'IFCELEMENTQUANTITY')
27
+ continue;
28
+ const native = decodeNativeSetLine(nativeSetLine(ctx, psetId, pass.sourceSchema, pass.modifiedAttributes.get(psetId), pass.warnings), psetId);
29
+ const name = native.attributes[2];
30
+ if (typeof name !== 'string' || !qsetNames.has(name))
31
+ continue;
32
+ const activeEdit = mutationView.getQuantityMutation === undefined
33
+ || mutationView.isQuantitySetDeleted?.(entityId, name)
34
+ || mutationView.getMutations().some(row => row.entityId === entityId && row.psetName === name
35
+ && typeof row.propName === 'string' && mutationView.getQuantityMutation(entityId, name, row.propName));
36
+ if (!activeEdit)
37
+ continue;
38
+ const source = typeof native.attributes[0] === 'string'
39
+ ? sourceBase.find(set => set.globalId === native.attributes[0]) : undefined;
40
+ const nativeMembers = native.attributes[5];
41
+ if (!source || !source.globalId || source.name !== name
42
+ || sourceBase.filter(set => set.globalId === source.globalId).length !== 1
43
+ || ownBase.some(set => set.globalId === source.globalId)
44
+ || !currentQuantitySet || nativeEditIds.has(relId) || nativeEditIds.has(psetId) || !Array.isArray(nativeMembers)
45
+ || nativeMembers.some(id => typeof id !== 'number' || pass.effective.isDeleted(id) || nativeEditIds.has(id))) {
46
+ throw new Error('Relationship-attached Type quantity edits are unsupported');
47
+ }
48
+ // @raw-entity-enumeration-ok original unit type complements the effective type when an active edit retypes a source unit away from its schema family; both bases trigger refusal
49
+ if (source.quantities.some(quantity => quantity.explicitUnit !== undefined)
50
+ && [...nativeEditIds].some(id => [
51
+ pass.effective.typeOf(id), ctx.dataStore.entityIndex.byId.get(id)?.type,
52
+ ].some(type => getInheritanceChainAcrossSchemas(type ?? '').some(parent => [
53
+ 'IfcNamedUnit', 'IfcDerivedUnit', 'IfcDerivedUnitElement', 'IfcMeasureWithUnit', 'IfcDimensionalExponents',
54
+ ].includes(parent))))) {
55
+ throw new Error('Relationship-attached Type quantity edits are unsupported');
56
+ }
57
+ relatedBase.push({ name: source.name, globalId: source.globalId,
58
+ quantities: source.quantities.map(q => ({ name: q.name, type: q.type, value: q.value, unit: q.explicitUnit })) });
59
+ }
60
+ const projected = mutationView.getQuantitiesForEntity(entityId, () => [...ownBase, ...relatedBase], true);
61
+ for (const set of relatedBase) {
62
+ const replacement = projected.find(candidate => candidate.globalId === set.globalId);
63
+ if (!replacement || JSON.stringify(replacement.quantities) !== JSON.stringify(set.quantities)) {
64
+ throw new Error('Relationship-attached Type quantity edits are unsupported');
65
+ }
66
+ }
67
+ const relatedGuids = new Set(relatedBase.map(set => set.globalId));
68
+ return { qsets: projected.filter(set => !relatedGuids.has(set.globalId)) };
69
+ }
70
+ /** Associate regenerated instances with their canonical source identity, not merely their name. */
71
+ export function collectTypeQuantitySources(pass, ctx, entityId, qsets, affectedNames, detachments) {
72
+ const ids = getTypeOwnedHasPropertySetIds(ctx, entityId, pass.effective);
73
+ pass.typeOwnedPsetIdsByEntity.set(entityId, ids);
74
+ const raw = new Map();
75
+ const replacements = new Map();
76
+ for (const id of ids) {
77
+ if (pass.effective.typeOf(id) !== 'IFCELEMENTQUANTITY')
78
+ continue;
79
+ const line = nativeSetLine(ctx, id, pass.sourceSchema, pass.modifiedAttributes.get(id), pass.warnings);
80
+ const entity = decodeNativeSetLine(line, id);
81
+ const name = entity.attributes[2];
82
+ if (typeof name !== 'string' || !affectedNames.has(name))
83
+ continue;
84
+ const members = entity.attributes[5];
85
+ if (!Array.isArray(members) || members.some(ref => typeof ref !== 'number')) {
86
+ throw new Error(`Type quantity set #${id} has unreadable native members`);
87
+ }
88
+ const sources = raw.get(name) ?? [];
89
+ sources.push({ setId: id, line, entity, members: members });
90
+ raw.set(name, sources);
91
+ if (ctx.mutationView?.isQuantitySetDeleted?.(entityId, name)) {
92
+ replacements.set(id, null);
93
+ detachments.withholdTypeOwned(id, entityId);
94
+ }
95
+ }
96
+ const canonical = extractTypeEntityOwnQuantities(ctx.dataStore, entityId, ctx.mutationView ?? undefined);
97
+ const byGuid = new Map();
98
+ for (const sources of raw.values())
99
+ for (const source of sources) {
100
+ const guid = source.entity.attributes[0];
101
+ if (typeof guid !== 'string' || !guid || byGuid.has(guid))
102
+ throw new Error('Native type quantity definition identity is missing or ambiguous');
103
+ byGuid.set(guid, source);
104
+ }
105
+ const selected = [];
106
+ const activeSets = [];
107
+ const seen = new Set();
108
+ for (const qset of qsets) {
109
+ const source = qset.globalId ? byGuid.get(qset.globalId) : undefined;
110
+ if (qset.globalId && (!source || seen.has(qset.globalId)))
111
+ throw new Error(`Projected type quantity identity ${qset.globalId} is missing or ambiguous among ${[...byGuid.keys()].join(',')}`);
112
+ if (!source && raw.has(qset.name))
113
+ throw new Error('Projected type quantity identity cannot be associated with its native definition');
114
+ if (qset.globalId)
115
+ seen.add(qset.globalId);
116
+ const base = canonical.find(set => set.globalId === qset.globalId);
117
+ const quantities = base?.quantities.map(q => ({ name: q.name, type: q.type, value: q.value, unit: q.explicitUnit })) ?? [];
118
+ if (source && JSON.stringify(quantities) === JSON.stringify(qset.quantities.map(q => ({ name: q.name, type: q.type, value: q.value, unit: q.unit }))))
119
+ continue;
120
+ if (source) {
121
+ replacements.set(source.setId, null);
122
+ detachments.withholdTypeOwned(source.setId, entityId);
123
+ // Removing the last numeric member drops only this instance's ownership;
124
+ // opaque native members still require a retained copied definition.
125
+ const opaque = source.members.some(id => !getInheritanceChainAcrossSchemas(pass.effective.typeOf(id) ?? '').includes('IfcPhysicalSimpleQuantity'));
126
+ if (qset.quantities.length === 0 && !opaque)
127
+ continue;
128
+ }
129
+ activeSets.push(qset);
130
+ selected.push(source ? { ...source, quantities, unitSymbols: new Map(base?.quantities.map(q => [q.name, q.explicitUnit]) ?? []), unitTypes: new Map(base?.quantities.map(q => [q.name, q.explicitUnitType]) ?? []) } : undefined);
131
+ }
132
+ pass.typeOwnedQuantityIdsByEntity.set(entityId, replacements);
133
+ pass.addedTypeOwnedQuantityIds.set(entityId, []);
134
+ pass.rewrittenEntityIds.add(entityId);
135
+ return { qsets: activeSets, sourceSets: selected };
136
+ }
137
+ function replaced(line, slot, value) {
138
+ const result = replaceStepArgument(line, slot, value);
139
+ if (result === null)
140
+ throw new Error('Type quantity copy cannot preserve its native STEP slots');
141
+ return result;
142
+ }
143
+ /** Copy edited atoms only. Untouched units, Formula and opaque physical quantities retain their IDs. */
144
+ export function generateTypeQuantityCopy(pass, options, ctx, entityId, qset, source) {
145
+ const lines = [];
146
+ const memberIds = [];
147
+ const usedNames = new Set();
148
+ const remaining = new Map(qset.quantities.map(quantity => [quantity.name, quantity]));
149
+ for (const id of source.members) {
150
+ if (!pass.willBeEmitted(id) || pass.withheldRefIds.has(id))
151
+ continue;
152
+ const line = nativeSetLine(ctx, id, pass.sourceSchema, pass.modifiedAttributes.get(id), pass.warnings);
153
+ const entity = decodeNativeSetLine(line, id);
154
+ const name = typeof entity.attributes[0] === 'string' ? entity.attributes[0] : null;
155
+ const first = name !== null && !usedNames.has(name);
156
+ if (name !== null)
157
+ usedNames.add(name);
158
+ const quantity = name === null ? undefined : qset.quantities.find(q => q.name === name);
159
+ const base = name === null ? undefined : source.quantities?.find(q => q.name === name);
160
+ const simple = getInheritanceChainAcrossSchemas(entity.type).includes('IfcPhysicalSimpleQuantity');
161
+ if (simple && first && base && !quantity)
162
+ continue;
163
+ if (name !== null)
164
+ remaining.delete(name);
165
+ const changed = first && quantity && (!base || quantity.type !== base.type || quantity.value !== base.value || quantity.unit !== base.unit);
166
+ if (!changed || !quantity) {
167
+ memberIds.push(id);
168
+ continue;
169
+ }
170
+ const mutation = ctx.mutationView?.getQuantityMutation(entityId, qset.name, quantity.name);
171
+ const targetType = quantityTypeToIfcType(quantity.type);
172
+ if (!getInheritanceChainAcrossSchemas(entity.type).includes('IfcPhysicalSimpleQuantity')) {
173
+ throw new Error(`Type quantity #${id} requires an explicit native entity edit`);
174
+ }
175
+ const retainedUnitType = name === null ? undefined : source.unitTypes?.get(name);
176
+ if (!mutation?.unitRemoved && retainedUnitType
177
+ && (mutation?.unit === undefined || mutation.unit === source.unitSymbols?.get(name ?? ''))) {
178
+ const valueAttribute = getAttributeNamesForSchema(targetType, pass.sourceSchema)[3];
179
+ const valueType = valueAttribute ? getAttributeTypeForSchema(targetType, valueAttribute, pass.sourceSchema) : undefined;
180
+ const expectedUnit = valueType ? measureUnit(valueType) : undefined;
181
+ if (!expectedUnit || expectedUnit.kind !== 'typed' || expectedUnit.unitType !== retainedUnitType) {
182
+ throw new Error(`Type quantity #${id} unit dimension is incompatible with ${targetType}`);
183
+ }
184
+ }
185
+ let copy = replaced(line, 3, toStepReal(quantity.value));
186
+ // Omitted unit intent retains the native reference, including non-length units.
187
+ if (mutation?.unitRemoved)
188
+ copy = replaced(copy, 2, '$');
189
+ else if (mutation?.unit !== undefined) {
190
+ if (name === null || mutation.unit !== source.unitSymbols?.get(name)) {
191
+ const unitId = targetType === 'IFCQUANTITYLENGTH' ? findUnitId(ctx, mutation.unit, pass.effective) : null;
192
+ if (unitId === null)
193
+ throw new Error(`Type quantity #${id} unit edit cannot resolve a native reference`);
194
+ copy = replaced(copy, 2, `#${unitId}`);
195
+ }
196
+ }
197
+ const newId = ctx.allocateExpressId();
198
+ const slots = readStepSlots(copy);
199
+ if (!slots)
200
+ throw new Error('Type quantity edited copy has invalid native slots');
201
+ copy = `#${newId}=${targetType}(${slots.slots.join(',')});`;
202
+ lines.push(copy);
203
+ memberIds.push(newId);
204
+ }
205
+ for (const quantity of remaining.values()) {
206
+ const atom = generateQuantityAtom(ctx, quantity, pass.effective, true);
207
+ lines.push(atom.line);
208
+ memberIds.push(atom.id);
209
+ }
210
+ if (memberIds.length === 0)
211
+ throw new Error('An empty native type quantity copy cannot be emitted');
212
+ const setId = ctx.allocateExpressId();
213
+ // Every edited copy receives a fresh root GlobalId, matching regenerated
214
+ // occurrence sets; the source GlobalId only associates the edit with its
215
+ // verified native definition (#7378).
216
+ let setLine = replaced(source.line, 0, `'${generateGlobalId(options.guidRandom)}'`);
217
+ setLine = replaced(setLine, 5, `(${memberIds.map(id => `#${id}`).join(',')})`);
218
+ lines.push(setLine.replace(/^\s*#\d+\s*=/, `#${setId}=`));
219
+ // Source-schema records; the caller converts every generated quantity line once.
220
+ return { lines, count: lines.length, setId };
221
+ }
222
+ //# sourceMappingURL=step-type-owned-quantities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-type-owned-quantities.js","sourceRoot":"","sources":["../src/step-type-owned-quantities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ExportPass } from './step-export-types.js';
2
+ /** Count an emitted georeferencing edit once in the export's modification ledger. */
3
+ export declare function recordGeoreferencingEdit(pass: ExportPass, id: number): void;
4
+ /**
5
+ * Write a recognized `IfcProjectedCRS.VerticalDatum` that names a sea-level
6
+ * datum (e.g. 'EVRS2007') as EGM2008 height on the *emitted* model (#7356).
7
+ *
8
+ * Cesium ion applies a geoid only for vertical CRS codes it has a model for:
9
+ * live uploads shifted heights by the local EGM2008 separation for
10
+ * 'EPSG:3855', and not at all for 'EVRS2007', 'EPSG:5621' or a compound
11
+ * name, which left a sea-level model one geoid separation (48 m) too low.
12
+ * Only EVRS2007 and EGM2008 names are admitted. Explicit EPSG codes,
13
+ * ellipsoidal names and unrecognized text stay as authored. The authored datum's own offset from EGM2008
14
+ * (typically decimetres) remains; heights themselves are never rewritten.
15
+ */
16
+ export declare function normalizeVerticalDatumToEgm2008(pass: ExportPass): void;
17
+ //# sourceMappingURL=step-vertical-datum-normalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-vertical-datum-normalization.d.ts","sourceRoot":"","sources":["../src/step-vertical-datum-normalization.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AASzD,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAO3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAgBtE"}
@@ -0,0 +1,52 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { readStepSlots } from './step-argument-parser.js';
5
+ import { attrIndex, stepSourceSchema } from './subset-entity-reader.js';
6
+ /** EGM2008 height: the global geoid model Cesium ion was observed to apply. */
7
+ const EGM2008_HEIGHT = 'EPSG:3855';
8
+ // Admit recognized vertical datum names, never arbitrary project-zero text or
9
+ // a horizontal datum token embedded in a vertical datum description (#7356).
10
+ const SEA_LEVEL_DATUM = /^(?:EVRS\s*2007|EGM\s*2008)(?:\s+height)?(?:\s*\(WGS\s*(?:84|1984)\))?$/i;
11
+ /** Count an emitted georeferencing edit once in the export's modification ledger. */
12
+ export function recordGeoreferencingEdit(pass, id) {
13
+ // Newly created entities already contribute to newEntityCount; source
14
+ // entities count once even if an earlier session edit changed them too.
15
+ if (!pass.effective.isOverlayCreated(id) && pass.effective.has(id)) {
16
+ pass.modifications.nominate(id, 'georeferencing');
17
+ pass.modifications.recordEmitted(id, 'georeferencing');
18
+ }
19
+ }
20
+ /**
21
+ * Write a recognized `IfcProjectedCRS.VerticalDatum` that names a sea-level
22
+ * datum (e.g. 'EVRS2007') as EGM2008 height on the *emitted* model (#7356).
23
+ *
24
+ * Cesium ion applies a geoid only for vertical CRS codes it has a model for:
25
+ * live uploads shifted heights by the local EGM2008 separation for
26
+ * 'EPSG:3855', and not at all for 'EVRS2007', 'EPSG:5621' or a compound
27
+ * name, which left a sea-level model one geoid separation (48 m) too low.
28
+ * Only EVRS2007 and EGM2008 names are admitted. Explicit EPSG codes,
29
+ * ellipsoidal names and unrecognized text stay as authored. The authored datum's own offset from EGM2008
30
+ * (typically decimetres) remains; heights themselves are never rewritten.
31
+ */
32
+ export function normalizeVerticalDatumToEgm2008(pass) {
33
+ const slot = attrIndex('IFCPROJECTEDCRS', 'VerticalDatum', stepSourceSchema(pass.sourceSchema));
34
+ if (slot < 0)
35
+ return;
36
+ for (let index = 0; index < pass.entities.length; index++) {
37
+ const line = pass.entities[index];
38
+ const prefix = /^#([0-9]+)\s*=\s*IFCPROJECTEDCRS\s*\(/i.exec(line);
39
+ if (!prefix)
40
+ continue;
41
+ const record = readStepSlots(line);
42
+ const token = record?.slots[slot]?.trim();
43
+ const text = token && /^'.*'$/s.test(token) ? token.slice(1, -1) : undefined;
44
+ if (!record || !text || !SEA_LEVEL_DATUM.test(text.trim()))
45
+ continue;
46
+ const slots = record.slots.map(value => value.trim());
47
+ slots[slot] = `'${EGM2008_HEIGHT}'`;
48
+ pass.entities[index] = `${record.prefix}${slots.join(',')}${record.suffix}`;
49
+ recordGeoreferencingEdit(pass, Number(prefix[1]));
50
+ }
51
+ }
52
+ //# sourceMappingURL=step-vertical-datum-normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-vertical-datum-normalization.js","sourceRoot":"","sources":["../src/step-vertical-datum-normalization.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,+EAA+E;AAC/E,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,eAAe,GAAG,0EAA0E,CAAC;AAEnG,qFAAqF;AACrF,MAAM,UAAU,wBAAwB,CAAC,IAAgB,EAAE,EAAU;IACnE,sEAAsE;IACtE,wEAAwE;IACxE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,+BAA+B,CAAC,IAAgB;IAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAChG,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO;IACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAE,SAAS;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,cAAc,GAAG,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5E,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"unit-normalize.d.ts","sourceRoot":"","sources":["../src/unit-normalize.ts"],"names":[],"mappings":"AAmFA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mFAAmF;IACnF,KAAK,EAAE,OAAO,CAAC;CAChB;AA0BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAMvE;AAqCD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlD;AAYD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxE;AA0BD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CAYR;AAqBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CA+DR;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKvF"}
1
+ {"version":3,"file":"unit-normalize.d.ts","sourceRoot":"","sources":["../src/unit-normalize.ts"],"names":[],"mappings":"AAmFA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mFAAmF;IACnF,KAAK,EAAE,OAAO,CAAC;CAChB;AA0BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAMvE;AAqCD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlD;AAYD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGxE;AA0BD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CAWR;AAqBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CA+DR;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKvF"}
@@ -55,7 +55,7 @@
55
55
  import { getAllAttributesForEntity, STEP_TRIVIA } from '@ifc-lite/parser';
56
56
  import { formatStepReal } from '@ifc-lite/data';
57
57
  import { splitTopLevelStepArguments } from './step-argument-parser.js';
58
- import { findOuterArgs } from './step-outer-args.js';
58
+ import { findOuterArgs, mapOutsideStepStrings } from './step-outer-args.js';
59
59
  /** IFC defined types whose values are lengths (STEP writes them as bare reals). */
60
60
  const LENGTH_MEASURE_TYPES = new Set([
61
61
  'IfcLengthMeasure',
@@ -163,32 +163,27 @@ export function toStepRealScaled(v) {
163
163
  return formatStepReal(parseFloat(v.toPrecision(12)));
164
164
  }
165
165
  /**
166
- * Single token matcher used by {@link scaleNumberLiterals}: a full STEP string
167
- * (kept verbatim, honouring the `''` escape), a `#`-reference (kept verbatim), or
168
- * a REAL/INTEGER literal (rescaled). Ordering matters — strings and refs are
169
- * matched first so their inner digits are never treated as numbers. The number
170
- * alternative consumes an optional exponent as one token, so `1.E-5` / `-2.5E2`
171
- * scale the mantissa without touching the exponent digits.
166
+ * Single token matcher used by {@link scaleNumberLiterals} over text OUTSIDE
167
+ * string literals ({@link mapOutsideStepStrings}): a `#`-reference (kept
168
+ * verbatim) or a REAL/INTEGER literal (rescaled). Refs are matched first so
169
+ * their digits are never treated as numbers. The number alternative consumes an
170
+ * optional exponent as one token, so `1.E-5` / `-2.5E2` scale the mantissa
171
+ * without touching the exponent digits.
172
172
  */
173
- const NUMBER_TOKEN_RE = /'(?:[^']|'')*'|#\d+|[+-]?(?:\d+\.\d*|\.\d+|\d+)(?:[eE][+-]?\d+)?/g;
173
+ const NUMBER_TOKEN_RE = /#\d+|[+-]?(?:\d+\.\d*|\.\d+|\d+)(?:[eE][+-]?\d+)?/g;
174
174
  /**
175
175
  * Multiply every bare numeric literal in `text` by `factor`, leaving quoted
176
176
  * strings and `#`-references untouched. O(n) single pass — safe for the large
177
177
  * coordinate lists of tessellated geometry.
178
178
  */
179
179
  export function scaleNumberLiterals(text, factor) {
180
- return text.replace(NUMBER_TOKEN_RE, (tok) => {
181
- const c = tok.charCodeAt(0);
182
- if (c === 0x27 /* ' */ || c === 0x23 /* # */)
183
- return tok;
184
- return toStepRealScaled(parseFloat(tok) * factor);
185
- });
180
+ return mapOutsideStepStrings(text, (code) => code.replace(NUMBER_TOKEN_RE, (tok) => tok.charCodeAt(0) === 0x23 /* # */ ? tok : toStepRealScaled(parseFloat(tok) * factor)));
186
181
  }
187
182
  /**
188
183
  * Scale the typed measures embedded in property/quantity values. Matches
189
184
  * `IFC[POSITIVE|NONNEGATIVE]LENGTHMEASURE(x)` (× lengthFactor), `IFCAREAMEASURE(x)`
190
185
  * (× areaFactor) and `IFCVOLUMEMEASURE(x)` (× volumeFactor), but never inside a
191
- * quoted string (the string alternative is matched first and returned verbatim).
186
+ * quoted string ({@link mapOutsideStepStrings} hands it only the text between them).
192
187
  *
193
188
  * A single non-word delimiter (`(`, `,`, whitespace, or start-of-input) is
194
189
  * captured before the keyword and restored, so a keyword can never be matched as
@@ -203,17 +198,15 @@ export function scaleNumberLiterals(text, factor) {
203
198
  * the normalized file's other measures scaled but this one still in the
204
199
  * source unit.
205
200
  */
206
- const TYPED_MEASURE_RE = new RegExp(`('(?:[^']|'')*')|(^|[^A-Za-z0-9_])(IFC(?:POSITIVE|NONNEGATIVE)?LENGTHMEASURE|IFCAREAMEASURE|IFCVOLUMEMEASURE)${STEP_TRIVIA}\\(([^)]*)\\)`, 'gi');
201
+ const TYPED_MEASURE_RE = new RegExp(`(^|[^A-Za-z0-9_])(IFC(?:POSITIVE|NONNEGATIVE)?LENGTHMEASURE|IFCAREAMEASURE|IFCVOLUMEMEASURE)${STEP_TRIVIA}\\(([^)]*)\\)`, 'gi');
207
202
  export function scaleTypedMeasures(text, lengthFactor, areaFactor, volumeFactor) {
208
- return text.replace(TYPED_MEASURE_RE, (full, str, delim, keyword, num) => {
209
- if (str !== undefined)
210
- return full; // inside a quoted string
203
+ return mapOutsideStepStrings(text, (code) => code.replace(TYPED_MEASURE_RE, (_full, delim, keyword, num) => {
211
204
  const kw = keyword.toUpperCase();
212
205
  const factor = kw === 'IFCAREAMEASURE' ? areaFactor
213
206
  : kw === 'IFCVOLUMEMEASURE' ? volumeFactor
214
207
  : lengthFactor; // any *LENGTHMEASURE
215
208
  return `${delim}${keyword}(${scaleMeasureNumber(num, factor)})`;
216
- });
209
+ }));
217
210
  }
218
211
  /** Scale the numeric content of one typed-measure token, preserving non-numeric ($) content. */
219
212
  function scaleMeasureNumber(num, factor) {
@@ -1 +1 @@
1
- {"version":3,"file":"unit-normalize.js","sourceRoot":"","sources":["../src/unit-normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unit-normalize.js","sourceRoot":"","sources":["../src/unit-normalize.ts"],"names":[],"mappings":"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"}