@ifc-lite/ids 3.2.0 → 3.3.2

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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/writer/constraint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Serialise an `IDSDocument` as IDS 1.0 XML (#5225). Covers entity,
3
+ * attribute, property (with `dataType`), classification, material and
4
+ * partOf facets, requirement `instructions`, and every `IDSConstraint`
5
+ * shape: simple values, patterns, enumerations, numeric/length/digit bounds
6
+ * and conjunctive (`and`) restrictions. Element order within a facet
7
+ * follows `ids.xsd`, so `parseIDS` and `auditIDSDocument` read the result
8
+ * back; applicability facets are written in the order given (the caller
9
+ * owns the XSD's entity, partOf, classification, attribute, property,
10
+ * material sequence there). `@ifc-lite/rules`' `ruleSetToIds` and the
11
+ * viewer's reviewed IDS drafts (#6915) serialise through here (moved from
12
+ * `@ifc-lite/rules` by ADR-005).
13
+ */
14
+ import type { IDSDocument } from '../types.js';
15
+ import type { IDSPreviewFlags } from '../preview/types.js';
16
+ /** Formatting of `writeIdsXml`'s output. Every option changes layout or order only, never meaning. */
17
+ export interface IdsXmlFormat {
18
+ /** Indentation of one nesting level: a number of spaces (0–8) or `'\t'`. Default `2`. */
19
+ indent?: number | '\t';
20
+ /** Line ending. Default `'\n'`. */
21
+ newline?: '\n' | '\r\n';
22
+ /**
23
+ * Canonical order, so two documents with the same checks write the same
24
+ * bytes: applicability facets in the `ids.xsd` sequence (entity, partOf,
25
+ * classification, attribute, property, material; stable within a kind)
26
+ * and `ifcVersion` tokens in schema order without duplicates. Both are
27
+ * order-insensitive in IDS. Requirements keep their authored order, which
28
+ * reports show. Default `false`: everything is written in the order given.
29
+ */
30
+ canonical?: boolean;
31
+ }
32
+ /** What `writeIdsXml` may write, as opposed to how (`IdsXmlFormat`). */
33
+ export interface IdsXmlWriteOptions {
34
+ /**
35
+ * IDS 1.1 PREVIEW (unstable). Without `ids11`, a document using a 1.1
36
+ * candidate feature is refused with `IDS11PreviewRequiredError`; with it,
37
+ * such a document is written against the 1.1 schema location. A document
38
+ * using no 1.1 feature is written as IDS 1.0 either way, byte for byte.
39
+ */
40
+ preview?: IDSPreviewFlags;
41
+ }
42
+ /**
43
+ * `doc` as an IDS 1.0 XML string, laid out per `fmt` (two-space indent,
44
+ * `\n`, authored order by default). IDS 1.1 PREVIEW output needs
45
+ * `options.preview.ids11`.
46
+ */
47
+ export declare function writeIdsXml(doc: IDSDocument, fmt?: IdsXmlFormat, options?: IdsXmlWriteOptions): string;
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/writer/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,WAAW,EAMZ,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAoH3D,sGAAsG;AACtG,MAAM,WAAW,YAAY;IAC3B,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mCAAmC;IACnC,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqDD,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,GAAE,YAAiB,EAAE,OAAO,GAAE,kBAAuB,GAAG,MAAM,CA8B9G"}
@@ -0,0 +1,209 @@
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 { XmlLines } from './xml-lines.js';
5
+ import { writeConstraint } from './constraint.js';
6
+ import { assertIds11Allowed } from '../preview/features.js';
7
+ const IDS_NS = 'http://standards.buildingsmart.org/IDS';
8
+ const XS_NS = 'http://www.w3.org/2001/XMLSchema';
9
+ const XSI_NS = 'http://www.w3.org/2001/XMLSchema-instance';
10
+ const SCHEMA_LOCATION = `${IDS_NS} http://standards.buildingsmart.org/IDS/1.0/ids.xsd`;
11
+ /**
12
+ * IDS 1.1 PREVIEW. buildingSMART has not published a 1.1 schema URL; this
13
+ * follows the 1.0 pattern and the `version="1.1.0"` of the upstream
14
+ * `ver/1.1.x` branch's `ids.xsd`. An assumption, recorded in the P-12 worklog.
15
+ */
16
+ const SCHEMA_LOCATION_11_PREVIEW = `${IDS_NS} http://standards.buildingsmart.org/IDS/1.1/ids.xsd`;
17
+ const IDS11_PREVIEW_NOTE = 'IDS 1.1 PREVIEW: uses unreleased candidate features; not valid IDS 1.0.';
18
+ /**
19
+ * `IfcRelContainedInSpatialStructure` -> the XSD's upper-case `relations`
20
+ * token. Voids and fills exist in IDS 1.0 only as the combined token, so
21
+ * either alone has no valid XML and is refused.
22
+ */
23
+ function relationToken(relation) {
24
+ if (relation === 'IfcRelVoidsElement' || relation === 'IfcRelFillsElement') {
25
+ throw new Error(`writeIdsXml: partOf relation ${relation} on its own is not supported by this writer (IDS 1.0 has only "IFCRELVOIDSELEMENT IFCRELFILLSELEMENT")`);
26
+ }
27
+ return relation.toUpperCase();
28
+ }
29
+ function writeEntity(xml, facet, attrs = {}) {
30
+ xml.open('entity', attrs);
31
+ writeConstraint(xml, 'name', facet.name);
32
+ if (facet.predefinedType)
33
+ writeConstraint(xml, 'predefinedType', facet.predefinedType);
34
+ xml.close('entity');
35
+ }
36
+ /** `dataType` is an XSD attribute holding one upper-case name, never a restriction. */
37
+ function dataTypeAttr(facet) {
38
+ if (!facet.dataType)
39
+ return undefined;
40
+ if (facet.dataType.type !== 'simpleValue')
41
+ throw new Error('writeIdsXml: a property dataType must be a simple value');
42
+ return facet.dataType.value;
43
+ }
44
+ /**
45
+ * The facet's `instructions` attribute. A requirement's comes from
46
+ * `IDSRequirement.instructions` (IDS 1.0); an applicability facet's from the
47
+ * facet itself (IDS 1.1 PREVIEW, #154). The facet-level field anywhere else
48
+ * has no XML home and is refused rather than dropped.
49
+ */
50
+ function instructionsFor(facet, context, requirementInstructions) {
51
+ if (context === 'applicability')
52
+ return facet.instructions;
53
+ if (facet.instructions !== undefined) {
54
+ throw new Error(`writeIdsXml: a ${context} ${facet.type} facet cannot carry facet-level instructions${context === 'requirement' ? '; use IDSRequirement.instructions' : ''}`);
55
+ }
56
+ return requirementInstructions;
57
+ }
58
+ function writeFacet(xml, facet, cardinality, context, requirementInstructions) {
59
+ const instructions = instructionsFor(facet, context, requirementInstructions);
60
+ switch (facet.type) {
61
+ case 'entity':
62
+ writeEntity(xml, facet, { instructions });
63
+ return;
64
+ case 'attribute':
65
+ xml.open('attribute', { cardinality, instructions });
66
+ writeConstraint(xml, 'name', facet.name);
67
+ if (facet.value)
68
+ writeConstraint(xml, 'value', facet.value);
69
+ xml.close('attribute');
70
+ return;
71
+ case 'property':
72
+ xml.open('property', { dataType: dataTypeAttr(facet), cardinality, instructions, uri: facet.uri });
73
+ writeConstraint(xml, 'propertySet', facet.propertySet);
74
+ writeConstraint(xml, 'baseName', facet.baseName);
75
+ if (facet.value)
76
+ writeConstraint(xml, 'value', facet.value);
77
+ xml.close('property');
78
+ return;
79
+ case 'classification':
80
+ xml.open('classification', { cardinality, instructions, uri: facet.uri });
81
+ if (facet.value)
82
+ writeConstraint(xml, 'value', facet.value);
83
+ if (facet.system)
84
+ writeConstraint(xml, 'system', facet.system);
85
+ xml.close('classification');
86
+ return;
87
+ case 'material':
88
+ xml.open('material', { cardinality, instructions, uri: facet.uri });
89
+ if (facet.value)
90
+ writeConstraint(xml, 'value', facet.value);
91
+ xml.close('material');
92
+ return;
93
+ case 'partOf':
94
+ // `ruleSetToIds` never produces one (a rule's `parent` subject matches
95
+ // an ancestor's Name, not its class). The XSD requires the related
96
+ // entity, so a partOf without one is refused rather than written invalid.
97
+ if (!facet.entity)
98
+ throw new Error('writeIdsXml: a partOf facet needs its related entity');
99
+ // No relation means any part-of relation (#7401), so it stays unwritten;
100
+ // an unrecognised one is written as read, for the auditor to flag.
101
+ xml.open('partOf', {
102
+ relation: facet.anyRelation ? undefined : facet.rawRelation ?? relationToken(facet.relation),
103
+ cardinality,
104
+ instructions,
105
+ });
106
+ writeEntity(xml, facet.entity);
107
+ // IDS 1.1 PREVIEW (#379/#380): conditions on the related parent.
108
+ for (const nested of facet.facets ?? [])
109
+ writeFacet(xml, nested, undefined, 'nested');
110
+ xml.close('partOf');
111
+ return;
112
+ }
113
+ }
114
+ function writeRequirement(xml, requirement) {
115
+ // IDS 1.0 has no cardinality on an entity facet inside requirements.
116
+ const cardinality = requirement.facet.type === 'entity' ? undefined : requirement.optionality;
117
+ writeFacet(xml, requirement.facet, cardinality, 'requirement', requirement.instructions);
118
+ }
119
+ /** The `ids.xsd` applicability sequence; an applicability in another order is not schema-valid. */
120
+ const FACET_ORDER = {
121
+ entity: 0, partOf: 1, classification: 2, attribute: 3, property: 4, material: 5,
122
+ };
123
+ /** `ids.xsd`'s `ifcVersion` tokens, in schema order. The parser reads `IFC4X3_ADD2` as `IFC4X3`. */
124
+ const VERSION_TOKENS = ['IFC2X3', 'IFC4', 'IFC4X3_ADD2'];
125
+ /** `IFC4X3` has no token of its own in IDS 1.0: it is written as `IFC4X3_ADD2`, which reads back as `IFC4X3`. */
126
+ function versionToken(version) {
127
+ return version === 'IFC4X3' ? 'IFC4X3_ADD2' : version;
128
+ }
129
+ function versionTokens(versions, canonical) {
130
+ const tokens = versions.map(versionToken);
131
+ if (!canonical)
132
+ return tokens;
133
+ return VERSION_TOKENS.filter((token) => tokens.includes(token));
134
+ }
135
+ function indentUnit(indent) {
136
+ if (indent === undefined)
137
+ return ' ';
138
+ if (indent === '\t')
139
+ return '\t';
140
+ if (!Number.isInteger(indent) || indent < 0 || indent > 8) {
141
+ throw new Error(`writeIdsXml: indent must be '\\t' or an integer from 0 to 8, got ${indent}`);
142
+ }
143
+ return ' '.repeat(indent);
144
+ }
145
+ function writeSpecification(xml, spec, canonical) {
146
+ const versions = versionTokens(spec.ifcVersions, canonical);
147
+ const facets = canonical
148
+ ? [...spec.applicability.facets].sort((a, b) => FACET_ORDER[a.type] - FACET_ORDER[b.type])
149
+ : spec.applicability.facets;
150
+ xml.open('specification', {
151
+ name: spec.name,
152
+ ifcVersion: versions.join(' '),
153
+ identifier: spec.identifier,
154
+ description: spec.description,
155
+ instructions: spec.instructions,
156
+ });
157
+ const maxOccurs = spec.maxOccurs === undefined ? 'unbounded' : String(spec.maxOccurs);
158
+ xml.open('applicability', { minOccurs: String(spec.minOccurs ?? 0), maxOccurs });
159
+ for (const facet of facets)
160
+ writeFacet(xml, facet, undefined, 'applicability');
161
+ xml.close('applicability');
162
+ if (spec.requirements.length > 0) {
163
+ xml.open('requirements');
164
+ for (const requirement of spec.requirements)
165
+ writeRequirement(xml, requirement);
166
+ xml.close('requirements');
167
+ }
168
+ xml.close('specification');
169
+ }
170
+ /**
171
+ * `doc` as an IDS 1.0 XML string, laid out per `fmt` (two-space indent,
172
+ * `\n`, authored order by default). IDS 1.1 PREVIEW output needs
173
+ * `options.preview.ids11`.
174
+ */
175
+ export function writeIdsXml(doc, fmt = {}, options = {}) {
176
+ const ids11 = assertIds11Allowed(doc, options.preview, 'writeIdsXml', true).length > 0;
177
+ const xml = new XmlLines(indentUnit(fmt.indent));
178
+ const newline = fmt.newline ?? '\n';
179
+ const canonical = fmt.canonical ?? false;
180
+ xml.open('ids', {
181
+ xmlns: IDS_NS,
182
+ 'xmlns:xs': XS_NS,
183
+ 'xmlns:xsi': XSI_NS,
184
+ 'xsi:schemaLocation': ids11 ? SCHEMA_LOCATION_11_PREVIEW : SCHEMA_LOCATION,
185
+ });
186
+ if (ids11)
187
+ xml.comment(IDS11_PREVIEW_NOTE);
188
+ xml.open('info');
189
+ // The `ids.xsd` info sequence. `date` (xs:date) and `author` (an e-mail
190
+ // pattern) are written as given; `auditIDSDocument` reports malformed ones.
191
+ const { title, copyright, version, description, author, date, purpose, milestone } = doc.info;
192
+ xml.leaf('title', title);
193
+ const optional = [
194
+ ['copyright', copyright], ['version', version], ['description', description], ['author', author],
195
+ ['date', date], ['purpose', purpose], ['milestone', milestone],
196
+ ];
197
+ for (const [tag, text] of optional) {
198
+ if (text)
199
+ xml.leaf(tag, text);
200
+ }
201
+ xml.close('info');
202
+ xml.open('specifications');
203
+ for (const spec of doc.specifications)
204
+ writeSpecification(xml, spec, canonical);
205
+ xml.close('specifications');
206
+ xml.close('ids');
207
+ return ['<?xml version="1.0" encoding="UTF-8"?>', ...xml.lines, ''].join(newline);
208
+ }
209
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/writer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** `field` names the element or attribute, so a refusal says what to fix. */
2
+ export declare function escapeXml(text: string, field: string): string;
3
+ export declare class XmlLines {
4
+ private readonly unit;
5
+ readonly lines: string[];
6
+ private depth;
7
+ /** `unit` is the indentation of one nesting level. */
8
+ constructor(unit?: string);
9
+ open(tag: string, attrs?: Record<string, string | undefined>): void;
10
+ close(tag: string): void;
11
+ leaf(tag: string, text: string, attrs?: Record<string, string | undefined>): void;
12
+ /** An XML comment line; `--` cannot appear inside one and is refused. */
13
+ comment(text: string): void;
14
+ empty(tag: string, attrs?: Record<string, string | undefined>): void;
15
+ private indent;
16
+ }
17
+ //# sourceMappingURL=xml-lines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-lines.d.ts","sourceRoot":"","sources":["../../src/writer/xml-lines.ts"],"names":[],"mappings":"AAWA,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAc7D;AAOD,qBAAa,QAAQ;IAKP,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAC9B,OAAO,CAAC,KAAK,CAAK;IAElB,sDAAsD;gBACzB,IAAI,SAAO;IAExC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAAG,IAAI;IAKvE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKxB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAAG,IAAI;IAIrF,yEAAyE;IACzE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAAG,IAAI;IAIxE,OAAO,CAAC,MAAM;CAGf"}
@@ -0,0 +1,69 @@
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
+ /** XML escaping and the indented line buffer behind `writeIdsXml`. */
5
+ /** Characters XML 1.0 cannot carry, even as character references. */
6
+ // Matching control characters is the point: they are refused, not allowed through.
7
+ // eslint-disable-next-line no-control-regex
8
+ const NOT_XML = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\uFFFE\uFFFF]/;
9
+ /** `field` names the element or attribute, so a refusal says what to fix. */
10
+ export function escapeXml(text, field) {
11
+ const bad = NOT_XML.exec(text);
12
+ if (bad) {
13
+ const code = bad[0].charCodeAt(0).toString(16).toUpperCase().padStart(4, '0');
14
+ throw new Error(`writeIdsXml: ${field} contains control character U+${code}, which XML 1.0 cannot carry`);
15
+ }
16
+ return text
17
+ .replace(/&/g, '&amp;')
18
+ .replace(/</g, '&lt;')
19
+ .replace(/>/g, '&gt;')
20
+ .replace(/"/g, '&quot;')
21
+ .replace(/'/g, '&apos;')
22
+ // A raw CR is normalised away by every XML reader; a reference survives.
23
+ .replace(/\r/g, '&#13;');
24
+ }
25
+ /** Attribute-value normalisation turns raw line breaks and tabs into spaces; references keep them. */
26
+ function escapeAttr(text, field) {
27
+ return escapeXml(text, field).replace(/\n/g, '&#10;').replace(/\t/g, '&#9;');
28
+ }
29
+ export class XmlLines {
30
+ unit;
31
+ lines = [];
32
+ depth = 0;
33
+ /** `unit` is the indentation of one nesting level. */
34
+ constructor(unit = ' ') {
35
+ this.unit = unit;
36
+ }
37
+ open(tag, attrs = {}) {
38
+ this.lines.push(`${this.indent()}<${tag}${renderAttrs(tag, attrs)}>`);
39
+ this.depth++;
40
+ }
41
+ close(tag) {
42
+ this.depth--;
43
+ this.lines.push(`${this.indent()}</${tag}>`);
44
+ }
45
+ leaf(tag, text, attrs = {}) {
46
+ this.lines.push(`${this.indent()}<${tag}${renderAttrs(tag, attrs)}>${escapeXml(text, tag)}</${tag}>`);
47
+ }
48
+ /** An XML comment line; `--` cannot appear inside one and is refused. */
49
+ comment(text) {
50
+ if (text.includes('--'))
51
+ throw new Error('writeIdsXml: an XML comment cannot contain "--"');
52
+ this.lines.push(`${this.indent()}<!-- ${escapeXml(text, 'comment')} -->`);
53
+ }
54
+ empty(tag, attrs = {}) {
55
+ this.lines.push(`${this.indent()}<${tag}${renderAttrs(tag, attrs)}/>`);
56
+ }
57
+ indent() {
58
+ return this.unit.repeat(this.depth);
59
+ }
60
+ }
61
+ function renderAttrs(tag, attrs) {
62
+ let out = '';
63
+ for (const [key, value] of Object.entries(attrs)) {
64
+ if (value !== undefined)
65
+ out += ` ${key}="${escapeAttr(value, `${tag} "${key}"`)}"`;
66
+ }
67
+ return out;
68
+ }
69
+ //# sourceMappingURL=xml-lines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-lines.js","sourceRoot":"","sources":["../../src/writer/xml-lines.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/ids",
3
- "version": "3.2.0",
3
+ "version": "3.3.2",
4
4
  "description": "IDS (Information Delivery Specification) support for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,15 +19,15 @@
19
19
  "dependencies": {
20
20
  "@xmldom/xmldom": "^0.9.12",
21
21
  "@ifc-lite/codegen": "1.18.1",
22
- "@ifc-lite/data": "6.1.0",
22
+ "@ifc-lite/data": "6.2.0",
23
23
  "@ifc-lite/encoding": "2.3.0",
24
- "@ifc-lite/parser": "9.2.0",
24
+ "@ifc-lite/parser": "9.5.0",
25
25
  "@ifc-lite/regex-guard": "0.3.0"
26
26
  },
27
27
  "devDependencies": {
28
- "happy-dom": "^20.14.5",
28
+ "happy-dom": "^20.14.6",
29
29
  "typescript": "^6.0.3",
30
- "vitest": "^5.0.2",
30
+ "vitest": "^5.0.3",
31
31
  "xmllint-wasm": "5.3.0",
32
32
  "@ifc-lite/timing-ladder": "^0.1.0"
33
33
  },