@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.
- package/README.md +13 -2
- package/dist/analyzers/analysis/extractors/fallbackExtractor.d.ts.map +1 -1
- package/dist/analyzers/analysis/extractors/fallbackExtractor.js +15 -0
- package/dist/analyzers/analysis/extractors/fallbackExtractor.js.map +1 -1
- package/dist/analyzers/detectors/adonisRouteDetector.d.ts +4 -0
- package/dist/analyzers/detectors/adonisRouteDetector.d.ts.map +1 -0
- package/dist/analyzers/detectors/adonisRouteDetector.js +242 -0
- package/dist/analyzers/detectors/adonisRouteDetector.js.map +1 -0
- package/dist/analyzers/detectors/angularRouteDetector.d.ts +4 -0
- package/dist/analyzers/detectors/angularRouteDetector.d.ts.map +1 -0
- package/dist/analyzers/detectors/angularRouteDetector.js +186 -0
- package/dist/analyzers/detectors/angularRouteDetector.js.map +1 -0
- package/dist/analyzers/detectors/astUtils.d.ts +20 -0
- package/dist/analyzers/detectors/astUtils.d.ts.map +1 -1
- package/dist/analyzers/detectors/astUtils.js +38 -0
- package/dist/analyzers/detectors/astUtils.js.map +1 -1
- package/dist/analyzers/detectors/capabilityDetector.d.ts.map +1 -1
- package/dist/analyzers/detectors/capabilityDetector.js +3 -0
- package/dist/analyzers/detectors/capabilityDetector.js.map +1 -1
- package/dist/analyzers/detectors/clientRouteDetector.d.ts +4 -0
- package/dist/analyzers/detectors/clientRouteDetector.d.ts.map +1 -0
- package/dist/analyzers/detectors/clientRouteDetector.js +417 -0
- package/dist/analyzers/detectors/clientRouteDetector.js.map +1 -0
- package/dist/analyzers/detectors/elysiaRouteDetector.d.ts +4 -0
- package/dist/analyzers/detectors/elysiaRouteDetector.d.ts.map +1 -0
- package/dist/analyzers/detectors/elysiaRouteDetector.js +186 -0
- package/dist/analyzers/detectors/elysiaRouteDetector.js.map +1 -0
- package/dist/analyzers/detectors/frameworkDetector.d.ts +2 -2
- package/dist/analyzers/detectors/frameworkDetector.d.ts.map +1 -1
- package/dist/analyzers/detectors/frameworkDetector.js +29 -1
- package/dist/analyzers/detectors/frameworkDetector.js.map +1 -1
- package/dist/analyzers/detectors/frontendFeatureDetector.d.ts +3 -0
- package/dist/analyzers/detectors/frontendFeatureDetector.d.ts.map +1 -1
- package/dist/analyzers/detectors/frontendFeatureDetector.js +61 -13
- package/dist/analyzers/detectors/frontendFeatureDetector.js.map +1 -1
- package/dist/analyzers/detectors/honoRouteDetector.d.ts.map +1 -1
- package/dist/analyzers/detectors/honoRouteDetector.js +230 -82
- package/dist/analyzers/detectors/honoRouteDetector.js.map +1 -1
- package/dist/analyzers/detectors/koaRouteDetector.d.ts +4 -0
- package/dist/analyzers/detectors/koaRouteDetector.d.ts.map +1 -0
- package/dist/analyzers/detectors/koaRouteDetector.js +216 -0
- package/dist/analyzers/detectors/koaRouteDetector.js.map +1 -0
- package/dist/analyzers/detectors/moduleBindings.d.ts +52 -0
- package/dist/analyzers/detectors/moduleBindings.d.ts.map +1 -0
- package/dist/analyzers/detectors/moduleBindings.js +295 -0
- package/dist/analyzers/detectors/moduleBindings.js.map +1 -0
- package/dist/analyzers/detectors/nonResourceSegments.d.ts +9 -0
- package/dist/analyzers/detectors/nonResourceSegments.d.ts.map +1 -0
- package/dist/analyzers/detectors/nonResourceSegments.js +22 -0
- package/dist/analyzers/detectors/nonResourceSegments.js.map +1 -0
- package/dist/analyzers/detectors/qwikRouteDetector.d.ts +4 -0
- package/dist/analyzers/detectors/qwikRouteDetector.d.ts.map +1 -0
- package/dist/analyzers/detectors/qwikRouteDetector.js +53 -0
- package/dist/analyzers/detectors/qwikRouteDetector.js.map +1 -0
- package/dist/analyzers/detectors/routeDetector.d.ts.map +1 -1
- package/dist/analyzers/detectors/routeDetector.js +46 -5
- package/dist/analyzers/detectors/routeDetector.js.map +1 -1
- package/dist/analyzers/detectors/routeUtils.d.ts +15 -1
- package/dist/analyzers/detectors/routeUtils.d.ts.map +1 -1
- package/dist/analyzers/detectors/routeUtils.js +51 -0
- package/dist/analyzers/detectors/routeUtils.js.map +1 -1
- package/dist/analyzers/detectors/solidStartRouteDetector.d.ts +4 -0
- package/dist/analyzers/detectors/solidStartRouteDetector.d.ts.map +1 -0
- package/dist/analyzers/detectors/solidStartRouteDetector.js +59 -0
- package/dist/analyzers/detectors/solidStartRouteDetector.js.map +1 -0
- package/dist/analyzers/features/featureCandidates.d.ts +6 -0
- package/dist/analyzers/features/featureCandidates.d.ts.map +1 -1
- package/dist/analyzers/features/featureCandidates.js +48 -1
- package/dist/analyzers/features/featureCandidates.js.map +1 -1
- package/dist/analyzers/features/featureDetector.d.ts.map +1 -1
- package/dist/analyzers/features/featureDetector.js +69 -13
- package/dist/analyzers/features/featureDetector.js.map +1 -1
- package/dist/analyzers/graph/entryPoints.d.ts.map +1 -1
- package/dist/analyzers/graph/entryPoints.js +13 -1
- package/dist/analyzers/graph/entryPoints.js.map +1 -1
- package/dist/analyzers/graph/sourceScope.d.ts.map +1 -1
- package/dist/analyzers/graph/sourceScope.js +3 -0
- package/dist/analyzers/graph/sourceScope.js.map +1 -1
- package/dist/analyzers/pipeline/projectMap.d.ts.map +1 -1
- package/dist/analyzers/pipeline/projectMap.js +17 -6
- package/dist/analyzers/pipeline/projectMap.js.map +1 -1
- package/dist/analyzers/pipeline/projectMetadata.js +5 -0
- package/dist/analyzers/pipeline/projectMetadata.js.map +1 -1
- package/dist/analyzers/registry/analytics.js +1 -1
- package/dist/analyzers/registry/analytics.js.map +1 -1
- package/dist/analyzers/registry/background-jobs.d.ts.map +1 -1
- package/dist/analyzers/registry/background-jobs.js +2 -0
- package/dist/analyzers/registry/background-jobs.js.map +1 -1
- package/dist/analyzers/registry/cms-content.d.ts.map +1 -1
- package/dist/analyzers/registry/cms-content.js +2 -1
- package/dist/analyzers/registry/cms-content.js.map +1 -1
- package/dist/analyzers/registry/file-upload.d.ts.map +1 -1
- package/dist/analyzers/registry/file-upload.js +2 -1
- package/dist/analyzers/registry/file-upload.js.map +1 -1
- package/dist/analyzers/registry/index.d.ts +2 -0
- package/dist/analyzers/registry/index.d.ts.map +1 -1
- package/dist/analyzers/registry/index.js +4 -0
- package/dist/analyzers/registry/index.js.map +1 -1
- package/dist/analyzers/registry/notifications.js +1 -1
- package/dist/analyzers/registry/notifications.js.map +1 -1
- package/dist/analyzers/registry/search.js +1 -1
- package/dist/analyzers/registry/search.js.map +1 -1
- package/dist/analyzers/registry/types.d.ts +5 -0
- package/dist/analyzers/registry/types.d.ts.map +1 -1
- package/package.json +15 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonResourceSegments.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/nonResourceSegments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,yBAAyB;IACzB,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IACvF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;IACrC,2BAA2B;IAC3B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;IAC1F,sCAAsC;IACtC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU;IACjF,yBAAyB;IACzB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;CAClF,CAAC,CAAC;AAEH,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwikRouteDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/qwikRouteDetector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAuBpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAoClE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { isArchitectureSource } from "../graph/index.js";
|
|
2
|
+
import { findProjectDirs, joinRoutePaths, sortRoutes } from "./routeUtils.js";
|
|
3
|
+
/**
|
|
4
|
+
* Qwik City routes are folders under `src/routes/`, and a folder is a URL only
|
|
5
|
+
* when it holds an `index` file:
|
|
6
|
+
*
|
|
7
|
+
* src/routes/index.tsx → / (page)
|
|
8
|
+
* src/routes/blog/[slug]/index.tsx → /blog/[slug] (`[...rest]` and `[[optional]]` are kept as written)
|
|
9
|
+
* src/routes/(marketing)/about/index.mdx → /about (`(group)` folders add no URL)
|
|
10
|
+
* src/routes/api/ping/index.ts → /api/ping (endpoint: `onGet`, `onPost`, `onRequest`, ...)
|
|
11
|
+
* index@admin.tsx → same URL, rendered in the `admin` layout
|
|
12
|
+
*
|
|
13
|
+
* `layout.tsx`, `plugin@*.ts` and everything else in the folder are not routes.
|
|
14
|
+
*/
|
|
15
|
+
const QWIK = ["@builder.io/qwik-city", "@qwik.dev/router"];
|
|
16
|
+
const ROUTE_FILE = /^index(?:@[\w-]+)?\.(tsx|jsx|ts|js|mdx|md)$/;
|
|
17
|
+
const HANDLERS = {
|
|
18
|
+
onGet: "GET", onPost: "POST", onPut: "PUT", onPatch: "PATCH", onDelete: "DELETE",
|
|
19
|
+
onHead: "HEAD", onOptions: "OPTIONS", onRequest: undefined
|
|
20
|
+
};
|
|
21
|
+
export function detectQwikRoutes(files) {
|
|
22
|
+
const routes = new Map();
|
|
23
|
+
for (const projectDir of findProjectDirs(files, QWIK)) {
|
|
24
|
+
const root = `${projectDir}src/routes/`;
|
|
25
|
+
for (const file of files) {
|
|
26
|
+
if (!file.path.startsWith(root) || !isArchitectureSource(file.path))
|
|
27
|
+
continue;
|
|
28
|
+
const segments = file.path.slice(root.length).split("/");
|
|
29
|
+
const name = segments.pop() ?? "";
|
|
30
|
+
const match = ROUTE_FILE.exec(name);
|
|
31
|
+
if (!match)
|
|
32
|
+
continue;
|
|
33
|
+
const path = joinRoutePaths(...segments.filter((segment) => !/^\(.*\)$/.test(segment)));
|
|
34
|
+
const extension = match[1];
|
|
35
|
+
if (extension === "tsx" || extension === "jsx" || extension === "md" || extension === "mdx") {
|
|
36
|
+
routes.set(`page ${path}`, { path, file: file.path, kind: "page" });
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const exported = Object.keys(HANDLERS).filter((handler) => new RegExp(`export\\s+(?:const|async\\s+function|function)\\s+${handler}\\b`).test(file.content));
|
|
40
|
+
if (exported.length === 0)
|
|
41
|
+
continue;
|
|
42
|
+
const methods = exported.map((handler) => HANDLERS[handler]).filter((method) => Boolean(method)).sort();
|
|
43
|
+
routes.set(`api ${path}`, {
|
|
44
|
+
path,
|
|
45
|
+
file: file.path,
|
|
46
|
+
kind: "api",
|
|
47
|
+
...(methods.length > 0 && !exported.includes("onRequest") ? { methods } : {})
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return sortRoutes([...routes.values()]);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=qwikRouteDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwikRouteDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/qwikRouteDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeDetector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"routeDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeDetector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAwBhE,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAAE,EACpB,UAAU,EAAE,iBAAiB,EAAE,EAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/B,SAAS,EAAE,CAsDb"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { isArchitectureSource } from "../graph/index.js";
|
|
2
|
+
import { detectAdonisRoutes } from "./adonisRouteDetector.js";
|
|
3
|
+
import { detectAngularRoutes } from "./angularRouteDetector.js";
|
|
4
|
+
import { detectClientRoutes } from "./clientRouteDetector.js";
|
|
5
|
+
import { detectElysiaRoutes } from "./elysiaRouteDetector.js";
|
|
2
6
|
import { detectExpoRoutes } from "./expoRouteDetector.js";
|
|
3
7
|
import { detectHonoRoutes } from "./honoRouteDetector.js";
|
|
8
|
+
import { detectKoaRoutes } from "./koaRouteDetector.js";
|
|
4
9
|
import { detectNestRoutes } from "./nestRouteDetector.js";
|
|
10
|
+
import { detectQwikRoutes } from "./qwikRouteDetector.js";
|
|
5
11
|
import { detectReactRouterRoutes } from "./reactRouterRouteDetector.js";
|
|
6
12
|
import { detectRemixRoutes } from "./remixRouteDetector.js";
|
|
13
|
+
import { detectSolidStartRoutes } from "./solidStartRouteDetector.js";
|
|
7
14
|
import { detectTanStackRoutes } from "./tanstackRouteDetector.js";
|
|
8
15
|
import { composeMountPath, findHttpMethods, resolveRouterTarget, sortRoutes } from "./routeUtils.js";
|
|
9
16
|
import { usesTrpc, detectTrpcRoutes } from "./trpcRouteDetector.js";
|
|
@@ -44,6 +51,9 @@ export function detectRoutes(files, frameworks, graph) {
|
|
|
44
51
|
routes.push(...detectReactRouterRoutes(files));
|
|
45
52
|
routes.push(...detectTanStackRoutes(files));
|
|
46
53
|
routes.push(...detectExpoRoutes(files));
|
|
54
|
+
routes.push(...detectSolidStartRoutes(files));
|
|
55
|
+
routes.push(...detectQwikRoutes(files));
|
|
56
|
+
routes.push(...detectAngularRoutes(files, graph));
|
|
47
57
|
if (frameworks.includes("nestjs")) {
|
|
48
58
|
routes.push(...detectNestRoutes(files));
|
|
49
59
|
}
|
|
@@ -54,25 +64,52 @@ export function detectRoutes(files, frameworks, graph) {
|
|
|
54
64
|
routes.push(...detectFastifyRoutes(files, graph));
|
|
55
65
|
}
|
|
56
66
|
routes.push(...detectHonoRoutes(files, graph));
|
|
67
|
+
routes.push(...detectElysiaRoutes(files, graph));
|
|
68
|
+
routes.push(...detectKoaRoutes(files, graph));
|
|
69
|
+
routes.push(...detectAdonisRoutes(files, graph));
|
|
70
|
+
routes.push(...detectClientRoutes(files, graph));
|
|
57
71
|
return sortRoutes(routes);
|
|
58
72
|
}
|
|
73
|
+
// Files that Next serves at a fixed URL.
|
|
74
|
+
const METADATA_ROUTES = {
|
|
75
|
+
sitemap: "sitemap.xml",
|
|
76
|
+
robots: "robots.txt",
|
|
77
|
+
manifest: "manifest.webmanifest"
|
|
78
|
+
};
|
|
59
79
|
function detectNextRoutes(files) {
|
|
60
80
|
const routes = [];
|
|
81
|
+
const slotFiles = new Set();
|
|
61
82
|
for (const file of files.filter((item) => isArchitectureSource(item.path))) {
|
|
62
83
|
// App Router — match anywhere in path, not just root.
|
|
63
84
|
// Supports: src/app/, app/, apps/web/src/app/, packages/web/src/app/, dll.
|
|
64
85
|
// Sebelumnya pakai ^(?:src\/)? yang miss monorepo prefix seperti apps/web/.
|
|
65
|
-
const appMatch = file.path.match(/(?:^|\/)(?:src\/)?app\/(.+\/)?(page|route)\.[jt]sx?$/);
|
|
86
|
+
const appMatch = file.path.match(/(?:^|\/)(?:src\/)?app\/(.+\/)?(page|route|sitemap|robots|manifest)\.[jt]sx?$/);
|
|
66
87
|
if (appMatch) {
|
|
67
88
|
const segments = (appMatch[1] ?? "").split("/").filter(Boolean);
|
|
68
|
-
|
|
69
|
-
|
|
89
|
+
// Folders that are not URLs of their own: `_private`, and intercepting
|
|
90
|
+
// routes (`(.)photo`, `(..)feed`, `(...)shop`), which re-render a URL that
|
|
91
|
+
// already has its own page.
|
|
92
|
+
if (segments.some((segment) => segment.startsWith("_") || /^\(\.{1,3}\)/.test(segment)))
|
|
93
|
+
continue;
|
|
94
|
+
const type = appMatch[2];
|
|
95
|
+
const metadataFile = METADATA_ROUTES[type];
|
|
96
|
+
// robots and manifest only count at the root of the app folder (a `(group)` is not a folder).
|
|
97
|
+
if ((type === "robots" || type === "manifest") && segments.some((segment) => !/^\(.*\)$/.test(segment)))
|
|
98
|
+
continue;
|
|
99
|
+
const isSlot = segments.some((segment) => segment.startsWith("@"));
|
|
100
|
+
const routePath = metadataFile
|
|
101
|
+
? toRoutePath([...segments, metadataFile])
|
|
102
|
+
: toRoutePath(segments);
|
|
103
|
+
const kind = type === "page" ? "page" : "api";
|
|
70
104
|
routes.push({
|
|
71
105
|
path: routePath,
|
|
72
106
|
file: file.path,
|
|
73
107
|
kind,
|
|
74
|
-
...(
|
|
108
|
+
...(type === "route" ? { methods: findHttpMethods(file.content) } : {}),
|
|
109
|
+
...(metadataFile ? { methods: ["GET"] } : {})
|
|
75
110
|
});
|
|
111
|
+
if (isSlot)
|
|
112
|
+
slotFiles.add(file.path);
|
|
76
113
|
continue;
|
|
77
114
|
}
|
|
78
115
|
// Pages Router — sama, ganti ^ ke (?:^|\/) buat monorepo support.
|
|
@@ -89,7 +126,11 @@ function detectNextRoutes(files) {
|
|
|
89
126
|
kind: isApi ? "api" : "page"
|
|
90
127
|
});
|
|
91
128
|
}
|
|
92
|
-
|
|
129
|
+
// `app/dashboard/@team/page.tsx` fills a slot of `/dashboard`: when the URL has a
|
|
130
|
+
// page of its own the slot is part of it, not another route.
|
|
131
|
+
const ownPaths = new Set(routes.filter((route) => !slotFiles.has(route.file)).map((route) => `${route.kind}:${route.path}`));
|
|
132
|
+
const visible = routes.filter((route) => !slotFiles.has(route.file) || !ownPaths.has(`${route.kind}:${route.path}`));
|
|
133
|
+
return sortRoutes(visible);
|
|
93
134
|
}
|
|
94
135
|
/**
|
|
95
136
|
* detectAstroRoutes — pages live under src/pages/ (Astro always uses src/ as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeDetector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routeDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ScannedFile } from "../analysis/index.js";
|
|
2
2
|
export declare function resolveRouterTarget(identifier: string, mountFile: string, eligibleFiles: ScannedFile[], byPath: Map<string, ScannedFile>, graph?: Record<string, string[]>, hasRouteMethods?: (file: ScannedFile) => boolean): ScannedFile | undefined;
|
|
3
3
|
export declare function composeMountPath(prefix: string, subPath: string): string;
|
|
4
4
|
export declare function escapeRegExp(value: string): string;
|
|
@@ -26,4 +26,18 @@ export declare function dropShadowedLayouts<T extends {
|
|
|
26
26
|
isIndex: boolean;
|
|
27
27
|
isLayout: boolean;
|
|
28
28
|
}>(entries: T[]): T[];
|
|
29
|
+
/**
|
|
30
|
+
* File a specifier points at, as seen from `from`. Relative specifiers are
|
|
31
|
+
* resolved against the file's folder; an aliased one (`@/pages/Home`) is
|
|
32
|
+
* matched against the files `from` is known to import, and only when exactly
|
|
33
|
+
* one of them can be it.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveImportedFile(from: string, specifier: string, localPaths: Set<string>, graph?: Record<string, string[]>): string | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Folders (`""` for the repo root, else `apps/web/`) of every package.json
|
|
38
|
+
* that depends on one of `dependencies`: the projects a file-based router
|
|
39
|
+
* applies to, so a monorepo gets the routes of each app.
|
|
40
|
+
*/
|
|
41
|
+
export declare function findProjectDirs(files: ScannedFile[], dependencies: readonly string[]): string[];
|
|
42
|
+
export declare const HANDLER_EXTENSION: RegExp;
|
|
29
43
|
//# sourceMappingURL=routeUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeUtils.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routeUtils.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMvE,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,WAAW,EAAE,EAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAChC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,GAC/C,WAAW,GAAG,SAAS,CA0BzB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA8BzD;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAIrF;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAMzD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBzD;AAID,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EACjG,OAAO,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAGL;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/B,MAAM,GAAG,SAAS,CAapB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAuB/F;AAED,eAAO,MAAM,iBAAiB,QAAwB,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { posix } from "node:path";
|
|
2
|
+
import { parseJsonText } from "../analysis/index.js";
|
|
3
|
+
import { isArchitectureSource } from "../graph/sourceScope.js";
|
|
4
|
+
import { matchLocalPath, normalizePath } from "../graph/localPaths.js";
|
|
1
5
|
// Helpers shared by the per-framework route detectors.
|
|
2
6
|
export function resolveRouterTarget(identifier, mountFile, eligibleFiles, byPath, graph, hasRouteMethods) {
|
|
3
7
|
if (!graph) {
|
|
@@ -108,4 +112,51 @@ export function dropShadowedLayouts(entries) {
|
|
|
108
112
|
const indexPaths = new Set(entries.filter((entry) => entry.isIndex).map((entry) => entry.path));
|
|
109
113
|
return entries.filter((entry) => entry.isIndex || !entry.isLayout || !indexPaths.has(entry.path));
|
|
110
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* File a specifier points at, as seen from `from`. Relative specifiers are
|
|
117
|
+
* resolved against the file's folder; an aliased one (`@/pages/Home`) is
|
|
118
|
+
* matched against the files `from` is known to import, and only when exactly
|
|
119
|
+
* one of them can be it.
|
|
120
|
+
*/
|
|
121
|
+
export function resolveImportedFile(from, specifier, localPaths, graph) {
|
|
122
|
+
if (specifier.startsWith(".")) {
|
|
123
|
+
const target = normalizePath(posix.join(posix.dirname(from), specifier));
|
|
124
|
+
return target === null ? undefined : matchLocalPath(target, localPaths) ?? undefined;
|
|
125
|
+
}
|
|
126
|
+
const tail = specifier.replace(/^[@~#$][^/]*\//, "").replace(/^\/+/, "");
|
|
127
|
+
if (!tail || tail === specifier)
|
|
128
|
+
return undefined;
|
|
129
|
+
const matches = (graph?.[from] ?? []).filter((path) => {
|
|
130
|
+
const bare = path.replace(/\.[cm]?[jt]sx?$/, "").replace(/\/index$/, "");
|
|
131
|
+
return bare === tail || bare.endsWith(`/${tail}`);
|
|
132
|
+
});
|
|
133
|
+
return matches.length === 1 ? matches[0] : undefined;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Folders (`""` for the repo root, else `apps/web/`) of every package.json
|
|
137
|
+
* that depends on one of `dependencies`: the projects a file-based router
|
|
138
|
+
* applies to, so a monorepo gets the routes of each app.
|
|
139
|
+
*/
|
|
140
|
+
export function findProjectDirs(files, dependencies) {
|
|
141
|
+
const dirs = [];
|
|
142
|
+
for (const file of files) {
|
|
143
|
+
if (!/(^|\/)package\.json$/.test(file.path) || !isArchitectureSource(file.path))
|
|
144
|
+
continue;
|
|
145
|
+
if (!dependencies.some((name) => file.content.includes(`"${name}"`)))
|
|
146
|
+
continue;
|
|
147
|
+
try {
|
|
148
|
+
const manifest = parseJsonText(file.content);
|
|
149
|
+
const declared = { ...manifest.dependencies, ...manifest.devDependencies };
|
|
150
|
+
if (dependencies.some((name) => name in declared)) {
|
|
151
|
+
const dir = posix.dirname(file.path);
|
|
152
|
+
dirs.push(dir === "." ? "" : `${dir}/`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// An unreadable manifest names no project.
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return dirs;
|
|
160
|
+
}
|
|
161
|
+
export const HANDLER_EXTENSION = /\.(?:[cm]?[jt]sx?)$/;
|
|
111
162
|
//# sourceMappingURL=routeUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeUtils.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routeUtils.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/routeUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solidStartRouteDetector.d.ts","sourceRoot":"","sources":["../../../src/analyzers/detectors/solidStartRouteDetector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAmBpD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CA6CxE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { isArchitectureSource } from "../graph/index.js";
|
|
2
|
+
import { dropShadowedLayouts, findHttpMethods, findProjectDirs, joinRoutePaths, sortRoutes } from "./routeUtils.js";
|
|
3
|
+
/**
|
|
4
|
+
* SolidStart turns `src/routes/` into URLs:
|
|
5
|
+
*
|
|
6
|
+
* src/routes/index.tsx → /
|
|
7
|
+
* src/routes/users/[id].tsx → /users/[id] (`[...rest]` and `[[optional]]` are kept as written)
|
|
8
|
+
* src/routes/(auth)/login.tsx → /login (`(group)` folders and `(group)name` parts add no URL)
|
|
9
|
+
* src/routes/users.tsx → layout of users/ (listed only when users/ has no index)
|
|
10
|
+
* export function GET() → an API route with that method
|
|
11
|
+
*
|
|
12
|
+
* A module with a default export is a page; named `GET`/`POST`/... exports make
|
|
13
|
+
* it an API route as well, and a file with neither is not a route.
|
|
14
|
+
*/
|
|
15
|
+
const SOLID_START = ["@solidjs/start", "solid-start"];
|
|
16
|
+
const CODE = /\.(?:[cm]?[jt]sx?)$/;
|
|
17
|
+
export function detectSolidStartRoutes(files) {
|
|
18
|
+
const routes = [];
|
|
19
|
+
for (const projectDir of findProjectDirs(files, SOLID_START)) {
|
|
20
|
+
const root = `${projectDir}src/routes/`;
|
|
21
|
+
const entries = [];
|
|
22
|
+
const folders = new Set();
|
|
23
|
+
const inRoutes = files.filter((file) => file.path.startsWith(root) && isArchitectureSource(file.path));
|
|
24
|
+
for (const file of inRoutes) {
|
|
25
|
+
const parts = file.path.slice(root.length).split("/");
|
|
26
|
+
for (let depth = 1; depth < parts.length; depth += 1)
|
|
27
|
+
folders.add(parts.slice(0, depth).join("/"));
|
|
28
|
+
}
|
|
29
|
+
for (const file of inRoutes) {
|
|
30
|
+
if (!CODE.test(file.path) || file.path.endsWith(".d.ts") || /\.data\.[cm]?[jt]sx?$/.test(file.path))
|
|
31
|
+
continue;
|
|
32
|
+
const relative = file.path.slice(root.length).replace(CODE, "");
|
|
33
|
+
const segments = relative.split("/");
|
|
34
|
+
const isIndex = segments[segments.length - 1] === "index";
|
|
35
|
+
if (isIndex)
|
|
36
|
+
segments.pop();
|
|
37
|
+
// `(group)` folders, and groups written into a name: `(auth)login.tsx` is `/login`.
|
|
38
|
+
const url = segments.map((segment) => segment.replace(/\([^)]*\)/g, "")).filter((segment) => segment !== "");
|
|
39
|
+
entries.push({
|
|
40
|
+
path: joinRoutePaths(...url),
|
|
41
|
+
file: file.path,
|
|
42
|
+
isIndex,
|
|
43
|
+
isLayout: !isIndex && folders.has(relative),
|
|
44
|
+
content: file.content
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
for (const entry of dropShadowedLayouts(entries)) {
|
|
48
|
+
const methods = findHttpMethods(entry.content);
|
|
49
|
+
if (/\bexport\s+default\b|export\s*\{[^}]*\bas\s+default\b/.test(entry.content)) {
|
|
50
|
+
routes.push({ path: entry.path, file: entry.file, kind: "page" });
|
|
51
|
+
}
|
|
52
|
+
if (methods.length > 0) {
|
|
53
|
+
routes.push({ path: entry.path, file: entry.file, kind: "api", methods });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return sortRoutes(routes);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=solidStartRouteDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solidStartRouteDetector.js","sourceRoot":"","sources":["../../../src/analyzers/detectors/solidStartRouteDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,12 @@ export interface FeatureCandidate {
|
|
|
19
19
|
routePaths: string[];
|
|
20
20
|
entityNames: string[];
|
|
21
21
|
conclusionConfidence: "high" | "medium" | "low";
|
|
22
|
+
/**
|
|
23
|
+
* The candidate stands on its own and is never fused with another one. Used for the
|
|
24
|
+
* landing page, which imports pieces of every other feature and would otherwise
|
|
25
|
+
* absorb them through shared files.
|
|
26
|
+
*/
|
|
27
|
+
standalone?: boolean;
|
|
22
28
|
/** Internal compatibility payload used while the public snapshot remains V1. */
|
|
23
29
|
projection?: FeatureInfo;
|
|
24
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureCandidates.d.ts","sourceRoot":"","sources":["../../../src/analyzers/features/featureCandidates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,eAAe,GACf,cAAc,GACd,IAAI,CAAC;AAET,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,sBAAsB,CAAC;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD,gFAAgF;IAChF,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,CAAC;AA8BF,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,gBAAgB,EAAE,EAC9B,mBAAmB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC/C,qBAAqB,
|
|
1
|
+
{"version":3,"file":"featureCandidates.d.ts","sourceRoot":"","sources":["../../../src/analyzers/features/featureCandidates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,eAAe,GACf,cAAc,GACd,IAAI,CAAC;AAET,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,sBAAsB,CAAC;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,CAAC;AA8BF,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,gBAAgB,EAAE,EAC9B,mBAAmB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC/C,qBAAqB,CAwHvB;AAED,oFAAoF;AACpF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CA4BlF"}
|
|
@@ -45,6 +45,12 @@ export function reconcileFeatureCandidates(candidates, fileReferenceCounts = {})
|
|
|
45
45
|
if (identity.size > 0)
|
|
46
46
|
entityIdentities.set(index, identity);
|
|
47
47
|
});
|
|
48
|
+
// Same guard for pages: a bridge candidate must not fuse two different pages.
|
|
49
|
+
const pageIdentities = new Map();
|
|
50
|
+
deterministicCandidates.forEach((candidate, index) => {
|
|
51
|
+
if (isPageSource(candidate.source))
|
|
52
|
+
pageIdentities.set(index, new Set([normalizeAnchor(candidate.label)]));
|
|
53
|
+
});
|
|
48
54
|
for (const rejectedId of rejectedCandidateIds) {
|
|
49
55
|
mergeDecisions.push({
|
|
50
56
|
candidateIds: [rejectedId, ""],
|
|
@@ -82,8 +88,27 @@ export function reconcileFeatureCandidates(candidates, fileReferenceCounts = {})
|
|
|
82
88
|
});
|
|
83
89
|
continue;
|
|
84
90
|
}
|
|
91
|
+
const leftPages = pageIdentities.get(leftRoot);
|
|
92
|
+
const rightPages = pageIdentities.get(rightRoot);
|
|
93
|
+
if (leftRoot !== rightRoot && entitiesConflict(leftPages, rightPages)) {
|
|
94
|
+
mergeDecisions.push({
|
|
95
|
+
candidateIds: [leftCandidate.id, rightCandidate.id],
|
|
96
|
+
outcome: "retained",
|
|
97
|
+
anchors: structured,
|
|
98
|
+
reason: `Anchors found (${anchorStrings.join(", ")}), but merging would join distinct pages `
|
|
99
|
+
+ `(${[...leftPages].join(", ")} / ${[...rightPages].join(", ")}) through a shared candidate.`,
|
|
100
|
+
});
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
85
103
|
unionFind.union(left, right);
|
|
86
104
|
const mergedRoot = unionFind.find(left);
|
|
105
|
+
if (leftPages || rightPages) {
|
|
106
|
+
pageIdentities.set(mergedRoot, new Set([...(leftPages ?? []), ...(rightPages ?? [])]));
|
|
107
|
+
for (const staleRoot of [leftRoot, rightRoot]) {
|
|
108
|
+
if (staleRoot !== mergedRoot)
|
|
109
|
+
pageIdentities.delete(staleRoot);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
87
112
|
if (leftIdentity || rightIdentity) {
|
|
88
113
|
entityIdentities.set(mergedRoot, new Set([...(leftIdentity ?? []), ...(rightIdentity ?? [])]));
|
|
89
114
|
for (const staleRoot of [leftRoot, rightRoot]) {
|
|
@@ -194,14 +219,36 @@ function findHardAnchors(left, right) {
|
|
|
194
219
|
return findStructuredAnchors(left, right).map((a) => `${a.type}:${a.value}`);
|
|
195
220
|
}
|
|
196
221
|
function findStructuredAnchors(left, right, fileReferenceCounts = {}) {
|
|
222
|
+
if (left.standalone || right.standalone)
|
|
223
|
+
return [];
|
|
224
|
+
// A page is an area of the product; a registry signal (auth, email, caching ...) is a
|
|
225
|
+
// cross-cutting concern that many pages touch. Fusing them would let one signal glue
|
|
226
|
+
// unrelated pages together and name the result after whichever page sorts first.
|
|
227
|
+
const pageVsSignal = (isPageSource(left.source) && isSignalCandidate(right))
|
|
228
|
+
|| (isPageSource(right.source) && isSignalCandidate(left));
|
|
229
|
+
if (pageVsSignal) {
|
|
230
|
+
// Only a page that carries the signal's own name is the same feature ("Search").
|
|
231
|
+
return normalizeAnchor(left.label) === normalizeAnchor(right.label)
|
|
232
|
+
? [{ type: "alias", value: normalizeAnchor(left.label) }]
|
|
233
|
+
: [];
|
|
234
|
+
}
|
|
235
|
+
// Two different pages are two features, however many components they share.
|
|
236
|
+
const bothPages = isPageSource(left.source) && isPageSource(right.source);
|
|
197
237
|
const entityAnchors = intersection(left.entityNames, right.entityNames)
|
|
198
238
|
.map((entity) => ({ type: "entity", value: entity }));
|
|
199
|
-
const fileAnchors = intersection(left.files, right.files)
|
|
239
|
+
const fileAnchors = bothPages ? [] : intersection(left.files, right.files)
|
|
200
240
|
.filter((file) => (fileReferenceCounts[file] ?? 0) <= HUB_FILE_THRESHOLD)
|
|
201
241
|
.map((file) => ({ type: "file", value: file }));
|
|
202
242
|
const routeAnchors = intersection(left.routePaths.map(routeResource).filter(Boolean), right.routePaths.map(routeResource).filter(Boolean)).map((resource) => ({ type: "route-resource", value: resource }));
|
|
203
243
|
return [...entityAnchors, ...fileAnchors, ...routeAnchors];
|
|
204
244
|
}
|
|
245
|
+
/** A vocabulary signal (Authentication, Email ...), as opposed to a role feature such as Documentation. */
|
|
246
|
+
function isSignalCandidate(candidate) {
|
|
247
|
+
return candidate.source === "registry" && !candidate.id.includes(":role-");
|
|
248
|
+
}
|
|
249
|
+
function isPageSource(source) {
|
|
250
|
+
return source === "frontend-page" || source === "client-route";
|
|
251
|
+
}
|
|
205
252
|
/** Entity names a candidate vouches for. Only entity-sourced candidates define identity. */
|
|
206
253
|
function entityIdentity(candidate) {
|
|
207
254
|
if (candidate.source !== "entity")
|