@ifc-lite/export 3.0.1 → 4.0.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 (163) hide show
  1. package/README.md +37 -1
  2. package/dist/anonymize-export.d.ts +60 -0
  3. package/dist/anonymize-export.d.ts.map +1 -0
  4. package/dist/anonymize-export.js +217 -0
  5. package/dist/anonymize-export.js.map +1 -0
  6. package/dist/anonymize-placement.d.ts +71 -0
  7. package/dist/anonymize-placement.d.ts.map +1 -0
  8. package/dist/anonymize-placement.js +266 -0
  9. package/dist/anonymize-placement.js.map +1 -0
  10. package/dist/anonymize-scrub.d.ts +64 -0
  11. package/dist/anonymize-scrub.d.ts.map +1 -0
  12. package/dist/anonymize-scrub.js +315 -0
  13. package/dist/anonymize-scrub.js.map +1 -0
  14. package/dist/anonymize-types.d.ts +235 -0
  15. package/dist/anonymize-types.d.ts.map +1 -0
  16. package/dist/anonymize-types.js +5 -0
  17. package/dist/anonymize-types.js.map +1 -0
  18. package/dist/declared-property-type.d.ts +15 -0
  19. package/dist/declared-property-type.d.ts.map +1 -1
  20. package/dist/declared-property-type.js +43 -0
  21. package/dist/declared-property-type.js.map +1 -1
  22. package/dist/entity-type-sets.d.ts +47 -0
  23. package/dist/entity-type-sets.d.ts.map +1 -0
  24. package/dist/entity-type-sets.js +91 -0
  25. package/dist/entity-type-sets.js.map +1 -0
  26. package/dist/georef-closure.d.ts +55 -0
  27. package/dist/georef-closure.d.ts.map +1 -0
  28. package/dist/georef-closure.js +95 -0
  29. package/dist/georef-closure.js.map +1 -0
  30. package/dist/glb.d.ts.map +1 -1
  31. package/dist/glb.js +26 -2
  32. package/dist/glb.js.map +1 -1
  33. package/dist/ifc5-classification.d.ts +36 -0
  34. package/dist/ifc5-classification.d.ts.map +1 -0
  35. package/dist/ifc5-classification.js +46 -0
  36. package/dist/ifc5-classification.js.map +1 -0
  37. package/dist/ifc5-export-helpers.d.ts +32 -0
  38. package/dist/ifc5-export-helpers.d.ts.map +1 -0
  39. package/dist/ifc5-export-helpers.js +84 -0
  40. package/dist/ifc5-export-helpers.js.map +1 -0
  41. package/dist/ifc5-exporter.d.ts.map +1 -1
  42. package/dist/ifc5-exporter.js +14 -86
  43. package/dist/ifc5-exporter.js.map +1 -1
  44. package/dist/ifc5-material.d.ts +38 -0
  45. package/dist/ifc5-material.d.ts.map +1 -0
  46. package/dist/ifc5-material.js +32 -0
  47. package/dist/ifc5-material.js.map +1 -0
  48. package/dist/index.d.ts +5 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +7 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/merged-context.d.ts +100 -0
  53. package/dist/merged-context.d.ts.map +1 -0
  54. package/dist/merged-context.js +211 -0
  55. package/dist/merged-context.js.map +1 -0
  56. package/dist/merged-empty-containers.d.ts +63 -0
  57. package/dist/merged-empty-containers.d.ts.map +1 -0
  58. package/dist/merged-empty-containers.js +354 -0
  59. package/dist/merged-empty-containers.js.map +1 -0
  60. package/dist/merged-exporter.d.ts +28 -67
  61. package/dist/merged-exporter.d.ts.map +1 -1
  62. package/dist/merged-exporter.js +134 -258
  63. package/dist/merged-exporter.js.map +1 -1
  64. package/dist/merged-guid.d.ts +48 -0
  65. package/dist/merged-guid.d.ts.map +1 -0
  66. package/dist/merged-guid.js +128 -0
  67. package/dist/merged-guid.js.map +1 -0
  68. package/dist/merged-rel-aggregates.d.ts +63 -0
  69. package/dist/merged-rel-aggregates.d.ts.map +1 -0
  70. package/dist/merged-rel-aggregates.js +122 -0
  71. package/dist/merged-rel-aggregates.js.map +1 -0
  72. package/dist/merged-remap.d.ts +18 -0
  73. package/dist/merged-remap.d.ts.map +1 -0
  74. package/dist/merged-remap.js +66 -0
  75. package/dist/merged-remap.js.map +1 -0
  76. package/dist/merged-subcontext.d.ts +41 -0
  77. package/dist/merged-subcontext.d.ts.map +1 -0
  78. package/dist/merged-subcontext.js +99 -0
  79. package/dist/merged-subcontext.js.map +1 -0
  80. package/dist/parquet-exporter-ondemand.d.ts +34 -0
  81. package/dist/parquet-exporter-ondemand.d.ts.map +1 -0
  82. package/dist/parquet-exporter-ondemand.js +89 -0
  83. package/dist/parquet-exporter-ondemand.js.map +1 -0
  84. package/dist/parquet-exporter.d.ts +1 -29
  85. package/dist/parquet-exporter.d.ts.map +1 -1
  86. package/dist/parquet-exporter.js +68 -90
  87. package/dist/parquet-exporter.js.map +1 -1
  88. package/dist/parquet-type-strings.d.ts +11 -0
  89. package/dist/parquet-type-strings.d.ts.map +1 -0
  90. package/dist/parquet-type-strings.js +40 -0
  91. package/dist/parquet-type-strings.js.map +1 -0
  92. package/dist/parquet-uint32-columns.d.ts +30 -0
  93. package/dist/parquet-uint32-columns.d.ts.map +1 -0
  94. package/dist/parquet-uint32-columns.js +38 -0
  95. package/dist/parquet-uint32-columns.js.map +1 -0
  96. package/dist/reference-collector.d.ts +47 -51
  97. package/dist/reference-collector.d.ts.map +1 -1
  98. package/dist/reference-collector.js +115 -171
  99. package/dist/reference-collector.js.map +1 -1
  100. package/dist/related-entities.d.ts +10 -0
  101. package/dist/related-entities.d.ts.map +1 -0
  102. package/dist/related-entities.js +274 -0
  103. package/dist/related-entities.js.map +1 -0
  104. package/dist/schema-converter-attr-remap.d.ts +53 -0
  105. package/dist/schema-converter-attr-remap.d.ts.map +1 -0
  106. package/dist/schema-converter-attr-remap.js +106 -0
  107. package/dist/schema-converter-attr-remap.js.map +1 -0
  108. package/dist/schema-converter.d.ts.map +1 -1
  109. package/dist/schema-converter.js +24 -1
  110. package/dist/schema-converter.js.map +1 -1
  111. package/dist/schema-untranslatable.d.ts +35 -0
  112. package/dist/schema-untranslatable.d.ts.map +1 -0
  113. package/dist/schema-untranslatable.js +60 -0
  114. package/dist/schema-untranslatable.js.map +1 -0
  115. package/dist/step-argument-parser.d.ts.map +1 -1
  116. package/dist/step-argument-parser.js +11 -1
  117. package/dist/step-argument-parser.js.map +1 -1
  118. package/dist/step-attribute-mutations.js +14 -11
  119. package/dist/step-attribute-mutations.js.map +1 -1
  120. package/dist/step-collection.d.ts.map +1 -1
  121. package/dist/step-collection.js +51 -8
  122. package/dist/step-collection.js.map +1 -1
  123. package/dist/step-export-types.d.ts +42 -0
  124. package/dist/step-export-types.d.ts.map +1 -1
  125. package/dist/step-export-types.js +10 -0
  126. package/dist/step-export-types.js.map +1 -1
  127. package/dist/step-exporter.d.ts.map +1 -1
  128. package/dist/step-exporter.js +9 -1
  129. package/dist/step-exporter.js.map +1 -1
  130. package/dist/step-header.d.ts +1 -1
  131. package/dist/step-header.d.ts.map +1 -1
  132. package/dist/step-header.js +2 -2
  133. package/dist/step-header.js.map +1 -1
  134. package/dist/step-map-unit.d.ts +2 -1
  135. package/dist/step-map-unit.d.ts.map +1 -1
  136. package/dist/step-map-unit.js.map +1 -1
  137. package/dist/step-serialization.d.ts +10 -30
  138. package/dist/step-serialization.d.ts.map +1 -1
  139. package/dist/step-serialization.js +10 -60
  140. package/dist/step-serialization.js.map +1 -1
  141. package/dist/step-source-iteration.d.ts.map +1 -1
  142. package/dist/step-source-iteration.js +21 -0
  143. package/dist/step-source-iteration.js.map +1 -1
  144. package/dist/style-closure.d.ts +91 -0
  145. package/dist/style-closure.d.ts.map +1 -0
  146. package/dist/style-closure.js +164 -0
  147. package/dist/style-closure.js.map +1 -0
  148. package/dist/subset-entity-reader.d.ts +104 -0
  149. package/dist/subset-entity-reader.d.ts.map +1 -0
  150. package/dist/subset-entity-reader.js +112 -0
  151. package/dist/subset-entity-reader.js.map +1 -0
  152. package/dist/subset-roots.d.ts +74 -0
  153. package/dist/subset-roots.d.ts.map +1 -0
  154. package/dist/subset-roots.js +168 -0
  155. package/dist/subset-roots.js.map +1 -0
  156. package/dist/type-owned-psets.d.ts +19 -0
  157. package/dist/type-owned-psets.d.ts.map +1 -1
  158. package/dist/type-owned-psets.js +31 -0
  159. package/dist/type-owned-psets.js.map +1 -1
  160. package/dist/unit-normalize.d.ts.map +1 -1
  161. package/dist/unit-normalize.js +10 -2
  162. package/dist/unit-normalize.js.map +1 -1
  163. package/package.json +8 -8
@@ -0,0 +1,266 @@
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 { attrIndex, readEntityArgs } from './subset-entity-reader.js';
5
+ import { splitTopLevelArgs } from './step-argument-parser.js';
6
+ import { entityRef, stepReal } from './step-serialization.js';
7
+ const IFC_SITE_ADDRESS_ATTRIBUTES = [
8
+ 'RefLatitude',
9
+ 'RefLongitude',
10
+ 'RefElevation',
11
+ 'LandTitleNumber',
12
+ 'SiteAddress',
13
+ ];
14
+ /**
15
+ * Zero every root `IfcLocalPlacement` translation reachable from
16
+ * `includedIds`, zero `WorldCoordinateSystem` on every
17
+ * `IfcGeometricRepresentationContext` (always exported — it is an
18
+ * `INFRASTRUCTURE_TYPES` member, `reference-collector.ts`), and blank
19
+ * `IfcSite` / `IfcBuilding` georeferencing and address attributes.
20
+ *
21
+ * `store`/`index` are read from (never mutated directly) — every change goes
22
+ * through `editor` (new entities, positional overrides) or `view` (named
23
+ * attribute overrides), so the private `MutablePropertyView` overlay the
24
+ * orchestrator built stays the ONE place this export's edits live.
25
+ */
26
+ export function applyPlacementAnonymization(store, index, includedIds, editor, view, opts) {
27
+ const warnings = [];
28
+ const zeroedPlacements = [];
29
+ if (opts?.zeroRootPlacement !== false) {
30
+ zeroRootPlacements(store, index, includedIds, editor, warnings, zeroedPlacements);
31
+ zeroWorldCoordinateSystems(store, index, editor, warnings);
32
+ }
33
+ if (opts?.removeGeoreferencing !== false) {
34
+ blankSiteAndBuildingAddresses(index, includedIds, view);
35
+ }
36
+ return { zeroedPlacements, warnings };
37
+ }
38
+ function zeroRootPlacements(store, index, includedIds, editor, warnings, zeroedPlacements) {
39
+ // Memoised by placementId: the root a placement chain terminates at is a
40
+ // pure function of that id ("Bounding walks", AGENTS.md — global memoising
41
+ // is the right scope here, not path-scoped, since the answer never
42
+ // accumulates across callers), and many products in a subset commonly
43
+ // share one storey/building placement chain.
44
+ const rootCache = new Map();
45
+ const localPlacementRoots = new Set();
46
+ for (const id of includedIds) {
47
+ const rec = readEntityArgs(store, index, id);
48
+ if (!rec)
49
+ continue;
50
+ const objectPlacementIdx = attrIndex(rec.type, 'ObjectPlacement'); // declared on IfcProduct itself — slot order checked identical across ENTITIES_IFC2X3/_IFC4/_IFC4X3, no `schema` arg needed (#3309)
51
+ if (objectPlacementIdx < 0 || objectPlacementIdx >= rec.args.length)
52
+ continue;
53
+ const placementId = parseRef(rec.args[objectPlacementIdx]);
54
+ if (placementId === null)
55
+ continue;
56
+ let root = rootCache.get(placementId);
57
+ if (root === undefined) {
58
+ root = findRootPlacement(store, index, placementId, warnings);
59
+ rootCache.set(placementId, root);
60
+ }
61
+ if (!root)
62
+ continue;
63
+ if (root.rootType !== 'IFCLOCALPLACEMENT') {
64
+ warnings.push(`#${root.rootId} (${root.rootType}) is a root placement this export cannot zero — only ` +
65
+ `IfcLocalPlacement roots are supported; left untouched, so its absolute position is still in the file.`);
66
+ continue;
67
+ }
68
+ localPlacementRoots.add(root.rootId);
69
+ }
70
+ for (const rootId of localPlacementRoots) {
71
+ const translation = zeroAxisPlacementSlot(store, index, editor, rootId, 'IFCLOCALPLACEMENT', 'RelativePlacement', warnings);
72
+ if (translation)
73
+ zeroedPlacements.push({ expressId: rootId, translation });
74
+ }
75
+ if (zeroedPlacements.length > 1) {
76
+ warnings.push(`${zeroedPlacements.length} independent root placements were each zeroed to the origin; ` +
77
+ `their original relative offset from one another is not preserved.`);
78
+ }
79
+ }
80
+ /**
81
+ * Follow `PlacementRelTo` from `startPlacementId` while the current record is
82
+ * an `IfcLocalPlacement`, and return the terminal placement — either an
83
+ * `IfcLocalPlacement` with `PlacementRelTo = $` (a zeroable root) or a
84
+ * non-`IfcLocalPlacement` record the chain cannot continue past (an
85
+ * `IfcGridPlacement` / `IfcLinearPlacement`, reported by the caller). `null`
86
+ * when the chain could not be safely walked at all — a cycle, a hop past the
87
+ * 256-hop cap, or a link that does not resolve to a readable record — each
88
+ * case appending its own warning before returning.
89
+ */
90
+ function findRootPlacement(store, index, startPlacementId, warnings) {
91
+ const visited = new Set();
92
+ let currentId = startPlacementId;
93
+ let hops = 0;
94
+ for (;;) {
95
+ if (visited.has(currentId)) {
96
+ warnings.push(`Placement chain from #${startPlacementId} revisits #${currentId} (PlacementRelTo cycle); left untouched.`);
97
+ return null;
98
+ }
99
+ visited.add(currentId);
100
+ hops++;
101
+ if (hops > 256) {
102
+ warnings.push(`Placement chain from #${startPlacementId} exceeds 256 hops; left untouched rather than followed indefinitely.`);
103
+ return null;
104
+ }
105
+ const rec = readEntityArgs(store, index, currentId);
106
+ if (!rec) {
107
+ warnings.push(`Placement #${currentId} in the chain from #${startPlacementId} could not be read; left untouched.`);
108
+ return null;
109
+ }
110
+ if (rec.type !== 'IFCLOCALPLACEMENT') {
111
+ return { rootId: currentId, rootType: rec.type };
112
+ }
113
+ const relToIdx = attrIndex(rec.type, 'PlacementRelTo'); // `rec.type` is always IFCLOCALPLACEMENT here — order verified identical across all 3 schemas (#3309)
114
+ const parentId = relToIdx >= 0 && relToIdx < rec.args.length ? parseRef(rec.args[relToIdx]) : null;
115
+ if (parentId === null) {
116
+ return { rootId: currentId, rootType: rec.type };
117
+ }
118
+ currentId = parentId;
119
+ }
120
+ }
121
+ // ---------------------------------------------------------------------------
122
+ // IfcGeometricRepresentationContext.WorldCoordinateSystem
123
+ // ---------------------------------------------------------------------------
124
+ /**
125
+ * Every `IfcGeometricRepresentationContext` in the model — not just
126
+ * `includedIds` — because it is an `INFRASTRUCTURE_TYPES` member
127
+ * (`reference-collector.ts`) and is therefore always carried into the
128
+ * export regardless of what the caller selected. A plain, non-recursive
129
+ * pass over `index`: bounded by the model's own (small) count of
130
+ * representation contexts, not a reference walk that needs its own guard.
131
+ */
132
+ function zeroWorldCoordinateSystems(store, index, editor, warnings) {
133
+ for (const [id, ref] of index) {
134
+ if (index.effectiveType(id, ref.type) !== 'IFCGEOMETRICREPRESENTATIONCONTEXT')
135
+ continue;
136
+ // `TrueNorth` is deliberately left alone — only the origin offset is
137
+ // identifying; the survey rotation is exactly the kind of
138
+ // geometry-relevant signal this feature is written to keep (#2934).
139
+ zeroAxisPlacementSlot(store, index, editor, id, 'IFCGEOMETRICREPRESENTATIONCONTEXT', 'WorldCoordinateSystem', warnings);
140
+ }
141
+ }
142
+ // ---------------------------------------------------------------------------
143
+ // Shared clone-and-repoint primitive
144
+ // ---------------------------------------------------------------------------
145
+ /**
146
+ * Zero the `IfcCartesianPoint.Location` reachable through
147
+ * `entityId.<slotName>` → `IfcAxis2Placement2D|3D` → `Location`, by CLONING
148
+ * the point and the axis placement (never rewriting either — see the module
149
+ * doc) and repointing `entityId.<slotName>` at the clone.
150
+ *
151
+ * Returns the original (pre-zero) coordinates when a zero-clone was
152
+ * performed, or `null` when there was nothing to do: the slot is `$`, it
153
+ * does not resolve to an `IfcAxis2Placement2D/3D` → `IfcCartesianPoint`
154
+ * chain (warned), or the point is already at the origin.
155
+ */
156
+ function zeroAxisPlacementSlot(store, index, editor, entityId, entityType, slotName, warnings) {
157
+ const slotIdx = attrIndex(entityType, slotName); // entityType/slotName always fixed literals, order verified identical across all 3 schemas (#3309)
158
+ if (slotIdx < 0)
159
+ return null;
160
+ const rec = readEntityArgs(store, index, entityId);
161
+ if (!rec || slotIdx >= rec.args.length)
162
+ return null;
163
+ const axisId = parseRef(rec.args[slotIdx]);
164
+ if (axisId === null)
165
+ return null; // `$` — nothing placed here to zero.
166
+ const axisRec = readEntityArgs(store, index, axisId);
167
+ if (!axisRec) {
168
+ warnings.push(`#${entityId} ${slotName} references #${axisId}, which could not be read; left untouched.`);
169
+ return null;
170
+ }
171
+ const is3D = axisRec.type === 'IFCAXIS2PLACEMENT3D';
172
+ const is2D = axisRec.type === 'IFCAXIS2PLACEMENT2D';
173
+ if (!is3D && !is2D) {
174
+ warnings.push(`#${entityId} ${slotName} resolves to #${axisId} (${axisRec.type}), not an ` +
175
+ `IfcAxis2Placement2D/3D; left untouched.`);
176
+ return null;
177
+ }
178
+ const locationIdx = attrIndex(axisRec.type, 'Location'); // IfcAxis2Placement2D/3D — same verified-stable guarantee as slotIdx above (#3309)
179
+ const pointId = locationIdx >= 0 ? parseRef(axisRec.args[locationIdx]) : null;
180
+ if (pointId === null)
181
+ return null;
182
+ const pointRec = readEntityArgs(store, index, pointId);
183
+ if (!pointRec || pointRec.type !== 'IFCCARTESIANPOINT') {
184
+ warnings.push(`#${entityId} ${slotName} → #${axisId} → Location #${pointId} is not an IfcCartesianPoint; left untouched.`);
185
+ return null;
186
+ }
187
+ const coords = parseCoordinateList(pointRec.args[0]);
188
+ if (!coords || coords.every((c) => c === 0))
189
+ return null; // absent, or already at the origin.
190
+ // Clone the point at the origin, same dimensionality.
191
+ const newPoint = editor.addEntity('IfcCartesianPoint', [coords.map(() => stepReal(0))]);
192
+ // Clone the axis placement, carrying `Axis`/`RefDirection` over VERBATIM —
193
+ // the rotation is exactly what a reproduction needs to keep.
194
+ const newAxisAttrs = [entityRef(newPoint.expressId)];
195
+ for (const name of is3D ? ['Axis', 'RefDirection'] : ['RefDirection']) {
196
+ const idx = attrIndex(axisRec.type, name); // same guarantee as locationIdx above (#3309)
197
+ newAxisAttrs.push(idx >= 0 ? verbatimAttr(axisRec.args[idx]) : null);
198
+ }
199
+ const newAxis = editor.addEntity(is3D ? 'IfcAxis2Placement3D' : 'IfcAxis2Placement2D', newAxisAttrs);
200
+ editor.setPositionalAttribute(entityId, slotIdx, entityRef(newAxis.expressId));
201
+ return coords;
202
+ }
203
+ // ---------------------------------------------------------------------------
204
+ // IfcSite / IfcBuilding georeferencing + address blanking
205
+ // ---------------------------------------------------------------------------
206
+ /**
207
+ * `IfcMapConversion(Scaled)` / `IfcProjectedCRS` need no handling here, and the
208
+ * reason is conditional since #3351: `IDENTIFYING_TYPES` and inverse-only, so
209
+ * `removeGeoreferencing` ON leaves them absent, while OFF must ROOT them —
210
+ * merely not excluding an inverse-only entity still drops it silently.
211
+ *
212
+ * All six blanked slots are OPTIONAL but not all STRING-typed — a LIST OF
213
+ * INTEGER, a REAL, and two entity refs among them — so `$` (via
214
+ * `setPositionalAttribute` + `null`) is the only blank valid for all of them;
215
+ * `setAttribute` only emits a quoted STEP string and would corrupt the rest.
216
+ */
217
+ function blankSiteAndBuildingAddresses(index, includedIds, view) {
218
+ for (const id of includedIds) {
219
+ const type = index.typeOf(id);
220
+ if (type === 'IFCSITE') {
221
+ for (const attr of IFC_SITE_ADDRESS_ATTRIBUTES) {
222
+ const idx = attrIndex(type, attr); // IfcSite's address slots verified stable across all 3 schemas (#3309)
223
+ if (idx >= 0)
224
+ view.setPositionalAttribute(id, idx, null);
225
+ }
226
+ }
227
+ else if (type === 'IFCBUILDING') {
228
+ const idx = attrIndex(type, 'BuildingAddress'); // verified stable across all 3 schemas (#3309)
229
+ if (idx >= 0)
230
+ view.setPositionalAttribute(id, idx, null);
231
+ }
232
+ }
233
+ }
234
+ // ---------------------------------------------------------------------------
235
+ // Token helpers
236
+ // ---------------------------------------------------------------------------
237
+ /** `"#42"` → `42`; anything else (`$`, a literal, missing) → `null`. */
238
+ function parseRef(token) {
239
+ if (!token)
240
+ return null;
241
+ const match = /^#(\d+)$/.exec(token.trim());
242
+ return match ? Number(match[1]) : null;
243
+ }
244
+ /** Carry a verbatim STEP token (`$` or `#N`) into `StoreEditor.addEntity`'s
245
+ * attribute conventions: `$` becomes `null`, a reference token is passed
246
+ * through as the `"#42"` string `addEntity` recognizes. */
247
+ function verbatimAttr(token) {
248
+ if (!token)
249
+ return null;
250
+ const trimmed = token.trim();
251
+ return trimmed === '$' || trimmed === '' ? null : trimmed;
252
+ }
253
+ /** Parse an `IfcCartesianPoint.Coordinates` token — a parenthesized,
254
+ * top-level-comma-separated REAL list (`(1000.,2000.,30.)`) — into numbers.
255
+ * `null` when the token isn't a list, or any member doesn't parse as a
256
+ * finite number. */
257
+ function parseCoordinateList(token) {
258
+ if (!token)
259
+ return null;
260
+ const trimmed = token.trim();
261
+ if (!trimmed.startsWith('(') || !trimmed.endsWith(')'))
262
+ return null;
263
+ const numbers = splitTopLevelArgs(trimmed.slice(1, -1)).map((part) => Number(part.trim()));
264
+ return numbers.every((n) => Number.isFinite(n)) ? numbers : null;
265
+ }
266
+ //# sourceMappingURL=anonymize-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymize-placement.js","sourceRoot":"","sources":["../src/anonymize-placement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Scrub pass for the "anonymized isolated export" feature (#2934, plan A5):
3
+ * deterministic per-type pseudonyms for `Name`/`LongName`/`Description`/`Tag`
4
+ * on every included `IfcRoot`, `GlobalId` regeneration (the old->new map is
5
+ * handed back as `guidMap` rather than written into the file — see
6
+ * `AnonymizeResult.guidMap` on `anonymize-types.ts`), owner-history scrubbing
7
+ * (`IfcPerson`/`IfcOrganization`/`IfcPersonAndOrganization`), and clearing an
8
+ * included `IfcTypeObject`'s `HasPropertySets` slot.
9
+ *
10
+ * Expressed as mutations on a private `MutablePropertyView`, never as a text
11
+ * rewrite — see the plan's "Key mechanism choice": the effective-index
12
+ * closure walk (`effective-index.ts`) already reacts to a queued
13
+ * `setAttribute`/`setPositionalAttribute`, so these mutations are visible to
14
+ * `step-collection.ts`'s subset closure the same way any other overlay edit
15
+ * is, with no second code path that could disagree about what got scrubbed.
16
+ *
17
+ * Deliberately does NOT use `store.entities.getTypeName` for the pseudonym
18
+ * label despite the plan sketch spelling it that way: that table only
19
+ * indexes product-ish entities and answers `'Unknown'` for the rest (see its
20
+ * own doc) — including `IfcPropertySet` (an `IfcRoot` descendant this module
21
+ * must be able to pseudonymize under `keepPropertySets`) and every
22
+ * `IfcRel*` relationship (also `IfcRoot` descendants, per `IFC_ROOT_TYPES`).
23
+ * `'Unknown-1'`, `'Unknown-2'`, … colliding across every such class would be
24
+ * both a worse pseudonym AND a residual identifying signal (two entities
25
+ * sharing a label leaks that they were originally the SAME kind of thing).
26
+ * `normalizeIfcTypeName` off the effective index's own class answer has no
27
+ * such gap.
28
+ */
29
+ import type { IfcSourceBytes } from '@ifc-lite/parser';
30
+ import type { MutablePropertyView } from '@ifc-lite/mutations';
31
+ import type { EffectiveEntityIndex } from './effective-index.js';
32
+ import type { AnonymizeOptions } from './anonymize-types.js';
33
+ /** The subset of `AnonymizeOptions` this pass reads. */
34
+ export type ScrubOptions = Pick<AnonymizeOptions, 'pseudonymizeNames' | 'pseudonymizeAllNames' | 'regenerateGlobalIds' | 'scrubOwnerHistory' | 'neutralizeCurrency' | 'keepPropertySets' | 'guidRandom'>;
35
+ /** What one `applyScrub` call produced. */
36
+ export interface ScrubResult {
37
+ /** Original `GlobalId` -> regenerated `GlobalId`, one entry per
38
+ * `includedIds` `IfcRoot` entity whose GlobalId this pass actually
39
+ * regenerated. Empty when `regenerateGlobalIds` is `false`. */
40
+ guidMap: Map<string, string>;
41
+ /** How many entities this pass wrote at least one mutation for: every
42
+ * scrubbed `includedIds` root, plus every `IfcPerson`/`IfcOrganization`/
43
+ * `IfcPersonAndOrganization` found anywhere in `index` and scrubbed. */
44
+ scrubbedCount: number;
45
+ /** Non-fatal notices — an `includedIds` root this pass could not read (no
46
+ * source bytes, or a record that does not parse) or whose `GlobalId`
47
+ * could not be decoded, left untouched by the affected sub-step. */
48
+ warnings: string[];
49
+ }
50
+ /**
51
+ * Scrub `includedIds`' `IfcRoot` entities plus every owner-history entity in
52
+ * `index`, queuing every change on `view` (never writing into `store`).
53
+ *
54
+ * `index` must be the EFFECTIVE index (`getEffectiveEntityIndex`), not a
55
+ * bare source index — see that module's doc for why an overlay-created or
56
+ * retyped entity answers differently through it. `store` need only expose
57
+ * `source`: `readEntityArgs` reads SOURCE-backed records only, which is the
58
+ * entire domain of what this pass mutates (it creates no entities).
59
+ */
60
+ export declare function applyScrub(store: {
61
+ readonly source: IfcSourceBytes;
62
+ readonly schemaVersion?: string;
63
+ }, index: EffectiveEntityIndex, includedIds: ReadonlySet<number>, view: MutablePropertyView, opts?: ScrubOptions): ScrubResult;
64
+ //# sourceMappingURL=anonymize-scrub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymize-scrub.d.ts","sourceRoot":"","sources":["../src/anonymize-scrub.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA0C7D,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,gBAAgB,EACd,mBAAmB,GACnB,sBAAsB,GACtB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,YAAY,CACf,CAAC;AAEF,2CAA2C;AAC3C,MAAM,WAAW,WAAW;IAC1B;;oEAEgE;IAChE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;6EAEyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB;;yEAEqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3E,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,IAAI,EAAE,mBAAmB,EACzB,IAAI,GAAE,YAAiB,GACtB,WAAW,CAsIb"}