@ifc-lite/export 4.7.2 → 4.8.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 (96) hide show
  1. package/dist/entity-subgraph.d.ts +56 -0
  2. package/dist/entity-subgraph.d.ts.map +1 -0
  3. package/dist/entity-subgraph.js +138 -0
  4. package/dist/entity-subgraph.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lod0-generator.d.ts.map +1 -1
  10. package/dist/lod0-generator.js +4 -1
  11. package/dist/lod0-generator.js.map +1 -1
  12. package/dist/merged-empty-containers-refs.d.ts +24 -0
  13. package/dist/merged-empty-containers-refs.d.ts.map +1 -0
  14. package/dist/merged-empty-containers-refs.js +126 -0
  15. package/dist/merged-empty-containers-refs.js.map +1 -0
  16. package/dist/merged-empty-containers.d.ts +36 -1
  17. package/dist/merged-empty-containers.d.ts.map +1 -1
  18. package/dist/merged-empty-containers.js +21 -126
  19. package/dist/merged-empty-containers.js.map +1 -1
  20. package/dist/merged-exporter.d.ts +4 -1
  21. package/dist/merged-exporter.d.ts.map +1 -1
  22. package/dist/merged-exporter.js +42 -39
  23. package/dist/merged-exporter.js.map +1 -1
  24. package/dist/merged-guid.d.ts +4 -0
  25. package/dist/merged-guid.d.ts.map +1 -1
  26. package/dist/merged-guid.js +14 -0
  27. package/dist/merged-guid.js.map +1 -1
  28. package/dist/merged-inverse-claims.d.ts +154 -0
  29. package/dist/merged-inverse-claims.d.ts.map +1 -0
  30. package/dist/merged-inverse-claims.js +306 -0
  31. package/dist/merged-inverse-claims.js.map +1 -0
  32. package/dist/merged-planner-guids.d.ts +32 -0
  33. package/dist/merged-planner-guids.d.ts.map +1 -0
  34. package/dist/merged-planner-guids.js +79 -0
  35. package/dist/merged-planner-guids.js.map +1 -0
  36. package/dist/merged-subcontext.d.ts.map +1 -1
  37. package/dist/merged-subcontext.js +1 -0
  38. package/dist/merged-subcontext.js.map +1 -1
  39. package/dist/parquet-exporter.d.ts.map +1 -1
  40. package/dist/parquet-exporter.js +25 -23
  41. package/dist/parquet-exporter.js.map +1 -1
  42. package/dist/parquet-spatial-rows.d.ts +14 -0
  43. package/dist/parquet-spatial-rows.d.ts.map +1 -0
  44. package/dist/parquet-spatial-rows.js +57 -0
  45. package/dist/parquet-spatial-rows.js.map +1 -0
  46. package/dist/property-value-serialization.d.ts.map +1 -1
  47. package/dist/property-value-serialization.js +2 -1
  48. package/dist/property-value-serialization.js.map +1 -1
  49. package/dist/reference-collector.js +3 -0
  50. package/dist/reference-collector.js.map +1 -1
  51. package/dist/related-entities.d.ts.map +1 -1
  52. package/dist/related-entities.js +6 -0
  53. package/dist/related-entities.js.map +1 -1
  54. package/dist/remesh-context-roots.d.ts +36 -0
  55. package/dist/remesh-context-roots.d.ts.map +1 -0
  56. package/dist/remesh-context-roots.js +126 -0
  57. package/dist/remesh-context-roots.js.map +1 -0
  58. package/dist/step-collection.js +1 -1
  59. package/dist/step-collection.js.map +1 -1
  60. package/dist/step-export-types.d.ts +2 -0
  61. package/dist/step-export-types.d.ts.map +1 -1
  62. package/dist/step-omission-predicates.d.ts +8 -0
  63. package/dist/step-omission-predicates.d.ts.map +1 -1
  64. package/dist/step-omission-predicates.js +11 -1
  65. package/dist/step-omission-predicates.js.map +1 -1
  66. package/dist/step-overlay-entities.d.ts.map +1 -1
  67. package/dist/step-overlay-entities.js +23 -1
  68. package/dist/step-overlay-entities.js.map +1 -1
  69. package/dist/step-pass-builder.d.ts.map +1 -1
  70. package/dist/step-pass-builder.js +1 -0
  71. package/dist/step-pass-builder.js.map +1 -1
  72. package/dist/step-property-set-collection.d.ts +2 -0
  73. package/dist/step-property-set-collection.d.ts.map +1 -1
  74. package/dist/step-property-set-collection.js +42 -21
  75. package/dist/step-property-set-collection.js.map +1 -1
  76. package/dist/step-property-set-generators.d.ts +1 -1
  77. package/dist/step-property-set-generators.d.ts.map +1 -1
  78. package/dist/step-property-set-generators.js +19 -2
  79. package/dist/step-property-set-generators.js.map +1 -1
  80. package/dist/step-property-set-index.js +5 -2
  81. package/dist/step-property-set-index.js.map +1 -1
  82. package/dist/step-property-sets.d.ts.map +1 -1
  83. package/dist/step-property-sets.js +5 -2
  84. package/dist/step-property-sets.js.map +1 -1
  85. package/dist/step-pset-copy-on-write.d.ts +75 -0
  86. package/dist/step-pset-copy-on-write.d.ts.map +1 -0
  87. package/dist/step-pset-copy-on-write.js +146 -0
  88. package/dist/step-pset-copy-on-write.js.map +1 -0
  89. package/dist/step-source-iteration.d.ts.map +1 -1
  90. package/dist/step-source-iteration.js +7 -0
  91. package/dist/step-source-iteration.js.map +1 -1
  92. package/package.json +11 -10
  93. package/dist/merged-rel-aggregates.d.ts +0 -63
  94. package/dist/merged-rel-aggregates.d.ts.map +0 -1
  95. package/dist/merged-rel-aggregates.js +0 -122
  96. package/dist/merged-rel-aggregates.js.map +0 -1
@@ -2,25 +2,20 @@
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 { asSourceBytes } from '@ifc-lite/parser';
5
- import { readStepSlots, splitTopLevelListItems } from './step-argument-parser.js';
6
- import { BARE_REF_RE } from './reference-collector.js';
5
+ import { argRefs, classifyRefs, leadingGuid, refList, singleRef, topLevelAttrs } from './merged-empty-containers-refs.js';
7
6
  /**
8
- * `#N=TYPE(...)` record, with STEP trivia (whitespace and/or a
9
- * `/* ... *​/` comment, #3789) tolerated between the type name and `(` —
10
- * same adjacency fix as `entity-extractor.ts`'s `extractEntity`. Without it
11
- * a wrapped line's arguments are unreadable here (`topLevelAttrs` returns
12
- * `null`), which the caller treats as "can't safely rewrite" and blocks the
13
- * empty-container drop for that entity.
14
- */
15
- /**
16
- * Spatial container types dropped when they end up empty. `IfcProject` is
17
- * deliberately absent: it is the file's root, never a candidate.
7
+ * Spatial container types dropped when they end up empty: every instantiable
8
+ * IfcSpatialStructureElement, including the IFC4X3 facilities and facility
9
+ * parts (#5937). `IfcProject` is deliberately absent: it is the file's root,
10
+ * never a candidate. Twin of `CONTAINER_TYPES` in `rust/export/src/merged/empty.rs`.
18
11
  */
19
12
  const CONTAINER_TYPES = new Set([
20
13
  'IFCSITE',
21
14
  'IFCBUILDING',
22
15
  'IFCBUILDINGSTOREY',
23
16
  'IFCSPACE',
17
+ 'IFCFACILITY', 'IFCBRIDGE', 'IFCMARINEFACILITY', 'IFCRAILWAY', 'IFCROAD',
18
+ 'IFCBRIDGEPART', 'IFCFACILITYPARTCOMMON', 'IFCMARINEPART', 'IFCRAILWAYPART', 'IFCROADPART',
24
19
  ]);
25
20
  /**
26
21
  * Relationships that express spatial structure, as
@@ -32,8 +27,12 @@ const STRUCTURE_RELATIONS = {
32
27
  IFCRELCONTAINEDINSPATIALSTRUCTURE: [5, 4],
33
28
  IFCRELREFERENCEDINSPATIALSTRUCTURE: [5, 4],
34
29
  };
30
+ /** True when `typeUpper` is a relationship the analysis counts as spatial structure. */
31
+ export function isStructureRelation(typeUpper) {
32
+ return typeUpper in STRUCTURE_RELATIONS;
33
+ }
35
34
  /** True when `typeUpper` is a droppable spatial container type. */
36
- function isSpatialContainerType(typeUpper) {
35
+ export function isSpatialContainerType(typeUpper) {
37
36
  return CONTAINER_TYPES.has(typeUpper);
38
37
  }
39
38
  /**
@@ -70,7 +69,7 @@ export function planEmptyContainerDrops(models) {
70
69
  containersByModel.push(canon);
71
70
  for (const node of canon.values())
72
71
  nodes.add(node);
73
- recordEdges(view, canon, hasContent, parents);
72
+ recordEdges(view, canon, hasContent, parents, view.claimParents?.());
74
73
  recordBlocks(view, canon, blocked);
75
74
  }
76
75
  // A container is non-empty when it holds something, is blocked, or has a
@@ -138,14 +137,17 @@ function canonicalContainers(view, guidNode) {
138
137
  /**
139
138
  * Record what this model contributes to each container: contained elements and
140
139
  * aggregated objects become content; aggregated spatial children become upward
141
- * edges, so a non-empty storey keeps its building and its site.
140
+ * edges, so a non-empty storey keeps its building and its site. An aggregation
141
+ * edge the one-parent pass withholds is never written, so it counts for nothing.
142
142
  */
143
- function recordEdges(view, canon, hasContent, parents) {
143
+ function recordEdges(view, canon, hasContent, parents, withheld) {
144
144
  if (canon.size === 0)
145
145
  return;
146
146
  for (const [localId, ref] of view.entities) {
147
147
  if (view.included !== null && !view.included.has(localId))
148
148
  continue;
149
+ if (withheld?.skipEntityIds.has(localId))
150
+ continue;
149
151
  const slots = STRUCTURE_RELATIONS[ref.type.toUpperCase()];
150
152
  if (slots === undefined)
151
153
  continue;
@@ -161,9 +163,12 @@ function recordEdges(view, canon, hasContent, parents) {
161
163
  const parent = canon.get(relating);
162
164
  if (parent === undefined)
163
165
  continue;
166
+ const stripped = withheld?.relMemberStrip.get(localId);
164
167
  for (const child of refList(attrs[relatedIndex] ?? '')) {
165
168
  if (view.included !== null && !view.included.has(child))
166
169
  continue;
170
+ if (stripped?.has(child))
171
+ continue;
167
172
  const childNode = canon.get(child);
168
173
  if (childNode === undefined) {
169
174
  hasContent.add(parent);
@@ -239,114 +244,4 @@ function lineOf(view, localId) {
239
244
  return '';
240
245
  return view.source.decodeUtf8(ref.byteOffset, ref.byteOffset + ref.byteLength);
241
246
  }
242
- /** Top-level arguments of a `#id=TYPE(…);` line, or `null` when unparseable. */
243
- function topLevelAttrs(line) {
244
- const record = readStepSlots(line);
245
- return record === null ? null : record.slots.map(arg => arg.trim());
246
- }
247
- /** `"#7"` → `7` via shared, trivia-tolerant {@link BARE_REF_RE} (#4227 — a narrower regex misclassified a comment-wrapped `RelatingObject`). */
248
- function singleRef(arg) {
249
- const match = BARE_REF_RE.exec(arg);
250
- return match ? Number(match[1]) : null;
251
- }
252
- /** Parse a `(#a,#b,…)` list argument into ids. */
253
- function refList(arg) {
254
- const trimmed = arg.trim();
255
- if (!trimmed.startsWith('(') || !trimmed.endsWith(')'))
256
- return [];
257
- const inner = trimmed.slice(1, -1).trim();
258
- if (inner === '')
259
- return [];
260
- const ids = [];
261
- for (const item of splitTopLevelListItems(inner)) {
262
- const id = singleRef(item);
263
- if (id !== null)
264
- ids.push(id);
265
- }
266
- return ids;
267
- }
268
- /**
269
- * Every reference in a line's argument list, paired with whether it sits
270
- * somewhere neither `filterHiddenRefsFromRelationshipLine` can strip (a direct
271
- * list element) nor withhold the line for (a whole single-valued attribute) —
272
- * i.e. nested inside a list of lists or a typed value. `null` when the line's
273
- * argument list cannot be parsed at all: a line no rewrite can narrow, which the
274
- * analysis must treat as a blocker rather than as "names nothing".
275
- */
276
- function classifyRefs(line) {
277
- const attrs = topLevelAttrs(line);
278
- if (attrs === null)
279
- return null;
280
- const out = [];
281
- for (const attr of attrs) {
282
- const direct = singleRef(attr);
283
- if (direct !== null) {
284
- out.push([direct, false]);
285
- continue;
286
- }
287
- if (attr.startsWith('(') && attr.endsWith(')')) {
288
- const inner = attr.slice(1, -1).trim();
289
- if (inner === '')
290
- continue;
291
- for (const item of splitTopLevelListItems(inner)) {
292
- const id = singleRef(item);
293
- if (id !== null)
294
- out.push([id, false]);
295
- else
296
- for (const nested of argRefs(item))
297
- out.push([nested, true]);
298
- }
299
- continue;
300
- }
301
- for (const nested of argRefs(attr))
302
- out.push([nested, true]);
303
- }
304
- return out;
305
- }
306
- /**
307
- * Every `#N` reference in a chunk of STEP text, skipping quoted strings (where a
308
- * `#` is literal) and any leading `#id=` (the line's own id). Reads bytes rather
309
- * than decoded text so the reverse-reference scan never decodes a whole model.
310
- */
311
- function argRefs(text) {
312
- const bytes = typeof text === 'string' ? new TextEncoder().encode(text) : text;
313
- const eq = bytes.indexOf(0x3d /* = */);
314
- const from = eq === -1 ? 0 : eq + 1;
315
- const out = [];
316
- let inString = false;
317
- for (let i = from; i < bytes.length; i++) {
318
- const byte = bytes[i];
319
- if (byte === 0x27 /* ' */) {
320
- inString = !inString;
321
- continue;
322
- }
323
- if (inString || byte !== 0x23 /* # */)
324
- continue;
325
- let j = i + 1;
326
- let value = 0;
327
- while (j < bytes.length && bytes[j] >= 0x30 && bytes[j] <= 0x39) {
328
- value = value * 10 + (bytes[j] - 0x30);
329
- j++;
330
- }
331
- if (j > i + 1) {
332
- out.push(value);
333
- i = j - 1;
334
- }
335
- }
336
- return out;
337
- }
338
- /** The GlobalId (first quoted attribute) of a rooted entity's line. */
339
- function leadingGuid(line) {
340
- const open = line.indexOf('(');
341
- if (open === -1)
342
- return null;
343
- const first = line.indexOf("'", open + 1);
344
- if (first === -1)
345
- return null;
346
- const second = line.indexOf("'", first + 1);
347
- if (second === -1)
348
- return null;
349
- const raw = line.slice(first + 1, second);
350
- return /^[0-9A-Za-z_$]{22}$/.test(raw) ? raw : null;
351
- }
352
247
  //# sourceMappingURL=merged-empty-containers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"merged-empty-containers.js","sourceRoot":"","sources":["../src/merged-empty-containers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merged-empty-containers.js","sourceRoot":"","sources":["../src/merged-empty-containers.ts"],"names":[],"mappings":"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"}
@@ -292,9 +292,12 @@ export declare class MergedExporter {
292
292
  * Plan the empty spatial containers of the whole merge (#3643), or `null` when
293
293
  * the caller did not ask for the drop. Reproduces the same spatial unification
294
294
  * {@link planModel} will, so emptiness is judged on the containers the merge
295
- * actually keeps rather than on each file in isolation.
295
+ * actually keeps rather than on each file in isolation. It runs its own
296
+ * {@link claimParents} pass first (#5725, see `EmptyContainerModelView.claimParents`).
296
297
  */
297
298
  private planContainerDrops;
299
+ /** One written rel per single-valued inverse (#5471, #5726, #5774): record this model's claims, stripping or folding ones already made. */
300
+ private claimParents;
298
301
  /** Fold a model's dropped containers into its plan: the container lines are
299
302
  * skipped outright, and {@link renderEntity} narrows every line naming one. */
300
303
  private applyContainerDrops;
@@ -1 +1 @@
1
- {"version":3,"file":"merged-exporter.d.ts","sourceRoot":"","sources":["../src/merged-exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merged-exporter.d.ts","sourceRoot":"","sources":["../src/merged-exporter.ts"],"names":[],"mappings":"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"}
@@ -17,9 +17,10 @@ import { StepExporter } from './step-exporter.js';
17
17
  import { rescaleEntityLengths, computeNormalizeFactor } from './unit-normalize.js';
18
18
  import { planInfrastructureUnify, resolvePrimaryContextState } from './merged-context.js';
19
19
  import { remapEntityText } from './merged-remap.js';
20
- import { extractGlobalIdFast, mintUniqueGuid, readLeadingGuid, replaceGlobalId, } from './merged-guid.js';
21
- import { planEmptyContainerDrops, EMPTY_MODEL_VIEW, } from './merged-empty-containers.js';
22
- import { skipRedundantRelAggregates, applyRelAggregateStrip, collectRelAggregatePairs } from './merged-rel-aggregates.js';
20
+ import { PlannerGuids } from './merged-planner-guids.js';
21
+ import { isRelationshipType, mintUniqueGuid, readLeadingGuid, replaceGlobalId, readLocalGuids, } from './merged-guid.js';
22
+ import { planEmptyContainerDrops, EMPTY_MODEL_VIEW, isSpatialContainerType, isStructureRelation, } from './merged-empty-containers.js';
23
+ import { InverseClaims, claimInverses, applyRelMemberStrip, applyInverseFolds } from './merged-inverse-claims.js';
23
24
  /**
24
25
  * UTF-8 decode of `[start, end)` of a model's source, accepting either the raw
25
26
  * bytes or the {@link IfcSourceBytes} accessor (#2183). Replaces the direct
@@ -36,10 +37,6 @@ const SHARED_INFRASTRUCTURE_TYPES = new Set([
36
37
  'IFCGEOMETRICREPRESENTATIONCONTEXT',
37
38
  'IFCGEOMETRICREPRESENTATIONSUBCONTEXT',
38
39
  ]);
39
- /** True for IfcRelationship subtypes (objectified relationships). */
40
- function isRelationshipType(typeUpper) {
41
- return typeUpper.startsWith('IFCREL');
42
- }
43
40
  /** Relative tolerance for comparing two length unit scale factors. */
44
41
  const UNIT_SCALE_TOLERANCE = 1e-6;
45
42
  /** SI prefix multipliers, for resolving prefixed area/volume units (rarely used). */
@@ -170,6 +167,7 @@ export class MergedExporter {
170
167
  }
171
168
  const plan = this.planModel(model, completeIndex, isFirstModel, mode.compatible, mode.lengthFactor, setup, guidToFinalId);
172
169
  this.applyContainerDrops(plan, containerDrops?.byModel.get(model.id));
170
+ this.claimParents(model, plan, visibility, completeIndex, !isFirstModel && mode.compatible, setup);
173
171
  const written = (id) => (visibility === null || visibility.included.has(id)) && !plan.skipEntityIds.has(id);
174
172
  if (schema === 'IFC2X3') {
175
173
  // @raw-entity-enumeration-ok sync merge rejects overlays, so this is an unedited source index
@@ -185,8 +183,8 @@ export class MergedExporter {
185
183
  }
186
184
  isFirstModel = false;
187
185
  }
188
- for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings()])
189
- normalizeWarnings.add(warning);
186
+ for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings(), ...applyInverseFolds(allEntityLines, setup.parentClaims)])
187
+ normalizeWarnings.add(warning); // #5774 folds
190
188
  // Assemble final file as Uint8Array chunks to avoid V8 string length limit
191
189
  if (onProgress)
192
190
  onProgress({ phase: 'assembling', percent: 0.9, entitiesProcessed: allEntityLines.length, entitiesTotal: allEntityLines.length });
@@ -295,6 +293,7 @@ export class MergedExporter {
295
293
  }
296
294
  const plan = this.planModel(model, completeIndex, isFirstModel, mode.compatible, mode.lengthFactor, setup, guidToFinalId);
297
295
  this.applyContainerDrops(plan, containerDrops?.byModel.get(model.id));
296
+ this.claimParents(model, plan, visibility, completeIndex, !isFirstModel && mode.compatible, setup);
298
297
  const written = (id) => (visibility === null || visibility.included.has(id)) && !plan.skipEntityIds.has(id);
299
298
  if (schema === 'IFC2X3') {
300
299
  // @raw-entity-enumeration-ok async merge first bakes and reparses edited models into source snapshots
@@ -326,8 +325,8 @@ export class MergedExporter {
326
325
  }
327
326
  isFirstModel = false;
328
327
  }
329
- for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings()])
330
- normalizeWarnings.add(warning);
328
+ for (const warning of [...slotFill.warnings(), ...ifc4Slots.warnings(), ...enums.warnings(), ...applyInverseFolds(allEntityLines, setup.parentClaims)])
329
+ normalizeWarnings.add(warning); // #5774 folds
331
330
  // Assembly phase
332
331
  if (onProgress) {
333
332
  onProgress({ phase: 'assembling', percent: 0.9, entitiesProcessed: totalEntities, entitiesTotal: totalEntities });
@@ -398,11 +397,14 @@ export class MergedExporter {
398
397
  * Plan the empty spatial containers of the whole merge (#3643), or `null` when
399
398
  * the caller did not ask for the drop. Reproduces the same spatial unification
400
399
  * {@link planModel} will, so emptiness is judged on the containers the merge
401
- * actually keeps rather than on each file in isolation.
400
+ * actually keeps rather than on each file in isolation. It runs its own
401
+ * {@link claimParents} pass first (#5725, see `EmptyContainerModelView.claimParents`).
402
402
  */
403
403
  planContainerDrops(options, models, setup) {
404
404
  if (!options.dropEmptyContainers)
405
405
  return null;
406
+ const claims = new InverseClaims(options.schema || 'IFC4', isStructureRelation);
407
+ const guids = new PlannerGuids(scale => this.unitsCompatible(scale, setup.primaryScale), isSpatialContainerType);
406
408
  const views = models.map((model, index) => {
407
409
  const source = model.dataStore.source;
408
410
  if (!source || source.length === 0)
@@ -413,14 +415,17 @@ export class MergedExporter {
413
415
  if (index > 0 && mode.compatible) {
414
416
  this.unifySpatialEntities(model.dataStore, setup.spatialLookup, setup.firstModelOffset, mode.lengthFactor, sharedRemap, new Set(), setup);
415
417
  }
416
- return {
417
- entities,
418
- source: asSourceBytes(source),
419
- included: this.computeIncludedEntityIds(model, options, entities, source)?.included ?? null,
420
- sharedRemap,
421
- offset: setup.modelOffsets.get(model.id),
422
- compatible: mode.compatible,
418
+ const visibility = this.computeIncludedEntityIds(model, options, entities, source);
419
+ const claimParents = () => {
420
+ const typeOf = (id) => entities.get(id).type.toUpperCase(); // GlobalId unification the emit pass is sure to repeat (#5937)
421
+ const unified = guids.plan({ guids: readLocalGuids(entities, source), typeOf, isFirst: index === 0, compatible: mode.compatible, offset: setup.modelOffsets.get(model.id),
422
+ effectiveScale: mode.effectiveScale, isIncluded: id => visibility === null || visibility.included.has(id), keepsGuids: !needsConversion(model.dataStore.schemaVersion || 'IFC4', options.schema || 'IFC4'),
423
+ unifiedEarlier: id => sharedRemap.has(id) || (index > 0 && mode.compatible && setup.firstProjectIds.length > 0 && typeOf(id) === 'IFCPROJECT') });
424
+ const withheld = { sharedRemap: new Map([...sharedRemap, ...unified]), skipEntityIds: new Set(), relMemberStrip: new Map() };
425
+ this.claimParents(model, withheld, visibility, entities, index > 0 && mode.compatible, setup, claims);
426
+ return withheld;
423
427
  };
428
+ return { entities, source: asSourceBytes(source), included: visibility?.included ?? null, sharedRemap, offset: setup.modelOffsets.get(model.id), compatible: mode.compatible, claimParents };
424
429
  });
425
430
  const plan = planEmptyContainerDrops(views);
426
431
  return {
@@ -428,6 +433,15 @@ export class MergedExporter {
428
433
  count: plan.droppedCount,
429
434
  };
430
435
  }
436
+ /** One written rel per single-valued inverse (#5471, #5726, #5774): record this model's claims, stripping or folding ones already made. */
437
+ claimParents(model, plan, visibility, completeIndex, dedupe, setup, claims = setup.parentClaims) {
438
+ const hidden = visibility?.hiddenProductIds;
439
+ claimInverses({
440
+ ...plan, dataStore: model.dataStore, idOffset: setup.modelOffsets.get(model.id), dedupe,
441
+ isIncluded: id => visibility === null || visibility.included.has(id),
442
+ isEmitted: id => !plan.droppedContainerIds?.has(id) && (hidden === undefined || (!hidden.has(id) && completeIndex.has(id))),
443
+ }, claims, this.findEntitiesByType.bind(this), this.extractStepAttribute.bind(this));
444
+ }
431
445
  /** Fold a model's dropped containers into its plan: the container lines are
432
446
  * skipped outright, and {@link renderEntity} narrows every line naming one. */
433
447
  applyContainerDrops(plan, dropped) {
@@ -482,7 +496,7 @@ export class MergedExporter {
482
496
  firstModelContext: resolvePrimaryContextState(firstModel.dataStore, firstModelInfraMap.get('IFCGEOMETRICREPRESENTATIONSUBCONTEXT') ?? [], primaryScale),
483
497
  firstProjectIds: this.findEntitiesByType(firstModel.dataStore, 'IFCPROJECT'),
484
498
  spatialLookup: this.buildSpatialLookup(firstModel.dataStore),
485
- primaryAggregatePairs: collectRelAggregatePairs(firstModel.dataStore, this.findEntitiesByType.bind(this), this.extractStepAttribute.bind(this), firstModelOffset),
499
+ parentClaims: new InverseClaims(options.schema || 'IFC4'),
486
500
  primaryScale,
487
501
  primaryAreaScale: this.resolveDerivedUnitScale(firstModel.dataStore, 'AREAUNIT', primaryScale, 2),
488
502
  primaryVolumeScale: this.resolveDerivedUnitScale(firstModel.dataStore, 'VOLUMEUNIT', primaryScale, 3),
@@ -670,14 +684,9 @@ export class MergedExporter {
670
684
  const sharedRemap = new Map();
671
685
  const skipEntityIds = new Set();
672
686
  const guidRewrite = new Map();
673
- const relAggregateStrip = new Map();
687
+ const relMemberStrip = new Map();
674
688
  // One cheap pass to read each rooted entity's GlobalId (first attribute).
675
- const localGuids = new Map();
676
- for (const [id, ref] of completeIndex) {
677
- const guid = extractGlobalIdFast(ref, source);
678
- if (guid !== null)
679
- localGuids.set(id, guid);
680
- }
689
+ const localGuids = readLocalGuids(completeIndex, source);
681
690
  if (!isFirstModel && compatible) {
682
691
  // Remap this model's IfcProject references → first model's IfcProject.
683
692
  const projectIds = this.findEntitiesByType(model.dataStore, 'IFCPROJECT');
@@ -693,9 +702,6 @@ export class MergedExporter {
693
702
  // Under normalize, this model's raw elevations are in its own unit, so the
694
703
  // elevation match is done in the primary unit (rawElevation * lengthFactor).
695
704
  this.unifySpatialEntities(model.dataStore, setup.spatialLookup, setup.firstModelOffset, lengthFactor, sharedRemap, skipEntityIds, setup);
696
- // Skip IfcRelAggregates that become fully redundant after unification,
697
- // and strip individually-duplicated members from ones only partially so.
698
- skipRedundantRelAggregates(model.dataStore, sharedRemap, skipEntityIds, relAggregateStrip, setup.primaryAggregatePairs, this.findEntitiesByType.bind(this), this.extractStepAttribute.bind(this));
699
705
  }
700
706
  if (!isFirstModel) {
701
707
  // GlobalId reconciliation against everything emitted by earlier models.
@@ -727,7 +733,7 @@ export class MergedExporter {
727
733
  }
728
734
  }
729
735
  }
730
- return { sharedRemap, skipEntityIds, guidRewrite, localGuids, relAggregateStrip };
736
+ return { sharedRemap, skipEntityIds, guidRewrite, localGuids, relMemberStrip };
731
737
  }
732
738
  /**
733
739
  * Render one source entity into its final STEP line: apply id offset + shared
@@ -782,14 +788,11 @@ export class MergedExporter {
782
788
  return null;
783
789
  entityText = kept;
784
790
  }
785
- // Drop RelatedObjects members a partially redundant IFCRELAGGREGATES
786
- // already shares with the first model's OWN relationship to the same
787
- // (now-unified) RelatingObject — see skipRedundantRelAggregates /
788
- // applyRelAggregateStrip (merged-rel-aggregates.ts). Runs in LOCAL id
789
- // space, before the remap below. `null` (the filter would withhold the
790
- // whole line) propagates like the two passes above: every edge the line
791
- // declared already exists in the primary model.
792
- const stripped = applyRelAggregateStrip(entityText, localId, plan.relAggregateStrip);
791
+ // Drop the claimed members of a partially redundant rel that already fill
792
+ // that single-valued inverse in the output (#5471, #5726) — see
793
+ // claimInverses / applyRelMemberStrip. Runs in LOCAL id
794
+ // space, before the remap below. `null` propagates like the passes above.
795
+ const stripped = applyRelMemberStrip(entityText, localId, plan.relMemberStrip);
793
796
  if (stripped === null)
794
797
  return null;
795
798
  entityText = stripped;