@ifc-lite/parser 9.2.0 → 9.4.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 (191) hide show
  1. package/README.md +31 -0
  2. package/dist/abort-error.d.ts +7 -0
  3. package/dist/abort-error.d.ts.map +1 -0
  4. package/dist/abort-error.js +17 -0
  5. package/dist/abort-error.js.map +1 -0
  6. package/dist/classification-overlay.d.ts +13 -0
  7. package/dist/classification-overlay.d.ts.map +1 -0
  8. package/dist/classification-overlay.js +65 -0
  9. package/dist/classification-overlay.js.map +1 -0
  10. package/dist/classification-resolver.d.ts +13 -9
  11. package/dist/classification-resolver.d.ts.map +1 -1
  12. package/dist/classification-resolver.js +109 -74
  13. package/dist/classification-resolver.js.map +1 -1
  14. package/dist/columnar-parser-attributes.d.ts +1 -1
  15. package/dist/columnar-parser-attributes.d.ts.map +1 -1
  16. package/dist/columnar-parser-attributes.js +16 -6
  17. package/dist/columnar-parser-attributes.js.map +1 -1
  18. package/dist/columnar-parser-root-attributes.d.ts +15 -1
  19. package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
  20. package/dist/columnar-parser-root-attributes.js +26 -11
  21. package/dist/columnar-parser-root-attributes.js.map +1 -1
  22. package/dist/columnar-parser.d.ts +9 -8
  23. package/dist/columnar-parser.d.ts.map +1 -1
  24. package/dist/columnar-parser.js +11 -23
  25. package/dist/columnar-parser.js.map +1 -1
  26. package/dist/current-occurrence-quantities.d.ts +13 -0
  27. package/dist/current-occurrence-quantities.d.ts.map +1 -0
  28. package/dist/current-occurrence-quantities.js +69 -0
  29. package/dist/current-occurrence-quantities.js.map +1 -0
  30. package/dist/current-project-units.d.ts +11 -0
  31. package/dist/current-project-units.d.ts.map +1 -0
  32. package/dist/current-project-units.js +41 -0
  33. package/dist/current-project-units.js.map +1 -0
  34. package/dist/current-type-quantities.d.ts +13 -0
  35. package/dist/current-type-quantities.d.ts.map +1 -0
  36. package/dist/current-type-quantities.js +274 -0
  37. package/dist/current-type-quantities.js.map +1 -0
  38. package/dist/data-store-transport.d.ts +1 -0
  39. package/dist/data-store-transport.d.ts.map +1 -1
  40. package/dist/data-store-transport.js +2 -0
  41. package/dist/data-store-transport.js.map +1 -1
  42. package/dist/document-resolver.d.ts +23 -0
  43. package/dist/document-resolver.d.ts.map +1 -0
  44. package/dist/document-resolver.js +122 -0
  45. package/dist/document-resolver.js.map +1 -0
  46. package/dist/effective-entity-record.d.ts +3 -2
  47. package/dist/effective-entity-record.d.ts.map +1 -1
  48. package/dist/effective-entity-record.js +5 -5
  49. package/dist/effective-entity-record.js.map +1 -1
  50. package/dist/effective-metadata-record.d.ts +23 -0
  51. package/dist/effective-metadata-record.d.ts.map +1 -0
  52. package/dist/effective-metadata-record.js +50 -0
  53. package/dist/effective-metadata-record.js.map +1 -0
  54. package/dist/entity-scanner.d.ts +6 -8
  55. package/dist/entity-scanner.d.ts.map +1 -1
  56. package/dist/entity-scanner.js +26 -13
  57. package/dist/entity-scanner.js.map +1 -1
  58. package/dist/ifc-schema.d.ts +2 -1
  59. package/dist/ifc-schema.d.ts.map +1 -1
  60. package/dist/ifc-schema.js +4 -3
  61. package/dist/ifc-schema.js.map +1 -1
  62. package/dist/index.d.ts +8 -11
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +7 -10
  65. package/dist/index.js.map +1 -1
  66. package/dist/length-unit-source.d.ts +25 -0
  67. package/dist/length-unit-source.d.ts.map +1 -0
  68. package/dist/length-unit-source.js +14 -0
  69. package/dist/length-unit-source.js.map +1 -0
  70. package/dist/material-definitions.d.ts +10 -0
  71. package/dist/material-definitions.d.ts.map +1 -0
  72. package/dist/material-definitions.js +224 -0
  73. package/dist/material-definitions.js.map +1 -0
  74. package/dist/material-overlay.d.ts +38 -0
  75. package/dist/material-overlay.d.ts.map +1 -0
  76. package/dist/material-overlay.js +146 -0
  77. package/dist/material-overlay.js.map +1 -0
  78. package/dist/material-properties-extractor.d.ts +2 -11
  79. package/dist/material-properties-extractor.d.ts.map +1 -1
  80. package/dist/material-properties-extractor.js +21 -38
  81. package/dist/material-properties-extractor.js.map +1 -1
  82. package/dist/material-resolver.d.ts +6 -4
  83. package/dist/material-resolver.d.ts.map +1 -1
  84. package/dist/material-resolver.js +176 -386
  85. package/dist/material-resolver.js.map +1 -1
  86. package/dist/measure-unit-scale.d.ts +2 -0
  87. package/dist/measure-unit-scale.d.ts.map +1 -1
  88. package/dist/measure-unit-scale.js +7 -1
  89. package/dist/measure-unit-scale.js.map +1 -1
  90. package/dist/metadata-edit-value.d.ts +4 -0
  91. package/dist/metadata-edit-value.d.ts.map +1 -0
  92. package/dist/metadata-edit-value.js +57 -0
  93. package/dist/metadata-edit-value.js.map +1 -0
  94. package/dist/native-metadata-public.d.ts +9 -0
  95. package/dist/native-metadata-public.d.ts.map +1 -0
  96. package/dist/native-metadata-public.js +12 -0
  97. package/dist/native-metadata-public.js.map +1 -0
  98. package/dist/occurrence-quantity-read-error.d.ts +7 -0
  99. package/dist/occurrence-quantity-read-error.d.ts.map +1 -0
  100. package/dist/occurrence-quantity-read-error.js +13 -0
  101. package/dist/occurrence-quantity-read-error.js.map +1 -0
  102. package/dist/on-demand-extractors.d.ts +3 -38
  103. package/dist/on-demand-extractors.d.ts.map +1 -1
  104. package/dist/on-demand-extractors.js +4 -184
  105. package/dist/on-demand-extractors.js.map +1 -1
  106. package/dist/parser-worker-trace.d.ts +18 -0
  107. package/dist/parser-worker-trace.d.ts.map +1 -0
  108. package/dist/parser-worker-trace.js +32 -0
  109. package/dist/parser-worker-trace.js.map +1 -0
  110. package/dist/parser.worker.d.ts.map +1 -1
  111. package/dist/parser.worker.js +34 -13
  112. package/dist/parser.worker.js.map +1 -1
  113. package/dist/project-units.d.ts +17 -4
  114. package/dist/project-units.d.ts.map +1 -1
  115. package/dist/project-units.js +104 -37
  116. package/dist/project-units.js.map +1 -1
  117. package/dist/property-complex-value.d.ts.map +1 -1
  118. package/dist/property-complex-value.js +1 -0
  119. package/dist/property-complex-value.js.map +1 -1
  120. package/dist/property-unit.d.ts +2 -0
  121. package/dist/property-unit.d.ts.map +1 -1
  122. package/dist/property-unit.js +4 -1
  123. package/dist/property-unit.js.map +1 -1
  124. package/dist/property-value-parser.d.ts +14 -1
  125. package/dist/property-value-parser.d.ts.map +1 -1
  126. package/dist/property-value-parser.js +42 -22
  127. package/dist/property-value-parser.js.map +1 -1
  128. package/dist/quantity-collect.d.ts +14 -2
  129. package/dist/quantity-collect.d.ts.map +1 -1
  130. package/dist/quantity-collect.js +19 -8
  131. package/dist/quantity-collect.js.map +1 -1
  132. package/dist/relationship-schema-slots.d.ts.map +1 -1
  133. package/dist/relationship-schema-slots.js +2 -1
  134. package/dist/relationship-schema-slots.js.map +1 -1
  135. package/dist/scan-worker-inline.d.ts.map +1 -1
  136. package/dist/scan-worker-inline.js +2 -1
  137. package/dist/scan-worker-inline.js.map +1 -1
  138. package/dist/schedule-extractor.d.ts +2 -1
  139. package/dist/schedule-extractor.d.ts.map +1 -1
  140. package/dist/schedule-extractor.js +11 -2
  141. package/dist/schedule-extractor.js.map +1 -1
  142. package/dist/schedule-serializer-builders.d.ts +7 -0
  143. package/dist/schedule-serializer-builders.d.ts.map +1 -1
  144. package/dist/schedule-serializer-builders.js +17 -17
  145. package/dist/schedule-serializer-builders.js.map +1 -1
  146. package/dist/schedule-serializer.d.ts +8 -3
  147. package/dist/schedule-serializer.d.ts.map +1 -1
  148. package/dist/schedule-serializer.js +36 -1
  149. package/dist/schedule-serializer.js.map +1 -1
  150. package/dist/schedule-task-products.d.ts +38 -0
  151. package/dist/schedule-task-products.d.ts.map +1 -0
  152. package/dist/schedule-task-products.js +69 -0
  153. package/dist/schedule-task-products.js.map +1 -0
  154. package/dist/schedule-types.d.ts +11 -1
  155. package/dist/schedule-types.d.ts.map +1 -1
  156. package/dist/schedule-types.js.map +1 -1
  157. package/dist/schema-entity-name.d.ts +14 -0
  158. package/dist/schema-entity-name.d.ts.map +1 -0
  159. package/dist/schema-entity-name.js +34 -0
  160. package/dist/schema-entity-name.js.map +1 -0
  161. package/dist/schema-exports.d.ts +7 -0
  162. package/dist/schema-exports.d.ts.map +1 -0
  163. package/dist/schema-exports.js +10 -0
  164. package/dist/schema-exports.js.map +1 -0
  165. package/dist/source-project-length-unit.d.ts +53 -0
  166. package/dist/source-project-length-unit.d.ts.map +1 -0
  167. package/dist/source-project-length-unit.js +201 -0
  168. package/dist/source-project-length-unit.js.map +1 -0
  169. package/dist/structural-extractor.js +2 -2
  170. package/dist/structural-extractor.js.map +1 -1
  171. package/dist/structural-load-extractor.d.ts +9 -3
  172. package/dist/structural-load-extractor.d.ts.map +1 -1
  173. package/dist/structural-load-extractor.js +26 -20
  174. package/dist/structural-load-extractor.js.map +1 -1
  175. package/dist/structural-step-values.d.ts +0 -9
  176. package/dist/structural-step-values.d.ts.map +1 -1
  177. package/dist/structural-step-values.js +13 -1
  178. package/dist/structural-step-values.js.map +1 -1
  179. package/dist/type-own-quantity-source.d.ts +37 -0
  180. package/dist/type-own-quantity-source.d.ts.map +1 -0
  181. package/dist/type-own-quantity-source.js +204 -0
  182. package/dist/type-own-quantity-source.js.map +1 -0
  183. package/dist/unit-extractor.d.ts +13 -0
  184. package/dist/unit-extractor.d.ts.map +1 -1
  185. package/dist/unit-extractor.js +32 -29
  186. package/dist/unit-extractor.js.map +1 -1
  187. package/dist/worker-parser.d.ts +7 -0
  188. package/dist/worker-parser.d.ts.map +1 -1
  189. package/dist/worker-parser.js +14 -16
  190. package/dist/worker-parser.js.map +1 -1
  191. package/package.json +6 -5
@@ -0,0 +1,7 @@
1
+ /** Public schema metadata and canonical-name exports. */
2
+ export { SCHEMA_REGISTRY, getEntityMetadata, getAllAttributesForEntity, getInheritanceChainForEntity, isKnownEntity } from './generated/schema-registry.js';
3
+ export { getSchemaRegistryForVersion, type SchemaVersionWithRegistry, type SchemaRegistry, } from './generated/schema-registry-by-version.js';
4
+ export { getCanonicalEntityName, createSchemaEntityNameSnapshot, type SchemaEntityNameSnapshot } from './schema-entity-name.js';
5
+ export type * from './generated/entities.js';
6
+ export * from './generated/enums.js';
7
+ //# sourceMappingURL=schema-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-exports.d.ts","sourceRoot":"","sources":["../src/schema-exports.ts"],"names":[],"mappings":"AAIA,yDAAyD;AAEzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC5J,OAAO,EACL,2BAA2B,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,cAAc,GACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAChI,mBAAmB,yBAAyB,CAAC;AAC7C,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
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
+ /** Public schema metadata and canonical-name exports. */
5
+ // Generated IFC4 schema (100% coverage - 776 entities, 397 types, 207 enums)
6
+ export { SCHEMA_REGISTRY, getEntityMetadata, getAllAttributesForEntity, getInheritanceChainForEntity, isKnownEntity } from './generated/schema-registry.js';
7
+ export { getSchemaRegistryForVersion, } from './generated/schema-registry-by-version.js';
8
+ export { getCanonicalEntityName, createSchemaEntityNameSnapshot } from './schema-entity-name.js';
9
+ export * from './generated/enums.js';
10
+ //# sourceMappingURL=schema-exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-exports.js","sourceRoot":"","sources":["../src/schema-exports.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,yDAAyD;AACzD,6EAA6E;AAC7E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC5J,OAAO,EACL,2BAA2B,GAG5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,8BAA8B,EAAiC,MAAM,yBAAyB,CAAC;AAEhI,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { IfcDataStore } from './columnar-parser.js';
2
+ /**
3
+ * Canonicalize a map-unit label to the spelling the rest of this module
4
+ * compares against: American `METER` to `METRE`, the foot spellings to `FOOT`,
5
+ * the US survey foot to `US SURVEY FOOT`, and an SI prefix kept rather than
6
+ * swallowed. Anything not recognised is returned normalised-but-unchanged, for
7
+ * the caller to REFUSE rather than guess at.
8
+ *
9
+ * The label is NORMALISED and then matched EXACTLY — never substring-matched.
10
+ *
11
+ * What the normalisation accepts:
12
+ * - any case and any separators: `metres`, `Meters`, `MILLI-METRE`;
13
+ * - `METRE` and `METER`, each carrying any `IfcSIPrefix` member;
14
+ * - `FOOT` and `FEET`;
15
+ * - one English plural suffix, stripped once and re-matched exactly;
16
+ * - the US survey foot, glued or separated in any word order.
17
+ *
18
+ * What it REFUSES, by leaving the label alone so `resolveMapUnitReference`
19
+ * returns `null` and `MapUnit` stays `$` with a warning:
20
+ * - a label that merely CONTAINS a unit. `MILLIMETRE`, `CENTIMETRE` and
21
+ * `KILOMETRE` all contain `METRE`, and an `includes('METRE')` test wrote all
22
+ * three into the file as a plain `.METRE.` — a silent 1000x error in the CRS
23
+ * scale (#3274). The foot half of that same test was `includes('FOOT')`, and
24
+ * it was satisfied by `FOOTCANDLE` (an illuminance), `FOOT-POUND` (an
25
+ * energy), `FOOTPRINT`, and by `SQUARE FOOT` and `CUBIC FEET` — an area and
26
+ * a volume written as a LENGTH unit, which is a wrong DIMENSION rather than
27
+ * a wrong magnitude, and no scale factor can be right for it;
28
+ * - a survey foot with no nationality: `SURVEY FOOT`, `CLARKE'S FOOT`,
29
+ * `INDIAN FOOT`, `SEARS FOOT`, `BRITISH FOOT (1936)` are five different
30
+ * ratios, and `includes('FOOT')` gave every one of them the international
31
+ * 0.3048;
32
+ * - `INCH`, `YARD`, `MILE` and anything else this exporter cannot express.
33
+ *
34
+ * Normalising a recognisable spelling onto a table entry is NOT that
35
+ * approximation: the answer is still one exact table hit, so `MILLIMETERS`
36
+ * resolves to `MILLIMETRE` and not to `METRE`.
37
+ *
38
+ * Sibling of `inferMapUnitScaleFromLabel` in
39
+ * packages/parser/src/map-unit-label.ts and `infer_map_unit_scale` in
40
+ * rust/core/src/unit_labels.rs, which apply these same rules on the reading
41
+ * side. This exporter's accepted set is the smaller one — it writes only what
42
+ * it can express as an `IfcNamedUnit` — but no spelling may be accepted here
43
+ * that those refuse, or refused here that those accept as a length.
44
+ */
45
+ export declare function normalizeMapUnitName(unitName: string): string;
46
+ /** Resolve only an assigned source length unit, matching STEP writer eligibility.
47
+ * Overlay-created projects/assignments/units cannot supply source STEP bytes;
48
+ * `projectIds` must already contain only current effective IfcProject ids,
49
+ * with deleted/retyped projects excluded (use iterateEffectiveEntities).
50
+ * `isDeleted` filters assignment/unit references, not the project inventory.
51
+ * Deleted references and unsupported names return null. #7355 */
52
+ export declare function findSourceProjectLengthUnit(preferredUnitName: string, store: IfcDataStore, projectIds: readonly number[], isDeleted: (id: number) => boolean): number | null;
53
+ //# sourceMappingURL=source-project-length-unit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-project-length-unit.d.ts","sourceRoot":"","sources":["../src/source-project-length-unit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAuEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB7D;AAED;;;;;iEAKiE;AACjE,wBAAgB,2BAA2B,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,IAAI,CA4D5K"}
@@ -0,0 +1,201 @@
1
+ import { EntityExtractor } from './entity-extractor.js';
2
+ import { SI_PREFIX_MULTIPLIERS } from './unit-extractor.js';
3
+ /** Split a map-unit label into upper-cased alphanumeric tokens. */
4
+ function tokenizeUnitLabel(label) {
5
+ return label.toUpperCase().split(/[^A-Z0-9]+/).filter((token) => token.length > 0);
6
+ }
7
+ /** The foot/feet spellings a US-survey qualifier may be attached to. */
8
+ const FOOT_TOKENS = new Set(['FOOT', 'FEET', 'FT']);
9
+ /**
10
+ * Order-insensitive recogniser for the separated US-survey foot spellings —
11
+ * `foot (US survey)`, `SURVEY FEET (US)`, `US survey foot`. The glued
12
+ * spellings (`USSURVEYFOOT`, `FTUS`, …) are in {@link MAP_UNIT_CANONICAL_NAME}
13
+ * and matched exactly there; once an exporter puts separators in, the word
14
+ * order varies and gluing alone cannot see it.
15
+ *
16
+ * Accepts exactly one foot token plus either `US` (or the glued `USSURVEY`)
17
+ * or both `US` and `SURVEY`. A bare `SURVEY FOOT` without `US` is REFUSED:
18
+ * other national survey feet exist and are different ratios — Clarke's foot is
19
+ * 0.3047972654 m, the Indian foot 0.304799514 m — so the qualifier alone does
20
+ * not identify a value. `US FOOT` on its own IS accepted: EPSG 9003 is the
21
+ * only US foot, so the nationality does identify it.
22
+ *
23
+ * The requirement that exactly ONE foot token be present, with nothing else
24
+ * beside the qualifier, is what refuses `SQUARE US SURVEY FOOT` (an area) and
25
+ * `NON-US SURVEY FOOT` (a label that says it is not this unit).
26
+ *
27
+ * Sibling of `isUsSurveyFootTokens` in packages/parser/src/map-unit-label.ts
28
+ * and `is_us_survey_foot_tokens` in rust/core/src/unit_labels.rs — those two
29
+ * answer a metre scale for the georeferencing READER, this one answers the
30
+ * canonical name the STEP writer emits, but the accepted spellings are the
31
+ * same set and must stay the same set.
32
+ */
33
+ function isUsSurveyFootTokens(tokens) {
34
+ const feet = tokens.filter((token) => FOOT_TOKENS.has(token));
35
+ if (feet.length !== 1)
36
+ return false;
37
+ const rest = tokens.filter((token) => !FOOT_TOKENS.has(token));
38
+ if (rest.length === 1)
39
+ return rest[0] === 'US' || rest[0] === 'USSURVEY';
40
+ return rest.length === 2 && rest.includes('US') && rest.includes('SURVEY');
41
+ }
42
+ /**
43
+ * Exact-match table from a folded label to the canonical unit name the rest of
44
+ * this module compares against. DERIVED rather than hand-written: the two base
45
+ * spellings crossed with {@link SI_PREFIXES} — the same list {@link siPrefixOf}
46
+ * reads, so the two cannot drift — plus the foot spellings this exporter can
47
+ * write as an `IfcConversionBasedUnit`.
48
+ *
49
+ * A `Map` rather than an object literal so a label like `CONSTRUCTOR` cannot
50
+ * resolve through `Object.prototype`.
51
+ */
52
+ const MAP_UNIT_CANONICAL_NAME = (() => {
53
+ const table = new Map();
54
+ for (const spelling of ['METRE', 'METER']) {
55
+ table.set(spelling, 'METRE');
56
+ for (const prefix of Object.keys(SI_PREFIX_MULTIPLIERS))
57
+ table.set(`${prefix}${spelling}`, `${prefix}METRE`);
58
+ }
59
+ for (const foot of ['FOOT', 'FEET'])
60
+ table.set(foot, 'FOOT');
61
+ // The US survey foot is a different ratio from the international foot
62
+ // (1200/3937 vs 0.3048) and is spelled several ways in the wild. These are
63
+ // the accepted glued spellings, matched exactly rather than sniffed for; the
64
+ // separated ones go through {@link isUsSurveyFootTokens}.
65
+ for (const alias of ['USSURVEYFOOT', 'USSURVEYFEET', 'USSURVEYFT', 'USFOOT', 'USFEET', 'USFT', 'FTUS']) {
66
+ table.set(alias, 'US SURVEY FOOT');
67
+ }
68
+ return table;
69
+ })();
70
+ /**
71
+ * Canonicalize a map-unit label to the spelling the rest of this module
72
+ * compares against: American `METER` to `METRE`, the foot spellings to `FOOT`,
73
+ * the US survey foot to `US SURVEY FOOT`, and an SI prefix kept rather than
74
+ * swallowed. Anything not recognised is returned normalised-but-unchanged, for
75
+ * the caller to REFUSE rather than guess at.
76
+ *
77
+ * The label is NORMALISED and then matched EXACTLY — never substring-matched.
78
+ *
79
+ * What the normalisation accepts:
80
+ * - any case and any separators: `metres`, `Meters`, `MILLI-METRE`;
81
+ * - `METRE` and `METER`, each carrying any `IfcSIPrefix` member;
82
+ * - `FOOT` and `FEET`;
83
+ * - one English plural suffix, stripped once and re-matched exactly;
84
+ * - the US survey foot, glued or separated in any word order.
85
+ *
86
+ * What it REFUSES, by leaving the label alone so `resolveMapUnitReference`
87
+ * returns `null` and `MapUnit` stays `$` with a warning:
88
+ * - a label that merely CONTAINS a unit. `MILLIMETRE`, `CENTIMETRE` and
89
+ * `KILOMETRE` all contain `METRE`, and an `includes('METRE')` test wrote all
90
+ * three into the file as a plain `.METRE.` — a silent 1000x error in the CRS
91
+ * scale (#3274). The foot half of that same test was `includes('FOOT')`, and
92
+ * it was satisfied by `FOOTCANDLE` (an illuminance), `FOOT-POUND` (an
93
+ * energy), `FOOTPRINT`, and by `SQUARE FOOT` and `CUBIC FEET` — an area and
94
+ * a volume written as a LENGTH unit, which is a wrong DIMENSION rather than
95
+ * a wrong magnitude, and no scale factor can be right for it;
96
+ * - a survey foot with no nationality: `SURVEY FOOT`, `CLARKE'S FOOT`,
97
+ * `INDIAN FOOT`, `SEARS FOOT`, `BRITISH FOOT (1936)` are five different
98
+ * ratios, and `includes('FOOT')` gave every one of them the international
99
+ * 0.3048;
100
+ * - `INCH`, `YARD`, `MILE` and anything else this exporter cannot express.
101
+ *
102
+ * Normalising a recognisable spelling onto a table entry is NOT that
103
+ * approximation: the answer is still one exact table hit, so `MILLIMETERS`
104
+ * resolves to `MILLIMETRE` and not to `METRE`.
105
+ *
106
+ * Sibling of `inferMapUnitScaleFromLabel` in
107
+ * packages/parser/src/map-unit-label.ts and `infer_map_unit_scale` in
108
+ * rust/core/src/unit_labels.rs, which apply these same rules on the reading
109
+ * side. This exporter's accepted set is the smaller one — it writes only what
110
+ * it can express as an `IfcNamedUnit` — but no spelling may be accepted here
111
+ * that those refuse, or refused here that those accept as a length.
112
+ */
113
+ export function normalizeMapUnitName(unitName) {
114
+ const normalized = unitName.trim().toUpperCase().replace(/\s+/g, ' ');
115
+ const tokens = tokenizeUnitLabel(normalized);
116
+ if (tokens.length === 0)
117
+ return normalized;
118
+ if (isUsSurveyFootTokens(tokens))
119
+ return 'US SURVEY FOOT';
120
+ const key = tokens.join('');
121
+ const exact = MAP_UNIT_CANONICAL_NAME.get(key);
122
+ if (exact !== undefined)
123
+ return exact;
124
+ // One English plural suffix, removed once and re-matched exactly. `ES`
125
+ // covers spellings whose singular is not reachable by dropping a single `S`.
126
+ for (const suffix of ['S', 'ES']) {
127
+ if (!key.endsWith(suffix))
128
+ continue;
129
+ const singular = MAP_UNIT_CANONICAL_NAME.get(key.slice(0, -suffix.length));
130
+ if (singular !== undefined)
131
+ return singular;
132
+ }
133
+ return normalized;
134
+ }
135
+ /** Resolve only an assigned source length unit, matching STEP writer eligibility.
136
+ * Overlay-created projects/assignments/units cannot supply source STEP bytes;
137
+ * `projectIds` must already contain only current effective IfcProject ids,
138
+ * with deleted/retyped projects excluded (use iterateEffectiveEntities).
139
+ * `isDeleted` filters assignment/unit references, not the project inventory.
140
+ * Deleted references and unsupported names return null. #7355 */
141
+ export function findSourceProjectLengthUnit(preferredUnitName, store, projectIds, isDeleted) {
142
+ const extractor = new EntityExtractor(store.source);
143
+ // An empty label is not a unit name, and it is reachable: the caller guards
144
+ // `crs.mapUnit !== undefined`, not `!== ''`, and `normalizeMapUnitName('')`
145
+ // is `''`. Both comparisons below fold a non-string Name attribute to `''`
146
+ // too, so without this an empty MapUnit binds to whichever unit happens to
147
+ // have a malformed name rather than to nothing.
148
+ if (preferredUnitName === '')
149
+ return null;
150
+ // Only source records carry the bytes `extractEntity` reads, so an
151
+ // overlay-created project is skipped rather than shadowing the file's own.
152
+ // @raw-entity-enumeration-ok the effective project set is filtered to source records because this fallback must decode source STEP bytes
153
+ const projectId = projectIds.find((id) => store.entityIndex.byId.has(id));
154
+ // @raw-entity-enumeration-ok point lookup for the chosen source project's byte span
155
+ const projectRef = projectId !== undefined ? store.entityIndex.byId.get(projectId) : undefined;
156
+ const project = projectRef ? extractor.extractEntity(projectRef) : null;
157
+ const unitAssignmentId = project?.attributes?.[8];
158
+ if (typeof unitAssignmentId !== 'number' || isDeleted(unitAssignmentId))
159
+ return null;
160
+ // @raw-entity-enumeration-ok point lookup for the source UnitAssignment referenced by that project
161
+ const unitAssignmentRef = store.entityIndex.byId.get(unitAssignmentId);
162
+ const unitAssignment = unitAssignmentRef ? extractor.extractEntity(unitAssignmentRef) : null;
163
+ const units = unitAssignment?.attributes?.[0];
164
+ if (!Array.isArray(units))
165
+ return null;
166
+ for (const unitId of units) {
167
+ if (typeof unitId !== 'number' || isDeleted(unitId))
168
+ continue;
169
+ // @raw-entity-enumeration-ok point lookup for each referenced source unit after effective deletion filtering
170
+ const unitRef = store.entityIndex.byId.get(unitId);
171
+ const unit = unitRef ? extractor.extractEntity(unitRef) : null;
172
+ if (!unit)
173
+ continue;
174
+ const typeName = unit.type.toUpperCase();
175
+ const attrs = unit.attributes ?? [];
176
+ const unitType = typeof attrs[1] === 'string' ? attrs[1].replace(/\./g, '').toUpperCase() : '';
177
+ if (unitType !== 'LENGTHUNIT')
178
+ continue;
179
+ if (typeName === 'IFCSIUNIT') {
180
+ const prefix = typeof attrs[2] === 'string' ? attrs[2].replace(/\./g, '').toUpperCase() : '';
181
+ const name = typeof attrs[3] === 'string' ? attrs[3].replace(/\./g, '').toUpperCase() : '';
182
+ // The prefix is part of the unit, so it is part of the comparison. The
183
+ // old test asked only whether the preferred name was `METRE` and the
184
+ // file's unit was a metre of any prefix, which both missed a reusable
185
+ // `.MILLI.` unit and would have matched one for a plain-metre request
186
+ // had `combined` been read (#3274).
187
+ const combined = prefix ? `${prefix}${name}` : name;
188
+ if (normalizeMapUnitName(combined) === preferredUnitName) {
189
+ return unitId;
190
+ }
191
+ }
192
+ if (typeName === 'IFCCONVERSIONBASEDUNIT') {
193
+ const name = typeof attrs[2] === 'string' ? normalizeMapUnitName(attrs[2]) : '';
194
+ if (name === preferredUnitName) {
195
+ return unitId;
196
+ }
197
+ }
198
+ }
199
+ return null;
200
+ }
201
+ //# sourceMappingURL=source-project-length-unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-project-length-unit.js","sourceRoot":"","sources":["../src/source-project-length-unit.ts"],"names":[],"mappings":"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"}
@@ -226,7 +226,7 @@ export function extractStructuralOnDemand(store, view) {
226
226
  ...rootFields(e),
227
227
  appliedCondition: conditionId === undefined
228
228
  ? undefined
229
- : extractBoundaryCondition(extractor, store, conditionId),
229
+ : extractBoundaryCondition(extractor, store, conditionId, view ? id => readRaw(id, effectiveTypeById.get(id) ?? store.entities.getTypeName(id)) : undefined),
230
230
  memberGlobalIds: membersOfConnection.get(e.expressId) ?? [],
231
231
  activityGlobalIds: activitiesOfItem.get(e.expressId) ?? [],
232
232
  analysisModelGlobalIds: modelsOf(e.expressId),
@@ -243,7 +243,7 @@ export function extractStructuralOnDemand(store, view) {
243
243
  predefinedType: asEnum(readAttr(e.type, e.attrs, 'PredefinedType')),
244
244
  globalOrLocal: asEnum(readAttr(e.type, e.attrs, 'GlobalOrLocal')),
245
245
  destabilizingLoad: asBoolean(readAttr(e.type, e.attrs, 'DestabilizingLoad')),
246
- appliedLoad: loadId === undefined ? undefined : extractStructuralLoad(extractor, store, loadId),
246
+ appliedLoad: loadId === undefined ? undefined : extractStructuralLoad(extractor, store, loadId, view ? id => readRaw(id, effectiveTypeById.get(id) ?? store.entities.getTypeName(id)) : undefined),
247
247
  appliesToGlobalId: itemOfActivity.get(e.expressId),
248
248
  groupGlobalIds: groupsOfObject.get(e.expressId) ?? [],
249
249
  };
@@ -1 +1 @@
1
- {"version":3,"file":"structural-extractor.js","sourceRoot":"","sources":["../src/structural-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structural-extractor.js","sourceRoot":"","sources":["../src/structural-extractor.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ export type StructuralLoadDropReason =
50
50
  | 'cycle'
51
51
  /** The node budget for this top-level load was spent before this slot. */
52
52
  | 'budget'
53
- /** The slot is not an entity reference at all (`$`, an inline value, …). */
53
+ /** The slot is not a structural-load reference (`$`, an inline value, or a different IFC class). */
54
54
  | 'invalid-reference'
55
55
  /** The referenced expressId is in no index — a dangling reference. */
56
56
  | 'unresolved'
@@ -141,7 +141,13 @@ export interface BoundaryConditionInfo {
141
141
  * there. Only the three bounds set `truncated`, since only they mean the file
142
142
  * holds more than this reader agreed to walk.
143
143
  */
144
- export declare function extractStructuralLoad(extractor: EntityExtractor, store: IfcDataStore, expressId: number): StructuralLoadInfo | undefined;
144
+ export declare function extractStructuralLoad(extractor: EntityExtractor, store: IfcDataStore, expressId: number, readEntity?: (expressId: number) => {
145
+ type: string;
146
+ attrs: unknown[];
147
+ } | undefined): StructuralLoadInfo | undefined;
145
148
  /** Read one `IfcBoundaryCondition` entity by expressId. */
146
- export declare function extractBoundaryCondition(extractor: EntityExtractor, store: IfcDataStore, expressId: number): BoundaryConditionInfo | undefined;
149
+ export declare function extractBoundaryCondition(extractor: EntityExtractor, store: IfcDataStore, expressId: number, readEntity?: (expressId: number) => {
150
+ type: string;
151
+ attrs: unknown[];
152
+ } | undefined): BoundaryConditionInfo | undefined;
147
153
  //# sourceMappingURL=structural-load-extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structural-load-extractor.d.ts","sourceRoot":"","sources":["../src/structural-load-extractor.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAkBzD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,aAAa,CAAC,EAAE,+BAA+B,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB;AAClC,2EAA2E;AACzE,OAAO;AACT,oEAAoE;GAClE,OAAO;AACT,0EAA0E;GACxE,QAAQ;AACV,4EAA4E;GAC1E,mBAAmB;AACrB,sEAAsE;GACpE,YAAY;AACd,0DAA0D;GACxD,YAAY,CAAC;AAEjB,mFAAmF;AACnF,MAAM,WAAW,gCAAgC;IAC/C,+DAA+D;IAC/D,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,uEAAuE;IACvE,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,4EAA4E;AAC5E,MAAM,WAAW,+BAA+B;IAC9C;;;;;;;OAOG;IACH,OAAO,EAAE,gCAAgC,EAAE,CAAC;IAC5C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACvB;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC9C;AA0BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,kBAAkB,GAAG,SAAS,CAEhC;AA+FD,2DAA2D;AAC3D,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,qBAAqB,GAAG,SAAS,CA2BnC"}
1
+ {"version":3,"file":"structural-load-extractor.d.ts","sourceRoot":"","sources":["../src/structural-load-extractor.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAkBzD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,aAAa,CAAC,EAAE,+BAA+B,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB;AAClC,2EAA2E;AACzE,OAAO;AACT,oEAAoE;GAClE,OAAO;AACT,0EAA0E;GACxE,QAAQ;AACV,oGAAoG;GAClG,mBAAmB;AACrB,sEAAsE;GACpE,YAAY;AACd,0DAA0D;GACxD,YAAY,CAAC;AAEjB,mFAAmF;AACnF,MAAM,WAAW,gCAAgC;IAC/C,+DAA+D;IAC/D,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,uEAAuE;IACvE,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,4EAA4E;AAC5E,MAAM,WAAW,+BAA+B;IAC9C;;;;;;;OAOG;IACH,OAAO,EAAE,gCAAgC,EAAE,CAAC;IAC5C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACvB;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC9C;AA0BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG,SAAS,GACjF,kBAAkB,GAAG,SAAS,CAEhC;AAwGD,2DAA2D;AAC3D,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG,SAAS,GACjF,qBAAqB,GAAG,SAAS,CAwBnC"}
@@ -1,8 +1,8 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
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
- import { getAttributeNames, normalizeIfcTypeName } from './ifc-schema.js';
5
- import { asBoolean, asNumber, asString } from './structural-step-values.js';
4
+ import { getAttributeNames, getInheritanceChain, normalizeIfcTypeName } from './ifc-schema.js';
5
+ import { asBoolean, asNumber, asRef, asString } from './structural-step-values.js';
6
6
  /** Attributes that every load/condition carries from its supertype, not a component. */
7
7
  const NAME_ATTR = 'Name';
8
8
  /**
@@ -66,26 +66,26 @@ const MAX_LOAD_NODES = 256;
66
66
  * there. Only the three bounds set `truncated`, since only they mean the file
67
67
  * holds more than this reader agreed to walk.
68
68
  */
69
- export function extractStructuralLoad(extractor, store, expressId) {
70
- return readLoad(extractor, store, expressId, new Set(), { remaining: MAX_LOAD_NODES }, 0).value;
69
+ export function extractStructuralLoad(extractor, store, expressId, readEntity) {
70
+ return readLoad(extractor, store, expressId, new Set(), { remaining: MAX_LOAD_NODES }, 0, readEntity).value;
71
71
  }
72
- function readLoad(extractor, store, expressId, path, budget, depth) {
72
+ function readLoad(extractor, store, expressId, path, budget, depth, readEntity) {
73
73
  if (depth > MAX_LOAD_DEPTH)
74
74
  return { dropped: 'depth', truncated: true };
75
75
  if (path.has(expressId))
76
76
  return { dropped: 'cycle', truncated: true };
77
77
  if (budget.remaining <= 0)
78
78
  return { dropped: 'budget', truncated: true };
79
- // @raw-entity-enumeration-ok bounded source reference walk needs this STEP byte span for EntityExtractor
80
- const ref = store.entityIndex.byId.get(expressId);
81
- if (!ref)
82
- return { dropped: 'unresolved', truncated: false };
83
- const entity = extractor.extractEntity(ref);
79
+ const source = readEntity ? undefined : sourceLoadRecord(extractor, store, expressId);
80
+ const entity = readEntity ? readEntity(expressId) : source?.record;
84
81
  if (!entity)
85
- return { dropped: 'unreadable', truncated: false };
82
+ return { dropped: source?.dropped ?? 'unresolved', truncated: false };
86
83
  budget.remaining--;
87
84
  const type = normalizeIfcTypeName(entity.type);
88
- const attrs = entity.attributes || [];
85
+ if (type !== 'IfcStructuralLoad' && !getInheritanceChain(type).includes('IfcStructuralLoad')) {
86
+ return { dropped: 'invalid-reference', truncated: false };
87
+ }
88
+ const attrs = entity.attrs;
89
89
  if (type.toUpperCase() === 'IFCSTRUCTURALLOADCONFIGURATION') {
90
90
  const locations = readLocations(attrs[LOAD_CONFIGURATION_ATTR.Locations]);
91
91
  const entries = [];
@@ -99,8 +99,8 @@ function readLoad(extractor, store, expressId, path, budget, depth) {
99
99
  const v = values[i];
100
100
  const row = locations?.[i];
101
101
  const location = row && row.length > 0 ? row : undefined; // empty = placeholder for an unusable row
102
- const slot = typeof v === 'number' && Number.isInteger(v) && v > 0
103
- ? readLoad(extractor, store, v, path, budget, depth + 1)
102
+ const slot = asRef(v) !== undefined
103
+ ? readLoad(extractor, store, asRef(v), path, budget, depth + 1, readEntity)
104
104
  : { dropped: 'invalid-reference', truncated: false };
105
105
  if (slot.truncated)
106
106
  truncated = true;
@@ -146,17 +146,23 @@ function readNumericComponents(type, attrs) {
146
146
  }
147
147
  return components;
148
148
  }
149
- /** Read one `IfcBoundaryCondition` entity by expressId. */
150
- export function extractBoundaryCondition(extractor, store, expressId) {
151
- // @raw-entity-enumeration-ok boundary condition is decoded from one source STEP record
152
- const ref = store.entityIndex.byId.get(expressId);
149
+ function sourceLoadRecord(extractor, store, id) {
150
+ // @raw-entity-enumeration-ok bounded source reference walk needs this STEP byte span for EntityExtractor
151
+ const ref = store.entityIndex.byId.get(id);
153
152
  if (!ref)
154
- return undefined;
153
+ return { dropped: 'unresolved' };
155
154
  const entity = extractor.extractEntity(ref);
155
+ return { record: entity ? { type: entity.type, attrs: entity.attributes ?? [] } : undefined, dropped: 'unreadable' };
156
+ }
157
+ /** Read one `IfcBoundaryCondition` entity by expressId. */
158
+ export function extractBoundaryCondition(extractor, store, expressId, readEntity) {
159
+ const entity = readEntity ? readEntity(expressId) : sourceLoadRecord(extractor, store, expressId).record;
156
160
  if (!entity)
157
161
  return undefined;
158
162
  const type = normalizeIfcTypeName(entity.type);
159
- const attrs = entity.attributes || [];
163
+ if (type !== 'IfcBoundaryCondition' && !getInheritanceChain(type).includes('IfcBoundaryCondition'))
164
+ return undefined;
165
+ const attrs = entity.attrs;
160
166
  const components = {};
161
167
  const names = getAttributeNames(type);
162
168
  for (let i = 0; i < names.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"structural-load-extractor.js","sourceRoot":"","sources":["../src/structural-load-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structural-load-extractor.js","sourceRoot":"","sources":["../src/structural-load-extractor.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,3 @@
1
- /**
2
- * STEP value coercions and schema-derived attribute lookup shared by the
3
- * structural extractor and its load/boundary-condition reader.
4
- *
5
- * Shared rather than duplicated per module on purpose: the two readers walk
6
- * the same `EntityExtractor` output, so a coercion that disagreed between them
7
- * — one accepting `.T.` as a boolean, the other not — would be invisible until
8
- * a file exercised both paths over one value.
9
- */
10
1
  import type { EntityExtractor } from './entity-extractor.js';
11
2
  import type { IfcDataStore } from './columnar-parser.js';
12
3
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"structural-step-values.d.ts","sourceRoot":"","sources":["../src/structural-step-values.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKnD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAM7D;AAED,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKzD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAExD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAQlD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGlF;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAOtF;AAED,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,SAAS,EAAE,CAiBb"}
1
+ {"version":3,"file":"structural-step-values.d.ts","sourceRoot":"","sources":["../src/structural-step-values.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKnD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAM7D;AAED,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKzD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGxD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAQlD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGlF;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAOtF;AAED,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,SAAS,EAAE,CAiBb"}
@@ -1,6 +1,16 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
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
+ /**
5
+ * STEP value coercions and schema-derived attribute lookup shared by the
6
+ * structural extractor and its load/boundary-condition reader.
7
+ *
8
+ * Shared rather than duplicated per module on purpose: the two readers walk
9
+ * the same `EntityExtractor` output, so a coercion that disagreed between them
10
+ * — one accepting `.T.` as a boolean, the other not — would be invisible until
11
+ * a file exercised both paths over one value.
12
+ */
13
+ import { getReference } from './attribute-helpers.js';
4
14
  import { getAttributeNames, normalizeIfcTypeName } from './ifc-schema.js';
5
15
  /**
6
16
  * Unwrap a STEP typed value. `EntityExtractor` returns `IFCFORCEMEASURE(-100.)`
@@ -40,7 +50,9 @@ export function asEnum(value) {
40
50
  return m ? m[1] : undefined;
41
51
  }
42
52
  export function asRef(value) {
43
- return typeof value === 'number' && Number.isInteger(value) && value > 0 ? value : undefined;
53
+ if (typeof value === 'string' && !/^#\d+$/.test(value.trim()))
54
+ return undefined;
55
+ return getReference(typeof value === 'string' ? value.trim() : value);
44
56
  }
45
57
  export function asRefList(value) {
46
58
  if (!Array.isArray(value))
@@ -1 +1 @@
1
- {"version":3,"file":"structural-step-values.js","sourceRoot":"","sources":["../src/structural-step-values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structural-step-values.js","sourceRoot":"","sources":["../src/structural-step-values.ts"],"names":[],"mappings":"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"}