@primmel/primmel 1.11.1 → 1.12.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 +29 -0
- package/dist/src/check-rules.js.map +1 -1
- package/dist/src/check.d.ts.map +1 -1
- package/dist/src/check.js +254 -3
- package/dist/src/check.js.map +1 -1
- package/dist/src/model-diff.d.ts.map +1 -1
- package/dist/src/model-diff.js +17 -0
- package/dist/src/model-diff.js.map +1 -1
- package/dist/src/ser-des/config/documentModule.d.ts +5 -0
- package/dist/src/ser-des/config/documentModule.d.ts.map +1 -0
- package/dist/src/ser-des/config/documentModule.js +109 -0
- package/dist/src/ser-des/config/documentModule.js.map +1 -0
- package/dist/src/ser-des/config/index.d.ts.map +1 -1
- package/dist/src/ser-des/config/index.js +46 -0
- package/dist/src/ser-des/config/index.js.map +1 -1
- package/dist/src/ser-des/config/informativeAnnex.d.ts +5 -0
- package/dist/src/ser-des/config/informativeAnnex.d.ts.map +1 -0
- package/dist/src/ser-des/config/informativeAnnex.js +185 -0
- package/dist/src/ser-des/config/informativeAnnex.js.map +1 -0
- package/dist/src/ser-des/config/process.d.ts.map +1 -1
- package/dist/src/ser-des/config/process.js +369 -3
- package/dist/src/ser-des/config/process.js.map +1 -1
- package/dist/src/ser-des/config/processModel.d.ts +13 -0
- package/dist/src/ser-des/config/processModel.d.ts.map +1 -0
- package/dist/src/ser-des/config/processModel.js +163 -0
- package/dist/src/ser-des/config/processModel.js.map +1 -0
- package/dist/src/ser-des/config/schemeType.d.ts +7 -0
- package/dist/src/ser-des/config/schemeType.d.ts.map +1 -0
- package/dist/src/ser-des/config/schemeType.js +232 -0
- package/dist/src/ser-des/config/schemeType.js.map +1 -0
- package/dist/src/ser-des/package.d.ts.map +1 -1
- package/dist/src/ser-des/package.js +31 -8
- 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 +8 -0
- package/dist/src/ser-des/parse.js.map +1 -1
- package/dist/src/ser-des/types.d.ts +12 -0
- package/dist/src/ser-des/types.d.ts.map +1 -1
- package/dist/src/types/DocumentModule.d.ts +27 -0
- package/dist/src/types/DocumentModule.d.ts.map +1 -0
- package/dist/src/types/DocumentModule.js +38 -0
- package/dist/src/types/DocumentModule.js.map +1 -0
- package/dist/src/types/InformativeAnnex.d.ts +44 -0
- package/dist/src/types/InformativeAnnex.d.ts.map +1 -0
- package/dist/src/types/InformativeAnnex.js +35 -0
- package/dist/src/types/InformativeAnnex.js.map +1 -0
- package/dist/src/types/Package.d.ts +7 -3
- package/dist/src/types/Package.d.ts.map +1 -1
- package/dist/src/types/ProcessModel.d.ts +27 -0
- package/dist/src/types/ProcessModel.d.ts.map +1 -0
- package/dist/src/types/ProcessModel.js +31 -0
- package/dist/src/types/ProcessModel.js.map +1 -0
- package/dist/src/types/SchemeType.d.ts +51 -0
- package/dist/src/types/SchemeType.d.ts.map +1 -0
- package/dist/src/types/SchemeType.js +41 -0
- package/dist/src/types/SchemeType.js.map +1 -0
- package/dist/src/types/Standard.d.ts +16 -0
- package/dist/src/types/Standard.d.ts.map +1 -1
- package/dist/src/types/process.d.ts +99 -1
- package/dist/src/types/process.d.ts.map +1 -1
- package/dist-browser/index.mjs +1448 -984
- package/dist-cli/primmel.mjs +1311 -119
- package/package.json +1 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
3
|
+
// `informative_annex` construct (smart TODO.roadmap/40 batch 2; the
|
|
4
|
+
// packages-as-SSOT epic) — a guidance document bound into a document
|
|
5
|
+
// module (types/InformativeAnnex.ts carries the banner and the grammar
|
|
6
|
+
// sketch).
|
|
7
|
+
//
|
|
8
|
+
// `highlight <id> { … }` is a two-token facet (the id, then the block),
|
|
9
|
+
// so it claims through peek/value manually. The document role vocabulary
|
|
10
|
+
// is parse-enforced (the fail-closed precedent) — single-valued today
|
|
11
|
+
// (informative), expected to grow.
|
|
12
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.dumpInformativeAnnex = exports.parseInformativeAnnex = void 0;
|
|
15
|
+
const tokenize_1 = require("../tokenize");
|
|
16
|
+
const parse_block_1 = require("../parse-block");
|
|
17
|
+
const field_parser_1 = require("./field-parser");
|
|
18
|
+
const ANNEX_DOCUMENT_ROLES = ['informative'];
|
|
19
|
+
function parseAnnexDocument(block, annexId) {
|
|
20
|
+
const doc = {
|
|
21
|
+
id: '',
|
|
22
|
+
title: '',
|
|
23
|
+
edition: 0,
|
|
24
|
+
year: 0,
|
|
25
|
+
role: '',
|
|
26
|
+
source: '',
|
|
27
|
+
};
|
|
28
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
29
|
+
if (keyword === 'id') {
|
|
30
|
+
doc.id = (0, tokenize_1.stripWrapping)(value());
|
|
31
|
+
}
|
|
32
|
+
else if (keyword === 'title') {
|
|
33
|
+
doc.title = (0, tokenize_1.stripWrapping)(value());
|
|
34
|
+
}
|
|
35
|
+
else if (keyword === 'edition') {
|
|
36
|
+
doc.edition = parseInt((0, tokenize_1.stripWrapping)(value()), 10) || 0;
|
|
37
|
+
}
|
|
38
|
+
else if (keyword === 'year') {
|
|
39
|
+
doc.year = parseInt((0, tokenize_1.stripWrapping)(value()), 10) || 0;
|
|
40
|
+
}
|
|
41
|
+
else if (keyword === 'role') {
|
|
42
|
+
const role = (0, tokenize_1.stripWrapping)(value());
|
|
43
|
+
if (!ANNEX_DOCUMENT_ROLES.includes(role)) {
|
|
44
|
+
throw new Error(`Parsing error: informative_annex. ID ${annexId}: Unknown document role "${role}" (valid: ${ANNEX_DOCUMENT_ROLES.join(', ')})`);
|
|
45
|
+
}
|
|
46
|
+
doc.role = role;
|
|
47
|
+
}
|
|
48
|
+
else if (keyword === 'source') {
|
|
49
|
+
doc.source = (0, tokenize_1.stripWrapping)(value());
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}, { construct: 'informative_annex document', id: annexId });
|
|
56
|
+
return doc;
|
|
57
|
+
}
|
|
58
|
+
function parseAnnexHighlight(id, block) {
|
|
59
|
+
const highlight = {
|
|
60
|
+
id,
|
|
61
|
+
clause: '',
|
|
62
|
+
title: '',
|
|
63
|
+
statement: '',
|
|
64
|
+
dischargedBy: '',
|
|
65
|
+
};
|
|
66
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
67
|
+
if (keyword === 'clause') {
|
|
68
|
+
highlight.clause = (0, tokenize_1.stripWrapping)(value());
|
|
69
|
+
}
|
|
70
|
+
else if (keyword === 'title') {
|
|
71
|
+
highlight.title = (0, tokenize_1.stripWrapping)(value());
|
|
72
|
+
}
|
|
73
|
+
else if (keyword === 'statement') {
|
|
74
|
+
highlight.statement = (0, tokenize_1.stripWrapping)(value());
|
|
75
|
+
}
|
|
76
|
+
else if (keyword === 'discharged_by') {
|
|
77
|
+
highlight.dischargedBy = (0, tokenize_1.stripWrapping)(value());
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
}, { construct: 'informative_annex highlight', id });
|
|
84
|
+
return highlight;
|
|
85
|
+
}
|
|
86
|
+
const parseInformativeAnnex = (id, data) => {
|
|
87
|
+
const annex = {
|
|
88
|
+
id,
|
|
89
|
+
document: { id: '', title: '', edition: 0, year: 0, role: '', source: '' },
|
|
90
|
+
appliesTo: '',
|
|
91
|
+
appliedBy: '',
|
|
92
|
+
scope: '',
|
|
93
|
+
numberingCaution: '',
|
|
94
|
+
highlights: [],
|
|
95
|
+
};
|
|
96
|
+
(0, parse_block_1.forEachEntry)(data, (keyword, value, peek) => {
|
|
97
|
+
if (keyword === 'document') {
|
|
98
|
+
annex.document = parseAnnexDocument((0, tokenize_1.unwrapBlock)(value()), id);
|
|
99
|
+
}
|
|
100
|
+
else if (keyword === 'applies_to') {
|
|
101
|
+
annex.appliesTo = (0, tokenize_1.stripWrapping)(value());
|
|
102
|
+
}
|
|
103
|
+
else if (keyword === 'applied_by') {
|
|
104
|
+
annex.appliedBy = (0, tokenize_1.stripWrapping)(value());
|
|
105
|
+
}
|
|
106
|
+
else if (keyword === 'scope') {
|
|
107
|
+
annex.scope = (0, tokenize_1.stripWrapping)(value());
|
|
108
|
+
}
|
|
109
|
+
else if (keyword === 'numbering_caution') {
|
|
110
|
+
annex.numberingCaution = (0, tokenize_1.stripWrapping)(value());
|
|
111
|
+
}
|
|
112
|
+
else if (keyword === 'highlight') {
|
|
113
|
+
const hlId = (0, tokenize_1.stripWrapping)(value());
|
|
114
|
+
const head = peek();
|
|
115
|
+
if (head === undefined || !head.startsWith('{')) {
|
|
116
|
+
throw new Error(`Parsing error: informative_annex. ID ${id}: highlight ${hlId} is missing its block`);
|
|
117
|
+
}
|
|
118
|
+
annex.highlights.push(parseAnnexHighlight(hlId, (0, tokenize_1.unwrapBlock)(value())));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}, { construct: 'informative_annex', id });
|
|
125
|
+
return ctx => {
|
|
126
|
+
ctx.informativeAnnexes[id] = annex;
|
|
127
|
+
return ctx;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
exports.parseInformativeAnnex = parseInformativeAnnex;
|
|
131
|
+
const dumpInformativeAnnex = function (a) {
|
|
132
|
+
let out = 'informative_annex ' + a.id + ' {\n';
|
|
133
|
+
out += ' document {\n';
|
|
134
|
+
if (a.document.id) {
|
|
135
|
+
out += ' id "' + (0, tokenize_1.escapeString)(a.document.id) + '"\n';
|
|
136
|
+
}
|
|
137
|
+
if (a.document.title) {
|
|
138
|
+
out += ' title "' + (0, tokenize_1.escapeString)(a.document.title) + '"\n';
|
|
139
|
+
}
|
|
140
|
+
if (a.document.edition) {
|
|
141
|
+
out += ' edition ' + a.document.edition + '\n';
|
|
142
|
+
}
|
|
143
|
+
if (a.document.year) {
|
|
144
|
+
out += ' year ' + a.document.year + '\n';
|
|
145
|
+
}
|
|
146
|
+
if (a.document.role) {
|
|
147
|
+
out += ' role ' + (0, field_parser_1.dumpBareSafe)(a.document.role) + '\n';
|
|
148
|
+
}
|
|
149
|
+
if (a.document.source) {
|
|
150
|
+
out += ' source "' + (0, tokenize_1.escapeString)(a.document.source) + '"\n';
|
|
151
|
+
}
|
|
152
|
+
out += ' }\n';
|
|
153
|
+
if (a.appliesTo) {
|
|
154
|
+
out += ' applies_to ' + (0, field_parser_1.dumpBareSafe)(a.appliesTo) + '\n';
|
|
155
|
+
}
|
|
156
|
+
if (a.appliedBy) {
|
|
157
|
+
out += ' applied_by "' + (0, tokenize_1.escapeString)(a.appliedBy) + '"\n';
|
|
158
|
+
}
|
|
159
|
+
if (a.scope) {
|
|
160
|
+
out += ' scope "' + (0, tokenize_1.escapeString)(a.scope) + '"\n';
|
|
161
|
+
}
|
|
162
|
+
if (a.numberingCaution) {
|
|
163
|
+
out += ' numbering_caution "' + (0, tokenize_1.escapeString)(a.numberingCaution) + '"\n';
|
|
164
|
+
}
|
|
165
|
+
for (const h of a.highlights) {
|
|
166
|
+
out += ' highlight ' + (0, field_parser_1.dumpBareSafe)(h.id) + ' {\n';
|
|
167
|
+
if (h.clause) {
|
|
168
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(h.clause) + '"\n';
|
|
169
|
+
}
|
|
170
|
+
if (h.title) {
|
|
171
|
+
out += ' title "' + (0, tokenize_1.escapeString)(h.title) + '"\n';
|
|
172
|
+
}
|
|
173
|
+
if (h.statement) {
|
|
174
|
+
out += ' statement "' + (0, tokenize_1.escapeString)(h.statement) + '"\n';
|
|
175
|
+
}
|
|
176
|
+
if (h.dischargedBy) {
|
|
177
|
+
out += ' discharged_by "' + (0, tokenize_1.escapeString)(h.dischargedBy) + '"\n';
|
|
178
|
+
}
|
|
179
|
+
out += ' }\n';
|
|
180
|
+
}
|
|
181
|
+
out += '}\n';
|
|
182
|
+
return out;
|
|
183
|
+
};
|
|
184
|
+
exports.dumpInformativeAnnex = dumpInformativeAnnex;
|
|
185
|
+
//# sourceMappingURL=informativeAnnex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"informativeAnnex.js","sourceRoot":"","sources":["../../../../src/ser-des/config/informativeAnnex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../../src/ser-des/config/process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../../src/ser-des/config/process.ts"],"names":[],"mappings":"AAsJA,OAAO,OAAO,EAAE,EAYd,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAkC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AA+qB5C,eAAO,MAAM,YAAY,EAAE,MA+O1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CA2C/D,CAAC;AASF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,UAAQ,GACb,MAAM,CAeR;AA0GD,eAAO,MAAM,WAAW,EAAE,CACxB,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,KACvB,MA8PJ,CAAC"}
|
|
@@ -107,6 +107,46 @@
|
|
|
107
107
|
// hand), never roles — a scheme may bind one role to evaluation, review
|
|
108
108
|
// AND decision, so the norms quantify over process involvement. C59
|
|
109
109
|
// (segregation-members-resolve) checks declaration well-formedness.
|
|
110
|
+
//
|
|
111
|
+
// The abstract-process model (smart TODO.roadmap/40 batch 2; the
|
|
112
|
+
// packages-as-SSOT epic — the OIML-CS / CASCO evaluation pipelines) adds
|
|
113
|
+
// the framework-binding facets:
|
|
114
|
+
//
|
|
115
|
+
// process ia_application {
|
|
116
|
+
// name "IA application"
|
|
117
|
+
// summary "The manufacturer … applies to an OIML Issuing Authority …"
|
|
118
|
+
// executor actor
|
|
119
|
+
// roles { applicant } # the role binding list —
|
|
120
|
+
// # DISTINCT from executor
|
|
121
|
+
// organs { management_committee } # → governance_organ (C121)
|
|
122
|
+
// participant_kinds { issuing_authority } # → participant_kind
|
|
123
|
+
// signature { in { } out { applications } } # bare name = untyped
|
|
124
|
+
// # entity-store reference
|
|
125
|
+
// evidence {
|
|
126
|
+
// application_record { description "…" required true }
|
|
127
|
+
// }
|
|
128
|
+
// decision { rule mc_80_vote clause "PD-03, 5.3.2" }
|
|
129
|
+
// declaration { kind issuing_authority_declaration action sign }
|
|
130
|
+
// discharges_gate declaration-signed-before-issuance
|
|
131
|
+
// realized_by { submit_application } # documentary
|
|
132
|
+
// approved_by { ia_accept_application }# documentary
|
|
133
|
+
// windows {
|
|
134
|
+
// window lodging_window {
|
|
135
|
+
// kind max_elapsed # max_elapsed | min_elapsed
|
|
136
|
+
// clause "PD-01, 8.2/8.3"
|
|
137
|
+
// anchor informed_at
|
|
138
|
+
// applies_to lodged_at
|
|
139
|
+
// window { months 1 } # the scheme_lifecycle window
|
|
140
|
+
// # duration sub-grammar
|
|
141
|
+
// breach rule_inadmissible # optional
|
|
142
|
+
// description "…"
|
|
143
|
+
// }
|
|
144
|
+
// }
|
|
145
|
+
// }
|
|
146
|
+
//
|
|
147
|
+
// The cross-references resolve at check time, per-register gated (C121
|
|
148
|
+
// abstract-process-references-resolve, the C58 doctrine); the codec stays
|
|
149
|
+
// total.
|
|
110
150
|
// ─────────────────────────────────────────────────────────────────────
|
|
111
151
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
112
152
|
exports.dumpProcess = exports.resolveProcess = exports.parseProcess = void 0;
|
|
@@ -148,15 +188,25 @@ function parseParamList(block, allowInitial = false) {
|
|
|
148
188
|
const t = (0, tokenize_1.default)(block);
|
|
149
189
|
let i = 0;
|
|
150
190
|
while (i < t.length) {
|
|
151
|
-
const
|
|
191
|
+
const head = t[i++];
|
|
192
|
+
const name = (0, field_parser_1.stripColon)(head);
|
|
152
193
|
if (!name) {
|
|
153
194
|
break;
|
|
154
195
|
}
|
|
155
|
-
|
|
196
|
+
// The type token is OPTIONAL (smart TODO.roadmap/40 batch 2): a bare
|
|
197
|
+
// name is an untyped entity-store reference — the abstract-process
|
|
198
|
+
// model's signatures quantify over record stores (`in { applications
|
|
199
|
+
// }`), not quantity kinds. A type is read only when a colon marker
|
|
200
|
+
// was present — attached (`name:`) or separate (`name : type`);
|
|
201
|
+
// without one the next token is the next ENTRY's head, never this
|
|
202
|
+
// entry's type.
|
|
203
|
+
let typed = head.endsWith(':');
|
|
156
204
|
if (i < t.length && t[i] === ':') {
|
|
205
|
+
typed = true;
|
|
157
206
|
i++;
|
|
158
207
|
}
|
|
159
|
-
|
|
208
|
+
let type = '';
|
|
209
|
+
if (typed && i < t.length) {
|
|
160
210
|
type = (0, tokenize_1.stripWrapping)(t[i++]);
|
|
161
211
|
}
|
|
162
212
|
const param = { name, type };
|
|
@@ -346,6 +396,153 @@ function parseSegregation(block) {
|
|
|
346
396
|
}
|
|
347
397
|
return out;
|
|
348
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* Evidence-record slots (smart TODO.roadmap/40 batch 2): `<id> { … }`
|
|
401
|
+
* entries of an `evidence { … }` block — the records a run of the
|
|
402
|
+
* abstract process must produce into the evidence store.
|
|
403
|
+
*/
|
|
404
|
+
function parseProcessEvidence(block) {
|
|
405
|
+
const out = [];
|
|
406
|
+
const t = (0, tokenize_1.default)(block);
|
|
407
|
+
let i = 0;
|
|
408
|
+
while (i < t.length) {
|
|
409
|
+
const eid = (0, tokenize_1.stripWrapping)(t[i++]);
|
|
410
|
+
if (!eid) {
|
|
411
|
+
break;
|
|
412
|
+
}
|
|
413
|
+
const entry = { id: eid, description: '', required: false };
|
|
414
|
+
if (i < t.length && t[i].startsWith('{')) {
|
|
415
|
+
(0, parse_block_1.forEachEntry)((0, tokenize_1.unwrapBlock)(t[i++]), (keyword, value) => {
|
|
416
|
+
if (keyword === 'description') {
|
|
417
|
+
entry.description = (0, tokenize_1.stripWrapping)(value());
|
|
418
|
+
}
|
|
419
|
+
else if (keyword === 'required') {
|
|
420
|
+
entry.required = (0, tokenize_1.stripWrapping)(value()) === 'true';
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
return true;
|
|
426
|
+
}, { construct: 'process evidence', id: eid });
|
|
427
|
+
}
|
|
428
|
+
out.push(entry);
|
|
429
|
+
}
|
|
430
|
+
return out;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* The decision facet (smart TODO.roadmap/40 batch 2):
|
|
434
|
+
* `decision { rule <decision_rule-id> clause "…" }`.
|
|
435
|
+
*/
|
|
436
|
+
function parseProcessDecision(block) {
|
|
437
|
+
const decision = { rule: '', clause: '' };
|
|
438
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
439
|
+
if (keyword === 'rule') {
|
|
440
|
+
decision.rule = (0, tokenize_1.stripWrapping)(value());
|
|
441
|
+
}
|
|
442
|
+
else if (keyword === 'clause') {
|
|
443
|
+
decision.clause = (0, tokenize_1.stripWrapping)(value());
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
return false;
|
|
447
|
+
}
|
|
448
|
+
return true;
|
|
449
|
+
}, { construct: 'process decision', id: '' });
|
|
450
|
+
return decision;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* The declaration facet (smart TODO.roadmap/40 batch 2):
|
|
454
|
+
* `declaration { kind <declaration_kind-id> action sign|update }`. The
|
|
455
|
+
* action vocabulary is check-time (C121) — the codec stays total.
|
|
456
|
+
*/
|
|
457
|
+
function parseProcessDeclaration(block) {
|
|
458
|
+
const declaration = { kind: '', action: '' };
|
|
459
|
+
(0, parse_block_1.forEachEntry)(block, (keyword, value) => {
|
|
460
|
+
if (keyword === 'kind') {
|
|
461
|
+
declaration.kind = (0, tokenize_1.stripWrapping)(value());
|
|
462
|
+
}
|
|
463
|
+
else if (keyword === 'action') {
|
|
464
|
+
declaration.action = (0, tokenize_1.stripWrapping)(value());
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
return false;
|
|
468
|
+
}
|
|
469
|
+
return true;
|
|
470
|
+
}, { construct: 'process declaration', id: '' });
|
|
471
|
+
return declaration;
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* The calendar windows (smart TODO.roadmap/40 batch 2): `window <id>
|
|
475
|
+
* { … }` entries of a `windows { … }` block. The duration reuses the
|
|
476
|
+
* scheme_lifecycle window sub-grammar — `window { years 2 }` /
|
|
477
|
+
* `window { months 1 }` (config/scheme.ts parseTrigger); the shape
|
|
478
|
+
* discipline (kind vocabulary, exactly one of years/months) is
|
|
479
|
+
* check-time (C121).
|
|
480
|
+
*/
|
|
481
|
+
function parseProcessWindows(block) {
|
|
482
|
+
const out = [];
|
|
483
|
+
const t = (0, tokenize_1.default)(block);
|
|
484
|
+
let i = 0;
|
|
485
|
+
while (i < t.length) {
|
|
486
|
+
const cmd = t[i++];
|
|
487
|
+
if (cmd !== 'window') {
|
|
488
|
+
i = skipUnknownEntry(t, i);
|
|
489
|
+
continue;
|
|
490
|
+
}
|
|
491
|
+
const wid = (0, tokenize_1.stripWrapping)(t[i++]);
|
|
492
|
+
const entry = {
|
|
493
|
+
id: wid,
|
|
494
|
+
kind: '',
|
|
495
|
+
clause: '',
|
|
496
|
+
anchor: '',
|
|
497
|
+
applies_to: '',
|
|
498
|
+
windowYears: 0,
|
|
499
|
+
windowMonths: 0,
|
|
500
|
+
breach: '',
|
|
501
|
+
description: '',
|
|
502
|
+
};
|
|
503
|
+
if (i < t.length && t[i].startsWith('{')) {
|
|
504
|
+
(0, parse_block_1.forEachEntry)((0, tokenize_1.unwrapBlock)(t[i++]), (keyword, value) => {
|
|
505
|
+
if (keyword === 'kind') {
|
|
506
|
+
entry.kind = (0, tokenize_1.stripWrapping)(value());
|
|
507
|
+
}
|
|
508
|
+
else if (keyword === 'clause') {
|
|
509
|
+
entry.clause = (0, tokenize_1.stripWrapping)(value());
|
|
510
|
+
}
|
|
511
|
+
else if (keyword === 'anchor') {
|
|
512
|
+
entry.anchor = (0, tokenize_1.stripWrapping)(value());
|
|
513
|
+
}
|
|
514
|
+
else if (keyword === 'applies_to') {
|
|
515
|
+
entry.applies_to = (0, tokenize_1.stripWrapping)(value());
|
|
516
|
+
}
|
|
517
|
+
else if (keyword === 'window') {
|
|
518
|
+
const wt = (0, tokenize_1.tokenizePackage)((0, tokenize_1.unwrapBlock)(value()));
|
|
519
|
+
for (let k = 0; k + 1 < wt.length; k += 2) {
|
|
520
|
+
if (wt[k] === 'years') {
|
|
521
|
+
entry.windowYears =
|
|
522
|
+
parseInt((0, tokenize_1.stripWrapping)(wt[k + 1]), 10) || 0;
|
|
523
|
+
}
|
|
524
|
+
else if (wt[k] === 'months') {
|
|
525
|
+
entry.windowMonths =
|
|
526
|
+
parseInt((0, tokenize_1.stripWrapping)(wt[k + 1]), 10) || 0;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
else if (keyword === 'breach') {
|
|
531
|
+
entry.breach = (0, tokenize_1.stripWrapping)(value());
|
|
532
|
+
}
|
|
533
|
+
else if (keyword === 'description') {
|
|
534
|
+
entry.description = (0, tokenize_1.stripWrapping)(value());
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
return false;
|
|
538
|
+
}
|
|
539
|
+
return true;
|
|
540
|
+
}, { construct: 'process window', id: wid });
|
|
541
|
+
}
|
|
542
|
+
out.push(entry);
|
|
543
|
+
}
|
|
544
|
+
return out;
|
|
545
|
+
}
|
|
349
546
|
/** Per-classification instances: `by <dimension> values { V { k: n } … }`. */ function parseProcessInstances(block) {
|
|
350
547
|
const out = { by: '', values: {} };
|
|
351
548
|
const t = (0, tokenize_1.default)(block);
|
|
@@ -641,6 +838,18 @@ const parseProcess = function (id, data) {
|
|
|
641
838
|
instances: null,
|
|
642
839
|
childComposition: 'all',
|
|
643
840
|
does: null,
|
|
841
|
+
// The abstract-process model (smart TODO.roadmap/40 batch 2)
|
|
842
|
+
summary: '',
|
|
843
|
+
roles: [],
|
|
844
|
+
organs: [],
|
|
845
|
+
participantKinds: [],
|
|
846
|
+
evidence: [],
|
|
847
|
+
decision: null,
|
|
848
|
+
declaration: null,
|
|
849
|
+
dischargesGate: '',
|
|
850
|
+
realizedBy: [],
|
|
851
|
+
approvedBy: [],
|
|
852
|
+
windows: [],
|
|
644
853
|
source: null,
|
|
645
854
|
provisionRefs: [],
|
|
646
855
|
_relations: {
|
|
@@ -742,6 +951,62 @@ const parseProcess = function (id, data) {
|
|
|
742
951
|
.map(tokenize_1.stripWrapping)
|
|
743
952
|
.filter(s => s.length > 0);
|
|
744
953
|
}
|
|
954
|
+
else if (keyword === 'summary') {
|
|
955
|
+
// The abstract-process model (smart TODO.roadmap/40 batch 2).
|
|
956
|
+
result.summary = (0, parse_block_1.unwrapped)(value);
|
|
957
|
+
}
|
|
958
|
+
else if (keyword === 'roles') {
|
|
959
|
+
// roles { applicant … } — the role binding list; kept DISTINCT
|
|
960
|
+
// from `executor` (the typing token) — never collapsed.
|
|
961
|
+
result.roles = (0, tokenize_1.default)((0, tokenize_1.stripWrapping)(value()))
|
|
962
|
+
.map(field_parser_1.stripColon)
|
|
963
|
+
.map(tokenize_1.stripWrapping)
|
|
964
|
+
.filter(s => s.length > 0);
|
|
965
|
+
}
|
|
966
|
+
else if (keyword === 'organs') {
|
|
967
|
+
result.organs = (0, tokenize_1.default)((0, tokenize_1.stripWrapping)(value()))
|
|
968
|
+
.map(field_parser_1.stripColon)
|
|
969
|
+
.map(tokenize_1.stripWrapping)
|
|
970
|
+
.filter(s => s.length > 0);
|
|
971
|
+
}
|
|
972
|
+
else if (keyword === 'participant_kinds') {
|
|
973
|
+
result.participantKinds = (0, tokenize_1.default)((0, tokenize_1.stripWrapping)(value()))
|
|
974
|
+
.map(field_parser_1.stripColon)
|
|
975
|
+
.map(tokenize_1.stripWrapping)
|
|
976
|
+
.filter(s => s.length > 0);
|
|
977
|
+
}
|
|
978
|
+
else if (keyword === 'evidence') {
|
|
979
|
+
// evidence { <id> { description "…" required true } … }
|
|
980
|
+
result.evidence = parseProcessEvidence((0, tokenize_1.unwrapBlock)(value()));
|
|
981
|
+
}
|
|
982
|
+
else if (keyword === 'decision') {
|
|
983
|
+
// decision { rule <decision_rule-id> clause "…" }
|
|
984
|
+
result.decision = parseProcessDecision((0, tokenize_1.unwrapBlock)(value()));
|
|
985
|
+
}
|
|
986
|
+
else if (keyword === 'declaration') {
|
|
987
|
+
// declaration { kind <declaration_kind-id> action sign|update }
|
|
988
|
+
result.declaration = parseProcessDeclaration((0, tokenize_1.unwrapBlock)(value()));
|
|
989
|
+
}
|
|
990
|
+
else if (keyword === 'discharges_gate') {
|
|
991
|
+
result.dischargesGate = (0, tokenize_1.stripWrapping)(value());
|
|
992
|
+
}
|
|
993
|
+
else if (keyword === 'realized_by') {
|
|
994
|
+
result.realizedBy = (0, tokenize_1.default)((0, tokenize_1.stripWrapping)(value()))
|
|
995
|
+
.map(field_parser_1.stripColon)
|
|
996
|
+
.map(tokenize_1.stripWrapping)
|
|
997
|
+
.filter(s => s.length > 0);
|
|
998
|
+
}
|
|
999
|
+
else if (keyword === 'approved_by') {
|
|
1000
|
+
result.approvedBy = (0, tokenize_1.default)((0, tokenize_1.stripWrapping)(value()))
|
|
1001
|
+
.map(field_parser_1.stripColon)
|
|
1002
|
+
.map(tokenize_1.stripWrapping)
|
|
1003
|
+
.filter(s => s.length > 0);
|
|
1004
|
+
}
|
|
1005
|
+
else if (keyword === 'windows') {
|
|
1006
|
+
// windows { window <id> { … } … } — the calendar windows, reusing
|
|
1007
|
+
// the scheme_lifecycle window duration sub-grammar.
|
|
1008
|
+
result.windows = parseProcessWindows((0, tokenize_1.unwrapBlock)(value()));
|
|
1009
|
+
}
|
|
745
1010
|
else if (keyword === 'segregation') {
|
|
746
1011
|
// segregation { constraint <id> { … } … } — ISO/IEC 17065 role
|
|
747
1012
|
// segregation (TODO.roadmap/39b; C59).
|
|
@@ -974,6 +1239,9 @@ function dumpDoes(flow) {
|
|
|
974
1239
|
const dumpProcess = function (process, ctx) {
|
|
975
1240
|
let out = 'process ' + process.id + ' {\n';
|
|
976
1241
|
out += ' name "' + (0, tokenize_1.escapeString)(process.name) + '"\n';
|
|
1242
|
+
if (process.summary) {
|
|
1243
|
+
out += ' summary "' + (0, tokenize_1.escapeString)(process.summary) + '"\n';
|
|
1244
|
+
}
|
|
977
1245
|
if (process.actor !== null) {
|
|
978
1246
|
out += ' actor ' + process.actor.id + '\n';
|
|
979
1247
|
}
|
|
@@ -1028,6 +1296,104 @@ const dumpProcess = function (process, ctx) {
|
|
|
1028
1296
|
process.activityKinds.map(field_parser_1.dumpBareSafe).join(' ') +
|
|
1029
1297
|
' }\n';
|
|
1030
1298
|
}
|
|
1299
|
+
// ── The abstract-process model (smart TODO.roadmap/40 batch 2) ──
|
|
1300
|
+
if (process.roles && process.roles.length > 0) {
|
|
1301
|
+
out += ' roles { ' + process.roles.map(field_parser_1.dumpBareSafe).join(' ') + ' }\n';
|
|
1302
|
+
}
|
|
1303
|
+
if (process.organs && process.organs.length > 0) {
|
|
1304
|
+
out += ' organs { ' + process.organs.map(field_parser_1.dumpBareSafe).join(' ') + ' }\n';
|
|
1305
|
+
}
|
|
1306
|
+
if (process.participantKinds && process.participantKinds.length > 0) {
|
|
1307
|
+
out +=
|
|
1308
|
+
' participant_kinds { ' +
|
|
1309
|
+
process.participantKinds.map(field_parser_1.dumpBareSafe).join(' ') +
|
|
1310
|
+
' }\n';
|
|
1311
|
+
}
|
|
1312
|
+
if (process.evidence && process.evidence.length > 0) {
|
|
1313
|
+
out += ' evidence {\n';
|
|
1314
|
+
for (const e of process.evidence) {
|
|
1315
|
+
out += ' ' + (0, field_parser_1.dumpBareSafe)(e.id) + ' {';
|
|
1316
|
+
if (e.description) {
|
|
1317
|
+
out += ' description "' + (0, tokenize_1.escapeString)(e.description) + '"';
|
|
1318
|
+
}
|
|
1319
|
+
if (e.required) {
|
|
1320
|
+
out += ' required true';
|
|
1321
|
+
}
|
|
1322
|
+
out += ' }\n';
|
|
1323
|
+
}
|
|
1324
|
+
out += ' }\n';
|
|
1325
|
+
}
|
|
1326
|
+
if (process.decision) {
|
|
1327
|
+
out += ' decision {';
|
|
1328
|
+
if (process.decision.rule) {
|
|
1329
|
+
out += ' rule ' + (0, field_parser_1.dumpBareSafe)(process.decision.rule);
|
|
1330
|
+
}
|
|
1331
|
+
if (process.decision.clause) {
|
|
1332
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(process.decision.clause) + '"';
|
|
1333
|
+
}
|
|
1334
|
+
out += ' }\n';
|
|
1335
|
+
}
|
|
1336
|
+
if (process.declaration) {
|
|
1337
|
+
out += ' declaration {';
|
|
1338
|
+
if (process.declaration.kind) {
|
|
1339
|
+
out += ' kind ' + (0, field_parser_1.dumpBareSafe)(process.declaration.kind);
|
|
1340
|
+
}
|
|
1341
|
+
if (process.declaration.action) {
|
|
1342
|
+
out += ' action ' + (0, field_parser_1.dumpBareSafe)(process.declaration.action);
|
|
1343
|
+
}
|
|
1344
|
+
out += ' }\n';
|
|
1345
|
+
}
|
|
1346
|
+
if (process.dischargesGate) {
|
|
1347
|
+
out += ' discharges_gate ' + (0, field_parser_1.dumpBareSafe)(process.dischargesGate) + '\n';
|
|
1348
|
+
}
|
|
1349
|
+
if (process.realizedBy && process.realizedBy.length > 0) {
|
|
1350
|
+
out +=
|
|
1351
|
+
' realized_by { ' +
|
|
1352
|
+
process.realizedBy.map(field_parser_1.dumpBareSafe).join(' ') +
|
|
1353
|
+
' }\n';
|
|
1354
|
+
}
|
|
1355
|
+
if (process.approvedBy && process.approvedBy.length > 0) {
|
|
1356
|
+
out +=
|
|
1357
|
+
' approved_by { ' +
|
|
1358
|
+
process.approvedBy.map(field_parser_1.dumpBareSafe).join(' ') +
|
|
1359
|
+
' }\n';
|
|
1360
|
+
}
|
|
1361
|
+
if (process.windows && process.windows.length > 0) {
|
|
1362
|
+
out += ' windows {\n';
|
|
1363
|
+
for (const w of process.windows) {
|
|
1364
|
+
out += ' window ' + (0, field_parser_1.dumpBareSafe)(w.id) + ' {\n';
|
|
1365
|
+
if (w.kind) {
|
|
1366
|
+
out += ' kind ' + (0, field_parser_1.dumpBareSafe)(w.kind) + '\n';
|
|
1367
|
+
}
|
|
1368
|
+
if (w.clause) {
|
|
1369
|
+
out += ' clause "' + (0, tokenize_1.escapeString)(w.clause) + '"\n';
|
|
1370
|
+
}
|
|
1371
|
+
if (w.anchor) {
|
|
1372
|
+
out += ' anchor ' + (0, field_parser_1.dumpBareSafe)(w.anchor) + '\n';
|
|
1373
|
+
}
|
|
1374
|
+
if (w.applies_to) {
|
|
1375
|
+
out += ' applies_to ' + (0, field_parser_1.dumpBareSafe)(w.applies_to) + '\n';
|
|
1376
|
+
}
|
|
1377
|
+
if (w.windowYears > 0 || w.windowMonths > 0) {
|
|
1378
|
+
out += ' window {';
|
|
1379
|
+
if (w.windowYears > 0) {
|
|
1380
|
+
out += ' years ' + w.windowYears;
|
|
1381
|
+
}
|
|
1382
|
+
if (w.windowMonths > 0) {
|
|
1383
|
+
out += ' months ' + w.windowMonths;
|
|
1384
|
+
}
|
|
1385
|
+
out += ' }\n';
|
|
1386
|
+
}
|
|
1387
|
+
if (w.breach) {
|
|
1388
|
+
out += ' breach ' + (0, field_parser_1.dumpBareSafe)(w.breach) + '\n';
|
|
1389
|
+
}
|
|
1390
|
+
if (w.description) {
|
|
1391
|
+
out += ' description "' + (0, tokenize_1.escapeString)(w.description) + '"\n';
|
|
1392
|
+
}
|
|
1393
|
+
out += ' }\n';
|
|
1394
|
+
}
|
|
1395
|
+
out += ' }\n';
|
|
1396
|
+
}
|
|
1031
1397
|
if (process.segregation && process.segregation.length > 0) {
|
|
1032
1398
|
out += ' segregation {\n';
|
|
1033
1399
|
for (const s of process.segregation) {
|