@nielspeter/eess-mermaid 0.3.0 → 0.4.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/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +141 -13
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +7 -1
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/import-config.d.ts +17 -0
- package/dist/cli/import-config.d.ts.map +1 -0
- package/dist/cli/import-config.js +28 -0
- package/dist/cli/import-config.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +3 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/load-rules.d.ts +24 -5
- package/dist/cli/load-rules.d.ts.map +1 -1
- package/dist/cli/load-rules.js +39 -9
- package/dist/cli/load-rules.js.map +1 -1
- package/dist/cli/resolve-config.d.ts.map +1 -1
- package/dist/cli/resolve-config.js +12 -38
- package/dist/cli/resolve-config.js.map +1 -1
- package/dist/cli/watch.d.ts +8 -0
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +3 -110
- package/dist/cli/watch.js.map +1 -1
- package/dist/conditions/class.d.ts.map +1 -1
- package/dist/conditions/class.js +26 -33
- package/dist/conditions/class.js.map +1 -1
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/parser/langium-services.d.ts +18 -0
- package/dist/parser/langium-services.d.ts.map +1 -0
- package/dist/parser/langium-services.js +14 -0
- package/dist/parser/langium-services.js.map +1 -0
- package/dist/parser/parse-class-diagram.d.ts +2 -4
- package/dist/parser/parse-class-diagram.d.ts.map +1 -1
- package/dist/parser/parse-class-diagram.js +8 -30
- package/dist/parser/parse-class-diagram.js.map +1 -1
- package/dist/parser/parse-er-diagram.d.ts.map +1 -1
- package/dist/parser/parse-er-diagram.js +3 -23
- package/dist/parser/parse-er-diagram.js.map +1 -1
- package/dist/parser/parse-with-grammar.d.ts +22 -0
- package/dist/parser/parse-with-grammar.d.ts.map +1 -0
- package/dist/parser/parse-with-grammar.js +37 -0
- package/dist/parser/parse-with-grammar.js.map +1 -0
- package/package.json +3 -2
package/dist/cli/watch.js
CHANGED
|
@@ -1,114 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { ArchRuleError } from '@nielspeter/eess';
|
|
1
|
+
import { watchAndRerun as watchAndRerunShared } from '@nielspeter/eess/internal';
|
|
2
|
+
/** Diagrams and the rule files that read them. */
|
|
4
3
|
const WATCHED_FILE_RE = /\.(mmd|[cm]?tsx?|[cm]?jsx?)$/;
|
|
5
|
-
class RunScheduler {
|
|
6
|
-
debounceTimer;
|
|
7
|
-
running = false;
|
|
8
|
-
_pendingRerun = false;
|
|
9
|
-
debounceMs;
|
|
10
|
-
onRun;
|
|
11
|
-
#runCount = 0;
|
|
12
|
-
constructor(onRun, debounceMs = 250) {
|
|
13
|
-
this.onRun = onRun;
|
|
14
|
-
this.debounceMs = debounceMs;
|
|
15
|
-
}
|
|
16
|
-
get runCount() {
|
|
17
|
-
return this.#runCount;
|
|
18
|
-
}
|
|
19
|
-
get pendingRerun() {
|
|
20
|
-
return this._pendingRerun;
|
|
21
|
-
}
|
|
22
|
-
get isRunning() {
|
|
23
|
-
return this.running;
|
|
24
|
-
}
|
|
25
|
-
/** Debounce a change on `trigger`, coalescing bursts into a single re-run. */
|
|
26
|
-
schedule(trigger) {
|
|
27
|
-
if (this.debounceTimer)
|
|
28
|
-
clearTimeout(this.debounceTimer);
|
|
29
|
-
this.debounceTimer = setTimeout(() => {
|
|
30
|
-
if (this.running) {
|
|
31
|
-
this._pendingRerun = true;
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
this.executeRun(trigger);
|
|
35
|
-
}, this.debounceMs);
|
|
36
|
-
}
|
|
37
|
-
executeRun(trigger) {
|
|
38
|
-
this.running = true;
|
|
39
|
-
this._pendingRerun = false;
|
|
40
|
-
this.#runCount++;
|
|
41
|
-
process.stdout.write('\x1B[2J\x1B[H');
|
|
42
|
-
process.stdout.write(`Change detected: ${trigger}\n\n`);
|
|
43
|
-
this.onRun(trigger)
|
|
44
|
-
.catch((err) => {
|
|
45
|
-
if (!(err instanceof ArchRuleError)) {
|
|
46
|
-
if (err instanceof Error) {
|
|
47
|
-
console.error(err.message);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
})
|
|
51
|
-
.finally(() => {
|
|
52
|
-
this.running = false;
|
|
53
|
-
if (this._pendingRerun) {
|
|
54
|
-
this.executeRun('(queued change)');
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
process.stdout.write('\nWatching for changes...\n');
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
4
|
export function watchAndRerun(options) {
|
|
63
|
-
|
|
64
|
-
const scheduler = new RunScheduler(onChangeDetected, debounceMs);
|
|
65
|
-
const watchers = [];
|
|
66
|
-
for (const dir of watchDirs) {
|
|
67
|
-
const resolved = path.resolve(dir);
|
|
68
|
-
const watcher = watch(resolved, { recursive: true });
|
|
69
|
-
watchers.push(watcher);
|
|
70
|
-
void (async () => {
|
|
71
|
-
try {
|
|
72
|
-
for await (const event of watcher) {
|
|
73
|
-
if (event.filename && WATCHED_FILE_RE.test(event.filename)) {
|
|
74
|
-
scheduler.schedule(event.filename);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
if (err instanceof Error && err.message !== 'The operation was aborted') {
|
|
80
|
-
console.error(`Watcher error on ${dir}: ${err.message}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
})();
|
|
84
|
-
}
|
|
85
|
-
for (const file of watchFiles) {
|
|
86
|
-
const resolved = path.resolve(file);
|
|
87
|
-
const watcher = watch(resolved);
|
|
88
|
-
watchers.push(watcher);
|
|
89
|
-
void (async () => {
|
|
90
|
-
try {
|
|
91
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- must consume async iterator
|
|
92
|
-
for await (const _event of watcher) {
|
|
93
|
-
scheduler.schedule(path.basename(file));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
if (err instanceof Error && err.message !== 'The operation was aborted') {
|
|
98
|
-
console.error(`Watcher error on ${file}: ${err.message}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
})();
|
|
102
|
-
}
|
|
103
|
-
process.on('SIGINT', () => {
|
|
104
|
-
for (const w of watchers) {
|
|
105
|
-
if ('return' in w && typeof w.return === 'function') {
|
|
106
|
-
// AsyncIterable's optional return() is untyped; invoke via Function.prototype.call
|
|
107
|
-
// (yields `any`) and discard the settle-promise — best-effort watcher shutdown.
|
|
108
|
-
void w.return.call(w);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
process.exit(0);
|
|
112
|
-
});
|
|
5
|
+
watchAndRerunShared({ ...options, watchedFileRe: WATCHED_FILE_RE });
|
|
113
6
|
}
|
|
114
7
|
//# sourceMappingURL=watch.js.map
|
package/dist/cli/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAiBhF,kDAAkD;AAClD,MAAM,eAAe,GAAG,8BAA8B,CAAA;AAEtD,MAAM,UAAU,aAAa,CAAC,OAAqB;IACjD,mBAAmB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAA;AACrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/conditions/class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAInE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAkCxD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAsCtE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAqBnE;
|
|
1
|
+
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/conditions/class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAA;AAInE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAkCxD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAsCtE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAqBnE;AA6BD,wBAAgB,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,CAO/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAMjE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAMpE;AAQD,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAMjE;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAMpE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAiC9E"}
|
package/dist/conditions/class.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { marksAssertsCardinality } from '@nielspeter/eess';
|
|
1
|
+
import { marksAssertsCardinality } from '@nielspeter/eess/internal';
|
|
2
2
|
import { createViolation } from '../core/violation.js';
|
|
3
3
|
import { collectRelationships, getClassLine } from '../models/arch-class.js';
|
|
4
4
|
const INHERITANCE_ARROWS = new Set(['<|--', '<|..', '--|>', '..|>']);
|
|
@@ -78,6 +78,27 @@ export function extendClass(superName) {
|
|
|
78
78
|
},
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* A class-level condition: one violation per class that fails the test.
|
|
83
|
+
*
|
|
84
|
+
* `haveStereotype`, `notHaveStereotype`, `dependOn` and `notDependOn` were
|
|
85
|
+
* four literal copies of `filter().map(classViolation)` — `no-copy-paste`
|
|
86
|
+
* reported them as identical text.
|
|
87
|
+
*
|
|
88
|
+
* Each pair stays TWO exported conditions rather than one plus `not()`.
|
|
89
|
+
* `not()` composes predicates, which answer a boolean; a condition owns its
|
|
90
|
+
* violation MESSAGE, and "is missing required stereotype" does not invert into
|
|
91
|
+
* "has forbidden stereotype" mechanically — only the author can write the
|
|
92
|
+
* other sentence. A generic negation would emit a remedy pointing the reader
|
|
93
|
+
* at the wrong change, which is what ADR-009 rule 2 forbids. So the loop is
|
|
94
|
+
* shared and the sentence is not.
|
|
95
|
+
*/
|
|
96
|
+
function classCondition(description, violatesWhen, message) {
|
|
97
|
+
return {
|
|
98
|
+
description,
|
|
99
|
+
evaluate: (elements, context) => elements.filter(violatesWhen).map((c) => classViolation(c, message(c), context)),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
81
102
|
export function notExist() {
|
|
82
103
|
return marksAssertsCardinality({
|
|
83
104
|
description: 'not exist',
|
|
@@ -87,24 +108,10 @@ export function notExist() {
|
|
|
87
108
|
});
|
|
88
109
|
}
|
|
89
110
|
export function haveStereotype(name) {
|
|
90
|
-
return {
|
|
91
|
-
description: `have stereotype <<${name}>>`,
|
|
92
|
-
evaluate(elements, context) {
|
|
93
|
-
return elements
|
|
94
|
-
.filter((c) => !c.stereotypes.includes(name))
|
|
95
|
-
.map((c) => classViolation(c, `${c.name} is missing required stereotype <<${name}>>`, context));
|
|
96
|
-
},
|
|
97
|
-
};
|
|
111
|
+
return classCondition(`have stereotype <<${name}>>`, (c) => !c.stereotypes.includes(name), (c) => `${c.name} is missing required stereotype <<${name}>>`);
|
|
98
112
|
}
|
|
99
113
|
export function notHaveStereotype(name) {
|
|
100
|
-
return {
|
|
101
|
-
description: `not have stereotype <<${name}>>`,
|
|
102
|
-
evaluate(elements, context) {
|
|
103
|
-
return elements
|
|
104
|
-
.filter((c) => c.stereotypes.includes(name))
|
|
105
|
-
.map((c) => classViolation(c, `${c.name} has forbidden stereotype <<${name}>>`, context));
|
|
106
|
-
},
|
|
107
|
-
};
|
|
114
|
+
return classCondition(`not have stereotype <<${name}>>`, (c) => c.stereotypes.includes(name), (c) => `${c.name} has forbidden stereotype <<${name}>>`);
|
|
108
115
|
}
|
|
109
116
|
function dependenciesOf(c) {
|
|
110
117
|
return collectRelationships(c.project)
|
|
@@ -112,24 +119,10 @@ function dependenciesOf(c) {
|
|
|
112
119
|
.map((r) => r.target);
|
|
113
120
|
}
|
|
114
121
|
export function dependOn(targetName) {
|
|
115
|
-
return {
|
|
116
|
-
description: `depend on ${targetName}`,
|
|
117
|
-
evaluate(elements, context) {
|
|
118
|
-
return elements
|
|
119
|
-
.filter((c) => !dependenciesOf(c).includes(targetName))
|
|
120
|
-
.map((c) => classViolation(c, `${c.name} does not depend on ${targetName}`, context));
|
|
121
|
-
},
|
|
122
|
-
};
|
|
122
|
+
return classCondition(`depend on ${targetName}`, (c) => !dependenciesOf(c).includes(targetName), (c) => `${c.name} does not depend on ${targetName}`);
|
|
123
123
|
}
|
|
124
124
|
export function notDependOn(targetName) {
|
|
125
|
-
return {
|
|
126
|
-
description: `not depend on ${targetName}`,
|
|
127
|
-
evaluate(elements, context) {
|
|
128
|
-
return elements
|
|
129
|
-
.filter((c) => dependenciesOf(c).includes(targetName))
|
|
130
|
-
.map((c) => classViolation(c, `${c.name} depends on ${targetName}`, context));
|
|
131
|
-
},
|
|
132
|
-
};
|
|
125
|
+
return classCondition(`not depend on ${targetName}`, (c) => dependenciesOf(c).includes(targetName), (c) => `${c.name} depends on ${targetName}`);
|
|
133
126
|
}
|
|
134
127
|
export function notDependOnStereotype(stereotype) {
|
|
135
128
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/conditions/class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/conditions/class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE5E,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEpE,SAAS,cAAc,CAAC,CAAY,EAAE,OAAe,EAAE,GAAqB;IAC1E,OAAO,eAAe,CACpB;QACE,OAAO,EAAE,CAAC,CAAC,IAAI;QACf,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU;QACtC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;QACzB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;KAC7B,EACD,OAAO,EACP,GAAG,CACJ,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,eAAe,CACtB,KAAa,EACb,MAAc,EACd,MAAc;IAEd,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;IACrC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO;QACL,WAAW,EAAE,wCAAwC,IAAI,IAAI;QAC7D,QAAQ,CAAC,QAAqB,EAAE,OAAyB;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAA;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;YAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5B,MAAM,WAAW,GAAa,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAC9D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;oBAClD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI;wBAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACzE,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAU,CAAA;YACvC,CAAC,CAAC,CACH,CAAA;YAED,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,KAAK,MAAM,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9C,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;oBACxD,IAAI,CAAC,GAAG;wBAAE,SAAQ;oBAClB,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI;wBAAE,SAAQ;oBAChC,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;oBACpD,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClC,UAAU,CAAC,IAAI,CACb,cAAc,CACZ,CAAC,EACD,GAAG,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,GAAG,2BAA2B,IAAI,IAAI,EAC/D,OAAO,CACR,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO;QACL,WAAW,EAAE,UAAU,SAAS,EAAE;QAClC,QAAQ,CAAC,QAAqB,EAAE,OAAyB;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAA;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;YAC7B,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC;qBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;qBACxD,MAAM,CAAC,CAAC,GAAG,EAAuC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;qBACvE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC;qBACnC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,oBAAoB,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;gBACvF,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,cAAc,CACrB,WAAmB,EACnB,YAAuC,EACvC,OAAiC;IAEjC,OAAO;QACL,WAAW;QACX,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC9B,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KACnF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,uBAAuB,CAAC;QAC7B,WAAW,EAAE,WAAW;QACxB,QAAQ,CAAC,QAAqB,EAAE,OAAyB;YACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAA;QAC5F,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,cAAc,CACnB,qBAAqB,IAAI,IAAI,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,qCAAqC,IAAI,IAAI,CAC9D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,cAAc,CACnB,yBAAyB,IAAI,IAAI,EACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EACnC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,+BAA+B,IAAI,IAAI,CACxD,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,CAAY;IAClC,OAAO,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;SACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,UAAkB;IACzC,OAAO,cAAc,CACnB,aAAa,UAAU,EAAE,EACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,uBAAuB,UAAU,EAAE,CACpD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,OAAO,cAAc,CACnB,iBAAiB,UAAU,EAAE,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,eAAe,UAAU,EAAE,CAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,OAAO;QACL,WAAW,EAAE,2CAA2C,UAAU,IAAI;QACtE,QAAQ,CAAC,QAAqB,EAAE,OAAyB;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAA;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;YAC7B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAoB,CAAA;YACtD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAC7C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;oBAClD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI;wBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBAClE,CAAC;gBACD,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACtC,CAAC;YACD,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;oBAC/C,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC5B,UAAU,CAAC,IAAI,CACb,cAAc,CACZ,CAAC,EACD,GAAG,CAAC,CAAC,IAAI,eAAe,MAAM,2BAA2B,UAAU,IAAI,EACvE,OAAO,CACR,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export type { Predicate, Condition, ConditionContext, CodeFrameOptions, FormatOptions, } from '@nielspeter/eess';
|
|
2
|
-
export { ArchRuleError, RuleBuilder, generateCodeFrame, formatViolations, formatViolationsPlain, definePredicate, defineCondition,
|
|
2
|
+
export { ArchRuleError, RuleBuilder, generateCodeFrame, formatViolations, formatViolationsPlain, definePredicate, defineCondition, } from '@nielspeter/eess';
|
|
3
|
+
export { globNode, globAnyOf } from '@nielspeter/eess';
|
|
4
|
+
export type { DeclaredGlob, DeclaredGlobs, GlobKind, GlobBase } from '@nielspeter/eess';
|
|
3
5
|
export type { ArchViolation } from './violation.js';
|
|
4
6
|
export { createViolation } from './violation.js';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGvF,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/core/index.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
export { ArchRuleError, RuleBuilder, generateCodeFrame, formatViolations, formatViolationsPlain, definePredicate, defineCondition,
|
|
1
|
+
export { ArchRuleError, RuleBuilder, generateCodeFrame, formatViolations, formatViolationsPlain, definePredicate, defineCondition, } from '@nielspeter/eess';
|
|
2
|
+
// The constructors a custom predicate needs to DECLARE its globs. eess-mermaid
|
|
3
|
+
// re-exported `definePredicate` without them, so the documented path (declare
|
|
4
|
+
// your globs or be permanently opaque to vacuity diagnosis) was unfollowable
|
|
5
|
+
// from a standalone install. eess-ts got these back in review; mermaid is the
|
|
6
|
+
// same case and was missed.
|
|
7
|
+
export { globNode, globAnyOf } from '@nielspeter/eess';
|
|
2
8
|
export { createViolation } from './violation.js';
|
|
3
9
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAA;AACzB,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKtD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export type { ExclusionComment, ExclusionWarning, ParseResult } from '@nielspete
|
|
|
8
8
|
export { silent } from '@nielspeter/eess';
|
|
9
9
|
export type { SilentExclusion } from '@nielspeter/eess';
|
|
10
10
|
export { TerminalBuilder } from '@nielspeter/eess';
|
|
11
|
+
export { ArchConfigError, collectResult, mergeCollectResults, hasEvidence, finishPreset, isArchConfigError, reportViolations, } from '@nielspeter/eess';
|
|
12
|
+
export type { CollectResult, RuleBuilderLike } from '@nielspeter/eess';
|
|
11
13
|
export type { RuleMetadata } from '@nielspeter/eess';
|
|
12
14
|
export type { RuleDescription } from '@nielspeter/eess';
|
|
13
15
|
export { not, and, or } from '@nielspeter/eess';
|
|
@@ -17,8 +19,6 @@ export { parseClassDiagram, MermaidUnitParseError } from './parser/parse-class-d
|
|
|
17
19
|
export { classes, ClassRuleBuilder } from './builders/class-rule-builder.js';
|
|
18
20
|
export type { ArchClass, ArchRelationship } from './models/arch-class.js';
|
|
19
21
|
export { collectClasses, collectRelationships } from './models/arch-class.js';
|
|
20
|
-
export { haveStereotype as predicateHaveStereotype, haveNameMatching, haveNameStartingWith, haveNameEndingWith, haveMemberNamed, haveMethodNamed, areAbstract, haveAtLeastOneMethod, haveNoMembers, extendName, } from './predicates/class.js';
|
|
21
|
-
export { notExtendStereotype, extendClass, notExist, haveStereotype as conditionHaveStereotype, notHaveStereotype, dependOn, notDependOn, notDependOnStereotype, } from './conditions/class.js';
|
|
22
22
|
export { parseDirectives, findDirective } from './parser/parse-directives.js';
|
|
23
23
|
export type { ParsedDirective, DirectiveSchema, DirectiveStereotype, DirectiveId, DirectiveUnknown, DirectiveDiagnostic, DirectiveParseResult, } from './parser/parse-directives.js';
|
|
24
24
|
export { validateReferences } from './parser/validate-diagram.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAA;AAC/B,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAA;AAC/B,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAKlD,OAAO,EACL,eAAe,EACf,aAAa,EAMb,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACtE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAG/C,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAG1F,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAI7E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC7E,YAAY,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EACV,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,GACb,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC/E,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,16 @@ export { detectFormat, isCI } from '@nielspeter/eess';
|
|
|
6
6
|
export { parseExclusionComments, isExcludedByComment } from '@nielspeter/eess';
|
|
7
7
|
export { silent } from '@nielspeter/eess';
|
|
8
8
|
export { TerminalBuilder } from '@nielspeter/eess';
|
|
9
|
+
// The evidence seam this dialect's own CLI now uses (bug 0269), re-exported so a
|
|
10
|
+
// standalone `@nielspeter/eess-mermaid` consumer never needs a second, direct
|
|
11
|
+
// kernel install — plan 0089's rule, enforced by `check:family`.
|
|
12
|
+
export { ArchConfigError, collectResult,
|
|
13
|
+
// Bug 0276: `collectResult` was here and its partner was not, so a consumer
|
|
14
|
+
// could build a receipt and not combine two. `check:family` is import-driven
|
|
15
|
+
// and this package's source never imports the merge, so it owed nothing and
|
|
16
|
+
// the gate stayed green — the demand side ADR-014 asks for is what was
|
|
17
|
+
// missing.
|
|
18
|
+
mergeCollectResults, hasEvidence, finishPreset, isArchConfigError, reportViolations, } from '@nielspeter/eess';
|
|
9
19
|
export { not, and, or } from '@nielspeter/eess';
|
|
10
20
|
export { diagram } from './core/diagram.js';
|
|
11
21
|
// Parser
|
|
@@ -14,9 +24,6 @@ export { parseClassDiagram, MermaidUnitParseError } from './parser/parse-class-d
|
|
|
14
24
|
export { classes, ClassRuleBuilder } from './builders/class-rule-builder.js';
|
|
15
25
|
export { collectClasses, collectRelationships } from './models/arch-class.js';
|
|
16
26
|
// Predicates
|
|
17
|
-
export { haveStereotype as predicateHaveStereotype, haveNameMatching, haveNameStartingWith, haveNameEndingWith, haveMemberNamed, haveMethodNamed, areAbstract, haveAtLeastOneMethod, haveNoMembers, extendName, } from './predicates/class.js';
|
|
18
|
-
// Conditions
|
|
19
|
-
export { notExtendStereotype, extendClass, notExist, haveStereotype as conditionHaveStereotype, notHaveStereotype, dependOn, notDependOn, notDependOnStereotype, } from './conditions/class.js';
|
|
20
27
|
// Directive parsing
|
|
21
28
|
export { parseDirectives, findDirective } from './parser/parse-directives.js';
|
|
22
29
|
// Reference validation
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,iFAAiF;AACjF,8EAA8E;AAC9E,iEAAiE;AACjE,OAAO,EACL,eAAe,EACf,aAAa;AACb,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,uEAAuE;AACvE,WAAW;AACX,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAI/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE3C,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAE1F,oBAAoB;AACpB,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAE5E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7E,aAAa;AACb,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAW7E,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAGjE,oDAAoD;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAUtD,kCAAkC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type LangiumCoreServices, type LangiumGeneratedCoreServices, type Module } from 'langium';
|
|
2
|
+
/**
|
|
3
|
+
* Langium services for one grammar, built once and cached.
|
|
4
|
+
*
|
|
5
|
+
* `parse-class-diagram.ts` and `parse-er-diagram.ts` each carried this, byte for
|
|
6
|
+
* byte apart from the generated module they injected — `no-copy-paste` reported
|
|
7
|
+
* it at 100%. The grammar is now the parameter, which is what it always was.
|
|
8
|
+
*
|
|
9
|
+
* The cache is per grammar module, not global: two grammars need two service
|
|
10
|
+
* containers, and a single `cachedServices` shared between them would hand the
|
|
11
|
+
* ER parser the class-diagram services (or the reverse) depending on which file
|
|
12
|
+
* was imported first. That is the bug this shape has to avoid, so the cache is
|
|
13
|
+
* keyed rather than a lone `let`.
|
|
14
|
+
*/
|
|
15
|
+
type GeneratedGrammarModule = Module<LangiumCoreServices, LangiumGeneratedCoreServices>;
|
|
16
|
+
export declare function grammarServices(generatedModule: GeneratedGrammarModule): LangiumCoreServices;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=langium-services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langium-services.d.ts","sourceRoot":"","sources":["../../src/parser/langium-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,mBAAmB,EAExB,KAAK,4BAA4B,EACjC,KAAK,MAAM,EACZ,MAAM,SAAS,CAAA;AAGhB;;;;;;;;;;;;GAYG;AACH,KAAK,sBAAsB,GAAG,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAA;AAIvF,wBAAgB,eAAe,CAAC,eAAe,EAAE,sBAAsB,GAAG,mBAAmB,CAY5F"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EmptyFileSystem, createDefaultCoreModule, createDefaultSharedCoreModule, inject, } from 'langium';
|
|
2
|
+
import { MermaidUnitGeneratedSharedModule } from './generated/module.js';
|
|
3
|
+
const cache = new WeakMap();
|
|
4
|
+
export function grammarServices(generatedModule) {
|
|
5
|
+
const cached = cache.get(generatedModule);
|
|
6
|
+
if (cached)
|
|
7
|
+
return cached;
|
|
8
|
+
const shared = inject(createDefaultSharedCoreModule(EmptyFileSystem), MermaidUnitGeneratedSharedModule);
|
|
9
|
+
const services = inject(createDefaultCoreModule({ shared }), generatedModule);
|
|
10
|
+
shared.ServiceRegistry.register(services);
|
|
11
|
+
cache.set(generatedModule, services);
|
|
12
|
+
return services;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=langium-services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langium-services.js","sourceRoot":"","sources":["../../src/parser/langium-services.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,6BAA6B,EAC7B,MAAM,GAKP,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAA;AAiBxE,MAAM,KAAK,GAAG,IAAI,OAAO,EAA+C,CAAA;AAExE,MAAM,UAAU,eAAe,CAAC,eAAuC;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,MAAM,GAA8B,MAAM,CAC9C,6BAA6B,CAAC,eAAe,CAAC,EAC9C,gCAAgC,CACjC,CAAA;IACD,MAAM,QAAQ,GAAwB,MAAM,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,CAAA;IAClG,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACzC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;IACpC,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { Diagram } from './generated/ast.js';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
constructor(errors: readonly string[]);
|
|
5
|
-
}
|
|
2
|
+
export { MermaidUnitParseError } from './parse-with-grammar.js';
|
|
3
|
+
/** Parse a Mermaid `classDiagram` source into the generated AST. */
|
|
6
4
|
export declare function parseClassDiagram(text: string): Diagram;
|
|
7
5
|
//# sourceMappingURL=parse-class-diagram.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-class-diagram.d.ts","sourceRoot":"","sources":["../../src/parser/parse-class-diagram.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-class-diagram.d.ts","sourceRoot":"","sources":["../../src/parser/parse-class-diagram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAMjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD"}
|
|
@@ -1,33 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const services = inject(createDefaultCoreModule({ shared }), ClassDiagramGrammarGeneratedModule);
|
|
9
|
-
shared.ServiceRegistry.register(services);
|
|
10
|
-
cachedServices = services;
|
|
11
|
-
return services;
|
|
12
|
-
}
|
|
13
|
-
export class MermaidUnitParseError extends Error {
|
|
14
|
-
errors;
|
|
15
|
-
constructor(errors) {
|
|
16
|
-
super(`MermaidUnit parse failed:\n${errors.join('\n')}`);
|
|
17
|
-
this.errors = errors;
|
|
18
|
-
this.name = 'MermaidUnitParseError';
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
import { ClassDiagramGrammarGeneratedModule } from './generated/module.js';
|
|
2
|
+
import { parseWithGrammar } from './parse-with-grammar.js';
|
|
3
|
+
// Re-exported from its original home: `MermaidUnitParseError` moved to
|
|
4
|
+
// `parse-with-grammar.js` when the two parsers were folded together, and this
|
|
5
|
+
// module is the path `src/index.ts` and the tests already import it from.
|
|
6
|
+
export { MermaidUnitParseError } from './parse-with-grammar.js';
|
|
7
|
+
/** Parse a Mermaid `classDiagram` source into the generated AST. */
|
|
21
8
|
export function parseClassDiagram(text) {
|
|
22
|
-
|
|
23
|
-
const result = services.parser.LangiumParser.parse(text);
|
|
24
|
-
const errors = [
|
|
25
|
-
...result.lexerErrors.map((e) => `lexer:${e.line}:${e.column} ${e.message}`),
|
|
26
|
-
...result.parserErrors.map((e) => `parser: ${e.message}`),
|
|
27
|
-
];
|
|
28
|
-
if (errors.length > 0) {
|
|
29
|
-
throw new MermaidUnitParseError(errors);
|
|
30
|
-
}
|
|
31
|
-
return result.value;
|
|
9
|
+
return parseWithGrammar(ClassDiagramGrammarGeneratedModule, text);
|
|
32
10
|
}
|
|
33
11
|
//# sourceMappingURL=parse-class-diagram.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-class-diagram.js","sourceRoot":"","sources":["../../src/parser/parse-class-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"parse-class-diagram.js","sourceRoot":"","sources":["../../src/parser/parse-class-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,uEAAuE;AACvE,8EAA8E;AAC9E,0EAA0E;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,gBAAgB,CAAU,kCAAkC,EAAE,IAAI,CAAC,CAAA;AAC5E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-er-diagram.d.ts","sourceRoot":"","sources":["../../src/parser/parse-er-diagram.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-er-diagram.d.ts","sourceRoot":"","sources":["../../src/parser/parse-er-diagram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAGnD,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEtD"}
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { MermaidUnitParseError } from './parse-class-diagram.js';
|
|
4
|
-
let cachedServices;
|
|
5
|
-
function getServices() {
|
|
6
|
-
if (cachedServices)
|
|
7
|
-
return cachedServices;
|
|
8
|
-
const shared = inject(createDefaultSharedCoreModule(EmptyFileSystem), MermaidUnitGeneratedSharedModule);
|
|
9
|
-
const services = inject(createDefaultCoreModule({ shared }), ErDiagramGrammarGeneratedModule);
|
|
10
|
-
shared.ServiceRegistry.register(services);
|
|
11
|
-
cachedServices = services;
|
|
12
|
-
return services;
|
|
13
|
-
}
|
|
1
|
+
import { ErDiagramGrammarGeneratedModule } from './generated/module.js';
|
|
2
|
+
import { parseWithGrammar } from './parse-with-grammar.js';
|
|
14
3
|
/** Parse a Mermaid `erDiagram` source into the generated AST (plan 0069 Phase 3). */
|
|
15
4
|
export function parseErDiagram(text) {
|
|
16
|
-
|
|
17
|
-
const result = services.parser.LangiumParser.parse(text);
|
|
18
|
-
const errors = [
|
|
19
|
-
...result.lexerErrors.map((e) => `lexer:${e.line}:${e.column} ${e.message}`),
|
|
20
|
-
...result.parserErrors.map((e) => `parser: ${e.message}`),
|
|
21
|
-
];
|
|
22
|
-
if (errors.length > 0) {
|
|
23
|
-
throw new MermaidUnitParseError(errors);
|
|
24
|
-
}
|
|
25
|
-
return result.value;
|
|
5
|
+
return parseWithGrammar(ErDiagramGrammarGeneratedModule, text);
|
|
26
6
|
}
|
|
27
7
|
//# sourceMappingURL=parse-er-diagram.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-er-diagram.js","sourceRoot":"","sources":["../../src/parser/parse-er-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"parse-er-diagram.js","sourceRoot":"","sources":["../../src/parser/parse-er-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAY,+BAA+B,EAAE,IAAI,CAAC,CAAA;AAC3E,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AstNode, LangiumCoreServices, LangiumGeneratedCoreServices, Module } from 'langium';
|
|
2
|
+
export declare class MermaidUnitParseError extends Error {
|
|
3
|
+
readonly errors: readonly string[];
|
|
4
|
+
constructor(errors: readonly string[]);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Parse one Mermaid source against one grammar, or throw with every diagnostic.
|
|
8
|
+
*
|
|
9
|
+
* `parseClassDiagram` and `parseErDiagram` were the same body but for the
|
|
10
|
+
* grammar module and the AST type — `no-copy-paste` reported them at 100%,
|
|
11
|
+
* one level above the service container `langium-services.ts` already unified.
|
|
12
|
+
*
|
|
13
|
+
* It throws rather than returning a result, and collects BOTH lexer and parser
|
|
14
|
+
* errors before doing so: Langium reports a malformed diagram as a lexer error
|
|
15
|
+
* on one line and a parser error on another, and a parser that surfaced only
|
|
16
|
+
* the first would send an author to fix the symptom. The line/column prefix on
|
|
17
|
+
* the lexer half is what makes the message locatable at all — the parser half
|
|
18
|
+
* carries no position, which is why the two are formatted differently rather
|
|
19
|
+
* than uniformly.
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseWithGrammar<T extends AstNode>(generatedModule: Module<LangiumCoreServices, LangiumGeneratedCoreServices>, text: string): T;
|
|
22
|
+
//# sourceMappingURL=parse-with-grammar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-with-grammar.d.ts","sourceRoot":"","sources":["../../src/parser/parse-with-grammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGjG,qBAAa,qBAAsB,SAAQ,KAAK;aAClB,MAAM,EAAE,SAAS,MAAM,EAAE;gBAAzB,MAAM,EAAE,SAAS,MAAM,EAAE;CAItD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAChD,eAAe,EAAE,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,EAC1E,IAAI,EAAE,MAAM,GACX,CAAC,CAWH"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { grammarServices } from './langium-services.js';
|
|
2
|
+
export class MermaidUnitParseError extends Error {
|
|
3
|
+
errors;
|
|
4
|
+
constructor(errors) {
|
|
5
|
+
super(`MermaidUnit parse failed:\n${errors.join('\n')}`);
|
|
6
|
+
this.errors = errors;
|
|
7
|
+
this.name = 'MermaidUnitParseError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Parse one Mermaid source against one grammar, or throw with every diagnostic.
|
|
12
|
+
*
|
|
13
|
+
* `parseClassDiagram` and `parseErDiagram` were the same body but for the
|
|
14
|
+
* grammar module and the AST type — `no-copy-paste` reported them at 100%,
|
|
15
|
+
* one level above the service container `langium-services.ts` already unified.
|
|
16
|
+
*
|
|
17
|
+
* It throws rather than returning a result, and collects BOTH lexer and parser
|
|
18
|
+
* errors before doing so: Langium reports a malformed diagram as a lexer error
|
|
19
|
+
* on one line and a parser error on another, and a parser that surfaced only
|
|
20
|
+
* the first would send an author to fix the symptom. The line/column prefix on
|
|
21
|
+
* the lexer half is what makes the message locatable at all — the parser half
|
|
22
|
+
* carries no position, which is why the two are formatted differently rather
|
|
23
|
+
* than uniformly.
|
|
24
|
+
*/
|
|
25
|
+
export function parseWithGrammar(generatedModule, text) {
|
|
26
|
+
const services = grammarServices(generatedModule);
|
|
27
|
+
const result = services.parser.LangiumParser.parse(text);
|
|
28
|
+
const errors = [
|
|
29
|
+
...result.lexerErrors.map((e) => `lexer:${e.line}:${e.column} ${e.message}`),
|
|
30
|
+
...result.parserErrors.map((e) => `parser: ${e.message}`),
|
|
31
|
+
];
|
|
32
|
+
if (errors.length > 0) {
|
|
33
|
+
throw new MermaidUnitParseError(errors);
|
|
34
|
+
}
|
|
35
|
+
return result.value;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=parse-with-grammar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-with-grammar.js","sourceRoot":"","sources":["../../src/parser/parse-with-grammar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAClB;IAA5B,YAA4B,MAAyB;QACnD,KAAK,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAD9B,WAAM,GAAN,MAAM,CAAmB;QAEnD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC9B,eAA0E,EAC1E,IAAY;IAEZ,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAI,IAAI,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG;QACb,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5E,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;KAC1D,CAAA;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nielspeter/eess-mermaid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Architecture testing for Mermaid class diagrams — the Mermaid dialect of the eess family (formerly mermaidunit)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"scripts": {
|
|
31
31
|
"prepublishOnly": "npm run build",
|
|
32
32
|
"langium:gen": "langium generate --file langium-config.json",
|
|
33
|
+
"prebuild": "rm -rf dist",
|
|
33
34
|
"build": "npm run langium:gen && tsc -p tsconfig.build.json && chmod +x dist/cli/bin.js",
|
|
34
35
|
"test": "vitest run",
|
|
35
36
|
"test:watch": "vitest",
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
"eess"
|
|
44
45
|
],
|
|
45
46
|
"dependencies": {
|
|
46
|
-
"@nielspeter/eess": "^0.
|
|
47
|
+
"@nielspeter/eess": "^0.5.0",
|
|
47
48
|
"jiti": "^2.7.0",
|
|
48
49
|
"langium": "^4.2.3"
|
|
49
50
|
}
|