@primmel/primmel 1.5.0 → 1.5.2
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 +7 -1
- package/dist/src/check-rules.js.map +1 -1
- package/dist/src/check.d.ts +13 -0
- package/dist/src/check.d.ts.map +1 -1
- package/dist/src/check.js +91 -0
- package/dist/src/check.js.map +1 -1
- package/dist/src/ser-des/config/artifact.d.ts.map +1 -1
- package/dist/src/ser-des/config/artifact.js +29 -12
- package/dist/src/ser-des/config/artifact.js.map +1 -1
- package/dist/src/ser-des/config/calculation.d.ts.map +1 -1
- package/dist/src/ser-des/config/calculation.js +21 -6
- package/dist/src/ser-des/config/calculation.js.map +1 -1
- package/dist/src/ser-des/config/competenceKind.d.ts.map +1 -1
- package/dist/src/ser-des/config/competenceKind.js +9 -0
- package/dist/src/ser-des/config/competenceKind.js.map +1 -1
- package/dist/src/ser-des/config/conformanceClass.d.ts.map +1 -1
- package/dist/src/ser-des/config/conformanceClass.js +2 -1
- package/dist/src/ser-des/config/conformanceClass.js.map +1 -1
- package/dist/src/ser-des/config/conformanceTest.d.ts.map +1 -1
- package/dist/src/ser-des/config/conformanceTest.js +11 -23
- package/dist/src/ser-des/config/conformanceTest.js.map +1 -1
- package/dist/src/ser-des/config/constraint.d.ts.map +1 -1
- package/dist/src/ser-des/config/constraint.js +9 -0
- package/dist/src/ser-des/config/constraint.js.map +1 -1
- package/dist/src/ser-des/config/field-parser.d.ts.map +1 -1
- package/dist/src/ser-des/config/field-parser.js +29 -2
- package/dist/src/ser-des/config/field-parser.js.map +1 -1
- package/dist/src/ser-des/config/form.d.ts.map +1 -1
- package/dist/src/ser-des/config/form.js +12 -2
- package/dist/src/ser-des/config/form.js.map +1 -1
- package/dist/src/ser-des/config/formulasUsed.d.ts.map +1 -1
- package/dist/src/ser-des/config/formulasUsed.js +20 -9
- package/dist/src/ser-des/config/formulasUsed.js.map +1 -1
- package/dist/src/ser-des/config/packageManifest.d.ts.map +1 -1
- package/dist/src/ser-des/config/packageManifest.js +5 -2
- package/dist/src/ser-des/config/packageManifest.js.map +1 -1
- package/dist/src/ser-des/config/process.d.ts.map +1 -1
- package/dist/src/ser-des/config/process.js +15 -12
- package/dist/src/ser-des/config/process.js.map +1 -1
- package/dist/src/ser-des/config/ref.d.ts +61 -0
- package/dist/src/ser-des/config/ref.d.ts.map +1 -1
- package/dist/src/ser-des/config/ref.js +133 -0
- package/dist/src/ser-des/config/ref.js.map +1 -1
- package/dist/src/ser-des/config/referenceMaterial.d.ts.map +1 -1
- package/dist/src/ser-des/config/referenceMaterial.js +43 -19
- package/dist/src/ser-des/config/referenceMaterial.js.map +1 -1
- package/dist/src/ser-des/config/requirement.d.ts.map +1 -1
- package/dist/src/ser-des/config/requirement.js +9 -13
- package/dist/src/ser-des/config/requirement.js.map +1 -1
- package/dist/src/ser-des/config/subject.d.ts.map +1 -1
- package/dist/src/ser-des/config/subject.js +160 -21
- package/dist/src/ser-des/config/subject.js.map +1 -1
- package/dist/src/ser-des/config/symbol.d.ts.map +1 -1
- package/dist/src/ser-des/config/symbol.js +10 -1
- package/dist/src/ser-des/config/symbol.js.map +1 -1
- package/dist/src/ser-des/config/table.d.ts.map +1 -1
- package/dist/src/ser-des/config/table.js +10 -8
- package/dist/src/ser-des/config/table.js.map +1 -1
- package/dist/src/ser-des/config/term.d.ts.map +1 -1
- package/dist/src/ser-des/config/term.js +18 -1
- package/dist/src/ser-des/config/term.js.map +1 -1
- package/dist/src/ser-des/config/testPointSet.d.ts.map +1 -1
- package/dist/src/ser-des/config/testPointSet.js +24 -13
- package/dist/src/ser-des/config/testPointSet.js.map +1 -1
- package/dist/src/ser-des/config/testSequence.d.ts.map +1 -1
- package/dist/src/ser-des/config/testSequence.js +19 -7
- package/dist/src/ser-des/config/testSequence.js.map +1 -1
- package/dist/src/ser-des/config/verdict.d.ts.map +1 -1
- package/dist/src/ser-des/config/verdict.js +24 -13
- package/dist/src/ser-des/config/verdict.js.map +1 -1
- package/dist/src/ser-des/parse-block.d.ts +16 -5
- package/dist/src/ser-des/parse-block.d.ts.map +1 -1
- package/dist/src/ser-des/parse-block.js +45 -6
- package/dist/src/ser-des/parse-block.js.map +1 -1
- package/dist/src/types/Artifact.d.ts +6 -0
- package/dist/src/types/Artifact.d.ts.map +1 -1
- package/dist/src/types/Calculation.d.ts +2 -0
- package/dist/src/types/Calculation.d.ts.map +1 -1
- package/dist/src/types/CompetenceKind.d.ts +3 -0
- package/dist/src/types/CompetenceKind.d.ts.map +1 -1
- package/dist/src/types/Constraint.d.ts +3 -0
- package/dist/src/types/Constraint.d.ts.map +1 -1
- package/dist/src/types/Form.d.ts +3 -0
- package/dist/src/types/Form.d.ts.map +1 -1
- package/dist/src/types/FormulasUsed.d.ts +2 -0
- package/dist/src/types/FormulasUsed.d.ts.map +1 -1
- package/dist/src/types/Invariant.d.ts +1 -0
- package/dist/src/types/Invariant.d.ts.map +1 -1
- package/dist/src/types/ReferenceMaterial.d.ts +7 -0
- package/dist/src/types/ReferenceMaterial.d.ts.map +1 -1
- package/dist/src/types/Subject.d.ts +22 -0
- package/dist/src/types/Subject.d.ts.map +1 -1
- package/dist/src/types/Symbol.d.ts +4 -0
- package/dist/src/types/Symbol.d.ts.map +1 -1
- package/dist/src/types/Table.d.ts +4 -0
- package/dist/src/types/Table.d.ts.map +1 -1
- package/dist/src/types/Term.d.ts +2 -0
- package/dist/src/types/Term.d.ts.map +1 -1
- package/dist/src/types/TestPointSet.d.ts +4 -0
- package/dist/src/types/TestPointSet.d.ts.map +1 -1
- package/dist/src/types/TestSequence.d.ts +2 -0
- package/dist/src/types/TestSequence.d.ts.map +1 -1
- package/dist/src/types/Verdict.d.ts +4 -0
- package/dist/src/types/Verdict.d.ts.map +1 -1
- package/dist/src/types/process.d.ts +3 -0
- package/dist/src/types/process.d.ts.map +1 -1
- package/dist/src/validate.js +9 -1
- package/dist/src/validate.js.map +1 -1
- package/dist-browser/index.mjs +1768 -1507
- package/dist-cli/primmel.mjs +572 -124
- package/package.json +1 -1
|
@@ -104,7 +104,9 @@ exports.subjectConstruct = exports.conditionSetConstruct = exports.behaviorConst
|
|
|
104
104
|
exports.resolveSubject = resolveSubject;
|
|
105
105
|
const tokenize_1 = require("../tokenize");
|
|
106
106
|
const tokenize_2 = require("../tokenize");
|
|
107
|
+
const parse_block_1 = require("../parse-block");
|
|
107
108
|
const field_parser_1 = require("./field-parser");
|
|
109
|
+
const ref_1 = require("./ref");
|
|
108
110
|
const field_parser_2 = require("./field-parser");
|
|
109
111
|
const twin_1 = require("./twin");
|
|
110
112
|
const composition_1 = require("./composition");
|
|
@@ -153,6 +155,10 @@ const parseInstrument = function (id, data) {
|
|
|
153
155
|
measurand: null,
|
|
154
156
|
components: [],
|
|
155
157
|
structure: [],
|
|
158
|
+
// Initialized so the ref fold (docs/primmel/18 §18.4) mirrors the
|
|
159
|
+
// first derives-from block here — the fold only mirrors slots the
|
|
160
|
+
// object already carries.
|
|
161
|
+
source: null,
|
|
156
162
|
};
|
|
157
163
|
const t = (0, tokenize_2.tokenizePackage)(data);
|
|
158
164
|
let i = 0;
|
|
@@ -183,7 +189,12 @@ const parseInstrument = function (id, data) {
|
|
|
183
189
|
result.note = (0, tokenize_2.stripWrapping)(t[i++]);
|
|
184
190
|
}
|
|
185
191
|
else if (cmd === 'source') {
|
|
186
|
-
|
|
192
|
+
// Repeated provenance blocks accumulate; `source` stays the first.
|
|
193
|
+
const src = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
194
|
+
(result.sourceRefs ??= []).push(src);
|
|
195
|
+
if (!result.source) {
|
|
196
|
+
result.source = src;
|
|
197
|
+
}
|
|
187
198
|
}
|
|
188
199
|
else if (cmd === 'variant') {
|
|
189
200
|
const variantId = (0, tokenize_2.stripWrapping)(t[i++]);
|
|
@@ -245,6 +256,18 @@ const parseInstrument = function (id, data) {
|
|
|
245
256
|
else if (fc === 'source') {
|
|
246
257
|
result.familySource = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(ft[j++]));
|
|
247
258
|
}
|
|
259
|
+
else if (fc === 'ref') {
|
|
260
|
+
// The unified typed reference (docs/primmel/18) — the family
|
|
261
|
+
// block's provenance folds onto familySource.
|
|
262
|
+
const rr = (0, ref_1.parseRef)(ft, j, tokenize_2.stripWrapping, tokenize_2.unwrapBlock);
|
|
263
|
+
j = rr.next;
|
|
264
|
+
if (rr.ref.predicate === 'derives-from') {
|
|
265
|
+
const b = (0, ref_1.refTargetToSourceRef)(rr.ref.target);
|
|
266
|
+
if (b && !result.familySource) {
|
|
267
|
+
result.familySource = b;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
248
271
|
else {
|
|
249
272
|
(0, tokenize_2.unwrapBlock)(ft[j++]);
|
|
250
273
|
}
|
|
@@ -276,8 +299,16 @@ const parseInstrument = function (id, data) {
|
|
|
276
299
|
else if (cmd === 'reference') {
|
|
277
300
|
result.referenceIds = readReference(t[i++]);
|
|
278
301
|
}
|
|
302
|
+
else if (cmd === 'ref') {
|
|
303
|
+
// The unified typed reference (docs/primmel/18).
|
|
304
|
+
const rr = (0, ref_1.parseRef)(t, i, tokenize_2.stripWrapping, tokenize_2.unwrapBlock);
|
|
305
|
+
if (!(0, ref_1.foldRefIntoLegacy)(result, rr.ref)) {
|
|
306
|
+
(result.refs ??= []).push(rr.ref);
|
|
307
|
+
}
|
|
308
|
+
i = rr.next;
|
|
309
|
+
}
|
|
279
310
|
else {
|
|
280
|
-
(0,
|
|
311
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
281
312
|
}
|
|
282
313
|
}
|
|
283
314
|
return ctx => {
|
|
@@ -331,7 +362,7 @@ function parseMeasurand(block) {
|
|
|
331
362
|
m.source = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
332
363
|
}
|
|
333
364
|
else {
|
|
334
|
-
(0,
|
|
365
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
335
366
|
}
|
|
336
367
|
}
|
|
337
368
|
return m;
|
|
@@ -361,7 +392,7 @@ function parseComponent(id, block) {
|
|
|
361
392
|
c.source = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
362
393
|
}
|
|
363
394
|
else {
|
|
364
|
-
(0,
|
|
395
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
365
396
|
}
|
|
366
397
|
}
|
|
367
398
|
return c;
|
|
@@ -416,7 +447,7 @@ function parseStructure(id, block) {
|
|
|
416
447
|
s.source = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
417
448
|
}
|
|
418
449
|
else {
|
|
419
|
-
(0,
|
|
450
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
420
451
|
}
|
|
421
452
|
}
|
|
422
453
|
return s;
|
|
@@ -465,7 +496,7 @@ function parseDimension(id, block) {
|
|
|
465
496
|
dim.values = parseDimensionValues((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
466
497
|
}
|
|
467
498
|
else {
|
|
468
|
-
(0,
|
|
499
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
469
500
|
}
|
|
470
501
|
}
|
|
471
502
|
return dim;
|
|
@@ -585,11 +616,23 @@ function parseModelGroup(block) {
|
|
|
585
616
|
else if (cmd === 'source') {
|
|
586
617
|
mg.sources.push((0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++])));
|
|
587
618
|
}
|
|
619
|
+
else if (cmd === 'ref') {
|
|
620
|
+
// The unified typed reference (docs/primmel/18) — a model_group
|
|
621
|
+
// provenance line folds onto the sources list.
|
|
622
|
+
const rr = (0, ref_1.parseRef)(t, i, tokenize_2.stripWrapping, tokenize_2.unwrapBlock);
|
|
623
|
+
i = rr.next;
|
|
624
|
+
if (rr.ref.predicate === 'derives-from') {
|
|
625
|
+
const b = (0, ref_1.refTargetToSourceRef)(rr.ref.target);
|
|
626
|
+
if (b) {
|
|
627
|
+
mg.sources.push(b);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
}
|
|
588
631
|
else if (cmd === 'sample_selection') {
|
|
589
632
|
mg.sampleSelection.push((0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++])));
|
|
590
633
|
}
|
|
591
634
|
else {
|
|
592
|
-
(0,
|
|
635
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
593
636
|
}
|
|
594
637
|
}
|
|
595
638
|
return mg;
|
|
@@ -782,7 +825,11 @@ const dumpInstrument = function (inst) {
|
|
|
782
825
|
if (inst.familyNote) {
|
|
783
826
|
out += ' note "' + (0, tokenize_2.escapeString)(inst.familyNote) + '"\n';
|
|
784
827
|
}
|
|
785
|
-
|
|
828
|
+
if (inst.familySource &&
|
|
829
|
+
(inst.familySource.doc || inst.familySource.clause)) {
|
|
830
|
+
// The canonical provenance spelling (docs/primmel/18 §18.4).
|
|
831
|
+
out += (0, ref_1.dumpSourceRefAsRef)(inst.familySource, ' ', tokenize_2.escapeString);
|
|
832
|
+
}
|
|
786
833
|
out += ' }\n';
|
|
787
834
|
}
|
|
788
835
|
if (inst.familyCriteria.length > 0) {
|
|
@@ -814,14 +861,24 @@ const dumpInstrument = function (inst) {
|
|
|
814
861
|
out += dumpIdList('identical_characteristics', inst.modelGroup.identicalCharacteristics, ' ');
|
|
815
862
|
out += dumpIdList('identical_attributes', inst.modelGroup.identicalAttributes, ' ');
|
|
816
863
|
for (const s of inst.modelGroup.sources ?? []) {
|
|
817
|
-
|
|
864
|
+
// The canonical provenance spelling (docs/primmel/18 §18.4).
|
|
865
|
+
out += (0, ref_1.dumpSourceRefAsRef)(s, ' ', tokenize_2.escapeString);
|
|
818
866
|
}
|
|
819
867
|
for (const s of inst.modelGroup.sampleSelection ?? []) {
|
|
820
868
|
out += dumpSource('sample_selection', s, ' ');
|
|
821
869
|
}
|
|
822
870
|
out += ' }\n';
|
|
823
871
|
}
|
|
824
|
-
|
|
872
|
+
const instSources = inst.sourceRefs && inst.sourceRefs.length > 0
|
|
873
|
+
? inst.sourceRefs
|
|
874
|
+
: inst.source
|
|
875
|
+
? [inst.source]
|
|
876
|
+
: [];
|
|
877
|
+
for (const s of instSources) {
|
|
878
|
+
// The canonical provenance spelling (docs/primmel/18 §18.4).
|
|
879
|
+
out += (0, ref_1.dumpSourceRefAsRef)(s, ' ', tokenize_2.escapeString);
|
|
880
|
+
}
|
|
881
|
+
out += (0, ref_1.dumpRefs)(inst.refs, ' ', tokenize_2.escapeString);
|
|
825
882
|
out += dumpIdList('reference', inst.referenceIds, ' ');
|
|
826
883
|
out += '}\n';
|
|
827
884
|
return out;
|
|
@@ -863,7 +920,13 @@ const parseAttributeDefinition = function (id, data) {
|
|
|
863
920
|
result.definition = (0, tokenize_2.stripWrapping)(t[i++]);
|
|
864
921
|
}
|
|
865
922
|
else if (cmd === 'source' || cmd === 'reference') {
|
|
866
|
-
|
|
923
|
+
// Repeated provenance blocks accumulate; `source` stays the first
|
|
924
|
+
// entry (the requirement family's idiom, TODO.roadmap/24).
|
|
925
|
+
const src = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
926
|
+
(result.sourceRefs ??= []).push(src);
|
|
927
|
+
if (!result.source) {
|
|
928
|
+
result.source = src;
|
|
929
|
+
}
|
|
867
930
|
}
|
|
868
931
|
else if (cmd === 'quantity_kind') {
|
|
869
932
|
result.quantityKind = (0, tokenize_2.stripWrapping)(t[i++]);
|
|
@@ -901,8 +964,16 @@ const parseAttributeDefinition = function (id, data) {
|
|
|
901
964
|
else if (cmd === 'derived') {
|
|
902
965
|
result.derived = (0, tokenize_2.stripWrapping)(t[i++]);
|
|
903
966
|
}
|
|
967
|
+
else if (cmd === 'ref') {
|
|
968
|
+
// The unified typed reference (docs/primmel/18).
|
|
969
|
+
const rr = (0, ref_1.parseRef)(t, i, tokenize_2.stripWrapping, tokenize_2.unwrapBlock);
|
|
970
|
+
if (!(0, ref_1.foldRefIntoLegacy)(result, rr.ref)) {
|
|
971
|
+
(result.refs ??= []).push(rr.ref);
|
|
972
|
+
}
|
|
973
|
+
i = rr.next;
|
|
974
|
+
}
|
|
904
975
|
else {
|
|
905
|
-
(0,
|
|
976
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
906
977
|
}
|
|
907
978
|
}
|
|
908
979
|
return ctx => {
|
|
@@ -921,7 +992,16 @@ const dumpAttributeDefinition = function (a) {
|
|
|
921
992
|
if (a.definition) {
|
|
922
993
|
out += ' definition "' + (0, tokenize_2.escapeString)(a.definition) + '"\n';
|
|
923
994
|
}
|
|
924
|
-
|
|
995
|
+
const attrSources = a.sourceRefs && a.sourceRefs.length > 0
|
|
996
|
+
? a.sourceRefs
|
|
997
|
+
: a.source
|
|
998
|
+
? [a.source]
|
|
999
|
+
: [];
|
|
1000
|
+
for (const s of attrSources) {
|
|
1001
|
+
// The canonical provenance spelling (docs/primmel/18 §18.4).
|
|
1002
|
+
out += (0, ref_1.dumpSourceRefAsRef)(s, ' ', tokenize_2.escapeString);
|
|
1003
|
+
}
|
|
1004
|
+
out += (0, ref_1.dumpRefs)(a.refs, ' ', tokenize_2.escapeString);
|
|
925
1005
|
if (a.quantityKind) {
|
|
926
1006
|
out += ' quantity_kind ' + a.quantityKind + '\n';
|
|
927
1007
|
}
|
|
@@ -1003,8 +1083,16 @@ const parseCapability = function (id, data) {
|
|
|
1003
1083
|
else if (cmd === 'reference') {
|
|
1004
1084
|
result.referenceIds = readReference(t[i++]);
|
|
1005
1085
|
}
|
|
1086
|
+
else if (cmd === 'ref') {
|
|
1087
|
+
// The unified typed reference (docs/primmel/18).
|
|
1088
|
+
const rr = (0, ref_1.parseRef)(t, i, tokenize_2.stripWrapping, tokenize_2.unwrapBlock);
|
|
1089
|
+
if (!(0, ref_1.foldRefIntoLegacy)(result, rr.ref)) {
|
|
1090
|
+
(result.refs ??= []).push(rr.ref);
|
|
1091
|
+
}
|
|
1092
|
+
i = rr.next;
|
|
1093
|
+
}
|
|
1006
1094
|
else {
|
|
1007
|
-
(0,
|
|
1095
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
1008
1096
|
}
|
|
1009
1097
|
}
|
|
1010
1098
|
return ctx => {
|
|
@@ -1029,6 +1117,7 @@ const dumpCapability = function (c) {
|
|
|
1029
1117
|
out += dumpIdList('satisfies_requirements', c.satisfiesRequirements, ' ');
|
|
1030
1118
|
out += dumpIdList('verified_by_tests', c.verifiedByTests, ' ');
|
|
1031
1119
|
out += dumpIdList('reference', c.referenceIds, ' ');
|
|
1120
|
+
out += (0, ref_1.dumpRefs)(c.refs, ' ', tokenize_2.escapeString);
|
|
1032
1121
|
out += '}\n';
|
|
1033
1122
|
return out;
|
|
1034
1123
|
};
|
|
@@ -1060,13 +1149,26 @@ const parseBehavior = function (id, data) {
|
|
|
1060
1149
|
result.response = (0, tokenize_2.stripWrapping)(t[i++]);
|
|
1061
1150
|
}
|
|
1062
1151
|
else if (cmd === 'source' || cmd === 'reference') {
|
|
1063
|
-
|
|
1152
|
+
// Repeated provenance blocks accumulate; `source` stays the first.
|
|
1153
|
+
const src = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
1154
|
+
(result.sourceRefs ??= []).push(src);
|
|
1155
|
+
if (!result.source) {
|
|
1156
|
+
result.source = src;
|
|
1157
|
+
}
|
|
1064
1158
|
}
|
|
1065
1159
|
else if (cmd === 'verified_by' || cmd === 'verified_by_tests') {
|
|
1066
1160
|
result.verifiedBy = readReference(t[i++]);
|
|
1067
1161
|
}
|
|
1162
|
+
else if (cmd === 'ref') {
|
|
1163
|
+
// The unified typed reference (docs/primmel/18).
|
|
1164
|
+
const rr = (0, ref_1.parseRef)(t, i, tokenize_2.stripWrapping, tokenize_2.unwrapBlock);
|
|
1165
|
+
if (!(0, ref_1.foldRefIntoLegacy)(result, rr.ref)) {
|
|
1166
|
+
(result.refs ??= []).push(rr.ref);
|
|
1167
|
+
}
|
|
1168
|
+
i = rr.next;
|
|
1169
|
+
}
|
|
1068
1170
|
else {
|
|
1069
|
-
(0,
|
|
1171
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
1070
1172
|
}
|
|
1071
1173
|
}
|
|
1072
1174
|
return ctx => {
|
|
@@ -1085,7 +1187,16 @@ const dumpBehavior = function (b) {
|
|
|
1085
1187
|
if (b.response) {
|
|
1086
1188
|
out += ' response "' + (0, tokenize_2.escapeString)(b.response) + '"\n';
|
|
1087
1189
|
}
|
|
1088
|
-
|
|
1190
|
+
const behaviorSources = b.sourceRefs && b.sourceRefs.length > 0
|
|
1191
|
+
? b.sourceRefs
|
|
1192
|
+
: b.source
|
|
1193
|
+
? [b.source]
|
|
1194
|
+
: [];
|
|
1195
|
+
for (const s of behaviorSources) {
|
|
1196
|
+
// The canonical provenance spelling (docs/primmel/18 §18.4).
|
|
1197
|
+
out += (0, ref_1.dumpSourceRefAsRef)(s, ' ', tokenize_2.escapeString);
|
|
1198
|
+
}
|
|
1199
|
+
out += (0, ref_1.dumpRefs)(b.refs, ' ', tokenize_2.escapeString);
|
|
1089
1200
|
out += dumpIdList('verified_by', b.verifiedBy, ' ');
|
|
1090
1201
|
out += '}\n';
|
|
1091
1202
|
return out;
|
|
@@ -1127,11 +1238,36 @@ const parseConditionSet = function (id, data) {
|
|
|
1127
1238
|
result.source = src;
|
|
1128
1239
|
}
|
|
1129
1240
|
}
|
|
1241
|
+
else if (cmd === 'ref') {
|
|
1242
|
+
// The unified typed reference (docs/primmel/18): derives-from folds
|
|
1243
|
+
// onto the source/sources provenance channel, cites onto
|
|
1244
|
+
// referenceIds, the rest stay as refs.
|
|
1245
|
+
const rr = (0, ref_1.parseRef)(t, i, tokenize_2.stripWrapping, tokenize_2.unwrapBlock);
|
|
1246
|
+
i = rr.next;
|
|
1247
|
+
if (rr.ref.predicate === 'derives-from') {
|
|
1248
|
+
const b = (0, ref_1.refTargetToSourceRef)(rr.ref.target);
|
|
1249
|
+
if (b) {
|
|
1250
|
+
result.sources.push(b);
|
|
1251
|
+
if (!result.source) {
|
|
1252
|
+
result.source = b;
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
else {
|
|
1256
|
+
(result.refs ??= []).push(rr.ref);
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
else if (rr.ref.predicate === 'cites') {
|
|
1260
|
+
result.referenceIds.push(rr.ref.target);
|
|
1261
|
+
}
|
|
1262
|
+
else {
|
|
1263
|
+
(result.refs ??= []).push(rr.ref);
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1130
1266
|
else if (cmd === 'reference') {
|
|
1131
1267
|
result.referenceIds = readReference(t[i++]);
|
|
1132
1268
|
}
|
|
1133
1269
|
else {
|
|
1134
|
-
(0,
|
|
1270
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
1135
1271
|
}
|
|
1136
1272
|
}
|
|
1137
1273
|
return ctx => {
|
|
@@ -1220,9 +1356,12 @@ const dumpConditionSet = function (cs) {
|
|
|
1220
1356
|
? [cs.source]
|
|
1221
1357
|
: [];
|
|
1222
1358
|
for (const s of sources) {
|
|
1223
|
-
|
|
1359
|
+
// The canonical provenance spelling (docs/primmel/18 §18.4): a
|
|
1360
|
+
// URN-anchored block dumps as a derives-from ref line.
|
|
1361
|
+
out += (0, ref_1.dumpSourceRefAsRef)(s, ' ', tokenize_2.escapeString);
|
|
1224
1362
|
}
|
|
1225
1363
|
out += dumpIdList('reference', cs.referenceIds, ' ');
|
|
1364
|
+
out += (0, ref_1.dumpRefs)(cs.refs, ' ', tokenize_2.escapeString);
|
|
1226
1365
|
out += '}\n';
|
|
1227
1366
|
return out;
|
|
1228
1367
|
};
|
|
@@ -1397,7 +1536,7 @@ function readCharacteristicBlock(block) {
|
|
|
1397
1536
|
c.source = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(t[i++]));
|
|
1398
1537
|
}
|
|
1399
1538
|
else {
|
|
1400
|
-
(0,
|
|
1539
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
1401
1540
|
}
|
|
1402
1541
|
}
|
|
1403
1542
|
return c;
|
|
@@ -1741,7 +1880,7 @@ const parseSubject = function (id, data) {
|
|
|
1741
1880
|
result.referenceIds = readReference(t[i++]);
|
|
1742
1881
|
}
|
|
1743
1882
|
else {
|
|
1744
|
-
(0,
|
|
1883
|
+
i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
|
|
1745
1884
|
}
|
|
1746
1885
|
}
|
|
1747
1886
|
return ctx => {
|