@ifc-lite/export 3.1.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +3 -1
  2. package/dist/anonymize-export.d.ts.map +1 -1
  3. package/dist/anonymize-export.js +108 -8
  4. package/dist/anonymize-export.js.map +1 -1
  5. package/dist/anonymize-placement.js +4 -4
  6. package/dist/anonymize-scrub.d.ts +6 -0
  7. package/dist/anonymize-scrub.d.ts.map +1 -1
  8. package/dist/anonymize-scrub.js +8 -4
  9. package/dist/anonymize-scrub.js.map +1 -1
  10. package/dist/anonymize-types.d.ts +30 -7
  11. package/dist/anonymize-types.d.ts.map +1 -1
  12. package/dist/declared-property-type.d.ts +15 -0
  13. package/dist/declared-property-type.d.ts.map +1 -1
  14. package/dist/declared-property-type.js +43 -0
  15. package/dist/declared-property-type.js.map +1 -1
  16. package/dist/georef-closure.d.ts +55 -0
  17. package/dist/georef-closure.d.ts.map +1 -0
  18. package/dist/georef-closure.js +95 -0
  19. package/dist/georef-closure.js.map +1 -0
  20. package/dist/glb.d.ts.map +1 -1
  21. package/dist/glb.js +26 -2
  22. package/dist/glb.js.map +1 -1
  23. package/dist/ifc5-classification.d.ts +36 -0
  24. package/dist/ifc5-classification.d.ts.map +1 -0
  25. package/dist/ifc5-classification.js +46 -0
  26. package/dist/ifc5-classification.js.map +1 -0
  27. package/dist/ifc5-export-helpers.d.ts +32 -0
  28. package/dist/ifc5-export-helpers.d.ts.map +1 -0
  29. package/dist/ifc5-export-helpers.js +84 -0
  30. package/dist/ifc5-export-helpers.js.map +1 -0
  31. package/dist/ifc5-exporter.d.ts.map +1 -1
  32. package/dist/ifc5-exporter.js +14 -86
  33. package/dist/ifc5-exporter.js.map +1 -1
  34. package/dist/ifc5-material.d.ts +38 -0
  35. package/dist/ifc5-material.d.ts.map +1 -0
  36. package/dist/ifc5-material.js +32 -0
  37. package/dist/ifc5-material.js.map +1 -0
  38. package/dist/index.d.ts +2 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +2 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/lod0-generator.d.ts +16 -0
  43. package/dist/lod0-generator.d.ts.map +1 -1
  44. package/dist/lod0-generator.js +33 -1
  45. package/dist/lod0-generator.js.map +1 -1
  46. package/dist/merged-context.d.ts +100 -0
  47. package/dist/merged-context.d.ts.map +1 -0
  48. package/dist/merged-context.js +211 -0
  49. package/dist/merged-context.js.map +1 -0
  50. package/dist/merged-empty-containers.d.ts +63 -0
  51. package/dist/merged-empty-containers.d.ts.map +1 -0
  52. package/dist/merged-empty-containers.js +354 -0
  53. package/dist/merged-empty-containers.js.map +1 -0
  54. package/dist/merged-exporter.d.ts +28 -67
  55. package/dist/merged-exporter.d.ts.map +1 -1
  56. package/dist/merged-exporter.js +134 -258
  57. package/dist/merged-exporter.js.map +1 -1
  58. package/dist/merged-guid.d.ts +48 -0
  59. package/dist/merged-guid.d.ts.map +1 -0
  60. package/dist/merged-guid.js +128 -0
  61. package/dist/merged-guid.js.map +1 -0
  62. package/dist/merged-rel-aggregates.d.ts +63 -0
  63. package/dist/merged-rel-aggregates.d.ts.map +1 -0
  64. package/dist/merged-rel-aggregates.js +122 -0
  65. package/dist/merged-rel-aggregates.js.map +1 -0
  66. package/dist/merged-remap.d.ts +18 -0
  67. package/dist/merged-remap.d.ts.map +1 -0
  68. package/dist/merged-remap.js +66 -0
  69. package/dist/merged-remap.js.map +1 -0
  70. package/dist/merged-subcontext.d.ts +41 -0
  71. package/dist/merged-subcontext.d.ts.map +1 -0
  72. package/dist/merged-subcontext.js +99 -0
  73. package/dist/merged-subcontext.js.map +1 -0
  74. package/dist/parquet-exporter-ondemand.d.ts +34 -0
  75. package/dist/parquet-exporter-ondemand.d.ts.map +1 -0
  76. package/dist/parquet-exporter-ondemand.js +89 -0
  77. package/dist/parquet-exporter-ondemand.js.map +1 -0
  78. package/dist/parquet-exporter.d.ts +1 -29
  79. package/dist/parquet-exporter.d.ts.map +1 -1
  80. package/dist/parquet-exporter.js +59 -81
  81. package/dist/parquet-exporter.js.map +1 -1
  82. package/dist/parquet-type-strings.d.ts +11 -0
  83. package/dist/parquet-type-strings.d.ts.map +1 -0
  84. package/dist/parquet-type-strings.js +40 -0
  85. package/dist/parquet-type-strings.js.map +1 -0
  86. package/dist/parquet-uint32-columns.d.ts +30 -0
  87. package/dist/parquet-uint32-columns.d.ts.map +1 -0
  88. package/dist/parquet-uint32-columns.js +38 -0
  89. package/dist/parquet-uint32-columns.js.map +1 -0
  90. package/dist/reference-collector.d.ts +0 -31
  91. package/dist/reference-collector.d.ts.map +1 -1
  92. package/dist/reference-collector.js +27 -82
  93. package/dist/reference-collector.js.map +1 -1
  94. package/dist/related-entities.d.ts.map +1 -1
  95. package/dist/related-entities.js +19 -4
  96. package/dist/related-entities.js.map +1 -1
  97. package/dist/schema-converter-attr-remap.d.ts +53 -0
  98. package/dist/schema-converter-attr-remap.d.ts.map +1 -0
  99. package/dist/schema-converter-attr-remap.js +106 -0
  100. package/dist/schema-converter-attr-remap.js.map +1 -0
  101. package/dist/schema-converter.d.ts.map +1 -1
  102. package/dist/schema-converter.js +24 -1
  103. package/dist/schema-converter.js.map +1 -1
  104. package/dist/schema-untranslatable.d.ts +35 -0
  105. package/dist/schema-untranslatable.d.ts.map +1 -0
  106. package/dist/schema-untranslatable.js +60 -0
  107. package/dist/schema-untranslatable.js.map +1 -0
  108. package/dist/step-argument-parser.d.ts.map +1 -1
  109. package/dist/step-argument-parser.js +11 -1
  110. package/dist/step-argument-parser.js.map +1 -1
  111. package/dist/step-attribute-mutations.js +14 -11
  112. package/dist/step-attribute-mutations.js.map +1 -1
  113. package/dist/step-collection.d.ts.map +1 -1
  114. package/dist/step-collection.js +20 -6
  115. package/dist/step-collection.js.map +1 -1
  116. package/dist/step-export-types.d.ts +15 -0
  117. package/dist/step-export-types.d.ts.map +1 -1
  118. package/dist/step-export-types.js +10 -0
  119. package/dist/step-export-types.js.map +1 -1
  120. package/dist/step-exporter.d.ts.map +1 -1
  121. package/dist/step-exporter.js +9 -1
  122. package/dist/step-exporter.js.map +1 -1
  123. package/dist/step-map-unit.d.ts +2 -1
  124. package/dist/step-map-unit.d.ts.map +1 -1
  125. package/dist/step-map-unit.js.map +1 -1
  126. package/dist/step-serialization.d.ts +10 -30
  127. package/dist/step-serialization.d.ts.map +1 -1
  128. package/dist/step-serialization.js +10 -60
  129. package/dist/step-serialization.js.map +1 -1
  130. package/dist/step-source-iteration.d.ts.map +1 -1
  131. package/dist/step-source-iteration.js +21 -0
  132. package/dist/step-source-iteration.js.map +1 -1
  133. package/dist/style-closure.d.ts +91 -0
  134. package/dist/style-closure.d.ts.map +1 -0
  135. package/dist/style-closure.js +164 -0
  136. package/dist/style-closure.js.map +1 -0
  137. package/dist/subset-entity-reader.d.ts +10 -9
  138. package/dist/subset-entity-reader.d.ts.map +1 -1
  139. package/dist/subset-entity-reader.js +21 -11
  140. package/dist/subset-entity-reader.js.map +1 -1
  141. package/dist/subset-roots.d.ts +17 -1
  142. package/dist/subset-roots.d.ts.map +1 -1
  143. package/dist/subset-roots.js +67 -2
  144. package/dist/subset-roots.js.map +1 -1
  145. package/dist/type-owned-psets.d.ts +19 -0
  146. package/dist/type-owned-psets.d.ts.map +1 -1
  147. package/dist/type-owned-psets.js +31 -0
  148. package/dist/type-owned-psets.js.map +1 -1
  149. package/dist/unit-normalize.d.ts.map +1 -1
  150. package/dist/unit-normalize.js +10 -2
  151. package/dist/unit-normalize.js.map +1 -1
  152. package/package.json +8 -7
@@ -0,0 +1,164 @@
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 { collectRefsInByteRange } from './reference-collector.js';
5
+ import { isGeometryEntity } from './step-geometry-types.js';
6
+ /**
7
+ * The four entity classes `collectStyleEntities` rescues. Exported so
8
+ * `step-source-iteration.ts` can apply the SAME dangling-ref-safe line
9
+ * filter (`filterHiddenRefsFromRelationshipLine`) to a rescued entity's own
10
+ * output line as it already does for `IFCREL*` — a rescued
11
+ * `IFCPRESENTATIONLAYERASSIGNMENT` can legitimately end up naming both a
12
+ * kept item and an excluded one (see `collectStyleEntities`'s own doc), and
13
+ * without that filter its `AssignedItems` line would ship a dangling `#N`.
14
+ */
15
+ export const STYLE_RESCUE_TYPES = new Set([
16
+ 'IFCSTYLEDITEM',
17
+ 'IFCSTYLEDREPRESENTATION',
18
+ 'IFCPRESENTATIONLAYERASSIGNMENT',
19
+ 'IFCPRESENTATIONLAYERWITHSTYLE',
20
+ ]);
21
+ /**
22
+ * Presentation RESOURCE types (colours, surface styles, the assignment that
23
+ * glues a style to an item) that `isGeometryEntity` also classifies as
24
+ * "geometry" for the unrelated `includeGeometry: false` feature, but that
25
+ * are never exclusively owned by one product the way an
26
+ * `IfcShapeRepresentation` or `IfcExtrudedAreaSolid` is: they are shared
27
+ * presentation data, referenced BY styled items rather than referencing a
28
+ * product's geometry themselves. `IFCSTYLEDITEM` is deliberately NOT in this
29
+ * set — a `IfcStyledRepresentation.Items` list can itself mix a rescued
30
+ * (visible) styled item with one reachable only through a hidden product's
31
+ * OWN styled item (each product can carry its own styling), so it gets the
32
+ * same "must already be in the closure" treatment as any other geometry
33
+ * candidate.
34
+ */
35
+ const STYLE_RESOURCE_EXEMPT_TYPES = new Set([
36
+ 'IFCPRESENTATIONSTYLEASSIGNMENT',
37
+ 'IFCSURFACESTYLE',
38
+ 'IFCSURFACESTYLERENDERING',
39
+ 'IFCCOLOURRGB',
40
+ ]);
41
+ /**
42
+ * Collect style and presentation-layer entities (IFCSTYLEDITEM,
43
+ * IFCSTYLEDREPRESENTATION, IFCPRESENTATIONLAYERASSIGNMENT,
44
+ * IFCPRESENTATIONLAYERWITHSTYLE) that reference geometry already in the
45
+ * closure, then transitively follow their own references.
46
+ *
47
+ * In IFC STEP, IFCSTYLEDITEM references a geometry RepresentationItem, but
48
+ * nothing references the StyledItem back — and IFCPRESENTATIONLAYERASSIGNMENT
49
+ * is the same shape: it names the representation/items assigned to a layer
50
+ * (`AssignedItems`) but nothing points back at the assignment itself. So the
51
+ * forward closure walk misses both entirely. This function does one reverse
52
+ * pass using the byType index: for each candidate, check if any referenced ID
53
+ * is in the closure. If yes, add it and walk its own reference chain in.
54
+ *
55
+ * ## Why the forward walk needs more than `excludeIds`
56
+ *
57
+ * `excludeIds` (`hiddenProductIds`) only ever holds PRODUCT ids, never the
58
+ * geometry those products exclusively own. `IfcPresentationLayerAssignment.
59
+ * AssignedItems` routinely names REPRESENTATION-level ids directly (one CAD
60
+ * layer naming every wall's `IfcShapeRepresentation`), so a shared layer
61
+ * assignment can legitimately be rescued by a VISIBLE wall's representation
62
+ * while also naming a HIDDEN wall's — an id nowhere in `excludeIds`. A plain
63
+ * `excludeIds.has(id)` check (the shape `collectGeoreferencingEntities` uses)
64
+ * would miss that id entirely and resurrect the hidden wall's geometry.
65
+ *
66
+ * The fix relies on an invariant this function's own contract already
67
+ * guarantees: it runs strictly AFTER `collectReferencedEntityIds`, which has
68
+ * already walked the FULL forward closure from every visible root. So any
69
+ * geometry/representation-classified entity (`isGeometryEntity`) that is
70
+ * NOT already in `closure` by the time this pass starts has no other path to
71
+ * visibility — it is either exclusively owned by an excluded product, or
72
+ * genuinely unreferenced by any visible root — and must not be resurrected
73
+ * just because it happens to sit in the same `AssignedItems`/`Item` list as
74
+ * something that IS visible. Presentation RESOURCE types (colours, surface
75
+ * styles — see `STYLE_RESOURCE_EXEMPT_TYPES`) are the one exception: they are
76
+ * shared data, never product-exclusive, so the pre-existing "pull in the
77
+ * style chain" behaviour for them is preserved unconditionally.
78
+ *
79
+ * `excludeIds` is still threaded through and checked directly (matching
80
+ * `collectGeoreferencingEntities`'s shape) as a second, cheap guard — e.g. if
81
+ * a future entity ever names an excluded id that is not geometry-classified.
82
+ *
83
+ * Uses byType for O(candidates) instead of O(allEntities), and byte-level
84
+ * scanning for #ID extraction.
85
+ *
86
+ * Must be called AFTER collectReferencedEntityIds so the closure is complete.
87
+ *
88
+ * @param closure - The existing closure set (mutated in place)
89
+ * @param source - The original STEP file source buffer
90
+ * @param entityIndex - Full entity index with type info and byType lookup
91
+ * @param excludeIds - Entity IDs to never add, even if they reference the
92
+ * closure (e.g. `pass.hiddenProductIds` / a subset export's `excludedIds`)
93
+ */
94
+ export function collectStyleEntities(closure, source, entityIndex, excludeIds) {
95
+ const queue = [];
96
+ const refsOf = (expressId, ref) => {
97
+ const authored = entityIndex.byId.refsOf?.(expressId);
98
+ if (authored)
99
+ return authored.slice();
100
+ return collectRefsInByteRange(source, ref.byteOffset, ref.byteLength);
101
+ };
102
+ // Use byType index for direct lookup — O(candidates) not O(allEntities)
103
+ const styledItemIds = entityIndex.byType.get('IFCSTYLEDITEM') ?? [];
104
+ const styledRepIds = entityIndex.byType.get('IFCSTYLEDREPRESENTATION') ?? [];
105
+ const layerAssignmentIds = entityIndex.byType.get('IFCPRESENTATIONLAYERASSIGNMENT') ?? [];
106
+ // IFCPRESENTATIONLAYERWITHSTYLE is a subtype (adds LayerOn/LayerFrozen/
107
+ // LayerBlocked/LayerStyles) indexed under its own STEP type name, not
108
+ // IFCPRESENTATIONLAYERASSIGNMENT's — a separate byType lookup, same rescue.
109
+ const layerWithStyleIds = entityIndex.byType.get('IFCPRESENTATIONLAYERWITHSTYLE') ?? [];
110
+ for (const ids of [styledItemIds, styledRepIds, layerAssignmentIds, layerWithStyleIds]) {
111
+ for (const expressId of ids) {
112
+ if (closure.has(expressId))
113
+ continue;
114
+ const entityRef = entityIndex.byId.get(expressId);
115
+ if (!entityRef)
116
+ continue;
117
+ // Check if any referenced ID is in the closure
118
+ const refs = refsOf(expressId, entityRef);
119
+ let referencesClosureEntity = false;
120
+ for (let i = 0; i < refs.length; i++) {
121
+ if (closure.has(refs[i])) {
122
+ referencesClosureEntity = true;
123
+ break;
124
+ }
125
+ }
126
+ if (referencesClosureEntity) {
127
+ closure.add(expressId);
128
+ queue.push(expressId);
129
+ }
130
+ }
131
+ }
132
+ // Walk forward from newly added style entities to pull in their style chain
133
+ // (IfcPresentationStyleAssignment → IfcSurfaceStyle → IfcSurfaceStyleRendering → IfcColourRgb)
134
+ // — but see the function doc for why a geometry-classified id not already
135
+ // in the closure is refused here rather than resurrected.
136
+ while (queue.length > 0) {
137
+ const entityId = queue.pop();
138
+ const ref = entityIndex.byId.get(entityId);
139
+ if (!ref)
140
+ continue;
141
+ const refs = refsOf(entityId, ref);
142
+ for (let i = 0; i < refs.length; i++) {
143
+ const referencedId = refs[i];
144
+ if (closure.has(referencedId))
145
+ continue;
146
+ if (excludeIds?.has(referencedId))
147
+ continue;
148
+ const targetRef = entityIndex.byId.get(referencedId);
149
+ if (!targetRef)
150
+ continue;
151
+ const targetType = targetRef.type.toUpperCase();
152
+ if (isGeometryEntity(targetType) && !STYLE_RESOURCE_EXEMPT_TYPES.has(targetType)) {
153
+ // A representation/geometry id this pass has not already proven
154
+ // visible — refusing it is what stops a shared layer assignment or
155
+ // styled representation from resurrecting a hidden product's
156
+ // exclusively-owned geometry (see function doc).
157
+ continue;
158
+ }
159
+ closure.add(referencedId);
160
+ queue.push(referencedId);
161
+ }
162
+ }
163
+ }
164
+ //# sourceMappingURL=style-closure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-closure.js","sourceRoot":"","sources":["../src/style-closure.ts"],"names":[],"mappings":"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"}
@@ -89,15 +89,16 @@ export declare function stepSourceSchema(schemaVersion: string | undefined): Sou
89
89
  * `anonymize-placement.ts` and `anonymize-scrub.ts` do exactly that, each
90
90
  * noting at the call site why its type is fixed rather than caller-supplied.
91
91
  *
92
- * WRITE-SIDE PITFALL a caller resolving a slot via this function must not
93
- * fall into: `MutablePropertyView.setAttribute(id, name, value)` re-resolves
94
- * `name` to a slot by ITS OWN lookup at STEP-serialize time
95
- * (`step-attribute-mutations.ts`'s `applyAttributeMutations`), which is not
96
- * schema-aware so an edit queued that way can still land on the wrong slot
97
- * even after reading the right one here. Write with
98
- * `MutablePropertyView.setPositionalAttribute(id, index, value)` and this
99
- * function's resolved `index` instead; `anonymize-scrub.ts` does exactly
100
- * that for every slot it resolves through a `schema` argument (#3309).
92
+ * `MutablePropertyView.setAttribute(id, name, value)` re-resolves `name` to a
93
+ * slot by its own lookup at STEP-serialize time
94
+ * (`step-attribute-mutations.ts`'s `applyAttributeMutations`), which now
95
+ * calls THIS function with the source entity's own `stepSourceSchema` too
96
+ * so a `setAttribute` edit resolves the same slot this function would report
97
+ * for the same type/schema. `anonymize-scrub.ts` still writes through
98
+ * `MutablePropertyView.setPositionalAttribute(id, index, value)` with an
99
+ * `index` resolved here directly (#3309); that path needs no re-resolution
100
+ * at serialize time at all, so it stays the more direct choice for a caller
101
+ * that already has the index in hand.
101
102
  */
102
103
  export declare function attrIndex(type: string, name: string, schema?: SourceStepSchema): number;
103
104
  //# sourceMappingURL=subset-entity-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subset-entity-reader.d.ts","sourceRoot":"","sources":["../src/subset-entity-reader.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD;;mDAEmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;kFACkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACxF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAAE,EAC1C,KAAK,EAAE,oBAAoB,EAC3B,EAAE,EAAE,MAAM,GACT,gBAAgB,GAAG,IAAI,CAWzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAc5D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAIhG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAMvF"}
1
+ {"version":3,"file":"subset-entity-reader.d.ts","sourceRoot":"","sources":["../src/subset-entity-reader.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBvD;;mDAEmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;kFACkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACxF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAAE,EAC1C,KAAK,EAAE,oBAAoB,EAC3B,EAAE,EAAE,MAAM,GACT,gBAAgB,GAAG,IAAI,CAWzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAc5D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAIhG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAMvF"}
@@ -1,10 +1,19 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
- import { getAttributeNamesAcrossSchemas, resolveEntityNameAlias } from '@ifc-lite/parser';
4
+ import { STEP_TRIVIA, getAttributeNamesAcrossSchemas, resolveEntityNameAlias } from '@ifc-lite/parser';
5
5
  import { ENTITIES_IFC2X3, ENTITIES_IFC4, ENTITIES_IFC4X3 } from '@ifc-lite/data';
6
6
  import { createSourceRefReader, decodeRange } from './source-ref-bounds.js';
7
7
  import { splitTopLevelArgs } from './step-argument-parser.js';
8
+ /**
9
+ * `#N=TYPE(...);` record, with STEP trivia (whitespace and/or a
10
+ * `/* ... *​/` comment, #3789) tolerated between the type name and `(` —
11
+ * the same adjacency fix the rest of this package's record readers carry.
12
+ * Without it a wrapped record reads as unparseable, `readEntityArgs` returns
13
+ * `null`, and `anonymize-placement.ts` / `anonymize-scrub.ts` silently skip
14
+ * that entity instead of scrubbing it.
15
+ */
16
+ const RECORD_RE = new RegExp(`^#\\d+\\s*=\\s*(\\w+)${STEP_TRIVIA}\\(([\\s\\S]*)\\)\\s*;\\s*$`);
8
17
  /**
9
18
  * Read entity `id`'s STEP record out of `store`'s source and split it into
10
19
  * its type token and top-level argument list. Returns `null` when the id has
@@ -27,7 +36,7 @@ export function readEntityArgs(store, index, id) {
27
36
  if (!isReadable(ref))
28
37
  return null;
29
38
  const line = decodeRange(store.source, ref.byteOffset, ref.byteOffset + ref.byteLength);
30
- const match = line.match(/^#\d+\s*=\s*(\w+)\(([\s\S]*)\)\s*;\s*$/);
39
+ const match = line.match(RECORD_RE);
31
40
  if (!match)
32
41
  return null;
33
42
  const [, type, argsText] = match;
@@ -81,15 +90,16 @@ export function stepSourceSchema(schemaVersion) {
81
90
  * `anonymize-placement.ts` and `anonymize-scrub.ts` do exactly that, each
82
91
  * noting at the call site why its type is fixed rather than caller-supplied.
83
92
  *
84
- * WRITE-SIDE PITFALL a caller resolving a slot via this function must not
85
- * fall into: `MutablePropertyView.setAttribute(id, name, value)` re-resolves
86
- * `name` to a slot by ITS OWN lookup at STEP-serialize time
87
- * (`step-attribute-mutations.ts`'s `applyAttributeMutations`), which is not
88
- * schema-aware so an edit queued that way can still land on the wrong slot
89
- * even after reading the right one here. Write with
90
- * `MutablePropertyView.setPositionalAttribute(id, index, value)` and this
91
- * function's resolved `index` instead; `anonymize-scrub.ts` does exactly
92
- * that for every slot it resolves through a `schema` argument (#3309).
93
+ * `MutablePropertyView.setAttribute(id, name, value)` re-resolves `name` to a
94
+ * slot by its own lookup at STEP-serialize time
95
+ * (`step-attribute-mutations.ts`'s `applyAttributeMutations`), which now
96
+ * calls THIS function with the source entity's own `stepSourceSchema` too
97
+ * so a `setAttribute` edit resolves the same slot this function would report
98
+ * for the same type/schema. `anonymize-scrub.ts` still writes through
99
+ * `MutablePropertyView.setPositionalAttribute(id, index, value)` with an
100
+ * `index` resolved here directly (#3309); that path needs no re-resolution
101
+ * at serialize time at all, so it stays the more direct choice for a caller
102
+ * that already has the index in hand.
93
103
  */
94
104
  export function attrIndex(type, name, schema) {
95
105
  if (schema) {
@@ -1 +1 @@
1
- {"version":3,"file":"subset-entity-reader.js","sourceRoot":"","sources":["../src/subset-entity-reader.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmB/D,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAiB9D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,KAA0C,EAC1C,KAA2B,EAC3B,EAAU;IAEV,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzE,CAAC;AAWD,MAAM,yBAAyB,GAA+E;IAC5G,MAAM,EAAE,yBAAyB,CAAC,eAAe,CAAC;IAClD,IAAI,EAAE,yBAAyB,CAAC,aAAa,CAAC;IAC9C,MAAM,EAAE,yBAAyB,CAAC,eAAe,CAAC;CACnD,CAAC;AAEF,SAAS,yBAAyB,CAAC,KAA+B;IAChE,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjD,KAAK,MAAM,MAAM,IAAI,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAClF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAiC;IAChE,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,QAAQ;QACzF,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,MAAyB;IAC7E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAChG,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"subset-entity-reader.js","sourceRoot":"","sources":["../src/subset-entity-reader.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmB/D,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,wBAAwB,WAAW,6BAA6B,CAAC,CAAC;AAiB/F;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,KAA0C,EAC1C,KAA2B,EAC3B,EAAU;IAEV,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzE,CAAC;AAWD,MAAM,yBAAyB,GAA+E;IAC5G,MAAM,EAAE,yBAAyB,CAAC,eAAe,CAAC;IAClD,IAAI,EAAE,yBAAyB,CAAC,aAAa,CAAC;IAC9C,MAAM,EAAE,yBAAyB,CAAC,eAAe,CAAC;CACnD,CAAC;AAEF,SAAS,yBAAyB,CAAC,KAA+B;IAChE,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjD,KAAK,MAAM,MAAM,IAAI,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAClF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAiC;IAChE,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,QAAQ;QACzF,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,MAAyB;IAC7E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAChG,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC"}
@@ -30,6 +30,17 @@ export declare const IFC_ROOT_TYPES: ReadonlySet<string>;
30
30
  * `IFC_ROOT_TYPES`.
31
31
  */
32
32
  export declare const IDENTIFYING_TYPES: ReadonlySet<string>;
33
+ /** The subset of `IDENTIFYING_TYPES` the "Georeferencing & addresses" option
34
+ * governs. Dropping these while `removeGeoreferencing` is false left an
35
+ * `IfcSite` pointing at a `SiteAddress` line that was not written -- an
36
+ * invalid STEP file, reported with no warning, because the dangling-ref repair
37
+ * only rewrites `IFCREL*` lines and never sees a direct attribute slot (#3351).
38
+ *
39
+ * `IFCACTORROLE` is deliberately absent: it belongs to owner history, which
40
+ * this option does not govern, so it stays dropped unconditionally. */
41
+ export declare const GEOREFERENCE_TYPES: ReadonlySet<string>;
42
+ /** `IDENTIFYING_TYPES`, minus what the caller asked to keep. */
43
+ export declare function identifyingTypesFor(removeGeoreferencing: boolean): ReadonlySet<string>;
33
44
  /** What a `subsetEntityIds` export needs from `step-collection.ts`'s closure tail. */
34
45
  export interface SubsetEntityIds {
35
46
  /** Seed set for `collectReferencedEntityIds`: infrastructure plus every
@@ -54,5 +65,10 @@ export interface SubsetEntityIds {
54
65
  * classified by its new class, and a tombstoned one must not appear at all
55
66
  * (`EffectiveEntityIndex` iteration already skips it).
56
67
  */
57
- export declare function getSubsetEntityIds(index: EffectiveEntityIndex, includedIds: ReadonlySet<number>): SubsetEntityIds;
68
+ export declare function getSubsetEntityIds(index: EffectiveEntityIndex, includedIds: ReadonlySet<number>,
69
+ /** Which identifying classes to exclude. Defaults to all of them, so the
70
+ * general STEP-collection path is unchanged; the anonymize path narrows it
71
+ * with `identifyingTypesFor` when the caller asked to keep georeferencing
72
+ * and addresses (#3351). */
73
+ identifying?: ReadonlySet<string>): SubsetEntityIds;
58
74
  //# sourceMappingURL=subset-roots.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subset-roots.d.ts","sourceRoot":"","sources":["../src/subset-roots.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAAoB,CAAC;AAUpE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAQhD,CAAC;AAEH,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B;8DAC0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B;;;8EAG0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,eAAe,CA2BjB"}
1
+ {"version":3,"file":"subset-roots.d.ts","sourceRoot":"","sources":["../src/subset-roots.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAAoB,CAAC;AAUpE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAQhD,CAAC;AA8BH;;;;;;;wEAOwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAGjD,CAAC;AAEH,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,oBAAoB,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAGtF;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B;8DAC0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B;;;8EAG0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;AAChC;;;6BAG6B;AAC7B,WAAW,GAAE,WAAW,CAAC,MAAM,CAAqB,GACnD,eAAe,CA4CjB"}
@@ -64,6 +64,50 @@ export const IDENTIFYING_TYPES = new Set([
64
64
  'IFCGEOGRAPHICCRS',
65
65
  'IFCACTORROLE',
66
66
  ]);
67
+ /** The address half of `GEOREFERENCE_TYPES`. Every one of these is reached by
68
+ * a FORWARD attribute -- `IfcSite.SiteAddress`, `IfcBuilding.BuildingAddress`,
69
+ * `IfcPerson`/`IfcOrganization.Addresses` -- so "keep" means only "stop
70
+ * EXCLUDING them" and the closure walk from the included roots decides the
71
+ * rest. They must NOT be rooted: rooting is unconditional over the whole
72
+ * source model, so an address hanging off an EXCLUDED sibling site, or off
73
+ * owner history whose `Addresses` slot the scrub blanked, would be written
74
+ * verbatim into a file whose entire purpose is that it can be shared
75
+ * (#3351 review). */
76
+ const ADDRESS_TYPES = new Set([
77
+ 'IFCPOSTALADDRESS',
78
+ 'IFCTELECOMADDRESS',
79
+ ]);
80
+ /** The coordinate half of `GEOREFERENCE_TYPES`. Unlike the addresses above,
81
+ * nothing in the file forward-references these: `IfcCoordinateOperation`
82
+ * hangs off `IfcGeometricRepresentationContext` by an INVERSE attribute and
83
+ * the CRS records hang off it, so the closure cannot reach them and "keep"
84
+ * has to mean ROOT. They describe the model's placement on the earth rather
85
+ * than any one spatial entity, so rooting them is not the sibling-leak the
86
+ * addresses would be. */
87
+ const COORDINATE_REFERENCE_TYPES = new Set([
88
+ 'IFCMAPCONVERSION',
89
+ 'IFCMAPCONVERSIONSCALED',
90
+ 'IFCPROJECTEDCRS',
91
+ 'IFCGEOGRAPHICCRS',
92
+ ]);
93
+ /** The subset of `IDENTIFYING_TYPES` the "Georeferencing & addresses" option
94
+ * governs. Dropping these while `removeGeoreferencing` is false left an
95
+ * `IfcSite` pointing at a `SiteAddress` line that was not written -- an
96
+ * invalid STEP file, reported with no warning, because the dangling-ref repair
97
+ * only rewrites `IFCREL*` lines and never sees a direct attribute slot (#3351).
98
+ *
99
+ * `IFCACTORROLE` is deliberately absent: it belongs to owner history, which
100
+ * this option does not govern, so it stays dropped unconditionally. */
101
+ export const GEOREFERENCE_TYPES = new Set([
102
+ ...ADDRESS_TYPES,
103
+ ...COORDINATE_REFERENCE_TYPES,
104
+ ]);
105
+ /** `IDENTIFYING_TYPES`, minus what the caller asked to keep. */
106
+ export function identifyingTypesFor(removeGeoreferencing) {
107
+ if (removeGeoreferencing)
108
+ return IDENTIFYING_TYPES;
109
+ return new Set([...IDENTIFYING_TYPES].filter((t) => !GEOREFERENCE_TYPES.has(t)));
110
+ }
67
111
  /**
68
112
  * Classify every entity in `index` for a `subsetEntityIds` export: a root
69
113
  * (infrastructure, always; or a caller-included id), an excluded id (an
@@ -77,7 +121,12 @@ export const IDENTIFYING_TYPES = new Set([
77
121
  * classified by its new class, and a tombstoned one must not appear at all
78
122
  * (`EffectiveEntityIndex` iteration already skips it).
79
123
  */
80
- export function getSubsetEntityIds(index, includedIds) {
124
+ export function getSubsetEntityIds(index, includedIds,
125
+ /** Which identifying classes to exclude. Defaults to all of them, so the
126
+ * general STEP-collection path is unchanged; the anonymize path narrows it
127
+ * with `identifyingTypesFor` when the caller asked to keep georeferencing
128
+ * and addresses (#3351). */
129
+ identifying = IDENTIFYING_TYPES) {
81
130
  const roots = new Set();
82
131
  const excludedIds = new Set();
83
132
  for (const [expressId, entityRef] of index) {
@@ -90,7 +139,23 @@ export function getSubsetEntityIds(index, includedIds) {
90
139
  roots.add(expressId);
91
140
  continue;
92
141
  }
93
- if (IFC_ROOT_TYPES.has(typeUpper) || IDENTIFYING_TYPES.has(typeUpper)) {
142
+ // A COORDINATE type the caller asked to KEEP has to be ROOTED, not merely
143
+ // left out of the exclusion set. `IfcCoordinateOperation` hangs off
144
+ // `IfcGeometricRepresentationContext` by an INVERSE attribute, so the
145
+ // forward closure never reaches it: not excluding it only meant it was
146
+ // dropped silently instead of deliberately, and the toggle named
147
+ // "Map conversion, CRS, lat/long, addresses" kept the last two (#3351).
148
+ //
149
+ // The ADDRESS types are deliberately not rooted here -- see
150
+ // `ADDRESS_TYPES`. They are forward-referenced, so dropping them out of
151
+ // `identifying` is already enough for an INCLUDED site's or building's
152
+ // address to survive the closure, while an excluded sibling site's stays
153
+ // unreachable. Rooting them would emit every address in the source model.
154
+ if (COORDINATE_REFERENCE_TYPES.has(typeUpper) && !identifying.has(typeUpper)) {
155
+ roots.add(expressId);
156
+ continue;
157
+ }
158
+ if (IFC_ROOT_TYPES.has(typeUpper) || identifying.has(typeUpper)) {
94
159
  excludedIds.add(expressId);
95
160
  }
96
161
  // Everything else (geometry, relationships, property atoms, materials,
@@ -1 +1 @@
1
- {"version":3,"file":"subset-roots.js","sourceRoot":"","sources":["../src/subset-roots.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAExF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,cAAc,EAAE,CAAC;AAEpE,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;QACtE,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;IACxB,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;CACf,CAAC,CAAC;AAcH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA2B,EAC3B,WAAgC;IAEhC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAEjE,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,uEAAuE;QACvE,yEAAyE;QACzE,kEAAkE;QAClE,oBAAoB;IACtB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"subset-roots.js","sourceRoot":"","sources":["../src/subset-roots.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,25 @@ export declare const HAS_PROPERTY_SETS_SLOT = 5;
29
29
  * answer it from the source buffer when the overlay owns the record.
30
30
  */
31
31
  export declare function isTypeClass(typeUpper: string | undefined): boolean;
32
+ /**
33
+ * Is this the class of an `IfcPropertySetDefinition` (`IfcPropertySet`,
34
+ * `IfcElementQuantity`, and any other schema-declared subtype)?
35
+ *
36
+ * From the cross-schema inheritance chain, the same way {@link isTypeClass}
37
+ * decides its own question and for the same reason: a hand-listed pair of
38
+ * names would need updating by hand the day a bundled schema adds another
39
+ * subtype, and would silently mis-handle it in the meantime (#3351 item 2 —
40
+ * an occurrence-owned pset reaching `exportAnonymizedSubset`'s `includedIds`
41
+ * directly, rather than through an `IfcTypeObject`'s `HasPropertySets`,
42
+ * which {@link isTypeClass} already governs).
43
+ *
44
+ * A class no bundled schema declares is treated as NOT a pset definition —
45
+ * the safe direction here is the opposite of `isTypeClass`'s: silently
46
+ * excluding an unrecognised class from a "drop unless kept" sweep would leak
47
+ * it, so an unknown class is left for the ordinary `IFC_ROOT_TYPES` handling
48
+ * to include or exclude on its own terms instead.
49
+ */
50
+ export declare function isPropertySetDefinitionClass(typeUpper: string | undefined): boolean;
32
51
  /**
33
52
  * The `HasPropertySets` list a type object should carry after export: the psets
34
53
  * it already had, with each affected one swapped for the replacement this export
@@ -1 +1 @@
1
- {"version":3,"file":"type-owned-psets.d.ts","sourceRoot":"","sources":["../src/type-owned-psets.ts"],"names":[],"mappings":"AAmBA,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAMxC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAOlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,EACtC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GACxC,MAAM,EAAE,CAwBV;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAEnE;AAED,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,oBAAoB,CAStB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,GAC7C,MAAM,CAcR"}
1
+ {"version":3,"file":"type-owned-psets.d.ts","sourceRoot":"","sources":["../src/type-owned-psets.ts"],"names":[],"mappings":"AAmBA,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAMxC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAOlE;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAOnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,EACtC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GACxC,MAAM,EAAE,CAwBV;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAEnE;AAED,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,oBAAoB,CAStB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,GAC7C,MAAM,CAcR"}
@@ -57,6 +57,37 @@ export function isTypeClass(typeUpper) {
57
57
  typeObjectByClass.set(typeUpper, isTypeObject);
58
58
  return isTypeObject;
59
59
  }
60
+ /** class name → is it an `IfcPropertySetDefinition`. Same caching as
61
+ * {@link isTypeClass}, for the same reason. */
62
+ const psetDefinitionByClass = new Map();
63
+ /**
64
+ * Is this the class of an `IfcPropertySetDefinition` (`IfcPropertySet`,
65
+ * `IfcElementQuantity`, and any other schema-declared subtype)?
66
+ *
67
+ * From the cross-schema inheritance chain, the same way {@link isTypeClass}
68
+ * decides its own question and for the same reason: a hand-listed pair of
69
+ * names would need updating by hand the day a bundled schema adds another
70
+ * subtype, and would silently mis-handle it in the meantime (#3351 item 2 —
71
+ * an occurrence-owned pset reaching `exportAnonymizedSubset`'s `includedIds`
72
+ * directly, rather than through an `IfcTypeObject`'s `HasPropertySets`,
73
+ * which {@link isTypeClass} already governs).
74
+ *
75
+ * A class no bundled schema declares is treated as NOT a pset definition —
76
+ * the safe direction here is the opposite of `isTypeClass`'s: silently
77
+ * excluding an unrecognised class from a "drop unless kept" sweep would leak
78
+ * it, so an unknown class is left for the ordinary `IFC_ROOT_TYPES` handling
79
+ * to include or exclude on its own terms instead.
80
+ */
81
+ export function isPropertySetDefinitionClass(typeUpper) {
82
+ if (typeUpper === undefined)
83
+ return false;
84
+ const cached = psetDefinitionByClass.get(typeUpper);
85
+ if (cached !== undefined)
86
+ return cached;
87
+ const isPsetDefinition = getInheritanceChainAcrossSchemas(typeUpper).includes('IfcPropertySetDefinition');
88
+ psetDefinitionByClass.set(typeUpper, isPsetDefinition);
89
+ return isPsetDefinition;
90
+ }
60
91
  /**
61
92
  * The `HasPropertySets` list a type object should carry after export: the psets
62
93
  * it already had, with each affected one swapped for the replacement this export
@@ -1 +1 @@
1
- {"version":3,"file":"type-owned-psets.js","sourceRoot":"","sources":["../src/type-owned-psets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-owned-psets.js","sourceRoot":"","sources":["../src/type-owned-psets.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC;uDACuD;AACvD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAmB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,WAAW,CAAC,SAA6B;IACvD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,YAAY,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3F,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC/C,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;gDACgD;AAChD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,4BAA4B,CAAC,SAA6B;IACxE,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,gBAAgB,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAC1G,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACvD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CACrC,eAAkC,EAClC,iBAAsC,EACtC,kBAA+C,EAC/C,MAAyC;IAEzC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/C,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC7B,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;YACD,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;QACpD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,GAAsB;IACzD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3E,CAAC;AAcD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,eAAkC;IAElC,MAAM,SAAS,GAAG,mBAAmB,CACnC,WAAW,EACX,sBAAsB,EACtB,oBAAoB,CAAC,eAAe,CAAC,CACtC,CAAC;IACF,OAAO,SAAS,KAAK,IAAI;QACvB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;QACtC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,MAA8C;IAE9C,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACjC,OAAO,CACL,gBAAgB,QAAQ,sDAAsD;cAC5E,qEAAqE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,CACL,gBAAgB,QAAQ,2DAA2D;UACjF,8BAA8B,sBAAsB,oCAAoC;UACxF,2FAA2F;UAC3F,kFAAkF;UAClF,sEAAsE,CACzE,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"unit-normalize.d.ts","sourceRoot":"","sources":["../src/unit-normalize.ts"],"names":[],"mappings":"AAkFA;;;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;AAgBD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CAYR;AAmDD;;;;;;;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,CA6DR;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":"AAkFA;;;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;AAmDD;;;;;;;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,CA6DR;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKvF"}
@@ -52,7 +52,7 @@
52
52
  * - Angles, direction ratios, plain `IfcReal` ratios and counts — never typed as a
53
53
  * length/area/volume measure, so they are excluded automatically.
54
54
  */
55
- import { getAllAttributesForEntity } from '@ifc-lite/parser';
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
58
  /** IFC defined types whose values are lengths (STEP writes them as bare reals). */
@@ -193,8 +193,16 @@ export function scaleNumberLiterals(text, factor) {
193
193
  * captured before the keyword and restored, so a keyword can never be matched as
194
194
  * the suffix of a longer identifier — without a lookbehind, which some engines
195
195
  * (older Safari) reject at construction time and would break importing this module.
196
+ *
197
+ * Trivia (whitespace and/or a `/* ... *​/` comment) between the keyword and
198
+ * `(` mirrors the entity/typed-value adjacency fix (packages/parser's
199
+ * entity-extractor, #3205's Rust counterpart, #3789 for the comment case): a
200
+ * STEP writer's line wrap or an inline comment can land there, and without
201
+ * tolerating it the wrapped literal was skipped by this rewriter, leaving
202
+ * the normalized file's other measures scaled but this one still in the
203
+ * source unit.
196
204
  */
197
- const TYPED_MEASURE_RE = /('(?:[^']|'')*')|(^|[^A-Za-z0-9_])(IFC(?:POSITIVE|NONNEGATIVE)?LENGTHMEASURE|IFCAREAMEASURE|IFCVOLUMEMEASURE)\(([^)]*)\)/gi;
205
+ const TYPED_MEASURE_RE = new RegExp(`('(?:[^']|'')*')|(^|[^A-Za-z0-9_])(IFC(?:POSITIVE|NONNEGATIVE)?LENGTHMEASURE|IFCAREAMEASURE|IFCVOLUMEMEASURE)${STEP_TRIVIA}\\(([^)]*)\\)`, 'gi');
198
206
  export function scaleTypedMeasures(text, lengthFactor, areaFactor, volumeFactor) {
199
207
  return text.replace(TYPED_MEASURE_RE, (full, str, delim, keyword, num) => {
200
208
  if (str !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"unit-normalize.js","sourceRoot":"","sources":["../src/unit-normalize.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,mFAAmF;AACnF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,kBAAkB;IAClB,0BAA0B;IAC1B,6BAA6B;CAC9B,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,mBAAmB,EAAE,WAAW,EAAE,wBAAwB,EAAE,yBAAyB;IACrF,gBAAgB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,iBAAiB;IACvF,oBAAoB;CACrB,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,OAAO,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAC3F,CAAC;AA0BD,MAAM,UAAU,GAAqB;IACnC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI;CACtF,CAAC;AAEF,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;AAE1E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEtD;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,KAA4D;IAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK;WACtD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,UAAU,CAAC;IAEpD,MAAM,KAAK,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IAEpD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;gBACvB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,KAAK,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,kBAAkB,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,4EAA4E;QAC5E,+EAA+E;QAC/E,kDAAkD;QAClD,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YACpF,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;WACvD,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;IACjF,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAC9F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,qBAAqB;IAC/C,8EAA8E;IAC9E,6EAA6E;IAC7E,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,mEAAmE,CAAC;AAE5F;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,MAAc;IAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC;QACzD,OAAO,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GACpB,4HAA4H,CAAC;AAE/H,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,YAAoB,EACpB,UAAkB,EAClB,YAAoB;IAEpB,OAAO,IAAI,CAAC,OAAO,CACjB,gBAAgB,EAChB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;QACjC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,CAAC,yBAAyB;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,EAAE,KAAK,gBAAgB,CAAC,CAAC,CAAC,UAAU;YACjD,CAAC,CAAC,EAAE,KAAK,kBAAkB,CAAC,CAAC,CAAC,YAAY;gBAC1C,CAAC,CAAC,YAAY,CAAC,CAAC,qBAAqB;QACvC,OAAO,GAAG,KAAK,GAAG,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;IAClE,CAAC,CACF,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,SAAS,kBAAkB,CAAC,GAAW,EAAE,MAAc;IACrD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACtD,OAAO,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,yFAAyF;AACzF,SAAS,cAAc,CAAC,GAAW,EAAE,MAAc;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IACrE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,8EAA8E;IAC9E,4DAA4D;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB;;oBACzC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9C,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACpB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,SAAiB,EACjB,YAAoB,EACpB,UAAkB,EAClB,YAAoB;IAEpB,IAAI,YAAY,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAClH,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;WACrE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1D,kFAAkF;IAClF,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/F,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC/C,2EAA2E;QAC3E,2EAA2E;QAC3E,0EAA0E;QAC1E,4EAA4E;QAC5E,mEAAmE;QACnE,0EAA0E;QAC1E,0EAA0E;QAC1E,gEAAgE;QAChE,4EAA4E;QAC5E,mCAAmC;QACnC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE/B,6EAA6E;QAC7E,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,IAAI,aAAa,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YACxF,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YACnF,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;YACjF,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YACnF,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,kFAAkF;IAClF,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,YAAoB;IAC7E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7E,IAAI,UAAU,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACnD,IAAI,UAAU,KAAK,YAAY;QAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,UAAU,GAAG,YAAY,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"unit-normalize.js","sourceRoot":"","sources":["../src/unit-normalize.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/export",
3
- "version": "3.1.0",
3
+ "version": "4.0.1",
4
4
  "description": "Export formats for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -16,16 +16,17 @@
16
16
  "parquet-wasm": "^0.7.2",
17
17
  "apache-arrow": "^21.2.0",
18
18
  "jszip": "^3.10.0",
19
- "@ifc-lite/geometry": "^4.1.0",
20
- "@ifc-lite/encoding": "^2.1.0",
21
- "@ifc-lite/parser": "^4.3.2",
22
- "@ifc-lite/mutations": "^1.27.0",
23
- "@ifc-lite/data": "^3.5.1"
19
+ "@ifc-lite/geometry": "^4.3.0",
20
+ "@ifc-lite/codegen": "^1.16.0",
21
+ "@ifc-lite/data": "^4.0.0",
22
+ "@ifc-lite/encoding": "^2.2.0",
23
+ "@ifc-lite/parser": "^5.2.0",
24
+ "@ifc-lite/mutations": "^2.1.0"
24
25
  },
25
26
  "devDependencies": {
26
27
  "typescript": "^6.0.3",
27
28
  "vitest": "^4.1.11",
28
- "@ifc-lite/ifcx": "^3.0.1"
29
+ "@ifc-lite/ifcx": "^4.0.0"
29
30
  },
30
31
  "license": "MPL-2.0",
31
32
  "author": "Louis True",