@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
@@ -0,0 +1,111 @@
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
+ * Translate the XSD pattern. Returns the JS-compatible pattern plus a
6
+ * `supported` flag — when `false`, the auditor should warn rather than
7
+ * compile-test the result (the unsupported construct may produce
8
+ * spurious failures).
9
+ */
10
+ export function translateXsdRegex(pattern) {
11
+ // Char-class subtraction is only safely expressible via lookarounds in
12
+ // simple cases; in general it requires set algebra. Surface it as
13
+ // unsupported so the auditor warns.
14
+ if (/\[[^\]]*-\[/.test(pattern)) {
15
+ return {
16
+ pattern,
17
+ supported: false,
18
+ reason: 'XSD character-class subtraction is not supported in JS regex',
19
+ };
20
+ }
21
+ let translated = '';
22
+ let i = 0;
23
+ while (i < pattern.length) {
24
+ const ch = pattern.charAt(i);
25
+ if (ch === '\\' && i + 1 < pattern.length) {
26
+ const next = pattern.charAt(i + 1);
27
+ const replacement = mapEscape(next);
28
+ if (replacement) {
29
+ translated += replacement;
30
+ i += 2;
31
+ continue;
32
+ }
33
+ // Pass through any other escape (`\n`, `\.`, `\\`, …).
34
+ translated += ch + next;
35
+ i += 2;
36
+ continue;
37
+ }
38
+ translated += ch;
39
+ i++;
40
+ }
41
+ return { pattern: translated, supported: true, reason: '' };
42
+ }
43
+ /**
44
+ * Map an XSD-specific escape character to its JS regex Unicode-property
45
+ * equivalent. Returns `undefined` when the escape is identical in both
46
+ * dialects (and thus needs no translation).
47
+ *
48
+ * The XML production rules these escape codes implement live in the
49
+ * W3C XML 1.0 spec § 2.3 (NameStartChar / NameChar) and § 2.5 (Digit /
50
+ * Letter). We use JS Unicode property escapes (`\p{L}`, `\p{Nd}`) which
51
+ * are equivalent for our purposes when the pattern is compiled with the
52
+ * `u` flag.
53
+ */
54
+ function mapEscape(ch) {
55
+ switch (ch) {
56
+ case 'i':
57
+ // NameStartChar: letters + `_` + `:` + extended Unicode letters.
58
+ return '[\\p{L}_:]';
59
+ case 'I':
60
+ return '[^\\p{L}_:]';
61
+ case 'c':
62
+ // NameChar: NameStartChar + digits + `.` + `-` + U+00B7 + combining marks.
63
+ return '[\\p{L}\\p{Nd}_:.\\-\\u00B7\\u0300-\\u036F\\u203F-\\u2040]';
64
+ case 'C':
65
+ return '[^\\p{L}\\p{Nd}_:.\\-\\u00B7\\u0300-\\u036F\\u203F-\\u2040]';
66
+ case 'd':
67
+ // JS \d matches `[0-9]`; XSD \d matches all Unicode digits. Use
68
+ // \p{Nd} for full fidelity.
69
+ return '\\p{Nd}';
70
+ case 'D':
71
+ return '\\P{Nd}';
72
+ case 'w':
73
+ // JS \w matches `[A-Za-z0-9_]`; XSD \w matches Unicode letters +
74
+ // digits without underscore. Use a Unicode class that mirrors the
75
+ // XSD definition.
76
+ return '[\\p{L}\\p{Nd}]';
77
+ case 'W':
78
+ return '[^\\p{L}\\p{Nd}]';
79
+ default:
80
+ return undefined;
81
+ }
82
+ }
83
+ /**
84
+ * Try to compile `pattern` as XSD regex semantics. Returns:
85
+ * - `{ ok: true }` when the pattern is valid (after translation).
86
+ * - `{ ok: false, severity: 'error', reason }` for syntactic errors
87
+ * that JS *and* XSD agree on (e.g. unclosed `[`).
88
+ * - `{ ok: false, severity: 'warning', reason }` when the pattern uses
89
+ * XSD-only syntax we can't translate (char-class subtraction).
90
+ */
91
+ export function compileXsdRegex(pattern) {
92
+ if (pattern === '') {
93
+ return { ok: false, severity: 'error', reason: 'pattern is empty' };
94
+ }
95
+ const translated = translateXsdRegex(pattern);
96
+ if (!translated.supported) {
97
+ return { ok: false, severity: 'warning', reason: translated.reason };
98
+ }
99
+ try {
100
+ new RegExp(translated.pattern, 'u');
101
+ return { ok: true, jsPattern: translated.pattern };
102
+ }
103
+ catch (err) {
104
+ return {
105
+ ok: false,
106
+ severity: 'error',
107
+ reason: err instanceof Error ? err.message : String(err),
108
+ };
109
+ }
110
+ }
111
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../../src/audit/coherence/regex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { IDSDocument } from '../../types.js';
2
+ import type { IDSAuditIssue, IDSAuditOptions } from '../types.js';
3
+ export declare function runIfcSchemaAudit(doc: IDSDocument, options: Pick<IDSAuditOptions, 'ifcVersion'>): Promise<IDSAuditIssue[]>;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAElE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,GAC3C,OAAO,CAAC,aAAa,EAAE,CAAC,CAwB1B"}