@primmel/primmel 1.9.1 → 1.11.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.
- package/dist/src/check-rules.d.ts.map +1 -1
- package/dist/src/check-rules.js +18 -1
- package/dist/src/check-rules.js.map +1 -1
- package/dist/src/check.d.ts.map +1 -1
- package/dist/src/check.js +104 -1
- package/dist/src/check.js.map +1 -1
- package/dist/src/ser-des/config/decisionRule.d.ts +5 -0
- package/dist/src/ser-des/config/decisionRule.d.ts.map +1 -0
- package/dist/src/ser-des/config/decisionRule.js +357 -0
- package/dist/src/ser-des/config/decisionRule.js.map +1 -0
- package/dist/src/ser-des/config/declaration.d.ts +9 -0
- package/dist/src/ser-des/config/declaration.d.ts.map +1 -0
- package/dist/src/ser-des/config/declaration.js +288 -0
- package/dist/src/ser-des/config/declaration.js.map +1 -0
- package/dist/src/ser-des/config/frameworkDocument.d.ts +9 -0
- package/dist/src/ser-des/config/frameworkDocument.d.ts.map +1 -0
- package/dist/src/ser-des/config/frameworkDocument.js +254 -0
- package/dist/src/ser-des/config/frameworkDocument.js.map +1 -0
- package/dist/src/ser-des/config/governanceOrgan.d.ts +5 -0
- package/dist/src/ser-des/config/governanceOrgan.d.ts.map +1 -0
- package/dist/src/ser-des/config/governanceOrgan.js +111 -0
- package/dist/src/ser-des/config/governanceOrgan.js.map +1 -0
- package/dist/src/ser-des/config/index.d.ts.map +1 -1
- package/dist/src/ser-des/config/index.js +91 -0
- package/dist/src/ser-des/config/index.js.map +1 -1
- package/dist/src/ser-des/config/participantKind.d.ts +5 -0
- package/dist/src/ser-des/config/participantKind.d.ts.map +1 -0
- package/dist/src/ser-des/config/participantKind.js +329 -0
- package/dist/src/ser-des/config/participantKind.js.map +1 -0
- package/dist/src/ser-des/config/scheme.d.ts +7 -0
- package/dist/src/ser-des/config/scheme.d.ts.map +1 -0
- package/dist/src/ser-des/config/scheme.js +434 -0
- package/dist/src/ser-des/config/scheme.js.map +1 -0
- package/dist/src/ser-des/package.d.ts +5 -2
- package/dist/src/ser-des/package.d.ts.map +1 -1
- package/dist/src/ser-des/package.js +76 -6
- package/dist/src/ser-des/package.js.map +1 -1
- package/dist/src/ser-des/parse.d.ts.map +1 -1
- package/dist/src/ser-des/parse.js +12 -0
- package/dist/src/ser-des/parse.js.map +1 -1
- package/dist/src/ser-des/types.d.ts +19 -0
- package/dist/src/ser-des/types.d.ts.map +1 -1
- package/dist/src/types/DecisionRule.d.ts +84 -0
- package/dist/src/types/DecisionRule.d.ts.map +1 -0
- package/dist/src/types/DecisionRule.js +17 -0
- package/dist/src/types/DecisionRule.js.map +1 -0
- package/dist/src/types/Declaration.d.ts +68 -0
- package/dist/src/types/Declaration.d.ts.map +1 -0
- package/dist/src/types/Declaration.js +22 -0
- package/dist/src/types/Declaration.js.map +1 -0
- package/dist/src/types/FrameworkDocument.d.ts +57 -0
- package/dist/src/types/FrameworkDocument.d.ts.map +1 -0
- package/dist/src/types/FrameworkDocument.js +21 -0
- package/dist/src/types/FrameworkDocument.js.map +1 -0
- package/dist/src/types/GovernanceOrgan.d.ts +23 -0
- package/dist/src/types/GovernanceOrgan.d.ts.map +1 -0
- package/dist/src/types/GovernanceOrgan.js +14 -0
- package/dist/src/types/GovernanceOrgan.js.map +1 -0
- package/dist/src/types/ParticipantKind.d.ts +82 -0
- package/dist/src/types/ParticipantKind.d.ts.map +1 -0
- package/dist/src/types/ParticipantKind.js +22 -0
- package/dist/src/types/ParticipantKind.js.map +1 -0
- package/dist/src/types/Scheme.d.ts +99 -0
- package/dist/src/types/Scheme.d.ts.map +1 -0
- package/dist/src/types/Scheme.js +24 -0
- package/dist/src/types/Scheme.js.map +1 -0
- package/dist/src/types/Standard.d.ts +19 -0
- package/dist/src/types/Standard.d.ts.map +1 -1
- package/dist-browser/index.mjs +1119 -298
- package/dist-cli/primmel.mjs +1757 -4
- package/package.json +1 -1
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
3
|
+
// The scheme-architecture constructs (smart TODO.roadmap/40; the
|
|
4
|
+
// packages-as-SSOT epic) — B 18:2025 3.37/3.38, §5.4, clause 15:
|
|
5
|
+
//
|
|
6
|
+
// scheme_definition scheme_a {
|
|
7
|
+
// label "Scheme A"
|
|
8
|
+
// term "3.37"
|
|
9
|
+
// clause "5.4.3"
|
|
10
|
+
// definition "Advanced level of the OIML-CS where accreditation or
|
|
11
|
+
// peer assessment is used as the basis for demonstrating
|
|
12
|
+
// compliance."
|
|
13
|
+
// demonstration {
|
|
14
|
+
// method peer_evaluation
|
|
15
|
+
// clause "5.4.3.1"
|
|
16
|
+
// basis { accreditation peer_assessment }
|
|
17
|
+
// note "Compliance demonstrated by peer evaluation on the basis
|
|
18
|
+
// of an accreditation assessment or a peer assessment …"
|
|
19
|
+
// }
|
|
20
|
+
// source { doc "urn:oiml:pub:b:18:2025" clause "3.37" }
|
|
21
|
+
// }
|
|
22
|
+
//
|
|
23
|
+
// scheme_lifecycle category_scheme {
|
|
24
|
+
// applies_to instrument_category
|
|
25
|
+
// initial SCHEME_B
|
|
26
|
+
// entry {
|
|
27
|
+
// action category_included
|
|
28
|
+
// automatic true
|
|
29
|
+
// clause "15.1"
|
|
30
|
+
// conditions_ref auto_inclusion
|
|
31
|
+
// description "A category of measuring instrument … is
|
|
32
|
+
// automatically included in the OIML-CS in Scheme B when the
|
|
33
|
+
// conditions of §4.2 are met (§15.1) …"
|
|
34
|
+
// }
|
|
35
|
+
// transition SCHEME_B -> SCHEME_A action transition_period_elapsed {
|
|
36
|
+
// clause "15.2"
|
|
37
|
+
// description "Two years after inclusion in the OIML-CS, the
|
|
38
|
+
// category automatically transitions to Scheme A (§15.2) …"
|
|
39
|
+
// }
|
|
40
|
+
// trigger two-year-transition {
|
|
41
|
+
// kind timer
|
|
42
|
+
// action transition_period_elapsed
|
|
43
|
+
// window { years 2 }
|
|
44
|
+
// clause "15.2"
|
|
45
|
+
// deferrable true
|
|
46
|
+
// deferral_note "The Management Committee may propose to the CIML
|
|
47
|
+
// that a category does not automatically transition …"
|
|
48
|
+
// description "The two-year Scheme-B window opened by the
|
|
49
|
+
// category's inclusion …"
|
|
50
|
+
// }
|
|
51
|
+
// source { doc "urn:oiml:pub:b:18:2025" clause "15" }
|
|
52
|
+
// }
|
|
53
|
+
//
|
|
54
|
+
// The transition surface deliberately mirrors the state_machine grammar
|
|
55
|
+
// (`transition <From> -> <To> action <Action> { … }`).
|
|
56
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
57
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
+
exports.dumpSchemeLifecycle = exports.parseSchemeLifecycle = exports.dumpSchemeDefinition = exports.parseSchemeDefinition = void 0;
|
|
59
|
+
const tokenize_1 = require("../tokenize");
|
|
60
|
+
const parse_block_1 = require("../parse-block");
|
|
61
|
+
const field_parser_1 = require("./field-parser");
|
|
62
|
+
function parseDemonstration(block) {
|
|
63
|
+
const demonstration = {
|
|
64
|
+
method: '',
|
|
65
|
+
clause: '',
|
|
66
|
+
basis: [],
|
|
67
|
+
note: '',
|
|
68
|
+
};
|
|
69
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
70
|
+
if (keyword === 'method') {
|
|
71
|
+
demonstration.method = (0, tokenize_1.stripWrapping)(value());
|
|
72
|
+
}
|
|
73
|
+
else if (keyword === 'clause') {
|
|
74
|
+
demonstration.clause = (0, tokenize_1.stripWrapping)(value());
|
|
75
|
+
}
|
|
76
|
+
else if (keyword === 'basis') {
|
|
77
|
+
demonstration.basis = (0, tokenize_1.tokenizePackage)((0, tokenize_1.unwrapBlock)(value())).filter(s => s.length > 0);
|
|
78
|
+
}
|
|
79
|
+
else if (keyword === 'note') {
|
|
80
|
+
demonstration.note = (0, tokenize_1.stripWrapping)(value());
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}, { construct: 'scheme_definition demonstration', id: '' });
|
|
87
|
+
return demonstration;
|
|
88
|
+
}
|
|
89
|
+
const parseSchemeDefinition = (id, data) => {
|
|
90
|
+
const scheme = {
|
|
91
|
+
id,
|
|
92
|
+
label: '',
|
|
93
|
+
term: '',
|
|
94
|
+
clause: '',
|
|
95
|
+
definition: '',
|
|
96
|
+
demonstration: null,
|
|
97
|
+
source: { doc: '', clause: '' },
|
|
98
|
+
};
|
|
99
|
+
(0, parse_block_1.forEachEntry)(data, (keyword, value) => {
|
|
100
|
+
if (keyword === 'label') {
|
|
101
|
+
scheme.label = (0, tokenize_1.stripWrapping)(value());
|
|
102
|
+
}
|
|
103
|
+
else if (keyword === 'term') {
|
|
104
|
+
scheme.term = (0, tokenize_1.stripWrapping)(value());
|
|
105
|
+
}
|
|
106
|
+
else if (keyword === 'clause') {
|
|
107
|
+
scheme.clause = (0, tokenize_1.stripWrapping)(value());
|
|
108
|
+
}
|
|
109
|
+
else if (keyword === 'definition') {
|
|
110
|
+
scheme.definition = (0, tokenize_1.stripWrapping)(value());
|
|
111
|
+
}
|
|
112
|
+
else if (keyword === 'demonstration') {
|
|
113
|
+
scheme.demonstration = parseDemonstration((0, tokenize_1.unwrapBlock)(value()));
|
|
114
|
+
}
|
|
115
|
+
else if (keyword === 'source') {
|
|
116
|
+
scheme.source = (0, field_parser_1.readSource)((0, tokenize_1.unwrapBlock)(value()));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
}, { construct: 'scheme_definition', id });
|
|
123
|
+
return ctx => {
|
|
124
|
+
ctx.schemeDefinitions[id] = scheme;
|
|
125
|
+
return ctx;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
exports.parseSchemeDefinition = parseSchemeDefinition;
|
|
129
|
+
function dumpSourceBlock(src) {
|
|
130
|
+
let out = ' source {\n';
|
|
131
|
+
if (src.doc) {
|
|
132
|
+
out += ' doc "' + (0, tokenize_1.escapeString)(src.doc) + '"\n';
|
|
133
|
+
}
|
|
134
|
+
if (src.clause) {
|
|
135
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(src.clause) + '"\n';
|
|
136
|
+
}
|
|
137
|
+
out += ' }\n';
|
|
138
|
+
return out;
|
|
139
|
+
}
|
|
140
|
+
const dumpSchemeDefinition = function (s) {
|
|
141
|
+
let out = 'scheme_definition ' + s.id + ' {\n';
|
|
142
|
+
if (s.label) {
|
|
143
|
+
out += ' label "' + (0, tokenize_1.escapeString)(s.label) + '"\n';
|
|
144
|
+
}
|
|
145
|
+
if (s.term) {
|
|
146
|
+
out += ' term "' + (0, tokenize_1.escapeString)(s.term) + '"\n';
|
|
147
|
+
}
|
|
148
|
+
if (s.clause) {
|
|
149
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(s.clause) + '"\n';
|
|
150
|
+
}
|
|
151
|
+
if (s.definition) {
|
|
152
|
+
out += ' definition "' + (0, tokenize_1.escapeString)(s.definition) + '"\n';
|
|
153
|
+
}
|
|
154
|
+
if (s.demonstration) {
|
|
155
|
+
const d = s.demonstration;
|
|
156
|
+
out += ' demonstration {\n';
|
|
157
|
+
if (d.method) {
|
|
158
|
+
out += ' method ' + (0, field_parser_1.dumpBareSafe)(d.method) + '\n';
|
|
159
|
+
}
|
|
160
|
+
if (d.clause) {
|
|
161
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(d.clause) + '"\n';
|
|
162
|
+
}
|
|
163
|
+
if (d.basis.length > 0) {
|
|
164
|
+
out += ' basis { ' + d.basis.map(field_parser_1.dumpBareSafe).join(' ') + ' }\n';
|
|
165
|
+
}
|
|
166
|
+
if (d.note) {
|
|
167
|
+
out += ' note "' + (0, tokenize_1.escapeString)(d.note) + '"\n';
|
|
168
|
+
}
|
|
169
|
+
out += ' }\n';
|
|
170
|
+
}
|
|
171
|
+
if (s.source.doc || s.source.clause) {
|
|
172
|
+
out += dumpSourceBlock(s.source);
|
|
173
|
+
}
|
|
174
|
+
out += '}\n';
|
|
175
|
+
return out;
|
|
176
|
+
};
|
|
177
|
+
exports.dumpSchemeDefinition = dumpSchemeDefinition;
|
|
178
|
+
function parseEntry(block) {
|
|
179
|
+
const entry = {
|
|
180
|
+
action: '',
|
|
181
|
+
automatic: false,
|
|
182
|
+
clause: '',
|
|
183
|
+
conditions_ref: '',
|
|
184
|
+
description: '',
|
|
185
|
+
};
|
|
186
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
187
|
+
if (keyword === 'action') {
|
|
188
|
+
entry.action = (0, tokenize_1.stripWrapping)(value());
|
|
189
|
+
}
|
|
190
|
+
else if (keyword === 'automatic') {
|
|
191
|
+
entry.automatic = value() === 'true';
|
|
192
|
+
}
|
|
193
|
+
else if (keyword === 'clause') {
|
|
194
|
+
entry.clause = (0, tokenize_1.stripWrapping)(value());
|
|
195
|
+
}
|
|
196
|
+
else if (keyword === 'conditions_ref') {
|
|
197
|
+
entry.conditions_ref = (0, tokenize_1.stripWrapping)(value());
|
|
198
|
+
}
|
|
199
|
+
else if (keyword === 'description') {
|
|
200
|
+
entry.description = (0, tokenize_1.stripWrapping)(value());
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
}, { construct: 'scheme_lifecycle entry', id: '' });
|
|
207
|
+
return entry;
|
|
208
|
+
}
|
|
209
|
+
function parseTransition(block) {
|
|
210
|
+
const facets = {
|
|
211
|
+
clause: '',
|
|
212
|
+
decided_by: '',
|
|
213
|
+
on_proposal_of: '',
|
|
214
|
+
description: '',
|
|
215
|
+
};
|
|
216
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
217
|
+
if (keyword === 'clause') {
|
|
218
|
+
facets.clause = (0, tokenize_1.stripWrapping)(value());
|
|
219
|
+
}
|
|
220
|
+
else if (keyword === 'decided_by') {
|
|
221
|
+
facets.decided_by = (0, tokenize_1.stripWrapping)(value());
|
|
222
|
+
}
|
|
223
|
+
else if (keyword === 'on_proposal_of') {
|
|
224
|
+
facets.on_proposal_of = (0, tokenize_1.stripWrapping)(value());
|
|
225
|
+
}
|
|
226
|
+
else if (keyword === 'description') {
|
|
227
|
+
facets.description = (0, tokenize_1.stripWrapping)(value());
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
return true;
|
|
233
|
+
}, { construct: 'scheme_lifecycle transition', id: '' });
|
|
234
|
+
return facets;
|
|
235
|
+
}
|
|
236
|
+
function parseTrigger(id, block) {
|
|
237
|
+
const trigger = {
|
|
238
|
+
id,
|
|
239
|
+
kind: '',
|
|
240
|
+
action: '',
|
|
241
|
+
windowYears: 0,
|
|
242
|
+
windowMonths: 0,
|
|
243
|
+
clause: '',
|
|
244
|
+
deferrable: false,
|
|
245
|
+
deferral_note: '',
|
|
246
|
+
description: '',
|
|
247
|
+
};
|
|
248
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
249
|
+
if (keyword === 'kind') {
|
|
250
|
+
trigger.kind = (0, tokenize_1.stripWrapping)(value());
|
|
251
|
+
}
|
|
252
|
+
else if (keyword === 'action') {
|
|
253
|
+
trigger.action = (0, tokenize_1.stripWrapping)(value());
|
|
254
|
+
}
|
|
255
|
+
else if (keyword === 'window') {
|
|
256
|
+
const wt = (0, tokenize_1.tokenizePackage)((0, tokenize_1.unwrapBlock)(value()));
|
|
257
|
+
for (let i = 0; i + 1 < wt.length; i += 2) {
|
|
258
|
+
if (wt[i] === 'years') {
|
|
259
|
+
trigger.windowYears = parseInt((0, tokenize_1.stripWrapping)(wt[i + 1]), 10) || 0;
|
|
260
|
+
}
|
|
261
|
+
else if (wt[i] === 'months') {
|
|
262
|
+
trigger.windowMonths = parseInt((0, tokenize_1.stripWrapping)(wt[i + 1]), 10) || 0;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
else if (keyword === 'clause') {
|
|
267
|
+
trigger.clause = (0, tokenize_1.stripWrapping)(value());
|
|
268
|
+
}
|
|
269
|
+
else if (keyword === 'deferrable') {
|
|
270
|
+
trigger.deferrable = value() === 'true';
|
|
271
|
+
}
|
|
272
|
+
else if (keyword === 'deferral_note') {
|
|
273
|
+
trigger.deferral_note = (0, tokenize_1.stripWrapping)(value());
|
|
274
|
+
}
|
|
275
|
+
else if (keyword === 'description') {
|
|
276
|
+
trigger.description = (0, tokenize_1.stripWrapping)(value());
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
return true;
|
|
282
|
+
}, { construct: 'scheme_lifecycle trigger', id });
|
|
283
|
+
return trigger;
|
|
284
|
+
}
|
|
285
|
+
const parseSchemeLifecycle = (id, data) => {
|
|
286
|
+
const lifecycle = {
|
|
287
|
+
id,
|
|
288
|
+
applies_to: '',
|
|
289
|
+
initial: '',
|
|
290
|
+
entry: null,
|
|
291
|
+
transitions: [],
|
|
292
|
+
triggers: [],
|
|
293
|
+
source: { doc: '', clause: '' },
|
|
294
|
+
};
|
|
295
|
+
(0, parse_block_1.forEachEntry)(data, (keyword, value, peek) => {
|
|
296
|
+
if (keyword === 'applies_to') {
|
|
297
|
+
lifecycle.applies_to = (0, tokenize_1.stripWrapping)(value());
|
|
298
|
+
}
|
|
299
|
+
else if (keyword === 'initial') {
|
|
300
|
+
lifecycle.initial = (0, tokenize_1.stripWrapping)(value());
|
|
301
|
+
}
|
|
302
|
+
else if (keyword === 'entry') {
|
|
303
|
+
lifecycle.entry = parseEntry((0, tokenize_1.unwrapBlock)(value()));
|
|
304
|
+
}
|
|
305
|
+
else if (keyword === 'transition') {
|
|
306
|
+
// transition <From> -> <To> action <ActionName> { … } — the
|
|
307
|
+
// state_machine surface, with framework facets in the block.
|
|
308
|
+
const from = (0, tokenize_1.stripWrapping)(value());
|
|
309
|
+
const arrow = peek();
|
|
310
|
+
if (arrow === undefined || (arrow !== '->' && arrow !== '→')) {
|
|
311
|
+
throw new Error(`Parsing error: scheme_lifecycle. ID ${id}: transition ${from} is missing its '->'`);
|
|
312
|
+
}
|
|
313
|
+
value(); // the arrow
|
|
314
|
+
const to = (0, tokenize_1.stripWrapping)(value());
|
|
315
|
+
let action = '';
|
|
316
|
+
if (peek() === 'action') {
|
|
317
|
+
value(); // 'action'
|
|
318
|
+
action = (0, tokenize_1.stripWrapping)(value());
|
|
319
|
+
}
|
|
320
|
+
const head = peek();
|
|
321
|
+
if (head === undefined || !head.startsWith('{')) {
|
|
322
|
+
throw new Error(`Parsing error: scheme_lifecycle. ID ${id}: transition ${from} -> ${to} is missing its block`);
|
|
323
|
+
}
|
|
324
|
+
const facets = parseTransition((0, tokenize_1.unwrapBlock)(value()));
|
|
325
|
+
lifecycle.transitions.push({ from, to, action, ...facets });
|
|
326
|
+
}
|
|
327
|
+
else if (keyword === 'trigger') {
|
|
328
|
+
const trigId = (0, tokenize_1.stripWrapping)(value());
|
|
329
|
+
const head = peek();
|
|
330
|
+
if (head === undefined || !head.startsWith('{')) {
|
|
331
|
+
throw new Error(`Parsing error: scheme_lifecycle. ID ${id}: trigger ${trigId} is missing its block`);
|
|
332
|
+
}
|
|
333
|
+
lifecycle.triggers.push(parseTrigger(trigId, (0, tokenize_1.unwrapBlock)(value())));
|
|
334
|
+
}
|
|
335
|
+
else if (keyword === 'source') {
|
|
336
|
+
lifecycle.source = (0, field_parser_1.readSource)((0, tokenize_1.unwrapBlock)(value()));
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
return true;
|
|
342
|
+
}, { construct: 'scheme_lifecycle', id });
|
|
343
|
+
return ctx => {
|
|
344
|
+
ctx.schemeLifecycles[id] = lifecycle;
|
|
345
|
+
return ctx;
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
exports.parseSchemeLifecycle = parseSchemeLifecycle;
|
|
349
|
+
const dumpSchemeLifecycle = function (l) {
|
|
350
|
+
let out = 'scheme_lifecycle ' + l.id + ' {\n';
|
|
351
|
+
if (l.applies_to) {
|
|
352
|
+
out += ' applies_to ' + (0, field_parser_1.dumpBareSafe)(l.applies_to) + '\n';
|
|
353
|
+
}
|
|
354
|
+
if (l.initial) {
|
|
355
|
+
out += ' initial ' + (0, field_parser_1.dumpBareSafe)(l.initial) + '\n';
|
|
356
|
+
}
|
|
357
|
+
if (l.entry) {
|
|
358
|
+
const e = l.entry;
|
|
359
|
+
out += ' entry {\n';
|
|
360
|
+
if (e.action) {
|
|
361
|
+
out += ' action ' + (0, field_parser_1.dumpBareSafe)(e.action) + '\n';
|
|
362
|
+
}
|
|
363
|
+
out += ' automatic ' + (e.automatic ? 'true' : 'false') + '\n';
|
|
364
|
+
if (e.clause) {
|
|
365
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(e.clause) + '"\n';
|
|
366
|
+
}
|
|
367
|
+
if (e.conditions_ref) {
|
|
368
|
+
out += ' conditions_ref ' + (0, field_parser_1.dumpBareSafe)(e.conditions_ref) + '\n';
|
|
369
|
+
}
|
|
370
|
+
if (e.description) {
|
|
371
|
+
out += ' description "' + (0, tokenize_1.escapeString)(e.description) + '"\n';
|
|
372
|
+
}
|
|
373
|
+
out += ' }\n';
|
|
374
|
+
}
|
|
375
|
+
for (const t of l.transitions) {
|
|
376
|
+
out += ' transition ' + (0, field_parser_1.dumpBareSafe)(t.from) + ' -> ' + (0, field_parser_1.dumpBareSafe)(t.to);
|
|
377
|
+
if (t.action) {
|
|
378
|
+
out += ' action ' + (0, field_parser_1.dumpBareSafe)(t.action);
|
|
379
|
+
}
|
|
380
|
+
out += ' {\n';
|
|
381
|
+
if (t.clause) {
|
|
382
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(t.clause) + '"\n';
|
|
383
|
+
}
|
|
384
|
+
if (t.decided_by) {
|
|
385
|
+
out += ' decided_by ' + (0, field_parser_1.dumpBareSafe)(t.decided_by) + '\n';
|
|
386
|
+
}
|
|
387
|
+
if (t.on_proposal_of) {
|
|
388
|
+
out += ' on_proposal_of ' + (0, field_parser_1.dumpBareSafe)(t.on_proposal_of) + '\n';
|
|
389
|
+
}
|
|
390
|
+
if (t.description) {
|
|
391
|
+
out += ' description "' + (0, tokenize_1.escapeString)(t.description) + '"\n';
|
|
392
|
+
}
|
|
393
|
+
out += ' }\n';
|
|
394
|
+
}
|
|
395
|
+
for (const tr of l.triggers) {
|
|
396
|
+
out += ' trigger ' + (0, field_parser_1.dumpBareSafe)(tr.id) + ' {\n';
|
|
397
|
+
if (tr.kind) {
|
|
398
|
+
out += ' kind ' + (0, field_parser_1.dumpBareSafe)(tr.kind) + '\n';
|
|
399
|
+
}
|
|
400
|
+
if (tr.action) {
|
|
401
|
+
out += ' action ' + (0, field_parser_1.dumpBareSafe)(tr.action) + '\n';
|
|
402
|
+
}
|
|
403
|
+
if (tr.windowYears > 0 || tr.windowMonths > 0) {
|
|
404
|
+
let w = ' window {';
|
|
405
|
+
if (tr.windowYears > 0) {
|
|
406
|
+
w += ' years ' + tr.windowYears;
|
|
407
|
+
}
|
|
408
|
+
if (tr.windowMonths > 0) {
|
|
409
|
+
w += ' months ' + tr.windowMonths;
|
|
410
|
+
}
|
|
411
|
+
out += w + ' }\n';
|
|
412
|
+
}
|
|
413
|
+
if (tr.clause) {
|
|
414
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(tr.clause) + '"\n';
|
|
415
|
+
}
|
|
416
|
+
if (tr.deferrable) {
|
|
417
|
+
out += ' deferrable true\n';
|
|
418
|
+
}
|
|
419
|
+
if (tr.deferral_note) {
|
|
420
|
+
out += ' deferral_note "' + (0, tokenize_1.escapeString)(tr.deferral_note) + '"\n';
|
|
421
|
+
}
|
|
422
|
+
if (tr.description) {
|
|
423
|
+
out += ' description "' + (0, tokenize_1.escapeString)(tr.description) + '"\n';
|
|
424
|
+
}
|
|
425
|
+
out += ' }\n';
|
|
426
|
+
}
|
|
427
|
+
if (l.source.doc || l.source.clause) {
|
|
428
|
+
out += dumpSourceBlock(l.source);
|
|
429
|
+
}
|
|
430
|
+
out += '}\n';
|
|
431
|
+
return out;
|
|
432
|
+
};
|
|
433
|
+
exports.dumpSchemeLifecycle = dumpSchemeLifecycle;
|
|
434
|
+
//# sourceMappingURL=scheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheme.js","sourceRoot":"","sources":["../../../../src/ser-des/config/scheme.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Standard from '../types/Standard';
|
|
2
2
|
import type { LoadOptions, LoadResult } from './index';
|
|
3
3
|
import type { PackageManifest } from '../types/Package';
|
|
4
|
+
import type { ParseContext } from './types';
|
|
4
5
|
export interface PackageFile {
|
|
5
6
|
path: string;
|
|
6
7
|
role: 'manifest' | 'content';
|
|
@@ -106,9 +107,9 @@ export interface CompositionInfo {
|
|
|
106
107
|
/** Package ids in merge order: dependencies first, root last. */
|
|
107
108
|
order: string[];
|
|
108
109
|
}
|
|
109
|
-
export type CompositionRule = 'uses-resolves' | 'uses-no-redefine' | 'uses-cycle' | 'requires-satisfied';
|
|
110
|
+
export type CompositionRule = 'uses-resolves' | 'uses-no-redefine' | 'uses-cycle' | 'requires-satisfied' | 'namespace-pin-violation';
|
|
110
111
|
/** A composition failure — a hard load error. checkPackage reports these
|
|
111
|
-
* as linter issues C27–C29 and
|
|
112
|
+
* as linter issues C27–C29, C31 and C119 instead of throwing. */
|
|
112
113
|
export declare class CompositionError extends Error {
|
|
113
114
|
readonly rule: CompositionRule;
|
|
114
115
|
constructor(rule: CompositionRule, message: string);
|
|
@@ -118,4 +119,6 @@ export declare class CompositionError extends Error {
|
|
|
118
119
|
* `extends` (treated as one more uses entry), first occurrence wins.
|
|
119
120
|
*/
|
|
120
121
|
export declare function effectiveUses(manifest: PackageManifest): string[];
|
|
122
|
+
/** The id-keyed ParseContext collections that merge across packages. */
|
|
123
|
+
export declare const MERGE_FIELDS: (keyof ParseContext)[];
|
|
121
124
|
//# sourceMappingURL=package.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/ser-des/package.ts"],"names":[],"mappings":"AA0BA,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAOzC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/ser-des/package.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
// untouched: same joined stream, same parse, same resolution.
|
|
24
24
|
// ─────────────────────────────────────────────────────────────────────
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.CompositionError = void 0;
|
|
26
|
+
exports.MERGE_FIELDS = exports.CompositionError = void 0;
|
|
27
27
|
exports.packageFiles = packageFiles;
|
|
28
28
|
exports.loadPackage = loadPackage;
|
|
29
29
|
exports.groupBySourceFile = groupBySourceFile;
|
|
@@ -261,7 +261,7 @@ function loadPackageWithIssues(dir, options = {}) {
|
|
|
261
261
|
return loadPackageInternal(dir, options);
|
|
262
262
|
}
|
|
263
263
|
/** A composition failure — a hard load error. checkPackage reports these
|
|
264
|
-
* as linter issues C27–C29 and
|
|
264
|
+
* as linter issues C27–C29, C31 and C119 instead of throwing. */
|
|
265
265
|
class CompositionError extends Error {
|
|
266
266
|
rule;
|
|
267
267
|
constructor(rule, message) {
|
|
@@ -300,7 +300,11 @@ function extendsDeprecationIssue(m) {
|
|
|
300
300
|
};
|
|
301
301
|
}
|
|
302
302
|
/** The id-keyed ParseContext collections that merge across packages. */
|
|
303
|
-
|
|
303
|
+
// The composition contract (TODO.roadmap/05): every id-keyed
|
|
304
|
+
// ParseContext collection MUST appear here — a missing field is
|
|
305
|
+
// silently dropped from `uses` composition. test/merge-fields.test.ts
|
|
306
|
+
// guards the equivalence at runtime.
|
|
307
|
+
exports.MERGE_FIELDS = [
|
|
304
308
|
'approvals',
|
|
305
309
|
'roles',
|
|
306
310
|
'processes',
|
|
@@ -360,6 +364,37 @@ const MERGE_FIELDS = [
|
|
|
360
364
|
// protection.
|
|
361
365
|
'formulasUsed',
|
|
362
366
|
'texts',
|
|
367
|
+
// The certification-framework registers (smart TODO.roadmap/40; the
|
|
368
|
+
// packages-as-SSOT epic) — the framework package's participant kinds
|
|
369
|
+
// and organs compose into every scheme-side model through `uses`.
|
|
370
|
+
'participantKinds',
|
|
371
|
+
'governanceOrgans',
|
|
372
|
+
'declarationKinds',
|
|
373
|
+
'declarationStatuses',
|
|
374
|
+
'declarationGates',
|
|
375
|
+
'schemeDefinitions',
|
|
376
|
+
'schemeLifecycles',
|
|
377
|
+
'frameworkDocuments',
|
|
378
|
+
'documentPrecedences',
|
|
379
|
+
'autoInclusions',
|
|
380
|
+
'decisionRules',
|
|
381
|
+
// The pre-existing drift closed (the packages-as-SSOT epic): these
|
|
382
|
+
// collections existed as constructs but were never merged, so `uses`
|
|
383
|
+
// composition silently dropped them — comments, predicates, the
|
|
384
|
+
// artifact registers, the activity archetypes, connector profiles,
|
|
385
|
+
// monitors, passports, dataspaces, policies, and the top-level
|
|
386
|
+
// dimensions all compose with the same no-redefine semantics now.
|
|
387
|
+
'comments',
|
|
388
|
+
'predicates',
|
|
389
|
+
'artifactDefinitions',
|
|
390
|
+
'artifactInstances',
|
|
391
|
+
'activityArchetypes',
|
|
392
|
+
'connectorProfiles',
|
|
393
|
+
'monitors',
|
|
394
|
+
'passports',
|
|
395
|
+
'dataspaces',
|
|
396
|
+
'policies',
|
|
397
|
+
'dimensions',
|
|
363
398
|
];
|
|
364
399
|
/** Parse one package's content files (manifest excluded) as a single
|
|
365
400
|
* stream, keeping each file's joined-stream range for provenance. */
|
|
@@ -435,18 +470,52 @@ function composePackage(rootDir, options, rootManifest, withProvenance = false)
|
|
|
435
470
|
pkgChunks.set(id, parsed.chunks);
|
|
436
471
|
}
|
|
437
472
|
const provenance = new Map();
|
|
438
|
-
for (const field of MERGE_FIELDS) {
|
|
473
|
+
for (const field of exports.MERGE_FIELDS) {
|
|
439
474
|
provenance.set(field, new Map());
|
|
440
475
|
}
|
|
441
476
|
const acc = ctxs.get(order[0]);
|
|
442
|
-
for (const field of MERGE_FIELDS) {
|
|
477
|
+
for (const field of exports.MERGE_FIELDS) {
|
|
443
478
|
for (const key of Object.keys(acc[field])) {
|
|
444
479
|
provenance.get(field).set(key, order[0]);
|
|
445
480
|
}
|
|
446
481
|
}
|
|
482
|
+
// Requirement-namespace pins (the smart AGENTS.d/07 pin doctrine,
|
|
483
|
+
// TODO.editor/05 Q3 — linter rule C119): a requirement scope (a
|
|
484
|
+
// requirement_class id path, e.g. /req/cs) declared by an upstream
|
|
485
|
+
// package is OWNED by that package — a downstream package may reference
|
|
486
|
+
// its provisions but MUST NOT declare a requirement class or a
|
|
487
|
+
// requirement whose id sits at or under an owned namespace (the REC-WINS
|
|
488
|
+
// merge would otherwise silently redefine scheme provisions). The
|
|
489
|
+
// exact-id case is uses-no-redefine above; this guard is the
|
|
490
|
+
// strict-descendant leg.
|
|
491
|
+
const ownedScopes = new Map(); // scope id → owning package
|
|
492
|
+
const harvestScopes = (id, ctx) => {
|
|
493
|
+
for (const key of Object.keys(ctx.requirementClasses)) {
|
|
494
|
+
if (!ownedScopes.has(key)) {
|
|
495
|
+
ownedScopes.set(key, id);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
const pinGuard = (id, next) => {
|
|
500
|
+
if (ownedScopes.size === 0) {
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
for (const field of ['requirementClasses', 'requirements']) {
|
|
504
|
+
const label = field === 'requirementClasses' ? 'requirement class' : 'requirement';
|
|
505
|
+
for (const key of Object.keys(next[field])) {
|
|
506
|
+
for (const [scope, owner] of ownedScopes) {
|
|
507
|
+
if (key.startsWith(scope + '/')) {
|
|
508
|
+
throw new CompositionError('namespace-pin-violation', `package "${id}" declares ${label} "${key}" under the requirement namespace "${scope}" owned by package "${owner}" — a layer-owned namespace is single-sourced: a downstream package may reference its provisions, never declare scopes or requirements at or under it (namespace-pin-violation)`);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
harvestScopes(order[0], acc);
|
|
447
515
|
for (const id of order.slice(1)) {
|
|
448
516
|
const next = ctxs.get(id);
|
|
449
|
-
|
|
517
|
+
pinGuard(id, next);
|
|
518
|
+
for (const field of exports.MERGE_FIELDS) {
|
|
450
519
|
const target = acc[field];
|
|
451
520
|
const pm = provenance.get(field);
|
|
452
521
|
for (const [key, value] of Object.entries(next[field])) {
|
|
@@ -475,6 +544,7 @@ function composePackage(rootDir, options, rootManifest, withProvenance = false)
|
|
|
475
544
|
if (!acc.metadata && next.metadata) {
|
|
476
545
|
acc.metadata = next.metadata;
|
|
477
546
|
}
|
|
547
|
+
harvestScopes(id, next);
|
|
478
548
|
}
|
|
479
549
|
// Post-merge: every requires entry names a composed package id or one
|
|
480
550
|
// of its provides entries (satisfied by the composed set, not by the
|