@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.
Files changed (31) hide show
  1. package/dist/src/check-rules.d.ts.map +1 -1
  2. package/dist/src/check-rules.js +11 -1
  3. package/dist/src/check-rules.js.map +1 -1
  4. package/dist/src/check.d.ts.map +1 -1
  5. package/dist/src/check.js +16 -0
  6. package/dist/src/check.js.map +1 -1
  7. package/dist/src/ser-des/config/calculation.d.ts.map +1 -1
  8. package/dist/src/ser-des/config/calculation.js +9 -2
  9. package/dist/src/ser-des/config/calculation.js.map +1 -1
  10. package/dist/src/ser-des/config/field-parser.d.ts.map +1 -1
  11. package/dist/src/ser-des/config/field-parser.js +6 -0
  12. package/dist/src/ser-des/config/field-parser.js.map +1 -1
  13. package/dist/src/ser-des/config/stateMachine.d.ts.map +1 -1
  14. package/dist/src/ser-des/config/stateMachine.js +9 -1
  15. package/dist/src/ser-des/config/stateMachine.js.map +1 -1
  16. package/dist/src/ser-des/config/subject.d.ts.map +1 -1
  17. package/dist/src/ser-des/config/subject.js +17 -0
  18. package/dist/src/ser-des/config/subject.js.map +1 -1
  19. package/dist/src/ser-des/config/symbol.d.ts.map +1 -1
  20. package/dist/src/ser-des/config/symbol.js +14 -2
  21. package/dist/src/ser-des/config/symbol.js.map +1 -1
  22. package/dist/src/ser-des/config/term.d.ts.map +1 -1
  23. package/dist/src/ser-des/config/term.js +6 -0
  24. package/dist/src/ser-des/config/term.js.map +1 -1
  25. package/dist/src/ser-des/index.d.ts +2 -0
  26. package/dist/src/ser-des/index.d.ts.map +1 -1
  27. package/dist/src/ser-des/index.js +13 -1
  28. package/dist/src/ser-des/index.js.map +1 -1
  29. package/dist-browser/index.mjs +459 -441
  30. package/dist-cli/primmel.mjs +48 -5
  31. package/package.json +1 -1
@@ -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
- result.values = tokenizePackage(value());
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 = unwrapBlock(pt[j++]);
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
- out += " initial " + sm.initialState + "\n";
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primmel/primmel",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "description": "Primmel — parser, types, and serializer for the Primmel modelling language (successor to MMEL)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",