@ifc-lite/export 4.11.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/anonymize-placement.d.ts +0 -34
  2. package/dist/anonymize-placement.d.ts.map +1 -1
  3. package/dist/anonymize-placement.js +58 -27
  4. package/dist/anonymize-placement.js.map +1 -1
  5. package/dist/declared-property-type.d.ts.map +1 -1
  6. package/dist/declared-property-type.js +3 -2
  7. package/dist/declared-property-type.js.map +1 -1
  8. package/dist/effective-index.d.ts.map +1 -1
  9. package/dist/effective-index.js +12 -5
  10. package/dist/effective-index.js.map +1 -1
  11. package/dist/ifc5-exporter.d.ts.map +1 -1
  12. package/dist/ifc5-exporter.js +5 -4
  13. package/dist/ifc5-exporter.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/lod-geometry-types.d.ts +5 -0
  19. package/dist/lod-geometry-types.d.ts.map +1 -1
  20. package/dist/lod0-generator.d.ts.map +1 -1
  21. package/dist/lod0-generator.js +52 -18
  22. package/dist/lod0-generator.js.map +1 -1
  23. package/dist/lod1-generator.d.ts.map +1 -1
  24. package/dist/lod1-generator.js +4 -1
  25. package/dist/lod1-generator.js.map +1 -1
  26. package/dist/merged-empty-containers-refs.d.ts.map +1 -1
  27. package/dist/merged-empty-containers-refs.js +5 -3
  28. package/dist/merged-empty-containers-refs.js.map +1 -1
  29. package/dist/merged-exporter.d.ts.map +1 -1
  30. package/dist/merged-exporter.js +31 -31
  31. package/dist/merged-exporter.js.map +1 -1
  32. package/dist/merged-remap.d.ts +0 -8
  33. package/dist/merged-remap.d.ts.map +1 -1
  34. package/dist/merged-remap.js +7 -17
  35. package/dist/merged-remap.js.map +1 -1
  36. package/dist/obj.d.ts +8 -8
  37. package/dist/obj.js +8 -8
  38. package/dist/parquet-exporter.d.ts.map +1 -1
  39. package/dist/parquet-exporter.js +14 -2
  40. package/dist/parquet-exporter.js.map +1 -1
  41. package/dist/property-value-serialization.d.ts.map +1 -1
  42. package/dist/property-value-serialization.js +7 -3
  43. package/dist/property-value-serialization.js.map +1 -1
  44. package/dist/reference-collector.d.ts.map +1 -1
  45. package/dist/reference-collector.js +17 -16
  46. package/dist/reference-collector.js.map +1 -1
  47. package/dist/retype.d.ts.map +1 -1
  48. package/dist/retype.js +12 -11
  49. package/dist/retype.js.map +1 -1
  50. package/dist/schema-conversion-loss-report.d.ts +2 -1
  51. package/dist/schema-conversion-loss-report.d.ts.map +1 -1
  52. package/dist/schema-conversion-loss-report.js +20 -11
  53. package/dist/schema-conversion-loss-report.js.map +1 -1
  54. package/dist/schema-converter-mep.d.ts +2 -0
  55. package/dist/schema-converter-mep.d.ts.map +1 -0
  56. package/dist/schema-converter-mep.js +9 -0
  57. package/dist/schema-converter-mep.js.map +1 -0
  58. package/dist/schema-converter-mep.json +96 -0
  59. package/dist/schema-converter-product-proxy.d.ts +25 -0
  60. package/dist/schema-converter-product-proxy.d.ts.map +1 -0
  61. package/dist/schema-converter-product-proxy.js +33 -0
  62. package/dist/schema-converter-product-proxy.js.map +1 -0
  63. package/dist/schema-converter-renames.d.ts +32 -0
  64. package/dist/schema-converter-renames.d.ts.map +1 -0
  65. package/dist/schema-converter-renames.js +60 -0
  66. package/dist/schema-converter-renames.js.map +1 -0
  67. package/dist/schema-converter.d.ts +8 -16
  68. package/dist/schema-converter.d.ts.map +1 -1
  69. package/dist/schema-converter.js +44 -71
  70. package/dist/schema-converter.js.map +1 -1
  71. package/dist/schema-style-flatten.d.ts +82 -0
  72. package/dist/schema-style-flatten.d.ts.map +1 -0
  73. package/dist/schema-style-flatten.js +245 -0
  74. package/dist/schema-style-flatten.js.map +1 -0
  75. package/dist/step-argument-parser.d.ts +7 -2
  76. package/dist/step-argument-parser.d.ts.map +1 -1
  77. package/dist/step-argument-parser.js +69 -62
  78. package/dist/step-argument-parser.js.map +1 -1
  79. package/dist/step-attribute-mutations.d.ts.map +1 -1
  80. package/dist/step-attribute-mutations.js +21 -22
  81. package/dist/step-attribute-mutations.js.map +1 -1
  82. package/dist/step-export-contexts.d.ts +1 -1
  83. package/dist/step-export-contexts.d.ts.map +1 -1
  84. package/dist/step-export-contexts.js +4 -1
  85. package/dist/step-export-contexts.js.map +1 -1
  86. package/dist/step-export-types.d.ts +2 -0
  87. package/dist/step-export-types.d.ts.map +1 -1
  88. package/dist/step-export-types.js.map +1 -1
  89. package/dist/step-exporter.d.ts.map +1 -1
  90. package/dist/step-exporter.js +13 -13
  91. package/dist/step-exporter.js.map +1 -1
  92. package/dist/step-outer-args.d.ts +10 -0
  93. package/dist/step-outer-args.d.ts.map +1 -1
  94. package/dist/step-outer-args.js +29 -12
  95. package/dist/step-outer-args.js.map +1 -1
  96. package/dist/step-overlay-entities.d.ts +2 -0
  97. package/dist/step-overlay-entities.d.ts.map +1 -1
  98. package/dist/step-overlay-entities.js +43 -11
  99. package/dist/step-overlay-entities.js.map +1 -1
  100. package/dist/step-pass-builder.d.ts.map +1 -1
  101. package/dist/step-pass-builder.js +2 -0
  102. package/dist/step-pass-builder.js.map +1 -1
  103. package/dist/step-property-set-index.d.ts.map +1 -1
  104. package/dist/step-property-set-index.js +8 -3
  105. package/dist/step-property-set-index.js.map +1 -1
  106. package/dist/step-property-set-readers.d.ts +6 -0
  107. package/dist/step-property-set-readers.d.ts.map +1 -1
  108. package/dist/step-property-set-readers.js +53 -14
  109. package/dist/step-property-set-readers.js.map +1 -1
  110. package/dist/step-property-sets.d.ts +14 -0
  111. package/dist/step-property-sets.d.ts.map +1 -1
  112. package/dist/step-property-sets.js +25 -8
  113. package/dist/step-property-sets.js.map +1 -1
  114. package/dist/step-record-frame.d.ts +69 -0
  115. package/dist/step-record-frame.d.ts.map +1 -0
  116. package/dist/step-record-frame.js +136 -0
  117. package/dist/step-record-frame.js.map +1 -0
  118. package/dist/step-ref-scan.d.ts +8 -0
  119. package/dist/step-ref-scan.d.ts.map +1 -1
  120. package/dist/step-ref-scan.js +29 -8
  121. package/dist/step-ref-scan.js.map +1 -1
  122. package/dist/step-serialization.d.ts +16 -4
  123. package/dist/step-serialization.d.ts.map +1 -1
  124. package/dist/step-serialization.js +39 -13
  125. package/dist/step-serialization.js.map +1 -1
  126. package/dist/step-slot-grammar.d.ts +21 -18
  127. package/dist/step-slot-grammar.d.ts.map +1 -1
  128. package/dist/step-slot-grammar.js +210 -177
  129. package/dist/step-slot-grammar.js.map +1 -1
  130. package/dist/step-source-iteration.d.ts +1 -1
  131. package/dist/step-source-iteration.d.ts.map +1 -1
  132. package/dist/step-source-iteration.js +27 -3
  133. package/dist/step-source-iteration.js.map +1 -1
  134. package/dist/unit-normalize.d.ts.map +1 -1
  135. package/dist/unit-normalize.js +13 -20
  136. package/dist/unit-normalize.js.map +1 -1
  137. package/dist/zero-content.d.ts +21 -3
  138. package/dist/zero-content.d.ts.map +1 -1
  139. package/dist/zero-content.js +35 -3
  140. package/dist/zero-content.js.map +1 -1
  141. package/package.json +8 -8
@@ -23,17 +23,6 @@ export type IfcSchemaVersion = 'IFC2X3' | 'IFC4' | 'IFC4X3' | 'IFC5';
23
23
  */
24
24
  export declare function convertEntityType(entityType: string, fromSchema: IfcSchemaVersion, toSchema: IfcSchemaVersion): string;
25
25
  export declare function attrNameTable(schema: IfcSchemaVersion): Map<string, readonly string[]> | null;
26
- /**
27
- * True when `shorter` is a STRICT prefix of `longer` by attribute name — i.e.
28
- * the longer form only *appended* attributes to the shorter one. Both the
29
- * trailing-`$` padding (upgrade) and the tail trim (downgrade) are only safe
30
- * then; many entities insert/reorder attributes mid-list (e.g.
31
- * IfcMaterialProperties, IfcApproval, IfcTask), where padding or trimming would
32
- * shift values into the wrong slots.
33
- *
34
- * Callers pass the shorter schema's list first, whichever direction they run in.
35
- */
36
- export declare function isStrictAttrPrefix(shorter: readonly string[], longer: readonly string[]): boolean;
37
26
  /**
38
27
  * Convert a raw STEP entity line from one schema version to another.
39
28
  *
@@ -64,12 +53,15 @@ export declare function isStrictAttrPrefix(shorter: readonly string[], longer: r
64
53
  */
65
54
  export declare function convertStepLine(line: string, fromSchema: IfcSchemaVersion, toSchema: IfcSchemaVersion, random?: RandomSource, slots?: Ifc2x3SlotFill, withheldRefIds?: ReadonlySet<number>, ifc4Slots?: Ifc4SlotCheck, enums?: EnumReconciliation): string | null;
66
55
  /**
67
- * Check if an entity type should be skipped for the target schema.
68
- * Some IFC4X3 types (alignment, positioning) have no valid STEP representation
69
- * in older schemas even as proxies.
56
+ * Check if an entity type should be skipped for the target schema: these
57
+ * IFC4X3 types have no STEP representation in IFC2X3 or IFC4, so they are
58
+ * replaced by a synthesised IFCPROXY. IFC4X3 and IFC5 keep them.
70
59
  *
71
- * Alignment entities are valid in IFC4X3 and IFC5, so they are only skipped
72
- * when targeting older schemas (IFC2X3, IFC4).
60
+ * The five positioning types used to be RENAMED to IFCPROXY in
61
+ * `IFC4X3_TO_IFC4`, which kept their own attribute list under the new name:
62
+ * `IFCALIGNMENT(…,.ROAD.)` became an 8-attribute IFCPROXY with an alignment
63
+ * enum in `ProxyType`, where IfcProxy takes 9 (#7683, EXPORT-MERGE-8; Rust
64
+ * twin `should_skip_entity`).
73
65
  */
74
66
  export declare function shouldSkipEntity(entityType: string, toSchema: IfcSchemaVersion): boolean;
75
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKxE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAgIrE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CAQR;AAiED,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAU7F;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAMjG;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,CAAC,EAAE,YAAY,EACrB,KAAK,CAAC,EAAE,cAAc,EACtB,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EACpC,SAAS,CAAC,EAAE,aAAa,EACzB,KAAK,CAAC,EAAE,kBAAkB,GACzB,MAAM,GAAG,IAAI,CAQf;AA4HD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAexF;AAkBD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CAqBR"}
1
+ {"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKxE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAMtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AA0HrE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CASR;AAgED,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAU7F;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,CAAC,EAAE,YAAY,EACrB,KAAK,CAAC,EAAE,cAAc,EACtB,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EACpC,SAAS,CAAC,EAAE,aAAa,EACzB,KAAK,CAAC,EAAE,kBAAkB,GACzB,MAAM,GAAG,IAAI,CAQf;AAmID;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAExF;AAcD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CAqBR"}
@@ -17,6 +17,9 @@ import { BY_NAME_ATTR_REMAP_TYPES, remapRenamedAttributesByName } from './schema
17
17
  import { splitTopLevelStepArguments } from './step-argument-parser.js';
18
18
  import { Ifc2x3SlotFill } from './schema-converter-ifc2x3-slots.js';
19
19
  import { referencesAnyExpressId } from './step-ref-scan.js';
20
+ import { productProxy } from './schema-converter-product-proxy.js';
21
+ import { MEP_IFC2X3_TYPES } from './schema-converter-mep.js';
22
+ import { isStrictAttrPrefix } from './schema-converter-renames.js';
20
23
  export { computeWithheldRefIds } from './schema-untranslatable.js';
21
24
  /**
22
25
  * Entity type name mappings between schema versions.
@@ -38,7 +41,6 @@ const IFC2X3_TO_IFC4 = new Map([
38
41
  ]);
39
42
  // ─── IFC4 → IFC2X3 type renames (reverse) ──────────────────────────────────
40
43
  const IFC4_TO_IFC2X3 = new Map([
41
- ['IFCELECTRICDISTRIBUTIONBOARD', 'IFCELECTRICDISTRIBUTIONPOINT'],
42
44
  ['IFCBURNERTYPE', 'IFCGASTERMINALTYPE'],
43
45
  // Types added in IFC4 that have no IFC2X3 equivalent → proxy
44
46
  ['IFCCHIMNEY', 'IFCBUILDINGELEMENTPROXY'],
@@ -128,11 +130,6 @@ const IFC4X3_TO_IFC4 = new Map([
128
130
  ['IFCTRACKELEMENT', 'IFCBUILDINGELEMENTPROXY'],
129
131
  ['IFCKERB', 'IFCBUILDINGELEMENTPROXY'],
130
132
  ['IFCCOURSE', 'IFCBUILDINGELEMENTPROXY'],
131
- ['IFCLINEARPOSITIONINGELEMENT', 'IFCPROXY'],
132
- ['IFCPOSITIONINGELEMENT', 'IFCPROXY'],
133
- ['IFCREFERENT', 'IFCPROXY'],
134
- ['IFCALIGNMENT', 'IFCPROXY'],
135
- ['IFCLINEARELEMENT', 'IFCPROXY'],
136
133
  ['IFCCONVEYORSEGMENT', 'IFCFLOWSEGMENT'],
137
134
  ['IFCLIQUIDTERMINAL', 'IFCFLOWTERMINAL'],
138
135
  ['IFCMOBILETELECOMMUNICATIONSAPPLIANCE', 'IFCCOMMUNICATIONSAPPLIANCE'],
@@ -151,7 +148,9 @@ export function convertEntityType(entityType, fromSchema, toSchema) {
151
148
  if (fromSchema === toSchema)
152
149
  return entityType;
153
150
  const upper = entityType.toUpperCase();
154
- // Get the conversion map for this direction
151
+ const mepTarget = toSchema === 'IFC2X3' ? MEP_IFC2X3_TYPES.get(upper) : undefined;
152
+ if (mepTarget)
153
+ return mepTarget;
155
154
  const map = getConversionMap(fromSchema, toSchema);
156
155
  return map?.get(upper) ?? upper;
157
156
  }
@@ -160,7 +159,6 @@ export function convertEntityType(entityType, fromSchema, toSchema) {
160
159
  * For multi-step conversions (e.g., IFC2X3 → IFC4X3), chains maps.
161
160
  */
162
161
  function getConversionMap(from, to) {
163
- // Direct conversions
164
162
  if (from === 'IFC2X3' && to === 'IFC4')
165
163
  return IFC2X3_TO_IFC4;
166
164
  if (from === 'IFC4' && to === 'IFC2X3')
@@ -224,25 +222,6 @@ export function attrNameTable(schema) {
224
222
  ATTR_NAME_TABLES.set(schema, table);
225
223
  return table;
226
224
  }
227
- /**
228
- * True when `shorter` is a STRICT prefix of `longer` by attribute name — i.e.
229
- * the longer form only *appended* attributes to the shorter one. Both the
230
- * trailing-`$` padding (upgrade) and the tail trim (downgrade) are only safe
231
- * then; many entities insert/reorder attributes mid-list (e.g.
232
- * IfcMaterialProperties, IfcApproval, IfcTask), where padding or trimming would
233
- * shift values into the wrong slots.
234
- *
235
- * Callers pass the shorter schema's list first, whichever direction they run in.
236
- */
237
- export function isStrictAttrPrefix(shorter, longer) {
238
- if (shorter.length >= longer.length)
239
- return false;
240
- for (let i = 0; i < shorter.length; i++) {
241
- if (shorter[i] !== longer[i])
242
- return false;
243
- }
244
- return true;
245
- }
246
225
  /** Count top-level (comma-separated) STEP attributes, respecting nested
247
226
  * parentheses and single-quoted strings. Empty list → 0. */
248
227
  function requireTopLevelAttributes(attrsRaw) {
@@ -296,21 +275,19 @@ export function convertStepLine(line, fromSchema, toSchema, random, slots, withh
296
275
  /** {@link convertStepLine} before the IFC2X3 required-slot fills, between two
297
276
  * different schemas. */
298
277
  function convertRecord(line, fromSchema, toSchema, random, withheldRefIds) {
299
- // Parse: #ID=TYPE(attrs); — tolerate whitespace around `=` and before the
300
- // type (some exporters, e.g. Tekla, write `#34498= IFCOPENINGELEMENT(...)`).
301
- // Without this those lines passed through unconverted, so neither type renames
302
- // nor attribute-count adjustment applied and the output stayed schema-invalid.
303
- const match = line.match(/^\s*(#\d+=)\s*(\w+)\((.*)?\);?\s*$/);
278
+ // Parse: #ID=TYPE(attrs); — tolerate whitespace around `=` and `(` (Tekla's
279
+ // `#34498= IFCOPENINGELEMENT(`, Viadotto_Acerno's `#159655 = IFC...(`, #7742).
280
+ // Otherwise the line passed through unconverted under the target header.
281
+ const match = line.match(/^\s*(#\d+)\s*=\s*(\w+)\s*\((.*)?\);?\s*$/);
304
282
  if (!match)
305
283
  return line; // not a STEP entity line, pass through
306
- const prefix = match[1]; // "#123="
284
+ const prefix = `${match[1]}=`; // "#123="
307
285
  const entityType = match[2].toUpperCase();
308
286
  const attrsRaw = match[3] ?? '';
309
287
  // Validate before choosing any conversion branch. A malformed slot list
310
288
  // must not still receive a type rename, proxy replacement, trim, or padding:
311
289
  // that would partially convert a record whose positions are untrustworthy.
312
- requireTopLevelAttributes(attrsRaw);
313
- // Convert entity type
290
+ const args = requireTopLevelAttributes(attrsRaw);
314
291
  const newType = convertEntityType(entityType, fromSchema, toSchema);
315
292
  // A record whose attribute list references an id this export is OMITTING
316
293
  // (`withheldRefIds`, #4206) cannot carry that reference forward, no matter
@@ -321,8 +298,8 @@ function convertRecord(line, fromSchema, toSchema, random, withheldRefIds) {
321
298
  if (withheldRefIds && withheldRefIds.size > 0 && referencesAnyExpressId(attrsRaw, withheldRefIds)) {
322
299
  return resolveUnrepresentedEntity(prefix, entityType, attrsRaw, toSchema, random, withheldRefIds !== undefined);
323
300
  }
324
- // Replace entities that have no valid representation in the target schema
325
- // with IFCPROXY placeholders to preserve EXPRESS IDs and prevent dangling references
301
+ // No representation in the target schema: an IFCPROXY keeping their
302
+ // IfcProduct attributes (`productProxy`) preserves ids and references.
326
303
  if (shouldSkipEntity(newType, toSchema)) {
327
304
  // Derive the placeholder's GlobalId from the source line rather than
328
305
  // minting a random one (#2733). Every downgraded entity used to get a
@@ -349,7 +326,7 @@ function convertRecord(line, fromSchema, toSchema, random, withheldRefIds) {
349
326
  const guid = random
350
327
  ? generateIfcGuid(random)
351
328
  : deterministicGlobalId(`ifcproxy:${prefix}${entityType}(${attrsRaw})`);
352
- return `${prefix}IFCPROXY('${guid}',$,'${entityType}',$,$,$,$,.NOTDEFINED.,$);`;
329
+ return productProxy(prefix, guid, entityType, args);
353
330
  }
354
331
  // Reconcile the attribute list against the target schema. WHICH WAY it moves
355
332
  // is decided by the strict attribute-NAME prefix relation alone, never by the
@@ -382,21 +359,24 @@ function convertRecord(line, fromSchema, toSchema, random, withheldRefIds) {
382
359
  // a type entirely unknown to `targetTable` (not merely a strict-prefix
383
360
  // attribute mismatch, handled below) has no representation in `toSchema` at
384
361
  // all — see `resolveUnrepresentedEntity` for why it can't just pass through.
385
- if (srcAttrs && targetTable && !tgtAttrs) {
362
+ // On IFC2X3 even with no source entry, as Rust's `has_representation`: a
363
+ // non-entity head (`#1=IFCLABEL('x');`) fails closed (#7683, D3).
364
+ if (targetTable && !tgtAttrs && (toSchema === 'IFC2X3' || (toSchema === 'IFC4' && fromSchema === 'IFC4X3' && srcAttrs))) {
386
365
  return resolveUnrepresentedEntity(prefix, entityType, attrsRaw, toSchema, random, withheldRefIds !== undefined);
387
366
  }
388
367
  if (srcAttrs && tgtAttrs) {
389
- if (isStrictAttrPrefix(tgtAttrs, srcAttrs)) {
390
- finalAttrs = trimAttributes(attrsRaw, tgtAttrs.length);
368
+ if (isStrictAttrPrefix(tgtAttrs, srcAttrs, entityType)) {
369
+ finalAttrs = trimAttributes(attrsRaw, args, tgtAttrs.length);
391
370
  }
392
- else if (isStrictAttrPrefix(srcAttrs, tgtAttrs)) {
393
- const currentCount = requireTopLevelAttributes(finalAttrs).length;
371
+ else if (isStrictAttrPrefix(srcAttrs, tgtAttrs, entityType)) {
372
+ const currentCount = args.length;
394
373
  if (currentCount > 0 && currentCount < tgtAttrs.length) {
395
374
  finalAttrs = `${finalAttrs}${',$'.repeat(tgtAttrs.length - currentCount)}`;
396
375
  }
397
376
  }
398
- else if (entityType !== newType && BY_NAME_ATTR_REMAP_TYPES.has(entityType)) {
399
- // Neither list is a prefix of the other; see `BY_NAME_ATTR_REMAP_TYPES`.
377
+ else if (entityType !== newType && (BY_NAME_ATTR_REMAP_TYPES.has(entityType)
378
+ || (toSchema === 'IFC2X3' && MEP_IFC2X3_TYPES.has(entityType)))) {
379
+ // MEP controls need ControlElementId, never the source PredefinedType (#8019).
400
380
  const remapped = remapRenamedAttributesByName(attrsRaw, srcAttrs, tgtAttrs);
401
381
  if (remapped === null)
402
382
  throw new Error('Schema conversion refused an invalid STEP argument list.');
@@ -405,43 +385,36 @@ function convertRecord(line, fromSchema, toSchema, random, withheldRefIds) {
405
385
  }
406
386
  return `${prefix}${newType}(${finalAttrs});`;
407
387
  }
388
+ /** IFC4X3 alignment and positioning types replaced by a synthesised IFCPROXY below IFC4X3. */
389
+ const SKIP_TYPES = new Set([
390
+ 'IFCALIGNMENTCANT', 'IFCALIGNMENTHORIZONTAL', 'IFCALIGNMENTVERTICAL', 'IFCALIGNMENTSEGMENT',
391
+ 'IFCALIGNMENT', 'IFCREFERENT', 'IFCLINEARELEMENT', 'IFCPOSITIONINGELEMENT', 'IFCLINEARPOSITIONINGELEMENT',
392
+ ]);
408
393
  /**
409
- * Check if an entity type should be skipped for the target schema.
410
- * Some IFC4X3 types (alignment, positioning) have no valid STEP representation
411
- * in older schemas even as proxies.
394
+ * Check if an entity type should be skipped for the target schema: these
395
+ * IFC4X3 types have no STEP representation in IFC2X3 or IFC4, so they are
396
+ * replaced by a synthesised IFCPROXY. IFC4X3 and IFC5 keep them.
412
397
  *
413
- * Alignment entities are valid in IFC4X3 and IFC5, so they are only skipped
414
- * when targeting older schemas (IFC2X3, IFC4).
398
+ * The five positioning types used to be RENAMED to IFCPROXY in
399
+ * `IFC4X3_TO_IFC4`, which kept their own attribute list under the new name:
400
+ * `IFCALIGNMENT(…,.ROAD.)` became an 8-attribute IFCPROXY with an alignment
401
+ * enum in `ProxyType`, where IfcProxy takes 9 (#7683, EXPORT-MERGE-8; Rust
402
+ * twin `should_skip_entity`).
415
403
  */
416
404
  export function shouldSkipEntity(entityType, toSchema) {
417
- // Alignment entities are native to IFC4X3 and IFC5 — preserve them
418
- if (toSchema === 'IFC4X3' || toSchema === 'IFC5') {
419
- return false;
420
- }
421
- // For older schemas, these alignment types have no meaningful representation
422
- const skipTypes = new Set([
423
- 'IFCALIGNMENTCANT',
424
- 'IFCALIGNMENTHORIZONTAL',
425
- 'IFCALIGNMENTVERTICAL',
426
- 'IFCALIGNMENTSEGMENT',
427
- ]);
428
- return skipTypes.has(entityType);
405
+ return toSchema !== 'IFC4X3' && toSchema !== 'IFC5' && SKIP_TYPES.has(entityType);
429
406
  }
430
407
  /**
431
408
  * Trim a STEP attribute list to a maximum number of attributes.
432
409
  *
433
- * Parses the attribute string respecting STEP nesting (parentheses, strings)
434
- * and returns only the first `maxCount` attributes.
410
+ * Keeps the first `maxCount` of `args`, the record's already-validated split
411
+ * (one split per record, #7683).
435
412
  */
436
- function trimAttributes(attrsRaw, maxCount) {
413
+ function trimAttributes(attrsRaw, args, maxCount) {
437
414
  if (!attrsRaw.trim())
438
415
  return attrsRaw;
439
- // The scan below only tests its budget AFTER pushing an attribute, so a zero
440
- // budget would keep the first one. An entity with no attributes in the target
441
- // schema keeps none.
442
- if (maxCount <= 0)
443
- return '';
444
- return requireTopLevelAttributes(attrsRaw).slice(0, maxCount).join(',');
416
+ // An entity with no attributes in the target schema keeps none.
417
+ return args.slice(0, Math.max(0, maxCount)).join(',');
445
418
  }
446
419
  /**
447
420
  * Check if a conversion between two schema versions requires entity type changes.
@@ -1 +1 @@
1
- {"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * `IfcPresentationStyleAssignment` flattening for an IFC2X3 or IFC4 source
3
+ * converted to IFC4X3 (#7742, D57).
4
+ *
5
+ * IFC4X3 dropped the assignment: `IfcStyledItem.Styles` takes
6
+ * `IfcPresentationStyle` members directly. Refusing it (non-rooted, absent from
7
+ * the IFC4X3 registry) would fail most real IFC2X3 files, so the conversion
8
+ * flattens instead: every `Styles` entry of an `IfcStyledItem` (or subtype)
9
+ * naming an assignment is replaced by that assignment's own members, in order,
10
+ * each kept once, and the assignment records are not written.
11
+ *
12
+ * Complete by the schemas' own rules: in IFC2X3 and IFC4 the only legal
13
+ * referrer of an assignment is `IfcStyledItem.Styles`. It is a pre-pass because
14
+ * an assignment may follow the styled item that names it. Twin of
15
+ * `rust/export/src/schema_style_flatten.rs`, pinned for both by
16
+ * `rust/export/tests/fixtures/schema_style_flatten_vectors.json`.
17
+ */
18
+ import type { IfcDataStore } from '@ifc-lite/parser';
19
+ import { convertStepLine, type IfcSchemaVersion } from './schema-converter.js';
20
+ export declare class StyleFlatten {
21
+ private readonly members;
22
+ /**
23
+ * Styled items whose `Styles` names records only, by those ids: the ones
24
+ * that can flatten to nothing. Read from the store once an assignment holds
25
+ * nothing IFC4X3 can name (`collected`); noted lines always.
26
+ */
27
+ private readonly styled;
28
+ private collected;
29
+ /**
30
+ * Styled items whose flattened `Styles` is empty (`SET [1:?]` in IFC4X3, so
31
+ * `()` is not a file): not written, and every reference to one is removed (a
32
+ * list member) or written `$` (a single slot).
33
+ */
34
+ private emptied;
35
+ /** True for the one conversion that flattens: IFC2X3 or IFC4 source, IFC4X3 target. */
36
+ static applies(from: IfcSchemaVersion, to: IfcSchemaVersion): boolean;
37
+ /** An empty table for a conversion that flattens; undefined for one that does not. */
38
+ static create(from: IfcSchemaVersion, to: IfcSchemaVersion): StyleFlatten | undefined;
39
+ /** Register an assignment record by its text (source, created, copied or edited; the last record with an id wins). */
40
+ note(expressId: number, text: string): void;
41
+ /** {@link note}, for any record line: an assignment or a styled item is registered. Call {@link settle} after. */
42
+ noteLine(line: string): void;
43
+ /** From record lines (assignments and styled items are read, the rest ignored). */
44
+ static fromRecords(records: Iterable<string>): StyleFlatten;
45
+ /** Read every assignment of a parsed store; undefined when the conversion does not flatten. */
46
+ static fromStore(store: Pick<IfcDataStore, 'entityIndex' | 'source'>, from: IfcSchemaVersion, to: IfcSchemaVersion): StyleFlatten | undefined;
47
+ /**
48
+ * Edited source assignments: each id's record text after the session's
49
+ * edits (`edited(id)`, null when unchanged), so a styled item flattens to
50
+ * the members the user set, not the source ones.
51
+ */
52
+ noteEdited(store: Pick<IfcDataStore, 'entityIndex' | 'source'>, edited: (id: number, text: string) => string | null): void;
53
+ /** Decide which styled items flatten to nothing, reading the store's styled items once an assignment holds nothing. */
54
+ settle(store?: Pick<IfcDataStore, 'entityIndex' | 'source'>): void;
55
+ /** A record that is not written: an assignment, or a styled item whose `Styles` flattens to nothing. */
56
+ drops(expressId: number): boolean;
57
+ /**
58
+ * The flattened `Styles` members, or null when this is not a styled item
59
+ * naming an assignment. `args` is the validated split.
60
+ */
61
+ private flattened;
62
+ /** `arg` without its references to an emptied styled item; null when `arg` is one. */
63
+ private strip;
64
+ /**
65
+ * The attribute list with its `Styles` entries flattened and its references
66
+ * to an emptied styled item removed; `'drop'` when the record is a styled
67
+ * item left with no style; null when nothing changes. `args` is the validated split.
68
+ */
69
+ flatten(entityType: string, args: readonly string[]): string | 'drop' | null;
70
+ /**
71
+ * One record through the flatten: null for an assignment or an emptied
72
+ * styled item (not written), the rewritten line for a record naming either,
73
+ * else `line`.
74
+ */
75
+ apply(line: string): string | null;
76
+ }
77
+ /**
78
+ * `convertStepLine`, with `styles` applied first (see {@link StyleFlatten.apply}).
79
+ * Without `styles` it is `convertStepLine` itself.
80
+ */
81
+ export declare function convertStepLineFlattening(styles: StyleFlatten | undefined, ...args: Parameters<typeof convertStepLine>): string | null;
82
+ //# sourceMappingURL=schema-style-flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-style-flatten.d.ts","sourceRoot":"","sources":["../src/schema-style-flatten.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA8B/E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,SAAS,CAAS;IAC1B;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAqB;IAEpC,uFAAuF;IACvF,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,GAAG,OAAO;IAIrE,sFAAsF;IACtF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,GAAG,YAAY,GAAG,SAAS;IAIrF,sHAAsH;IACtH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAU3C,kHAAkH;IAClH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAa5B,mFAAmF;IACnF,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,YAAY;IAQ3D,+FAA+F;IAC/F,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,QAAQ,CAAC,EACnD,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,GACnB,YAAY,GAAG,SAAS;IAa3B;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI;IAY1H,uHAAuH;IACvH,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,QAAQ,CAAC,GAAG,IAAI;IAkBlE,wGAAwG;IACxG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACH,OAAO,CAAC,SAAS;IAkBjB,sFAAsF;IACtF,OAAO,CAAC,KAAK;IAYb;;;;OAIG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAsB5E;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAUnC;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,GAC1C,MAAM,GAAG,IAAI,CAIf"}