@primmel/primmel 1.8.0 → 1.8.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 +11 -1
- package/dist/src/check-rules.js.map +1 -1
- package/dist/src/check.d.ts.map +1 -1
- package/dist/src/check.js +16 -0
- package/dist/src/check.js.map +1 -1
- package/dist/src/ser-des/config/calculation.d.ts.map +1 -1
- package/dist/src/ser-des/config/calculation.js +9 -2
- package/dist/src/ser-des/config/calculation.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 +6 -0
- package/dist/src/ser-des/config/field-parser.js.map +1 -1
- package/dist/src/ser-des/config/stateMachine.d.ts.map +1 -1
- package/dist/src/ser-des/config/stateMachine.js +9 -1
- package/dist/src/ser-des/config/stateMachine.js.map +1 -1
- package/dist/src/ser-des/config/subject.d.ts.map +1 -1
- package/dist/src/ser-des/config/subject.js +17 -0
- 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 +14 -2
- package/dist/src/ser-des/config/symbol.js.map +1 -1
- package/dist/src/ser-des/config/term.d.ts.map +1 -1
- package/dist/src/ser-des/config/term.js +6 -0
- package/dist/src/ser-des/config/term.js.map +1 -1
- package/dist/src/ser-des/index.d.ts +2 -0
- package/dist/src/ser-des/index.d.ts.map +1 -1
- package/dist/src/ser-des/index.js +13 -1
- package/dist/src/ser-des/index.js.map +1 -1
- package/dist-browser/index.mjs +459 -441
- package/dist-cli/primmel.mjs +48 -5
- package/package.json +1 -1
package/dist-cli/primmel.mjs
CHANGED
|
@@ -2045,6 +2045,9 @@ function dumpFormField(field, indent) {
|
|
|
2045
2045
|
if (field.examples) {
|
|
2046
2046
|
inner.push('examples "' + escapeString(field.examples) + '"');
|
|
2047
2047
|
}
|
|
2048
|
+
if (field.bind) {
|
|
2049
|
+
inner.push("bind " + dumpBareSafe(field.bind));
|
|
2050
|
+
}
|
|
2048
2051
|
if (field.required) {
|
|
2049
2052
|
inner.push("required true");
|
|
2050
2053
|
}
|
|
@@ -5082,7 +5085,8 @@ var parseSymbol = function(id, data) {
|
|
|
5082
5085
|
} else if (command === "latex") {
|
|
5083
5086
|
result.latex = unwrapped(value);
|
|
5084
5087
|
} else if (command === "values") {
|
|
5085
|
-
|
|
5088
|
+
const v = value();
|
|
5089
|
+
result.values = v.startsWith("{") ? tokenizePackage(v).map(stripWrapping) : [stripWrapping(v)];
|
|
5086
5090
|
} else if (command === "series") {
|
|
5087
5091
|
result.series = parseSeriesDecl(unwrapBlock(value()));
|
|
5088
5092
|
} else if (command === "kind") {
|
|
@@ -5161,7 +5165,7 @@ var dumpSymbol = function(s) {
|
|
|
5161
5165
|
out += ' latex "' + escapeString(s.latex) + '"\n';
|
|
5162
5166
|
}
|
|
5163
5167
|
if (s.values.length > 0) {
|
|
5164
|
-
out += " values " + s.values.join(" ") + "\n";
|
|
5168
|
+
out += " values { " + s.values.map(dumpBareSafe).join(" ") + " }\n";
|
|
5165
5169
|
}
|
|
5166
5170
|
if (s.series) {
|
|
5167
5171
|
out += " " + dumpSeriesDecl(s.series) + "\n";
|
|
@@ -5360,7 +5364,7 @@ function parseInputs(block) {
|
|
|
5360
5364
|
} else if (cmd === "description") {
|
|
5361
5365
|
description = unwrapBlock(pt[j++]);
|
|
5362
5366
|
} else if (cmd === "default") {
|
|
5363
|
-
defaultValue =
|
|
5367
|
+
defaultValue = stripWrapping(pt[j++]);
|
|
5364
5368
|
hasDefault = true;
|
|
5365
5369
|
} else if (cmd === "enum_values") {
|
|
5366
5370
|
enumValues = tokenizePackage(unwrapBlock(pt[j++]));
|
|
@@ -5494,7 +5498,7 @@ var dumpCalculation = function(c) {
|
|
|
5494
5498
|
line += ' description "' + escapeString(inp.description) + '"';
|
|
5495
5499
|
}
|
|
5496
5500
|
if (inp.hasDefault) {
|
|
5497
|
-
line += " default " + inp.defaultValue;
|
|
5501
|
+
line += " default " + dumpBareSafe(inp.defaultValue);
|
|
5498
5502
|
}
|
|
5499
5503
|
if (inp.enumValues && inp.enumValues.length > 0) {
|
|
5500
5504
|
line += " enum_values { " + inp.enumValues.join(" ") + " }";
|
|
@@ -5763,7 +5767,9 @@ var dumpStateMachine = function(sm) {
|
|
|
5763
5767
|
if (sm.kind === "operational") {
|
|
5764
5768
|
out += " kind operational\n";
|
|
5765
5769
|
}
|
|
5766
|
-
|
|
5770
|
+
if (sm.initialState) {
|
|
5771
|
+
out += " initial " + sm.initialState + "\n";
|
|
5772
|
+
}
|
|
5767
5773
|
if (sm.states.length > 0) {
|
|
5768
5774
|
out += " states {\n";
|
|
5769
5775
|
for (const s of sm.states) {
|
|
@@ -7804,6 +7810,9 @@ var dumpTerm = function(term) {
|
|
|
7804
7810
|
if (term.source) {
|
|
7805
7811
|
out += ' source "' + escapeString(term.source) + '"\n';
|
|
7806
7812
|
}
|
|
7813
|
+
if (term.overlay) {
|
|
7814
|
+
out += " overlay true\n";
|
|
7815
|
+
}
|
|
7807
7816
|
if (term.scopeNote) {
|
|
7808
7817
|
out += ' scope_note "' + escapeString(term.scopeNote) + '"\n';
|
|
7809
7818
|
}
|
|
@@ -10593,6 +10602,9 @@ var dumpAttributeDefinition = function(a) {
|
|
|
10593
10602
|
for (const s of attrSources) {
|
|
10594
10603
|
out += dumpSourceRefAsRef(s, " ", escapeString);
|
|
10595
10604
|
}
|
|
10605
|
+
for (const rid of a.referenceIds) {
|
|
10606
|
+
out += ' ref cites "' + escapeString(rid) + '"\n';
|
|
10607
|
+
}
|
|
10596
10608
|
out += dumpRefs(a.refs, " ", escapeString);
|
|
10597
10609
|
out += dumpCorrespondences(
|
|
10598
10610
|
a.correspondences,
|
|
@@ -10624,12 +10636,18 @@ var dumpAttributeDefinition = function(a) {
|
|
|
10624
10636
|
if (a.enumRef) {
|
|
10625
10637
|
out += " enum " + a.enumRef + "\n";
|
|
10626
10638
|
}
|
|
10639
|
+
if (a.enumValues && a.enumValues.length > 0) {
|
|
10640
|
+
out += " enum_values { " + a.enumValues.map(dumpBareSafe).join(" ") + " }\n";
|
|
10641
|
+
}
|
|
10627
10642
|
if (a.irdi) {
|
|
10628
10643
|
out += ' irdi "' + escapeString(a.irdi) + '"\n';
|
|
10629
10644
|
}
|
|
10630
10645
|
if (a.derived) {
|
|
10631
10646
|
out += ' derived "' + escapeString(a.derived) + '"\n';
|
|
10632
10647
|
}
|
|
10648
|
+
if (a.note) {
|
|
10649
|
+
out += ' note "' + escapeString(a.note) + '"\n';
|
|
10650
|
+
}
|
|
10633
10651
|
out += "}\n";
|
|
10634
10652
|
return out;
|
|
10635
10653
|
};
|
|
@@ -16748,6 +16766,23 @@ var CHECK_RULES = [
|
|
|
16748
16766
|
"error",
|
|
16749
16767
|
"normal",
|
|
16750
16768
|
"TODO.primmel/10, MN 114 clause 19.4"
|
|
16769
|
+
),
|
|
16770
|
+
// ── C109: state-machine-initial-present (the editor wave-03 finding,
|
|
16771
|
+
// primmel/editor#19) ──
|
|
16772
|
+
// The spec's state machine syntax marks `initial` required (the
|
|
16773
|
+
// starting state for new entities). The parser stays total (a machine
|
|
16774
|
+
// without the line loads with initialState '') and the serializer
|
|
16775
|
+
// stays honest (it omits the line — never the dangling keyword that
|
|
16776
|
+
// reparsed as `initial states`), so the refusal lives HERE, at the
|
|
16777
|
+
// language's own validation layer — the C95 contract-ownership
|
|
16778
|
+
// doctrine.
|
|
16779
|
+
R(
|
|
16780
|
+
"C109",
|
|
16781
|
+
"state-machine-initial-present",
|
|
16782
|
+
"state",
|
|
16783
|
+
"error",
|
|
16784
|
+
"normal",
|
|
16785
|
+
"spec sources/state-machines \xA72 (initial: Required), primmel/editor#19 (wave-03 findings)"
|
|
16751
16786
|
)
|
|
16752
16787
|
];
|
|
16753
16788
|
var byId = new Map(CHECK_RULES.map((r) => [r.id, r]));
|
|
@@ -20387,6 +20422,14 @@ function checkPackage(dir, options = {}) {
|
|
|
20387
20422
|
const machineById = new Map(
|
|
20388
20423
|
(standard.stateMachines ?? []).map((sm) => [sm.entityName, sm])
|
|
20389
20424
|
);
|
|
20425
|
+
for (const sm of standard.stateMachines ?? []) {
|
|
20426
|
+
if (!sm.initialState) {
|
|
20427
|
+
err(
|
|
20428
|
+
"C109",
|
|
20429
|
+
`state_machine ${sm.entityName}: declares no initial state \u2014 initial is required (state-machine-initial-present)`
|
|
20430
|
+
);
|
|
20431
|
+
}
|
|
20432
|
+
}
|
|
20390
20433
|
const operationalIds = new Set(
|
|
20391
20434
|
(standard.stateMachines ?? []).filter((sm) => sm.kind === "operational").map((sm) => sm.entityName)
|
|
20392
20435
|
);
|
package/package.json
CHANGED