@ifc-lite/export 4.0.1 → 4.3.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 (123) hide show
  1. package/README.md +7 -0
  2. package/dist/anonymize-export.d.ts.map +1 -1
  3. package/dist/anonymize-export.js +10 -4
  4. package/dist/anonymize-export.js.map +1 -1
  5. package/dist/anonymize-placement.d.ts.map +1 -1
  6. package/dist/anonymize-placement.js +5 -6
  7. package/dist/anonymize-placement.js.map +1 -1
  8. package/dist/appearance-dependencies.d.ts +12 -0
  9. package/dist/appearance-dependencies.d.ts.map +1 -0
  10. package/dist/appearance-dependencies.js +195 -0
  11. package/dist/appearance-dependencies.js.map +1 -0
  12. package/dist/authored-resource-cleanup.d.ts +14 -0
  13. package/dist/authored-resource-cleanup.d.ts.map +1 -0
  14. package/dist/authored-resource-cleanup.js +156 -0
  15. package/dist/authored-resource-cleanup.js.map +1 -0
  16. package/dist/csv-table.d.ts +10 -0
  17. package/dist/csv-table.d.ts.map +1 -0
  18. package/dist/csv-table.js +39 -0
  19. package/dist/csv-table.js.map +1 -0
  20. package/dist/effective-appearance-record.d.ts +8 -0
  21. package/dist/effective-appearance-record.d.ts.map +1 -0
  22. package/dist/effective-appearance-record.js +49 -0
  23. package/dist/effective-appearance-record.js.map +1 -0
  24. package/dist/ifc5-appearance.d.ts +20 -0
  25. package/dist/ifc5-appearance.d.ts.map +1 -0
  26. package/dist/ifc5-appearance.js +106 -0
  27. package/dist/ifc5-appearance.js.map +1 -0
  28. package/dist/ifc5-export-helpers.d.ts +19 -0
  29. package/dist/ifc5-export-helpers.d.ts.map +1 -1
  30. package/dist/ifc5-export-helpers.js +41 -0
  31. package/dist/ifc5-export-helpers.js.map +1 -1
  32. package/dist/ifc5-exporter.d.ts +12 -10
  33. package/dist/ifc5-exporter.d.ts.map +1 -1
  34. package/dist/ifc5-exporter.js +24 -41
  35. package/dist/ifc5-exporter.js.map +1 -1
  36. package/dist/index.d.ts +6 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +7 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/lod0-generator.js +1 -1
  41. package/dist/lod0-generator.js.map +1 -1
  42. package/dist/merged-context.d.ts.map +1 -1
  43. package/dist/merged-context.js +15 -1
  44. package/dist/merged-context.js.map +1 -1
  45. package/dist/merged-empty-containers.d.ts.map +1 -1
  46. package/dist/merged-empty-containers.js +9 -11
  47. package/dist/merged-empty-containers.js.map +1 -1
  48. package/dist/merged-subcontext.d.ts.map +1 -1
  49. package/dist/merged-subcontext.js +19 -1
  50. package/dist/merged-subcontext.js.map +1 -1
  51. package/dist/obj.d.ts +20 -0
  52. package/dist/obj.d.ts.map +1 -0
  53. package/dist/obj.js +40 -0
  54. package/dist/obj.js.map +1 -0
  55. package/dist/parquet-exporter.d.ts.map +1 -1
  56. package/dist/parquet-exporter.js +5 -5
  57. package/dist/parquet-exporter.js.map +1 -1
  58. package/dist/reference-collector.d.ts +21 -8
  59. package/dist/reference-collector.d.ts.map +1 -1
  60. package/dist/reference-collector.js +38 -45
  61. package/dist/reference-collector.js.map +1 -1
  62. package/dist/retype.d.ts +1 -1
  63. package/dist/retype.d.ts.map +1 -1
  64. package/dist/retype.js +13 -3
  65. package/dist/retype.js.map +1 -1
  66. package/dist/schema-converter-attr-remap.d.ts +18 -7
  67. package/dist/schema-converter-attr-remap.d.ts.map +1 -1
  68. package/dist/schema-converter-attr-remap.js +42 -48
  69. package/dist/schema-converter-attr-remap.js.map +1 -1
  70. package/dist/schema-converter.d.ts.map +1 -1
  71. package/dist/schema-converter.js +16 -78
  72. package/dist/schema-converter.js.map +1 -1
  73. package/dist/step-argument-parser.d.ts +20 -3
  74. package/dist/step-argument-parser.d.ts.map +1 -1
  75. package/dist/step-argument-parser.js +60 -11
  76. package/dist/step-argument-parser.js.map +1 -1
  77. package/dist/step-attribute-mutations.d.ts +32 -2
  78. package/dist/step-attribute-mutations.d.ts.map +1 -1
  79. package/dist/step-attribute-mutations.js +87 -6
  80. package/dist/step-attribute-mutations.js.map +1 -1
  81. package/dist/step-comment-skip.d.ts +13 -0
  82. package/dist/step-comment-skip.d.ts.map +1 -0
  83. package/dist/step-comment-skip.js +19 -0
  84. package/dist/step-comment-skip.js.map +1 -0
  85. package/dist/step-export-types.d.ts +51 -0
  86. package/dist/step-export-types.d.ts.map +1 -1
  87. package/dist/step-export-types.js +38 -0
  88. package/dist/step-export-types.js.map +1 -1
  89. package/dist/step-outer-args.d.ts +27 -0
  90. package/dist/step-outer-args.d.ts.map +1 -0
  91. package/dist/step-outer-args.js +64 -0
  92. package/dist/step-outer-args.js.map +1 -0
  93. package/dist/step-overlay-attribute-overrides.d.ts.map +1 -1
  94. package/dist/step-overlay-attribute-overrides.js +6 -2
  95. package/dist/step-overlay-attribute-overrides.js.map +1 -1
  96. package/dist/step-property-sets.d.ts.map +1 -1
  97. package/dist/step-property-sets.js +8 -2
  98. package/dist/step-property-sets.js.map +1 -1
  99. package/dist/step-serialization.d.ts +1 -1
  100. package/dist/step-serialization.js +1 -1
  101. package/dist/step-slot-grammar.d.ts +24 -0
  102. package/dist/step-slot-grammar.d.ts.map +1 -0
  103. package/dist/step-slot-grammar.js +201 -0
  104. package/dist/step-slot-grammar.js.map +1 -0
  105. package/dist/step-source-iteration.d.ts.map +1 -1
  106. package/dist/step-source-iteration.js +26 -2
  107. package/dist/step-source-iteration.js.map +1 -1
  108. package/dist/style-closure.d.ts +3 -1
  109. package/dist/style-closure.d.ts.map +1 -1
  110. package/dist/style-closure.js +16 -1
  111. package/dist/style-closure.js.map +1 -1
  112. package/dist/subset-entity-reader.d.ts +12 -4
  113. package/dist/subset-entity-reader.d.ts.map +1 -1
  114. package/dist/subset-entity-reader.js +4 -16
  115. package/dist/subset-entity-reader.js.map +1 -1
  116. package/dist/texture-map-closure.d.ts +10 -0
  117. package/dist/texture-map-closure.d.ts.map +1 -0
  118. package/dist/texture-map-closure.js +22 -0
  119. package/dist/texture-map-closure.js.map +1 -0
  120. package/dist/unit-normalize.d.ts.map +1 -1
  121. package/dist/unit-normalize.js +12 -49
  122. package/dist/unit-normalize.js.map +1 -1
  123. package/package.json +8 -8
package/README.md CHANGED
@@ -180,3 +180,10 @@ See the [Exporting Guide](https://ifclite.dev/docs/guide/exporting/) and [API Re
180
180
  ## License
181
181
 
182
182
  [MPL-2.0](../../LICENSE)
183
+
184
+ IFCX geometry exports retain texture fragments and owner identity through a
185
+ versioned IFClite appearance extension, with bounded shared RGBA pixels and
186
+ optional `textureSources` containing original PNG/JPEG bytes. Unresolved images
187
+ fail explicitly. This preserves IFClite roundtrips; third-party readers must
188
+ implement the extension to recover textures. See
189
+ [IFCX texture portability](../../docs/guide/exporting.md#ifcx-texture-portability).
@@ -1 +1 @@
1
- {"version":3,"file":"anonymize-export.d.ts","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAcrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAiJ9E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAmGjB"}
1
+ {"version":3,"file":"anonymize-export.d.ts","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAcrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAyJ9E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAoGjB"}
@@ -65,15 +65,20 @@ function excludePropertySetsUnlessKept(index, includedIds, keepPropertySets) {
65
65
  * Null `PropertyReference` when an emitted `IfcPropertyReferenceValue` names
66
66
  * an entity the subset excludes. The value can be reached by the forward
67
67
  * closure rather than appearing in the caller's seed set, hence `closureIds`.
68
+ * Unreadable records are returned as warnings rather than counted as dropped.
68
69
  */
69
70
  function dropExcludedPropertyReferences(store, index, closureIds, excludedIds, view, schema) {
70
71
  const droppedIds = [];
72
+ const warnings = [];
71
73
  for (const id of closureIds) {
72
74
  if ((index.typeOf(id) ?? '') !== 'IFCPROPERTYREFERENCEVALUE')
73
75
  continue;
74
76
  const record = readEntityArgs(store, index, id);
75
- if (!record)
77
+ if (!record) {
78
+ warnings.push(`IfcPropertyReferenceValue #${id}: its source record could not be read, `
79
+ + 'so PropertyReference was not changed or reported as dropped.');
76
80
  continue;
81
+ }
77
82
  const idx = attrIndex('IFCPROPERTYREFERENCEVALUE', 'PropertyReference', schema);
78
83
  if (idx === -1 || idx >= record.args.length)
79
84
  continue;
@@ -83,7 +88,7 @@ function dropExcludedPropertyReferences(store, index, closureIds, excludedIds, v
83
88
  view.setPositionalAttribute(id, idx, null);
84
89
  droppedIds.push(id);
85
90
  }
86
- return droppedIds;
91
+ return { droppedIds, warnings };
87
92
  }
88
93
  /**
89
94
  * Every id in `includedIds` whose EXPRESS type is an `IfcRel*` (an
@@ -164,7 +169,7 @@ export function exportAnonymizedSubset(store, includedIds, options = {}) {
164
169
  const subsetIdentifyingTypes = identifyingTypesFor(options?.removeGeoreferencing !== false);
165
170
  const subset = getSubsetEntityIds(index, finalIncludedIds, subsetIdentifyingTypes);
166
171
  const exportClosure = collectReferencedEntityIds(subset.roots, store.source, index, subset.excludedIds);
167
- const droppedPropertyReferenceIds = dropExcludedPropertyReferences(store, index, exportClosure, subset.excludedIds, view, stepSourceSchema(store.schemaVersion));
172
+ const propertyReferenceResult = dropExcludedPropertyReferences(store, index, exportClosure, subset.excludedIds, view, stepSourceSchema(store.schemaVersion));
168
173
  const placementResult = applyPlacementAnonymization(store, index, finalIncludedIds, editor, view, options);
169
174
  const scrubResult = applyScrub(store, index, finalIncludedIds, view, options);
170
175
  const exportResult = new StepExporter(store, view).export({
@@ -204,11 +209,12 @@ export function exportAnonymizedSubset(store, includedIds, options = {}) {
204
209
  includedRootEntityCount,
205
210
  prunedRelationshipIds,
206
211
  droppedPropertySetIds,
207
- droppedPropertyReferenceIds,
212
+ droppedPropertyReferenceIds: propertyReferenceResult.droppedIds,
208
213
  zeroedPlacements: placementResult.zeroedPlacements,
209
214
  warnings: [
210
215
  ...placementResult.warnings,
211
216
  ...scrubResult.warnings,
217
+ ...propertyReferenceResult.warnings,
212
218
  ...exportResult.stats.warnings,
213
219
  ],
214
220
  },
@@ -1 +1 @@
1
- {"version":3,"file":"anonymize-export.js","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anonymize-export.js","sourceRoot":"","sources":["../src/anonymize-export.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"anonymize-placement.d.ts","sourceRoot":"","sources":["../src/anonymize-placement.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,+DAA+D;AAC/D,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,gBAAgB,EAChB,mBAAmB,GAAG,sBAAsB,CAC7C,CAAC;AAEF;2EAC2E;AAC3E,MAAM,WAAW,4BAA4B;IAC3C;6CACyC;IACzC,gBAAgB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACjE;;;iDAG6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAAE,EAC1C,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,mBAAmB,EACzB,IAAI,CAAC,EAAE,6BAA6B,GACnC,4BAA4B,CAc9B"}
1
+ {"version":3,"file":"anonymize-placement.d.ts","sourceRoot":"","sources":["../src/anonymize-placement.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM7D,+DAA+D;AAC/D,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,gBAAgB,EAChB,mBAAmB,GAAG,sBAAsB,CAC7C,CAAC;AAEF;2EAC2E;AAC3E,MAAM,WAAW,4BAA4B;IAC3C;6CACyC;IACzC,gBAAgB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACjE;;;iDAG6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAAE,EAC1C,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,mBAAmB,EACzB,IAAI,CAAC,EAAE,6BAA6B,GACnC,4BAA4B,CAc9B"}
@@ -2,8 +2,9 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { attrIndex, readEntityArgs } from './subset-entity-reader.js';
5
- import { splitTopLevelArgs } from './step-argument-parser.js';
5
+ import { splitTopLevelListItems } from './step-argument-parser.js';
6
6
  import { entityRef, stepReal } from './step-serialization.js';
7
+ import { BARE_REF_RE } from './reference-collector.js';
7
8
  const IFC_SITE_ADDRESS_ATTRIBUTES = [
8
9
  'RefLatitude',
9
10
  'RefLongitude',
@@ -234,11 +235,9 @@ function blankSiteAndBuildingAddresses(index, includedIds, view) {
234
235
  // ---------------------------------------------------------------------------
235
236
  // Token helpers
236
237
  // ---------------------------------------------------------------------------
237
- /** `"#42"` → `42`; anything else (`$`, a literal, missing) `null`. */
238
+ /** `"#42"` → `42` via shared, trivia-tolerant {@link BARE_REF_RE} (#4227 a narrower regex here skipped a comment-wrapped `ObjectPlacement`); else `null`. */
238
239
  function parseRef(token) {
239
- if (!token)
240
- return null;
241
- const match = /^#(\d+)$/.exec(token.trim());
240
+ const match = token ? BARE_REF_RE.exec(token) : null;
242
241
  return match ? Number(match[1]) : null;
243
242
  }
244
243
  /** Carry a verbatim STEP token (`$` or `#N`) into `StoreEditor.addEntity`'s
@@ -260,7 +259,7 @@ function parseCoordinateList(token) {
260
259
  const trimmed = token.trim();
261
260
  if (!trimmed.startsWith('(') || !trimmed.endsWith(')'))
262
261
  return null;
263
- const numbers = splitTopLevelArgs(trimmed.slice(1, -1)).map((part) => Number(part.trim()));
262
+ const numbers = splitTopLevelListItems(trimmed.slice(1, -1)).map((part) => Number(part.trim()));
264
263
  return numbers.every((n) => Number.isFinite(n)) ? numbers : null;
265
264
  }
266
265
  //# sourceMappingURL=anonymize-placement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"anonymize-placement.js","sourceRoot":"","sources":["../src/anonymize-placement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anonymize-placement.js","sourceRoot":"","sources":["../src/anonymize-placement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type IfcDataStore } from '@ifc-lite/parser';
2
+ import type { MutablePropertyView } from '@ifc-lite/mutations';
3
+ /**
4
+ * Capture effective geometry/placement/appearance dependencies for conditional
5
+ * replay (#4243). Source and authored references use the actual STEP writers.
6
+ * Property relationships are not traversed inversely; unrelated property edits
7
+ * therefore do not invalidate an appearance command's Undo/Redo.
8
+ */
9
+ export declare function captureAppearanceDependencies(store: IfcDataStore, view: MutablePropertyView, roots: ReadonlySet<number>): {
10
+ validate(current: MutablePropertyView): void;
11
+ };
12
+ //# sourceMappingURL=appearance-dependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-dependencies.d.ts","sourceRoot":"","sources":["../src/appearance-dependencies.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAgBlF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzE;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,CA4HlD"}
@@ -0,0 +1,195 @@
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
+ /* This Source Code Form is subject to the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
7
+ import { asSourceBytes, getAttributeNamesAcrossSchemas } from '@ifc-lite/parser';
8
+ import { getEffectiveEntityIndex } from './effective-index.js';
9
+ import { effectiveAppearanceRecord } from './effective-appearance-record.js';
10
+ import { collectRefsInByteRange, refGroupFromArg } from './reference-collector.js';
11
+ import { readStepSlots } from './step-argument-parser.js';
12
+ const RELATING = new Map([['IFCRELASSOCIATESMATERIAL', 'RelatingMaterial'], ['IFCRELDEFINESBYTYPE', 'RelatingType']]);
13
+ const BINDINGS = new Map([
14
+ ['IFCRELASSOCIATESMATERIAL', 'RelatedObjects'], ['IFCRELDEFINESBYTYPE', 'RelatedObjects'],
15
+ ['IFCMATERIALDEFINITIONREPRESENTATION', 'RepresentedMaterial'],
16
+ ['IFCSTYLEDITEM', 'Item'], ['IFCSTYLEDREPRESENTATION', 'Items'],
17
+ ['IFCPRESENTATIONLAYERASSIGNMENT', 'AssignedItems'], ['IFCPRESENTATIONLAYERWITHSTYLE', 'AssignedItems'],
18
+ ['IFCINDEXEDTRIANGLETEXTUREMAP', 'MappedTo'],
19
+ ['IFCINDEXEDPOLYGONALTEXTUREMAP', 'MappedTo'], ['IFCTEXTUREMAP', 'MappedTo'],
20
+ ]);
21
+ /**
22
+ * Capture effective geometry/placement/appearance dependencies for conditional
23
+ * replay (#4243). Source and authored references use the actual STEP writers.
24
+ * Property relationships are not traversed inversely; unrelated property edits
25
+ * therefore do not invalidate an appearance command's Undo/Redo.
26
+ */
27
+ export function captureAppearanceDependencies(store, view, roots) {
28
+ const read = (current) => {
29
+ // Refuse a large source/overlay before the effective index copies its maps.
30
+ if (store.entityIndex.byId.size + (store.deferredEntityIndex?.size ?? 0) > 200_000
31
+ || current.getNewEntities().length > 100_000) {
32
+ throw new Error('Appearance dependency validation exceeds its entity budget. Choose a smaller IFC model.');
33
+ }
34
+ const index = getEffectiveEntityIndex(store, current, true);
35
+ const source = asSourceBytes(store.source);
36
+ const rows = new Map();
37
+ let bytes = 0, values = 0, strings = 0, refs = 0;
38
+ // Native planning accepts 128MiB source + 64MiB output. The effective
39
+ // dependency graph may contain both, including higher precision new UVs.
40
+ const byteLimit = 192 * 1024 * 1024;
41
+ const encoder = new TextEncoder(), scratch = new Uint8Array(16 * 1024);
42
+ const refuse = () => { throw new Error(`Appearance dependency validation exceeds its safety budget (${bytes} bytes, ${values} attribute values). Choose a smaller scope.`); };
43
+ const inspect = (value) => {
44
+ const frames = [{ values: [value], cursor: 0 }];
45
+ while (frames.length) {
46
+ const frame = frames[frames.length - 1];
47
+ if (frame.cursor === frame.values.length) {
48
+ frames.pop();
49
+ continue;
50
+ }
51
+ const value = frame.values[frame.cursor++];
52
+ if (++values > 8_000_000 || frames.length > 64)
53
+ refuse();
54
+ if (Array.isArray(value)) {
55
+ if (value.length > 8_000_000 - values)
56
+ refuse();
57
+ frames.push({ values: value, cursor: 0 });
58
+ }
59
+ else if (value && typeof value === 'object' && 'typed' in value) {
60
+ frames.push({ values: [value.typed.type, value.typed.value], cursor: 0 });
61
+ }
62
+ else if (typeof value === 'string') {
63
+ strings += value.length;
64
+ if (strings > 8 * 1024 * 1024)
65
+ refuse();
66
+ }
67
+ }
68
+ };
69
+ const row = (id) => {
70
+ let result = rows.get(id);
71
+ if (result)
72
+ return result;
73
+ if (rows.size >= 100_000)
74
+ refuse();
75
+ const record = index.get(id);
76
+ if (!record) {
77
+ result = { line: '', refs: [] };
78
+ rows.set(id, result);
79
+ return result;
80
+ }
81
+ if (record.byteLength > byteLimit - bytes)
82
+ refuse();
83
+ const type = index.typeOf(id) ?? '';
84
+ // Unchanged source dependencies are already represented by an immutable
85
+ // marker below. Scan their original bytes directly instead of decoding,
86
+ // rewriting and encoding large coordinate lists solely to find edges.
87
+ // Binding rows still need their EXPRESS target slot for inverse traversal.
88
+ const original = !index.isOverlayCreated(id) && !index.hasSourceMutation?.(id)
89
+ && !current.getEntityTypeMutation(id);
90
+ if (original && !BINDINGS.has(type)) {
91
+ const span = source.slice(record.byteOffset, record.byteOffset + record.byteLength);
92
+ if (span.length !== record.byteLength)
93
+ throw new Error('Truncated IFC source during appearance validation.');
94
+ bytes += span.length;
95
+ for (let offset = 0; offset < span.length; offset++) {
96
+ if (span[offset] === 0x23 && ++refs > 2_000_000)
97
+ refuse();
98
+ }
99
+ result = { line: '', refs: collectRefsInByteRange(span, 0, span.length) };
100
+ rows.set(id, result);
101
+ return result;
102
+ }
103
+ inspect(current.getNewEntity(id)?.attributes);
104
+ for (const value of current.getPositionalMutationsForEntity(id)?.values() ?? [])
105
+ inspect(value);
106
+ for (const attribute of current.getAttributeMutationsForEntity(id))
107
+ inspect(attribute.value);
108
+ const line = effectiveAppearanceRecord(store, current, index, id);
109
+ // Exact UTF-8 work accounting with bounded scratch storage. Counting
110
+ // every ASCII character as three bytes rejected real Convento walls.
111
+ for (let offset = 0; offset < line.length;) {
112
+ const progress = encoder.encodeInto(line.slice(offset), scratch);
113
+ offset += progress.read;
114
+ bytes += progress.written;
115
+ if (!progress.read || bytes > byteLimit)
116
+ refuse();
117
+ }
118
+ for (const char of line)
119
+ if (char === '#' && ++refs > 2_000_000)
120
+ refuse();
121
+ const encoded = encoder.encode(line);
122
+ let forward = collectRefsInByteRange(encoded, 0, encoded.length);
123
+ const relating = RELATING.get(type);
124
+ if (relating) {
125
+ // Membership is validated by the complete row, but peer products sharing
126
+ // a type/material are not dependencies of this object's appearance.
127
+ const slot = getAttributeNamesAcrossSchemas(type).indexOf(relating);
128
+ if (slot < 0)
129
+ refuse();
130
+ const recordSlots = readStepSlots(line);
131
+ if (recordSlots === null)
132
+ throw new Error('Invalid STEP record during appearance validation.');
133
+ const ref = recordSlots.slots[slot] === undefined ? undefined : refGroupFromArg(recordSlots.slots[slot]);
134
+ forward = typeof ref === 'number' ? [ref] : ref ?? [];
135
+ }
136
+ result = { line, refs: forward };
137
+ rows.set(id, result);
138
+ return result;
139
+ };
140
+ // Inverse bindings are discovered by their actual EXPRESS target slot, not
141
+ // by a shared texture/style reference that could belong to another object.
142
+ const inverse = new Map();
143
+ for (const [type, attribute] of BINDINGS) {
144
+ const slot = getAttributeNamesAcrossSchemas(type).indexOf(attribute);
145
+ if (slot < 0)
146
+ throw new Error(`Cannot resolve ${type}.${attribute} for appearance validation.`);
147
+ for (const id of index.byType.get(type) ?? []) {
148
+ const line = row(id).line;
149
+ const recordSlots = readStepSlots(line);
150
+ if (recordSlots === null)
151
+ throw new Error('Invalid STEP record during appearance validation.');
152
+ const target = recordSlots.slots[slot] === undefined ? null : refGroupFromArg(recordSlots.slots[slot]);
153
+ for (const targetId of typeof target === 'number' ? [target] : target ?? []) {
154
+ if (!Number.isSafeInteger(targetId))
155
+ refuse();
156
+ const ids = inverse.get(targetId) ?? [];
157
+ ids.push(id);
158
+ inverse.set(targetId, ids);
159
+ }
160
+ }
161
+ }
162
+ if (roots.size > 100_000)
163
+ refuse();
164
+ for (const id of roots)
165
+ if (!Number.isSafeInteger(id) || id <= 0)
166
+ refuse();
167
+ const pending = [...roots], visited = new Set(pending);
168
+ const result = new Map();
169
+ for (let cursor = 0; cursor < pending.length; cursor++) {
170
+ const id = pending[cursor], record = row(id);
171
+ // Immutable source rows need no duplicate string in each Undo/Redo
172
+ // checkpoint. An SDK override changes this marker to an effective row.
173
+ const original = index.has(id) && !index.isOverlayCreated(id)
174
+ && !index.hasSourceMutation?.(id) && !current.getEntityTypeMutation(id);
175
+ result.set(id, original ? null : record.line);
176
+ for (const next of [...record.refs, ...(inverse.get(id) ?? [])]) {
177
+ if (!visited.has(next)) {
178
+ if (visited.size >= 100_000)
179
+ refuse();
180
+ visited.add(next);
181
+ pending.push(next);
182
+ }
183
+ }
184
+ }
185
+ return result;
186
+ };
187
+ const snapshot = read(view);
188
+ return { validate(current) {
189
+ const actual = read(current);
190
+ if (actual.size !== snapshot.size || [...snapshot].some(([id, line]) => actual.get(id) !== line)) {
191
+ throw new Error('The IFC geometry or appearance changed after this command. Undo the newer edit or reload the model.');
192
+ }
193
+ } };
194
+ }
195
+ //# sourceMappingURL=appearance-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-dependencies.js","sourceRoot":"","sources":["../src/appearance-dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type IfcDataStore } from '@ifc-lite/parser';
2
+ import type { IfcAttributeValue, MutablePropertyView } from '@ifc-lite/mutations';
3
+ /**
4
+ * Pure, conservative cleanup plan for explicitly owned appearance resources.
5
+ * Never returns source-backed entities or entities outside the candidate set.
6
+ * History supplies creation IDs and saved attribute values as protected values.
7
+ * Effective slots use the same named/positional precedence as STEP export.
8
+ * A budget refusal throws before returning any partial deletion plan.
9
+ */
10
+ export declare function planAuthoredResourceCleanup(dataStore: IfcDataStore, view: MutablePropertyView, candidateIds: ReadonlySet<number>, protectedValues?: Iterable<IfcAttributeValue>): {
11
+ entityIds: Set<number>;
12
+ retainedImageUris: Set<string>;
13
+ };
14
+ //# sourceMappingURL=authored-resource-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored-resource-cleanup.d.ts","sourceRoot":"","sources":["../src/authored-resource-cleanup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQlF;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAClD,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,GAAE,QAAQ,CAAC,iBAAiB,CAAM,GACnF;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAoG5D"}
@@ -0,0 +1,156 @@
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 { asSourceBytes } from '@ifc-lite/parser';
5
+ import { authoredEntityRefs, getEffectiveEntityIndex } from './effective-index.js';
6
+ import { collectRefsInByteRange } from './reference-collector.js';
7
+ import { effectiveAppearanceRecord, effectiveImageUri } from './effective-appearance-record.js';
8
+ const RESOURCE_TYPES = new Set(['IFCIMAGETEXTURE', 'IFCTEXTUREVERTEXLIST', 'IFCSURFACESTYLE',
9
+ 'IFCSURFACESTYLEWITHTEXTURES', 'IFCSURFACESTYLESHADING', 'IFCSURFACESTYLERENDERING', 'IFCCOLOURRGB']);
10
+ /**
11
+ * Pure, conservative cleanup plan for explicitly owned appearance resources.
12
+ * Never returns source-backed entities or entities outside the candidate set.
13
+ * History supplies creation IDs and saved attribute values as protected values.
14
+ * Effective slots use the same named/positional precedence as STEP export.
15
+ * A budget refusal throws before returning any partial deletion plan.
16
+ */
17
+ export function planAuthoredResourceCleanup(dataStore, view, candidateIds, protectedValues = []) {
18
+ if (candidateIds.size > 250_000)
19
+ throw new Error('Authored appearance cleanup exceeds its entity budget; resources were retained.');
20
+ const index = getEffectiveEntityIndex(dataStore, view, true);
21
+ const candidates = new Set([...candidateIds].filter(id => index.isOverlayCreated(id)
22
+ && !index.isDeleted(id) && RESOURCE_TYPES.has(index.typeOf(id) ?? '')));
23
+ const live = new Set();
24
+ const pending = [];
25
+ let work = 0;
26
+ const account = () => { if (++work > 2_000_000)
27
+ throw new Error('Authored appearance cleanup exceeds its reference budget; resources were retained.'); };
28
+ let valueWork = 0, stringUnits = 0;
29
+ const inspect = (value) => {
30
+ const frames = [{ values: [value], cursor: 0 }];
31
+ while (frames.length) {
32
+ const frame = frames[frames.length - 1];
33
+ if (frame.cursor === frame.values.length) {
34
+ frames.pop();
35
+ continue;
36
+ }
37
+ const next = frame.values[frame.cursor++];
38
+ if (++valueWork > 8_000_000 || frames.length > 64)
39
+ throw new Error('Authored appearance cleanup exceeds its attribute budget; resources were retained.');
40
+ if (Array.isArray(next)) {
41
+ if (next.length > 8_000_000 - valueWork)
42
+ throw new Error('Authored appearance cleanup exceeds its attribute budget; resources were retained.');
43
+ frames.push({ values: next, cursor: 0 });
44
+ }
45
+ else if (next && typeof next === 'object' && 'typed' in next) {
46
+ frames.push({ values: [next.typed.type, next.typed.value], cursor: 0 });
47
+ }
48
+ else if (typeof next === 'string') {
49
+ stringUnits += next.length;
50
+ if (stringUnits > 128 * 1024 * 1024)
51
+ throw new Error('Authored appearance cleanup exceeds its attribute budget; resources were retained.');
52
+ }
53
+ }
54
+ };
55
+ const retain = (id) => {
56
+ account();
57
+ if (candidates.has(id) && !live.has(id)) {
58
+ live.add(id);
59
+ pending.push(id);
60
+ }
61
+ };
62
+ if (candidates.size)
63
+ for (const value of protectedValues) {
64
+ inspect(value);
65
+ for (const id of authoredEntityRefs(value))
66
+ retain(id);
67
+ if (live.size === candidates.size)
68
+ break;
69
+ }
70
+ const source = asSourceBytes(dataStore.source);
71
+ const imageUris = new Map();
72
+ const needsGraph = live.size !== candidates.size;
73
+ const imageRecords = function* () {
74
+ for (const id of index.byType.get('IFCIMAGETEXTURE') ?? []) {
75
+ const record = index.get(id);
76
+ if (record)
77
+ yield [id, record];
78
+ }
79
+ };
80
+ // Non-candidates are roots. Visit candidates only after a live reference
81
+ // reaches them: unreachable history UV arrays need neither serialization nor
82
+ // recursive validation to prove that no surviving entity can refer to them.
83
+ const graphRecords = function* () {
84
+ for (const entry of index)
85
+ if (!candidates.has(entry[0]))
86
+ yield entry;
87
+ for (let cursor = 0; cursor < pending.length; cursor++) {
88
+ const id = pending[cursor], record = index.get(id);
89
+ if (record)
90
+ yield [id, record];
91
+ }
92
+ };
93
+ let sourceBytes = 0, sourceHashes = 0, emittedBytes = 0, emittedHashes = 0;
94
+ for (const [entityId, record] of needsGraph ? graphRecords() : imageRecords()) {
95
+ account();
96
+ inspect(view.getNewEntity(entityId)?.attributes);
97
+ for (const value of view.getPositionalMutationsForEntity(entityId)?.values() ?? [])
98
+ inspect(value);
99
+ for (const attribute of view.getAttributeMutationsForEntity(entityId))
100
+ inspect(attribute.value);
101
+ const isImage = index.typeOf(entityId) === 'IFCIMAGETEXTURE';
102
+ let bytes;
103
+ if (index.isOverlayCreated(entityId)) {
104
+ const line = effectiveAppearanceRecord(dataStore, view, index, entityId);
105
+ bytes = new TextEncoder().encode(line);
106
+ if (isImage) {
107
+ const uri = effectiveImageUri(line);
108
+ if (uri !== undefined)
109
+ imageUris.set(entityId, uri);
110
+ }
111
+ }
112
+ else {
113
+ sourceBytes += record.byteLength;
114
+ if (sourceBytes > 128 * 1024 * 1024)
115
+ throw new Error('Authored appearance cleanup exceeds its source byte budget; resources were retained.');
116
+ bytes = source.slice(record.byteOffset, record.byteOffset + record.byteLength);
117
+ if (bytes.length !== record.byteLength)
118
+ throw new Error('Incomplete IFC source during appearance cleanup; resources were retained.');
119
+ // Even an originally dangling source reference may name a later allocated ID.
120
+ // Account before the canonical writer/scanner allocates output arrays.
121
+ for (const byte of bytes)
122
+ if (byte === 35 && ++sourceHashes > 2_000_000) {
123
+ throw new Error('Authored appearance cleanup exceeds its reference budget; resources were retained.');
124
+ }
125
+ if (isImage || index.hasSourceMutation?.(entityId) || view.getEntityTypeMutation(entityId)) {
126
+ const line = effectiveAppearanceRecord(dataStore, view, index, entityId);
127
+ bytes = new TextEncoder().encode(line);
128
+ if (isImage) {
129
+ const uri = effectiveImageUri(line);
130
+ if (uri !== undefined)
131
+ imageUris.set(entityId, uri);
132
+ }
133
+ }
134
+ }
135
+ emittedBytes += bytes.length;
136
+ if (emittedBytes > 128 * 1024 * 1024)
137
+ throw new Error('Authored appearance cleanup exceeds its emitted byte budget; resources were retained.');
138
+ if (needsGraph)
139
+ for (const byte of bytes)
140
+ if (byte === 35 && ++emittedHashes > 2_000_000) {
141
+ throw new Error('Authored appearance cleanup exceeds its reference budget; resources were retained.');
142
+ }
143
+ const groups = needsGraph ? collectRefsInByteRange(bytes, 0, bytes.length) : [];
144
+ for (const group of groups) {
145
+ for (const id of typeof group === 'number' ? [group] : group) {
146
+ retain(id);
147
+ }
148
+ }
149
+ // Binding entities are intentionally never deletion candidates: their live
150
+ // inverse link to geometry roots the style/map resources they still name.
151
+ // Keeping an unbound binding is conservative and cannot break other edits.
152
+ }
153
+ const entityIds = new Set([...candidates].filter(id => !live.has(id)));
154
+ return { entityIds, retainedImageUris: new Set([...imageUris].filter(([id]) => !entityIds.has(id)).map(([, uri]) => uri)) };
155
+ }
156
+ //# sourceMappingURL=authored-resource-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored-resource-cleanup.js","sourceRoot":"","sources":["../src/authored-resource-cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface TableToCsvOptions {
2
+ /** Column delimiter; defaults to `,`. */
3
+ delimiter?: string;
4
+ }
5
+ /** A column key naming a property of every row. */
6
+ export type TableColumn<Row> = Extract<keyof Row, string>;
7
+ /** Serialise one cell value under the rules documented on {@link tableToCsv}. */
8
+ export declare function csvCellOf(value: unknown, delimiter?: string): string;
9
+ export declare function tableToCsv<Row extends object>(columns: readonly TableColumn<Row>[], rows: readonly Row[], options?: TableToCsvOptions): string;
10
+ //# sourceMappingURL=csv-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-table.d.ts","sourceRoot":"","sources":["../src/csv-table.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mDAAmD;AACnD,MAAM,MAAM,WAAW,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,CAAC;AAE1D,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAM,GAAG,MAAM,CAIjE;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAS,MAAM,EAC3C,OAAO,EAAE,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,EACpC,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAOR"}