@ifc-lite/export 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/declared-property-type.d.ts +19 -8
  2. package/dist/declared-property-type.d.ts.map +1 -1
  3. package/dist/declared-property-type.js +31 -9
  4. package/dist/declared-property-type.js.map +1 -1
  5. package/dist/merged-exporter.d.ts +19 -0
  6. package/dist/merged-exporter.d.ts.map +1 -1
  7. package/dist/merged-exporter.js +1 -1
  8. package/dist/merged-exporter.js.map +1 -1
  9. package/dist/parquet-exporter.d.ts +1 -3
  10. package/dist/parquet-exporter.d.ts.map +1 -1
  11. package/dist/parquet-exporter.js +1 -0
  12. package/dist/parquet-exporter.js.map +1 -1
  13. package/dist/property-value-serialization.d.ts +54 -0
  14. package/dist/property-value-serialization.d.ts.map +1 -0
  15. package/dist/property-value-serialization.js +134 -0
  16. package/dist/property-value-serialization.js.map +1 -0
  17. package/dist/reference-collector.d.ts +20 -0
  18. package/dist/reference-collector.d.ts.map +1 -1
  19. package/dist/reference-collector.js +45 -112
  20. package/dist/reference-collector.js.map +1 -1
  21. package/dist/schema-converter.d.ts.map +1 -1
  22. package/dist/schema-converter.js +46 -96
  23. package/dist/schema-converter.js.map +1 -1
  24. package/dist/source-ref-bounds.d.ts +3 -3
  25. package/dist/source-ref-bounds.js +3 -3
  26. package/dist/step-attribute-mutations.d.ts +0 -42
  27. package/dist/step-attribute-mutations.d.ts.map +1 -1
  28. package/dist/step-attribute-mutations.js +17 -147
  29. package/dist/step-attribute-mutations.js.map +1 -1
  30. package/dist/step-attribute-serializers.d.ts +41 -0
  31. package/dist/step-attribute-serializers.d.ts.map +1 -0
  32. package/dist/step-attribute-serializers.js +74 -0
  33. package/dist/step-attribute-serializers.js.map +1 -0
  34. package/dist/step-collection.d.ts +2 -2
  35. package/dist/step-collection.d.ts.map +1 -1
  36. package/dist/step-collection.js +2 -1
  37. package/dist/step-collection.js.map +1 -1
  38. package/dist/step-export-contexts.d.ts +5 -7
  39. package/dist/step-export-contexts.d.ts.map +1 -1
  40. package/dist/step-export-contexts.js +6 -7
  41. package/dist/step-export-contexts.js.map +1 -1
  42. package/dist/step-exporter.d.ts +3 -3
  43. package/dist/step-exporter.js +4 -4
  44. package/dist/step-exporter.js.map +1 -1
  45. package/dist/step-geometry-types.d.ts +1 -17
  46. package/dist/step-geometry-types.d.ts.map +1 -1
  47. package/dist/step-geometry-types.js +51 -35
  48. package/dist/step-geometry-types.js.map +1 -1
  49. package/dist/step-georeferencing.d.ts +0 -10
  50. package/dist/step-georeferencing.d.ts.map +1 -1
  51. package/dist/step-georeferencing.js +46 -94
  52. package/dist/step-georeferencing.js.map +1 -1
  53. package/dist/step-header.d.ts +11 -1
  54. package/dist/step-header.d.ts.map +1 -1
  55. package/dist/step-header.js +0 -7
  56. package/dist/step-header.js.map +1 -1
  57. package/dist/step-map-unit.d.ts +90 -0
  58. package/dist/step-map-unit.d.ts.map +1 -0
  59. package/dist/step-map-unit.js +277 -0
  60. package/dist/step-map-unit.js.map +1 -0
  61. package/dist/step-overlay-attribute-overrides.d.ts +32 -0
  62. package/dist/step-overlay-attribute-overrides.d.ts.map +1 -0
  63. package/dist/step-overlay-attribute-overrides.js +83 -0
  64. package/dist/step-overlay-attribute-overrides.js.map +1 -0
  65. package/dist/step-overlay-entities.d.ts +3 -3
  66. package/dist/step-pass-builder.d.ts +4 -3
  67. package/dist/step-pass-builder.d.ts.map +1 -1
  68. package/dist/step-pass-builder.js.map +1 -1
  69. package/dist/step-property-set-collection.d.ts +24 -0
  70. package/dist/step-property-set-collection.d.ts.map +1 -0
  71. package/dist/step-property-set-collection.js +286 -0
  72. package/dist/step-property-set-collection.js.map +1 -0
  73. package/dist/step-property-set-generators.d.ts +20 -0
  74. package/dist/step-property-set-generators.d.ts.map +1 -0
  75. package/dist/step-property-set-generators.js +98 -0
  76. package/dist/step-property-set-generators.js.map +1 -0
  77. package/dist/step-property-set-index.d.ts +25 -0
  78. package/dist/step-property-set-index.d.ts.map +1 -0
  79. package/dist/step-property-set-index.js +69 -0
  80. package/dist/step-property-set-index.js.map +1 -0
  81. package/dist/step-property-set-readers.d.ts +158 -0
  82. package/dist/step-property-set-readers.d.ts.map +1 -0
  83. package/dist/step-property-set-readers.js +251 -0
  84. package/dist/step-property-set-readers.js.map +1 -0
  85. package/dist/step-property-sets.d.ts +2 -186
  86. package/dist/step-property-sets.d.ts.map +1 -1
  87. package/dist/step-property-sets.js +22 -674
  88. package/dist/step-property-sets.js.map +1 -1
  89. package/dist/step-serialization.d.ts +17 -51
  90. package/dist/step-serialization.d.ts.map +1 -1
  91. package/dist/step-serialization.js +19 -128
  92. package/dist/step-serialization.js.map +1 -1
  93. package/dist/step-source-iteration.d.ts +7 -5
  94. package/dist/step-source-iteration.d.ts.map +1 -1
  95. package/dist/step-source-iteration.js +3 -3
  96. package/dist/step-source-iteration.js.map +1 -1
  97. package/package.json +6 -6
@@ -2,6 +2,7 @@
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 { escapeStepString, toStepReal } from './step-serialization.js';
5
+ import { reportMapUnitUnsupported, resolveMapUnitReference } from './step-map-unit.js';
5
6
  /**
6
7
  * Message for the one refusal `export()` can report, shared by the returned
7
8
  * `stats.warnings` entry and the console line so the two cannot drift.
@@ -16,6 +17,18 @@ const MAP_CONVERSION_WITHOUT_CONTEXT_WARNING = 'Cannot create IfcMapConversion:
16
17
  * available to reference.
17
18
  */
18
19
  const MAP_CONVERSION_WITHOUT_CRS_WARNING = 'Cannot create IfcMapConversion: no IfcProjectedCRS was requested and none exists in the file to reference as TargetCRS. Nothing was written.';
20
+ /**
21
+ * Every concrete class carrying an IfcMapConversion's attributes, in the
22
+ * UPPERCASE spelling `EffectiveEntityIndex.byType` is keyed by. Kept beside
23
+ * `@ifc-lite/parser`'s `MAP_CONVERSION_TYPE_NAMES`, which is the same list in
24
+ * the mixed-case spelling the read path uses — the reader and the writer must
25
+ * agree on what counts as a map conversion, or the exporter duplicates a
26
+ * record the reader can see.
27
+ */
28
+ const MAP_CONVERSION_STEP_TYPES = [
29
+ 'IFCMAPCONVERSION',
30
+ 'IFCMAPCONVERSIONSCALED',
31
+ ];
19
32
  /**
20
33
  * Apply `options.georefMutations` to `pass`, in place.
21
34
  *
@@ -33,7 +46,17 @@ export function applyGeoreferencingMutations(pass, georefMutations, ctx) {
33
46
  // pass applies `modifiedAttributes` to, so both branches agree on which
34
47
  // georeferencing entities exist (#2048).
35
48
  const existingCrsIds = pass.effective.byType.get('IFCPROJECTEDCRS');
36
- const existingMcIds = pass.effective.byType.get('IFCMAPCONVERSION');
49
+ // `byType` is keyed by the RAW STEP type name, so the supertype key alone
50
+ // does not see IFC4X3's concrete IfcMapConversionScaled. Missing it left a
51
+ // file that HAS a map conversion looking like one that has none: the modify
52
+ // branch below found nothing, and a create branch ran instead — emitting a
53
+ // SECOND coordinate operation against the same source CRS while the file's
54
+ // own scaled one stayed put, which is not a file any consumer can read
55
+ // unambiguously. The six attributes edited below are IfcMapConversion's own
56
+ // and are edited BY NAME, which the scaled subtype inherits unchanged, so
57
+ // modifying it in place is well-defined (its extra FactorX/Y/Z sit after
58
+ // them and are left alone).
59
+ const existingMcIds = MAP_CONVERSION_STEP_TYPES.flatMap((typeName) => pass.effective.byType.get(typeName) ?? []);
37
60
  // Modify existing IfcProjectedCRS
38
61
  if (gm.projectedCRS && existingCrsIds?.length) {
39
62
  const entityId = existingCrsIds[0];
@@ -69,7 +92,17 @@ export function applyGeoreferencingMutations(pass, georefMutations, ctx) {
69
92
  }
70
93
  if (crs.mapUnit !== undefined) {
71
94
  const mapUnitRef = resolveMapUnitReference(String(crs.mapUnit), pass.newGeorefLines, pass.effective, ctx);
72
- attrMap.set('MapUnit', `#${mapUnitRef}`);
95
+ // A refused unit clears MapUnit rather than leaving the file's own in
96
+ // place: the caller asked for a DIFFERENT unit, so the one already
97
+ // there is known to be wrong, and `$` is the only honest answer this
98
+ // exporter can write (#3274).
99
+ if (mapUnitRef === null) {
100
+ reportMapUnitUnsupported(pass.warnings, String(crs.mapUnit));
101
+ attrMap.set('MapUnit', '$');
102
+ }
103
+ else {
104
+ attrMap.set('MapUnit', `#${mapUnitRef}`);
105
+ }
73
106
  changed = true;
74
107
  }
75
108
  if (changed) {
@@ -147,9 +180,17 @@ export function applyGeoreferencingMutations(pass, georefMutations, ctx) {
147
180
  const vDatum = crs.verticalDatum ? `'${escapeStepString(String(crs.verticalDatum))}'` : '$';
148
181
  const proj = crs.mapProjection ? `'${escapeStepString(String(crs.mapProjection))}'` : '$';
149
182
  const zone = crs.mapZone ? `'${escapeStepString(String(crs.mapZone))}'` : '$';
150
- const mapUnitRef = crs.mapUnit
151
- ? `#${resolveMapUnitReference(String(crs.mapUnit), pass.newGeorefLines, pass.effective, ctx)}`
152
- : '$';
183
+ let mapUnitRef = '$';
184
+ // `!== undefined`, matching the existing-CRS path above: an empty MapUnit is
185
+ // a unit this exporter cannot express, not an absent request, and the caller
186
+ // has to be told so rather than quietly getting `$`.
187
+ if (crs.mapUnit !== undefined) {
188
+ const resolved = resolveMapUnitReference(String(crs.mapUnit), pass.newGeorefLines, pass.effective, ctx);
189
+ if (resolved === null)
190
+ reportMapUnitUnsupported(pass.warnings, String(crs.mapUnit));
191
+ else
192
+ mapUnitRef = `#${resolved}`;
193
+ }
153
194
  pass.newGeorefLines.push(`#${crsId}=IFCPROJECTEDCRS(${name},${desc},${datum},${vDatum},${proj},${zone},${mapUnitRef});`);
154
195
  pass.newEntityCount++;
155
196
  // Find IfcGeometricRepresentationContext as SourceCRS for MapConversion
@@ -199,95 +240,6 @@ export function applyGeoreferencingMutations(pass, georefMutations, ctx) {
199
240
  reportMapConversionRefusedNoCrs(pass.warnings);
200
241
  }
201
242
  }
202
- export function resolveMapUnitReference(unitName, newGeorefLines, effective, ctx) {
203
- const normalized = normalizeMapUnitName(unitName);
204
- const existing = findLengthUnitReference(normalized, effective, ctx);
205
- if (existing !== null) {
206
- return existing;
207
- }
208
- if (normalized === 'METRE') {
209
- const unitId = ctx.allocateExpressId();
210
- newGeorefLines.push(`#${unitId}=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);`);
211
- return unitId;
212
- }
213
- if (normalized === 'FOOT' || normalized === 'US SURVEY FOOT') {
214
- const dimId = ctx.allocateExpressId();
215
- const siUnitId = ctx.allocateExpressId();
216
- const measureId = ctx.allocateExpressId();
217
- const convUnitId = ctx.allocateExpressId();
218
- const factor = normalized === 'US SURVEY FOOT' ? 1200 / 3937 : 0.3048;
219
- const name = normalized === 'US SURVEY FOOT' ? 'US SURVEY FOOT' : 'FOOT';
220
- newGeorefLines.push(`#${dimId}=IFCDIMENSIONALEXPONENTS(1,0,0,0,0,0,0);`);
221
- newGeorefLines.push(`#${siUnitId}=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);`);
222
- newGeorefLines.push(`#${measureId}=IFCMEASUREWITHUNIT(IFCLENGTHMEASURE(${toStepReal(factor)}),#${siUnitId});`);
223
- newGeorefLines.push(`#${convUnitId}=IFCCONVERSIONBASEDUNIT(#${dimId},.LENGTHUNIT.,'${name}',#${measureId});`);
224
- return convUnitId;
225
- }
226
- const fallbackId = ctx.allocateExpressId();
227
- newGeorefLines.push(`#${fallbackId}=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);`);
228
- return fallbackId;
229
- }
230
- export function normalizeMapUnitName(unitName) {
231
- const normalized = unitName.trim().toUpperCase().replace(/\s+/g, ' ');
232
- if (normalized.includes('US SURVEY FOOT'))
233
- return 'US SURVEY FOOT';
234
- if (normalized.includes('METER') || normalized.includes('METRE'))
235
- return 'METRE';
236
- if (normalized.includes('FOOT') || normalized.includes('FEET'))
237
- return 'FOOT';
238
- return normalized;
239
- }
240
- /**
241
- * `effective` filters the candidates the same way the georef reads above do:
242
- * returning a tombstoned unit id hands the caller a `#id` for a line the
243
- * export never writes. Returning null instead makes `resolveMapUnitReference`
244
- * synthesise a fresh unit, which is the outcome a deleted unit deserves.
245
- */
246
- export function findLengthUnitReference(preferredUnitName, effective, ctx) {
247
- if (!ctx.entityExtractor)
248
- return null;
249
- // Only source records carry the bytes `extractEntity` reads, so an
250
- // overlay-created project is skipped rather than shadowing the file's own.
251
- const projectId = (effective.byType.get('IFCPROJECT') ?? []).find((id) => ctx.dataStore.entityIndex.byId.has(id));
252
- const projectRef = projectId !== undefined ? ctx.dataStore.entityIndex.byId.get(projectId) : undefined;
253
- const project = projectRef ? ctx.entityExtractor.extractEntity(projectRef) : null;
254
- const unitAssignmentId = project?.attributes?.[8];
255
- if (typeof unitAssignmentId !== 'number' || effective.isDeleted(unitAssignmentId))
256
- return null;
257
- const unitAssignmentRef = ctx.dataStore.entityIndex.byId.get(unitAssignmentId);
258
- const unitAssignment = unitAssignmentRef ? ctx.entityExtractor.extractEntity(unitAssignmentRef) : null;
259
- const units = unitAssignment?.attributes?.[0];
260
- if (!Array.isArray(units))
261
- return null;
262
- for (const unitId of units) {
263
- if (typeof unitId !== 'number' || effective.isDeleted(unitId))
264
- continue;
265
- const unitRef = ctx.dataStore.entityIndex.byId.get(unitId);
266
- const unit = unitRef ? ctx.entityExtractor.extractEntity(unitRef) : null;
267
- if (!unit)
268
- continue;
269
- const typeName = unit.type.toUpperCase();
270
- const attrs = unit.attributes ?? [];
271
- const unitType = typeof attrs[1] === 'string' ? attrs[1].replace(/\./g, '').toUpperCase() : '';
272
- if (unitType !== 'LENGTHUNIT')
273
- continue;
274
- if (typeName === 'IFCSIUNIT') {
275
- const prefix = typeof attrs[2] === 'string' ? attrs[2].replace(/\./g, '').toUpperCase() : '';
276
- const name = typeof attrs[3] === 'string' ? attrs[3].replace(/\./g, '').toUpperCase() : '';
277
- const combined = prefix ? `${prefix}${name}` : name;
278
- if (preferredUnitName === 'METRE' && (combined === 'METRE' || combined === 'METER')) {
279
- return unitId;
280
- }
281
- }
282
- if (typeName === 'IFCCONVERSIONBASEDUNIT') {
283
- const name = typeof attrs[2] === 'string' ? normalizeMapUnitName(attrs[2]) : '';
284
- if (name === preferredUnitName) {
285
- return unitId;
286
- }
287
- }
288
- }
289
- return null;
290
- }
291
243
  /**
292
244
  * Record that a requested IfcMapConversion could not be written. Emitting it
293
245
  * anyway would leave `SourceCRS` pointing at nothing, so the refusal is the
@@ -1 +1 @@
1
- {"version":3,"file":"step-georeferencing.js","sourceRoot":"","sources":["../src/step-georeferencing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-georeferencing.js","sourceRoot":"","sources":["../src/step-georeferencing.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,17 @@ import type { ExportPass, StepExportOptions, StepExportResult } from './step-exp
33
33
  * {@link assembleExportResult} below) — so the provenance item it appends
34
34
  * reflects what this export actually wrote, not a guess made at setup time.
35
35
  */
36
- export declare function buildStepHeader(options: StepExportOptions, sourceHeader: IfcSourceHeader | undefined, schemaToken: string, modifications: number): string;
36
+ /**
37
+ * The subset of {@link StepExportOptions} the header actually reads.
38
+ *
39
+ * `schema` is deliberately NOT part of it: the token written into FILE_SCHEMA
40
+ * arrives separately as `schemaToken`, so requiring it here would force every
41
+ * caller — and every parity vector, which supplies the token from its own
42
+ * field — to spell out a value this function never consults. Spelled-out
43
+ * values are how two implementations' defaults drift apart unnoticed.
44
+ */
45
+ export type StepHeaderOptions = Pick<StepExportOptions, 'description' | 'author' | 'organization' | 'application' | 'filename' | 'timeStamp'>;
46
+ export declare function buildStepHeader(options: StepHeaderOptions, sourceHeader: IfcSourceHeader | undefined, schemaToken: string, modifications: number): string;
37
47
  /**
38
48
  * Settle the delta ledger, build the header against the settled count, and
39
49
  * assemble the finished bytes. The header is built last so its provenance
@@ -1 +1 @@
1
- {"version":3,"file":"step-header.d.ts","sourceRoot":"","sources":["../src/step-header.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE1F;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,eAAe,GAAG,SAAS,EACzC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,MAAM,CA+BR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAwBvE"}
1
+ {"version":3,"file":"step-header.d.ts","sourceRoot":"","sources":["../src/step-header.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE1F;;;;;;GAMG;AACH;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,iBAAiB,EACjB,aAAa,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,CACrF,CAAC;AAEF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,eAAe,GAAG,SAAS,EACzC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,MAAM,CA+BR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAwBvE"}
@@ -3,13 +3,6 @@
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { generateHeader } from '@ifc-lite/parser';
5
5
  import { assembleStepBytes } from './step-file-assembly.js';
6
- /**
7
- * Build the STEP HEADER section text. `modifications` is read last, at each
8
- * call site, once the real count is known — see the two callers in
9
- * `step-exporter.ts` (the `deltaOnly`-empty early return, and
10
- * {@link assembleExportResult} below) — so the provenance item it appends
11
- * reflects what this export actually wrote, not a guess made at setup time.
12
- */
13
6
  export function buildStepHeader(options, sourceHeader, schemaToken, modifications) {
14
7
  // FILE_DESCRIPTION items: an explicit option wins, else the source items
15
8
  // verbatim, else the generic default.
@@ -1 +1 @@
1
- {"version":3,"file":"step-header.js","sourceRoot":"","sources":["../src/step-header.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA8B/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA0B,EAC1B,YAAyC,EACzC,WAAmB,EACnB,aAAqB;IAErB,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,KAAK,SAAS;QAC/B,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACvB,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACnD,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACnC,wEAAwE;IACxE,+DAA+D;IAC/D,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,WAAW,CAAC,IAAI,CACd,4BAA4B,aAAa,gBAAgB,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,WAAW;QACnB,WAAW;QACX,mBAAmB,EAAE,YAAY,EAAE,mBAAmB;QACtD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,MAAM;QAC9C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE,YAAY;QAChE,mEAAmE;QACnE,yEAAyE;QACzE,mBAAmB,EAAE,OAAO,CAAC,WAAW,IAAI,UAAU;QACtD,iBAAiB,EAAE,YAAY,EAAE,iBAAiB;QAClD,aAAa,EAAE,YAAY,EAAE,aAAa;QAC1C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,UAAU;QAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAgB;IACnD,yEAAyE;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,4EAA4E;IAC5E,6CAA6C;IAC7C,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACrF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAErC,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzD,OAAO;QACL,OAAO;QACP,KAAK,EAAE;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,mBAAmB;YACnB,QAAQ,EAAE,OAAO,CAAC,UAAU;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"step-header.js","sourceRoot":"","sources":["../src/step-header.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA8B/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAwB5D,MAAM,UAAU,eAAe,CAC7B,OAA0B,EAC1B,YAAyC,EACzC,WAAmB,EACnB,aAAqB;IAErB,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,KAAK,SAAS;QAC/B,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACvB,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACnD,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACnC,wEAAwE;IACxE,+DAA+D;IAC/D,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,WAAW,CAAC,IAAI,CACd,4BAA4B,aAAa,gBAAgB,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,WAAW;QACnB,WAAW;QACX,mBAAmB,EAAE,YAAY,EAAE,mBAAmB;QACtD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,MAAM;QAC9C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE,YAAY;QAChE,mEAAmE;QACnE,yEAAyE;QACzE,mBAAmB,EAAE,OAAO,CAAC,WAAW,IAAI,UAAU;QACtD,iBAAiB,EAAE,YAAY,EAAE,iBAAiB;QAClD,aAAa,EAAE,YAAY,EAAE,aAAa;QAC1C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,UAAU;QAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAgB;IACnD,yEAAyE;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,4EAA4E;IAC5E,6CAA6C;IAC7C,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACrF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAErC,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzD,OAAO;QACL,OAAO;QACP,KAAK,EAAE;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,mBAAmB;YACnB,QAAQ,EAAE,OAAO,CAAC,UAAU;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Map-unit resolution for the georeferencing phase: the `IfcNamedUnit` an
3
+ * `IfcProjectedCRS.MapUnit` points at, and the reuse-or-synthesise decision
4
+ * behind it.
5
+ *
6
+ * Split out of `step-georeferencing.ts` in #3274 rather than grown in place —
7
+ * the question it answers is a different one from "which georeferencing
8
+ * entities does this export write", it has a second caller in
9
+ * `step-property-sets.ts` (property units reach `findLengthUnitReference`
10
+ * through `findUnitId`), and the module-size budget is not a thing to raise.
11
+ *
12
+ * THE RULE THIS MODULE EXISTS TO KEEP: a unit name is compared WHOLE. The
13
+ * defect it was extracted for was a substring test — `normalized.includes('METRE')`
14
+ * — which `MILLIMETRE`, `CENTIMETRE` and `KILOMETRE` all satisfy, so every one
15
+ * of them was written into the file as a plain `.METRE.`. The map unit is the
16
+ * scale of the entire coordinate reference system, so that is a silent 1000x
17
+ * error in the one attribute another team uses to place the model on the
18
+ * earth, and it is invisible in the output: a millimetre request produced
19
+ * bytes identical to a metre request.
20
+ *
21
+ * And a unit this module cannot express is REFUSED, not approximated.
22
+ * `IfcProjectedCRS.MapUnit` is `OPTIONAL IfcNamedUnit` with
23
+ * `IsLengthUnit : NOT(EXISTS(MapUnit)) OR (MapUnit.UnitType = LENGTHUNIT)`, so
24
+ * an absent MapUnit is schema-valid; a MapUnit naming the wrong unit is not
25
+ * merely lossy, it is false, and nothing downstream can tell it from a true
26
+ * one.
27
+ */
28
+ import type { EffectiveEntityIndex } from './effective-index.js';
29
+ import type { GeorefContext, GeorefLookupContext } from './step-georeferencing.js';
30
+ /**
31
+ * Message for the refusal when a requested map unit is one this exporter
32
+ * cannot express as an `IfcNamedUnit`. `MapUnit` is optional, so it is left
33
+ * absent rather than filled with a unit that is not the one asked for (#3274).
34
+ */
35
+ export declare function mapUnitUnsupportedWarning(unitName: string): string;
36
+ /** Record a map unit the exporter refused to guess at. */
37
+ export declare function reportMapUnitUnsupported(warnings: string[], unitName: string): void;
38
+ export declare function resolveMapUnitReference(unitName: string, newGeorefLines: string[], effective: EffectiveEntityIndex, ctx: GeorefContext): number | null;
39
+ /**
40
+ * Canonicalize a map-unit label to the spelling the rest of this module
41
+ * compares against: American `METER` to `METRE`, the foot spellings to `FOOT`,
42
+ * the US survey foot to `US SURVEY FOOT`, and an SI prefix kept rather than
43
+ * swallowed. Anything not recognised is returned normalised-but-unchanged, for
44
+ * the caller to REFUSE rather than guess at.
45
+ *
46
+ * The label is NORMALISED and then matched EXACTLY — never substring-matched.
47
+ *
48
+ * What the normalisation accepts:
49
+ * - any case and any separators: `metres`, `Meters`, `MILLI-METRE`;
50
+ * - `METRE` and `METER`, each carrying any `IfcSIPrefix` member;
51
+ * - `FOOT` and `FEET`;
52
+ * - one English plural suffix, stripped once and re-matched exactly;
53
+ * - the US survey foot, glued or separated in any word order.
54
+ *
55
+ * What it REFUSES, by leaving the label alone so `resolveMapUnitReference`
56
+ * returns `null` and `MapUnit` stays `$` with a warning:
57
+ * - a label that merely CONTAINS a unit. `MILLIMETRE`, `CENTIMETRE` and
58
+ * `KILOMETRE` all contain `METRE`, and an `includes('METRE')` test wrote all
59
+ * three into the file as a plain `.METRE.` — a silent 1000x error in the CRS
60
+ * scale (#3274). The foot half of that same test was `includes('FOOT')`, and
61
+ * it was satisfied by `FOOTCANDLE` (an illuminance), `FOOT-POUND` (an
62
+ * energy), `FOOTPRINT`, and by `SQUARE FOOT` and `CUBIC FEET` — an area and
63
+ * a volume written as a LENGTH unit, which is a wrong DIMENSION rather than
64
+ * a wrong magnitude, and no scale factor can be right for it;
65
+ * - a survey foot with no nationality: `SURVEY FOOT`, `CLARKE'S FOOT`,
66
+ * `INDIAN FOOT`, `SEARS FOOT`, `BRITISH FOOT (1936)` are five different
67
+ * ratios, and `includes('FOOT')` gave every one of them the international
68
+ * 0.3048;
69
+ * - `INCH`, `YARD`, `MILE` and anything else this exporter cannot express.
70
+ *
71
+ * Normalising a recognisable spelling onto a table entry is NOT that
72
+ * approximation: the answer is still one exact table hit, so `MILLIMETERS`
73
+ * resolves to `MILLIMETRE` and not to `METRE`.
74
+ *
75
+ * Sibling of `inferMapUnitScaleFromLabel` in
76
+ * packages/parser/src/map-unit-label.ts and `infer_map_unit_scale` in
77
+ * rust/core/src/unit_labels.rs, which apply these same rules on the reading
78
+ * side. This exporter's accepted set is the smaller one — it writes only what
79
+ * it can express as an `IfcNamedUnit` — but no spelling may be accepted here
80
+ * that those refuse, or refused here that those accept as a length.
81
+ */
82
+ export declare function normalizeMapUnitName(unitName: string): string;
83
+ /**
84
+ * `effective` filters the candidates the same way the georef reads above do:
85
+ * returning a tombstoned unit id hands the caller a `#id` for a line the
86
+ * export never writes. Returning null instead makes `resolveMapUnitReference`
87
+ * synthesise a fresh unit, which is the outcome a deleted unit deserves.
88
+ */
89
+ export declare function findLengthUnitReference(preferredUnitName: string, effective: EffectiveEntityIndex, ctx: GeorefLookupContext): number | null;
90
+ //# sourceMappingURL=step-map-unit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-map-unit.d.ts","sourceRoot":"","sources":["../src/step-map-unit.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEnF;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,0DAA0D;AAC1D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAInF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAwCtJ;AA8FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB7D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAwD3I"}