@ifc-lite/ids 3.2.0 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/README.md +10 -1
  2. package/dist/audit/coherence/cardinality.js +4 -1
  3. package/dist/audit/coherence/cardinality.js.map +1 -1
  4. package/dist/audit/coherence/index.d.ts +0 -1
  5. package/dist/audit/coherence/index.d.ts.map +1 -1
  6. package/dist/audit/coherence/index.js +59 -45
  7. package/dist/audit/coherence/index.js.map +1 -1
  8. package/dist/audit/coherence/regex.d.ts +3 -3
  9. package/dist/audit/coherence/regex.js +3 -3
  10. package/dist/audit/ifc-schema/attribute-value.d.ts +19 -0
  11. package/dist/audit/ifc-schema/attribute-value.d.ts.map +1 -0
  12. package/dist/audit/ifc-schema/attribute-value.js +71 -0
  13. package/dist/audit/ifc-schema/attribute-value.js.map +1 -0
  14. package/dist/audit/ifc-schema/datatype-check.d.ts +9 -1
  15. package/dist/audit/ifc-schema/datatype-check.d.ts.map +1 -1
  16. package/dist/audit/ifc-schema/datatype-check.js +24 -2
  17. package/dist/audit/ifc-schema/datatype-check.js.map +1 -1
  18. package/dist/audit/ifc-schema/entity-requirement.d.ts +21 -0
  19. package/dist/audit/ifc-schema/entity-requirement.d.ts.map +1 -0
  20. package/dist/audit/ifc-schema/entity-requirement.js +45 -0
  21. package/dist/audit/ifc-schema/entity-requirement.js.map +1 -0
  22. package/dist/audit/ifc-schema/index.d.ts.map +1 -1
  23. package/dist/audit/ifc-schema/index.js +105 -19
  24. package/dist/audit/ifc-schema/index.js.map +1 -1
  25. package/dist/audit/index.d.ts.map +1 -1
  26. package/dist/audit/index.js +8 -2
  27. package/dist/audit/index.js.map +1 -1
  28. package/dist/audit/parser-shim.d.ts +15 -1
  29. package/dist/audit/parser-shim.d.ts.map +1 -1
  30. package/dist/audit/parser-shim.js +2 -2
  31. package/dist/audit/parser-shim.js.map +1 -1
  32. package/dist/audit/structural/index.d.ts +3 -1
  33. package/dist/audit/structural/index.d.ts.map +1 -1
  34. package/dist/audit/structural/index.js +48 -179
  35. package/dist/audit/structural/index.js.map +1 -1
  36. package/dist/audit/structural/shapes.d.ts +47 -0
  37. package/dist/audit/structural/shapes.d.ts.map +1 -0
  38. package/dist/audit/structural/shapes.js +185 -0
  39. package/dist/audit/structural/shapes.js.map +1 -0
  40. package/dist/audit/types.d.ts +9 -1
  41. package/dist/audit/types.d.ts.map +1 -1
  42. package/dist/audit/xsd/index.js +1 -1
  43. package/dist/audit/xsd/index.js.map +1 -1
  44. package/dist/bridge/data-accessor.d.ts.map +1 -1
  45. package/dist/bridge/data-accessor.js +49 -25
  46. package/dist/bridge/data-accessor.js.map +1 -1
  47. package/dist/bridge/index.d.ts +1 -0
  48. package/dist/bridge/index.d.ts.map +1 -1
  49. package/dist/bridge/index.js +1 -0
  50. package/dist/bridge/index.js.map +1 -1
  51. package/dist/bridge/measure-conversion.d.ts +51 -0
  52. package/dist/bridge/measure-conversion.d.ts.map +1 -0
  53. package/dist/bridge/measure-conversion.js +106 -0
  54. package/dist/bridge/measure-conversion.js.map +1 -0
  55. package/dist/bridge/predefined-property-sets.d.ts +24 -0
  56. package/dist/bridge/predefined-property-sets.d.ts.map +1 -0
  57. package/dist/bridge/predefined-property-sets.js +86 -0
  58. package/dist/bridge/predefined-property-sets.js.map +1 -0
  59. package/dist/bridge/predefined-types.d.ts +34 -13
  60. package/dist/bridge/predefined-types.d.ts.map +1 -1
  61. package/dist/bridge/predefined-types.js +40 -71
  62. package/dist/bridge/predefined-types.js.map +1 -1
  63. package/dist/bridge/project-property.d.ts +43 -0
  64. package/dist/bridge/project-property.d.ts.map +1 -0
  65. package/dist/bridge/project-property.js +60 -0
  66. package/dist/bridge/project-property.js.map +1 -0
  67. package/dist/bridge/properties.d.ts +4 -3
  68. package/dist/bridge/properties.d.ts.map +1 -1
  69. package/dist/bridge/properties.js +64 -111
  70. package/dist/bridge/properties.js.map +1 -1
  71. package/dist/bridge/property-overlay-resolver.d.ts +10 -0
  72. package/dist/bridge/property-overlay-resolver.d.ts.map +1 -1
  73. package/dist/bridge/property-overlay-resolver.js +53 -4
  74. package/dist/bridge/property-overlay-resolver.js.map +1 -1
  75. package/dist/bridge/units.d.ts +49 -20
  76. package/dist/bridge/units.d.ts.map +1 -1
  77. package/dist/bridge/units.js +134 -84
  78. package/dist/bridge/units.js.map +1 -1
  79. package/dist/constraint-types.d.ts +30 -14
  80. package/dist/constraint-types.d.ts.map +1 -1
  81. package/dist/constraints/comparators.d.ts +4 -1
  82. package/dist/constraints/comparators.d.ts.map +1 -1
  83. package/dist/constraints/comparators.js +6 -1
  84. package/dist/constraints/comparators.js.map +1 -1
  85. package/dist/constraints/describe.d.ts.map +1 -1
  86. package/dist/constraints/describe.js +67 -21
  87. package/dist/constraints/describe.js.map +1 -1
  88. package/dist/constraints/match-bounds.d.ts +25 -0
  89. package/dist/constraints/match-bounds.d.ts.map +1 -0
  90. package/dist/constraints/match-bounds.js +112 -0
  91. package/dist/constraints/match-bounds.js.map +1 -0
  92. package/dist/constraints/match-family.d.ts.map +1 -1
  93. package/dist/constraints/match-family.js +25 -90
  94. package/dist/constraints/match-family.js.map +1 -1
  95. package/dist/constraints/xsd-datetime.js +6 -6
  96. package/dist/constraints/xsd-examples.d.ts +20 -0
  97. package/dist/constraints/xsd-examples.d.ts.map +1 -0
  98. package/dist/constraints/xsd-examples.js +187 -0
  99. package/dist/constraints/xsd-examples.js.map +1 -0
  100. package/dist/constraints/xsd-lexical.d.ts +2 -0
  101. package/dist/constraints/xsd-lexical.d.ts.map +1 -0
  102. package/dist/constraints/xsd-lexical.js +49 -0
  103. package/dist/constraints/xsd-lexical.js.map +1 -0
  104. package/dist/constraints/xsd-order.d.ts +33 -0
  105. package/dist/constraints/xsd-order.d.ts.map +1 -0
  106. package/dist/constraints/xsd-order.js +211 -0
  107. package/dist/constraints/xsd-order.js.map +1 -0
  108. package/dist/constraints/xsd-regex-ast.d.ts +37 -0
  109. package/dist/constraints/xsd-regex-ast.d.ts.map +1 -0
  110. package/dist/constraints/xsd-regex-ast.js +137 -0
  111. package/dist/constraints/xsd-regex-ast.js.map +1 -0
  112. package/dist/constraints/xsd-regex-blocks.d.ts +7 -0
  113. package/dist/constraints/xsd-regex-blocks.d.ts.map +1 -0
  114. package/dist/constraints/xsd-regex-blocks.js +68 -0
  115. package/dist/constraints/xsd-regex-blocks.js.map +1 -0
  116. package/dist/constraints/xsd-regex.d.ts +2 -45
  117. package/dist/constraints/xsd-regex.d.ts.map +1 -1
  118. package/dist/constraints/xsd-regex.js +231 -134
  119. package/dist/constraints/xsd-regex.js.map +1 -1
  120. package/dist/facets/entity-facet.d.ts.map +1 -1
  121. package/dist/facets/entity-facet.js +4 -1
  122. package/dist/facets/entity-facet.js.map +1 -1
  123. package/dist/facets/partof-facet.d.ts.map +1 -1
  124. package/dist/facets/partof-facet.js +80 -19
  125. package/dist/facets/partof-facet.js.map +1 -1
  126. package/dist/facets/predefined-type-match.d.ts +8 -3
  127. package/dist/facets/predefined-type-match.d.ts.map +1 -1
  128. package/dist/facets/predefined-type-match.js.map +1 -1
  129. package/dist/index.d.ts +8 -2
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +23 -0
  132. package/dist/index.js.map +1 -1
  133. package/dist/parser/dom.d.ts +4 -0
  134. package/dist/parser/dom.d.ts.map +1 -1
  135. package/dist/parser/dom.js +5 -0
  136. package/dist/parser/dom.js.map +1 -1
  137. package/dist/parser/parse-restriction.d.ts.map +1 -1
  138. package/dist/parser/parse-restriction.js +32 -14
  139. package/dist/parser/parse-restriction.js.map +1 -1
  140. package/dist/parser/xml-parser.d.ts +7 -4
  141. package/dist/parser/xml-parser.d.ts.map +1 -1
  142. package/dist/parser/xml-parser.js +30 -45
  143. package/dist/parser/xml-parser.js.map +1 -1
  144. package/dist/preview/audit.d.ts +16 -0
  145. package/dist/preview/audit.d.ts.map +1 -0
  146. package/dist/preview/audit.js +58 -0
  147. package/dist/preview/audit.js.map +1 -0
  148. package/dist/preview/features.d.ts +30 -0
  149. package/dist/preview/features.d.ts.map +1 -0
  150. package/dist/preview/features.js +96 -0
  151. package/dist/preview/features.js.map +1 -0
  152. package/dist/preview/parse-ids11.d.ts +9 -0
  153. package/dist/preview/parse-ids11.d.ts.map +1 -0
  154. package/dist/preview/parse-ids11.js +90 -0
  155. package/dist/preview/parse-ids11.js.map +1 -0
  156. package/dist/preview/partof-nested.d.ts +27 -0
  157. package/dist/preview/partof-nested.d.ts.map +1 -0
  158. package/dist/preview/partof-nested.js +61 -0
  159. package/dist/preview/partof-nested.js.map +1 -0
  160. package/dist/preview/tolerance.d.ts +15 -0
  161. package/dist/preview/tolerance.d.ts.map +1 -0
  162. package/dist/preview/tolerance.js +66 -0
  163. package/dist/preview/tolerance.js.map +1 -0
  164. package/dist/preview/types.d.ts +67 -0
  165. package/dist/preview/types.d.ts.map +1 -0
  166. package/dist/preview/types.js +5 -0
  167. package/dist/preview/types.js.map +1 -0
  168. package/dist/translation/describe-constraint.js +16 -14
  169. package/dist/translation/describe-constraint.js.map +1 -1
  170. package/dist/translation/locales/de.d.ts +2 -0
  171. package/dist/translation/locales/de.d.ts.map +1 -1
  172. package/dist/translation/locales/de.js +2 -0
  173. package/dist/translation/locales/de.js.map +1 -1
  174. package/dist/translation/locales/en.d.ts +2 -0
  175. package/dist/translation/locales/en.d.ts.map +1 -1
  176. package/dist/translation/locales/en.js +2 -0
  177. package/dist/translation/locales/en.js.map +1 -1
  178. package/dist/translation/locales/fr.d.ts +2 -0
  179. package/dist/translation/locales/fr.d.ts.map +1 -1
  180. package/dist/translation/locales/fr.js +2 -0
  181. package/dist/translation/locales/fr.js.map +1 -1
  182. package/dist/translation/locales/index.d.ts +1 -0
  183. package/dist/translation/locales/index.d.ts.map +1 -1
  184. package/dist/translation/locales/index.js +1 -0
  185. package/dist/translation/locales/index.js.map +1 -1
  186. package/dist/translation/locales/it.d.ts +198 -0
  187. package/dist/translation/locales/it.d.ts.map +1 -0
  188. package/dist/translation/locales/it.js +235 -0
  189. package/dist/translation/locales/it.js.map +1 -0
  190. package/dist/translation/service.d.ts +2 -6
  191. package/dist/translation/service.d.ts.map +1 -1
  192. package/dist/translation/service.js +17 -25
  193. package/dist/translation/service.js.map +1 -1
  194. package/dist/types.d.ts +26 -31
  195. package/dist/types.d.ts.map +1 -1
  196. package/dist/validation/format-failure-reason.js +1 -1
  197. package/dist/validation/format-failure-reason.js.map +1 -1
  198. package/dist/validation/prohibited-specification.d.ts +31 -0
  199. package/dist/validation/prohibited-specification.d.ts.map +1 -0
  200. package/dist/validation/prohibited-specification.js +25 -0
  201. package/dist/validation/prohibited-specification.js.map +1 -0
  202. package/dist/validation/validator.d.ts.map +1 -1
  203. package/dist/validation/validator.js +14 -11
  204. package/dist/validation/validator.js.map +1 -1
  205. package/dist/writer/constraint.d.ts +8 -0
  206. package/dist/writer/constraint.d.ts.map +1 -0
  207. package/dist/writer/constraint.js +142 -0
  208. package/dist/writer/constraint.js.map +1 -0
  209. package/dist/writer/index.d.ts +48 -0
  210. package/dist/writer/index.d.ts.map +1 -0
  211. package/dist/writer/index.js +209 -0
  212. package/dist/writer/index.js.map +1 -0
  213. package/dist/writer/xml-lines.d.ts +17 -0
  214. package/dist/writer/xml-lines.d.ts.map +1 -0
  215. package/dist/writer/xml-lines.js +69 -0
  216. package/dist/writer/xml-lines.js.map +1 -0
  217. package/package.json +5 -5
@@ -1,84 +1,53 @@
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 { extractAllEntityAttributes } from '@ifc-lite/parser';
5
4
  import { RelationshipType } from '@ifc-lite/data';
6
- /**
7
- * Resolve the raw `PredefinedType` enum token (e.g. `USERDEFINED`,
8
- * `NOTDEFINED`, `BEAM`) for an entity, walking through
9
- * `IfcRelDefinesByType` if the instance has none of its own.
10
- *
11
- * Returns `undefined` when neither the instance nor its defining type
12
- * carry a predefined-type slot.
13
- */
14
- export function resolveRawPredefinedType(store, expressId) {
15
- const allAttrs = extractAllEntityAttributes(store, expressId);
16
- const pdt = allAttrs.find((a) => a.name === 'PredefinedType');
17
- const pdtValue = typeof pdt?.value === 'string' && pdt.value ? pdt.value : undefined;
18
- if (pdtValue && pdtValue !== 'NOTDEFINED')
19
- return pdtValue;
20
- // Inherit from the defining type (IfcRelDefinesByType).
21
- const typeIds = store.relationships?.getRelated?.(expressId, RelationshipType.DefinesByType, 'inverse') || [];
22
- for (const typeId of typeIds) {
23
- const typeAttrs = extractAllEntityAttributes(store, typeId);
24
- const typePdt = typeAttrs.find((a) => a.name === 'PredefinedType');
25
- const typeVal = typeof typePdt?.value === 'string' && typePdt.value
26
- ? typePdt.value
27
- : undefined;
28
- if (typeVal && typeVal !== 'NOTDEFINED')
29
- return typeVal;
5
+ const NONE = { raw: undefined, userDefined: undefined };
6
+ /** The user-defined name slot, in the order the IFC classes declare it. */
7
+ const USER_DEFINED_SLOTS = ['ElementType', 'ObjectType', 'ProcessType', 'ResourceType'];
8
+ function stringAttr(attrs, name) {
9
+ const value = attrs.find((a) => a.name === name)?.value;
10
+ return typeof value === 'string' && value ? value : undefined;
11
+ }
12
+ function fromEntity(attrs, raw) {
13
+ if (raw !== 'USERDEFINED')
14
+ return { raw, userDefined: undefined };
15
+ for (const slot of USER_DEFINED_SLOTS) {
16
+ const name = stringAttr(attrs, slot);
17
+ if (name)
18
+ return { raw, userDefined: name };
30
19
  }
31
- return pdtValue;
20
+ return { raw, userDefined: undefined };
32
21
  }
33
22
  /**
34
- * Resolve the IDS-side "object type" — either the predefined enum
35
- * value, or (when `USERDEFINED`) the user-defined name from the
36
- * adjacent `ElementType` / `ObjectType` / `ProcessType` /
37
- * `ResourceType` slot. Walks `IfcRelDefinesByType` if the instance
38
- * carries neither.
23
+ * Resolve an entity's predefined type by the IDS 1.0 rule (User Manual,
24
+ * entity facet, "The logic for the identification of predefinedType"):
25
+ *
26
+ * 1. If a type object related through `IfcRelDefinesByType` carries a
27
+ * `PredefinedType` (anything but unset or `NOTDEFINED`), it defines
28
+ * the predefined type — `USERDEFINED` reads the type's
29
+ * `ElementType` (or `ProcessType` / `ResourceType`).
30
+ * 2. Otherwise the occurrence's own `PredefinedType` applies —
31
+ * `USERDEFINED` reads its `ObjectType`.
32
+ * 3. Otherwise the entity has no predefined type.
33
+ *
34
+ * The user-defined name is consulted ONLY for `USERDEFINED`: an
35
+ * occurrence whose `PredefinedType` is unset or `NOTDEFINED` does not
36
+ * acquire one from a stray `ObjectType` (#7394).
37
+ *
38
+ * `attributesOf` is the accessor's (cached, overlay-aware) attribute
39
+ * reader, so a resolution costs no extra re-parse.
39
40
  */
40
- export function resolveObjectType(store, expressId, fallbackObjectType) {
41
- const allAttrs = extractAllEntityAttributes(store, expressId);
42
- const pdt = allAttrs.find((a) => a.name === 'PredefinedType');
43
- const pdtValue = pdt?.value;
44
- if (typeof pdtValue === 'string' &&
45
- pdtValue &&
46
- pdtValue !== 'NOTDEFINED' &&
47
- pdtValue !== 'USERDEFINED') {
48
- return pdtValue;
49
- }
50
- const userSlot = allAttrs.find((a) => a.name === 'ElementType') ||
51
- allAttrs.find((a) => a.name === 'ObjectType') ||
52
- allAttrs.find((a) => a.name === 'ProcessType') ||
53
- allAttrs.find((a) => a.name === 'ResourceType');
54
- if (userSlot && typeof userSlot.value === 'string' && userSlot.value) {
55
- return userSlot.value;
56
- }
57
- // Inherit from defining type when the instance has neither.
41
+ export function resolvePredefinedType(store, expressId, attributesOf) {
58
42
  const typeIds = store.relationships?.getRelated?.(expressId, RelationshipType.DefinesByType, 'inverse') || [];
59
43
  for (const typeId of typeIds) {
60
- const typeAttrs = extractAllEntityAttributes(store, typeId);
61
- const typePdt = typeAttrs.find((a) => a.name === 'PredefinedType');
62
- const typePdtValue = typePdt?.value;
63
- if (typeof typePdtValue === 'string' &&
64
- typePdtValue &&
65
- typePdtValue !== 'NOTDEFINED' &&
66
- typePdtValue !== 'USERDEFINED') {
67
- return typePdtValue;
68
- }
69
- const typeUserSlot = typeAttrs.find((a) => a.name === 'ElementType') ||
70
- typeAttrs.find((a) => a.name === 'ObjectType') ||
71
- typeAttrs.find((a) => a.name === 'ProcessType') ||
72
- typeAttrs.find((a) => a.name === 'ResourceType');
73
- if (typeUserSlot &&
74
- typeof typeUserSlot.value === 'string' &&
75
- typeUserSlot.value) {
76
- return typeUserSlot.value;
77
- }
44
+ const typeAttrs = attributesOf(typeId);
45
+ const typeRaw = stringAttr(typeAttrs, 'PredefinedType');
46
+ if (typeRaw && typeRaw !== 'NOTDEFINED')
47
+ return fromEntity(typeAttrs, typeRaw);
78
48
  }
79
- const fallback = fallbackObjectType();
80
- if (fallback)
81
- return fallback;
82
- return typeof pdtValue === 'string' && pdtValue ? pdtValue : undefined;
49
+ const attrs = attributesOf(expressId);
50
+ const raw = stringAttr(attrs, 'PredefinedType');
51
+ return raw ? fromEntity(attrs, raw) : NONE;
83
52
  }
84
53
  //# sourceMappingURL=predefined-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"predefined-types.js","sourceRoot":"","sources":["../../src/bridge/predefined-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"predefined-types.js","sourceRoot":"","sources":["../../src/bridge/predefined-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAqBlD,MAAM,IAAI,GAA2B,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAEhF,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAExF,SAAS,UAAU,CAAC,KAAuB,EAAE,IAAY;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC;IACxD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED,SAAS,UAAU,CAAC,KAAuB,EAAE,GAAW;IACtD,IAAI,GAAG,KAAK,aAAa;QAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI;YAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAmB,EACnB,SAAiB,EACjB,YAAqD;IAErD,MAAM,OAAO,GACX,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,CAC/B,SAAS,EACT,gBAAgB,CAAC,aAAa,EAC9B,SAAS,CACV,IAAI,EAAE,CAAC;IACV,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACxD,IAAI,OAAO,IAAI,OAAO,KAAK,YAAY;YAAE,OAAO,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Projection of one raw parser property record into the validator's
3
+ * `PropertySetInfo['properties'][number]` shape: IDS dataType resolution and
4
+ * SI conversion (#7395). Split out of properties.ts to keep that module
5
+ * under its size budget.
6
+ */
7
+ import type { PropertySetInfo } from '../types.js';
8
+ import { type EntityMeasureScales } from './units.js';
9
+ export interface RawProp {
10
+ name: string;
11
+ value: unknown;
12
+ type: unknown;
13
+ values?: string[];
14
+ dataType?: string;
15
+ dataTypeMixed?: true;
16
+ /** IFC type of each entry of `values` when the members share none. */
17
+ valueDataTypes?: Array<string | undefined>;
18
+ /** The property's own explicit `Unit` symbol; `#<id>` when it could not be resolved. */
19
+ unit?: string;
20
+ /** SI factor of `unit`, only when it resolved. */
21
+ unitSiScale?: number;
22
+ /** Additive SI offset of `unit` (°F), when it has one. */
23
+ unitSiOffset?: number;
24
+ }
25
+ type ProjectedProperty = PropertySetInfo['properties'][number];
26
+ /** A property's own `Unit`, as the parser resolved it. */
27
+ export interface OwnUnit {
28
+ symbol: string;
29
+ siScale: number | undefined;
30
+ siOffset?: number;
31
+ }
32
+ export declare function ownUnitOf(prop: object): OwnUnit | undefined;
33
+ /** Carry `from`'s own unit over to a copy of it. */
34
+ export declare function copyOwnUnit(from: object, to: object): void;
35
+ /**
36
+ * Project a raw parser property record — applies SI conversion and resolves
37
+ * the IDS dataType (`idsDataTypeOf`). A declared own `Unit` replaces the
38
+ * project assignment for this value (#7395); only a value without one takes
39
+ * the project unit.
40
+ */
41
+ export declare function projectProperty(p: RawProp, scales: EntityMeasureScales): ProjectedProperty;
42
+ export {};
43
+ //# sourceMappingURL=project-property.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-property.d.ts","sourceRoot":"","sources":["../../src/bridge/project-property.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,sEAAsE;IACtE,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,iBAAiB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,0DAA0D;AAC1D,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE3D;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAG1D;AAcD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAG,iBAAiB,CAoB1F"}
@@ -0,0 +1,60 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { idsDataTypeForProperty } from './data-types.js';
5
+ import { applyOwnUnitConversion, applyUnitConversion, } from './units.js';
6
+ /**
7
+ * The own `Unit` of each projected property that declares one, keyed by the
8
+ * projected object. Kept off the public `PropertySetInfo` shape; an overlay
9
+ * correction reads it to convert its value in that unit rather than in the
10
+ * project's (see property-overlay-resolver.ts).
11
+ */
12
+ const ownUnits = new WeakMap();
13
+ export function ownUnitOf(prop) {
14
+ return ownUnits.get(prop);
15
+ }
16
+ /** Carry `from`'s own unit over to a copy of it. */
17
+ export function copyOwnUnit(from, to) {
18
+ const unit = ownUnits.get(from);
19
+ if (unit)
20
+ ownUnits.set(to, unit);
21
+ }
22
+ /**
23
+ * The IDS dataType of a raw property. The source's own tag wins. A
24
+ * multi-valued property without one is UNKNOWN: its display type says
25
+ * nothing about its members, so no type is invented. Only an explicit
26
+ * `dataTypeMixed` (a table) exempts a property from a dataType check (#5224).
27
+ */
28
+ function idsDataTypeOf(p) {
29
+ const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
30
+ const dataType = p.dataType ?? (hasMultiValue ? undefined : idsDataTypeForProperty(p.type));
31
+ return { dataType, ...(p.dataTypeMixed ? { dataTypeMixed: true } : {}) };
32
+ }
33
+ /**
34
+ * Project a raw parser property record — applies SI conversion and resolves
35
+ * the IDS dataType (`idsDataTypeOf`). A declared own `Unit` replaces the
36
+ * project assignment for this value (#7395); only a value without one takes
37
+ * the project unit.
38
+ */
39
+ export function projectProperty(p, scales) {
40
+ const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
41
+ const types = idsDataTypeOf(p);
42
+ const dataType = types.dataType;
43
+ const baseValue = Array.isArray(p.value)
44
+ ? JSON.stringify(p.value)
45
+ : p.value;
46
+ const baseValues = hasMultiValue ? p.values : undefined;
47
+ const converted = p.unit !== undefined
48
+ ? applyOwnUnitConversion(baseValue, baseValues, dataType, p.unitSiScale, p.unit, p.valueDataTypes, p.unitSiOffset)
49
+ : applyUnitConversion(baseValue, baseValues, dataType, scales.length, scales, p.valueDataTypes);
50
+ const out = {
51
+ name: p.name,
52
+ value: converted.value,
53
+ ...types,
54
+ ...(converted.values ? { values: converted.values } : {}),
55
+ };
56
+ if (p.unit !== undefined)
57
+ ownUnits.set(out, { symbol: p.unit, siScale: p.unitSiScale, siOffset: p.unitSiOffset });
58
+ return out;
59
+ }
60
+ //# sourceMappingURL=project-property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-property.js","sourceRoot":"","sources":["../../src/bridge/project-property.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,11 @@ import type { PropertySetInfo } from '../types.js';
10
10
  * IfcRelDefinesByProperties).
11
11
  * 2. Predefined property sets (IfcDoorPanelProperties etc.) where
12
12
  * the entity's schema-defined attributes act as property names.
13
- * 3. Inherited property sets from `IfcRelDefinesByType`.
13
+ * 3. Inherited property sets from `IfcRelDefinesByType`, predefined
14
+ * ones on the type included.
14
15
  *
15
- * Length-, area- and volume-typed properties are converted to base SI
16
- * units per the ENTITY'S OWN OWNING `IFCPROJECT`'s declared units — see
16
+ * Measure-typed properties are converted to base SI units per the
17
+ * ENTITY'S OWN OWNING `IFCPROJECT`'s declared units — see
17
18
  * `resolveEntityMeasureScales` — so IDS literals (always metre / m² / m³)
18
19
  * compare correctly even for an entity belonging to a later `IFCPROJECT`
19
20
  * in a multi-project (federated-merge) file.
@@ -1 +1 @@
1
- {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EASlB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyBnD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,eAAe,EAAE,CAmBnB"}
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,eAAe,EAAE,CAmBnB"}
@@ -1,21 +1,12 @@
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 { extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypePropertiesOnDemand, extractTypeEntityOwnProperties, extractAllEntityAttributes, extractMaterialPropertiesForMaterialId, mergeInheritedPropertySets, getAttributeTypeForSchema, } from '@ifc-lite/parser';
5
- import { RelationshipType } from '@ifc-lite/data';
6
- import { idsDataTypeForProperty, idsDataTypeForQuantity } from './data-types.js';
7
- import { applyUnitConversion, resolveEntityMeasureScales } from './units.js';
8
- /**
9
- * The IDS dataType of a raw property. The source's own tag wins. A
10
- * multi-valued property without one is UNKNOWN: its display type says
11
- * nothing about its members, so no type is invented. Only an explicit
12
- * `dataTypeMixed` (a table) exempts a property from a dataType check (#5224).
13
- */
14
- function idsDataTypeOf(p) {
15
- const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
16
- const dataType = p.dataType ?? (hasMultiValue ? undefined : idsDataTypeForProperty(p.type));
17
- return { dataType, ...(p.dataTypeMixed ? { dataTypeMixed: true } : {}) };
18
- }
4
+ import { extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypePropertiesOnDemand, extractTypeEntityOwnProperties, extractMaterialPropertiesForMaterialId, mergeInheritedPropertySets, } from '@ifc-lite/parser';
5
+ import { RelationshipType, exactTypeName } from '@ifc-lite/data';
6
+ import { idsDataTypeForQuantity } from './data-types.js';
7
+ import { appendPredefinedPropertySets, typePredefinedPropertySets } from './predefined-property-sets.js';
8
+ import { projectProperty } from './project-property.js';
9
+ import { resolveEntityMeasureScales } from './units.js';
19
10
  /**
20
11
  * IDS treats `IfcElementQuantity` (Qto_*) and `IfcPropertySet` (Pset_*)
21
12
  * uniformly — both surface as "property sets" with named values. The
@@ -26,29 +17,30 @@ function idsDataTypeOf(p) {
26
17
  * IfcRelDefinesByProperties).
27
18
  * 2. Predefined property sets (IfcDoorPanelProperties etc.) where
28
19
  * the entity's schema-defined attributes act as property names.
29
- * 3. Inherited property sets from `IfcRelDefinesByType`.
20
+ * 3. Inherited property sets from `IfcRelDefinesByType`, predefined
21
+ * ones on the type included.
30
22
  *
31
- * Length-, area- and volume-typed properties are converted to base SI
32
- * units per the ENTITY'S OWN OWNING `IFCPROJECT`'s declared units — see
23
+ * Measure-typed properties are converted to base SI units per the
24
+ * ENTITY'S OWN OWNING `IFCPROJECT`'s declared units — see
33
25
  * `resolveEntityMeasureScales` — so IDS literals (always metre / m² / m³)
34
26
  * compare correctly even for an entity belonging to a later `IFCPROJECT`
35
27
  * in a multi-project (federated-merge) file.
36
28
  */
37
29
  export function collectAllPropertySets(store, expressId) {
38
30
  const own = [];
39
- const { length: scale, ...measureScales } = resolveEntityMeasureScales(store, expressId);
40
- appendInstancePropertySets(store, expressId, scale, measureScales, own);
41
- appendQuantitySets(store, expressId, scale, measureScales, own);
42
- appendPredefinedPropertySets(store, expressId, own);
43
- appendMaterialOwnPropertySets(store, expressId, scale, measureScales, own);
31
+ const scales = resolveEntityMeasureScales(store, expressId);
32
+ appendInstancePropertySets(store, expressId, scales, own);
33
+ appendQuantitySets(store, expressId, scales, own);
34
+ appendPredefinedPropertySets(store, expressId, scales, own);
35
+ appendMaterialOwnPropertySets(store, expressId, scales, own);
44
36
  // Merged per property, not per set — see `mergeInheritedPropertySets`.
45
- const out = mergeInheritedPropertySets(own, inheritedPropertySets(store, expressId, scale, measureScales));
37
+ const out = mergeInheritedPropertySets(own, inheritedPropertySets(store, expressId, scales));
46
38
  if (out.length === 0) {
47
- appendTypeEntityOwnProperties(store, expressId, out);
39
+ appendTypeEntityOwnProperties(store, expressId, scales, out);
48
40
  }
49
41
  return out;
50
42
  }
51
- function appendInstancePropertySets(store, expressId, scale, measureScales, out) {
43
+ function appendInstancePropertySets(store, expressId, scales, out) {
52
44
  let props = store.properties?.getForEntity?.(expressId);
53
45
  if (!props || props.length === 0) {
54
46
  props = extractPropertiesOnDemand(store, expressId);
@@ -58,7 +50,7 @@ function appendInstancePropertySets(store, expressId, scale, measureScales, out)
58
50
  for (const pset of props) {
59
51
  out.push({
60
52
  name: pset.name,
61
- properties: (pset.properties || []).map((p) => projectProperty(p, scale, measureScales)),
53
+ properties: (pset.properties || []).map((p) => projectProperty(p, scales)),
62
54
  });
63
55
  }
64
56
  }
@@ -72,7 +64,7 @@ function appendInstancePropertySets(store, expressId, scale, measureScales, out)
72
64
  * inline, so the two paths can't drift again — see `applyUnitConversion`
73
65
  * in `units.ts` for the length/area/volume exponents.
74
66
  */
75
- function appendQuantitySets(store, expressId, scale, measureScales, out) {
67
+ function appendQuantitySets(store, expressId, scales, out) {
76
68
  let quantities = store.quantities?.getForEntity?.(expressId);
77
69
  if (!quantities || quantities.length === 0) {
78
70
  quantities = extractQuantitiesOnDemand(store, expressId);
@@ -82,53 +74,30 @@ function appendQuantitySets(store, expressId, scale, measureScales, out) {
82
74
  for (const qset of quantities) {
83
75
  out.push({
84
76
  name: qset.name,
85
- properties: (qset.quantities || []).map((q) => projectProperty({ name: q.name, value: q.value, type: undefined, dataType: idsDataTypeForQuantity(q.type) }, scale, measureScales)),
77
+ properties: (qset.quantities || []).map((q) => projectProperty({
78
+ name: q.name,
79
+ value: q.value,
80
+ type: undefined,
81
+ dataType: idsDataTypeForQuantity(q.type),
82
+ ...quantityOwnUnit(q),
83
+ }, scales)),
86
84
  });
87
85
  }
88
86
  }
89
87
  /**
90
- * Predefined property-set entities (`IfcDoorPanelProperties`, …) are
91
- * connected to elements via `IfcRelDefinesByProperties` like a normal
92
- * pset, but their properties live as schema-defined ATTRIBUTES on the
93
- * entity itself. Surface them as a pset whose name is the entity's
94
- * `Name` and whose properties are the schema-defined attribute slots
95
- * beyond Name/Description.
88
+ * A quantity's own `Unit`, in the `unit`/`unitSiScale` shape property records
89
+ * use. The parser's `CollectedQuantity` reports a resolved unit as
90
+ * `explicitUnitSiScale` and an unreadable one as `explicitUnitUnresolved`;
91
+ * quantity-table rows carry neither and fall through to the project unit.
96
92
  */
97
- function appendPredefinedPropertySets(store, expressId, out) {
98
- const psetIds = store.relationships?.getRelated?.(expressId, RelationshipType.DefinesByProperties, 'inverse') || [];
99
- for (const psetId of psetIds) {
100
- // @raw-entity-enumeration-ok point lookup for one source pset reached through the parser's source-snapshot relationship index; this is not a base-entity enumeration
101
- const ref = store.entityIndex?.byId?.get?.(psetId);
102
- if (!ref)
103
- continue;
104
- const tu = String(ref.type).toUpperCase();
105
- if (tu === 'IFCPROPERTYSET' || tu === 'IFCELEMENTQUANTITY')
106
- continue;
107
- if (!tu.endsWith('PROPERTIES'))
108
- continue;
109
- const allAttrs = extractAllEntityAttributes(store, psetId);
110
- const psetNameAttr = allAttrs.find((a) => a.name === 'Name')?.value;
111
- if (typeof psetNameAttr !== 'string' || !psetNameAttr)
112
- continue;
113
- if (out.some((p) => p.name === psetNameAttr))
114
- continue;
115
- const properties = allAttrs
116
- .filter((a) => a.name !== 'GlobalId' &&
117
- a.name !== 'Name' &&
118
- a.name !== 'Description' &&
119
- a.value !== undefined &&
120
- a.value !== '')
121
- .map((a) => ({
122
- name: a.name,
123
- value: a.value,
124
- // The attribute's declared EXPRESS type is its dataType (PanelOperation
125
- // → IFCDOORPANELOPERATIONENUM). Unknown to the schema means unknown, and
126
- // a dataType check fails rather than passing unchecked (#5224).
127
- dataType: getAttributeTypeForSchema(tu, a.name, store.schemaVersion)?.toUpperCase(),
128
- }));
129
- if (properties.length > 0)
130
- out.push({ name: psetNameAttr, properties });
93
+ function quantityOwnUnit(quantity) {
94
+ const q = quantity;
95
+ if (q.explicitUnitSiScale !== undefined) {
96
+ return { unit: q.explicitUnit ?? '', unitSiScale: q.explicitUnitSiScale };
131
97
  }
98
+ if (q.explicitUnitUnresolved)
99
+ return { unit: '#?' };
100
+ return {};
132
101
  }
133
102
  /**
134
103
  * `IfcMaterialProperties` (IFC4+) / `IfcExtendedMaterialProperties`
@@ -143,7 +112,7 @@ function appendPredefinedPropertySets(store, expressId, out) {
143
112
  * common "element that has a material" shape; that path goes through
144
113
  * the material facet, not this one.
145
114
  */
146
- function appendMaterialOwnPropertySets(store, expressId, scale, measureScales, out) {
115
+ function appendMaterialOwnPropertySets(store, expressId, scales, out) {
147
116
  if (resolveEntityTypeName(store, expressId)?.toUpperCase() !== 'IFCMATERIAL')
148
117
  return;
149
118
  const groups = extractMaterialPropertiesForMaterialId(store, expressId);
@@ -153,7 +122,7 @@ function appendMaterialOwnPropertySets(store, expressId, scale, measureScales, o
153
122
  continue;
154
123
  out.push({
155
124
  name: pset.name,
156
- properties: pset.properties.map((p) => projectProperty(p, scale, measureScales)),
125
+ properties: pset.properties.map((p) => projectProperty(p, scales)),
157
126
  });
158
127
  }
159
128
  }
@@ -167,7 +136,7 @@ function appendMaterialOwnPropertySets(store, expressId, scale, measureScales, o
167
136
  * this one caller needs a raw type check ahead of the accessor existing.
168
137
  */
169
138
  function resolveEntityTypeName(store, expressId) {
170
- const fromTable = store.entities?.getTypeName?.(expressId);
139
+ const fromTable = store.entities ? exactTypeName(store.entities, expressId) : undefined;
171
140
  if (fromTable && fromTable !== 'Unknown')
172
141
  return fromTable;
173
142
  // @raw-entity-enumeration-ok point lookup for one source record to guard the parsed material-owned-property projection; this helper projects source property sets and is not a live candidate/type enumeration
@@ -176,17 +145,32 @@ function resolveEntityTypeName(store, expressId) {
176
145
  return undefined;
177
146
  return typeof entry === 'object' && 'type' in entry ? String(entry.type) : undefined;
178
147
  }
179
- function inheritedPropertySets(store, expressId, scale, measureScales) {
148
+ function inheritedPropertySets(store, expressId, scales) {
180
149
  // Source-backed extraction (WASM/columnar parse) first; it bails on stores
181
150
  // with no `source` buffer — i.e. server-parsed stores — so fall back to the
182
151
  // prebuilt property table keyed by the element's IfcTypeProduct id (issue
183
152
  // #1787), mirroring the Lists adapter's server-path type fallback.
184
153
  const inheritedPsets = extractTypePropertiesOnDemand(store, expressId)?.properties ??
185
154
  typePropertySetsFromTable(store, expressId);
186
- return inheritedPsets.map((pset) => ({
155
+ const inherited = inheritedPsets.map((pset) => ({
187
156
  name: pset.name,
188
- properties: (pset.properties || []).map((p) => projectProperty(p, scale, measureScales)),
157
+ properties: (pset.properties || []).map((p) => projectProperty(p, scales)),
189
158
  }));
159
+ // The type's predefined property sets (IfcDoorLiningProperties, ...) are
160
+ // inherited the same way (#7395). One sharing a name with an ordinary type
161
+ // set adds the properties that set lacks, rather than being dropped.
162
+ for (const pset of typePredefinedPropertySets(store, expressId, scales)) {
163
+ const same = inherited.find((p) => p.name === pset.name);
164
+ if (!same) {
165
+ inherited.push(pset);
166
+ continue;
167
+ }
168
+ for (const prop of pset.properties) {
169
+ if (!same.properties.some((p) => p.name === prop.name))
170
+ same.properties.push(prop);
171
+ }
172
+ }
173
+ return inherited;
190
174
  }
191
175
  /** Type-inherited property sets for server-parsed stores: resolve the element's
192
176
  * IfcTypeProduct via IfcRelDefinesByType, then read the prebuilt table for
@@ -205,45 +189,14 @@ function typePropertySetsFromTable(store, expressId) {
205
189
  const psets = store.properties?.getForEntity?.(typeIds[0]);
206
190
  return (psets ?? []);
207
191
  }
208
- function appendTypeEntityOwnProperties(store, expressId, out) {
209
- const typePsets = extractTypeEntityOwnProperties(store, expressId);
210
- if (typePsets.length === 0)
211
- return;
212
- for (const pset of typePsets) {
192
+ /** A type object's own `HasPropertySets`, converted to SI like any other
193
+ * property set (#7395). */
194
+ function appendTypeEntityOwnProperties(store, expressId, scales, out) {
195
+ for (const pset of extractTypeEntityOwnProperties(store, expressId)) {
213
196
  out.push({
214
197
  name: pset.name,
215
- properties: (pset.properties || []).map((p) => ({
216
- name: p.name,
217
- value: Array.isArray(p.value)
218
- ? JSON.stringify(p.value)
219
- : p.value,
220
- ...idsDataTypeOf(p),
221
- ...(Array.isArray(p.values) && p.values.length > 0
222
- ? { values: p.values }
223
- : {}),
224
- })),
198
+ properties: (pset.properties || []).map((p) => projectProperty(p, scales)),
225
199
  });
226
200
  }
227
201
  }
228
- /**
229
- * Project a raw parser property record into the validator's
230
- * `PropertySetInfo['properties'][number]` shape — applies unit
231
- * conversion and resolves the IDS dataType (`idsDataTypeOf`).
232
- */
233
- function projectProperty(p, scale, measureScales) {
234
- const hasMultiValue = Array.isArray(p.values) && p.values.length > 0;
235
- const types = idsDataTypeOf(p);
236
- const dataType = types.dataType;
237
- const baseValue = Array.isArray(p.value)
238
- ? JSON.stringify(p.value)
239
- : p.value;
240
- const baseValues = hasMultiValue ? p.values : undefined;
241
- const converted = applyUnitConversion(baseValue, baseValues, dataType, scale, measureScales);
242
- return {
243
- name: p.name,
244
- value: converted.value,
245
- ...types,
246
- ...(converted.values ? { values: converted.values } : {}),
247
- };
248
- }
249
202
  //# sourceMappingURL=properties.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/bridge/properties.ts"],"names":[],"mappings":"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"}
@@ -67,4 +67,14 @@ export type PropertyOverlayResolver = (expressId: number) => PropertyOverride[]
67
67
  * consumes it in agreement.
68
68
  */
69
69
  export declare function resolveEffectivePropertySets(store: IfcDataStore, expressId: number, propertyOverlay: PropertyOverlayResolver | undefined): PropertySetInfo[];
70
+ /**
71
+ * The inverse of what {@link resolveEffectivePropertySets} applies to an
72
+ * override: convert a base-SI value (an IDS literal, or a correction typed to
73
+ * satisfy one) into the raw frame `psetName`.`propName` on `expressId` is
74
+ * stored in — the property's own `Unit` when it declares one, else the
75
+ * project unit for `dataType` (or, when omitted, the property's own
76
+ * dataType). A property the entity does not carry yet takes the project
77
+ * unit, matching how a created override is read back.
78
+ */
79
+ export declare function propertyValueToRaw(store: IfcDataStore, expressId: number, psetName: string, propName: string, dataType: string | undefined, value: string | number | boolean): string | number | boolean;
70
80
  //# sourceMappingURL=property-overlay-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"property-overlay-resolver.d.ts","sourceRoot":"","sources":["../../src/bridge/property-overlay-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKnD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACxC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,uBAAuB,GAAG,SAAS,GACnD,eAAe,EAAE,CA0HnB"}
1
+ {"version":3,"file":"property-overlay-resolver.d.ts","sourceRoot":"","sources":["../../src/bridge/property-overlay-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAanD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACxC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,uBAAuB,GAAG,SAAS,GACnD,eAAe,EAAE,CAkInB;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAC/B,MAAM,GAAG,MAAM,GAAG,OAAO,CAgB3B"}