@flaid/devmap 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +13 -2
  2. package/dist/analyzers/analysis/extractors/fallbackExtractor.d.ts.map +1 -1
  3. package/dist/analyzers/analysis/extractors/fallbackExtractor.js +15 -0
  4. package/dist/analyzers/analysis/extractors/fallbackExtractor.js.map +1 -1
  5. package/dist/analyzers/detectors/adonisRouteDetector.d.ts +4 -0
  6. package/dist/analyzers/detectors/adonisRouteDetector.d.ts.map +1 -0
  7. package/dist/analyzers/detectors/adonisRouteDetector.js +242 -0
  8. package/dist/analyzers/detectors/adonisRouteDetector.js.map +1 -0
  9. package/dist/analyzers/detectors/angularRouteDetector.d.ts +4 -0
  10. package/dist/analyzers/detectors/angularRouteDetector.d.ts.map +1 -0
  11. package/dist/analyzers/detectors/angularRouteDetector.js +186 -0
  12. package/dist/analyzers/detectors/angularRouteDetector.js.map +1 -0
  13. package/dist/analyzers/detectors/astUtils.d.ts +20 -0
  14. package/dist/analyzers/detectors/astUtils.d.ts.map +1 -1
  15. package/dist/analyzers/detectors/astUtils.js +38 -0
  16. package/dist/analyzers/detectors/astUtils.js.map +1 -1
  17. package/dist/analyzers/detectors/capabilityDetector.d.ts.map +1 -1
  18. package/dist/analyzers/detectors/capabilityDetector.js +3 -0
  19. package/dist/analyzers/detectors/capabilityDetector.js.map +1 -1
  20. package/dist/analyzers/detectors/clientRouteDetector.d.ts +4 -0
  21. package/dist/analyzers/detectors/clientRouteDetector.d.ts.map +1 -0
  22. package/dist/analyzers/detectors/clientRouteDetector.js +417 -0
  23. package/dist/analyzers/detectors/clientRouteDetector.js.map +1 -0
  24. package/dist/analyzers/detectors/elysiaRouteDetector.d.ts +4 -0
  25. package/dist/analyzers/detectors/elysiaRouteDetector.d.ts.map +1 -0
  26. package/dist/analyzers/detectors/elysiaRouteDetector.js +186 -0
  27. package/dist/analyzers/detectors/elysiaRouteDetector.js.map +1 -0
  28. package/dist/analyzers/detectors/frameworkDetector.d.ts +2 -2
  29. package/dist/analyzers/detectors/frameworkDetector.d.ts.map +1 -1
  30. package/dist/analyzers/detectors/frameworkDetector.js +29 -1
  31. package/dist/analyzers/detectors/frameworkDetector.js.map +1 -1
  32. package/dist/analyzers/detectors/frontendFeatureDetector.d.ts +3 -0
  33. package/dist/analyzers/detectors/frontendFeatureDetector.d.ts.map +1 -1
  34. package/dist/analyzers/detectors/frontendFeatureDetector.js +61 -13
  35. package/dist/analyzers/detectors/frontendFeatureDetector.js.map +1 -1
  36. package/dist/analyzers/detectors/honoRouteDetector.d.ts.map +1 -1
  37. package/dist/analyzers/detectors/honoRouteDetector.js +230 -82
  38. package/dist/analyzers/detectors/honoRouteDetector.js.map +1 -1
  39. package/dist/analyzers/detectors/koaRouteDetector.d.ts +4 -0
  40. package/dist/analyzers/detectors/koaRouteDetector.d.ts.map +1 -0
  41. package/dist/analyzers/detectors/koaRouteDetector.js +216 -0
  42. package/dist/analyzers/detectors/koaRouteDetector.js.map +1 -0
  43. package/dist/analyzers/detectors/moduleBindings.d.ts +52 -0
  44. package/dist/analyzers/detectors/moduleBindings.d.ts.map +1 -0
  45. package/dist/analyzers/detectors/moduleBindings.js +295 -0
  46. package/dist/analyzers/detectors/moduleBindings.js.map +1 -0
  47. package/dist/analyzers/detectors/nonResourceSegments.d.ts +9 -0
  48. package/dist/analyzers/detectors/nonResourceSegments.d.ts.map +1 -0
  49. package/dist/analyzers/detectors/nonResourceSegments.js +22 -0
  50. package/dist/analyzers/detectors/nonResourceSegments.js.map +1 -0
  51. package/dist/analyzers/detectors/qwikRouteDetector.d.ts +4 -0
  52. package/dist/analyzers/detectors/qwikRouteDetector.d.ts.map +1 -0
  53. package/dist/analyzers/detectors/qwikRouteDetector.js +53 -0
  54. package/dist/analyzers/detectors/qwikRouteDetector.js.map +1 -0
  55. package/dist/analyzers/detectors/routeDetector.d.ts.map +1 -1
  56. package/dist/analyzers/detectors/routeDetector.js +46 -5
  57. package/dist/analyzers/detectors/routeDetector.js.map +1 -1
  58. package/dist/analyzers/detectors/routeUtils.d.ts +15 -1
  59. package/dist/analyzers/detectors/routeUtils.d.ts.map +1 -1
  60. package/dist/analyzers/detectors/routeUtils.js +51 -0
  61. package/dist/analyzers/detectors/routeUtils.js.map +1 -1
  62. package/dist/analyzers/detectors/solidStartRouteDetector.d.ts +4 -0
  63. package/dist/analyzers/detectors/solidStartRouteDetector.d.ts.map +1 -0
  64. package/dist/analyzers/detectors/solidStartRouteDetector.js +59 -0
  65. package/dist/analyzers/detectors/solidStartRouteDetector.js.map +1 -0
  66. package/dist/analyzers/features/featureCandidates.d.ts +6 -0
  67. package/dist/analyzers/features/featureCandidates.d.ts.map +1 -1
  68. package/dist/analyzers/features/featureCandidates.js +48 -1
  69. package/dist/analyzers/features/featureCandidates.js.map +1 -1
  70. package/dist/analyzers/features/featureDetector.d.ts.map +1 -1
  71. package/dist/analyzers/features/featureDetector.js +69 -13
  72. package/dist/analyzers/features/featureDetector.js.map +1 -1
  73. package/dist/analyzers/graph/entryPoints.d.ts.map +1 -1
  74. package/dist/analyzers/graph/entryPoints.js +13 -1
  75. package/dist/analyzers/graph/entryPoints.js.map +1 -1
  76. package/dist/analyzers/graph/sourceScope.d.ts.map +1 -1
  77. package/dist/analyzers/graph/sourceScope.js +3 -0
  78. package/dist/analyzers/graph/sourceScope.js.map +1 -1
  79. package/dist/analyzers/pipeline/projectMap.d.ts.map +1 -1
  80. package/dist/analyzers/pipeline/projectMap.js +17 -6
  81. package/dist/analyzers/pipeline/projectMap.js.map +1 -1
  82. package/dist/analyzers/pipeline/projectMetadata.js +5 -0
  83. package/dist/analyzers/pipeline/projectMetadata.js.map +1 -1
  84. package/dist/analyzers/registry/analytics.js +1 -1
  85. package/dist/analyzers/registry/analytics.js.map +1 -1
  86. package/dist/analyzers/registry/background-jobs.d.ts.map +1 -1
  87. package/dist/analyzers/registry/background-jobs.js +2 -0
  88. package/dist/analyzers/registry/background-jobs.js.map +1 -1
  89. package/dist/analyzers/registry/cms-content.d.ts.map +1 -1
  90. package/dist/analyzers/registry/cms-content.js +2 -1
  91. package/dist/analyzers/registry/cms-content.js.map +1 -1
  92. package/dist/analyzers/registry/file-upload.d.ts.map +1 -1
  93. package/dist/analyzers/registry/file-upload.js +2 -1
  94. package/dist/analyzers/registry/file-upload.js.map +1 -1
  95. package/dist/analyzers/registry/index.d.ts +2 -0
  96. package/dist/analyzers/registry/index.d.ts.map +1 -1
  97. package/dist/analyzers/registry/index.js +4 -0
  98. package/dist/analyzers/registry/index.js.map +1 -1
  99. package/dist/analyzers/registry/notifications.js +1 -1
  100. package/dist/analyzers/registry/notifications.js.map +1 -1
  101. package/dist/analyzers/registry/search.js +1 -1
  102. package/dist/analyzers/registry/search.js.map +1 -1
  103. package/dist/analyzers/registry/types.d.ts +5 -0
  104. package/dist/analyzers/registry/types.d.ts.map +1 -1
  105. package/package.json +15 -4
@@ -0,0 +1,186 @@
1
+ import { ts } from "ts-morph";
2
+ import { isArchitectureSource } from "../graph/index.js";
3
+ import { isChainTop, unwindChain, unwrapExpression, walk } from "./astUtils.js";
4
+ import { createModuleIndex, isShadowed, walkOutsideShadow } from "./moduleBindings.js";
5
+ import { joinRoutePaths, sortRoutes } from "./routeUtils.js";
6
+ /**
7
+ * Elysia apps are chains of calls on an instance:
8
+ *
9
+ * new Elysia({ prefix: "/users" }).get("/:id", h).post("/", h)
10
+ * app.group("/v1", (app) => app.get("/ping", h))
11
+ * app.guard({ beforeHandle }, (app) => app.get("/me", h))
12
+ * app.use(users) // a plugin instance, mounted at its own prefix
13
+ *
14
+ * Each `new Elysia()` is one instance. Calls on it are collected wherever they
15
+ * are written (the initializer chain, later `users.get(...)` statements, other
16
+ * files that import it), and an instance that something mounts with `.use()`
17
+ * is walked from that mount, so every endpoint is listed once under its full URL.
18
+ */
19
+ const ELYSIA_MODULE = /["']elysia["']/;
20
+ const METHODS = new Map([
21
+ ["get", "GET"], ["post", "POST"], ["put", "PUT"], ["patch", "PATCH"],
22
+ ["delete", "DELETE"], ["options", "OPTIONS"], ["head", "HEAD"],
23
+ ["all", undefined], ["ws", "WS"]
24
+ ]);
25
+ export function detectElysiaRoutes(files, graph) {
26
+ const gated = files.filter((file) => /\.[cm]?[jt]sx?$/.test(file.path) && isArchitectureSource(file.path) && ELYSIA_MODULE.test(file.content));
27
+ if (gated.length === 0)
28
+ return [];
29
+ const index = createModuleIndex(files, graph);
30
+ const instances = new Map();
31
+ const registrations = new Map();
32
+ const mounted = new Set();
33
+ const routes = new Map();
34
+ const classNames = (module) => new Set([...module.imports].filter(([, value]) => value.specifier === "elysia" && value.imported === "Elysia").map(([name]) => name));
35
+ const instanceOf = (expression, module, depth = 0) => {
36
+ if (depth > 6)
37
+ return undefined;
38
+ const node = unwrapExpression(expression);
39
+ if (ts.isNewExpression(node)) {
40
+ if (!ts.isIdentifier(node.expression) || !classNames(module).has(node.expression.text))
41
+ return undefined;
42
+ const key = `${module.path}:${node.pos}`;
43
+ let instance = instances.get(key);
44
+ if (!instance) {
45
+ instance = { key, module, prefix: prefixOf(node, module, index) };
46
+ instances.set(key, instance);
47
+ }
48
+ return instance;
49
+ }
50
+ if (ts.isCallExpression(node)) {
51
+ const { root } = unwindChain(node);
52
+ return root === node ? undefined : instanceOf(root, module, depth + 1);
53
+ }
54
+ if (ts.isIdentifier(node)) {
55
+ const binding = index.resolve(module.path, node.text);
56
+ return binding?.initializer ? instanceOf(binding.initializer, binding.module, depth + 1) : undefined;
57
+ }
58
+ return undefined;
59
+ };
60
+ // Pass 1: every chain rooted at an instance, wherever it is written.
61
+ for (const file of gated) {
62
+ const module = index.get(file.path);
63
+ if (!module)
64
+ continue;
65
+ walk(module.source, (node) => {
66
+ if (!ts.isCallExpression(node))
67
+ return;
68
+ if (ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "use" && node.arguments[0]) {
69
+ const plugin = instanceOf(node.arguments[0], module);
70
+ if (plugin)
71
+ mounted.add(plugin.key);
72
+ }
73
+ if (!isChainTop(node))
74
+ return;
75
+ const { root, calls } = unwindChain(node);
76
+ if (calls.length === 0)
77
+ return;
78
+ if (ts.isIdentifier(root) && isShadowed(node, root.text))
79
+ return;
80
+ const instance = instanceOf(root, module);
81
+ if (!instance)
82
+ return;
83
+ const list = registrations.get(instance.key) ?? [];
84
+ list.push({ module, calls });
85
+ registrations.set(instance.key, list);
86
+ });
87
+ }
88
+ const emit = (module, base, path, method) => {
89
+ const full = joinRoutePaths(base, path);
90
+ const route = { path: full, file: module.path, kind: "api", ...(method ? { methods: [method] } : {}) };
91
+ routes.set(`${method ?? "*"} ${full} ${module.path}`, route);
92
+ };
93
+ const stack = new Set();
94
+ const mount = (instance, base) => {
95
+ if (stack.has(instance.key))
96
+ return;
97
+ stack.add(instance.key);
98
+ const here = joinRoutePaths(base, instance.prefix);
99
+ for (const registration of registrations.get(instance.key) ?? []) {
100
+ processCalls(registration.calls, registration.module, here);
101
+ }
102
+ stack.delete(instance.key);
103
+ };
104
+ const processFunction = (fn, module, base) => {
105
+ const first = fn.parameters[0];
106
+ if (!first || !ts.isIdentifier(first.name) || !fn.body)
107
+ return;
108
+ const param = first.name.text;
109
+ walkOutsideShadow(fn.body, param, (node) => {
110
+ if (!ts.isCallExpression(node) || !isChainTop(node))
111
+ return;
112
+ const { root, calls } = unwindChain(node);
113
+ if (calls.length > 0 && ts.isIdentifier(root) && root.text === param) {
114
+ processCalls(calls, module, base);
115
+ return false;
116
+ }
117
+ });
118
+ };
119
+ const processCalls = (calls, module, base) => {
120
+ for (const call of calls) {
121
+ if (METHODS.has(call.name)) {
122
+ const path = index.stringOf(call.args[0], module);
123
+ if (path !== undefined)
124
+ emit(module, base, path, METHODS.get(call.name));
125
+ }
126
+ else if (call.name === "route") {
127
+ const method = index.stringOf(call.args[0], module)?.toUpperCase();
128
+ const path = index.stringOf(call.args[1], module);
129
+ if (path !== undefined)
130
+ emit(module, base, path, method);
131
+ }
132
+ else if (call.name === "group") {
133
+ const prefix = index.stringOf(call.args[0], module);
134
+ const callback = [...call.args].reverse().find(isFunctionExpression);
135
+ if (prefix !== undefined && callback)
136
+ processFunction(callback, module, joinRoutePaths(base, prefix));
137
+ }
138
+ else if (call.name === "guard") {
139
+ const callback = call.args.find(isFunctionExpression);
140
+ if (callback)
141
+ processFunction(callback, module, base);
142
+ }
143
+ else if (call.name === "use" && call.args[0]) {
144
+ usePlugin(call.args[0], module, base);
145
+ }
146
+ }
147
+ };
148
+ const usePlugin = (argument, module, base) => {
149
+ const plugin = instanceOf(argument, module);
150
+ if (plugin)
151
+ return mount(plugin, base);
152
+ const node = unwrapExpression(argument);
153
+ if (isFunctionExpression(node))
154
+ return processFunction(node, module, base);
155
+ if (ts.isIdentifier(node)) {
156
+ const binding = index.resolve(module.path, node.text);
157
+ if (binding?.fn)
158
+ processFunction(binding.fn, binding.module, base);
159
+ }
160
+ };
161
+ for (const instance of instances.values()) {
162
+ if (!mounted.has(instance.key))
163
+ mount(instance, "/");
164
+ }
165
+ return sortRoutes([...routes.values()]);
166
+ }
167
+ function isFunctionExpression(node) {
168
+ return ts.isArrowFunction(node) || ts.isFunctionExpression(node);
169
+ }
170
+ /** `new Elysia({ prefix: "/users" })` */
171
+ function prefixOf(node, module, index) {
172
+ const options = node.arguments?.[0];
173
+ if (!options || !ts.isObjectLiteralExpression(options))
174
+ return "";
175
+ for (const property of options.properties) {
176
+ if (ts.isPropertyAssignment(property) && ts.isIdentifier(property.name) && property.name.text === "prefix") {
177
+ return index.stringOf(property.initializer, module) ?? "";
178
+ }
179
+ // `{ prefix }`
180
+ if (ts.isShorthandPropertyAssignment(property) && property.name.text === "prefix") {
181
+ return index.stringOf(property.name, module) ?? "";
182
+ }
183
+ }
184
+ return "";
185
+ }
186
+ //# sourceMappingURL=elysiaRouteDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elysiaRouteDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/elysiaRouteDetector.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type ScannedFile } from "../analysis/index.js";
2
- export declare const FRONTEND_FRAMEWORKS: readonly ["nextjs", "nuxt", "sveltekit", "astro", "remix", "react-router", "tanstack-start", "tanstack-router", "expo", "react", "vue", "svelte"];
3
- export declare const BACKEND_FRAMEWORKS: readonly ["nestjs", "fastify", "express", "hono", "koa"];
2
+ export declare const FRONTEND_FRAMEWORKS: readonly ["nextjs", "nuxt", "sveltekit", "astro", "remix", "react-router", "tanstack-start", "tanstack-router", "expo", "solid-start", "qwik", "angular", "react", "vue", "svelte"];
3
+ export declare const BACKEND_FRAMEWORKS: readonly ["nestjs", "adonisjs", "fastify", "express", "hono", "elysia", "koa"];
4
4
  export type FrontendFramework = typeof FRONTEND_FRAMEWORKS[number];
5
5
  export type BackendFramework = typeof BACKEND_FRAMEWORKS[number];
6
6
  export type Framework = FrontendFramework | BackendFramework | "unknown";
@@ -1 +1 @@
1
- {"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/frameworkDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKvE,eAAO,MAAM,mBAAmB,mJAItB,CAAC;AACX,eAAO,MAAM,kBAAkB,0DAErB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,gBAAgB,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,SAAS,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAE9D,eAAO,MAAM,sBAAsB,aAAuC,CAAC;AAC3E,eAAO,MAAM,qBAAqB,aAAsC,CAAC;AAEzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,CAG/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAkK1E"}
1
+ {"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/frameworkDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKvE,eAAO,MAAM,mBAAmB,qLAKtB,CAAC;AACX,eAAO,MAAM,kBAAkB,gFAErB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,gBAAgB,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,SAAS,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAE9D,eAAO,MAAM,sBAAsB,aAAuC,CAAC;AAC3E,eAAO,MAAM,qBAAqB,aAAsC,CAAC;AAEzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,CAG/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAyL1E"}
@@ -5,10 +5,11 @@ import { isArchitectureSource } from "../graph/index.js";
5
5
  export const FRONTEND_FRAMEWORKS = [
6
6
  "nextjs", "nuxt", "sveltekit", "astro",
7
7
  "remix", "react-router", "tanstack-start", "tanstack-router", "expo",
8
+ "solid-start", "qwik", "angular",
8
9
  "react", "vue", "svelte"
9
10
  ];
10
11
  export const BACKEND_FRAMEWORKS = [
11
- "nestjs", "fastify", "express", "hono", "koa"
12
+ "nestjs", "adonisjs", "fastify", "express", "hono", "elysia", "koa"
12
13
  ];
13
14
  export const FRONTEND_FRAMEWORK_SET = new Set(FRONTEND_FRAMEWORKS);
14
15
  export const BACKEND_FRAMEWORK_SET = new Set(BACKEND_FRAMEWORKS);
@@ -48,6 +49,23 @@ export function detectFrameworks(files) {
48
49
  detected.add("sveltekit");
49
50
  if ("hono" in dependencies)
50
51
  detected.add("hono");
52
+ if ("elysia" in dependencies)
53
+ detected.add("elysia");
54
+ if ("koa" in dependencies)
55
+ detected.add("koa");
56
+ if (ADONIS_PACKAGES.some((name) => name in dependencies))
57
+ detected.add("adonisjs");
58
+ // SolidStart, Qwik City and Angular are full frameworks with their own router;
59
+ // plain `solid-js` / `@builder.io/qwik` are just component libraries.
60
+ if ("@solidjs/start" in dependencies || "solid-start" in dependencies)
61
+ detected.add("solid-start");
62
+ if (QWIK_PACKAGES.some((name) => name in dependencies))
63
+ detected.add("qwik");
64
+ // `@angular/core` alone is also what an Angular library lists, so an app needs its platform or CLI.
65
+ if ("@angular/core" in dependencies
66
+ && ("@angular/platform-browser" in dependencies || "@angular/cli" in dependencies || "@angular/build" in dependencies)) {
67
+ detected.add("angular");
68
+ }
51
69
  // Remix v2 lives under `@remix-run/*`; `@remix-run/router` is React Router's
52
70
  // own internal package and says nothing about Remix.
53
71
  if (REMIX_PACKAGES.some((name) => name in dependencies))
@@ -161,6 +179,13 @@ export function detectFrameworks(files) {
161
179
  if (files.some((file) => /(^|\/)app(?:\.config\.[cm]?[jt]s|\.json)$/.test(file.path) && file.content.includes("expo-router"))) {
162
180
  detected.add("expo");
163
181
  }
182
+ // Angular's workspace file and AdonisJS's rc file are specific to each framework.
183
+ if (files.some((file) => /(^|\/)angular\.json$/.test(file.path))) {
184
+ detected.add("angular");
185
+ }
186
+ if (files.some((file) => /(^|\/)\.?adonisrc\.(?:json|[cm]?[jt]s)$/.test(file.path))) {
187
+ detected.add("adonisjs");
188
+ }
164
189
  // Hono: like Express, the import is only trusted when no manifest can confirm it.
165
190
  if (!hasReliableManifest && sourceFiles.some((file) => /from\s+["']hono["']/.test(file.content))) {
166
191
  detected.add("hono");
@@ -174,6 +199,9 @@ const REMIX_PACKAGES = [
174
199
  "@remix-run/dev", "@remix-run/react", "@remix-run/serve",
175
200
  "@remix-run/node", "@remix-run/cloudflare", "@remix-run/deno"
176
201
  ];
202
+ const QWIK_PACKAGES = ["@builder.io/qwik-city", "@builder.io/qwik", "@qwik.dev/router", "@qwik.dev/core"];
203
+ // v6 ships `@adonisjs/core`; v4 and v5 ship `@adonisjs/framework` / `@adonisjs/core` too.
204
+ const ADONIS_PACKAGES = ["@adonisjs/core", "@adonisjs/framework"];
177
205
  const TANSTACK_ROUTER_PACKAGES = [
178
206
  "@tanstack/react-router", "@tanstack/solid-router",
179
207
  "@tanstack/router-plugin", "@tanstack/router-vite-plugin", "@tanstack/router-cli"
@@ -1 +1 @@
1
- {"version":3,"file":"frameworkDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/frameworkDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,0EAA0E;AAC1E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;IACtC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM;IACpE,OAAO,EAAE,KAAK,EAAE,QAAQ;CAChB,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK;CACrC,CAAC;AAOX,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAS,mBAAmB,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAS,kBAAkB,CAAC,CAAC;AAEzE,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,cAAc,IAAI,aAAa,IAAI,SAAS,CAAC;AACtD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE9C,4DAA4D;IAC5D,mFAAmF;IACnF,KAAK,MAAM,YAAY,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,MAAM,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,SAAS,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,OAAO,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,cAAc,IAAI,YAAY,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAC;YACvE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,eAAe,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,MAAM,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjD,6EAA6E;QAC7E,qDAAqD;QACrD,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/E,6EAA6E;QAC7E,4EAA4E;QAC5E,IAAI,mBAAmB,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3F,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnG,iFAAiF;QACjF,IAAI,aAAa,IAAI,YAAY;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,eAAe,GAAG,WAAW,IAAI,YAAY;eAC9C,eAAe,IAAI,YAAY;eAC/B,sBAAsB,IAAI,YAAY;eACtC,0BAA0B,IAAI,YAAY,CAAC;QAChD,IACE,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC;eACtB,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC;eAC1B,OAAO,IAAI,YAAY;eACvB,eAAe,EAClB,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,yEAAyE;QACzE,0EAA0E;QAC1E,2EAA2E;QAC3E,MAAM,aAAa,GAAG,oBAAoB,IAAI,YAAY;eACrD,qBAAqB,IAAI,YAAY;eACrC,kBAAkB,IAAI,YAAY;eAClC,iBAAiB,IAAI,YAAY,CAAC;QACvC,IAAI,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,YAAY,IAAI,aAAa,EAAE,CAAC;YACxE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,gBAAgB,GAAG,8BAA8B,IAAI,YAAY,CAAC;QACxE,IAAI,CAAC,CAAC,eAAe,IAAI,YAAY,CAAC,IAAI,QAAQ,IAAI,YAAY,IAAI,gBAAgB,EAAE,CAAC;YACvF,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,yFAAyF;IACzF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5E,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,qCAAqC;IACrC,IACE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;WACpE,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,iFAAiF;QACjF,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;eACxF,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/D,EACD,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,qFAAqF;IACrF,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CACjH,CAAC;IAEF,yFAAyF;IACzF,0EAA0E;IAC1E,EAAE;IACF,2FAA2F;IAC3F,uFAAuF;IACvF,6FAA6F;IAC7F,kFAAkF;IAClF,EAAE;IACF,wFAAwF;IACxF,sFAAsF;IACtF,uFAAuF;IACvF,qEAAqE;IACrE,IACE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;WACpB,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3B,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9D,EACD,CAAC;QACD,uFAAuF;QACvF,uEAAuE;IACzE,CAAC;SAAM,IAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAChG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,iFAAiF;IACjF,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/E,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,6DAA6D;IAC7D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5E,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,gFAAgF;IAChF,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5E,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,4DAA4D;IAC5D,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACvF,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,yEAAyE;IACzE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,yEAAyE;IACzE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1E,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACpF,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IAED,oFAAoF;IACpF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sDAAsD,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACjG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;IAED,yEAAyE;IACzE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CACpG,EAAE,CAAC;QACF,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,kFAAkF;IAClF,IAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACjG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO;QACL,mBAAmB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChE,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAChE,CAAC,MAAM,CAAC,CAAC,SAAS,EAAqD,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,cAAc,GAAG;IACrB,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB;IACxD,iBAAiB,EAAE,uBAAuB,EAAE,iBAAiB;CAC9D,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC/B,wBAAwB,EAAE,wBAAwB;IAClD,yBAAyB,EAAE,8BAA8B,EAAE,sBAAsB;CAClF,CAAC;AAEF,sFAAsF;AACtF,wCAAwC;AACxC,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,sDAAsD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;WACrC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC;WAChD,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAoB;IACpD,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CACtE;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAGnC,CAAC;QAEF,OAAO;YACL,GAAG,MAAM,CAAC,YAAY;YACtB,GAAG,MAAM,CAAC,eAAe;SAC1B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"frameworkDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/frameworkDetector.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { RouteInfo } from "./routeDetector.js";
2
2
  import type { FileAnalysis, ScannedFile } from "../analysis/index.js";
3
3
  import type { FileGraph } from "../graph/dependencyGraph.js";
4
4
  import type { FeatureInfo } from "../features/featureDetector.js";
5
+ export declare const HOME_FEATURE_NAME = "Home";
5
6
  /**
6
7
  * detectFrontendPageFeatures — turn Next.js App/Pages Router page routes into
7
8
  * features, independent of whether any database entity was found.
@@ -23,4 +24,6 @@ export declare function detectFrontendPageFeatures(routes: RouteInfo[], fileGrap
23
24
  * folder conventions; ownership uses the exact same reverse-graph rule.
24
25
  */
25
26
  export declare function detectClientRouteFeatures(files: ScannedFile[], fileGraph: FileGraph, analyses: Record<string, FileAnalysis>): FeatureInfo[];
27
+ /** `scheduled-posts` → "Scheduled Post", `domain_blocks` → "Domain Block", `settings` → "Settings". */
28
+ export declare function pageFeatureName(segment: string): string;
26
29
  //# sourceMappingURL=frontendFeatureDetector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontendFeatureDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/frontendFeatureDetector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AA4DlE;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EAAE,EACnB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACtC,KAAK,EAAE,WAAW,EAAE,GACnB,WAAW,EAAE,CAiCf;AA+JD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACrC,WAAW,EAAE,CAkDf"}
1
+ {"version":3,"file":"frontendFeatureDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/frontendFeatureDetector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAiBlE,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAgDxC;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EAAE,EACnB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACtC,KAAK,EAAE,WAAW,EAAE,GACnB,WAAW,EAAE,CA6Cf;AAqKD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACrC,WAAW,EAAE,CAyDf;AAkBD,uGAAuG;AACvG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKvD"}
@@ -11,6 +11,9 @@ import { singularize } from "../analysis/extractors/fallbackExtractor.js";
11
11
  * entities in capabilityDetector.ts) — "settings" or "profile" *are* real
12
12
  * pages users navigate to, so they stay in.
13
13
  */
14
+ /** Map key for the page served at "/". */
15
+ const ROOT_SEGMENT = "";
16
+ export const HOME_FEATURE_NAME = "Home";
14
17
  const NON_FEATURE_PAGE_SEGMENTS = new Set([
15
18
  "auth", "oauth", "callback",
16
19
  "api", "static", "assets", "public",
@@ -71,19 +74,30 @@ export function detectFrontendPageFeatures(routes, fileGraph, analyses, files) {
71
74
  const barrelFiles = new Set(files
72
75
  .filter((f) => isPureBarrelFile(analyses[f.path], f.content))
73
76
  .map((f) => f.path));
74
- const features = [];
75
- for (const [segment, segmentRoutes] of routesBySegment) {
77
+ const pages = [...routesBySegment].map(([segment, segmentRoutes]) => {
76
78
  const seedFiles = [...new Set(segmentRoutes.map((route) => route.file))].sort();
77
- const ownedFiles = collectOwnedFiles(seedFiles, fileGraph, reverseGraph, barrelFiles);
78
- const name = singularize(segment);
79
+ return {
80
+ segment,
81
+ segmentRoutes,
82
+ seedFiles,
83
+ ownedFiles: collectOwnedFiles(seedFiles, fileGraph, reverseGraph, barrelFiles)
84
+ };
85
+ });
86
+ dropSharedFiles(pages);
87
+ const features = [];
88
+ for (const { segment, segmentRoutes, seedFiles, ownedFiles } of pages) {
89
+ const isRoot = segment === ROOT_SEGMENT;
90
+ const name = isRoot ? HOME_FEATURE_NAME : pageFeatureName(segment);
79
91
  features.push({
80
92
  name,
81
- purpose: `Frontend page${segmentRoutes.length > 1 ? "s" : ""} under "${segment}".`,
93
+ purpose: isRoot
94
+ ? "Frontend landing page served at the site root."
95
+ : `Frontend page${segmentRoutes.length > 1 ? "s" : ""} under "${segment}".`,
82
96
  files: ownedFiles,
83
97
  entryPoint: seedFiles[0],
84
98
  entryPoints: seedFiles.slice(0, 2),
85
99
  businessFlow: [],
86
- searchTerms: [...new Set([segment.toLowerCase(), name.toLowerCase()])],
100
+ searchTerms: [...new Set([segment.toLowerCase(), name.toLowerCase()].filter(Boolean))],
87
101
  confidence: "medium",
88
102
  evidence: ownedFiles
89
103
  });
@@ -98,8 +112,13 @@ function groupBySegment(pageRoutes) {
98
112
  for (const route of pageRoutes) {
99
113
  const segments = route.path.split("/").filter(Boolean);
100
114
  const topSegment = segments[0];
101
- if (!topSegment)
102
- continue; // root "/" — no distinct feature name to derive
115
+ if (!topSegment) {
116
+ // The root page is the "Home" feature; it has no segment to name it after.
117
+ const home = bySegment.get(ROOT_SEGMENT) ?? [];
118
+ home.push(route);
119
+ bySegment.set(ROOT_SEGMENT, home);
120
+ continue;
121
+ }
103
122
  if (topSegment.startsWith("["))
104
123
  continue; // dynamic-only, e.g. /[locale]
105
124
  if (NON_FEATURE_PAGE_SEGMENTS.has(topSegment.toLowerCase()))
@@ -250,12 +269,17 @@ export function detectClientRouteFeatures(files, fileGraph, analyses) {
250
269
  const barrelFiles = new Set(files
251
270
  .filter((f) => isPureBarrelFile(analyses[f.path], f.content))
252
271
  .map((f) => f.path));
272
+ const pages = [...bySegment]
273
+ .filter(([, seedFiles]) => seedFiles.length > 0)
274
+ .map(([segment, seedFiles]) => ({
275
+ segment,
276
+ seedFiles,
277
+ ownedFiles: collectOwnedFiles(seedFiles, fileGraph, reverseGraph, barrelFiles)
278
+ }));
279
+ dropSharedFiles(pages);
253
280
  const features = [];
254
- for (const [segment, seedFiles] of bySegment) {
255
- if (seedFiles.length === 0)
256
- continue;
257
- const ownedFiles = collectOwnedFiles(seedFiles, fileGraph, reverseGraph, barrelFiles);
258
- const name = singularize(segment);
281
+ for (const { segment, seedFiles, ownedFiles } of pages) {
282
+ const name = pageFeatureName(segment);
259
283
  features.push({
260
284
  name,
261
285
  purpose: `Client-side route${seedFiles.length > 1 ? "s" : ""} under "${segment}".`,
@@ -270,6 +294,30 @@ export function detectClientRouteFeatures(files, fileGraph, analyses) {
270
294
  }
271
295
  return features;
272
296
  }
297
+ /**
298
+ * A component reachable from two different pages belongs to neither: with
299
+ * auto-imported or app-wide components every page reaches the same big tree, and
300
+ * the first page would otherwise own all of it. A page keeps its own seed files.
301
+ */
302
+ function dropSharedFiles(pages) {
303
+ const claims = new Map();
304
+ for (const page of pages) {
305
+ for (const file of page.ownedFiles)
306
+ claims.set(file, (claims.get(file) ?? 0) + 1);
307
+ }
308
+ for (const page of pages) {
309
+ const seeds = new Set(page.seedFiles);
310
+ page.ownedFiles = page.ownedFiles.filter((file) => seeds.has(file) || claims.get(file) === 1);
311
+ }
312
+ }
313
+ /** `scheduled-posts` → "Scheduled Post", `domain_blocks` → "Domain Block", `settings` → "Settings". */
314
+ export function pageFeatureName(segment) {
315
+ const words = segment.split(/[-_.\s]+/).filter(Boolean);
316
+ if (words.length === 0)
317
+ return segment;
318
+ words[words.length - 1] = singularize(words[words.length - 1]);
319
+ return words.map((word) => word[0].toUpperCase() + word.slice(1)).join(" ");
320
+ }
273
321
  /**
274
322
  * collectOwnedFiles — seed files plus every file reachable from them whose
275
323
  * *every* referrer is also within that reachable set. A component (or
@@ -1 +1 @@
1
- {"version":3,"file":"frontendFeatureDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/frontendFeatureDetector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontendFeatureDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/frontendFeatureDetector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"honoRouteDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/honoRouteDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAgDpD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/B,SAAS,EAAE,CA2Ob"}
1
+ {"version":3,"file":"honoRouteDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/honoRouteDetector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAsGpD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/B,SAAS,EAAE,CA6Ub"}