@milehimikey/em 1.7.2 → 1.8.1
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/.claude/skills/event-modeling/SKILL.md +92 -65
- package/.claude/skills/event-modeling/reference/conform.md +45 -20
- package/.claude/skills/event-modeling/reference/em-dsl.md +132 -55
- package/.claude/skills/event-modeling/reference/extract.md +5 -4
- package/.claude/skills/event-modeling/reference/implement.md +34 -22
- package/.claude/skills/event-modeling/templates/model-readme.md +8 -5
- package/.claude/skills/event-modeling/templates/slice.md +19 -5
- package/README.md +6 -4
- package/dist/catalog/docJoin.d.ts +28 -3
- package/dist/catalog/docJoin.js +82 -13
- package/dist/catalog/docJoin.js.map +1 -1
- package/dist/catalog/docModelConsistencyValidate.d.ts +8 -0
- package/dist/catalog/docModelConsistencyValidate.js +335 -0
- package/dist/catalog/docModelConsistencyValidate.js.map +1 -0
- package/dist/catalog/noteBindingValidate.d.ts +8 -0
- package/dist/catalog/noteBindingValidate.js +133 -0
- package/dist/catalog/noteBindingValidate.js.map +1 -0
- package/dist/catalog/pages.js +3 -3
- package/dist/catalog/pages.js.map +1 -1
- package/dist/catalog/sliceDoc.d.ts +14 -0
- package/dist/catalog/sliceDoc.js +22 -0
- package/dist/catalog/sliceDoc.js.map +1 -1
- package/dist/catalog/sliceReadyValidate.d.ts +18 -0
- package/dist/catalog/sliceReadyValidate.js +25 -1
- package/dist/catalog/sliceReadyValidate.js.map +1 -1
- package/dist/cli/agentsMd.d.ts +15 -0
- package/dist/cli/agentsMd.js +72 -0
- package/dist/cli/agentsMd.js.map +1 -0
- package/dist/cli/conformScope.d.ts +86 -0
- package/dist/cli/conformScope.js +156 -0
- package/dist/cli/conformScope.js.map +1 -0
- package/dist/cli/contract.d.ts +7 -0
- package/dist/cli/contract.js +27 -0
- package/dist/cli/contract.js.map +1 -0
- package/dist/cli/coverage.d.ts +71 -0
- package/dist/cli/coverage.js +177 -0
- package/dist/cli/coverage.js.map +1 -0
- package/dist/cli/markImplemented.d.ts +34 -0
- package/dist/cli/markImplemented.js +180 -0
- package/dist/cli/markImplemented.js.map +1 -0
- package/dist/cli/migrateReactionShape.d.ts +62 -0
- package/dist/cli/migrateReactionShape.js +283 -0
- package/dist/cli/migrateReactionShape.js.map +1 -0
- package/dist/cli/sliceIndex.d.ts +49 -0
- package/dist/cli/sliceIndex.js +115 -0
- package/dist/cli/sliceIndex.js.map +1 -0
- package/dist/cli/sliceNew.d.ts +18 -0
- package/dist/cli/sliceNew.js +53 -0
- package/dist/cli/sliceNew.js.map +1 -0
- package/dist/cli/stateFile.d.ts +74 -0
- package/dist/cli/stateFile.js +191 -0
- package/dist/cli/stateFile.js.map +1 -0
- package/dist/cli.js +535 -43
- package/dist/cli.js.map +1 -1
- package/dist/emit/coverageJson.d.ts +8 -0
- package/dist/emit/coverageJson.js +30 -0
- package/dist/emit/coverageJson.js.map +1 -0
- package/dist/emit/diffJson.d.ts +9 -1
- package/dist/emit/diffJson.js +44 -1
- package/dist/emit/diffJson.js.map +1 -1
- package/dist/emit/dot.js +41 -10
- package/dist/emit/dot.js.map +1 -1
- package/dist/emit/json.d.ts +77 -4
- package/dist/emit/json.js +78 -4
- package/dist/emit/json.js.map +1 -1
- package/dist/emit/validateJson.d.ts +52 -0
- package/dist/emit/validateJson.js +120 -0
- package/dist/emit/validateJson.js.map +1 -0
- package/dist/mcp/main.d.ts +2 -0
- package/dist/mcp/main.js +20 -0
- package/dist/mcp/main.js.map +1 -0
- package/dist/mcp/server.d.ts +11 -0
- package/dist/mcp/server.js +260 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/model/model.d.ts +30 -1
- package/dist/model/model.js +26 -0
- package/dist/model/model.js.map +1 -1
- package/dist/model/rules.d.ts +114 -0
- package/dist/model/rules.js +116 -4
- package/dist/model/rules.js.map +1 -1
- package/dist/model/validate.js +92 -8
- package/dist/model/validate.js.map +1 -1
- package/dist/parser/ast.d.ts +47 -0
- package/dist/parser/lexer.d.ts +16 -0
- package/dist/parser/lexer.js +44 -2
- package/dist/parser/lexer.js.map +1 -1
- package/dist/parser/parser.js +354 -20
- package/dist/parser/parser.js.map +1 -1
- package/dist/render/drawNotes.d.ts +11 -1
- package/dist/render/drawNotes.js +28 -3
- package/dist/render/drawNotes.js.map +1 -1
- package/dist/render/render.js +116 -23
- package/dist/render/render.js.map +1 -1
- package/dist/render/serve.d.ts +4 -0
- package/dist/render/serve.js +27 -239
- package/dist/render/serve.js.map +1 -1
- package/dist/render/sliceOverlay.d.ts +7 -2
- package/dist/render/sliceOverlay.js +19 -7
- package/dist/render/sliceOverlay.js.map +1 -1
- package/dist/render/sliceStatus.d.ts +7 -3
- package/dist/render/sliceStatus.js +48 -12
- package/dist/render/sliceStatus.js.map +1 -1
- package/dist/render/viewerHtml.d.ts +1 -0
- package/dist/render/viewerHtml.js +5 -0
- package/dist/render/viewerHtml.js.map +1 -0
- package/dist/render/watch.d.ts +10 -0
- package/dist/render/watch.js +29 -0
- package/dist/render/watch.js.map +1 -1
- package/dist/templates.d.ts +20 -1
- package/dist/templates.js +172 -3
- package/dist/templates.js.map +1 -1
- package/dist/util/markers.d.ts +13 -0
- package/dist/util/markers.js +30 -0
- package/dist/util/markers.js.map +1 -0
- package/dist/util/walkDir.d.ts +10 -1
- package/dist/util/walkDir.js +11 -7
- package/dist/util/walkDir.js.map +1 -1
- package/package.json +12 -3
- package/.claude/skills/event-modeling/templates/live.html +0 -117
package/dist/parser/parser.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// arrow <From Element> -> <To Element>
|
|
17
17
|
// type "Name" { field: Type, ... }
|
|
18
18
|
import { AUTOMATION_KINDS, } from "./ast.js";
|
|
19
|
-
import { decodeQuoted, hasUnterminatedQuote, indexOfUnquoted, lastIndexOfUnquoted, matchQuote, splitQuotedList, stripComment, unquote, } from "./lexer.js";
|
|
19
|
+
import { decodeQuoted, hasUnterminatedQuote, indexOfUnquoted, lastIndexOfUnquoted, matchQuote, splitQuotedList, splitTopLevel, stripComment, unquote, } from "./lexer.js";
|
|
20
20
|
export class ParseError extends Error {
|
|
21
21
|
line;
|
|
22
22
|
constructor(message, line) {
|
|
@@ -89,21 +89,54 @@ export function parse(source) {
|
|
|
89
89
|
}
|
|
90
90
|
throw new ParseError("unexpected '}'", lineNo);
|
|
91
91
|
}
|
|
92
|
-
// Inside an open field block: each line is a field declaration
|
|
92
|
+
// Inside an open field block: each line is a field declaration — except a line that is
|
|
93
|
+
// itself an element-level `tag <key> from …`/`tag <key> external "…` clause, which reads
|
|
94
|
+
// as a standalone `tag` line's canonical position (after the event's closing `}`, MIL-66)
|
|
95
|
+
// and would otherwise be silently swallowed as junk fields (e.g. a bare identifier list
|
|
96
|
+
// parsed as one-field-per-name) with no diagnostic at all.
|
|
93
97
|
if (currentElement) {
|
|
94
|
-
|
|
98
|
+
if (isTagClauseLineShape(line)) {
|
|
99
|
+
throw new ParseError(currentElement.kind === "event"
|
|
100
|
+
? "a `tag` clause belongs after the event's closing '}', not inside its field block " +
|
|
101
|
+
"— move this line below the '}'"
|
|
102
|
+
: "`tag` is only valid on event — identity/composite/external tags describe an " +
|
|
103
|
+
`event's DCB tag, not a ${currentElement.kind} field`, lineNo);
|
|
104
|
+
}
|
|
105
|
+
for (const f of parseInlineFields(line, lineNo, currentElement.kind))
|
|
95
106
|
(currentElement.fields ??= []).push(f);
|
|
96
107
|
continue;
|
|
97
108
|
}
|
|
98
|
-
// Inside an open `type` block: each line is a field declaration too
|
|
109
|
+
// Inside an open `type` block: each line is a field declaration too, with the same guard —
|
|
110
|
+
// `tag` is events-only, so a `type` block never has a legal position for it at all.
|
|
99
111
|
if (currentTypeDecl) {
|
|
100
|
-
|
|
112
|
+
if (isTagClauseLineShape(line)) {
|
|
113
|
+
throw new ParseError("`tag` is only valid on event — identity/composite/external tags describe an event's " +
|
|
114
|
+
"DCB tag, not a type field", lineNo);
|
|
115
|
+
}
|
|
116
|
+
currentTypeDecl.fields.push(...parseInlineFields(line, lineNo, "type-decl"));
|
|
101
117
|
continue;
|
|
102
118
|
}
|
|
103
119
|
const [keyword, ...rest] = splitFirstWord(line);
|
|
104
120
|
const remainder = rest.join(" ").trim();
|
|
105
|
-
// Inside a slice: only element declarations are allowed
|
|
121
|
+
// Inside a slice: only element declarations are allowed, plus a standalone `tag ...` line
|
|
122
|
+
// (MIL-66's canonical form), which attaches to the most recently declared element rather
|
|
123
|
+
// than opening one of its own. Checked before the element-keyword gate below since `tag`
|
|
124
|
+
// is not itself an ELEMENT_KEYWORD.
|
|
106
125
|
if (currentSlice) {
|
|
126
|
+
if (keyword === "tag") {
|
|
127
|
+
const target = currentSlice.elements[currentSlice.elements.length - 1];
|
|
128
|
+
if (!target) {
|
|
129
|
+
throw new ParseError("a standalone `tag` line must follow an event declared earlier in this slice", lineNo);
|
|
130
|
+
}
|
|
131
|
+
if (target.kind !== "event") {
|
|
132
|
+
throw new ParseError(`a standalone \`tag\` line must follow an event — "${target.name}" is a ${target.kind}`, lineNo);
|
|
133
|
+
}
|
|
134
|
+
const leftover = extractTagClauses(target, `tag ${remainder}`, lineNo);
|
|
135
|
+
if (leftover) {
|
|
136
|
+
throw new ParseError(`unrecognized trailing text in 'tag' clause: '${leftover}'`, lineNo);
|
|
137
|
+
}
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
107
140
|
if (!ELEMENT_KEYWORDS.has(keyword)) {
|
|
108
141
|
throw new ParseError(`'${keyword}' is not valid inside a slice (expected ui/command/view/event/automation/processor/saga/translation or '}')`, lineNo);
|
|
109
142
|
}
|
|
@@ -118,7 +151,7 @@ export function parse(source) {
|
|
|
118
151
|
const after = remainder.slice(braceAt + 1);
|
|
119
152
|
const closeAt = indexOfUnquoted(after, "}");
|
|
120
153
|
const inner = closeAt >= 0 ? after.slice(0, closeAt) : after;
|
|
121
|
-
el.fields.push(...parseInlineFields(inner));
|
|
154
|
+
el.fields.push(...parseInlineFields(inner, lineNo, el.kind));
|
|
122
155
|
if (closeAt < 0) {
|
|
123
156
|
currentElement = el; // block stays open across lines
|
|
124
157
|
}
|
|
@@ -188,7 +221,7 @@ export function parse(source) {
|
|
|
188
221
|
const after = remainder.slice(braceAt + 1);
|
|
189
222
|
const closeAt = indexOfUnquoted(after, "}");
|
|
190
223
|
const inner = closeAt >= 0 ? after.slice(0, closeAt) : after;
|
|
191
|
-
decl.fields.push(...parseInlineFields(inner));
|
|
224
|
+
decl.fields.push(...parseInlineFields(inner, lineNo, "type-decl"));
|
|
192
225
|
if (closeAt < 0) {
|
|
193
226
|
currentTypeDecl = decl; // block stays open across lines
|
|
194
227
|
}
|
|
@@ -226,6 +259,39 @@ function parseElement(kind, raw, line) {
|
|
|
226
259
|
throw new ParseError(`${kind} requires a name`, line);
|
|
227
260
|
return node;
|
|
228
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Pulls a `keyword "A", "B", ...` clause out of `rest`: `keywordPattern` (a regex source
|
|
264
|
+
* fragment, e.g. `renamed\\s+from`) must be immediately followed by an opening quote, then a
|
|
265
|
+
* quoted item, optionally followed by `,` + another quoted item, repeated for as many items as
|
|
266
|
+
* are actually there. Unlike `extractQuotedClause`, this is deliberately NOT greedy to
|
|
267
|
+
* end-of-line: it stops consuming as soon as the text after a closing quote isn't `, "` — so a
|
|
268
|
+
* trailing `@Tag`/`public`/`{ … }` on the same line is left in `rest` for its own clause to
|
|
269
|
+
* find (MIL-68's `renamed from "Old" @Payment { … }` needs the list to end cleanly before
|
|
270
|
+
* `@Payment`). `keywordLabel` is the human-readable name used in the unterminated-string error.
|
|
271
|
+
* Returns `null` if `keywordPattern` isn't immediately followed by a quote (clause absent).
|
|
272
|
+
*/
|
|
273
|
+
function extractQuotedListClause(rest, keywordPattern, keywordLabel, line) {
|
|
274
|
+
const kwMatch = rest.match(new RegExp(`(?:^|\\s)${keywordPattern}\\s+(?=")`));
|
|
275
|
+
if (!kwMatch || kwMatch.index === undefined)
|
|
276
|
+
return null;
|
|
277
|
+
let idx = kwMatch.index + kwMatch[0].length;
|
|
278
|
+
const values = [];
|
|
279
|
+
for (;;) {
|
|
280
|
+
const close = matchQuote(rest, idx);
|
|
281
|
+
if (close < 0)
|
|
282
|
+
throw new ParseError(`unterminated string literal in '${keywordLabel}' clause`, line);
|
|
283
|
+
values.push(decodeQuoted(rest.slice(idx + 1, close)));
|
|
284
|
+
idx = close + 1;
|
|
285
|
+
const commaMatch = rest.slice(idx).match(/^\s*,\s*(?=")/);
|
|
286
|
+
if (!commaMatch)
|
|
287
|
+
break;
|
|
288
|
+
idx += commaMatch[0].length;
|
|
289
|
+
}
|
|
290
|
+
return {
|
|
291
|
+
values,
|
|
292
|
+
rest: (rest.slice(0, kwMatch.index) + rest.slice(idx)).trim(),
|
|
293
|
+
};
|
|
294
|
+
}
|
|
229
295
|
/**
|
|
230
296
|
* Pulls a `keyword "value"` clause out of `rest`, case-insensitively, honouring
|
|
231
297
|
* `\"`/`\\` escapes inside the string (decoded in the returned `value`) and a
|
|
@@ -288,6 +354,28 @@ function extractClauses(node, raw, line) {
|
|
|
288
354
|
node.divergence = divergenceClause.value;
|
|
289
355
|
rest = divergenceClause.rest;
|
|
290
356
|
}
|
|
357
|
+
// Element-level `tag` clause(s) (event only, MIL-66): `tag <key> from a, b` (composite) or
|
|
358
|
+
// `tag <key> external "text"` (external). Extracted before `from` below — though the two
|
|
359
|
+
// never actually collide (this `from` is an unquoted bare-identifier list, the view/reaction
|
|
360
|
+
// `from` below requires a quote immediately after — see `extractTagClauses`) — so both belong
|
|
361
|
+
// in this same note/issue/divergence "extract before `from`" cluster. May match more than
|
|
362
|
+
// once: `tag` clauses accumulate, unlike every other clause here.
|
|
363
|
+
rest = extractTagClauses(node, rest, line);
|
|
364
|
+
// `renamed from "Old1", "Old2"` clause (event or command only, MIL-68): the prior name(s)
|
|
365
|
+
// this element was known as, for payload-conversion codegen. Extracted here, before the
|
|
366
|
+
// plain `from` clause below, because `renamed from` itself ends in the word `from` — the
|
|
367
|
+
// general clause's `from\s+(?=")` regex would otherwise match the `from "..."` inside this
|
|
368
|
+
// one's own text. Non-greedy (see `extractQuotedListClause`), so a trailing `@Context`/
|
|
369
|
+
// `public`/`{ … }` on the same header line is untouched. `em diff` deliberately does not
|
|
370
|
+
// read this — it stays remove+add, no-inference (see docs/dsl.md).
|
|
371
|
+
const renamedFromClause = extractQuotedListClause(rest, "renamed\\s+from", "renamed from", line);
|
|
372
|
+
if (renamedFromClause) {
|
|
373
|
+
if (node.kind !== "event" && node.kind !== "command")
|
|
374
|
+
throw new ParseError("`renamed from` is only valid on event or command — only elements with a wire/API " +
|
|
375
|
+
"identity can be renamed", line);
|
|
376
|
+
node.renamedFrom = renamedFromClause.values;
|
|
377
|
+
rest = renamedFromClause.rest;
|
|
378
|
+
}
|
|
291
379
|
// `from "A", "B"` clause (views and reactions). The keyword is case-sensitive
|
|
292
380
|
// and its operand must open with a quote, so a capitalized `From` — or a bare
|
|
293
381
|
// lowercase `from` — inside an element name (`event Widget Removed From
|
|
@@ -355,27 +443,273 @@ function extractClauses(node, raw, line) {
|
|
|
355
443
|
}
|
|
356
444
|
return rest;
|
|
357
445
|
}
|
|
358
|
-
/**
|
|
359
|
-
|
|
446
|
+
/** Bare-identifier grammar shared by every element-level `tag` clause: the composite/external
|
|
447
|
+
* tag key itself, and each field name in a composite tag's field list. */
|
|
448
|
+
const TAG_IDENT = "[A-Za-z_][A-Za-z0-9_]*";
|
|
449
|
+
/** Matches an element-level composite tag clause, `tag <key> from a, b[, c …]`, anywhere in a
|
|
450
|
+
* clause-text string — group 1 is the key, group 2 the raw (still comma-joined) field list.
|
|
451
|
+
* The key is constrained to `TAG_IDENT`, not `\S+`: a quoted or punctuated key (`tag "x" from
|
|
452
|
+
* a, b`, `tag pro-duct from a, b`) must never silently match with the junk folded into the
|
|
453
|
+
* exported key — see `TAG_CLAUSE_LEFTOVER_RE` below. Shared between `extractTagClauses` (which
|
|
454
|
+
* matches anywhere via the `(?:^|\s)` alternation) and `isTagClauseLineShape` (which requires
|
|
455
|
+
* the match to start at index 0) so both recognize the exact same clause shape. */
|
|
456
|
+
const TAG_COMPOSITE_RE = new RegExp(`(?:^|\\s)tag\\s+(${TAG_IDENT})\\s+from\\s+(${TAG_IDENT}(?:\\s*,\\s*${TAG_IDENT})*)`);
|
|
457
|
+
/** Matches an element-level external tag clause, `tag <key> external "…`, anywhere in a
|
|
458
|
+
* clause-text string, up to (not including) the opening quote — same key constraint and
|
|
459
|
+
* sharing rationale as `TAG_COMPOSITE_RE`. */
|
|
460
|
+
const TAG_EXTERNAL_RE = new RegExp(`(?:^|\\s)tag\\s+(${TAG_IDENT})\\s+external\\s+(?=")`);
|
|
461
|
+
/** Catches a malformed tag key — quoted, punctuated, or otherwise not a bare identifier — that
|
|
462
|
+
* `TAG_COMPOSITE_RE`/`TAG_EXTERNAL_RE` deliberately never match, so it would otherwise sit
|
|
463
|
+
* unmentioned in a clause's leftover text (silently folding into the element's free-text name,
|
|
464
|
+
* or surfacing only as a confusing downstream "unrecognized trailing text"). Checked once,
|
|
465
|
+
* after `extractTagClauses`'s extraction loop has taken everything a well-formed clause could
|
|
466
|
+
* give it: anything still shaped like `tag <junk> from …`/`tag <junk> external …` at that point
|
|
467
|
+
* can only be a malformed key. */
|
|
468
|
+
const TAG_CLAUSE_LEFTOVER_RE = /(?:^|\s)tag\s+\S+\s+(?:from\b|external\b)/;
|
|
469
|
+
/** True when `line` — already trimmed, the full text of one field-block line — OPENS with an
|
|
470
|
+
* element-level `tag <key> from …`/`tag <key> external "…` clause shape. Used to reject a
|
|
471
|
+
* standalone element-level tag line written INSIDE an open element/type field block (MIL-66's
|
|
472
|
+
* canonical standalone form only follows the event's closing `}`, at the slice level, or
|
|
473
|
+
* trails an inline block on the same line) instead of silently swallowing it as junk fields.
|
|
474
|
+
* Anchored to the START of `line` — unlike `extractTagClauses`'s `(?:^|\s)` match-anywhere,
|
|
475
|
+
* which is right for scanning trailing clause text — so a field merely NAMED `tag` (bare
|
|
476
|
+
* `tag`, `tag: UUID`) or a field like `tagline: string` never trips this: neither has the
|
|
477
|
+
* clause shape starting at position 0. */
|
|
478
|
+
function isTagClauseLineShape(line) {
|
|
479
|
+
const c = line.match(TAG_COMPOSITE_RE);
|
|
480
|
+
if (c && c.index === 0)
|
|
481
|
+
return true;
|
|
482
|
+
const e = line.match(TAG_EXTERNAL_RE);
|
|
483
|
+
return !!e && e.index === 0;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Pulls every element-level `tag <key> from a, b` (composite) or `tag <key> external "text"`
|
|
487
|
+
* (external) clause out of `raw`, in a loop — `tag` clauses accumulate, unlike every other
|
|
488
|
+
* clause `extractClauses` handles. Applies each to `node.tags` and returns whatever text is
|
|
489
|
+
* left. Events only (event or nothing — same posture as the `public` kind check above); a
|
|
490
|
+
* non-event `node` throws as soon as a `tag` clause is actually found, so an element that
|
|
491
|
+
* merely has "tag" nowhere in its trailing text pays no penalty.
|
|
492
|
+
*
|
|
493
|
+
* Shared by `extractClauses` (the trailing-clause position, on the header line, after an
|
|
494
|
+
* inline `{ … }` block, or on a multi-line block's closing `}` line) and the standalone
|
|
495
|
+
* `tag ...` line handler in `parse()` (which prepends the literal `"tag "` back on before
|
|
496
|
+
* calling this, so both entry points share one matcher/error-message implementation).
|
|
497
|
+
*
|
|
498
|
+
* The composite field list is a bounded bare-identifier grammar (`a`, `a, b`, `a, b, c`, …),
|
|
499
|
+
* not "everything to end of line" the way the quoted `from`/`note`/etc. clauses are — so a
|
|
500
|
+
* `tag` clause never has to be the line's last token; a trailing `public`/`@Context`/etc.
|
|
501
|
+
* simply isn't valid identifier-list syntax and is left for those clauses to find afterward.
|
|
502
|
+
*/
|
|
503
|
+
function extractTagClauses(node, raw, line) {
|
|
504
|
+
let rest = raw;
|
|
505
|
+
for (;;) {
|
|
506
|
+
const cMatch = rest.match(TAG_COMPOSITE_RE);
|
|
507
|
+
const eMatch = rest.match(TAG_EXTERNAL_RE);
|
|
508
|
+
let which = null;
|
|
509
|
+
if (cMatch && eMatch)
|
|
510
|
+
which = (cMatch.index ?? 0) <= (eMatch.index ?? 0) ? "composite" : "external";
|
|
511
|
+
else if (cMatch)
|
|
512
|
+
which = "composite";
|
|
513
|
+
else if (eMatch)
|
|
514
|
+
which = "external";
|
|
515
|
+
if (!which)
|
|
516
|
+
break;
|
|
517
|
+
if (node.kind !== "event") {
|
|
518
|
+
throw new ParseError("`tag` is only valid on event — identity/composite/external tags describe an event's " +
|
|
519
|
+
"DCB tag, not a command/view/ui", line);
|
|
520
|
+
}
|
|
521
|
+
if (which === "composite") {
|
|
522
|
+
const m = cMatch;
|
|
523
|
+
const key = m[1];
|
|
524
|
+
const fields = m[2].split(",").map((s) => s.trim());
|
|
525
|
+
if (fields.length < 2)
|
|
526
|
+
throw new ParseError(`tag "${key}": a composite tag needs at least 2 fields (got ${fields.length})`, line);
|
|
527
|
+
(node.tags ??= []).push({ key, kind: "composite", fields, line });
|
|
528
|
+
rest = (rest.slice(0, m.index) + rest.slice((m.index ?? 0) + m[0].length)).trim();
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
const m = eMatch;
|
|
532
|
+
const key = m[1];
|
|
533
|
+
const openIdx = (m.index ?? 0) + m[0].length;
|
|
534
|
+
const closeIdx = matchQuote(rest, openIdx);
|
|
535
|
+
if (closeIdx < 0)
|
|
536
|
+
throw new ParseError(`unterminated string literal in tag "${key}" external clause`, line);
|
|
537
|
+
const description = decodeQuoted(rest.slice(openIdx + 1, closeIdx));
|
|
538
|
+
(node.tags ??= []).push({ key, kind: "external", description, line });
|
|
539
|
+
rest = (rest.slice(0, m.index) + rest.slice(closeIdx + 1)).trim();
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
if (TAG_CLAUSE_LEFTOVER_RE.test(rest)) {
|
|
543
|
+
throw new ParseError("a `tag` clause's key must be a bare identifier (letters, digits, underscore) — " +
|
|
544
|
+
"quoted or punctuated keys aren't supported", line);
|
|
545
|
+
}
|
|
546
|
+
return rest;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Pulls recognized trailing clauses off one field spec's raw text (a single comma-separated
|
|
550
|
+
* entry from a `{ … }` block's inner text, BEFORE the `name`/`name: Type` split — a clause
|
|
551
|
+
* trails the type, or the bare name for a typeless field). Returns the leftover text (still to
|
|
552
|
+
* be split on `:`) plus whatever clauses were found.
|
|
553
|
+
*
|
|
554
|
+
* The reusable field-level counterpart to `extractClauses` (element-level) — kept a separate
|
|
555
|
+
* step from the name/type split below so a second field clause slots in as a new case here
|
|
556
|
+
* instead of a restructure. `context` is the enclosing block's element kind (or `"type-decl"`);
|
|
557
|
+
* a clause legal only on certain kinds throws a ParseError naming the actual context, mirroring
|
|
558
|
+
* `extractClauses`'s per-clause kind checks.
|
|
559
|
+
*
|
|
560
|
+
* Anchored as a genuinely TRAILING word requiring non-blank content before it (`/^(.*\S)\s+tag$/`)
|
|
561
|
+
* so a field literally NAMED `tag` (bare `tag`, or `tag: UUID`) is a field declaration, never a
|
|
562
|
+
* clause — the text "tag" alone can't satisfy "something, then whitespace, then tag" against
|
|
563
|
+
* itself. Same discipline `extractClauses` uses for `public`/`again` against a same-named
|
|
564
|
+
* element.
|
|
565
|
+
*
|
|
566
|
+
* Runs as a fixpoint loop over all clauses so `tag`, `renamed from`, and `assigned` may trail a
|
|
567
|
+
* field in ANY order (`paymentId: UUID renamed from "id" tag` and `paymentId: UUID tag renamed
|
|
568
|
+
* from "id"` both work, MIL-68): each pass tries whichever clause hasn't been found yet, and
|
|
569
|
+
* stops once a pass finds nothing new. At most as many passes as there are clauses ever do real
|
|
570
|
+
* work (each clause can only unblock another once), so this never loops meaningfully longer than
|
|
571
|
+
* a fixed clause chain would.
|
|
572
|
+
*/
|
|
573
|
+
function extractFieldClauses(raw, line, context) {
|
|
574
|
+
const clauses = {};
|
|
575
|
+
let rest = raw;
|
|
576
|
+
for (;;) {
|
|
577
|
+
let progressed = false;
|
|
578
|
+
if (clauses.tag === undefined) {
|
|
579
|
+
const tagMatch = rest.match(/^(.*\S)\s+tag$/);
|
|
580
|
+
if (tagMatch) {
|
|
581
|
+
if (context !== "event") {
|
|
582
|
+
throw new ParseError("`tag` is only valid on an event field — identity/composite/external tags describe " +
|
|
583
|
+
`an event's DCB tag, not a ${context === "type-decl" ? "type" : context} field`, line);
|
|
584
|
+
}
|
|
585
|
+
clauses.tag = true;
|
|
586
|
+
rest = tagMatch[1];
|
|
587
|
+
progressed = true;
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
if (clauses.renamedFrom === undefined) {
|
|
591
|
+
const renamedFromClause = extractQuotedListClause(rest, "renamed\\s+from", "renamed from", line);
|
|
592
|
+
if (renamedFromClause) {
|
|
593
|
+
if (context !== "event" && context !== "command") {
|
|
594
|
+
throw new ParseError("`renamed from` is only valid on an event or command field — only elements with a " +
|
|
595
|
+
`wire/API identity can be renamed, not a ${context === "type-decl" ? "type" : context} field`, line);
|
|
596
|
+
}
|
|
597
|
+
clauses.renamedFrom = renamedFromClause.values;
|
|
598
|
+
rest = renamedFromClause.rest;
|
|
599
|
+
progressed = true;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
if (clauses.assigned === undefined) {
|
|
603
|
+
const assignedMatch = rest.match(/^(.*\S)\s+assigned$/);
|
|
604
|
+
if (assignedMatch) {
|
|
605
|
+
if (context !== "event") {
|
|
606
|
+
throw new ParseError("`assigned` is only valid on an event field — it marks a field the server/handler " +
|
|
607
|
+
`sets, not one the triggering command supplies, so it can't describe a ${context === "type-decl" ? "type" : context} field`, line);
|
|
608
|
+
}
|
|
609
|
+
clauses.assigned = true;
|
|
610
|
+
rest = assignedMatch[1];
|
|
611
|
+
progressed = true;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
if (!progressed)
|
|
615
|
+
break;
|
|
616
|
+
}
|
|
617
|
+
return { rest, clauses };
|
|
618
|
+
}
|
|
619
|
+
/** Parse one field spec: `name` or `name: Type`, plus any trailing field-level clauses
|
|
620
|
+
* (`extractFieldClauses`). Returns null for blanks. */
|
|
621
|
+
function parseFieldSpec(raw, line, context) {
|
|
360
622
|
const s = raw.trim();
|
|
361
623
|
if (!s)
|
|
362
624
|
return null;
|
|
363
|
-
const
|
|
625
|
+
const { rest, clauses } = extractFieldClauses(s, line, context);
|
|
626
|
+
const spec = rest.trim();
|
|
627
|
+
if (!spec)
|
|
628
|
+
return null;
|
|
629
|
+
const colon = spec.indexOf(":");
|
|
630
|
+
let field;
|
|
364
631
|
if (colon >= 0) {
|
|
365
|
-
const name = unquote(
|
|
366
|
-
const type = unquote(
|
|
367
|
-
|
|
632
|
+
const name = unquote(spec.slice(0, colon).trim());
|
|
633
|
+
const type = unquote(spec.slice(colon + 1).trim());
|
|
634
|
+
field = name ? { name, ...(type ? { type } : {}) } : null;
|
|
635
|
+
}
|
|
636
|
+
else {
|
|
637
|
+
const name = unquote(spec);
|
|
638
|
+
field = name ? { name } : null;
|
|
639
|
+
}
|
|
640
|
+
if (field && clauses.tag)
|
|
641
|
+
field.tag = true;
|
|
642
|
+
if (field && clauses.renamedFrom)
|
|
643
|
+
field.renamedFrom = clauses.renamedFrom;
|
|
644
|
+
if (field && clauses.assigned)
|
|
645
|
+
field.assigned = true;
|
|
646
|
+
return field;
|
|
647
|
+
}
|
|
648
|
+
/** Matches a fragment ending in an in-progress `renamed from` list: `renamed from` followed by
|
|
649
|
+
* one or more quoted items, comma-separated, the LAST one flush against the fragment's end —
|
|
650
|
+
* exactly the shape `splitTopLevel` leaves on the fragment that owns the list once it's split
|
|
651
|
+
* the top-level commas BETWEEN list items apart (see `mergeRenamedFromContinuations`). */
|
|
652
|
+
const RENAMED_FROM_TAIL = /(?:^|\s)renamed\s+from\s+"(?:[^"\\]|\\.)*"(?:\s*,\s*"(?:[^"\\]|\\.)*")*$/;
|
|
653
|
+
/** Matches a fragment that, trimmed, STARTS with a quoted string — capturing that leading
|
|
654
|
+
* quoted span so the caller can inspect what (if anything) follows it (see
|
|
655
|
+
* `mergeRenamedFromContinuations`). */
|
|
656
|
+
const LEADING_QUOTED_STRING = /^"(?:[^"\\]|\\.)*"/;
|
|
657
|
+
/**
|
|
658
|
+
* Re-merges `splitTopLevel`'s fragments across a field-level `renamed from "Old1", "Old2"`
|
|
659
|
+
* list's own internal commas (MIL-68, hazard 4). `splitTopLevel` only treats a comma as
|
|
660
|
+
* literal WHILE INSIDE a single quoted span — the commas BETWEEN two list items are
|
|
661
|
+
* themselves top-level separators, so `{ a: X renamed from "A", "B", b: Y }` splits into
|
|
662
|
+
* THREE raw fragments (`a: X renamed from "A"`, `"B"`, `b: Y`), not two fields. Worse, a
|
|
663
|
+
* continuation fragment need not be JUST the quoted string — `{ paymentId: UUID renamed from
|
|
664
|
+
* "id", "pid" tag }` splits into `paymentId: UUID renamed from "id"` and `"pid" tag`, and that
|
|
665
|
+
* second fragment must fold in WHOLE (quote and trailing ` tag` both) or the ` tag` survives as
|
|
666
|
+
* a fabricated field of its own — a phantom identity tag flowing into the export with no
|
|
667
|
+
* diagnostic.
|
|
668
|
+
*
|
|
669
|
+
* A fragment whose trimmed text STARTS with a quoted string is folded back into the PREVIOUS
|
|
670
|
+
* fragment in full (`prev + ", " + frag`) whenever both (a) that previous fragment's own
|
|
671
|
+
* trailing text is itself an in-progress `renamed from` list, and (b) the text right after the
|
|
672
|
+
* fragment's leading quote is not a `:` (allowing leading whitespace) — otherwise it's left
|
|
673
|
+
* alone. Condition (b) preserves the documented escape hatch: a quoted field name immediately
|
|
674
|
+
* followed by `: Type` (`{ a: X renamed from "A", "B": Type }`) is an ordinary field with a
|
|
675
|
+
* quoted name, not a list continuation, unchanged from pre-MIL-68 behavior. Anything else
|
|
676
|
+
* trailing the quote (a bare quoted field, or trailing clause text like ` tag`) is swept into
|
|
677
|
+
* the list fragment and left for `extractFieldClauses`'s fixpoint loop to sort out — this makes
|
|
678
|
+
* the ambiguous case always resolve to "continuation of the rename list", never "next field
|
|
679
|
+
* (or fields)"; see docs/dsl.md for the two escape hatches (multi-line field blocks, or giving
|
|
680
|
+
* the quoted-name field a type).
|
|
681
|
+
*/
|
|
682
|
+
function mergeRenamedFromContinuations(fragments) {
|
|
683
|
+
const merged = [];
|
|
684
|
+
for (const raw of fragments) {
|
|
685
|
+
const trimmed = raw.trim();
|
|
686
|
+
const prev = merged.length > 0 ? merged[merged.length - 1] : undefined;
|
|
687
|
+
const leadingQuote = trimmed.match(LEADING_QUOTED_STRING);
|
|
688
|
+
const afterQuote = leadingQuote ? trimmed.slice(leadingQuote[0].length).trimStart() : undefined;
|
|
689
|
+
if (prev !== undefined &&
|
|
690
|
+
leadingQuote !== null &&
|
|
691
|
+
!afterQuote.startsWith(":") &&
|
|
692
|
+
RENAMED_FROM_TAIL.test(prev)) {
|
|
693
|
+
merged[merged.length - 1] = `${prev}, ${trimmed}`;
|
|
694
|
+
}
|
|
695
|
+
else {
|
|
696
|
+
merged.push(trimmed);
|
|
697
|
+
}
|
|
368
698
|
}
|
|
369
|
-
|
|
370
|
-
return name ? { name } : null;
|
|
699
|
+
return merged;
|
|
371
700
|
}
|
|
372
701
|
/** Parse comma-separated field specs from the inner text of a `{ … }` block (or a single
|
|
373
702
|
* line inside an already-open one). Shared by element field blocks and `type` blocks —
|
|
374
|
-
* every field-bearing `{ … }` block in the grammar splits and parses fields the same way.
|
|
375
|
-
|
|
703
|
+
* every field-bearing `{ … }` block in the grammar splits and parses fields the same way.
|
|
704
|
+
* The split is quote-aware (`splitTopLevel`, identical to native `.split(",")` when `inner`
|
|
705
|
+
* has no quotes at all) so a field clause carrying a quoted, comma-bearing list (MIL-68's
|
|
706
|
+
* `renamed from "Old1", "Old2"`) isn't broken apart mid-string; `mergeRenamedFromContinuations`
|
|
707
|
+
* then re-joins the fragments the split still leaves apart BETWEEN list items. */
|
|
708
|
+
function parseInlineFields(inner, line, context) {
|
|
376
709
|
const fields = [];
|
|
377
|
-
|
|
378
|
-
|
|
710
|
+
const fragments = mergeRenamedFromContinuations(splitTopLevel(inner, ","));
|
|
711
|
+
for (const spec of fragments) {
|
|
712
|
+
const f = parseFieldSpec(spec, line, context);
|
|
379
713
|
if (f)
|
|
380
714
|
fields.push(f);
|
|
381
715
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { Element, NormalizedModel } from "../model/model.js";
|
|
2
2
|
import { Rect } from "./svgGeometry.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Elements carrying a note, in document order, EXCLUDING an element whose `.note` is its
|
|
5
|
+
* own slice's canonical doc-binding self-reference (`note "slices/<key>.md"` naming this
|
|
6
|
+
* same element's slice — see `catalog/docJoin.ts`'s `NOTE_SLICE_PATH`/`resolveSliceDocJoin`).
|
|
7
|
+
* That's bookkeeping metadata for `em export`/`sliceReadyValidate` to join the element to
|
|
8
|
+
* its slice's design doc, not a real annotation — since MIL-153 the doc itself is directly
|
|
9
|
+
* reachable by clicking the slice in the live view, so flagging it here would just be
|
|
10
|
+
* clutter. A `.note` naming any OTHER path (including a different slice's doc, e.g. a
|
|
11
|
+
* MIL-121 cross-binding) is a genuine note and still renders normally.
|
|
12
|
+
* Index + 1 is the footnote number.
|
|
13
|
+
*/
|
|
4
14
|
export declare function notedElements(model: NormalizedModel): Element[];
|
|
5
15
|
/** Elements carrying an open issue, in document order. Index + 1 is the footnote number. */
|
|
6
16
|
export declare function issuedElements(model: NormalizedModel): Element[];
|
package/dist/render/drawNotes.js
CHANGED
|
@@ -27,6 +27,13 @@
|
|
|
27
27
|
// Marker coordinates come from parseNodeRects (the box coordinate space, inside
|
|
28
28
|
// Graphviz's transform group). The legend is laid out in the SVG's root/viewBox
|
|
29
29
|
// space, so it is appended after the diagram and the canvas is grown to fit.
|
|
30
|
+
//
|
|
31
|
+
// MIL-153: a note that's only a slice's own doc-binding self-reference (`note
|
|
32
|
+
// "slices/<key>.md"`, see catalog/docJoin.ts's NOTE_SLICE_PATH) never gets a marker or
|
|
33
|
+
// legend row — see notedElements()'s own comment. Since the live view's slice click
|
|
34
|
+
// (src/render/sliceOverlay.ts) opens that same doc directly, flagging the binding note
|
|
35
|
+
// too would just be clutter.
|
|
36
|
+
import { computeRefs } from "../model/refs.js";
|
|
30
37
|
const FOLD = 13; // leg length of the dog-ear, in user units
|
|
31
38
|
const INSET = 5; // pull off the bounding corner so it clears rounded box corners
|
|
32
39
|
const FILL = "#F4C430"; // sticky-note amber (notes)
|
|
@@ -35,9 +42,20 @@ const ISSUE_FILL = "#E53935"; // red sticky (open issues)
|
|
|
35
42
|
const ISSUE_STROKE = "#8B0000"; // dark red
|
|
36
43
|
const DIVERGENCE_FILL = "#26A69A"; // muted teal (accepted divergences — settled, not open)
|
|
37
44
|
const DIVERGENCE_STROKE = "#00695C"; // dark teal
|
|
38
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Elements carrying a note, in document order, EXCLUDING an element whose `.note` is its
|
|
47
|
+
* own slice's canonical doc-binding self-reference (`note "slices/<key>.md"` naming this
|
|
48
|
+
* same element's slice — see `catalog/docJoin.ts`'s `NOTE_SLICE_PATH`/`resolveSliceDocJoin`).
|
|
49
|
+
* That's bookkeeping metadata for `em export`/`sliceReadyValidate` to join the element to
|
|
50
|
+
* its slice's design doc, not a real annotation — since MIL-153 the doc itself is directly
|
|
51
|
+
* reachable by clicking the slice in the live view, so flagging it here would just be
|
|
52
|
+
* clutter. A `.note` naming any OTHER path (including a different slice's doc, e.g. a
|
|
53
|
+
* MIL-121 cross-binding) is a genuine note and still renders normally.
|
|
54
|
+
* Index + 1 is the footnote number.
|
|
55
|
+
*/
|
|
39
56
|
export function notedElements(model) {
|
|
40
|
-
|
|
57
|
+
const { sliceKeys } = computeRefs(model);
|
|
58
|
+
return model.elements.filter((el) => el.note && el.note !== `slices/${sliceKeys[el.sliceIndex]}.md`);
|
|
41
59
|
}
|
|
42
60
|
/** Elements carrying an open issue, in document order. Index + 1 is the footnote number. */
|
|
43
61
|
export function issuedElements(model) {
|
|
@@ -94,7 +112,14 @@ function cornerGlyph(r, num, corner, vAlign, fill, stroke) {
|
|
|
94
112
|
const numX = corner === "right" ? foldX - 2 : foldX + 2;
|
|
95
113
|
const numY = vAlign === "top" ? y + 9 : y - 5;
|
|
96
114
|
const anchor = corner === "right" ? "end" : "start";
|
|
97
|
-
return (
|
|
115
|
+
return (
|
|
116
|
+
// MIL-26 (theming): a white halo behind the triangle, independent of note/issue/
|
|
117
|
+
// divergence color, so the marker reads clearly on every element-kind fill —
|
|
118
|
+
// amber-on-orange (a note on an `event` box) was the specific low-contrast case
|
|
119
|
+
// that motivated this; the halo fixes it for all five box colors at once instead
|
|
120
|
+
// of special-casing that one pairing.
|
|
121
|
+
`<path d="${tri}" fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linejoin="round"/>` +
|
|
122
|
+
`<path d="${tri}" fill="${fill}" stroke="${stroke}" stroke-width="1" stroke-linejoin="round"/>` +
|
|
98
123
|
`<path d="${crease}" fill="none" stroke="${stroke}" stroke-width="0.7"/>` +
|
|
99
124
|
`<text x="${n(numX)}" y="${n(numY)}" text-anchor="${anchor}" font-family="Helvetica" ` +
|
|
100
125
|
`font-weight="bold" font-size="10" fill="${stroke}">${num}</text>`);
|