modality-ts 0.0.5 → 0.0.7

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.
@@ -9,6 +9,7 @@ export interface HandlerExtractionResult {
9
9
  export interface HandlerExtractorOptions {
10
10
  route: string;
11
11
  fileName: string;
12
+ routePatterns: readonly string[];
12
13
  effectApis: readonly string[];
13
14
  stateVars: readonly StateVarDecl[];
14
15
  writeChannels: readonly WriteChannel[];
@@ -19,6 +20,7 @@ export interface ExtractionPipelineOptions {
19
20
  sourceText: string;
20
21
  fileName: string;
21
22
  route: string;
23
+ routePatterns?: readonly string[];
22
24
  effectApis?: readonly string[];
23
25
  sourcePlugins?: readonly StateSourcePlugin[];
24
26
  routerPlugin?: RouterPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extraction/pipeline/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC,QAAQ,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,uBAAuB,CAAC;CACrG;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,OAAO,EAAE;QACP,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;QACrC,MAAM,CAAC,EAAE,gBAAgB,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,aAAa,EAS5D,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,aAAa,GAAE,SAAS,iBAAiB,EAAO,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAMvJ;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,wBAAwB,CA2ClG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extraction/pipeline/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC,QAAQ,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,uBAAuB,CAAC;CACrG;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,OAAO,EAAE;QACP,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;QACrC,MAAM,CAAC,EAAE,gBAAgB,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,aAAa,EAS5D,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,aAAa,GAAE,SAAS,iBAAiB,EAAO,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAMvJ;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,wBAAwB,CA4ClG"}
@@ -40,6 +40,7 @@ export function runExtractionPipeline(options) {
40
40
  route: options.route,
41
41
  fileName: options.fileName,
42
42
  effectApis: options.effectApis ?? [],
43
+ routePatterns: options.routePatterns ?? [],
43
44
  stateVars: [...stateVars, ...templateFragments.flatMap((fragment) => fragment.vars)],
44
45
  writeChannels,
45
46
  sourcePlugins,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extraction/pipeline/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extraction/pipeline/index.ts"],"names":[],"mappings":"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"}
@@ -274,9 +274,41 @@ function validateRouteLocalWrites(errors, transition, actualWrites, varsById) {
274
274
  const routes = [...new Set(routeLocalWrites.map((decl) => decl.scope.route))].sort();
275
275
  if (routes.length > 1)
276
276
  errors.push(`${transition.id}: writes route-local vars for multiple routes: ${routes.join(", ")}`);
277
- if (actualWrites.has("sys:route") || actualWrites.has("sys:history")) {
278
- errors.push(`${transition.id}: writes route-local vars while navigating`);
279
- }
277
+ validateRouteLocalWriteOrder(errors, transition.id, transition.effect, varsById);
278
+ }
279
+ function validateRouteLocalWriteOrder(errors, transitionId, effect, varsById) {
280
+ const routeLocalWriteAfterNavigation = (node, afterNavigation) => {
281
+ switch (node.kind) {
282
+ case "assign":
283
+ case "havoc":
284
+ case "choose":
285
+ if (afterNavigation && varsById.get(node.var)?.scope.kind === "route-local") {
286
+ errors.push(`${transitionId}: writes route-local vars after navigating`);
287
+ }
288
+ return afterNavigation;
289
+ case "opaque":
290
+ if (afterNavigation && node.ref.declaredWrites.some((id) => varsById.get(id)?.scope.kind === "route-local")) {
291
+ errors.push(`${transitionId}: writes route-local vars after navigating`);
292
+ }
293
+ return afterNavigation;
294
+ case "navigate":
295
+ return true;
296
+ case "if": {
297
+ const thenAfter = routeLocalWriteAfterNavigation(node.then, afterNavigation);
298
+ const elseAfter = routeLocalWriteAfterNavigation(node.else, afterNavigation);
299
+ return thenAfter || elseAfter;
300
+ }
301
+ case "seq": {
302
+ let current = afterNavigation;
303
+ for (const child of node.effects)
304
+ current = routeLocalWriteAfterNavigation(child, current);
305
+ return current;
306
+ }
307
+ default:
308
+ return afterNavigation;
309
+ }
310
+ };
311
+ routeLocalWriteAfterNavigation(effect, false);
280
312
  }
281
313
  function validateEffectShape(errors, transitionId, effect) {
282
314
  walkEffect(effect, (node) => {
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/kernel/ir/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/kernel/ir/validator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/modality/features/extract/command.ts"],"names":[],"mappings":"AAMA,OAAO,EAA2E,KAAK,gBAAgB,EAAE,KAAK,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AACrL,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAMlF,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmFrG"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/modality/features/extract/command.ts"],"names":[],"mappings":"AAMA,OAAO,EAA2E,KAAK,gBAAgB,EAAE,KAAK,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AACrL,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAMlF,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqFrG"}
@@ -1,4 +1,4 @@
1
- import { mkdir, readFile, writeFile } from "node:fs/promises";
1
+ import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
2
2
  import { createHash } from "node:crypto";
3
3
  import { dirname, join, parse, resolve } from "node:path";
4
4
  import { pathToFileURL } from "node:url";
@@ -10,11 +10,11 @@ import { emitAppModel } from "../../codegen/model.js";
10
10
  import { loadAndApplyOverlay, loadOverlaySpec } from "../../overlay.js";
11
11
  import { createBuiltinModalityRegistry } from "../../registry/index.js";
12
12
  export async function runExtractCommand(options) {
13
- const config = await loadModalityConfig(options.configPath ?? await findNearestConfig(dirname(options.sourcePath)));
14
- const source = await readFile(options.sourcePath, "utf8");
13
+ const project = await loadExtractionProject(options.sourcePath);
14
+ const config = await loadModalityConfig(options.configPath ?? await findNearestConfig(project.configStartDir));
15
15
  const route = options.route ?? config.route ?? "/";
16
16
  const appModelPath = options.appModelPath ?? `${dirname(options.modelPath)}/app.model.ts`;
17
- const packageJsonPath = options.packageJsonPath ?? config.packageJsonPath ?? await findNearestPackageJson(dirname(options.sourcePath));
17
+ const packageJsonPath = options.packageJsonPath ?? config.packageJsonPath ?? await findNearestPackageJson(project.configStartDir);
18
18
  const dependencies = await readPackageDependencies(packageJsonPath);
19
19
  const registry = createBuiltinModalityRegistry({
20
20
  dependencies,
@@ -22,27 +22,29 @@ export async function runExtractCommand(options) {
22
22
  extraSourcePlugins: [...(config.plugins ?? []), ...(options.sourcePlugins ?? [])],
23
23
  routerPlugin: options.routerPlugin ?? config.routerPlugin
24
24
  });
25
- const effectApis = uniqueStrings([...(config.effectApis ?? []), ...(options.effectApis ?? [])]);
25
+ const effectApis = uniqueStrings([...(config.effectApis ?? []), ...(options.effectApis ?? []), ...project.effectApis]);
26
26
  const bounds = { maxDepth: 12, maxPending: 3, maxInternalSteps: 16, ...(config.bounds ?? {}), ...(options.bounds ?? {}) };
27
- const discoverySource = await sourceWithLocalImports(options.sourcePath, source);
28
27
  const pipeline = runExtractionPipeline({
29
- sourceText: discoverySource,
30
- fileName: options.sourcePath,
28
+ sourceText: project.sourceText,
29
+ fileName: project.entryFile,
31
30
  route,
32
31
  effectApis,
33
32
  sourcePlugins: registry.sourcePlugins,
34
33
  routerPlugin: registry.routerPlugin,
35
- extractHandlers: (sourceText, handlerOptions) => extractUseStateSkeleton(sourceText, handlerOptions)
34
+ extractHandlers: (sourceText, handlerOptions) => extractUseStateSkeleton(sourceText, { ...handlerOptions, routePatterns: project.routes })
36
35
  });
37
36
  const transitions = [...pipeline.transitions];
38
- const routeVars = pipeline.routeVars.length > 0 ? pipeline.routeVars : defaultRouteVars([route], { route, bounds: { maxHistory: 4 } });
37
+ const discoveredRoutes = uniqueStrings([route, ...project.routes, ...transitionNavigatedRoutes(transitions)]);
38
+ const routeVars = registry.routerPlugin
39
+ ? registry.routerPlugin.routeVars(discoveredRoutes, { route, bounds: { maxHistory: 4 } })
40
+ : defaultRouteVars(discoveredRoutes, { route, bounds: { maxHistory: 4 } });
39
41
  const templateVars = pipeline.templateFragments.flatMap((fragment) => fragment.vars);
40
42
  const stateVars = refineAssignedLiteralDomains([...pipeline.stateVars, ...templateVars], transitions);
41
43
  const extractedModel = {
42
44
  schemaVersion: 1,
43
45
  id: "extracted-model",
44
46
  bounds,
45
- metadata: { sourceHashes: { [options.sourcePath]: sha256(source) }, plugins: pluginProvenance(pipeline.plugins) },
47
+ metadata: { sourceHashes: sourceHashes(project.sources), plugins: pluginProvenance(pipeline.plugins) },
46
48
  vars: [...routeVars, ...pendingVars(effectApis, transitions, [...routeVars, ...stateVars], bounds.maxPending), ...stateVars],
47
49
  transitions
48
50
  };
@@ -65,7 +67,7 @@ export async function runExtractCommand(options) {
65
67
  extractionCaveats
66
68
  }
67
69
  };
68
- const report = createExtractionReport(options.sourcePath, model, warnings, overlay.ignoredVars, options.now ?? new Date());
70
+ const report = createExtractionReport(project.sourceFiles, model, warnings, overlay.ignoredVars, options.now ?? new Date());
69
71
  await mkdir(dirname(options.modelPath), { recursive: true });
70
72
  await writeFile(options.modelPath, `${canonicalJson(model)}\n`, "utf8");
71
73
  await mkdir(dirname(appModelPath), { recursive: true });
@@ -93,37 +95,68 @@ export async function runExtractCommand(options) {
93
95
  ]
94
96
  };
95
97
  }
96
- async function sourceWithLocalImports(sourcePath, source) {
97
- const seen = new Set([resolve(sourcePath)]);
98
- const chunks = [source];
99
- const queue = localImportSpecifiers(source).map((specifier) => resolveImportPath(dirname(sourcePath), specifier)).filter((path) => Boolean(path));
98
+ async function loadExtractionProject(sourcePath) {
99
+ const resolved = resolve(sourcePath);
100
+ const info = await stat(resolved);
101
+ if (!info.isDirectory()) {
102
+ const source = await readFile(resolved, "utf8");
103
+ const tsconfig = await readTsConfigResolution(dirname(resolved));
104
+ const imported = await sourceWithLocalImports([{ path: resolved, text: source }], tsconfig);
105
+ return {
106
+ entryFile: resolved,
107
+ sourceText: imported.sources.map((entry) => entry.text).join("\n"),
108
+ sourceFiles: imported.sources.map((entry) => entry.path),
109
+ sources: imported.sources,
110
+ routes: [],
111
+ effectApis: fetchEffectApis(imported.sources.map((entry) => entry.text).join("\n")),
112
+ configStartDir: dirname(resolved)
113
+ };
114
+ }
115
+ const routesPath = join(resolved, "app", "routes.ts");
116
+ const routeEntries = parseReactRouterRoutes(await readFile(routesPath, "utf8"));
117
+ const rootPath = join(resolved, "app", "root.tsx");
118
+ const roots = await existingFiles([rootPath]);
119
+ const entries = [
120
+ ...await Promise.all(roots.map(async (path) => ({ path, text: await readFile(path, "utf8") }))),
121
+ ...await Promise.all(routeEntries.map(async (entry) => ({ path: resolve(dirname(routesPath), entry.file), text: await readFile(resolve(dirname(routesPath), entry.file), "utf8") })))
122
+ ];
123
+ const tsconfig = await readTsConfigResolution(resolved);
124
+ const imported = await sourceWithLocalImports(entries, tsconfig);
125
+ const sourceText = imported.sources.map((entry) => entry.text).join("\n");
126
+ return {
127
+ entryFile: routesPath,
128
+ sourceText,
129
+ sourceFiles: imported.sources.map((entry) => entry.path),
130
+ sources: imported.sources,
131
+ routes: uniqueStrings(routeEntries.map((entry) => entry.pattern)),
132
+ effectApis: fetchEffectApis(sourceText),
133
+ configStartDir: resolved
134
+ };
135
+ }
136
+ async function sourceWithLocalImports(entries, tsconfig) {
137
+ const seen = new Set();
138
+ const sources = [];
139
+ const queue = [...entries];
100
140
  while (queue.length > 0) {
101
141
  const next = queue.shift();
102
- const canonical = resolve(next);
142
+ const canonical = resolve(next.path);
103
143
  if (seen.has(canonical))
104
144
  continue;
105
- let text;
106
- try {
107
- text = await readFile(canonical, "utf8");
108
- }
109
- catch {
110
- continue;
111
- }
112
145
  seen.add(canonical);
113
- chunks.push(text);
114
- for (const specifier of localImportSpecifiers(text)) {
115
- const imported = resolveImportPath(dirname(canonical), specifier);
146
+ sources.push({ path: canonical, text: next.text });
147
+ for (const specifier of localImportSpecifiers(next.text)) {
148
+ const imported = await resolveImportPath(dirname(canonical), specifier, tsconfig);
116
149
  if (imported)
117
- queue.push(imported);
150
+ queue.push({ path: imported, text: await readFile(imported, "utf8") });
118
151
  }
119
152
  }
120
- return chunks.join("\n");
153
+ return { sources };
121
154
  }
122
155
  function localImportSpecifiers(source) {
123
156
  const specs = [];
124
157
  const parsed = tsCreateSourceFile(source);
125
158
  const visit = (node) => {
126
- if (tsIsImportDeclaration(node) && tsIsStringLiteral(node.moduleSpecifier) && node.moduleSpecifier.text.startsWith(".")) {
159
+ if (tsIsImportDeclaration(node) && tsIsStringLiteral(node.moduleSpecifier) && isLocalImportSpecifier(node.moduleSpecifier.text)) {
127
160
  specs.push(node.moduleSpecifier.text);
128
161
  }
129
162
  tsForEachChild(node, visit);
@@ -143,12 +176,174 @@ function tsIsStringLiteral(node) {
143
176
  function tsForEachChild(node, cb) {
144
177
  ts.forEachChild(node, cb);
145
178
  }
146
- function resolveImportPath(baseDir, specifier) {
147
- const base = resolve(baseDir, specifier);
179
+ function isLocalImportSpecifier(specifier) {
180
+ return specifier.startsWith(".") || specifier.startsWith("~/");
181
+ }
182
+ async function resolveImportPath(baseDir, specifier, tsconfig) {
183
+ if (specifier.startsWith("./+types/") || specifier.startsWith("../+types/"))
184
+ return undefined;
185
+ const bases = importBases(baseDir, specifier, tsconfig);
186
+ for (const base of bases) {
187
+ const resolved = await firstExistingModulePath(base);
188
+ if (resolved)
189
+ return resolved;
190
+ }
191
+ return undefined;
192
+ }
193
+ function importBases(baseDir, specifier, tsconfig) {
194
+ if (specifier.startsWith("."))
195
+ return [resolve(baseDir, specifier)];
196
+ const matches = tsconfig.paths.flatMap((entry) => {
197
+ if (!specifier.startsWith(entry.prefix) || !specifier.endsWith(entry.suffix))
198
+ return [];
199
+ const star = specifier.slice(entry.prefix.length, specifier.length - entry.suffix.length);
200
+ return entry.targets.map((target) => resolve(target.replace("*", star)));
201
+ });
202
+ if (matches.length > 0)
203
+ return matches;
204
+ return tsconfig.baseUrl ? [resolve(tsconfig.baseUrl, specifier)] : [];
205
+ }
206
+ async function firstExistingModulePath(base) {
148
207
  const candidates = /\.[cm]?[jt]sx?$/.test(base)
149
208
  ? [base]
150
209
  : [`${base}.ts`, `${base}.tsx`, `${base}.mts`, `${base}.cts`, join(base, "index.ts"), join(base, "index.tsx")];
151
- return candidates[0];
210
+ for (const candidate of candidates) {
211
+ try {
212
+ const candidateStat = await stat(candidate);
213
+ if (candidateStat.isFile())
214
+ return candidate;
215
+ }
216
+ catch (error) {
217
+ if (error.code !== "ENOENT")
218
+ throw error;
219
+ }
220
+ }
221
+ return undefined;
222
+ }
223
+ async function readTsConfigResolution(startDir) {
224
+ const tsconfigPath = await findNearestTsConfig(startDir);
225
+ if (!tsconfigPath)
226
+ return { paths: [] };
227
+ const parsed = JSON.parse(await readFile(tsconfigPath, "utf8"));
228
+ const configDir = dirname(tsconfigPath);
229
+ const baseUrl = parsed.compilerOptions?.baseUrl ? resolve(configDir, parsed.compilerOptions.baseUrl) : configDir;
230
+ const paths = Object.entries(parsed.compilerOptions?.paths ?? {}).map(([key, targets]) => {
231
+ const star = key.indexOf("*");
232
+ const prefix = star >= 0 ? key.slice(0, star) : key;
233
+ const suffix = star >= 0 ? key.slice(star + 1) : "";
234
+ return { prefix, suffix, targets: targets.map((target) => resolve(baseUrl, target)) };
235
+ });
236
+ return { baseUrl, paths };
237
+ }
238
+ async function findNearestTsConfig(startDir) {
239
+ let dir = startDir;
240
+ while (true) {
241
+ const candidate = join(dir, "tsconfig.json");
242
+ try {
243
+ await readFile(candidate, "utf8");
244
+ return candidate;
245
+ }
246
+ catch (error) {
247
+ if (error.code !== "ENOENT")
248
+ throw error;
249
+ }
250
+ const parent = dirname(dir);
251
+ if (parent === dir || dir === parse(dir).root)
252
+ return undefined;
253
+ dir = parent;
254
+ }
255
+ }
256
+ async function existingFiles(paths) {
257
+ const found = [];
258
+ for (const path of paths) {
259
+ try {
260
+ const info = await stat(path);
261
+ if (info.isFile())
262
+ found.push(path);
263
+ }
264
+ catch (error) {
265
+ if (error.code !== "ENOENT")
266
+ throw error;
267
+ }
268
+ }
269
+ return found;
270
+ }
271
+ function parseReactRouterRoutes(source) {
272
+ const routes = [];
273
+ const parsed = tsCreateSourceFile(source);
274
+ const visit = (node) => {
275
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
276
+ if (node.expression.text === "index" && ts.isStringLiteral(node.arguments[0])) {
277
+ routes.push({ pattern: "/", file: node.arguments[0].text });
278
+ }
279
+ if (node.expression.text === "route" && ts.isStringLiteral(node.arguments[0]) && ts.isStringLiteral(node.arguments[1])) {
280
+ routes.push({ pattern: reactRouterPathPattern(node.arguments[0].text), file: node.arguments[1].text });
281
+ }
282
+ }
283
+ tsForEachChild(node, visit);
284
+ };
285
+ visit(parsed);
286
+ return routes;
287
+ }
288
+ function reactRouterPathPattern(pattern) {
289
+ const normalized = pattern.startsWith("/") ? pattern : `/${pattern}`;
290
+ return normalized.replace(/\$([A-Za-z0-9_]+)/g, ":$1").replace(/\*$/, "*");
291
+ }
292
+ function sourceHashes(sources) {
293
+ return Object.fromEntries(sources.map((source) => [source.path, sha256(source.text)]));
294
+ }
295
+ function fetchEffectApis(sourceText) {
296
+ const source = tsCreateSourceFile(sourceText);
297
+ const ops = new Set();
298
+ const visit = (node) => {
299
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "fetch") {
300
+ const op = fetchOpId(node);
301
+ if (op)
302
+ ops.add(op);
303
+ }
304
+ tsForEachChild(node, visit);
305
+ };
306
+ visit(source);
307
+ return [...ops].sort();
308
+ }
309
+ function fetchOpId(call) {
310
+ const first = call.arguments[0];
311
+ if (!first)
312
+ return undefined;
313
+ const path = fetchPathValue(first);
314
+ if (!path)
315
+ return undefined;
316
+ const method = fetchMethodValue(call.arguments[1]) ?? "GET";
317
+ return `${method} ${path}`;
318
+ }
319
+ function fetchPathValue(expression) {
320
+ if (ts.isStringLiteral(expression) || ts.isNoSubstitutionTemplateLiteral(expression))
321
+ return normalizeFetchPath(expression.text);
322
+ if (ts.isTemplateExpression(expression)) {
323
+ let value = expression.head.text;
324
+ for (const span of expression.templateSpans)
325
+ value += ":id" + span.literal.text;
326
+ return normalizeFetchPath(value);
327
+ }
328
+ return undefined;
329
+ }
330
+ function normalizeFetchPath(path) {
331
+ return (path.startsWith("/") ? path : `/${path}`).replace(/\/:param(?=\/|$)/g, "/:id");
332
+ }
333
+ function fetchMethodValue(expression) {
334
+ if (!expression || !ts.isObjectLiteralExpression(expression))
335
+ return undefined;
336
+ const method = expression.properties.find((property) => ts.isPropertyAssignment(property) && propertyName(property.name) === "method");
337
+ const value = method ? literalString(method.initializer) : undefined;
338
+ return value?.toUpperCase();
339
+ }
340
+ function literalString(expression) {
341
+ return ts.isStringLiteral(expression) || ts.isNoSubstitutionTemplateLiteral(expression) ? expression.text : undefined;
342
+ }
343
+ function propertyName(name) {
344
+ if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name))
345
+ return name.text;
346
+ return undefined;
152
347
  }
153
348
  async function readOverlaySpec(model, overlayPath) {
154
349
  return loadOverlaySpec(model, overlayPath);
@@ -223,7 +418,7 @@ async function assertMatchesExpectedModel(model, expectedModelPath) {
223
418
  throw new Error(`Extracted model differs from expected snapshot ${expectedModelPath}`);
224
419
  }
225
420
  }
226
- function createExtractionReport(sourcePath, model, warnings, ignoredVars, now) {
421
+ function createExtractionReport(sourceFiles, model, warnings, ignoredVars, now) {
227
422
  const caveats = model.metadata?.extractionCaveats ?? emptyExtractionCaveats();
228
423
  const transitionHandlers = model.transitions.map((transition) => ({
229
424
  id: transition.id,
@@ -247,7 +442,7 @@ function createExtractionReport(sourcePath, model, warnings, ignoredVars, now) {
247
442
  schemaVersion: 1,
248
443
  kind: "extraction-report",
249
444
  generatedAt: now.toISOString(),
250
- sourceFiles: [sourcePath],
445
+ sourceFiles,
251
446
  plugins: model.metadata?.plugins ?? [],
252
447
  handlers,
253
448
  globalTaints: caveats.globalTaints,
@@ -340,6 +535,21 @@ function firstSemverMajor(range) {
340
535
  function pluginProvenance(plugins) {
341
536
  return [...plugins.sources, ...(plugins.router ? [plugins.router] : [])].sort((left, right) => left.kind.localeCompare(right.kind) || left.id.localeCompare(right.id));
342
537
  }
538
+ function transitionNavigatedRoutes(transitions) {
539
+ const routes = new Set();
540
+ const visit = (effect) => {
541
+ if (effect.kind === "navigate" && effect.to?.kind === "lit" && typeof effect.to.value === "string")
542
+ routes.add(effect.to.value);
543
+ if (effect.kind === "seq")
544
+ effect.effects.forEach(visit);
545
+ if (effect.kind === "if") {
546
+ visit(effect.then);
547
+ visit(effect.else);
548
+ }
549
+ };
550
+ transitions.forEach((transition) => visit(transition.effect));
551
+ return [...routes].sort();
552
+ }
343
553
  function overApproxReasons(transition) {
344
554
  const reasons = new Set();
345
555
  if (transition.id.endsWith(".escaped"))