@memoarchitect/tools 0.11.0 → 0.11.3
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/README.md +1 -1
- package/package.json +2 -2
- package/packages/tools/lib/commands/dev.d.ts.map +1 -1
- package/packages/tools/lib/commands/dev.js +23 -1
- package/packages/tools/lib/commands/dev.js.map +1 -1
- package/packages/tools/lib/model/builder.d.ts.map +1 -1
- package/packages/tools/lib/model/builder.js +97 -0
- package/packages/tools/lib/model/builder.js.map +1 -1
- package/packages/tools/lib/model/parser-utils.d.ts +2 -0
- package/packages/tools/lib/model/parser-utils.d.ts.map +1 -1
- package/packages/tools/lib/model/parser-utils.js +30 -4
- package/packages/tools/lib/model/parser-utils.js.map +1 -1
- package/packages/tools/lib/model/semantic.d.ts +12 -0
- package/packages/tools/lib/model/semantic.d.ts.map +1 -1
- package/packages/tools/lib/model/semantic.js.map +1 -1
- package/packages/tools/lib/server/dev-server.d.ts +1 -1
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.js +123 -45
- package/packages/tools/lib/server/dev-server.js.map +1 -1
- package/packages/tools/lib/server/persistor.d.ts.map +1 -1
- package/packages/tools/lib/server/persistor.js +156 -6
- package/packages/tools/lib/server/persistor.js.map +1 -1
- package/packages/tools/lib/server/view-writer.d.ts +34 -0
- package/packages/tools/lib/server/view-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/view-writer.js +269 -0
- package/packages/tools/lib/server/view-writer.js.map +1 -0
- package/packages/tools/lib/validator/builtin-rules.d.ts.map +1 -1
- package/packages/tools/lib/validator/builtin-rules.js +5 -0
- package/packages/tools/lib/validator/builtin-rules.js.map +1 -1
- package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
- package/packages/tools/lib/validator/rule-engine.js +9 -2
- package/packages/tools/lib/validator/rule-engine.js.map +1 -1
|
@@ -5,22 +5,47 @@
|
|
|
5
5
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
6
6
|
import { existsSync, readFileSync } from 'node:fs';
|
|
7
7
|
import { resolve } from 'node:path';
|
|
8
|
-
import {
|
|
8
|
+
import { pathToFileURL } from 'node:url';
|
|
9
|
+
import { EmptyFileSystem, URI } from 'langium';
|
|
9
10
|
import { parseHelper } from 'langium/test';
|
|
10
11
|
import { createMemoSysMLServices } from '../language/memo-sysml-module.js';
|
|
12
|
+
let sharedServices;
|
|
13
|
+
let sharedParse;
|
|
14
|
+
function sharedParser() {
|
|
15
|
+
if (!sharedParse) {
|
|
16
|
+
sharedServices = createMemoSysMLServices({ ...EmptyFileSystem }).MemoSysML;
|
|
17
|
+
sharedParse = parseHelper(sharedServices);
|
|
18
|
+
}
|
|
19
|
+
return { services: sharedServices, parse: sharedParse };
|
|
20
|
+
}
|
|
21
|
+
function documentUriFor(filePath) {
|
|
22
|
+
return URI.parse(pathToFileURL(resolve(filePath)).toString());
|
|
23
|
+
}
|
|
24
|
+
/** Drop a document from the shared store when it leaves an incremental project. */
|
|
25
|
+
export function forgetDocument(filePath) {
|
|
26
|
+
if (!sharedServices)
|
|
27
|
+
return;
|
|
28
|
+
const uri = documentUriFor(filePath);
|
|
29
|
+
if (sharedServices.shared.workspace.LangiumDocuments.hasDocument(uri)) {
|
|
30
|
+
sharedServices.shared.workspace.LangiumDocuments.deleteDocument(uri);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
11
33
|
/**
|
|
12
34
|
* Parse multiple SysML files and return their ASTs.
|
|
13
35
|
* Each file is parsed independently (no cross-file resolution for MVP).
|
|
14
36
|
*/
|
|
15
37
|
export async function parseFiles(filePaths, basePath = '') {
|
|
16
|
-
const services =
|
|
17
|
-
const parse = parseHelper(services);
|
|
38
|
+
const { services, parse } = sharedParser();
|
|
18
39
|
const documents = [];
|
|
19
40
|
const errors = [];
|
|
20
41
|
for (const filePath of filePaths) {
|
|
21
42
|
try {
|
|
22
43
|
const source = readFileSync(filePath, 'utf-8');
|
|
23
|
-
const
|
|
44
|
+
const uri = documentUriFor(filePath);
|
|
45
|
+
if (services.shared.workspace.LangiumDocuments.hasDocument(uri)) {
|
|
46
|
+
services.shared.workspace.LangiumDocuments.deleteDocument(uri);
|
|
47
|
+
}
|
|
48
|
+
const doc = await parse(source, { documentUri: uri.toString() });
|
|
24
49
|
// Collect lexer + parser errors
|
|
25
50
|
const lexerErrors = doc.parseResult.lexerErrors;
|
|
26
51
|
const parserErrors = doc.parseResult.parserErrors;
|
|
@@ -77,6 +102,7 @@ export class IncrementalProjectParser {
|
|
|
77
102
|
if (!absoluteFiles.has(cached)) {
|
|
78
103
|
this.documents.delete(cached);
|
|
79
104
|
this.errors.delete(cached);
|
|
105
|
+
forgetDocument(cached);
|
|
80
106
|
}
|
|
81
107
|
}
|
|
82
108
|
const targets = changedFiles === undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-utils.js","sourceRoot":"","sources":["../../src/model/parser-utils.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,uDAAuD;AACvD,gEAAgE;AAChE,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAwB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-utils.js","sourceRoot":"","sources":["../../src/model/parser-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,6 +166,16 @@ export interface ParseError {
|
|
|
166
166
|
/** Column number (1-based) */
|
|
167
167
|
column?: number;
|
|
168
168
|
}
|
|
169
|
+
/** A qualified project reference whose named package does not provide its leaf. */
|
|
170
|
+
export interface UnresolvedReference {
|
|
171
|
+
elementId: string;
|
|
172
|
+
elementName: string;
|
|
173
|
+
elementKind: string;
|
|
174
|
+
reference: string;
|
|
175
|
+
packageName: string;
|
|
176
|
+
missingName: string;
|
|
177
|
+
file: string;
|
|
178
|
+
}
|
|
169
179
|
/** The complete semantic model — serializable for WebSocket transport */
|
|
170
180
|
export interface MemoModel {
|
|
171
181
|
/** All elements indexed by id */
|
|
@@ -176,6 +186,8 @@ export interface MemoModel {
|
|
|
176
186
|
errors: ParseError[];
|
|
177
187
|
/** Packages declared by project source, including empty ones. */
|
|
178
188
|
packages: MemoPackageDTO[];
|
|
189
|
+
/** Qualified project references that cannot resolve in their named package. */
|
|
190
|
+
unresolvedReferences?: UnresolvedReference[];
|
|
179
191
|
/** Elements grouped by kind */
|
|
180
192
|
elementsByKind: Map<string, MemoElement[]>;
|
|
181
193
|
/** Elements grouped by architecture layer */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/model/semantic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/model/semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/model/semantic.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,oEAAoE;AACpE,gEAAgE;AAChE,yEAAyE;AACzE,gFAAgF;AA4BhF,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY;IACjD,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU;IAC3C,aAAa,EAAE,cAAc,EAAE,SAAS;IACxC,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,WAAW,EAAE,SAAS;IAC9B,0EAA0E;IAC1E,2EAA2E;IAC3E,wDAAwD;IACxD,OAAO;CACD,CAAC;AAIX;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,SAA6B;IACtD,MAAM,IAAI,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzE,yEAAyE;IACzE,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,WAAW,CAAC;IAClE,OAAQ,eAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAqB,CAAC,CAAC,CAAC,MAAM,CAAC;AAClG,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/model/semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,7 +65,7 @@ export declare function isModelMutationMessage(type: string): boolean;
|
|
|
65
65
|
* is symlinked beneath Vite's dependency graph.
|
|
66
66
|
*/
|
|
67
67
|
export declare function isModelOwnedWatchPath(path: string): boolean;
|
|
68
|
-
/** Resolve only project-owned screen captures under
|
|
68
|
+
/** Resolve only project-owned screen captures, under either capture root. */
|
|
69
69
|
export declare function resolveProjectAssetRequest(projectRoot: string, requestUrl: string): string | undefined;
|
|
70
70
|
export declare function createDevServer(options: DevServerOptions): Promise<DevServer>;
|
|
71
71
|
//# sourceMappingURL=dev-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/server/dev-server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,aAAa,EAM6B,sBAAsB,EAChE,sBAAsB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/server/dev-server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,aAAa,EAM6B,sBAAsB,EAChE,sBAAsB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2B9D,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,4FAA4F;IAC5F,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,kEAAkE;IAClE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,SAAS;IACtB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACjF;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACxC,mEAAmE;IACnE,wBAAwB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG;QAChD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,cAAc,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,uEAAuE;IACvE,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACrD;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACrE,KAAK,IAAI,IAAI,CAAC;CACjB;AAaD,iEAAiE;AACjE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO3D;AAqED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWtG;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CA+kEnF"}
|
|
@@ -20,6 +20,7 @@ import { assertSingleDomainMutation, MixedMutationDomainError } from './mutation
|
|
|
20
20
|
import { classifyConflict } from './conflict-policy.js';
|
|
21
21
|
import { checkRulePolicy, insertRulePolicy, renderRulePolicy } from './rule-policy-writer.js';
|
|
22
22
|
import { loadViewLayouts, saveViewLayout } from './view-layout-store.js';
|
|
23
|
+
import { updateViewExpose, writeViewDeclaration } from './view-writer.js';
|
|
23
24
|
import { usageKeyword } from '../model/semantic.js';
|
|
24
25
|
import { loadDhfDocs, saveDhfDoc, deleteDhfDoc, loadDhfSettings, saveDhfSettings, listRepoTemplates, readRepoTemplate, saveRepoTemplate, } from './dhf-doc-store.js';
|
|
25
26
|
const MODEL_MUTATION_MESSAGES = new Set([
|
|
@@ -92,7 +93,30 @@ function streamFile(res, fullPath, status = 200) {
|
|
|
92
93
|
res.writeHead(status, { 'Content-Type': mime, 'Content-Length': size });
|
|
93
94
|
createReadStream(fullPath).pipe(res);
|
|
94
95
|
}
|
|
95
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* The subtrees a project's screen captures may be served from.
|
|
98
|
+
*
|
|
99
|
+
* `model/assets` is where MEMO put them back when the whole model lived under
|
|
100
|
+
* `model/`. A project laid out with its source in `src/` has no `model/`
|
|
101
|
+
* directory at all and keeps its captures in `assets/` beside it — and those
|
|
102
|
+
* were unreachable, so its UI Screens workspace drew every region over a
|
|
103
|
+
* blank backdrop with no error to explain it. The request simply fell through
|
|
104
|
+
* to the SPA and the `<img>` got an HTML document back.
|
|
105
|
+
*
|
|
106
|
+
* Naming roots at all is the allow-list, and that part is not negotiable:
|
|
107
|
+
* this server hands project files to a browser, so it serves these two
|
|
108
|
+
* subtrees and nothing else — not `.env`, not `.git/`, not the source.
|
|
109
|
+
*/
|
|
110
|
+
const CAPTURE_ROOTS = ['model/assets', 'assets'];
|
|
111
|
+
/** True when `candidate` is a real descendant of `root` — the traversal guard. */
|
|
112
|
+
function isWithinRoot(root, candidate) {
|
|
113
|
+
const fromRoot = relative(root, candidate);
|
|
114
|
+
return Boolean(fromRoot)
|
|
115
|
+
&& fromRoot !== '..'
|
|
116
|
+
&& !fromRoot.startsWith('../')
|
|
117
|
+
&& !fromRoot.startsWith('..\\');
|
|
118
|
+
}
|
|
119
|
+
/** Resolve only project-owned screen captures, under either capture root. */
|
|
96
120
|
export function resolveProjectAssetRequest(projectRoot, requestUrl) {
|
|
97
121
|
let pathname;
|
|
98
122
|
try {
|
|
@@ -101,15 +125,11 @@ export function resolveProjectAssetRequest(projectRoot, requestUrl) {
|
|
|
101
125
|
catch {
|
|
102
126
|
return undefined;
|
|
103
127
|
}
|
|
104
|
-
if (!pathname.startsWith('/model/'))
|
|
128
|
+
if (!pathname.startsWith('/model/') && !pathname.startsWith('/assets/'))
|
|
105
129
|
return undefined;
|
|
106
|
-
const assetRoot = resolve(projectRoot, 'model', 'assets');
|
|
107
130
|
const requested = resolve(projectRoot, pathname.replace(/^\//, ''));
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
return requested;
|
|
131
|
+
const within = CAPTURE_ROOTS.some(root => isWithinRoot(resolve(projectRoot, root), requested));
|
|
132
|
+
return within ? requested : undefined;
|
|
113
133
|
}
|
|
114
134
|
export async function createDevServer(options) {
|
|
115
135
|
const { port, webPackagePath, initialMessages, transformClientHtml } = options;
|
|
@@ -219,10 +239,19 @@ export async function createDevServer(options) {
|
|
|
219
239
|
/** Serve captures referenced by project-relative ScreenCapture.imageUri. */
|
|
220
240
|
function serveProjectAsset(req, res) {
|
|
221
241
|
const requestUrl = req.url ?? '/';
|
|
222
|
-
|
|
242
|
+
const pathname = requestUrl.split('?')[0];
|
|
243
|
+
if (!pathname.startsWith('/model/') && !pathname.startsWith('/assets/'))
|
|
223
244
|
return false;
|
|
224
245
|
const requested = resolveProjectAssetRequest(options.projectRoot, requestUrl);
|
|
225
|
-
|
|
246
|
+
const owned = Boolean(requested) && existsSync(requested) && statSync(requested).isFile();
|
|
247
|
+
if (!owned) {
|
|
248
|
+
// `/assets/` is ALSO where the client's own hashed bundles live,
|
|
249
|
+
// and this handler runs before the web dist. Claiming every
|
|
250
|
+
// `/assets/` request would 404 the application's own JavaScript,
|
|
251
|
+
// so an unclaimed one falls through; `/model/` is unambiguous and
|
|
252
|
+
// still reports a missing capture as a missing capture.
|
|
253
|
+
if (pathname.startsWith('/assets/'))
|
|
254
|
+
return false;
|
|
226
255
|
res.writeHead(404);
|
|
227
256
|
res.end('Capture not found');
|
|
228
257
|
return true;
|
|
@@ -321,19 +350,28 @@ export async function createDevServer(options) {
|
|
|
321
350
|
const { WebSocketServer } = await import('ws');
|
|
322
351
|
const wss = new WebSocketServer({ server });
|
|
323
352
|
const clients = new Set();
|
|
324
|
-
//
|
|
325
|
-
//
|
|
326
|
-
//
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
353
|
+
// Every view is DECLARED in SysML — see `view-writer.ts`. The sidecar at
|
|
354
|
+
// .memo/user-diagrams.json used to be merged in here as a second class of
|
|
355
|
+
// view, which is how a view could exist for Architect and for nothing else:
|
|
356
|
+
// no source file, so invisible to `memo validate`, to `syside check`, to
|
|
357
|
+
// review, and — wherever `.memo/` is ignored — to git.
|
|
358
|
+
//
|
|
359
|
+
// Rows left in that file are therefore not views but UNDECLARED views: an
|
|
360
|
+
// error to be fixed by declaring them, not a state to render. They are
|
|
361
|
+
// reported by id and not merged. The file is never rewritten or deleted
|
|
362
|
+
// here — those rows are the only record of what still needs declaring.
|
|
363
|
+
const undeclared = loadUserDiagrams(options.projectRoot);
|
|
364
|
+
if (undeclared.length > 0) {
|
|
365
|
+
const initialModel = initialMessages.find(m => m.type === 'model:update');
|
|
366
|
+
const declaredIds = new Set((initialModel?.payload.diagrams ?? []).map(diagram => diagram.id));
|
|
367
|
+
const orphans = undeclared.filter(diagram => !declaredIds.has(diagram.id));
|
|
368
|
+
if (orphans.length > 0) {
|
|
369
|
+
console.error(`[Views] ${orphans.length} view(s) in .memo/user-diagrams.json have no SysML declaration `
|
|
370
|
+
+ 'and were NOT loaded. Declare each as a `view … { }` in source, then delete its row:');
|
|
371
|
+
for (const orphan of orphans) {
|
|
372
|
+
console.error(` - ${orphan.id} ${orphan.name ?? ''} (${orphan.viewKind ?? 'unknown kind'})`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
337
375
|
}
|
|
338
376
|
const currentDiagrams = () => {
|
|
339
377
|
const model = initialMessages.find(m => m.type === 'model:update');
|
|
@@ -918,8 +956,10 @@ export async function createDevServer(options) {
|
|
|
918
956
|
if (existsSync(path))
|
|
919
957
|
recordWriteTransaction(sourceFile, readFileSync(path, 'utf8'));
|
|
920
958
|
}
|
|
921
|
-
//
|
|
922
|
-
//
|
|
959
|
+
// The only rows left in the sidecar are UNDECLARED views awaiting
|
|
960
|
+
// migration; none is loaded as a view. They are still kept accurate,
|
|
961
|
+
// because they are the record of what needs declaring and a dangling
|
|
962
|
+
// element ID would carry straight into the declaration.
|
|
923
963
|
const diagrams = loadUserDiagrams(options.projectRoot);
|
|
924
964
|
let changed = false;
|
|
925
965
|
const cleaned = diagrams.map(diagram => {
|
|
@@ -1254,10 +1294,17 @@ export async function createDevServer(options) {
|
|
|
1254
1294
|
const safeStem = rawStem
|
|
1255
1295
|
.normalize('NFKD').replace(/[^a-zA-Z0-9_-]+/g, '-').replace(/^-+|-+$/g, '')
|
|
1256
1296
|
|| 'capture';
|
|
1257
|
-
|
|
1297
|
+
// Write into the layout the project actually uses. Creating
|
|
1298
|
+
// `model/` under a project whose source lives in `src/`
|
|
1299
|
+
// resurrects a directory that layout deliberately does not
|
|
1300
|
+
// have, and the capture would then sit outside the tree the
|
|
1301
|
+
// rest of the model is kept in.
|
|
1302
|
+
const captureRoot = existsSync(resolve(options.projectRoot, 'model'))
|
|
1303
|
+
? resolve(options.projectRoot, 'model', 'assets')
|
|
1304
|
+
: resolve(options.projectRoot, 'assets');
|
|
1305
|
+
const assetDir = resolve(captureRoot, safeView);
|
|
1258
1306
|
const assetPath = resolve(assetDir, `${safeStem}${extension}`);
|
|
1259
|
-
|
|
1260
|
-
if (relative(modelRoot, assetPath).startsWith('..'))
|
|
1307
|
+
if (!isWithinRoot(captureRoot, assetPath))
|
|
1261
1308
|
throw new Error('Invalid capture path.');
|
|
1262
1309
|
mkdirSync(assetDir, { recursive: true });
|
|
1263
1310
|
writeFileSync(assetPath, bytes);
|
|
@@ -1276,29 +1323,60 @@ export async function createDevServer(options) {
|
|
|
1276
1323
|
else if (msg.type === 'diagram:create') {
|
|
1277
1324
|
const { projectRoot } = options;
|
|
1278
1325
|
const diagram = { ...msg.payload, auto: false };
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1326
|
+
// A view is model content, so it is DECLARED, not recorded in
|
|
1327
|
+
// a sidecar. Writing the SysML puts it where `memo validate`,
|
|
1328
|
+
// `syside check`, review and git can all see it, and — the
|
|
1329
|
+
// derived diagram then carrying a `sourceFile` — takes its
|
|
1330
|
+
// `.viewlayout` companion out of the hidden store too.
|
|
1331
|
+
const declared = await writeViewDeclaration(projectRoot, currentModel() ?? { elements: {}, diagrams: [] }, diagram);
|
|
1332
|
+
if (!declared.success) {
|
|
1333
|
+
// No fallback. A view that cannot be declared is not one
|
|
1334
|
+
// this project can hold, and recording it in a sidecar
|
|
1335
|
+
// would only hide that until something downstream needed
|
|
1336
|
+
// the declaration.
|
|
1337
|
+
const error = `The view "${diagram.name}" was not created: ${declared.reason}. `
|
|
1338
|
+
+ 'Every view must be declared in SysML.';
|
|
1339
|
+
console.error(`[Diagram] REFUSED: ${error}`);
|
|
1340
|
+
ws.send(JSON.stringify({ type: 'app:error', payload: { requestId: msg.payload?.requestId, error } }));
|
|
1341
|
+
return;
|
|
1342
|
+
}
|
|
1343
|
+
console.log(`[Diagram] Declared: ${diagram.name} (${diagram.id}) as ${declared.identifier} in ${declared.filePath}`);
|
|
1344
|
+
// The file watcher recompiles and `view-deriver` emits the
|
|
1345
|
+
// diagram; no broadcast here, or clients would briefly hold
|
|
1346
|
+
// a second, sidecar-shaped copy of it.
|
|
1347
|
+
await recompileAfterWrite();
|
|
1284
1348
|
}
|
|
1285
1349
|
else if (msg.type === 'diagram:update') {
|
|
1350
|
+
// What a view shows lives in its `expose` members, not in a
|
|
1351
|
+
// list of ids in a sidecar, so the update is applied to the
|
|
1352
|
+
// declaration. This used to edit the sidecar, which meant
|
|
1353
|
+
// that for a DECLARED view it silently did nothing at all.
|
|
1286
1354
|
const { projectRoot } = options;
|
|
1287
|
-
const
|
|
1288
|
-
const
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1355
|
+
const declared = currentDiagrams().find(d => d.id === msg.payload?.id);
|
|
1356
|
+
const result = declared
|
|
1357
|
+
? await updateViewExpose(projectRoot, currentModel() ?? { elements: {} }, declared, msg.payload?.elementIds)
|
|
1358
|
+
: { success: false, reason: `no view "${msg.payload?.id}" is declared` };
|
|
1359
|
+
if (result.success) {
|
|
1360
|
+
console.log(`[Diagram] Exposed ${result.exposed.join(', ')} on ${declared.name} (${result.filePath})`);
|
|
1361
|
+
await recompileAfterWrite();
|
|
1362
|
+
}
|
|
1363
|
+
else {
|
|
1364
|
+
const error = `The view "${declared?.name ?? msg.payload?.id}" was not changed: ${result.reason}.`;
|
|
1365
|
+
console.error(`[Diagram] REFUSED: ${error}`);
|
|
1366
|
+
ws.send(JSON.stringify({ type: 'app:error', payload: { requestId: msg.payload?.requestId, error } }));
|
|
1293
1367
|
}
|
|
1294
1368
|
}
|
|
1295
1369
|
else if (msg.type === 'diagram:delete') {
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
const
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1370
|
+
// Deleting a view means deleting its declaration, which is
|
|
1371
|
+
// `element:delete` on the view element — not a sidecar edit.
|
|
1372
|
+
const declared = currentDiagrams().find(d => d.id === msg.payload?.id);
|
|
1373
|
+
const where = declared?.sourceFile
|
|
1374
|
+
? `Remove its \`view\` declaration from ${declared.sourceFile}.`
|
|
1375
|
+
: 'It is not declared in SysML.';
|
|
1376
|
+
const error = `The view "${declared?.name ?? msg.payload?.id}" cannot be deleted from here — `
|
|
1377
|
+
+ `a view exists because it is declared. ${where}`;
|
|
1378
|
+
console.error(`[Diagram] REFUSED: ${error}`);
|
|
1379
|
+
ws.send(JSON.stringify({ type: 'app:error', payload: { requestId: msg.payload?.requestId, error } }));
|
|
1302
1380
|
}
|
|
1303
1381
|
else if (msg.type === 'diagram:layout:update') {
|
|
1304
1382
|
const { diagramId, layout } = msg.payload;
|