@ifc-lite/ids 3.1.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 (228) 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/bounded-cache.d.ts +18 -0
  45. package/dist/bounded-cache.d.ts.map +1 -0
  46. package/dist/bounded-cache.js +40 -0
  47. package/dist/bounded-cache.js.map +1 -0
  48. package/dist/bridge/data-accessor.d.ts.map +1 -1
  49. package/dist/bridge/data-accessor.js +49 -25
  50. package/dist/bridge/data-accessor.js.map +1 -1
  51. package/dist/bridge/index.d.ts +1 -0
  52. package/dist/bridge/index.d.ts.map +1 -1
  53. package/dist/bridge/index.js +1 -0
  54. package/dist/bridge/index.js.map +1 -1
  55. package/dist/bridge/measure-conversion.d.ts +51 -0
  56. package/dist/bridge/measure-conversion.d.ts.map +1 -0
  57. package/dist/bridge/measure-conversion.js +106 -0
  58. package/dist/bridge/measure-conversion.js.map +1 -0
  59. package/dist/bridge/predefined-property-sets.d.ts +24 -0
  60. package/dist/bridge/predefined-property-sets.d.ts.map +1 -0
  61. package/dist/bridge/predefined-property-sets.js +86 -0
  62. package/dist/bridge/predefined-property-sets.js.map +1 -0
  63. package/dist/bridge/predefined-types.d.ts +34 -13
  64. package/dist/bridge/predefined-types.d.ts.map +1 -1
  65. package/dist/bridge/predefined-types.js +40 -71
  66. package/dist/bridge/predefined-types.js.map +1 -1
  67. package/dist/bridge/project-property.d.ts +43 -0
  68. package/dist/bridge/project-property.d.ts.map +1 -0
  69. package/dist/bridge/project-property.js +60 -0
  70. package/dist/bridge/project-property.js.map +1 -0
  71. package/dist/bridge/properties.d.ts +4 -3
  72. package/dist/bridge/properties.d.ts.map +1 -1
  73. package/dist/bridge/properties.js +64 -111
  74. package/dist/bridge/properties.js.map +1 -1
  75. package/dist/bridge/property-overlay-resolver.d.ts +10 -0
  76. package/dist/bridge/property-overlay-resolver.d.ts.map +1 -1
  77. package/dist/bridge/property-overlay-resolver.js +53 -4
  78. package/dist/bridge/property-overlay-resolver.js.map +1 -1
  79. package/dist/bridge/units.d.ts +49 -20
  80. package/dist/bridge/units.d.ts.map +1 -1
  81. package/dist/bridge/units.js +134 -84
  82. package/dist/bridge/units.js.map +1 -1
  83. package/dist/constraint-types.d.ts +30 -14
  84. package/dist/constraint-types.d.ts.map +1 -1
  85. package/dist/constraints/comparators.d.ts +4 -1
  86. package/dist/constraints/comparators.d.ts.map +1 -1
  87. package/dist/constraints/comparators.js +6 -1
  88. package/dist/constraints/comparators.js.map +1 -1
  89. package/dist/constraints/describe.d.ts.map +1 -1
  90. package/dist/constraints/describe.js +67 -21
  91. package/dist/constraints/describe.js.map +1 -1
  92. package/dist/constraints/match-bounds.d.ts +25 -0
  93. package/dist/constraints/match-bounds.d.ts.map +1 -0
  94. package/dist/constraints/match-bounds.js +112 -0
  95. package/dist/constraints/match-bounds.js.map +1 -0
  96. package/dist/constraints/match-family.d.ts.map +1 -1
  97. package/dist/constraints/match-family.js +25 -90
  98. package/dist/constraints/match-family.js.map +1 -1
  99. package/dist/constraints/xsd-datetime.js +6 -6
  100. package/dist/constraints/xsd-examples.d.ts +20 -0
  101. package/dist/constraints/xsd-examples.d.ts.map +1 -0
  102. package/dist/constraints/xsd-examples.js +187 -0
  103. package/dist/constraints/xsd-examples.js.map +1 -0
  104. package/dist/constraints/xsd-lexical.d.ts +2 -0
  105. package/dist/constraints/xsd-lexical.d.ts.map +1 -0
  106. package/dist/constraints/xsd-lexical.js +49 -0
  107. package/dist/constraints/xsd-lexical.js.map +1 -0
  108. package/dist/constraints/xsd-order.d.ts +33 -0
  109. package/dist/constraints/xsd-order.d.ts.map +1 -0
  110. package/dist/constraints/xsd-order.js +211 -0
  111. package/dist/constraints/xsd-order.js.map +1 -0
  112. package/dist/constraints/xsd-regex-ast.d.ts +37 -0
  113. package/dist/constraints/xsd-regex-ast.d.ts.map +1 -0
  114. package/dist/constraints/xsd-regex-ast.js +137 -0
  115. package/dist/constraints/xsd-regex-ast.js.map +1 -0
  116. package/dist/constraints/xsd-regex-blocks.d.ts +7 -0
  117. package/dist/constraints/xsd-regex-blocks.d.ts.map +1 -0
  118. package/dist/constraints/xsd-regex-blocks.js +68 -0
  119. package/dist/constraints/xsd-regex-blocks.js.map +1 -0
  120. package/dist/constraints/xsd-regex.d.ts +2 -45
  121. package/dist/constraints/xsd-regex.d.ts.map +1 -1
  122. package/dist/constraints/xsd-regex.js +231 -134
  123. package/dist/constraints/xsd-regex.js.map +1 -1
  124. package/dist/facets/entity-facet.d.ts.map +1 -1
  125. package/dist/facets/entity-facet.js +4 -1
  126. package/dist/facets/entity-facet.js.map +1 -1
  127. package/dist/facets/partof-facet.d.ts.map +1 -1
  128. package/dist/facets/partof-facet.js +80 -19
  129. package/dist/facets/partof-facet.js.map +1 -1
  130. package/dist/facets/predefined-type-match.d.ts +8 -3
  131. package/dist/facets/predefined-type-match.d.ts.map +1 -1
  132. package/dist/facets/predefined-type-match.js.map +1 -1
  133. package/dist/index.d.ts +9 -2
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +24 -0
  136. package/dist/index.js.map +1 -1
  137. package/dist/parser/dom.d.ts +4 -0
  138. package/dist/parser/dom.d.ts.map +1 -1
  139. package/dist/parser/dom.js +5 -0
  140. package/dist/parser/dom.js.map +1 -1
  141. package/dist/parser/parse-restriction.d.ts.map +1 -1
  142. package/dist/parser/parse-restriction.js +32 -14
  143. package/dist/parser/parse-restriction.js.map +1 -1
  144. package/dist/parser/xml-parser.d.ts +7 -4
  145. package/dist/parser/xml-parser.d.ts.map +1 -1
  146. package/dist/parser/xml-parser.js +30 -45
  147. package/dist/parser/xml-parser.js.map +1 -1
  148. package/dist/preview/audit.d.ts +16 -0
  149. package/dist/preview/audit.d.ts.map +1 -0
  150. package/dist/preview/audit.js +58 -0
  151. package/dist/preview/audit.js.map +1 -0
  152. package/dist/preview/features.d.ts +30 -0
  153. package/dist/preview/features.d.ts.map +1 -0
  154. package/dist/preview/features.js +96 -0
  155. package/dist/preview/features.js.map +1 -0
  156. package/dist/preview/parse-ids11.d.ts +9 -0
  157. package/dist/preview/parse-ids11.d.ts.map +1 -0
  158. package/dist/preview/parse-ids11.js +90 -0
  159. package/dist/preview/parse-ids11.js.map +1 -0
  160. package/dist/preview/partof-nested.d.ts +27 -0
  161. package/dist/preview/partof-nested.d.ts.map +1 -0
  162. package/dist/preview/partof-nested.js +61 -0
  163. package/dist/preview/partof-nested.js.map +1 -0
  164. package/dist/preview/tolerance.d.ts +15 -0
  165. package/dist/preview/tolerance.d.ts.map +1 -0
  166. package/dist/preview/tolerance.js +66 -0
  167. package/dist/preview/tolerance.js.map +1 -0
  168. package/dist/preview/types.d.ts +67 -0
  169. package/dist/preview/types.d.ts.map +1 -0
  170. package/dist/preview/types.js +5 -0
  171. package/dist/preview/types.js.map +1 -0
  172. package/dist/report-types.d.ts +7 -0
  173. package/dist/report-types.d.ts.map +1 -1
  174. package/dist/translation/describe-constraint.js +16 -14
  175. package/dist/translation/describe-constraint.js.map +1 -1
  176. package/dist/translation/locales/de.d.ts +2 -0
  177. package/dist/translation/locales/de.d.ts.map +1 -1
  178. package/dist/translation/locales/de.js +2 -0
  179. package/dist/translation/locales/de.js.map +1 -1
  180. package/dist/translation/locales/en.d.ts +2 -0
  181. package/dist/translation/locales/en.d.ts.map +1 -1
  182. package/dist/translation/locales/en.js +2 -0
  183. package/dist/translation/locales/en.js.map +1 -1
  184. package/dist/translation/locales/fr.d.ts +2 -0
  185. package/dist/translation/locales/fr.d.ts.map +1 -1
  186. package/dist/translation/locales/fr.js +2 -0
  187. package/dist/translation/locales/fr.js.map +1 -1
  188. package/dist/translation/locales/index.d.ts +1 -0
  189. package/dist/translation/locales/index.d.ts.map +1 -1
  190. package/dist/translation/locales/index.js +1 -0
  191. package/dist/translation/locales/index.js.map +1 -1
  192. package/dist/translation/locales/it.d.ts +198 -0
  193. package/dist/translation/locales/it.d.ts.map +1 -0
  194. package/dist/translation/locales/it.js +235 -0
  195. package/dist/translation/locales/it.js.map +1 -0
  196. package/dist/translation/service.d.ts +2 -6
  197. package/dist/translation/service.d.ts.map +1 -1
  198. package/dist/translation/service.js +17 -25
  199. package/dist/translation/service.js.map +1 -1
  200. package/dist/types.d.ts +26 -31
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/validation/format-failure-reason.js +1 -1
  203. package/dist/validation/format-failure-reason.js.map +1 -1
  204. package/dist/validation/pass-rate.d.ts +14 -0
  205. package/dist/validation/pass-rate.d.ts.map +1 -0
  206. package/dist/validation/pass-rate.js +25 -0
  207. package/dist/validation/pass-rate.js.map +1 -0
  208. package/dist/validation/prohibited-specification.d.ts +31 -0
  209. package/dist/validation/prohibited-specification.d.ts.map +1 -0
  210. package/dist/validation/prohibited-specification.js +25 -0
  211. package/dist/validation/prohibited-specification.js.map +1 -0
  212. package/dist/validation/validator.d.ts +4 -2
  213. package/dist/validation/validator.d.ts.map +1 -1
  214. package/dist/validation/validator.js +23 -18
  215. package/dist/validation/validator.js.map +1 -1
  216. package/dist/writer/constraint.d.ts +8 -0
  217. package/dist/writer/constraint.d.ts.map +1 -0
  218. package/dist/writer/constraint.js +142 -0
  219. package/dist/writer/constraint.js.map +1 -0
  220. package/dist/writer/index.d.ts +48 -0
  221. package/dist/writer/index.d.ts.map +1 -0
  222. package/dist/writer/index.js +209 -0
  223. package/dist/writer/index.js.map +1 -0
  224. package/dist/writer/xml-lines.d.ts +17 -0
  225. package/dist/writer/xml-lines.d.ts.map +1 -0
  226. package/dist/writer/xml-lines.js +69 -0
  227. package/dist/writer/xml-lines.js.map +1 -0
  228. package/package.json +5 -5
package/README.md CHANGED
@@ -45,7 +45,7 @@ for (const spec of report.specificationResults) {
45
45
 
46
46
  ## Multi-language reports
47
47
 
48
- Reports translate automatically. Supported languages: English (`en`), German (`de`), French (`fr`).
48
+ Reports translate automatically. Supported languages: English (`en`), German (`de`), French (`fr`), Italian (`it`).
49
49
 
50
50
  ```typescript
51
51
  import { parseIDS, validateIDS, createTranslationService } from '@ifc-lite/ids';
@@ -103,6 +103,15 @@ for (const spec of idsSpec.specifications) {
103
103
  | `Enumeration` | One-of-list |
104
104
  | `Bounds` | Numeric range (min/max, inclusive/exclusive) |
105
105
 
106
+ ## IDS 1.1 preview (unstable)
107
+
108
+ IDS 1.1 is not released. Candidate features from the buildingSMART 1.1
109
+ milestone (`uri` and `instructions` on applicability facets, facets nested in
110
+ `partOf`, the #418 tolerance rule, identifier uniqueness) are available only
111
+ with `preview: { ids11: true }` on `parseIDS`, `writeIdsXml`, `validateIDS`
112
+ and `auditIDSDocument`. Without the flag the package is IDS 1.0 only. See
113
+ [IDS 1.1 preview](https://ifclite.dev/docs/guide/ids/#ids-11-preview-unstable).
114
+
106
115
  ## API
107
116
 
108
117
  See the [IDS Guide](https://ifclite.dev/docs/guide/ids/) and [API Reference](https://ifclite.dev/docs/api/typescript/#ifc-liteids).
@@ -122,9 +122,12 @@ function isEmptyConstraint(c) {
122
122
  c.maxInclusive === undefined &&
123
123
  c.minExclusive === undefined &&
124
124
  c.maxExclusive === undefined &&
125
+ c.temporalBounds === undefined &&
125
126
  c.length === undefined &&
126
127
  c.minLength === undefined &&
127
- c.maxLength === undefined);
128
+ c.maxLength === undefined &&
129
+ c.totalDigits === undefined &&
130
+ c.fractionDigits === undefined);
128
131
  }
129
132
  }
130
133
  //# sourceMappingURL=cardinality.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cardinality.js","sourceRoot":"","sources":["../../../src/audit/coherence/cardinality.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cardinality.js","sourceRoot":"","sources":["../../../src/audit/coherence/cardinality.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,4 @@
9
9
  import type { IDSDocument } from '../../types.js';
10
10
  import type { IDSAuditIssue } from '../types.js';
11
11
  export declare function runCoherenceAudit(doc: IDSDocument): IDSAuditIssue[];
12
- export declare function isValidLexicalForXsType(value: string, base: string): boolean;
13
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/coherence/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,aAAa,EAAE,CAMnE;AA8TD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAY5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/coherence/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,aAAa,EAAE,CAMnE"}
@@ -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 { XSD_NUMERIC_SPECIALS } from '../../constraints/xsd-cast.js';
5
- import { isValidXsdDateTimeLiteral, isXsdDateTimeBase } from '../../constraints/xsd-datetime.js';
4
+ import { isValidLexicalForXsType } from '../../constraints/xsd-lexical.js';
5
+ import { compareOrdered } from '../../constraints/xsd-order.js';
6
6
  import { compileXsdRegex } from './regex.js';
7
7
  import { auditRequirementCardinality } from './cardinality.js';
8
8
  export function runCoherenceAudit(doc) {
@@ -48,6 +48,19 @@ function auditSpec(spec, path, issues) {
48
48
  detail: { min: min, max: max },
49
49
  });
50
50
  }
51
+ // A prohibited specification (maxOccurs="0") says "no element may be
52
+ // applicable"; requirements on elements that must not exist are
53
+ // meaningless, and the IDS corpus treats them as invalid (IDS-008;
54
+ // ids/invalid-prohibited_specifications_invalid_if_requirements_are_specified).
55
+ if (max === 0 && spec.requirements.length > 0) {
56
+ issues.push({
57
+ severity: 'error',
58
+ code: 'E_CARDINALITY_INVALID',
59
+ message: `a prohibited specification (maxOccurs="0") cannot have requirements; it has ${spec.requirements.length}`,
60
+ path: `${path}.requirements`,
61
+ detail: { requirements: spec.requirements.length },
62
+ });
63
+ }
51
64
  // Upstream IDS-Audit-tool flags `cardinality` on `<applicability>` —
52
65
  // it's meaningless there. (Report 202)
53
66
  if (spec.applicability.cardinality) {
@@ -159,6 +172,12 @@ function check(c, path, issues, facetType) {
159
172
  // which we already do in the XSD audit.
160
173
  break;
161
174
  }
175
+ // XSD facets in one restriction are conjunctive (IDS-010): a malformed
176
+ // regex or an inverted bound in a sibling family is as fatal as in the
177
+ // primary one, so each sibling gets the same checks.
178
+ if (c.type !== 'simpleValue') {
179
+ c.and?.forEach((sibling, i) => check(sibling, `${path}.and[${i}]`, issues, facetType));
180
+ }
162
181
  }
163
182
  function checkBounds(c, path, issues, facetType) {
164
183
  const lo = c.minInclusive ?? c.minExclusive;
@@ -175,6 +194,21 @@ function checkBounds(c, path, issues, facetType) {
175
194
  detail: { min: lo, max: hi },
176
195
  });
177
196
  }
197
+ // Date, time and duration bounds order in their base's own value space
198
+ // (#7399); an unordered pair (`P1Y` vs `P365D`) is not reported.
199
+ const t = c.temporalBounds;
200
+ const tLo = t?.minInclusive ?? t?.minExclusive;
201
+ const tHi = t?.maxInclusive ?? t?.maxExclusive;
202
+ if (tLo !== undefined && tHi !== undefined && compareOrdered(tLo, tHi, c.base) === 1) {
203
+ issues.push({
204
+ severity: 'error',
205
+ code: 'E_RESTRICTION_RANGE',
206
+ message: `xs:restriction bounds inverted: lower (${tLo}) > upper (${tHi})`,
207
+ path,
208
+ facetType,
209
+ detail: { min: tLo, max: tHi },
210
+ });
211
+ }
178
212
  if (typeof c.minLength === 'number' &&
179
213
  typeof c.maxLength === 'number' &&
180
214
  c.minLength > c.maxLength) {
@@ -202,7 +236,7 @@ function checkBounds(c, path, issues, facetType) {
202
236
  issues.push({
203
237
  severity: 'error',
204
238
  code: 'E_RESTRICTION_FACET_UNPARSEABLE',
205
- message: `xs:${f.facet} @value="${f.rawValue}" could not be parsed as a number — this facet is dropped and, until fixed, the whole restriction rejects every value (it does not fall back to unbounded)`,
239
+ message: `xs:${f.facet} @value="${f.rawValue}" ${unparseableReason(f.facet, c.base)} — this facet is dropped and, until fixed, the whole restriction rejects every value (it does not fall back to unbounded)`,
206
240
  path,
207
241
  facetType,
208
242
  detail: { facet: f.facet, rawValue: f.rawValue },
@@ -218,27 +252,42 @@ function checkBounds(c, path, issues, facetType) {
218
252
  c.minExclusive === undefined &&
219
253
  c.maxInclusive === undefined &&
220
254
  c.maxExclusive === undefined &&
255
+ c.temporalBounds === undefined &&
221
256
  c.length === undefined &&
222
257
  c.minLength === undefined &&
223
- c.maxLength === undefined;
258
+ c.maxLength === undefined &&
259
+ c.totalDigits === undefined &&
260
+ c.fractionDigits === undefined;
224
261
  if (empty) {
225
262
  issues.push({
226
263
  severity: 'error',
227
264
  code: 'E_RESTRICTION_EMPTY',
228
- message: 'xs:restriction has no min/max bounds or length facets',
265
+ message: 'xs:restriction has no min/max bounds, length or digit facets',
229
266
  path,
230
267
  facetType,
231
268
  });
232
269
  }
233
270
  }
271
+ /**
272
+ * Why a facet's `@value` was not read: a min/max bound must be in the
273
+ * lexical space of the restriction's `@base` (#7399), a length or digit
274
+ * count is a non-negative integer.
275
+ */
276
+ function unparseableReason(facet, base) {
277
+ if (!/^(min|max)(In|Ex)clusive$/.test(facet))
278
+ return 'is not a non-negative integer';
279
+ return base
280
+ ? `is not a valid value for xs:restriction @base="${base}"`
281
+ : 'could not be parsed as a number';
282
+ }
234
283
  /**
235
284
  * Validate `pattern` against XSD regex semantics by translating XSD-only
236
285
  * escape codes to JS regex equivalents (cf. upstream `XmlRegex.cs`).
237
286
  *
238
- * Translation handles `\i`/`\c`/`\d`/`\w` and their negations via
239
- * Unicode property escapes (compiled with the `u` flag), and char-class
240
- * subtraction (`[a-z-[aeiou]]`) as a negative lookahead. A construct that
241
- * can only be approximated surfaces as `W_REGEX_UNVERIFIED`. Any remaining syntactic errors are real
287
+ * Translation follows XML Schema Part 2 Appendix F (multi-char and block
288
+ * escapes, char-class subtraction, literal `^` / `$`; see
289
+ * `constraints/xsd-regex.ts`). A construct with no exact translation, which
290
+ * validation refuses, surfaces as `W_REGEX_UNVERIFIED`. Any remaining syntactic errors are real
242
291
  * authoring mistakes and surface as `E_RESTRICTION_EMPTY` (upstream
243
292
  * Report 109).
244
293
  */
@@ -262,45 +311,10 @@ function checkPattern(pattern, path, issues, facetType) {
262
311
  issues.push({
263
312
  severity: 'warning',
264
313
  code: 'W_REGEX_UNVERIFIED',
265
- message: `xs:pattern uses XSD-specific syntax not verifiable in JS: ${result.reason}`,
314
+ message: `xs:pattern cannot be evaluated exactly, so validation will refuse it: ${result.reason}`,
266
315
  path,
267
316
  facetType,
268
317
  detail: { pattern },
269
318
  });
270
319
  }
271
- /**
272
- * Validate that `value` matches the lexical space of the supplied XSD
273
- * primitive base. Mirrors upstream `XsTypes.IsValid` (see the table, and the
274
- * date family it hands off); flags `<xs:enumeration value="12,0"/>` under
275
- * `<xs:restriction base="xs:double">`.
276
- */
277
- const XS_VALUE_REGEX = {
278
- // Upstream `XmlRegex.cs`, except the mantissa: `[0-9]*(?:\.[0-9]*)?` not
279
- // `[0-9]*\.?[0-9]*`, whose two adjacent digit runs make a failing lexeme
280
- // retry every split (quadratic, #3113). Same language, one parse/prefix.
281
- 'xs:integer': /^[+-]?(\d+)$/,
282
- 'xs:double': /^([-+]?[0-9]*(?:\.[0-9]*)?([eE][-+]?[0-9]+)?|NaN|\+INF|-INF)$/,
283
- 'xs:float': /^([-+]?[0-9]*(?:\.[0-9]*)?([eE][-+]?[0-9]+)?|NaN|\+INF|-INF)$/,
284
- 'xs:decimal': /^([-+]?[0-9]*(?:\.[0-9]*)?([eE][-+]?[0-9]+)?|NaN|\+INF|-INF)$/,
285
- 'xs:boolean': /^(true|false|0|1)$/,
286
- // The date family is absent on purpose: its value space is a calendar, not a
287
- // digit-run shape, so it goes through `isValidXsdDateTimeLiteral` (#3721).
288
- 'xs:duration': /^[-+]?P(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?$/,
289
- };
290
- export function isValidLexicalForXsType(value, base) {
291
- if (isXsdDateTimeBase(base))
292
- return isValidXsdDateTimeLiteral(value, base);
293
- const rx = XS_VALUE_REGEX[base];
294
- if (!rx)
295
- return true; // base we don't recognise → don't fabricate errors
296
- if (base === 'xs:double' || base === 'xs:float' || base === 'xs:decimal') {
297
- // Digit required in the MANTISSA, specials exempt (#3336). Testing the
298
- // whole lexeme accepted 'e5' on the exponent's digit and rejected the
299
- // digitless specials, which is how this and `literalCastsUnder` disagreed.
300
- const bare = !XSD_NUMERIC_SPECIALS.has(value);
301
- if (bare && !/[0-9]/.test(value.split(/[eE]/)[0]))
302
- return false;
303
- }
304
- return rx.test(value);
305
- }
306
320
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/coherence/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/coherence/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAkB/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACrC,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAChB,IAAsB,EACtB,IAAY,EACZ,MAAuB;IAEvB,gEAAgE;IAChE,2DAA2D;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,iDAAiD,GAAG,EAAE;YAC/D,IAAI,EAAE,GAAG,IAAI,YAAY;YACzB,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,gEAAgE,GAAG,EAAE;gBAC9E,IAAI,EAAE,GAAG,IAAI,YAAY;gBACzB,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IACE,OAAO,GAAG,KAAK,QAAQ;QACvB,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,GAAG,GAAG,EACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,cAAc,GAAG,gCAAgC,GAAG,GAAG;YAChE,IAAI,EAAE,GAAG,IAAI,YAAY;YACzB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,gEAAgE;IAChE,mEAAmE;IACnE,gFAAgF;IAChF,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,+EAA+E,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAClH,IAAI,EAAE,GAAG,IAAI,eAAe;YAC5B,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,uCAAuC;IACvC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,wCAAwC;YAC9C,OAAO,EAAE,gBAAgB,IAAI,CAAC,aAAa,CAAC,WAAW,oCAAoC;YAC3F,IAAI,EAAE,GAAG,IAAI,4BAA4B;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC9C,qBAAqB,CACnB,KAAK,EACL,GAAG,IAAI,yBAAyB,EAAE,GAAG,EACrC,MAAM,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QACpC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,iBAAiB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACxE,2BAA2B,CACzB,GAAG,EACH,GAAG,IAAI,iBAAiB,EAAE,GAAG,EAC7B,MAAM,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAe,EACf,IAAY,EACZ,MAAuB;IAEvB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM;QACR,KAAK,WAAW;YACd,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,KAAK,CAAC,KAAK;gBAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM;QACR,KAAK,UAAU;YACb,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACpE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,KAAK,CAAC,QAAQ;gBAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClF,IAAI,KAAK,CAAC,KAAK;gBAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM;QACR,KAAK,gBAAgB;YACnB,IAAI,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5E,IAAI,KAAK,CAAC,KAAK;gBAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM;QACR,KAAK,UAAU;YACb,IAAI,KAAK,CAAC,KAAK;gBAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,MAAM,CAAC,CAAC;YAChE,CAAC;YACD,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CACZ,CAAgB,EAChB,IAAY,EACZ,MAAuB,EACvB,SAA2B;IAE3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,aAAa;YAChB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,6CAA6C;oBACtD,IAAI;oBACJ,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,mCAAmC;oBAC5C,IAAI;oBACJ,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;YACD,iDAAiD;YACjD,+DAA+D;YAC/D,yDAAyD;YACzD,4DAA4D;YAC5D,4DAA4D;YAC5D,qDAAqD;YACrD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACX,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;wBAAE,SAAS;oBACpC,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC;4BACV,QAAQ,EAAE,OAAO;4BACjB,IAAI,EAAE,8BAA8B;4BACpC,OAAO,EAAE,yBAAyB,CAAC,4CAA4C,CAAC,CAAC,IAAI,GAAG;4BACxF,IAAI;4BACJ,SAAS;4BACT,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;yBACnC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,SAAS;YACZ,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM;QACR,KAAK,aAAa;YAChB,gEAAgE;YAChE,wCAAwC;YACxC,MAAM;IACV,CAAC;IACD,uEAAuE;IACvE,uEAAuE;IACvE,qDAAqD;IACrD,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,CAA6C,EAC7C,IAAY,EACZ,MAAuB,EACvB,SAA2B;IAE3B,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;IAC5C,IACE,OAAO,EAAE,KAAK,QAAQ;QACtB,OAAO,EAAE,KAAK,QAAQ;QACtB,EAAE,GAAG,EAAE,EACP,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,0CAA0C,EAAE,cAAc,EAAE,GAAG;YACxE,IAAI;YACJ,SAAS;YACT,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;IAC3B,MAAM,GAAG,GAAG,CAAC,EAAE,YAAY,IAAI,CAAC,EAAE,YAAY,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,EAAE,YAAY,IAAI,CAAC,EAAE,YAAY,CAAC;IAC/C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,0CAA0C,GAAG,cAAc,GAAG,GAAG;YAC1E,IAAI;YACJ,SAAS;YACT,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,IACE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EACzB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,+CAA+C,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,SAAS,GAAG;YACnG,IAAI;YACJ,SAAS;YACT,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;IACD,IACE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,EACpE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,gEAAgE;YACzE,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,iCAAiC;gBACvC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,QAAQ,KAAK,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,2HAA2H;gBAC9M,IAAI;gBACJ,SAAS;gBACT,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,iEAAiE;IACjE,iEAAiE;IACjE,2DAA2D;IAC3D,mCAAmC;IACnC,MAAM,KAAK,GACT,CAAC,CAAC,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC;QACvE,CAAC,CAAC,YAAY,KAAK,SAAS;QAC5B,CAAC,CAAC,YAAY,KAAK,SAAS;QAC5B,CAAC,CAAC,YAAY,KAAK,SAAS;QAC5B,CAAC,CAAC,YAAY,KAAK,SAAS;QAC5B,CAAC,CAAC,cAAc,KAAK,SAAS;QAC9B,CAAC,CAAC,MAAM,KAAK,SAAS;QACtB,CAAC,CAAC,SAAS,KAAK,SAAS;QACzB,CAAC,CAAC,SAAS,KAAK,SAAS;QACzB,CAAC,CAAC,WAAW,KAAK,SAAS;QAC3B,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC;IACjC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,8DAA8D;YACvE,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,KAAa,EAAE,IAAwB;IAChE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,+BAA+B,CAAC;IACrF,OAAO,IAAI;QACT,CAAC,CAAC,kDAAkD,IAAI,GAAG;QAC3D,CAAC,CAAC,iCAAiC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,YAAY,CACnB,OAAe,EACf,IAAY,EACZ,MAAuB,EACvB,SAA2B;IAE3B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO;IACtB,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB;YACpE,OAAO,EACL,OAAO,KAAK,EAAE;gBACZ,CAAC,CAAC,4BAA4B;gBAC9B,CAAC,CAAC,iDAAiD,MAAM,CAAC,MAAM,EAAE;YACtE,IAAI;YACJ,SAAS;YACT,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE;SACjD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,yEAAyE,MAAM,CAAC,MAAM,EAAE;QACjG,IAAI;QACJ,SAAS;QACT,MAAM,EAAE,EAAE,OAAO,EAAE;KACpB,CAAC,CAAC;AACL,CAAC"}
@@ -12,9 +12,9 @@ export { translateXsdRegex, type TranslateResult };
12
12
  * - `{ ok: true }` when the pattern is valid (after translation).
13
13
  * - `{ ok: false, severity: 'error', reason }` for syntactic errors
14
14
  * that JS *and* XSD agree on (e.g. unclosed `[`).
15
- * - `{ ok: false, severity: 'warning', reason }` when the pattern uses
16
- * XSD-only syntax we can only approximate (a `\p{Is…}` block escape,
17
- * an undelimitable char-class subtraction).
15
+ * - `{ ok: false, severity: 'warning', reason }` when the pattern uses a
16
+ * construct with no exact translation (an unknown `\p{Is…}` block, an
17
+ * escape XSD does not define, an undelimitable char-class subtraction).
18
18
  */
19
19
  export declare function compileXsdRegex(pattern: string): {
20
20
  ok: true;
@@ -15,9 +15,9 @@ export { translateXsdRegex };
15
15
  * - `{ ok: true }` when the pattern is valid (after translation).
16
16
  * - `{ ok: false, severity: 'error', reason }` for syntactic errors
17
17
  * that JS *and* XSD agree on (e.g. unclosed `[`).
18
- * - `{ ok: false, severity: 'warning', reason }` when the pattern uses
19
- * XSD-only syntax we can only approximate (a `\p{Is…}` block escape,
20
- * an undelimitable char-class subtraction).
18
+ * - `{ ok: false, severity: 'warning', reason }` when the pattern uses a
19
+ * construct with no exact translation (an unknown `\p{Is…}` block, an
20
+ * escape XSD does not define, an undelimitable char-class subtraction).
21
21
  */
22
22
  export function compileXsdRegex(pattern) {
23
23
  if (pattern === '') {
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Attribute `<value>` against the attribute's own type (IDS-006). An IFC
3
+ * attribute has an XSD primitive type per entity (`IfcTask.IsMilestone`
4
+ * is `xs:boolean`, `IfcStairFlight.NumberOfRisers` is `xs:integer`), so a
5
+ * value that is no literal of that type (`FALSE`, `42.0`, `42,3`), or a
6
+ * restriction on an incompatible base (an `xs:string` pattern on an
7
+ * `xs:double` attribute), can never match.
8
+ *
9
+ * Checked only when the attribute's type is unambiguous: one XSD type
10
+ * across every attribute the name resolves to on the applicability
11
+ * entity's inheritance chain.
12
+ */
13
+ import { type IfcEntityInfo, type IfcSchemaVersion } from '@ifc-lite/data';
14
+ import type { IDSFacet } from '../../types.js';
15
+ import type { IDSAuditIssue } from '../types.js';
16
+ export declare function auditAttributeValueType(facet: Extract<IDSFacet, {
17
+ type: 'attribute';
18
+ }>, version: IfcSchemaVersion, chain: readonly IfcEntityInfo[], path: string, issues: IDSAuditIssue[]): void;
19
+ //# sourceMappingURL=attribute-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-value.d.ts","sourceRoot":"","sources":["../../../src/audit/ifc-schema/attribute-value.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAwB,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmCjD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EAC/C,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EAAE,GACtB,IAAI,CAeN"}
@@ -0,0 +1,71 @@
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
+ /**
5
+ * Attribute `<value>` against the attribute's own type (IDS-006). An IFC
6
+ * attribute has an XSD primitive type per entity (`IfcTask.IsMilestone`
7
+ * is `xs:boolean`, `IfcStairFlight.NumberOfRisers` is `xs:integer`), so a
8
+ * value that is no literal of that type (`FALSE`, `42.0`, `42,3`), or a
9
+ * restriction on an incompatible base (an `xs:string` pattern on an
10
+ * `xs:double` attribute), can never match.
11
+ *
12
+ * Checked only when the attribute's type is unambiguous: one XSD type
13
+ * across every attribute the name resolves to on the applicability
14
+ * entity's inheritance chain.
15
+ */
16
+ import { getAttributeXsdTypes } from '@ifc-lite/data';
17
+ import { assertGuardedRegexPattern } from '@ifc-lite/regex-guard';
18
+ import { checkRestrictionBase, checkSimpleValueLexical } from './datatype-check.js';
19
+ /** Attribute names on `chain` that the facet's name constraint selects. */
20
+ function resolveAttributeNames(name, chain) {
21
+ const declared = chain.flatMap((entity) => entity.attributes);
22
+ switch (name.type) {
23
+ case 'simpleValue':
24
+ return declared.filter((a) => a === name.value);
25
+ case 'enumeration':
26
+ return declared.filter((a) => name.values.includes(a));
27
+ case 'pattern': {
28
+ // An unsafe or uncompilable pattern resolves to nothing here; the
29
+ // regex guard and the coherence audit are what report it.
30
+ try {
31
+ assertGuardedRegexPattern(name.pattern);
32
+ const rx = new RegExp(`^(?:${name.pattern})$`);
33
+ return declared.filter((a) => rx.test(a));
34
+ }
35
+ catch {
36
+ return [];
37
+ }
38
+ }
39
+ default:
40
+ return [];
41
+ }
42
+ }
43
+ function xsdTypesOnChain(version, chain, attribute) {
44
+ for (const entity of chain) {
45
+ const types = getAttributeXsdTypes(version, entity.name, attribute);
46
+ if (types)
47
+ return types;
48
+ }
49
+ return [];
50
+ }
51
+ export function auditAttributeValueType(facet, version, chain, path, issues) {
52
+ if (!facet.value)
53
+ return;
54
+ const types = new Set();
55
+ const attributes = resolveAttributeNames(facet.name, chain);
56
+ for (const attribute of attributes) {
57
+ const own = xsdTypesOnChain(version, chain, attribute);
58
+ // An attribute without a known XSD type (entity- or select-typed) makes the union unknowable.
59
+ if (own.length === 0)
60
+ return;
61
+ for (const type of own)
62
+ types.add(type);
63
+ }
64
+ if (types.size !== 1)
65
+ return;
66
+ const [xsdType] = types;
67
+ const label = attributes.length === 1 ? attributes[0] : attributes.join(' | ');
68
+ checkSimpleValueLexical(facet.value, xsdType, label, `${path}.value`, 'attribute', issues);
69
+ checkRestrictionBase(facet.value, xsdType, label, `${path}.value`, issues, 'attribute');
70
+ }
71
+ //# sourceMappingURL=attribute-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-value.js","sourceRoot":"","sources":["../../../src/audit/ifc-schema/attribute-value.ts"],"names":[],"mappings":"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"}
@@ -20,5 +20,13 @@ export declare function checkDataTypeMatch(prop: IfcPropertyInfo, declared: stri
20
20
  * looks like a string enumeration unless we know the parent
21
21
  * `<xs:restriction base="xs:integer">`.
22
22
  */
23
- export declare function checkRestrictionBase(c: IDSConstraint, backingType: string, dataType: string, path: string, issues: IDSAuditIssue[]): void;
23
+ export declare function checkRestrictionBase(c: IDSConstraint, backingType: string, dataType: string, path: string, issues: IDSAuditIssue[], facetType?: 'property' | 'attribute'): void;
24
+ /**
25
+ * A `<simpleValue>` compared against a typed value must be a literal of
26
+ * that type's backing XSD type (upstream Report 305 family; IDS-005):
27
+ * `FALSE` is no `xs:boolean` (booleans are lowercase), `42.0` and `42.`
28
+ * are no `xs:integer`, `42,3` is no `xs:double`. Such a value can never
29
+ * equal a real one, so the requirement could only ever fail.
30
+ */
31
+ export declare function checkSimpleValueLexical(c: IDSConstraint, backingType: string, dataType: string, path: string, facetType: 'property' | 'attribute', issues: IDSAuditIssue[]): void;
24
32
  //# sourceMappingURL=datatype-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datatype-check.d.ts","sourceRoot":"","sources":["../../../src/audit/ifc-schema/datatype-check.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,EAAE,GACtB,IAAI,CAqCN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,aAAa,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EAAE,GACtB,IAAI,CAyCN"}
1
+ {"version":3,"file":"datatype-check.d.ts","sourceRoot":"","sources":["../../../src/audit/ifc-schema/datatype-check.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,EAAE,GACtB,IAAI,CAqCN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,aAAa,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EAAE,EACvB,SAAS,GAAE,UAAU,GAAG,WAAwB,GAC/C,IAAI,CAyCN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,aAAa,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,UAAU,GAAG,WAAW,EACnC,MAAM,EAAE,aAAa,EAAE,GACtB,IAAI,CAWN"}
@@ -1,6 +1,7 @@
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 { isValidLexicalForXsType } from '../../constraints/xsd-lexical.js';
4
5
  export function checkDataTypeMatch(prop, declared, path, psetName, propName, issues) {
5
6
  // `IDSPROPERTYSINGLEVALUE` etc. — the IDS spec uses the IFC pset
6
7
  // template type name, not the IFC datatype. We allow both: if the
@@ -53,7 +54,7 @@ export function checkDataTypeMatch(prop, declared, path, psetName, propName, iss
53
54
  * looks like a string enumeration unless we know the parent
54
55
  * `<xs:restriction base="xs:integer">`.
55
56
  */
56
- export function checkRestrictionBase(c, backingType, dataType, path, issues) {
57
+ export function checkRestrictionBase(c, backingType, dataType, path, issues, facetType = 'property') {
57
58
  // Only restrictions can mismatch — simpleValue is always treated as
58
59
  // string-compatible by the IDS XSD.
59
60
  if (c.type === 'simpleValue')
@@ -91,11 +92,32 @@ export function checkRestrictionBase(c, backingType, dataType, path, issues) {
91
92
  code: 'E_RESTRICTION_BASE_MISMATCH',
92
93
  message: `xs:restriction base (${inferred}) is not compatible with dataType "${dataType}" (backing ${backingType})`,
93
94
  path,
94
- facetType: 'property',
95
+ facetType,
95
96
  detail: { inferred, expected: backingType, dataType },
96
97
  });
97
98
  }
98
99
  }
100
+ /**
101
+ * A `<simpleValue>` compared against a typed value must be a literal of
102
+ * that type's backing XSD type (upstream Report 305 family; IDS-005):
103
+ * `FALSE` is no `xs:boolean` (booleans are lowercase), `42.0` and `42.`
104
+ * are no `xs:integer`, `42,3` is no `xs:double`. Such a value can never
105
+ * equal a real one, so the requirement could only ever fail.
106
+ */
107
+ export function checkSimpleValueLexical(c, backingType, dataType, path, facetType, issues) {
108
+ if (c.type !== 'simpleValue' || c.value === '')
109
+ return;
110
+ if (isValidLexicalForXsType(c.value, backingType))
111
+ return;
112
+ issues.push({
113
+ severity: 'error',
114
+ code: 'E_RESTRICTION_VALUE_MISMATCH',
115
+ message: `value "${c.value}" is not a valid ${backingType} literal, so it can never equal a ${dataType} value`,
116
+ path,
117
+ facetType,
118
+ detail: { value: c.value, base: backingType, dataType },
119
+ });
120
+ }
99
121
  /**
100
122
  * XSD type compatibility per upstream `IdsProperty.cs`: the restriction
101
123
  * `@base` must equal the IFC dataType's backing XSD type exactly. The
@@ -1 +1 @@
1
- {"version":3,"file":"datatype-check.js","sourceRoot":"","sources":["../../../src/audit/ifc-schema/datatype-check.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,MAAM,UAAU,kBAAkB,CAChC,IAAqB,EACrB,QAAgB,EAChB,IAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,MAAuB;IAEvB,iEAAiE;IACjE,kEAAkE;IAClE,kEAAkE;IAClE,2EAA2E;IAC3E,0EAA0E;IAC1E,wBAAwB;IACxB,EAAE;IACF,kEAAkE;IAClE,uEAAuE;IACvE,6DAA6D;IAC7D,2DAA2D;IAC3D,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1E,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,aAAa;QAAE,OAAO;IACjE,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,WAAW,IAAI,aAAa,KAAK,WAAW;QAAE,OAAO;IACzD,gEAAgE;IAChE,kEAAkE;IAClE,+DAA+D;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,sEAAsE;IACtE,uEAAuE;IACvE,iDAAiD;IACjD,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,GAAG,QAAQ,IAAI,QAAQ,aAAa,QAAQ,yBAAyB,QAAQ,EAAE;QACxF,IAAI,EAAE,GAAG,IAAI,WAAW;QACxB,SAAS,EAAE,UAAU;QACrB,MAAM,EAAE;YACN,QAAQ;YACR,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,CAAgB,EAChB,WAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,MAAuB;IAEvB,oEAAoE;IACpE,oCAAoC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO;IACrC,MAAM,YAAY,GAChB,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QACrE,CAAC,CAAC,CAAC,CAAC,IAAI;QACR,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,QAA4B,CAAC;IACjC,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,GAAG,YAAY,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,aAAa;gBAChB,QAAQ,GAAG,WAAW,CAAC;gBACvB,MAAM;YACR,KAAK,QAAQ;gBACX,IACE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;oBAC5B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;oBAC/B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,EAC/B,CAAC;oBACD,QAAQ,GAAG,WAAW,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,WAAW,CAAC;gBACzB,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,wBAAwB,QAAQ,sCAAsC,QAAQ,cAAc,WAAW,GAAG;YACnH,IAAI;YACJ,SAAS,EAAE,UAAU;YACrB,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IAC5D,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA6B;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC;QAClC,KAAK,aAAa;YAChB,OAAO,4BAA4B,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,sBAAsB,CAAC;QAChC,KAAK,SAAS;YACZ,OAAO,yBAAyB,CAAC;QACnC,KAAK,WAAW;YACd,OAAO,2BAA2B,CAAC;QACrC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"datatype-check.js","sourceRoot":"","sources":["../../../src/audit/ifc-schema/datatype-check.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAY/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,MAAM,UAAU,kBAAkB,CAChC,IAAqB,EACrB,QAAgB,EAChB,IAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,MAAuB;IAEvB,iEAAiE;IACjE,kEAAkE;IAClE,kEAAkE;IAClE,2EAA2E;IAC3E,0EAA0E;IAC1E,wBAAwB;IACxB,EAAE;IACF,kEAAkE;IAClE,uEAAuE;IACvE,6DAA6D;IAC7D,2DAA2D;IAC3D,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1E,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,aAAa;QAAE,OAAO;IACjE,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,WAAW,IAAI,aAAa,KAAK,WAAW;QAAE,OAAO;IACzD,gEAAgE;IAChE,kEAAkE;IAClE,+DAA+D;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,sEAAsE;IACtE,uEAAuE;IACvE,iDAAiD;IACjD,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,GAAG,QAAQ,IAAI,QAAQ,aAAa,QAAQ,yBAAyB,QAAQ,EAAE;QACxF,IAAI,EAAE,GAAG,IAAI,WAAW;QACxB,SAAS,EAAE,UAAU;QACrB,MAAM,EAAE;YACN,QAAQ;YACR,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,CAAgB,EAChB,WAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,MAAuB,EACvB,YAAsC,UAAU;IAEhD,oEAAoE;IACpE,oCAAoC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO;IACrC,MAAM,YAAY,GAChB,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QACrE,CAAC,CAAC,CAAC,CAAC,IAAI;QACR,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,QAA4B,CAAC;IACjC,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,GAAG,YAAY,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,aAAa;gBAChB,QAAQ,GAAG,WAAW,CAAC;gBACvB,MAAM;YACR,KAAK,QAAQ;gBACX,IACE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;oBAC5B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;oBAC/B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,EAC/B,CAAC;oBACD,QAAQ,GAAG,WAAW,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,WAAW,CAAC;gBACzB,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,wBAAwB,QAAQ,sCAAsC,QAAQ,cAAc,WAAW,GAAG;YACnH,IAAI;YACJ,SAAS;YACT,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,CAAgB,EAChB,WAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,SAAmC,EACnC,MAAuB;IAEvB,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE;QAAE,OAAO;IACvD,IAAI,uBAAuB,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC;QAAE,OAAO;IAC1D,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE,UAAU,CAAC,CAAC,KAAK,oBAAoB,WAAW,qCAAqC,QAAQ,QAAQ;QAC9G,IAAI;QACJ,SAAS;QACT,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE;KACxD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IAC5D,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA6B;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC;QAClC,KAAK,aAAa;YAChB,OAAO,4BAA4B,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,sBAAsB,CAAC;QAChC,KAAK,SAAS;YACZ,OAAO,yBAAyB,CAAC;QACnC,KAAK,WAAW;YACd,OAAO,2BAA2B,CAAC;QACrC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Entity-name checks that need more than one facet (IDS-007).
3
+ *
4
+ * - IDS entity names are upper case (`IFCWALL`); `IfcWall` names nothing
5
+ * (corpus: entity/invalid-entities_must_be_specified_as_uppercase_strings).
6
+ * - An entity facet in the requirements is checked against the elements the
7
+ * applicability selects, by exact class (IDS 1.0 entity facets do not match
8
+ * subclasses). When no class the requirement admits is one the
9
+ * applicability admits, every applicable element fails, so the
10
+ * specification can only ever fail (corpus: entity/invalid-an_entity_not_
11
+ * matching_the_specified_class_should_fail, …_subclasses_are_not_considered_
12
+ * as_matching, …_as_a_xsd_regex_pattern_1_2, …_as_an_enumeration_3_3).
13
+ */
14
+ import type { IfcSchemaVersion } from '@ifc-lite/data';
15
+ import type { IDSEntityFacet } from '../../types.js';
16
+ import type { IDSAuditIssue } from '../types.js';
17
+ export type EntityResolver = (facet: IDSEntityFacet, version: IfcSchemaVersion) => Promise<string[]>;
18
+ /** Literal entity names (simple value or enumeration) must be written in upper case. */
19
+ export declare function auditEntityNameCase(facet: IDSEntityFacet, path: string, issues: IDSAuditIssue[]): void;
20
+ export declare function auditEntityRequirement(requirement: IDSEntityFacet, applicability: IDSEntityFacet | undefined, version: IfcSchemaVersion, resolve: EntityResolver, path: string, issues: IDSAuditIssue[]): Promise<void>;
21
+ //# sourceMappingURL=entity-requirement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-requirement.d.ts","sourceRoot":"","sources":["../../../src/audit/ifc-schema/entity-requirement.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAErG,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAetG;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,45 @@
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
+ /** Literal entity names (simple value or enumeration) must be written in upper case. */
5
+ export function auditEntityNameCase(facet, path, issues) {
6
+ const names = facet.name.type === 'simpleValue' ? [facet.name.value]
7
+ : facet.name.type === 'enumeration' ? facet.name.values
8
+ : [];
9
+ for (const name of names) {
10
+ if (!name || name === name.toUpperCase())
11
+ continue;
12
+ issues.push({
13
+ severity: 'error',
14
+ code: 'E_IFC_ENTITY_CASE',
15
+ message: `entity name "${name}" must be upper case ("${name.toUpperCase()}"); IDS entity names are case-sensitive`,
16
+ path: `${path}.name`,
17
+ facetType: 'entity',
18
+ detail: { value: name, expected: name.toUpperCase() },
19
+ });
20
+ }
21
+ }
22
+ export async function auditEntityRequirement(requirement, applicability, version, resolve, path, issues) {
23
+ if (!applicability)
24
+ return;
25
+ const [applicable, required] = await Promise.all([resolve(applicability, version), resolve(requirement, version)]);
26
+ // An unresolvable side (bad pattern, unknown schema) proves nothing.
27
+ if (applicable.length === 0 || required.length === 0)
28
+ return;
29
+ const admitted = new Set(required.map((name) => name.toUpperCase()));
30
+ if (applicable.some((name) => admitted.has(name.toUpperCase())))
31
+ return;
32
+ issues.push({
33
+ severity: 'error',
34
+ code: 'E_IFC_ENTITY_IMPOSSIBLE',
35
+ message: `the required entity (${preview(required)}) is never one of the applicable entities (${preview(applicable)}) in ${version}, so every applicable element fails; IDS entity facets match the exact class, not subclasses`,
36
+ path: `${path}.name`,
37
+ facetType: 'entity',
38
+ detail: { required: preview(required), applicable: preview(applicable), version },
39
+ });
40
+ }
41
+ function preview(names) {
42
+ const shown = names.slice(0, 5).map((n) => n.toUpperCase()).join(', ');
43
+ return names.length > 5 ? `${shown}, … ${names.length - 5} more` : shown;
44
+ }
45
+ //# sourceMappingURL=entity-requirement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-requirement.js","sourceRoot":"","sources":["../../../src/audit/ifc-schema/entity-requirement.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAsB/D,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,KAAqB,EAAE,IAAY,EAAE,MAAuB;IAC9F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAClE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;YACrD,CAAC,CAAC,EAAE,CAAC;IACT,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;YAAE,SAAS;QACnD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,gBAAgB,IAAI,0BAA0B,IAAI,CAAC,WAAW,EAAE,yCAAyC;YAClH,IAAI,EAAE,GAAG,IAAI,OAAO;YACpB,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAA2B,EAC3B,aAAyC,EACzC,OAAyB,EACzB,OAAuB,EACvB,IAAY,EACZ,MAAuB;IAEvB,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnH,qEAAqE;IACrE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAAE,OAAO;IACxE,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,wBAAwB,OAAO,CAAC,QAAQ,CAAC,8CAA8C,OAAO,CAAC,UAAU,CAAC,QAAQ,OAAO,8FAA8F;QAChO,IAAI,EAAE,GAAG,IAAI,OAAO;QACpB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE;KAClF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,KAAwB;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/ifc-schema/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIlE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,GAC3C,OAAO,CAAC,aAAa,EAAE,CAAC,CAwB1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/ifc-schema/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOlE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,GAC3C,OAAO,CAAC,aAAa,EAAE,CAAC,CAwB1B"}