@ifc-lite/ids 1.14.10 → 1.15.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 (124) hide show
  1. package/README.md +53 -44
  2. package/dist/audit/coherence/index.d.ts +12 -0
  3. package/dist/audit/coherence/index.d.ts.map +1 -0
  4. package/dist/audit/coherence/index.js +392 -0
  5. package/dist/audit/coherence/index.js.map +1 -0
  6. package/dist/audit/coherence/regex.d.ts +57 -0
  7. package/dist/audit/coherence/regex.d.ts.map +1 -0
  8. package/dist/audit/coherence/regex.js +111 -0
  9. package/dist/audit/coherence/regex.js.map +1 -0
  10. package/dist/audit/ifc-schema/index.d.ts +4 -0
  11. package/dist/audit/ifc-schema/index.d.ts.map +1 -0
  12. package/dist/audit/ifc-schema/index.js +637 -0
  13. package/dist/audit/ifc-schema/index.js.map +1 -0
  14. package/dist/audit/index.d.ts +37 -0
  15. package/dist/audit/index.d.ts.map +1 -0
  16. package/dist/audit/index.js +60 -0
  17. package/dist/audit/index.js.map +1 -0
  18. package/dist/audit/parser-shim.d.ts +13 -0
  19. package/dist/audit/parser-shim.d.ts.map +1 -0
  20. package/dist/audit/parser-shim.js +66 -0
  21. package/dist/audit/parser-shim.js.map +1 -0
  22. package/dist/audit/structural/index.d.ts +22 -0
  23. package/dist/audit/structural/index.d.ts.map +1 -0
  24. package/dist/audit/structural/index.js +441 -0
  25. package/dist/audit/structural/index.js.map +1 -0
  26. package/dist/audit/types.d.ts +91 -0
  27. package/dist/audit/types.d.ts.map +1 -0
  28. package/dist/audit/types.js +5 -0
  29. package/dist/audit/types.js.map +1 -0
  30. package/dist/audit/xsd/index.d.ts +13 -0
  31. package/dist/audit/xsd/index.d.ts.map +1 -0
  32. package/dist/audit/xsd/index.js +203 -0
  33. package/dist/audit/xsd/index.js.map +1 -0
  34. package/dist/bridge/classifications.d.ts +15 -0
  35. package/dist/bridge/classifications.d.ts.map +1 -0
  36. package/dist/bridge/classifications.js +114 -0
  37. package/dist/bridge/classifications.js.map +1 -0
  38. package/dist/bridge/data-accessor.d.ts +16 -0
  39. package/dist/bridge/data-accessor.d.ts.map +1 -0
  40. package/dist/bridge/data-accessor.js +205 -0
  41. package/dist/bridge/data-accessor.js.map +1 -0
  42. package/dist/bridge/data-types.d.ts +11 -0
  43. package/dist/bridge/data-types.d.ts.map +1 -0
  44. package/dist/bridge/data-types.js +47 -0
  45. package/dist/bridge/data-types.js.map +1 -0
  46. package/dist/bridge/index.d.ts +17 -0
  47. package/dist/bridge/index.d.ts.map +1 -0
  48. package/dist/bridge/index.js +20 -0
  49. package/dist/bridge/index.js.map +1 -0
  50. package/dist/bridge/materials.d.ts +11 -0
  51. package/dist/bridge/materials.d.ts.map +1 -0
  52. package/dist/bridge/materials.js +68 -0
  53. package/dist/bridge/materials.js.map +1 -0
  54. package/dist/bridge/predefined-types.d.ts +19 -0
  55. package/dist/bridge/predefined-types.d.ts.map +1 -0
  56. package/dist/bridge/predefined-types.js +84 -0
  57. package/dist/bridge/predefined-types.js.map +1 -0
  58. package/dist/bridge/properties.d.ts +20 -0
  59. package/dist/bridge/properties.d.ts.map +1 -0
  60. package/dist/bridge/properties.js +168 -0
  61. package/dist/bridge/properties.js.map +1 -0
  62. package/dist/bridge/schema-version.d.ts +10 -0
  63. package/dist/bridge/schema-version.d.ts.map +1 -0
  64. package/dist/bridge/schema-version.js +25 -0
  65. package/dist/bridge/schema-version.js.map +1 -0
  66. package/dist/bridge/units.d.ts +18 -0
  67. package/dist/bridge/units.d.ts.map +1 -0
  68. package/dist/bridge/units.js +55 -0
  69. package/dist/bridge/units.js.map +1 -0
  70. package/dist/constraints/comparators.d.ts +32 -0
  71. package/dist/constraints/comparators.d.ts.map +1 -0
  72. package/dist/constraints/comparators.js +94 -0
  73. package/dist/constraints/comparators.js.map +1 -0
  74. package/dist/constraints/index.d.ts +11 -1
  75. package/dist/constraints/index.d.ts.map +1 -1
  76. package/dist/constraints/index.js +74 -58
  77. package/dist/constraints/index.js.map +1 -1
  78. package/dist/constraints/xsd-cast.d.ts +20 -0
  79. package/dist/constraints/xsd-cast.d.ts.map +1 -0
  80. package/dist/constraints/xsd-cast.js +89 -0
  81. package/dist/constraints/xsd-cast.js.map +1 -0
  82. package/dist/facets/attribute-facet.d.ts.map +1 -1
  83. package/dist/facets/attribute-facet.js +80 -12
  84. package/dist/facets/attribute-facet.js.map +1 -1
  85. package/dist/facets/classification-facet.d.ts.map +1 -1
  86. package/dist/facets/classification-facet.js +21 -2
  87. package/dist/facets/classification-facet.js.map +1 -1
  88. package/dist/facets/entity-facet.d.ts.map +1 -1
  89. package/dist/facets/entity-facet.js +59 -7
  90. package/dist/facets/entity-facet.js.map +1 -1
  91. package/dist/facets/partof-facet.d.ts.map +1 -1
  92. package/dist/facets/partof-facet.js +40 -8
  93. package/dist/facets/partof-facet.js.map +1 -1
  94. package/dist/facets/property-facet.d.ts.map +1 -1
  95. package/dist/facets/property-facet.js +171 -55
  96. package/dist/facets/property-facet.js.map +1 -1
  97. package/dist/facets/test-helpers.d.ts +42 -0
  98. package/dist/facets/test-helpers.d.ts.map +1 -0
  99. package/dist/facets/test-helpers.js +106 -0
  100. package/dist/facets/test-helpers.js.map +1 -0
  101. package/dist/index.d.ts +2 -0
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +4 -0
  104. package/dist/index.js.map +1 -1
  105. package/dist/parser/xml-parser.d.ts.map +1 -1
  106. package/dist/parser/xml-parser.js +198 -68
  107. package/dist/parser/xml-parser.js.map +1 -1
  108. package/dist/translation/locales/de.d.ts +1 -0
  109. package/dist/translation/locales/de.d.ts.map +1 -1
  110. package/dist/translation/locales/de.js +1 -0
  111. package/dist/translation/locales/de.js.map +1 -1
  112. package/dist/translation/locales/en.d.ts +1 -0
  113. package/dist/translation/locales/en.d.ts.map +1 -1
  114. package/dist/translation/locales/en.js +1 -0
  115. package/dist/translation/locales/en.js.map +1 -1
  116. package/dist/translation/locales/fr.d.ts +1 -0
  117. package/dist/translation/locales/fr.d.ts.map +1 -1
  118. package/dist/translation/locales/fr.js +1 -0
  119. package/dist/translation/locales/fr.js.map +1 -1
  120. package/dist/types.d.ts +116 -7
  121. package/dist/types.d.ts.map +1 -1
  122. package/dist/validation/validator.js +49 -3
  123. package/dist/validation/validator.js.map +1 -1
  124. package/package.json +10 -3
@@ -1,22 +1,24 @@
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
- /** Numeric tolerance for floating point comparisons (per IDS spec) */
4
+ import { compareBoolean, compareNumeric, compareString, } from './comparators.js';
5
+ /** Tolerance for the bounds matcher's exclusive comparators. */
5
6
  const NUMERIC_TOLERANCE = 1e-6;
6
7
  /**
7
8
  * Check if a value matches a constraint
8
9
  */
9
- export function matchConstraint(constraint, actualValue) {
10
+ export function matchConstraint(constraint, actualValue, options) {
10
11
  if (actualValue === null || actualValue === undefined) {
11
12
  return false;
12
13
  }
14
+ const ci = options?.caseInsensitive ?? false;
13
15
  switch (constraint.type) {
14
16
  case 'simpleValue':
15
- return matchSimpleValue(constraint, actualValue);
17
+ return matchSimpleValue(constraint, actualValue, ci);
16
18
  case 'pattern':
17
- return matchPattern(constraint, actualValue);
19
+ return matchPattern(constraint, actualValue, ci);
18
20
  case 'enumeration':
19
- return matchEnumeration(constraint, actualValue);
21
+ return matchEnumeration(constraint, actualValue, ci);
20
22
  case 'bounds':
21
23
  return matchBounds(constraint, actualValue);
22
24
  default:
@@ -24,53 +26,44 @@ export function matchConstraint(constraint, actualValue) {
24
26
  }
25
27
  }
26
28
  /**
27
- * Match against a simple value (exact match)
29
+ * Match against a simple value. Tries each comparator in order:
30
+ * string → numeric → boolean. The first decisive result wins;
31
+ * `undefined` lets the next strategy run.
28
32
  */
29
- function matchSimpleValue(constraint, actualValue) {
33
+ function matchSimpleValue(constraint, actualValue, caseInsensitive) {
30
34
  const expected = constraint.value;
31
- const actualStr = String(actualValue);
32
- // Exact string match
33
- if (actualStr === expected)
34
- return true;
35
- // Case-insensitive match for IFC type names
36
- if (actualStr.toUpperCase() === expected.toUpperCase())
37
- return true;
38
- // Numeric comparison with tolerance
39
- const expectedNum = parseFloat(expected);
40
- const actualNum = typeof actualValue === 'number' ? actualValue : parseFloat(actualStr);
41
- if (!isNaN(expectedNum) && !isNaN(actualNum)) {
42
- return Math.abs(expectedNum - actualNum) <= NUMERIC_TOLERANCE;
43
- }
44
- // Boolean comparison
45
- if (typeof actualValue === 'boolean') {
46
- const expectedLower = expected.toLowerCase();
47
- if (expectedLower === 'true' || expectedLower === '1') {
48
- return actualValue === true;
49
- }
50
- if (expectedLower === 'false' || expectedLower === '0') {
51
- return actualValue === false;
52
- }
53
- }
54
- // Boolean string comparison
55
- const actualLower = actualStr.toLowerCase();
56
- const expectedLower = expected.toLowerCase();
57
- if ((actualLower === 'true' || actualLower === 'false') &&
58
- (expectedLower === 'true' || expectedLower === 'false')) {
59
- return actualLower === expectedLower;
60
- }
35
+ const stringResult = compareString(expected, actualValue, caseInsensitive);
36
+ if (stringResult !== undefined)
37
+ return stringResult;
38
+ const numericResult = compareNumeric(expected, actualValue);
39
+ if (numericResult !== undefined)
40
+ return numericResult;
41
+ const booleanResult = compareBoolean(expected, actualValue);
42
+ if (booleanResult !== undefined)
43
+ return booleanResult;
61
44
  return false;
62
45
  }
63
46
  /**
64
47
  * Match against a regex pattern
65
48
  * IDS uses XSD regex syntax which is slightly different from JavaScript
66
49
  */
67
- function matchPattern(constraint, actualValue) {
50
+ function matchPattern(constraint, actualValue, caseInsensitive = false) {
51
+ // Per IDS 1.0 spec patterns ONLY apply to string values. A pattern
52
+ // tested against a number / boolean fails outright — even if the
53
+ // textual representation would happen to match — so the validator
54
+ // can distinguish "wrong shape" from "wrong value".
55
+ if (typeof actualValue === 'number' || typeof actualValue === 'boolean') {
56
+ return false;
57
+ }
68
58
  const actualStr = String(actualValue);
69
59
  try {
70
60
  // Convert XSD regex to JavaScript regex
71
61
  const jsPattern = xsdToJsRegex(constraint.pattern);
72
- // IDS patterns must match the entire string
73
- const regex = new RegExp(`^${jsPattern}$`, 'i');
62
+ // IDS patterns must match the entire string. Case-insensitive
63
+ // matching is opt-in per the call site (entity / predefined-type
64
+ // names use it; property and attribute values do not).
65
+ const flags = caseInsensitive ? 'i' : '';
66
+ const regex = new RegExp(`^${jsPattern}$`, flags);
74
67
  return regex.test(actualStr);
75
68
  }
76
69
  catch {
@@ -93,24 +86,21 @@ function xsdToJsRegex(xsdPattern) {
93
86
  .replace(/\[([^\]]+)-\[[^\]]+\]\]/g, '[$1]'));
94
87
  }
95
88
  /**
96
- * Match against an enumeration (one of a list)
89
+ * Match against an enumeration. The actual value matches if ANY of the
90
+ * declared options matches under string / numeric / boolean comparison
91
+ * — same strategy table as `matchSimpleValue`, just iterated.
97
92
  */
98
- function matchEnumeration(constraint, actualValue) {
99
- const actualStr = String(actualValue);
100
- const actualUpper = actualStr.toUpperCase();
93
+ function matchEnumeration(constraint, actualValue, caseInsensitive) {
101
94
  return constraint.values.some((v) => {
102
- // Try exact match first
103
- if (v === actualStr)
104
- return true;
105
- // Case-insensitive match
106
- if (v.toUpperCase() === actualUpper)
107
- return true;
108
- // Numeric comparison
109
- const vNum = parseFloat(v);
110
- const actualNum = typeof actualValue === 'number' ? actualValue : parseFloat(actualStr);
111
- if (!isNaN(vNum) && !isNaN(actualNum)) {
112
- return Math.abs(vNum - actualNum) <= NUMERIC_TOLERANCE;
113
- }
95
+ const stringResult = compareString(v, actualValue, caseInsensitive);
96
+ if (stringResult !== undefined)
97
+ return stringResult;
98
+ const numericResult = compareNumeric(v, actualValue);
99
+ if (numericResult !== undefined)
100
+ return numericResult;
101
+ const booleanResult = compareBoolean(v, actualValue);
102
+ if (booleanResult !== undefined)
103
+ return booleanResult;
114
104
  return false;
115
105
  });
116
106
  }
@@ -118,17 +108,43 @@ function matchEnumeration(constraint, actualValue) {
118
108
  * Match against numeric bounds
119
109
  */
120
110
  function matchBounds(constraint, actualValue) {
111
+ // String-length facets (xs:length / xs:minLength / xs:maxLength)
112
+ // operate on the textual length, not on numeric magnitude. When any
113
+ // of them are present, evaluate the length constraints first.
114
+ if (constraint.length !== undefined ||
115
+ constraint.minLength !== undefined ||
116
+ constraint.maxLength !== undefined) {
117
+ const str = String(actualValue);
118
+ if (constraint.length !== undefined && str.length !== constraint.length) {
119
+ return false;
120
+ }
121
+ if (constraint.minLength !== undefined && str.length < constraint.minLength) {
122
+ return false;
123
+ }
124
+ if (constraint.maxLength !== undefined && str.length > constraint.maxLength) {
125
+ return false;
126
+ }
127
+ // Length-only restrictions don't impose numeric bounds; if the
128
+ // constraint also carries min/max we fall through to the numeric
129
+ // check below (rare in practice).
130
+ if (constraint.minInclusive === undefined &&
131
+ constraint.maxInclusive === undefined &&
132
+ constraint.minExclusive === undefined &&
133
+ constraint.maxExclusive === undefined) {
134
+ return true;
135
+ }
136
+ }
121
137
  const num = typeof actualValue === 'number'
122
138
  ? actualValue
123
139
  : parseFloat(String(actualValue));
124
140
  if (isNaN(num))
125
141
  return false;
126
142
  if (constraint.minInclusive !== undefined &&
127
- num < constraint.minInclusive - NUMERIC_TOLERANCE) {
143
+ num < constraint.minInclusive) {
128
144
  return false;
129
145
  }
130
146
  if (constraint.maxInclusive !== undefined &&
131
- num > constraint.maxInclusive + NUMERIC_TOLERANCE) {
147
+ num > constraint.maxInclusive) {
132
148
  return false;
133
149
  }
134
150
  if (constraint.minExclusive !== undefined && num <= constraint.minExclusive) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constraints/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constraints/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EACL,cAAc,EACd,cAAc,EACd,aAAa,GAEd,MAAM,kBAAkB,CAAC;AAE1B,gEAAgE;AAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAa/B;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAyB,EACzB,WAAyD,EACzD,OAAsB;IAEtB,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,EAAE,eAAe,IAAI,KAAK,CAAC;IAE7C,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACvD,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACvD,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9C;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,UAA0B,EAC1B,WAAsC,EACtC,eAAwB;IAExB,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;IAClC,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAC3E,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IACpD,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC;IACtD,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CACnB,UAAgC,EAChC,WAAsC,EACtC,eAAe,GAAG,KAAK;IAEvB,mEAAmE;IACnE,iEAAiE;IACjE,kEAAkE;IAClE,oDAAoD;IACpD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,SAAS,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,wCAAwC;QACxC,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnD,8DAA8D;QAC9D,iEAAiE;QACjE,uDAAuD;QACvD,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,UAAkB;IACtC,OAAO,CACL,UAAU;QACR,2CAA2C;SAC1C,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;QAC9B,wCAAwC;SACvC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC;QACnC,sDAAsD;SACrD,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;QAC9B,+DAA+D;SAC9D,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,UAAoC,EACpC,WAAsC,EACtC,eAAwB;IAExB,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QACpE,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC;QACpD,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC;QACtD,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,UAA+B,EAC/B,WAAsC;IAEtC,iEAAiE;IACjE,oEAAoE;IACpE,8DAA8D;IAC9D,IACE,UAAU,CAAC,MAAM,KAAK,SAAS;QAC/B,UAAU,CAAC,SAAS,KAAK,SAAS;QAClC,UAAU,CAAC,SAAS,KAAK,SAAS,EAClC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,+DAA+D;QAC/D,iEAAiE;QACjE,kCAAkC;QAClC,IACE,UAAU,CAAC,YAAY,KAAK,SAAS;YACrC,UAAU,CAAC,YAAY,KAAK,SAAS;YACrC,UAAU,CAAC,YAAY,KAAK,SAAS;YACrC,UAAU,CAAC,YAAY,KAAK,SAAS,EACrC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GACP,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtC,IAAI,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7B,IACE,UAAU,CAAC,YAAY,KAAK,SAAS;QACrC,GAAG,GAAG,UAAU,CAAC,YAAY,EAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,UAAU,CAAC,YAAY,KAAK,SAAS;QACrC,GAAG,GAAG,UAAU,CAAC,YAAY,EAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAAyB,EACzB,WAAyD;IAEzD,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,aAAa;YAChB,OAAO,aAAa,UAAU,CAAC,KAAK,WAAW,WAAW,GAAG,CAAC;QAChE,KAAK,SAAS;YACZ,OAAO,IAAI,WAAW,6BAA6B,UAAU,CAAC,OAAO,GAAG,CAAC;QAC3E,KAAK,aAAa;YAChB,OAAO,IAAI,WAAW,oBAAoB,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACjG,KAAK,QAAQ;YACX,OAAO,uBAAuB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC1D;YACE,OAAO,yBAAyB,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAA+B,EAC/B,WAAsC;IAEtC,MAAM,GAAG,GACP,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,IAAI,WAAW,yBAAyB,CAAC;IAClD,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IACE,UAAU,CAAC,YAAY,KAAK,SAAS;QACrC,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,iBAAiB,EACjD,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IACE,UAAU,CAAC,YAAY,KAAK,SAAS;QACrC,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,iBAAiB,EACjD,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5E,UAAU,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5E,UAAU,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAyB;IACxD,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,aAAa;YAChB,OAAO,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC;QACjC,KAAK,SAAS;YACZ,OAAO,YAAY,UAAU,CAAC,OAAO,GAAG,CAAC;QAC3C,KAAK,aAAa;YAChB,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YACrC,CAAC;YACD,OAAO,WAAW,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzE,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;QAClC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,UAA+B;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IACE,UAAU,CAAC,YAAY,KAAK,SAAS;QACrC,UAAU,CAAC,YAAY,KAAK,SAAS,EACrC,CAAC;QACD,OAAO,WAAW,UAAU,CAAC,YAAY,QAAQ,UAAU,CAAC,YAAY,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Returns true iff the IDS literal `value` casts successfully under at
3
+ * least one of `xsdTypes`. Empty / undefined `xsdTypes` returns `true`
4
+ * (no constraint). Unknown XSD types are accepted permissively so a
5
+ * future schema addition doesn't silently break validation.
6
+ */
7
+ export declare function literalCastsUnderAnyType(value: string, xsdTypes: readonly string[] | undefined): boolean;
8
+ export declare function literalCastsUnder(value: string, xsdType: string): boolean;
9
+ /**
10
+ * Map an IFC measure name (`IFCINTEGER`, `IFCREAL`, `IFCBOOLEAN`,
11
+ * `IFCDATE`, `IFCLENGTHMEASURE`, …) to the XSD primitive types it
12
+ * casts to. Used by the property facet to apply the same strict-cast
13
+ * gate to property literals — properties carry their measure name
14
+ * (not an XSD type) so we map first.
15
+ *
16
+ * Returns an empty array for measures we don't have a mapping for —
17
+ * `literalCastsUnderAnyType` then no-ops.
18
+ */
19
+ export declare function ifcMeasureToXsdTypes(measure: string | undefined): readonly string[];
20
+ //# sourceMappingURL=xsd-cast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsd-cast.d.ts","sourceRoot":"","sources":["../../src/constraints/xsd-cast.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACtC,OAAO,CAGT;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAoBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE,CAuBnF"}
@@ -0,0 +1,89 @@
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
+ * XSD strict-cast helpers shared by the attribute and property facets.
6
+ *
7
+ * Mirrors the `int.TryParse` / `double.TryParse` / `DateTime.TryParse`
8
+ * rules upstream `IDS-Audit-tool` applies before doing the value
9
+ * comparison. An IDS literal must cast successfully under at least one
10
+ * of the slot's declared XSD types — `xs:integer` rejects `42.0`,
11
+ * `xs:double` accepts either, etc.
12
+ */
13
+ const INTEGER_RE = /^[+-]?\d+$/;
14
+ const DOUBLE_RE = /^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/;
15
+ const DATE_RE = /^\d{4}-\d{2}-\d{2}(Z|[+-]\d{2}:\d{2})?$/;
16
+ const DATETIME_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/;
17
+ const DURATION_RE = /^-?P(?:\d+Y)?(?:\d+M)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+(?:\.\d+)?S)?)?$/;
18
+ /**
19
+ * Returns true iff the IDS literal `value` casts successfully under at
20
+ * least one of `xsdTypes`. Empty / undefined `xsdTypes` returns `true`
21
+ * (no constraint). Unknown XSD types are accepted permissively so a
22
+ * future schema addition doesn't silently break validation.
23
+ */
24
+ export function literalCastsUnderAnyType(value, xsdTypes) {
25
+ if (!xsdTypes || xsdTypes.length === 0)
26
+ return true;
27
+ return xsdTypes.some((t) => literalCastsUnder(value, t));
28
+ }
29
+ export function literalCastsUnder(value, xsdType) {
30
+ switch (xsdType) {
31
+ case 'xs:integer':
32
+ return INTEGER_RE.test(value);
33
+ case 'xs:double':
34
+ return DOUBLE_RE.test(value);
35
+ case 'xs:boolean':
36
+ return value === 'true' || value === 'false';
37
+ case 'xs:date':
38
+ return DATE_RE.test(value);
39
+ case 'xs:dateTime':
40
+ return DATETIME_RE.test(value);
41
+ case 'xs:duration':
42
+ return DURATION_RE.test(value);
43
+ case 'xs:string':
44
+ return true;
45
+ default:
46
+ // Unknown XSD type — be permissive rather than reject.
47
+ return true;
48
+ }
49
+ }
50
+ /**
51
+ * Map an IFC measure name (`IFCINTEGER`, `IFCREAL`, `IFCBOOLEAN`,
52
+ * `IFCDATE`, `IFCLENGTHMEASURE`, …) to the XSD primitive types it
53
+ * casts to. Used by the property facet to apply the same strict-cast
54
+ * gate to property literals — properties carry their measure name
55
+ * (not an XSD type) so we map first.
56
+ *
57
+ * Returns an empty array for measures we don't have a mapping for —
58
+ * `literalCastsUnderAnyType` then no-ops.
59
+ */
60
+ export function ifcMeasureToXsdTypes(measure) {
61
+ if (!measure)
62
+ return [];
63
+ const m = measure.toUpperCase();
64
+ if (m === 'IFCINTEGER' || m === 'IFCCOUNTMEASURE')
65
+ return ['xs:integer'];
66
+ if (m === 'IFCBOOLEAN')
67
+ return ['xs:boolean'];
68
+ if (m === 'IFCLOGICAL')
69
+ return ['xs:boolean', 'xs:string'];
70
+ if (m === 'IFCDATE')
71
+ return ['xs:date'];
72
+ if (m === 'IFCDATETIME')
73
+ return ['xs:dateTime'];
74
+ if (m === 'IFCDURATION' || m === 'IFCTIMESTAMP')
75
+ return ['xs:duration'];
76
+ // All numeric measures (REAL, *MEASURE, *RATIO) accept doubles.
77
+ if (m === 'IFCREAL' || m.endsWith('MEASURE') || m.endsWith('RATIO')) {
78
+ return ['xs:double'];
79
+ }
80
+ // Any text-flavoured type defaults to permissive string.
81
+ if (m === 'IFCLABEL' ||
82
+ m === 'IFCTEXT' ||
83
+ m === 'IFCIDENTIFIER' ||
84
+ m === 'IFCSTRING') {
85
+ return ['xs:string'];
86
+ }
87
+ return [];
88
+ }
89
+ //# sourceMappingURL=xsd-cast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsd-cast.js","sourceRoot":"","sources":["../../src/constraints/xsd-cast.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;GAQG;AAEH,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,SAAS,GAAG,yCAAyC,CAAC;AAC5D,MAAM,OAAO,GAAG,yCAAyC,CAAC;AAC1D,MAAM,WAAW,GACf,mEAAmE,CAAC;AACtE,MAAM,WAAW,GACf,6EAA6E,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,QAAuC;IAEvC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,OAAe;IAC9D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,YAAY;YACf,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,YAAY;YACf,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,CAAC;QAC/C,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,aAAa;YAChB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,aAAa;YAChB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,WAAW;YACd,OAAO,IAAI,CAAC;QACd;YACE,uDAAuD;YACvD,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC9D,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,iBAAiB;QAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,aAAa;QAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,cAAc;QAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,gEAAgE;IAChE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;IACD,yDAAyD;IACzD,IACE,CAAC,KAAK,UAAU;QAChB,CAAC,KAAK,SAAS;QACf,CAAC,KAAK,eAAe;QACrB,CAAC,KAAK,WAAW,EACjB,CAAC;QACD,OAAO,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-facet.d.ts","sourceRoot":"","sources":["../../src/facets/attribute-facet.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAanD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,gBAAgB,CA8ElB"}
1
+ {"version":3,"file":"attribute-facet.d.ts","sourceRoot":"","sources":["../../src/facets/attribute-facet.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiBnD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,gBAAgB,CAsDlB"}
@@ -2,6 +2,9 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { matchConstraint, formatConstraint } from '../constraints/index.js';
5
+ import { literalCastsUnderAnyType } from '../constraints/xsd-cast.js';
6
+ /** Attribute name matching is case-insensitive (IFC schema-defined names) */
7
+ const ATTR_NAME_OPTS = { caseInsensitive: true };
5
8
  /** Standard IFC attributes that can be checked */
6
9
  const STANDARD_ATTRIBUTES = [
7
10
  'Name',
@@ -15,20 +18,26 @@ const STANDARD_ATTRIBUTES = [
15
18
  * Check if an entity matches an attribute facet
16
19
  */
17
20
  export function checkAttributeFacet(facet, expressId, accessor) {
18
- // Get the attribute name to check
19
21
  const attrNameConstraint = facet.name;
20
- let attrName;
21
- // For simple value, use the name directly
22
+ // Resolve which attribute name(s) to check
23
+ let attrNamesToCheck;
22
24
  if (attrNameConstraint.type === 'simpleValue') {
23
- attrName = attrNameConstraint.value;
25
+ attrNamesToCheck = [attrNameConstraint.value];
24
26
  }
25
27
  else {
26
- // For patterns/enumerations, we need to check all matching attributes
27
- // Simplified: just check the first standard attribute that matches
28
- const matchingAttrs = STANDARD_ATTRIBUTES.filter((a) => matchConstraint(attrNameConstraint, a));
29
- if (matchingAttrs.length === 0) {
28
+ // For patterns/enumerations, prefer the entity's own schema-defined
29
+ // attribute list (so e.g. `IfcMaterialLayerSet.LayerSetName` shows
30
+ // up for a `.*Name.*` pattern). Fall back to the small standard
31
+ // list when the accessor doesn't surface one.
32
+ const allNames = accessor.getAttributeNames?.(expressId);
33
+ const candidates = allNames && allNames.length > 0 ? allNames : STANDARD_ATTRIBUTES;
34
+ attrNamesToCheck = candidates.filter((a) => matchConstraint(attrNameConstraint, a, ATTR_NAME_OPTS));
35
+ if (attrNamesToCheck.length === 0) {
30
36
  return {
31
37
  passed: false,
38
+ expectedValue: facet.value
39
+ ? formatConstraint(facet.value)
40
+ : `attribute matching ${formatConstraint(attrNameConstraint)} to exist`,
32
41
  failure: {
33
42
  type: 'ATTRIBUTE_MISSING',
34
43
  field: formatConstraint(attrNameConstraint),
@@ -36,12 +45,33 @@ export function checkAttributeFacet(facet, expressId, accessor) {
36
45
  },
37
46
  };
38
47
  }
39
- attrName = matchingAttrs[0];
40
48
  }
41
- // Get the attribute value
49
+ // Check each matching attribute; return on first pass, track most specific failure
50
+ let bestFailure;
51
+ for (const attrName of attrNamesToCheck) {
52
+ const result = checkSingleAttribute(facet, attrName, expressId, accessor);
53
+ if (result.passed) {
54
+ return result;
55
+ }
56
+ // Prefer value/pattern mismatch over attribute-missing (more specific)
57
+ if (!bestFailure ||
58
+ (result.failure?.type !== 'ATTRIBUTE_MISSING' && bestFailure.failure?.type === 'ATTRIBUTE_MISSING')) {
59
+ bestFailure = result;
60
+ }
61
+ }
62
+ // Return the most specific failure we found
63
+ return bestFailure;
64
+ }
65
+ /**
66
+ * Check a single attribute by name against the facet's value constraint
67
+ */
68
+ function checkSingleAttribute(facet, attrName, expressId, accessor) {
42
69
  const attrValue = getAttributeValue(attrName, expressId, accessor);
43
- // Check if attribute exists
44
- if (attrValue === undefined || attrValue === null || attrValue === '') {
70
+ // Distinguish "slot truly absent" (undefined/null — IFC `$`) from
71
+ // "slot explicitly empty" (`''`). Per IDS spec the latter is a
72
+ // value mismatch, not a missing attribute, so optional facets won't
73
+ // give it a free pass.
74
+ if (attrValue === undefined || attrValue === null) {
45
75
  return {
46
76
  passed: false,
47
77
  actualValue: undefined,
@@ -55,6 +85,21 @@ export function checkAttributeFacet(facet, expressId, accessor) {
55
85
  },
56
86
  };
57
87
  }
88
+ if (attrValue === '') {
89
+ return {
90
+ passed: false,
91
+ actualValue: '(empty)',
92
+ expectedValue: facet.value
93
+ ? formatConstraint(facet.value)
94
+ : `attribute "${attrName}" must have a non-empty value`,
95
+ failure: {
96
+ type: 'ATTRIBUTE_VALUE_MISMATCH',
97
+ field: attrName,
98
+ actual: '(empty)',
99
+ expected: facet.value ? formatConstraint(facet.value) : 'a non-empty value',
100
+ },
101
+ };
102
+ }
58
103
  // If no value constraint, just check existence
59
104
  if (!facet.value) {
60
105
  return {
@@ -63,6 +108,29 @@ export function checkAttributeFacet(facet, expressId, accessor) {
63
108
  expectedValue: `attribute "${attrName}" to exist`,
64
109
  };
65
110
  }
111
+ // Strict XSD-cast check: the IDS literal MUST cast successfully under
112
+ // at least one of the attribute's schema-declared XSD types. This
113
+ // rejects `42.0` against an `xs:integer`-only slot like
114
+ // `IfcStairFlight.NumberOfRisers`, even though the numbers compare
115
+ // equal. The accessor returns `undefined` when type info is missing,
116
+ // in which case we skip the gate and fall back to permissive
117
+ // comparison (back-compat for accessors that don't surface schema).
118
+ if (facet.value.type === 'simpleValue') {
119
+ const xsdTypes = accessor.getAttributeXsdTypes?.(expressId, attrName);
120
+ if (xsdTypes && !literalCastsUnderAnyType(facet.value.value, xsdTypes)) {
121
+ return {
122
+ passed: false,
123
+ actualValue: String(attrValue),
124
+ expectedValue: formatConstraint(facet.value),
125
+ failure: {
126
+ type: 'ATTRIBUTE_VALUE_MISMATCH',
127
+ field: attrName,
128
+ actual: String(attrValue),
129
+ expected: formatConstraint(facet.value),
130
+ },
131
+ };
132
+ }
133
+ }
66
134
  // Check value constraint
67
135
  if (!matchConstraint(facet.value, attrValue)) {
68
136
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-facet.js","sourceRoot":"","sources":["../../src/facets/attribute-facet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attribute-facet.js","sourceRoot":"","sources":["../../src/facets/attribute-facet.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"classification-facet.d.ts","sourceRoot":"","sources":["../../src/facets/classification-facet.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,gBAAgB,CAuGlB"}
1
+ {"version":3,"file":"classification-facet.d.ts","sourceRoot":"","sources":["../../src/facets/classification-facet.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,gBAAgB,CA4HlB"}
@@ -8,9 +8,10 @@ import { matchConstraint, formatConstraint } from '../constraints/index.js';
8
8
  export function checkClassificationFacet(facet, expressId, accessor) {
9
9
  // Get classifications for the entity
10
10
  const classifications = accessor.getClassifications(expressId);
11
+ const hasAnyClassifications = classifications.length > 0;
11
12
  // If no value or system constraint, just check if any classification exists
12
13
  if (!facet.system && !facet.value) {
13
- if (classifications.length === 0) {
14
+ if (!hasAnyClassifications) {
14
15
  return {
15
16
  passed: false,
16
17
  actualValue: '(none)',
@@ -29,6 +30,24 @@ export function checkClassificationFacet(facet, expressId, accessor) {
29
30
  expectedValue: 'any classification',
30
31
  };
31
32
  }
33
+ // If entity has no classifications at all, return CLASSIFICATION_MISSING
34
+ // (not SYSTEM_MISMATCH or VALUE_MISMATCH — those imply we found _some_ classifications)
35
+ if (!hasAnyClassifications) {
36
+ const expected = facet.system && facet.value
37
+ ? `${formatConstraint(facet.system)}:${formatConstraint(facet.value)}`
38
+ : facet.system
39
+ ? formatConstraint(facet.system)
40
+ : formatConstraint(facet.value);
41
+ return {
42
+ passed: false,
43
+ actualValue: '(none)',
44
+ expectedValue: expected,
45
+ failure: {
46
+ type: 'CLASSIFICATION_MISSING',
47
+ expected,
48
+ },
49
+ };
50
+ }
32
51
  // Filter by system if specified
33
52
  let matchingClassifications = classifications;
34
53
  if (facet.system) {
@@ -39,7 +58,7 @@ export function checkClassificationFacet(facet, expressId, accessor) {
39
58
  ].join(', ');
40
59
  return {
41
60
  passed: false,
42
- actualValue: availableSystems || '(none)',
61
+ actualValue: availableSystems,
43
62
  expectedValue: formatConstraint(facet.system),
44
63
  failure: {
45
64
  type: 'CLASSIFICATION_SYSTEM_MISMATCH',
@@ -1 +1 @@
1
- {"version":3,"file":"classification-facet.js","sourceRoot":"","sources":["../../src/facets/classification-facet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classification-facet.js","sourceRoot":"","sources":["../../src/facets/classification-facet.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-facet.d.ts","sourceRoot":"","sources":["../../src/facets/entity-facet.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,eAAe,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,gBAAgB,CAuElB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,eAAe,GACxB,MAAM,EAAE,GAAG,SAAS,CAoBtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,CAsBV"}
1
+ {"version":3,"file":"entity-facet.d.ts","sourceRoot":"","sources":["../../src/facets/entity-facet.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,eAAe,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,gBAAgB,CA+HlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,eAAe,GACxB,MAAM,EAAE,GAAG,SAAS,CAoBtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,CAsBV"}