@rangojs/router 0.0.0-experimental.d7eeaa75 → 0.0.0-experimental.d98a8e9d
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 +120 -25
- package/dist/bin/rango.js +147 -57
- package/dist/testing/vitest.js +82 -0
- package/dist/vite/index.js +2154 -861
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/package.json +57 -11
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +3 -1
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +220 -30
- package/skills/caching/SKILL.md +116 -8
- package/skills/composability/SKILL.md +27 -2
- package/skills/document-cache/SKILL.md +78 -55
- package/skills/handler-use/SKILL.md +364 -0
- package/skills/hooks/SKILL.md +229 -20
- package/skills/host-router/SKILL.md +45 -20
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +46 -4
- package/skills/layout/SKILL.md +28 -7
- package/skills/links/SKILL.md +247 -17
- package/skills/loader/SKILL.md +219 -9
- package/skills/middleware/SKILL.md +47 -12
- package/skills/migrate-nextjs/SKILL.md +562 -0
- package/skills/migrate-react-router/SKILL.md +769 -0
- package/skills/mime-routes/SKILL.md +27 -0
- package/skills/observability/SKILL.md +137 -0
- package/skills/parallel/SKILL.md +71 -6
- package/skills/prerender/SKILL.md +14 -33
- package/skills/rango/SKILL.md +243 -22
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +122 -47
- package/skills/route/SKILL.md +57 -4
- package/skills/router-setup/SKILL.md +3 -3
- package/skills/server-actions/SKILL.md +751 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/testing/SKILL.md +128 -0
- package/skills/testing/bindings.md +89 -0
- package/skills/testing/cache-prerender.md +98 -0
- package/skills/testing/client-components.md +121 -0
- package/skills/testing/e2e-parity.md +124 -0
- package/skills/testing/flight.md +89 -0
- package/skills/testing/handles.md +127 -0
- package/skills/testing/loader.md +108 -0
- package/skills/testing/middleware.md +97 -0
- package/skills/testing/render-handler.md +102 -0
- package/skills/testing/response-routes.md +94 -0
- package/skills/testing/reverse-and-types.md +83 -0
- package/skills/testing/server-actions.md +89 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +120 -0
- package/skills/typesafety/SKILL.md +319 -27
- package/skills/use-cache/SKILL.md +34 -5
- package/skills/view-transitions/SKILL.md +294 -0
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/app-shell.ts +52 -0
- package/src/browser/event-controller.ts +86 -70
- package/src/browser/history-state.ts +21 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/navigation-bridge.ts +84 -11
- package/src/browser/navigation-client.ts +104 -68
- package/src/browser/navigation-store.ts +32 -9
- package/src/browser/navigation-transaction.ts +10 -28
- package/src/browser/partial-update.ts +64 -26
- package/src/browser/prefetch/cache.ts +183 -44
- package/src/browser/prefetch/fetch.ts +228 -37
- package/src/browser/prefetch/queue.ts +36 -5
- package/src/browser/rango-state.ts +53 -13
- package/src/browser/react/Link.tsx +30 -2
- package/src/browser/react/NavigationProvider.tsx +72 -31
- package/src/browser/react/filter-segment-order.ts +51 -7
- package/src/browser/react/index.ts +3 -0
- package/src/browser/react/location-state-shared.ts +175 -4
- package/src/browser/react/location-state.ts +39 -13
- package/src/browser/react/use-handle.ts +17 -9
- package/src/browser/react/use-navigation.ts +22 -2
- package/src/browser/react/use-params.ts +20 -8
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +22 -2
- package/src/browser/react/use-segments.ts +11 -8
- package/src/browser/response-adapter.ts +32 -1
- package/src/browser/rsc-router.tsx +69 -22
- package/src/browser/scroll-restoration.ts +22 -14
- package/src/browser/segment-reconciler.ts +36 -14
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +23 -30
- package/src/browser/types.ts +21 -0
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +60 -35
- package/src/build/generate-route-types.ts +2 -0
- package/src/build/index.ts +8 -1
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +95 -25
- package/src/build/route-types/codegen.ts +4 -4
- package/src/build/route-types/include-resolution.ts +1 -1
- package/src/build/route-types/per-module-writer.ts +7 -4
- package/src/build/route-types/router-processing.ts +55 -14
- package/src/build/route-types/scan-filter.ts +1 -1
- package/src/build/route-types/source-scan.ts +118 -0
- package/src/build/runtime-discovery.ts +9 -20
- package/src/cache/cache-scope.ts +28 -42
- package/src/cache/cf/cf-cache-store.ts +54 -13
- package/src/client.rsc.tsx +3 -0
- package/src/client.tsx +96 -205
- package/src/context-var.ts +5 -5
- package/src/decode-loader-results.ts +36 -0
- package/src/errors.ts +30 -4
- package/src/handle.ts +32 -14
- package/src/host/index.ts +2 -2
- package/src/host/router.ts +129 -57
- package/src/host/types.ts +31 -2
- package/src/host/utils.ts +1 -1
- package/src/href-client.ts +140 -21
- package/src/index.rsc.ts +10 -6
- package/src/index.ts +54 -17
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +25 -7
- package/src/loader.ts +16 -9
- package/src/missing-id-error.ts +68 -0
- package/src/outlet-context.ts +1 -1
- package/src/prerender.ts +27 -6
- package/src/response-utils.ts +37 -0
- package/src/reverse.ts +65 -36
- package/src/route-content-wrapper.tsx +6 -28
- package/src/route-definition/dsl-helpers.ts +384 -257
- package/src/route-definition/helper-factories.ts +29 -139
- package/src/route-definition/helpers-types.ts +100 -28
- package/src/route-definition/resolve-handler-use.ts +6 -0
- package/src/route-definition/use-item-types.ts +32 -0
- package/src/route-types.ts +26 -41
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +15 -2
- package/src/router/error-handling.ts +1 -1
- package/src/router/find-match.ts +54 -6
- package/src/router/handler-context.ts +21 -38
- package/src/router/intercept-resolution.ts +4 -18
- package/src/router/lazy-includes.ts +41 -22
- package/src/router/loader-resolution.ts +82 -36
- package/src/router/manifest.ts +41 -19
- package/src/router/match-api.ts +4 -3
- package/src/router/match-handlers.ts +63 -20
- package/src/router/match-middleware/cache-lookup.ts +44 -91
- package/src/router/match-middleware/cache-store.ts +3 -2
- package/src/router/match-result.ts +53 -32
- package/src/router/metrics.ts +1 -1
- package/src/router/middleware-types.ts +15 -26
- package/src/router/middleware.ts +99 -84
- package/src/router/pattern-matching.ts +116 -19
- package/src/router/prerender-match.ts +1 -1
- package/src/router/preview-match.ts +3 -1
- package/src/router/request-classification.ts +4 -28
- package/src/router/revalidation.ts +58 -2
- package/src/router/router-interfaces.ts +45 -28
- package/src/router/router-options.ts +40 -1
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +27 -6
- package/src/router/segment-resolution/revalidation.ts +147 -106
- package/src/router/segment-resolution/view-transition-default.ts +36 -0
- package/src/router/substitute-pattern-params.ts +56 -0
- package/src/router/telemetry.ts +99 -0
- package/src/router/trie-matching.ts +40 -16
- package/src/router/types.ts +8 -0
- package/src/router/url-params.ts +49 -0
- package/src/router.ts +52 -30
- package/src/rsc/handler-context.ts +2 -2
- package/src/rsc/handler.ts +28 -69
- package/src/rsc/helpers.ts +91 -43
- package/src/rsc/index.ts +1 -1
- package/src/rsc/manifest-init.ts +28 -41
- package/src/rsc/origin-guard.ts +28 -10
- package/src/rsc/progressive-enhancement.ts +4 -0
- package/src/rsc/response-error.ts +79 -12
- package/src/rsc/response-route-handler.ts +57 -61
- package/src/rsc/rsc-rendering.ts +35 -51
- package/src/rsc/runtime-warnings.ts +9 -10
- package/src/rsc/server-action.ts +17 -37
- package/src/rsc/ssr-setup.ts +16 -0
- package/src/rsc/types.ts +8 -2
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +4 -4
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-loader-promise.ts +122 -0
- package/src/segment-system.tsx +132 -116
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +175 -53
- package/src/server/cookie-store.ts +28 -4
- package/src/server/request-context.ts +67 -51
- package/src/ssr/index.tsx +5 -1
- package/src/static-handler.ts +25 -3
- package/src/testing/cache-status.ts +166 -0
- package/src/testing/collect-handle.ts +63 -0
- package/src/testing/dispatch.ts +581 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +149 -0
- package/src/testing/e2e/matchers.ts +51 -0
- package/src/testing/e2e/page-helpers.ts +272 -0
- package/src/testing/e2e/parity.ts +326 -0
- package/src/testing/e2e/server.ts +195 -0
- package/src/testing/flight-matchers.ts +110 -0
- package/src/testing/flight-normalize.ts +38 -0
- package/src/testing/flight-runtime.d.ts +57 -0
- package/src/testing/flight-tree.ts +682 -0
- package/src/testing/flight.entry.ts +51 -0
- package/src/testing/flight.ts +234 -0
- package/src/testing/generated-routes.ts +223 -0
- package/src/testing/index.ts +106 -0
- package/src/testing/internal/context.ts +304 -0
- package/src/testing/internal/flight-client-globals.ts +30 -0
- package/src/testing/internal/seed-vars.ts +42 -0
- package/src/testing/render-handler.ts +323 -0
- package/src/testing/render-route.tsx +590 -0
- package/src/testing/run-loader.ts +363 -0
- package/src/testing/run-middleware.ts +205 -0
- package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
- package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
- package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
- package/src/testing/vitest-stubs/version.ts +5 -0
- package/src/testing/vitest.ts +285 -0
- package/src/types/global-namespace.ts +39 -26
- package/src/types/handler-context.ts +68 -50
- package/src/types/index.ts +1 -0
- package/src/types/loader-types.ts +11 -9
- package/src/types/request-scope.ts +126 -0
- package/src/types/route-entry.ts +11 -0
- package/src/types/segments.ts +35 -2
- package/src/urls/include-helper.ts +34 -67
- package/src/urls/index.ts +1 -5
- package/src/urls/path-helper-types.ts +41 -7
- package/src/urls/path-helper.ts +17 -52
- package/src/urls/pattern-types.ts +36 -19
- package/src/urls/response-types.ts +22 -29
- package/src/urls/type-extraction.ts +58 -139
- package/src/urls/urls-function.ts +1 -5
- package/src/use-loader.tsx +413 -42
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +6 -6
- package/src/vite/discovery/discover-routers.ts +106 -75
- package/src/vite/discovery/discovery-errors.ts +194 -0
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +67 -26
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/state.ts +33 -0
- package/src/vite/discovery/virtual-module-codegen.ts +13 -23
- package/src/vite/index.ts +2 -0
- package/src/vite/plugin-types.ts +67 -0
- package/src/vite/plugins/cjs-to-esm.ts +8 -7
- package/src/vite/plugins/client-ref-dedup.ts +16 -0
- package/src/vite/plugins/client-ref-hashing.ts +28 -5
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
- package/src/vite/plugins/expose-action-id.ts +54 -30
- package/src/vite/plugins/expose-id-utils.ts +12 -8
- package/src/vite/plugins/expose-ids/export-analysis.ts +100 -20
- package/src/vite/plugins/expose-ids/handler-transform.ts +8 -61
- package/src/vite/plugins/expose-ids/loader-transform.ts +3 -5
- package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
- package/src/vite/plugins/expose-internal-ids.ts +496 -486
- package/src/vite/plugins/performance-tracks.ts +29 -25
- package/src/vite/plugins/use-cache-transform.ts +65 -50
- package/src/vite/plugins/version-injector.ts +39 -23
- package/src/vite/plugins/version-plugin.ts +59 -2
- package/src/vite/plugins/virtual-entries.ts +2 -2
- package/src/vite/rango.ts +116 -29
- package/src/vite/router-discovery.ts +750 -100
- package/src/vite/utils/ast-handler-extract.ts +15 -15
- package/src/vite/utils/banner.ts +1 -1
- package/src/vite/utils/bundle-analysis.ts +4 -2
- package/src/vite/utils/client-chunks.ts +190 -0
- package/src/vite/utils/forward-user-plugins.ts +193 -0
- package/src/vite/utils/manifest-utils.ts +8 -59
- package/src/vite/utils/package-resolution.ts +41 -1
- package/src/vite/utils/prerender-utils.ts +21 -6
- package/src/vite/utils/shared-utils.ts +107 -26
- package/src/browser/action-response-classifier.ts +0 -99
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import MagicString from "magic-string";
|
|
2
|
-
import {
|
|
2
|
+
import { makeStubId } from "../expose-id-utils.js";
|
|
3
3
|
import type { HandlerTransformConfig, CreateExportBinding } from "./types.js";
|
|
4
4
|
import { isExportOnlyFile } from "./export-analysis.js";
|
|
5
5
|
|
|
@@ -28,9 +28,7 @@ export function transformHandles(
|
|
|
28
28
|
binding.callCloseParenPos,
|
|
29
29
|
);
|
|
30
30
|
|
|
31
|
-
const handleId = isBuild
|
|
32
|
-
? hashId(filePath, exportName)
|
|
33
|
-
: `${filePath}#${exportName}`;
|
|
31
|
+
const handleId = makeStubId(filePath, exportName, isBuild);
|
|
34
32
|
|
|
35
33
|
let paramInjection: string;
|
|
36
34
|
if (!args.hasArgs) {
|
|
@@ -58,9 +56,7 @@ export function transformLocationState(
|
|
|
58
56
|
for (const binding of bindings) {
|
|
59
57
|
const exportName = binding.exportNames[0];
|
|
60
58
|
|
|
61
|
-
const stateKey = isBuild
|
|
62
|
-
? hashId(filePath, exportName)
|
|
63
|
-
: `${filePath}#${exportName}`;
|
|
59
|
+
const stateKey = makeStubId(filePath, exportName, isBuild);
|
|
64
60
|
|
|
65
61
|
// Key is injected as a property assignment (not as a function argument).
|
|
66
62
|
// This allows createLocationState to accept options like { flash: true }
|
|
@@ -88,7 +84,7 @@ export function generateWholeFileStubs(
|
|
|
88
84
|
|
|
89
85
|
const exportNames = bindings.flatMap((b) => b.exportNames);
|
|
90
86
|
const stubs = exportNames.map((name) => {
|
|
91
|
-
const handlerId =
|
|
87
|
+
const handlerId = makeStubId(filePath, name, isBuild);
|
|
92
88
|
return `export const ${name} = { __brand: "${cfg.brand}", $$id: "${handlerId}" };`;
|
|
93
89
|
});
|
|
94
90
|
|
|
@@ -96,53 +92,8 @@ export function generateWholeFileStubs(
|
|
|
96
92
|
}
|
|
97
93
|
|
|
98
94
|
/**
|
|
99
|
-
* Replace handler call expressions with lightweight stub objects
|
|
100
|
-
*
|
|
101
|
-
*/
|
|
102
|
-
export function generateExprStubs(
|
|
103
|
-
cfg: HandlerTransformConfig,
|
|
104
|
-
bindings: CreateExportBinding[],
|
|
105
|
-
code: string,
|
|
106
|
-
filePath: string,
|
|
107
|
-
sourceId: string,
|
|
108
|
-
isBuild: boolean,
|
|
109
|
-
): { code: string; map: ReturnType<MagicString["generateMap"]> } | null {
|
|
110
|
-
if (bindings.length === 0) return null;
|
|
111
|
-
|
|
112
|
-
const s = new MagicString(code);
|
|
113
|
-
let hasChanges = false;
|
|
114
|
-
|
|
115
|
-
for (const binding of bindings) {
|
|
116
|
-
const exportName = binding.exportNames[0];
|
|
117
|
-
const handlerId = isBuild
|
|
118
|
-
? hashId(filePath, exportName)
|
|
119
|
-
: `${filePath}#${exportName}`;
|
|
120
|
-
|
|
121
|
-
s.overwrite(
|
|
122
|
-
binding.callExprStart,
|
|
123
|
-
binding.callCloseParenPos + 1,
|
|
124
|
-
`{ __brand: "${cfg.brand}", $$id: "${handlerId}" }`,
|
|
125
|
-
);
|
|
126
|
-
hasChanges = true;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (!hasChanges) return null;
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
code: s.toString(),
|
|
133
|
-
map: s.generateMap({
|
|
134
|
-
source: sourceId,
|
|
135
|
-
includeContent: true,
|
|
136
|
-
hires: "boundary",
|
|
137
|
-
}),
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Replace handler call expressions with lightweight stub objects on an
|
|
143
|
-
* existing MagicString. Unlike generateExprStubs (which creates its own
|
|
144
|
-
* MagicString and returns the full result), this integrates into the
|
|
145
|
-
* unified transform pipeline so all transforms share one sourcemap.
|
|
95
|
+
* Replace handler call expressions with lightweight stub objects on the shared
|
|
96
|
+
* unified-pipeline MagicString so all transforms share one sourcemap.
|
|
146
97
|
*/
|
|
147
98
|
export function stubHandlerExprs(
|
|
148
99
|
cfg: HandlerTransformConfig,
|
|
@@ -154,9 +105,7 @@ export function stubHandlerExprs(
|
|
|
154
105
|
let hasChanges = false;
|
|
155
106
|
for (const binding of bindings) {
|
|
156
107
|
const exportName = binding.exportNames[0];
|
|
157
|
-
const handlerId = isBuild
|
|
158
|
-
? hashId(filePath, exportName)
|
|
159
|
-
: `${filePath}#${exportName}`;
|
|
108
|
+
const handlerId = makeStubId(filePath, exportName, isBuild);
|
|
160
109
|
|
|
161
110
|
s.overwrite(
|
|
162
111
|
binding.callExprStart,
|
|
@@ -182,9 +131,7 @@ export function transformHandlerIds(
|
|
|
182
131
|
for (const binding of bindings) {
|
|
183
132
|
const exportName = binding.exportNames[0];
|
|
184
133
|
|
|
185
|
-
const handlerId = isBuild
|
|
186
|
-
? hashId(filePath, exportName)
|
|
187
|
-
: `${filePath}#${exportName}`;
|
|
134
|
+
const handlerId = makeStubId(filePath, exportName, isBuild);
|
|
188
135
|
|
|
189
136
|
// Injection strategy matches the runtime overload signatures:
|
|
190
137
|
// 0 args -> inject undefined, "id"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type MagicString from "magic-string";
|
|
2
|
-
import {
|
|
2
|
+
import { makeStubId } from "../expose-id-utils.js";
|
|
3
3
|
import type { CreateExportBinding } from "./types.js";
|
|
4
4
|
import { isExportOnlyFile } from "./export-analysis.js";
|
|
5
5
|
|
|
@@ -33,7 +33,7 @@ export function generateClientLoaderStubs(
|
|
|
33
33
|
|
|
34
34
|
for (const binding of bindings) {
|
|
35
35
|
for (const name of binding.exportNames) {
|
|
36
|
-
const loaderId =
|
|
36
|
+
const loaderId = makeStubId(filePath, name, isBuild);
|
|
37
37
|
lines.push(
|
|
38
38
|
`export const ${name} = { __brand: "loader", $$id: "${loaderId}" };`,
|
|
39
39
|
);
|
|
@@ -54,9 +54,7 @@ export function transformLoaders(
|
|
|
54
54
|
for (const binding of bindings) {
|
|
55
55
|
const exportName = binding.exportNames[0];
|
|
56
56
|
|
|
57
|
-
const loaderId = isBuild
|
|
58
|
-
? hashId(filePath, exportName)
|
|
59
|
-
: `${filePath}#${exportName}`;
|
|
57
|
+
const loaderId = makeStubId(filePath, exportName, isBuild);
|
|
60
58
|
|
|
61
59
|
// Inject $$id as hidden third parameter.
|
|
62
60
|
// createLoader(fn) -> createLoader(fn, undefined, "id")
|
|
@@ -4,6 +4,9 @@ import path from "node:path";
|
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
5
|
import { normalizePath, findMatchingParen } from "../expose-id-utils.js";
|
|
6
6
|
import { getImportedFnNames } from "./export-analysis.js";
|
|
7
|
+
import { createRangoDebugger, createCounter, NS } from "../../debug.js";
|
|
8
|
+
|
|
9
|
+
const debug = createRangoDebugger(NS.transform);
|
|
7
10
|
|
|
8
11
|
export function transformRouter(
|
|
9
12
|
code: string,
|
|
@@ -82,11 +85,15 @@ export function transformRouter(
|
|
|
82
85
|
*/
|
|
83
86
|
export function exposeRouterId(): Plugin {
|
|
84
87
|
let projectRoot = "";
|
|
88
|
+
const counter = createCounter(debug, "expose-router-id");
|
|
85
89
|
return {
|
|
86
90
|
name: "@rangojs/router:expose-router-id",
|
|
87
91
|
configResolved(config) {
|
|
88
92
|
projectRoot = config.root;
|
|
89
93
|
},
|
|
94
|
+
buildEnd() {
|
|
95
|
+
counter?.flush();
|
|
96
|
+
},
|
|
90
97
|
transform(code, id) {
|
|
91
98
|
if (!code.includes("createRouter")) return null;
|
|
92
99
|
// Accepts both @rangojs/router and @rangojs/router/server subpath.
|
|
@@ -102,9 +109,19 @@ export function exposeRouterId(): Plugin {
|
|
|
102
109
|
}
|
|
103
110
|
if (id.includes("node_modules")) return null;
|
|
104
111
|
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
112
|
+
const start = counter ? performance.now() : 0;
|
|
113
|
+
try {
|
|
114
|
+
const filePath = normalizePath(path.relative(projectRoot, id));
|
|
115
|
+
const routerFnNames = getImportedFnNames(code, "createRouter");
|
|
116
|
+
return transformRouter(
|
|
117
|
+
code,
|
|
118
|
+
filePath,
|
|
119
|
+
routerFnNames,
|
|
120
|
+
normalizePath(id),
|
|
121
|
+
);
|
|
122
|
+
} finally {
|
|
123
|
+
counter?.record(id, performance.now() - start);
|
|
124
|
+
}
|
|
108
125
|
},
|
|
109
126
|
};
|
|
110
127
|
}
|