@primmel/primmel 1.1.0 → 1.2.0

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 (81) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/ser-des/config/approval.js +1 -1
  6. package/dist/src/ser-des/config/approval.js.map +1 -1
  7. package/dist/src/ser-des/config/calculation.d.ts.map +1 -1
  8. package/dist/src/ser-des/config/calculation.js +11 -6
  9. package/dist/src/ser-des/config/calculation.js.map +1 -1
  10. package/dist/src/ser-des/config/data.d.ts.map +1 -1
  11. package/dist/src/ser-des/config/data.js +5 -5
  12. package/dist/src/ser-des/config/data.js.map +1 -1
  13. package/dist/src/ser-des/config/event.js +2 -2
  14. package/dist/src/ser-des/config/event.js.map +1 -1
  15. package/dist/src/ser-des/config/field-parser.d.ts +11 -0
  16. package/dist/src/ser-des/config/field-parser.d.ts.map +1 -0
  17. package/dist/src/ser-des/config/field-parser.js +108 -0
  18. package/dist/src/ser-des/config/field-parser.js.map +1 -0
  19. package/dist/src/ser-des/config/figure.js +2 -2
  20. package/dist/src/ser-des/config/figure.js.map +1 -1
  21. package/dist/src/ser-des/config/flow.js +2 -2
  22. package/dist/src/ser-des/config/flow.js.map +1 -1
  23. package/dist/src/ser-des/config/form.d.ts.map +1 -1
  24. package/dist/src/ser-des/config/form.js +11 -89
  25. package/dist/src/ser-des/config/form.js.map +1 -1
  26. package/dist/src/ser-des/config/gateway.js +1 -1
  27. package/dist/src/ser-des/config/gateway.js.map +1 -1
  28. package/dist/src/ser-des/config/index.d.ts.map +1 -1
  29. package/dist/src/ser-des/config/index.js +42 -10
  30. package/dist/src/ser-des/config/index.js.map +1 -1
  31. package/dist/src/ser-des/config/link.js +2 -2
  32. package/dist/src/ser-des/config/link.js.map +1 -1
  33. package/dist/src/ser-des/config/metadata.js +5 -5
  34. package/dist/src/ser-des/config/metadata.js.map +1 -1
  35. package/dist/src/ser-des/config/note.js +1 -1
  36. package/dist/src/ser-des/config/note.js.map +1 -1
  37. package/dist/src/ser-des/config/process.js +1 -1
  38. package/dist/src/ser-des/config/process.js.map +1 -1
  39. package/dist/src/ser-des/config/provision.js +1 -1
  40. package/dist/src/ser-des/config/provision.js.map +1 -1
  41. package/dist/src/ser-des/config/reference.js +2 -2
  42. package/dist/src/ser-des/config/reference.js.map +1 -1
  43. package/dist/src/ser-des/config/role.js +1 -1
  44. package/dist/src/ser-des/config/role.js.map +1 -1
  45. package/dist/src/ser-des/config/subform.d.ts.map +1 -1
  46. package/dist/src/ser-des/config/subform.js +6 -90
  47. package/dist/src/ser-des/config/subform.js.map +1 -1
  48. package/dist/src/ser-des/config/symbol.js +4 -4
  49. package/dist/src/ser-des/config/symbol.js.map +1 -1
  50. package/dist/src/ser-des/config/term.d.ts +5 -0
  51. package/dist/src/ser-des/config/term.d.ts.map +1 -0
  52. package/dist/src/ser-des/config/term.js +77 -0
  53. package/dist/src/ser-des/config/term.js.map +1 -0
  54. package/dist/src/ser-des/index.d.ts +19 -0
  55. package/dist/src/ser-des/index.d.ts.map +1 -1
  56. package/dist/src/ser-des/index.js +25 -0
  57. package/dist/src/ser-des/index.js.map +1 -1
  58. package/dist/src/ser-des/parse.d.ts +12 -0
  59. package/dist/src/ser-des/parse.d.ts.map +1 -1
  60. package/dist/src/ser-des/parse.js +69 -12
  61. package/dist/src/ser-des/parse.js.map +1 -1
  62. package/dist/src/ser-des/resolve.d.ts.map +1 -1
  63. package/dist/src/ser-des/resolve.js +1 -0
  64. package/dist/src/ser-des/resolve.js.map +1 -1
  65. package/dist/src/ser-des/tokenize.d.ts +45 -0
  66. package/dist/src/ser-des/tokenize.d.ts.map +1 -1
  67. package/dist/src/ser-des/tokenize.js +140 -62
  68. package/dist/src/ser-des/tokenize.js.map +1 -1
  69. package/dist/src/ser-des/types.d.ts +5 -0
  70. package/dist/src/ser-des/types.d.ts.map +1 -1
  71. package/dist/src/types/Standard.d.ts +2 -0
  72. package/dist/src/types/Standard.d.ts.map +1 -1
  73. package/dist/src/types/Term.d.ts +21 -0
  74. package/dist/src/types/Term.d.ts.map +1 -0
  75. package/dist/src/types/Term.js +3 -0
  76. package/dist/src/types/Term.js.map +1 -0
  77. package/dist/src/validate.d.ts +25 -0
  78. package/dist/src/validate.d.ts.map +1 -0
  79. package/dist/src/validate.js +101 -0
  80. package/dist/src/validate.js.map +1 -0
  81. package/package.json +1 -1
@@ -1,5 +1,50 @@
1
+ export interface Position {
2
+ /** 1-based line number */
3
+ line: number;
4
+ /** 1-based column number (counted in UTF-16 code units) */
5
+ col: number;
6
+ /** 0-based absolute character offset from start of source */
7
+ offset: number;
8
+ }
9
+ export interface Token {
10
+ value: string;
11
+ start: Position;
12
+ /** Position immediately AFTER the last character of `value`. */
13
+ end: Position;
14
+ }
15
+ /**
16
+ * Tokenize while recording each token's source position.
17
+ *
18
+ * Same tokenization rules as tokenize(): comments skipped, quoted
19
+ * strings and brace blocks kept as single tokens, escape sequences
20
+ * honoured. Tokens that cross newlines (e.g. multi-line brace blocks)
21
+ * record the start position only; `end` is computed from value length.
22
+ */
23
+ export declare function tokenizeWithPositions(x: string): Token[];
1
24
  export default function tokenize(x: string): string[];
2
25
  export declare function tokenizePackage(x: string): Array<string>;
3
26
  export declare function removePackage(x: string): string;
27
+ /**
28
+ * Strip surrounding quotes OR braces if (and only if) the token starts
29
+ * and ends with them. Returns the token unchanged otherwise.
30
+ *
31
+ * Use this instead of removePackage for values that may be either bare
32
+ * IDs (`realProc`) or quoted strings (`"My Form"`) — common in form
33
+ * field references, calculation IDs, conformance process IDs, etc.
34
+ *
35
+ * removePackage unconditionally strips first+last char, which mangles
36
+ * bare IDs (e.g. `DetermineMeasurementError` → `etermineMeasurementErro`).
37
+ * stripWrapping only strips when the wrapping chars are actually
38
+ * matching quote-or-brace.
39
+ */
40
+ export declare function stripWrapping(x: string): string;
41
+ /**
42
+ * Escape a string for emission inside double-quotes. The tokenizer's
43
+ * string scanner honours backslash escapes, so `"` and `\` inside
44
+ * values MUST be escaped to round-trip cleanly.
45
+ *
46
+ * Use this in dumpers: `out += ' name "' + escapeString(role.name) + '"\n'`
47
+ */
48
+ export declare function escapeString(x: string): string;
4
49
  export declare function tokenizeAttributes(x: string): Array<string>;
5
50
  //# sourceMappingURL=tokenize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../../src/ser-des/tokenize.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAkFpD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAExD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAwD3D"}
1
+ {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../../src/ser-des/tokenize.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;IAChB,gEAAgE;IAChE,GAAG,EAAE,QAAQ,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CA4GxD;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAExD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAwD3D"}
@@ -1,90 +1,134 @@
1
1
  "use strict";
2
+ // ─────────────────────────────────────────────────────────────────────
3
+ // Position tracking
4
+ //
5
+ // Every token can carry its source position (line, column, offset) so
6
+ // that error messages can point at the exact source location. The
7
+ // legacy tokenize() / tokenizePackage() / tokenizeAttributes() APIs
8
+ // remain string[]-returning for backward compatibility with parser
9
+ // configs that don't need positions.
10
+ // ─────────────────────────────────────────────────────────────────────
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.tokenizeWithPositions = tokenizeWithPositions;
3
13
  exports.default = tokenize;
4
14
  exports.tokenizePackage = tokenizePackage;
5
15
  exports.removePackage = removePackage;
16
+ exports.stripWrapping = stripWrapping;
17
+ exports.escapeString = escapeString;
6
18
  exports.tokenizeAttributes = tokenizeAttributes;
7
- function tokenize(x) {
8
- const set = [];
9
- let t = '';
19
+ /**
20
+ * Tokenize while recording each token's source position.
21
+ *
22
+ * Same tokenization rules as tokenize(): comments skipped, quoted
23
+ * strings and brace blocks kept as single tokens, escape sequences
24
+ * honoured. Tokens that cross newlines (e.g. multi-line brace blocks)
25
+ * record the start position only; `end` is computed from value length.
26
+ */
27
+ function tokenizeWithPositions(x) {
28
+ const out = [];
29
+ let line = 1;
30
+ let col = 1;
31
+ let offset = 0;
10
32
  let i = 0;
33
+ const advance = (n) => {
34
+ for (let k = 0; k < n; k++) {
35
+ if (x.charAt(offset) === '\n') {
36
+ line++;
37
+ col = 1;
38
+ }
39
+ else {
40
+ col++;
41
+ }
42
+ offset++;
43
+ i++;
44
+ }
45
+ };
11
46
  while (i < x.length) {
12
- let char = x.charAt(i);
13
- // ── Comment handling: skip // and # to end of line ──
47
+ const char = x.charAt(i);
48
+ // Comment handling
14
49
  if (char === '#' ||
15
50
  (char === '/' && i + 1 < x.length && x.charAt(i + 1) === '/')) {
16
51
  while (i < x.length && x.charAt(i) !== '\n') {
17
- i++;
52
+ advance(1);
18
53
  }
19
54
  continue;
20
55
  }
21
- if (!isWhiteSpace(char)) {
22
- t += char;
23
- i++;
24
- if (char === '"') {
25
- // Scan string token, honouring backslash escapes so that
26
- // embedded quotes (\"..") don't terminate the string early.
27
- while (i < x.length) {
28
- char = x.charAt(i);
29
- if (char === '\\' && i + 1 < x.length) {
30
- t += char + x.charAt(i + 1);
31
- i += 2;
32
- continue;
33
- }
34
- t += char;
35
- i++;
36
- if (char === '"') {
37
- break;
38
- }
56
+ if (isWhiteSpace(char)) {
57
+ advance(1);
58
+ continue;
59
+ }
60
+ // Token starts here
61
+ const startLine = line;
62
+ const startCol = col;
63
+ const startOffset = offset;
64
+ let value = '';
65
+ if (char === '"') {
66
+ value += char;
67
+ advance(1);
68
+ while (i < x.length) {
69
+ const c = x.charAt(i);
70
+ if (c === '\\' && i + 1 < x.length) {
71
+ value += c + x.charAt(i + 1);
72
+ advance(2);
73
+ continue;
74
+ }
75
+ value += c;
76
+ advance(1);
77
+ if (c === '"') {
78
+ break;
39
79
  }
40
80
  }
41
- else if (char === '{') {
42
- let count = 1;
43
- while (i < x.length && count > 0) {
44
- char = x.charAt(i);
45
- // Skip string content: don't count braces inside quoted strings
46
- if (char === '"') {
47
- t += char;
48
- i++;
49
- while (i < x.length) {
50
- const c = x.charAt(i);
51
- if (c === '\\' && i + 1 < x.length) {
52
- t += c + x.charAt(i + 1);
53
- i += 2;
54
- continue;
55
- }
56
- t += c;
57
- i++;
58
- if (c === '"') {
59
- break;
60
- }
81
+ }
82
+ else if (char === '{') {
83
+ let depth = 1;
84
+ value += char;
85
+ advance(1);
86
+ while (i < x.length && depth > 0) {
87
+ const c = x.charAt(i);
88
+ if (c === '"') {
89
+ value += c;
90
+ advance(1);
91
+ while (i < x.length) {
92
+ const sc = x.charAt(i);
93
+ if (sc === '\\' && i + 1 < x.length) {
94
+ value += sc + x.charAt(i + 1);
95
+ advance(2);
96
+ continue;
97
+ }
98
+ value += sc;
99
+ advance(1);
100
+ if (sc === '"') {
101
+ break;
61
102
  }
62
- continue;
63
- }
64
- if (char === '{') {
65
- count++;
66
- }
67
- if (char === '}') {
68
- count--;
69
103
  }
70
- t += char;
71
- i++;
104
+ continue;
72
105
  }
73
- }
74
- else {
75
- while (i < x.length && !isWhiteSpace(x.charAt(i))) {
76
- t += x.charAt(i);
77
- i++;
106
+ if (c === '{') {
107
+ depth++;
78
108
  }
109
+ if (c === '}') {
110
+ depth--;
111
+ }
112
+ value += c;
113
+ advance(1);
79
114
  }
80
- set.push(t);
81
- t = '';
82
115
  }
83
116
  else {
84
- i++;
117
+ while (i < x.length && !isWhiteSpace(x.charAt(i))) {
118
+ value += x.charAt(i);
119
+ advance(1);
120
+ }
85
121
  }
122
+ out.push({
123
+ value,
124
+ start: { line: startLine, col: startCol, offset: startOffset },
125
+ end: { line, col, offset },
126
+ });
86
127
  }
87
- return set;
128
+ return out;
129
+ }
130
+ function tokenize(x) {
131
+ return tokenizeWithPositions(x).map(t => t.value);
88
132
  }
89
133
  function tokenizePackage(x) {
90
134
  return tokenize(removePackage(x));
@@ -97,6 +141,40 @@ function removePackage(x) {
97
141
  return x;
98
142
  }
99
143
  }
144
+ /**
145
+ * Strip surrounding quotes OR braces if (and only if) the token starts
146
+ * and ends with them. Returns the token unchanged otherwise.
147
+ *
148
+ * Use this instead of removePackage for values that may be either bare
149
+ * IDs (`realProc`) or quoted strings (`"My Form"`) — common in form
150
+ * field references, calculation IDs, conformance process IDs, etc.
151
+ *
152
+ * removePackage unconditionally strips first+last char, which mangles
153
+ * bare IDs (e.g. `DetermineMeasurementError` → `etermineMeasurementErro`).
154
+ * stripWrapping only strips when the wrapping chars are actually
155
+ * matching quote-or-brace.
156
+ */
157
+ function stripWrapping(x) {
158
+ if (x.length < 2) {
159
+ return x;
160
+ }
161
+ const first = x.charAt(0);
162
+ const last = x.charAt(x.length - 1);
163
+ if ((first === '"' && last === '"') || (first === '{' && last === '}')) {
164
+ return x.substr(1, x.length - 2);
165
+ }
166
+ return x;
167
+ }
168
+ /**
169
+ * Escape a string for emission inside double-quotes. The tokenizer's
170
+ * string scanner honours backslash escapes, so `"` and `\` inside
171
+ * values MUST be escaped to round-trip cleanly.
172
+ *
173
+ * Use this in dumpers: `out += ' name "' + escapeString(role.name) + '"\n'`
174
+ */
175
+ function escapeString(x) {
176
+ return x.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
177
+ }
100
178
  function tokenizeAttributes(x) {
101
179
  x = removePackage(x);
102
180
  const set = [];
@@ -1 +1 @@
1
- {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../../src/ser-des/tokenize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../../src/ser-des/tokenize.ts"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,oBAAoB;AACpB,EAAE;AACF,sEAAsE;AACtE,kEAAkE;AAClE,oEAAoE;AACpE,mEAAmE;AACnE,qCAAqC;AACrC,wEAAwE;;AA0BxE,sDA4GC;AAED,2BAEC;AAED,0CAEC;AAED,sCAMC;AAeD,sCAUC;AASD,oCAEC;AAED,gDAwDC;AAlOD;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,CAAS;IAC7C,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9B,IAAI,EAAE,CAAC;gBACP,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,GAAG,EAAE,CAAC;YACR,CAAC;YACD,MAAM,EAAE,CAAC;YACT,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzB,mBAAmB;QACnB,IACE,IAAI,KAAK,GAAG;YACZ,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAC7D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5C,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,CAAC;QAC3B,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,IAAI,IAAI,CAAC;YACd,OAAO,CAAC,CAAC,CAAC,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;oBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7B,OAAO,CAAC,CAAC,CAAC,CAAC;oBACX,SAAS;gBACX,CAAC;gBACD,KAAK,IAAI,CAAC,CAAC;gBACX,OAAO,CAAC,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBACd,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,IAAI,IAAI,CAAC;YACd,OAAO,CAAC,CAAC,CAAC,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBACd,KAAK,IAAI,CAAC,CAAC;oBACX,OAAO,CAAC,CAAC,CAAC,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;wBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBACvB,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;4BACpC,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAC9B,OAAO,CAAC,CAAC,CAAC,CAAC;4BACX,SAAS;wBACX,CAAC;wBACD,KAAK,IAAI,EAAE,CAAC;wBACZ,OAAO,CAAC,CAAC,CAAC,CAAC;wBACX,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;4BACf,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBACd,KAAK,EAAE,CAAC;gBACV,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBACd,KAAK,EAAE,CAAC;gBACV,CAAC;gBACD,KAAK,IAAI,CAAC,CAAC;gBACX,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QAED,GAAG,CAAC,IAAI,CAAC;YACP,KAAK;YACL,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAC9D,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAwB,QAAQ,CAAC,CAAS;IACxC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,eAAe,CAAC,CAAS;IACvC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,kBAAkB,CAAC,CAAS;IAC1C,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,GAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,CAAC,IAAI,IAAI,CAAC;YACV,CAAC,EAAE,CAAC;YACJ,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACjC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACnB,8DAA8D;oBAC9D,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;wBACjB,CAAC,IAAI,IAAI,CAAC;wBACV,CAAC,EAAE,CAAC;wBACJ,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;4BACpB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;4BACtB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gCACnC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gCACzB,CAAC,IAAI,CAAC,CAAC;gCACP,SAAS;4BACX,CAAC;4BACD,CAAC,IAAI,CAAC,CAAC;4BACP,CAAC,EAAE,CAAC;4BACJ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gCACd,MAAM;4BACR,CAAC;wBACH,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;wBACjB,KAAK,EAAE,CAAC;oBACV,CAAC;oBACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;wBACjB,KAAK,EAAE,CAAC;oBACV,CAAC;oBACD,CAAC,IAAI,IAAI,CAAC;oBACV,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC3C,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACjB,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC"}
@@ -19,11 +19,14 @@ import type StateMachine from '../types/StateMachine';
19
19
  import type Subform from '../types/Subform';
20
20
  import type Symbol from '../types/Symbol';
21
21
  import type Table from '../types/Table';
22
+ import type Term from '../types/Term';
22
23
  import type ViewProfile from '../types/ViewProfile';
24
+ import type { ParseIssue } from '../validate';
23
25
  export interface ParserConfiguration {
24
26
  [keyword: string]: {
25
27
  takesID?: true;
26
28
  parse: Parser;
29
+ field?: keyof ParseContext;
27
30
  };
28
31
  }
29
32
  export type ResolverConfiguration = Partial<Record<keyof ParseContext, {
@@ -56,10 +59,12 @@ export interface ParseContext {
56
59
  links: Record<string, Link>;
57
60
  mapProfiles: Record<string, MapProfile>;
58
61
  viewProfiles: Record<string, ViewProfile>;
62
+ terms: Record<string, Term>;
59
63
  forms: Record<string, Form>;
60
64
  subforms: Record<string, Subform>;
61
65
  symbols: Record<string, Symbol>;
62
66
  calculations: Record<string, Calculation>;
63
67
  stateMachines: Record<string, StateMachine>;
68
+ issues: ParseIssue[];
64
69
  }
65
70
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ser-des/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ser-des/types.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ import type StateMachine from './StateMachine';
18
18
  import type Subform from './Subform';
19
19
  import type Symbol from './Symbol';
20
20
  import type Table from './Table';
21
+ import type Term from './Term';
21
22
  import type ViewProfile from './ViewProfile';
22
23
  export default interface Standard {
23
24
  meta: Metadata;
@@ -39,6 +40,7 @@ export default interface Standard {
39
40
  links: Link[];
40
41
  mapProfiles: MapProfile[];
41
42
  viewProfiles: ViewProfile[];
43
+ terms: Term[];
42
44
  forms: Form[];
43
45
  subforms: Subform[];
44
46
  symbols: Symbol[];
@@ -1 +1 @@
1
- {"version":3,"file":"Standard.d.ts","sourceRoot":"","sources":["../../../src/types/Standard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,SAAS,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,OAAO,WAAW,QAAQ;IAC/B,IAAI,EAAE,QAAQ,CAAC;IAEf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,QAAQ,EAAE,CAAC;IAGjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAG5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAC;IAE9B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB"}
1
+ {"version":3,"file":"Standard.d.ts","sourceRoot":"","sources":["../../../src/types/Standard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,SAAS,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,OAAO,WAAW,QAAQ;IAC/B,IAAI,EAAE,QAAQ,CAAC;IAEf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,QAAQ,EAAE,CAAC;IAGjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAG5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAC;IAE9B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB"}
@@ -0,0 +1,21 @@
1
+ import type Reference from './Reference';
2
+ /**
3
+ * A formal term definition from a standard's terminology section.
4
+ *
5
+ * Terms are first-class modelling constructs: they capture the natural-language
6
+ * definition of a concept, optionally cross-referenced to a declared `symbol`
7
+ * (for terms that have a quantitative representation) and to the source clause
8
+ * (e.g., R 60-1 §3.5.5 defines Emax).
9
+ *
10
+ * See Primmel spec MN 113-6 §2 (Term syntax).
11
+ */
12
+ interface Term {
13
+ id: string;
14
+ label: string;
15
+ definition: string;
16
+ symbolId: string;
17
+ referenceIds: string[];
18
+ ref: Reference[];
19
+ }
20
+ export default Term;
21
+ //# sourceMappingURL=Term.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Term.d.ts","sourceRoot":"","sources":["../../../src/types/Term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;GASG;AACH,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IAGnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,EAAE,SAAS,EAAE,CAAC;CAClB;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Term.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Term.js","sourceRoot":"","sources":["../../../src/types/Term.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type Standard from './types/Standard';
2
+ export type ValidationSeverity = 'error' | 'warning' | 'info';
3
+ export interface Position {
4
+ line: number;
5
+ col: number;
6
+ offset: number;
7
+ }
8
+ export interface ValidationIssue {
9
+ severity: ValidationSeverity;
10
+ code: string;
11
+ construct: string;
12
+ id?: string;
13
+ message: string;
14
+ position?: Position;
15
+ }
16
+ /**
17
+ * Alias used internally by ParseContext — issues collected during
18
+ * parsing carry the same shape as post-parse issues.
19
+ */
20
+ export type ParseIssue = ValidationIssue;
21
+ /**
22
+ * Validate a parsed Standard. Returns issues; empty array means clean.
23
+ */
24
+ export declare function validate(standard: Standard): ValidationIssue[];
25
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAG7C,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,CAAC;AAEzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,EAAE,CAE9D"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ // ─────────────────────────────────────────────────────────────────────
3
+ // Validation types + post-parse validation pass.
4
+ //
5
+ // Two issue surfaces:
6
+ // - Parse-time (caught during parse): duplicate IDs, unknown keywords
7
+ // in strict mode. Collected on ctx.issues by parse.ts.
8
+ // - Post-parse (caught after resolution): dangling refs, missing
9
+ // required fields, type mismatches. Caught by validate() here.
10
+ //
11
+ // ValidationIssue is the shared shape; `position` is optional because
12
+ // parse-time issues always have it (we know the source location) but
13
+ // post-parse issues may not (resolved objects don't carry positions).
14
+ // ─────────────────────────────────────────────────────────────────────
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.validate = validate;
17
+ /**
18
+ * Validate a parsed Standard. Returns issues; empty array means clean.
19
+ */
20
+ function validate(standard) {
21
+ return new Validator(standard).run();
22
+ }
23
+ class Validator {
24
+ standard;
25
+ issues = [];
26
+ constructor(standard) {
27
+ this.standard = standard;
28
+ }
29
+ run() {
30
+ this.checkEmptyIds();
31
+ this.checkFormReferences();
32
+ this.checkStateMachineCascades();
33
+ return this.issues;
34
+ }
35
+ issue(severity, code, construct, message, id) {
36
+ this.issues.push({ severity, code, construct, message, id });
37
+ }
38
+ checkEmptyIds() {
39
+ const allItems = [
40
+ ...this.standard.roles.map(item => ({ kind: 'role', item })),
41
+ ...this.standard.provisions.map(item => ({ kind: 'provision', item })),
42
+ ...this.standard.processes.map(item => ({ kind: 'process', item })),
43
+ ...this.standard.forms.map(item => ({ kind: 'form', item })),
44
+ ...this.standard.symbols.map(item => ({ kind: 'symbol', item })),
45
+ ...this.standard.calculations.map(item => ({
46
+ kind: 'calculation',
47
+ item,
48
+ })),
49
+ ];
50
+ for (const { kind, item } of allItems) {
51
+ if (!item.id || item.id.trim() === '') {
52
+ this.issue('error', 'empty-id', kind, `${kind} has an empty id — every ${kind} must declare a non-empty id`);
53
+ }
54
+ }
55
+ }
56
+ checkFormReferences() {
57
+ const calcIds = new Set(this.standard.calculations.map(c => c.id));
58
+ const procIds = new Set(this.standard.processes.map(p => p.id));
59
+ const subformIds = new Set(this.standard.subforms.map(s => s.id));
60
+ for (const form of this.standard.forms) {
61
+ if (form.conformanceProcessId &&
62
+ !procIds.has(form.conformanceProcessId)) {
63
+ this.issue('error', 'form-conformance-process-missing', 'form', `Form "${form.id}" references conformance process "${form.conformanceProcessId}" which does not exist`, form.id);
64
+ }
65
+ for (const field of iterFields(form)) {
66
+ if (field.calculationId && !calcIds.has(field.calculationId)) {
67
+ this.issue('error', 'form-calculation-missing', 'form', `Form "${form.id}" field "${field.name}" references calculation "${field.calculationId}" which does not exist`, form.id);
68
+ }
69
+ if (field.subformRef && !subformIds.has(field.subformRef.subformId)) {
70
+ this.issue('error', 'form-subform-missing', 'form', `Form "${form.id}" field "${field.name}" references subform "${field.subformRef.subformId}" which does not exist`, form.id);
71
+ }
72
+ }
73
+ }
74
+ }
75
+ checkStateMachineCascades() {
76
+ for (const sm of this.standard.stateMachines) {
77
+ const stateNames = new Set(sm.states.map(s => s.name));
78
+ // `*` is the conventional wildcard for "any state" — always valid.
79
+ stateNames.add('*');
80
+ for (const tr of sm.transitions) {
81
+ if (tr.from && !stateNames.has(tr.from)) {
82
+ this.issue('warning', 'state-machine-from-missing', 'state_machine', `State machine "${sm.entityName}" transition from "${tr.from}" is not in declared states`, sm.entityName);
83
+ }
84
+ if (tr.to && !stateNames.has(tr.to)) {
85
+ this.issue('warning', 'state-machine-to-missing', 'state_machine', `State machine "${sm.entityName}" transition to "${tr.to}" is not in declared states`, sm.entityName);
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
91
+ function* iterFields(form) {
92
+ const stack = [...form.fields];
93
+ while (stack.length > 0) {
94
+ const field = stack.pop();
95
+ yield field;
96
+ if (field.fields && field.fields.length > 0) {
97
+ stack.push(...field.fields);
98
+ }
99
+ }
100
+ }
101
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primmel/primmel",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Primmel — parser, types, and serializer for the Primmel modelling language (successor to MMEL)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",