@loj-lang/rdsl-compiler 0.5.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.
Files changed (78) hide show
  1. package/README.md +23 -0
  2. package/dist/cache-signature.d.ts +2 -0
  3. package/dist/cache-signature.d.ts.map +1 -0
  4. package/dist/cache-signature.js +17 -0
  5. package/dist/cache-signature.js.map +1 -0
  6. package/dist/codegen.d.ts +37 -0
  7. package/dist/codegen.d.ts.map +1 -0
  8. package/dist/codegen.js +6394 -0
  9. package/dist/codegen.js.map +1 -0
  10. package/dist/dependency-graph.d.ts +23 -0
  11. package/dist/dependency-graph.d.ts.map +1 -0
  12. package/dist/dependency-graph.js +516 -0
  13. package/dist/dependency-graph.js.map +1 -0
  14. package/dist/expr.d.ts +24 -0
  15. package/dist/expr.d.ts.map +1 -0
  16. package/dist/expr.js +359 -0
  17. package/dist/expr.js.map +1 -0
  18. package/dist/flow-proof.d.ts +68 -0
  19. package/dist/flow-proof.d.ts.map +1 -0
  20. package/dist/flow-proof.js +487 -0
  21. package/dist/flow-proof.js.map +1 -0
  22. package/dist/host-files.d.ts +27 -0
  23. package/dist/host-files.d.ts.map +1 -0
  24. package/dist/host-files.js +441 -0
  25. package/dist/host-files.js.map +1 -0
  26. package/dist/index.d.ts +120 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +948 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/ir.d.ts +451 -0
  31. package/dist/ir.d.ts.map +1 -0
  32. package/dist/ir.js +13 -0
  33. package/dist/ir.js.map +1 -0
  34. package/dist/manifest.d.ts +104 -0
  35. package/dist/manifest.d.ts.map +1 -0
  36. package/dist/manifest.js +635 -0
  37. package/dist/manifest.js.map +1 -0
  38. package/dist/node-inspect.d.ts +23 -0
  39. package/dist/node-inspect.d.ts.map +1 -0
  40. package/dist/node-inspect.js +475 -0
  41. package/dist/node-inspect.js.map +1 -0
  42. package/dist/normalize.d.ts +101 -0
  43. package/dist/normalize.d.ts.map +1 -0
  44. package/dist/normalize.js +1771 -0
  45. package/dist/normalize.js.map +1 -0
  46. package/dist/page-table-block.d.ts +69 -0
  47. package/dist/page-table-block.d.ts.map +1 -0
  48. package/dist/page-table-block.js +241 -0
  49. package/dist/page-table-block.js.map +1 -0
  50. package/dist/parser.d.ts +262 -0
  51. package/dist/parser.d.ts.map +1 -0
  52. package/dist/parser.js +1335 -0
  53. package/dist/parser.js.map +1 -0
  54. package/dist/project-paths.d.ts +6 -0
  55. package/dist/project-paths.d.ts.map +1 -0
  56. package/dist/project-paths.js +84 -0
  57. package/dist/project-paths.js.map +1 -0
  58. package/dist/relation-projection.d.ts +60 -0
  59. package/dist/relation-projection.d.ts.map +1 -0
  60. package/dist/relation-projection.js +121 -0
  61. package/dist/relation-projection.js.map +1 -0
  62. package/dist/rules-proof.d.ts +95 -0
  63. package/dist/rules-proof.d.ts.map +1 -0
  64. package/dist/rules-proof.js +537 -0
  65. package/dist/rules-proof.js.map +1 -0
  66. package/dist/source-files.d.ts +9 -0
  67. package/dist/source-files.d.ts.map +1 -0
  68. package/dist/source-files.js +27 -0
  69. package/dist/source-files.js.map +1 -0
  70. package/dist/style-proof.d.ts +70 -0
  71. package/dist/style-proof.d.ts.map +1 -0
  72. package/dist/style-proof.js +640 -0
  73. package/dist/style-proof.js.map +1 -0
  74. package/dist/validator.d.ts +51 -0
  75. package/dist/validator.d.ts.map +1 -0
  76. package/dist/validator.js +2487 -0
  77. package/dist/validator.js.map +1 -0
  78. package/package.json +40 -0
@@ -0,0 +1,635 @@
1
+ import { createStableSignature } from './cache-signature.js';
2
+ import { createDependencyRootSignature, buildDependencyGraph, } from './dependency-graph.js';
3
+ import { collectHostFileSegments, listHostFilesForNode as listNodeHostFiles, mergeHostFileSegments, } from './host-files.js';
4
+ const COMPILER_VERSION = '0.1.1';
5
+ const SOURCE_NODE_REGEX = /@source-node\s+([A-Za-z0-9._-]+)/;
6
+ const MANIFEST_CACHE_VERSION = '0.1.2';
7
+ export function buildSemanticManifest(ir, entryFile, sourceFiles = [entryFile], moduleGraph, options = {}) {
8
+ return buildManifestArtifacts(ir, [], entryFile, sourceFiles, moduleGraph, options).semanticManifest;
9
+ }
10
+ export function buildTraceManifest(ir, files, entryFile, sourceFiles = [entryFile], semanticManifestPath = '.rdsl/semantic-manifest.json', options = {}) {
11
+ return buildManifestArtifacts(ir, files, entryFile, sourceFiles, undefined, {
12
+ ...options,
13
+ semanticManifestPath,
14
+ }).traceManifest;
15
+ }
16
+ export function buildManifestArtifacts(ir, files, entryFile, sourceFiles = [entryFile], moduleGraph, options = {}) {
17
+ const dependencyGraph = options.dependencyGraph ?? buildDependencyGraph(ir);
18
+ const previousCache = options.cache?.version === MANIFEST_CACHE_VERSION
19
+ ? options.cache
20
+ : undefined;
21
+ const affectedRootIds = options.affectedRootIds;
22
+ const hostFileSegments = collectHostFileSegments(ir, {
23
+ readFile: options.readHostFile,
24
+ });
25
+ const traceNodeSegments = collectTraceNodeSegments(ir);
26
+ const nextHostFileRoots = {};
27
+ const nextTraceNodeRoots = {};
28
+ const hostFilesByRoot = {};
29
+ const traceNodesByRoot = {};
30
+ for (const rootId of dependencyGraph.roots) {
31
+ const rootSignature = createDependencyRootSignature(dependencyGraph, rootId);
32
+ const shouldReuseRoot = previousCache &&
33
+ !affectedRootIds?.has(rootId);
34
+ const hostFileSignature = createStableSignature(hostFileSegments[rootId] ?? []);
35
+ const hostFileEntry = resolveManifestRootEntry(hostFileSignature, previousCache?.hostFileRoots[rootId], previousCache !== undefined, () => hostFileSegments[rootId] ?? []);
36
+ nextHostFileRoots[rootId] = hostFileEntry.cacheEntry;
37
+ hostFilesByRoot[rootId] = hostFileEntry.entries;
38
+ const traceNodeEntry = resolveManifestRootEntry(rootSignature, previousCache?.traceNodeRoots[rootId], shouldReuseRoot, () => traceNodeSegments[rootId] ?? []);
39
+ nextTraceNodeRoots[rootId] = traceNodeEntry.cacheEntry;
40
+ traceNodesByRoot[rootId] = traceNodeEntry.entries;
41
+ }
42
+ const sourceFilePathsEntry = resolveManifestValue(createStableSignature(sourceFiles), previousCache?.sourceFilePaths, () => [...sourceFiles]);
43
+ const traceSourceFilesEntry = resolveManifestValue(sourceFilePathsEntry.cacheEntry.signature, previousCache?.traceSourceFiles, () => sourceFilePathsEntry.value.map((path) => ({ path })));
44
+ const moduleGraphEntry = resolveManifestValue(createStableSignature(normalizeOptionalModuleGraph(moduleGraph)), previousCache?.moduleGraph, () => cloneOptionalModuleGraph(moduleGraph));
45
+ const hostFilesEntry = resolveManifestValue(createStableSignature(createRootSignatureList(nextHostFileRoots)), previousCache?.hostFiles, () => mergeHostFileSegments(hostFilesByRoot));
46
+ const baseNodesEntry = resolveManifestValue(createStableSignature(createRootSignatureList(nextTraceNodeRoots)), previousCache?.baseNodes, () => Object.values(traceNodesByRoot).flat());
47
+ const baseNodeMap = new Map(baseNodesEntry.value.map((node) => [node.id, node]));
48
+ const nextFileTrace = {};
49
+ const nextGeneratedFileEntries = {};
50
+ for (const file of files) {
51
+ const signature = createStableSignature({
52
+ path: file.path,
53
+ sourceNode: file.sourceNode,
54
+ content: file.content,
55
+ });
56
+ const previousFileTrace = previousCache?.fileTrace[file.path];
57
+ const resolved = previousFileTrace && previousFileTrace.signature === signature
58
+ ? previousFileTrace
59
+ : buildFileTraceEntry(file, baseNodeMap);
60
+ nextFileTrace[file.path] = resolved;
61
+ const generatedFileEntry = resolveManifestValue(createStableSignature({
62
+ path: file.path,
63
+ rootNodeId: file.sourceNode,
64
+ }), previousCache?.generatedFileEntries[file.path], () => ({
65
+ path: file.path,
66
+ rootNodeId: file.sourceNode,
67
+ }));
68
+ nextGeneratedFileEntries[file.path] = generatedFileEntry.cacheEntry;
69
+ }
70
+ const generatedFilesEntry = resolveManifestValue(createStableSignature(files.map((file) => [
71
+ file.path,
72
+ nextGeneratedFileEntries[file.path]?.signature,
73
+ ])), previousCache?.generatedFiles, () => files.map((file) => nextGeneratedFileEntries[file.path].value));
74
+ const traceNodesEntry = resolveManifestValue(createStableSignature({
75
+ base: baseNodesEntry.cacheEntry.signature,
76
+ files: files.map((file) => [file.path, nextFileTrace[file.path]?.signature]),
77
+ }), previousCache?.traceNodes, () => mergeTraceNodes(baseNodesEntry.value, files, nextFileTrace));
78
+ const traceRegionsEntry = resolveManifestValue(createStableSignature(files.map((file) => [file.path, nextFileTrace[file.path]?.signature])), previousCache?.traceRegions, () => files.flatMap((file) => nextFileTrace[file.path]?.regions ?? []));
79
+ const semanticManifestSignature = createStableSignature({
80
+ entryFile,
81
+ sourceFiles: sourceFilePathsEntry.cacheEntry.signature,
82
+ moduleGraph: moduleGraphEntry.cacheEntry.signature,
83
+ hostFiles: hostFilesEntry.cacheEntry.signature,
84
+ });
85
+ const semanticManifest = previousCache?.semanticManifest &&
86
+ previousCache.semanticManifest.signature === semanticManifestSignature &&
87
+ previousCache.semanticManifest.value.ir === ir
88
+ ? previousCache.semanticManifest.value
89
+ : createSemanticManifest(ir, entryFile, sourceFilePathsEntry.value, moduleGraphEntry.value, hostFilesEntry.value);
90
+ const semanticManifestEntry = {
91
+ signature: semanticManifestSignature,
92
+ value: semanticManifest,
93
+ };
94
+ const traceManifestSignature = createStableSignature({
95
+ entryFile,
96
+ semanticManifestPath: options.semanticManifestPath ?? '.rdsl/semantic-manifest.json',
97
+ sourceFiles: traceSourceFilesEntry.cacheEntry.signature,
98
+ generatedFiles: generatedFilesEntry.cacheEntry.signature,
99
+ nodes: traceNodesEntry.cacheEntry.signature,
100
+ regions: traceRegionsEntry.cacheEntry.signature,
101
+ });
102
+ const traceManifest = previousCache?.traceManifest &&
103
+ previousCache.traceManifest.signature === traceManifestSignature
104
+ ? previousCache.traceManifest.value
105
+ : createTraceManifestObject(ir, entryFile, options.semanticManifestPath ?? '.rdsl/semantic-manifest.json', traceSourceFilesEntry.value, generatedFilesEntry.value, traceNodesEntry.value, traceRegionsEntry.value);
106
+ const traceManifestEntry = {
107
+ signature: traceManifestSignature,
108
+ value: traceManifest,
109
+ };
110
+ const manifestJson = previousCache?.manifestJson &&
111
+ previousCache.manifestJson.signature === semanticManifestSignature &&
112
+ previousCache.semanticManifest?.value === semanticManifest
113
+ ? previousCache.manifestJson.value
114
+ : JSON.stringify(semanticManifest, null, 2);
115
+ const manifestJsonEntry = {
116
+ signature: semanticManifestSignature,
117
+ value: manifestJson,
118
+ };
119
+ return {
120
+ semanticManifest,
121
+ traceManifest,
122
+ manifestJson,
123
+ cacheSnapshot: {
124
+ version: MANIFEST_CACHE_VERSION,
125
+ hostFileRoots: nextHostFileRoots,
126
+ traceNodeRoots: nextTraceNodeRoots,
127
+ fileTrace: nextFileTrace,
128
+ sourceFilePaths: sourceFilePathsEntry.cacheEntry,
129
+ traceSourceFiles: traceSourceFilesEntry.cacheEntry,
130
+ moduleGraph: moduleGraphEntry.cacheEntry,
131
+ hostFiles: hostFilesEntry.cacheEntry,
132
+ generatedFileEntries: nextGeneratedFileEntries,
133
+ generatedFiles: generatedFilesEntry.cacheEntry,
134
+ baseNodes: baseNodesEntry.cacheEntry,
135
+ traceNodes: traceNodesEntry.cacheEntry,
136
+ traceRegions: traceRegionsEntry.cacheEntry,
137
+ semanticManifest: semanticManifestEntry,
138
+ traceManifest: traceManifestEntry,
139
+ manifestJson: manifestJsonEntry,
140
+ },
141
+ };
142
+ }
143
+ function createSemanticManifest(ir, entryFile, sourceFiles, moduleGraph, hostFiles) {
144
+ const semanticManifest = {
145
+ artifact: 'rdsl.semantic-manifest',
146
+ schemaVersion: ir.schemaVersion,
147
+ compilerVersion: COMPILER_VERSION,
148
+ entryFile,
149
+ sourceFiles,
150
+ ir,
151
+ };
152
+ if (moduleGraph && Object.keys(moduleGraph).length > 0) {
153
+ semanticManifest.moduleGraph = moduleGraph;
154
+ }
155
+ if (hostFiles.length > 0) {
156
+ semanticManifest.hostFiles = hostFiles;
157
+ }
158
+ return semanticManifest;
159
+ }
160
+ function createTraceManifestObject(ir, entryFile, semanticManifestPath, sourceFiles, generatedFiles, nodes, regions) {
161
+ return {
162
+ artifact: 'rdsl.trace-manifest',
163
+ schemaVersion: ir.schemaVersion,
164
+ compilerVersion: COMPILER_VERSION,
165
+ entryFile,
166
+ semanticManifest: semanticManifestPath,
167
+ sourceFiles,
168
+ generatedFiles,
169
+ nodes,
170
+ regions,
171
+ };
172
+ }
173
+ export function findTraceNode(traceManifest, nodeId) {
174
+ return traceManifest.nodes.find((node) => node.id === nodeId);
175
+ }
176
+ export function listTraceRegionsForNode(traceManifest, nodeId) {
177
+ return traceManifest.regions.filter((region) => region.nodeId === nodeId);
178
+ }
179
+ export function listManifestHostFilesForNode(semanticManifest, nodeId) {
180
+ return listNodeHostFiles(semanticManifest.hostFiles ?? [], nodeId);
181
+ }
182
+ export function resolveTraceLocation(traceManifest, generatedFile, line, col = 1) {
183
+ const normalizedFile = normalizePath(generatedFile);
184
+ const candidates = traceManifest.regions
185
+ .filter((region) => normalizePath(region.generatedFile) === normalizedFile && containsLocation(region.range, line, col))
186
+ .map((region) => ({ region, node: findTraceNode(traceManifest, region.nodeId) }));
187
+ if (candidates.length === 0) {
188
+ return null;
189
+ }
190
+ candidates.sort((left, right) => compareRangeSpecificity(left.region.range, right.region.range));
191
+ const bestScore = rangeSpecificity(candidates[0].region.range);
192
+ const bestMatches = candidates.filter((candidate) => rangeSpecificity(candidate.region.range) === bestScore);
193
+ return {
194
+ kind: bestMatches.length > 1 ? 'ambiguous' : 'match',
195
+ matches: bestMatches,
196
+ };
197
+ }
198
+ function collectTraceNodes(ir) {
199
+ const nodes = [];
200
+ const visit = (node, parentId) => {
201
+ nodes.push({
202
+ id: node.id,
203
+ kind: node.kind,
204
+ sourceSpan: node.sourceSpan,
205
+ parentId,
206
+ });
207
+ };
208
+ visit(ir);
209
+ for (const group of ir.navigation) {
210
+ visit(group, ir.id);
211
+ for (const item of group.items) {
212
+ visit(item, group.id);
213
+ }
214
+ }
215
+ for (const model of ir.models) {
216
+ visit(model, ir.id);
217
+ for (const field of model.fields) {
218
+ visit(field, model.id);
219
+ }
220
+ }
221
+ for (const resource of ir.resources) {
222
+ visit(resource, ir.id);
223
+ visitResourceViewNodes(resource.views.list, resource.id, visit);
224
+ visitResourceViewNodes(resource.views.edit, resource.id, visit);
225
+ visitResourceViewNodes(resource.views.create, resource.id, visit);
226
+ visitResourceViewNodes(resource.views.read, resource.id, visit);
227
+ }
228
+ for (const page of ir.pages) {
229
+ visit(page, ir.id);
230
+ for (const action of page.actions) {
231
+ visit(action, page.id);
232
+ }
233
+ for (const block of page.blocks) {
234
+ visit(block, page.id);
235
+ }
236
+ }
237
+ return nodes;
238
+ }
239
+ function collectTraceNodeSegments(ir) {
240
+ const segments = {};
241
+ const addNode = (rootId, node, parentId) => {
242
+ const entries = segments[rootId] ?? [];
243
+ entries.push({
244
+ id: node.id,
245
+ kind: node.kind,
246
+ sourceSpan: node.sourceSpan,
247
+ parentId,
248
+ });
249
+ segments[rootId] = entries;
250
+ };
251
+ addNode(ir.id, ir);
252
+ for (const group of ir.navigation) {
253
+ addNode(ir.id, group, ir.id);
254
+ for (const item of group.items) {
255
+ addNode(ir.id, item, group.id);
256
+ }
257
+ }
258
+ for (const model of ir.models) {
259
+ addNode(model.id, model, ir.id);
260
+ for (const field of model.fields) {
261
+ addNode(model.id, field, model.id);
262
+ }
263
+ }
264
+ for (const resource of ir.resources) {
265
+ addNode(resource.id, resource, ir.id);
266
+ visitResourceViewNodes(resource.views.list, resource.id, (node, parentId) => addNode(resource.id, node, parentId));
267
+ visitResourceViewNodes(resource.views.edit, resource.id, (node, parentId) => addNode(resource.id, node, parentId));
268
+ visitResourceViewNodes(resource.views.create, resource.id, (node, parentId) => addNode(resource.id, node, parentId));
269
+ visitResourceViewNodes(resource.views.read, resource.id, (node, parentId) => addNode(resource.id, node, parentId));
270
+ }
271
+ for (const readModel of ir.readModels) {
272
+ addNode(readModel.id, readModel, ir.id);
273
+ if (readModel.rules) {
274
+ addNode(readModel.id, readModel.rules, readModel.id);
275
+ }
276
+ for (const field of [...readModel.inputs, ...readModel.result]) {
277
+ addNode(readModel.id, field, readModel.id);
278
+ }
279
+ if (readModel.list) {
280
+ addNode(readModel.id, readModel.list, readModel.id);
281
+ for (const column of readModel.list.columns) {
282
+ addNode(readModel.id, column, readModel.list.id);
283
+ }
284
+ }
285
+ }
286
+ for (const page of ir.pages) {
287
+ addNode(page.id, page, ir.id);
288
+ for (const action of page.actions) {
289
+ addNode(page.id, action, page.id);
290
+ }
291
+ for (const block of page.blocks) {
292
+ addNode(page.id, block, page.id);
293
+ for (const action of block.rowActions) {
294
+ addNode(page.id, action, block.id);
295
+ }
296
+ }
297
+ }
298
+ return segments;
299
+ }
300
+ function visitResourceViewNodes(view, parentId, visit) {
301
+ if (!view)
302
+ return;
303
+ visit(view, parentId);
304
+ if ('filters' in view) {
305
+ for (const filter of view.filters) {
306
+ visit(filter, view.id);
307
+ }
308
+ }
309
+ if ('columns' in view) {
310
+ for (const column of view.columns) {
311
+ visit(column, view.id);
312
+ }
313
+ }
314
+ if ('actions' in view) {
315
+ for (const action of view.actions) {
316
+ visit(action, view.id);
317
+ }
318
+ }
319
+ if ('fields' in view) {
320
+ for (const field of view.fields) {
321
+ visit(field, view.id);
322
+ }
323
+ }
324
+ if ('includes' in view) {
325
+ for (const include of view.includes) {
326
+ visit(include, view.id);
327
+ for (const field of include.fields) {
328
+ visit(field, include.id);
329
+ }
330
+ }
331
+ }
332
+ if ('related' in view) {
333
+ for (const panel of view.related) {
334
+ visit(panel, view.id);
335
+ }
336
+ }
337
+ }
338
+ function extractSourceMarkers(content) {
339
+ const lines = content.split('\n');
340
+ const markers = [];
341
+ for (let index = 0; index < lines.length; index += 1) {
342
+ const match = lines[index]?.match(SOURCE_NODE_REGEX);
343
+ if (match) {
344
+ markers.push({
345
+ nodeId: match[1],
346
+ line: index + 1,
347
+ });
348
+ }
349
+ }
350
+ return markers;
351
+ }
352
+ function buildFileTraceEntry(file, baseNodeMap) {
353
+ const nodeMap = new Map(baseNodeMap);
354
+ const syntheticNodes = [];
355
+ for (const marker of extractSourceMarkers(file.content)) {
356
+ if (!nodeMap.has(marker.nodeId)) {
357
+ const syntheticNode = synthesizeTraceNode(marker.nodeId, nodeMap);
358
+ nodeMap.set(syntheticNode.id, syntheticNode);
359
+ syntheticNodes.push(syntheticNode);
360
+ }
361
+ }
362
+ const regions = [{
363
+ generatedFile: file.path,
364
+ range: generatedFileRange(file.path, file.content),
365
+ nodeId: file.sourceNode,
366
+ role: 'file.root',
367
+ }, ...buildMarkerRegions(file, nodeMap)];
368
+ return {
369
+ signature: createStableSignature({
370
+ path: file.path,
371
+ sourceNode: file.sourceNode,
372
+ content: file.content,
373
+ }),
374
+ nodes: syntheticNodes,
375
+ regions,
376
+ };
377
+ }
378
+ function synthesizeTraceNode(nodeId, nodeMap) {
379
+ const parentId = deriveSyntheticParentId(nodeId, nodeMap);
380
+ return {
381
+ id: nodeId,
382
+ kind: deriveSyntheticKind(nodeId),
383
+ parentId,
384
+ sourceSpan: parentId ? nodeMap.get(parentId)?.sourceSpan : undefined,
385
+ };
386
+ }
387
+ function deriveSyntheticParentId(nodeId, nodeMap) {
388
+ if (nodeId === 'app.main.router' && nodeMap.has('app.main')) {
389
+ return 'app.main';
390
+ }
391
+ const ruleParentMatch = nodeId.match(/^(.*)\.rules\.(visibleIf|enabledIf|allowIf|enforce)$/);
392
+ if (ruleParentMatch && nodeMap.has(ruleParentMatch[1])) {
393
+ return ruleParentMatch[1];
394
+ }
395
+ let candidate = nodeId;
396
+ while (candidate.includes('.')) {
397
+ candidate = candidate.substring(0, candidate.lastIndexOf('.'));
398
+ if (nodeMap.has(candidate)) {
399
+ return candidate;
400
+ }
401
+ }
402
+ return undefined;
403
+ }
404
+ function deriveSyntheticKind(nodeId) {
405
+ if (nodeId === 'app.main.router')
406
+ return 'router';
407
+ const ruleMatch = nodeId.match(/\.rules\.(visibleIf|enabledIf|allowIf|enforce)$/);
408
+ if (ruleMatch) {
409
+ return `rule.${ruleMatch[1]}`;
410
+ }
411
+ if (nodeId.endsWith('.columns'))
412
+ return 'columns';
413
+ if (nodeId.endsWith('.filters'))
414
+ return 'filters';
415
+ if (nodeId.endsWith('.schema'))
416
+ return 'schema';
417
+ return 'synthetic';
418
+ }
419
+ function buildMarkerRegions(file, nodeMap) {
420
+ const markers = extractSourceMarkers(file.content).filter((marker) => nodeMap.has(marker.nodeId));
421
+ if (markers.length === 0)
422
+ return [];
423
+ const lines = file.content.split('\n');
424
+ const regions = [];
425
+ const stack = [];
426
+ for (const marker of markers) {
427
+ while (stack.length > 0 && !isStrictAncestor(stack[stack.length - 1].nodeId, marker.nodeId, nodeMap)) {
428
+ const openMarker = stack.pop();
429
+ regions.push({
430
+ generatedFile: file.path,
431
+ range: buildLineRange(file.path, lines, openMarker.line, marker.line - 1),
432
+ nodeId: openMarker.nodeId,
433
+ role: roleForNode(file.path, nodeMap.get(openMarker.nodeId)),
434
+ });
435
+ }
436
+ stack.push(marker);
437
+ }
438
+ while (stack.length > 0) {
439
+ const openMarker = stack.pop();
440
+ regions.push({
441
+ generatedFile: file.path,
442
+ range: buildLineRange(file.path, lines, openMarker.line, lines.length),
443
+ nodeId: openMarker.nodeId,
444
+ role: roleForNode(file.path, nodeMap.get(openMarker.nodeId)),
445
+ });
446
+ }
447
+ return regions;
448
+ }
449
+ function isStrictAncestor(possibleAncestorId, nodeId, nodeMap) {
450
+ if (possibleAncestorId === nodeId)
451
+ return false;
452
+ let current = nodeMap.get(nodeId);
453
+ while (current?.parentId) {
454
+ if (current.parentId === possibleAncestorId) {
455
+ return true;
456
+ }
457
+ current = nodeMap.get(current.parentId);
458
+ }
459
+ return false;
460
+ }
461
+ function roleForNode(filePath, node) {
462
+ const normalizedFile = normalizePath(filePath);
463
+ if (normalizedFile === 'router.tsx' && (node.kind.startsWith('view.') || node.kind === 'page')) {
464
+ return 'router.route';
465
+ }
466
+ if (normalizedFile === 'layout/AdminLayout.tsx' && node.kind === 'navGroup') {
467
+ return 'nav.group';
468
+ }
469
+ if (normalizedFile === 'layout/AdminLayout.tsx' && node.kind === 'navItem') {
470
+ return 'nav.item';
471
+ }
472
+ switch (node.kind) {
473
+ case 'app':
474
+ return 'app.root';
475
+ case 'resource':
476
+ return 'resource.root';
477
+ case 'model':
478
+ return 'model.root';
479
+ case 'field':
480
+ return 'field.definition';
481
+ case 'filter':
482
+ return 'filter.definition';
483
+ case 'column':
484
+ return 'column.definition';
485
+ case 'action':
486
+ return 'action.definition';
487
+ case 'formField':
488
+ return 'field.definition';
489
+ case 'view.list':
490
+ case 'view.edit':
491
+ case 'view.create':
492
+ case 'view.read':
493
+ return 'component.root';
494
+ case 'relatedPanel':
495
+ return 'panel.definition';
496
+ case 'page':
497
+ return 'page.root';
498
+ case 'pageAction':
499
+ return 'action.definition';
500
+ case 'dashboardBlock':
501
+ return 'block.definition';
502
+ case 'router':
503
+ return 'router.root';
504
+ case 'columns':
505
+ return 'columns.group';
506
+ case 'filters':
507
+ return 'filters.group';
508
+ case 'rule.visibleIf':
509
+ return 'rule.visibleIf';
510
+ case 'rule.enabledIf':
511
+ return 'rule.enabledIf';
512
+ case 'rule.allowIf':
513
+ return 'rule.allowIf';
514
+ case 'rule.enforce':
515
+ return 'rule.enforce';
516
+ case 'navGroup':
517
+ return 'nav.group';
518
+ case 'navItem':
519
+ return 'nav.item';
520
+ default:
521
+ return `${node.kind}.region`;
522
+ }
523
+ }
524
+ function containsLocation(range, line, col) {
525
+ if (line < range.startLine || line > range.endLine)
526
+ return false;
527
+ if (line === range.startLine && col < range.startCol)
528
+ return false;
529
+ if (line === range.endLine && col >= range.endCol)
530
+ return false;
531
+ return true;
532
+ }
533
+ function compareRangeSpecificity(left, right) {
534
+ return rangeSpecificity(left) - rangeSpecificity(right);
535
+ }
536
+ function rangeSpecificity(range) {
537
+ const lineSpan = Math.max(range.endLine - range.startLine, 0);
538
+ const colSpan = Math.max(range.endCol - range.startCol, 0);
539
+ return lineSpan * 100000 + colSpan;
540
+ }
541
+ function buildLineRange(path, lines, startLine, endLine) {
542
+ const safeStartLine = Math.max(1, Math.min(startLine, lines.length));
543
+ const safeEndLine = Math.max(safeStartLine, Math.min(endLine, lines.length));
544
+ const endCol = (lines[safeEndLine - 1] ?? '').length + 1;
545
+ return {
546
+ file: path,
547
+ startLine: safeStartLine,
548
+ startCol: 1,
549
+ endLine: safeEndLine,
550
+ endCol,
551
+ };
552
+ }
553
+ function generatedFileRange(path, content) {
554
+ const lines = content.length > 0 ? content.split('\n') : [''];
555
+ const lastLine = lines.length;
556
+ const lastCol = (lines[lastLine - 1] ?? '').length + 1;
557
+ return {
558
+ file: path,
559
+ startLine: 1,
560
+ startCol: 1,
561
+ endLine: lastLine,
562
+ endCol: lastCol,
563
+ };
564
+ }
565
+ function normalizePath(path) {
566
+ return path.replace(/\\/g, '/');
567
+ }
568
+ function resolveManifestRootEntry(signature, previous, shouldReuse, emit) {
569
+ if (previous && shouldReuse && previous.signature === signature) {
570
+ return {
571
+ entries: previous.entries,
572
+ cacheEntry: previous,
573
+ };
574
+ }
575
+ const entries = emit();
576
+ return {
577
+ entries,
578
+ cacheEntry: {
579
+ signature,
580
+ entries,
581
+ },
582
+ };
583
+ }
584
+ function resolveManifestValue(signature, previous, emit) {
585
+ if (previous && previous.signature === signature) {
586
+ return {
587
+ value: previous.value,
588
+ cacheEntry: previous,
589
+ };
590
+ }
591
+ const value = emit();
592
+ return {
593
+ value,
594
+ cacheEntry: {
595
+ signature,
596
+ value,
597
+ },
598
+ };
599
+ }
600
+ function createRootSignatureList(entries) {
601
+ return Object.entries(entries)
602
+ .sort(([left], [right]) => left.localeCompare(right))
603
+ .map(([rootId, entry]) => [rootId, entry.signature]);
604
+ }
605
+ function normalizeOptionalModuleGraph(moduleGraph) {
606
+ if (!moduleGraph || !Object.values(moduleGraph).some((imports) => imports.length > 0)) {
607
+ return null;
608
+ }
609
+ return moduleGraph;
610
+ }
611
+ function cloneOptionalModuleGraph(moduleGraph) {
612
+ if (!moduleGraph || !Object.values(moduleGraph).some((imports) => imports.length > 0)) {
613
+ return undefined;
614
+ }
615
+ const clone = {};
616
+ for (const [fileName, imports] of Object.entries(moduleGraph)) {
617
+ clone[fileName] = [...imports];
618
+ }
619
+ return clone;
620
+ }
621
+ function mergeTraceNodes(baseNodes, files, fileTrace) {
622
+ const merged = [...baseNodes];
623
+ const seen = new Set(baseNodes.map((node) => node.id));
624
+ for (const file of files) {
625
+ for (const node of fileTrace[file.path]?.nodes ?? []) {
626
+ if (seen.has(node.id)) {
627
+ continue;
628
+ }
629
+ seen.add(node.id);
630
+ merged.push(node);
631
+ }
632
+ }
633
+ return merged;
634
+ }
635
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}