@reckona/mreact-router 0.0.4 → 0.0.6

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 (60) hide show
  1. package/README.md +57 -1
  2. package/dist/adapters/aws-lambda.d.ts +2 -0
  3. package/dist/adapters/aws-lambda.d.ts.map +1 -1
  4. package/dist/adapters/aws-lambda.js +2 -0
  5. package/dist/adapters/aws-lambda.js.map +1 -1
  6. package/dist/adapters/node.d.ts +2 -0
  7. package/dist/adapters/node.d.ts.map +1 -1
  8. package/dist/adapters/node.js +1 -0
  9. package/dist/adapters/node.js.map +1 -1
  10. package/dist/app-router-globals.d.ts +10 -0
  11. package/dist/app-router-globals.d.ts.map +1 -0
  12. package/dist/app-router-globals.js +2 -0
  13. package/dist/app-router-globals.js.map +1 -0
  14. package/dist/cli.js +6 -6
  15. package/dist/cli.js.map +1 -1
  16. package/dist/client.d.ts.map +1 -1
  17. package/dist/client.js +525 -45
  18. package/dist/client.js.map +1 -1
  19. package/dist/dev-server.d.ts +1 -1
  20. package/dist/dev-server.d.ts.map +1 -1
  21. package/dist/dev-server.js +44 -16
  22. package/dist/dev-server.js.map +1 -1
  23. package/dist/import-policy.d.ts.map +1 -1
  24. package/dist/import-policy.js +43 -11
  25. package/dist/import-policy.js.map +1 -1
  26. package/dist/index.d.ts +5 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/link.d.ts +18 -0
  31. package/dist/link.d.ts.map +1 -0
  32. package/dist/link.js +24 -0
  33. package/dist/link.js.map +1 -0
  34. package/dist/module-runner.d.ts.map +1 -1
  35. package/dist/module-runner.js +77 -15
  36. package/dist/module-runner.js.map +1 -1
  37. package/dist/navigation-state.d.ts +11 -0
  38. package/dist/navigation-state.d.ts.map +1 -0
  39. package/dist/navigation-state.js +65 -0
  40. package/dist/navigation-state.js.map +1 -0
  41. package/dist/render.d.ts +5 -0
  42. package/dist/render.d.ts.map +1 -1
  43. package/dist/render.js +79 -9
  44. package/dist/render.js.map +1 -1
  45. package/dist/route-source.d.ts.map +1 -1
  46. package/dist/route-source.js +16 -5
  47. package/dist/route-source.js.map +1 -1
  48. package/dist/serve.d.ts +4 -1
  49. package/dist/serve.d.ts.map +1 -1
  50. package/dist/serve.js +11 -3
  51. package/dist/serve.js.map +1 -1
  52. package/dist/vite-config.d.ts +9 -0
  53. package/dist/vite-config.d.ts.map +1 -1
  54. package/dist/vite-config.js +8 -1
  55. package/dist/vite-config.js.map +1 -1
  56. package/dist/workspace-packages.d.ts +14 -0
  57. package/dist/workspace-packages.d.ts.map +1 -0
  58. package/dist/workspace-packages.js +41 -0
  59. package/dist/workspace-packages.js.map +1 -0
  60. package/package.json +20 -7
@@ -2,6 +2,7 @@ import { dirname, join, sep } from "node:path";
2
2
  import { fileURLToPath, pathToFileURL } from "node:url";
3
3
  import { build as bundle } from "esbuild";
4
4
  import { runnerImport } from "vite";
5
+ import { resolveWorkspacePackageFile } from "./workspace-packages.js";
5
6
  const runnerConfig = {
6
7
  configFile: false,
7
8
  logLevel: "silent",
@@ -64,7 +65,6 @@ async function bundleAppRouterSourceModule(options) {
64
65
  function workspacePackageResolutionPlugin() {
65
66
  const currentDir = dirname(fileURLToPath(import.meta.url));
66
67
  const packageRoot = dirname(currentDir);
67
- const packagesDir = dirname(packageRoot);
68
68
  const sourceOrDist = currentDir.endsWith(`${sep}dist`) ? "dist/index.js" : "src/index.ts";
69
69
  const nativeEscapeSourceOrDist = currentDir.endsWith(`${sep}dist`)
70
70
  ? "dist/native-escape.js"
@@ -72,19 +72,73 @@ function workspacePackageResolutionPlugin() {
72
72
  const sessionSourceOrDist = currentDir.endsWith(`${sep}dist`)
73
73
  ? "dist/session.js"
74
74
  : "src/session.ts";
75
- const packageFile = (packageName, basename) => join(packagesDir, packageName, currentDir.endsWith(`${sep}dist`) ? `dist/${basename}.js` : `src/${basename}.ts`);
75
+ const packageFile = (monorepoDir, packageName, entry, specifier, resolveDir) => resolveWorkspacePackageFile({
76
+ currentFileUrl: import.meta.url,
77
+ entry,
78
+ monorepoDir,
79
+ packageName,
80
+ resolveDir,
81
+ specifier,
82
+ });
76
83
  const entries = new Map([
77
- ["@reckona/mreact-auth", join(packagesDir, "auth", sourceOrDist)],
78
- ["@reckona/mreact-compat", packageFile("react-compat", "index")],
79
- ["@reckona/mreact-compat/event-priority", packageFile("react-compat", "event-priority")],
80
- ["@reckona/mreact-compat/flight", packageFile("react-compat", "flight")],
81
- ["@reckona/mreact-compat/internal", packageFile("react-compat", "internal")],
82
- ["@reckona/mreact-compat/jsx-dev-runtime", packageFile("react-compat", "jsx-dev-runtime")],
83
- ["@reckona/mreact-compat/jsx-runtime", packageFile("react-compat", "jsx-runtime")],
84
- ["@reckona/mreact-compat/scheduler", packageFile("react-compat", "scheduler")],
85
- ["@reckona/mreact-reactive-core", join(packagesDir, "reactive-core", sourceOrDist)],
86
- ["@reckona/mreact-query", join(packagesDir, "query", sourceOrDist)],
87
- ["@reckona/mreact-server", join(packagesDir, "server", sourceOrDist)],
84
+ [
85
+ "@reckona/mreact-auth",
86
+ { entry: "index", monorepoDir: "auth", packageName: "@reckona/mreact-auth" },
87
+ ],
88
+ [
89
+ "@reckona/mreact-compat",
90
+ { entry: "index", monorepoDir: "react-compat", packageName: "@reckona/mreact-compat" },
91
+ ],
92
+ [
93
+ "@reckona/mreact-compat/event-priority",
94
+ {
95
+ entry: "event-priority",
96
+ monorepoDir: "react-compat",
97
+ packageName: "@reckona/mreact-compat",
98
+ },
99
+ ],
100
+ [
101
+ "@reckona/mreact-compat/flight",
102
+ { entry: "flight", monorepoDir: "react-compat", packageName: "@reckona/mreact-compat" },
103
+ ],
104
+ [
105
+ "@reckona/mreact-compat/internal",
106
+ { entry: "internal", monorepoDir: "react-compat", packageName: "@reckona/mreact-compat" },
107
+ ],
108
+ [
109
+ "@reckona/mreact-compat/jsx-dev-runtime",
110
+ {
111
+ entry: "jsx-dev-runtime",
112
+ monorepoDir: "react-compat",
113
+ packageName: "@reckona/mreact-compat",
114
+ },
115
+ ],
116
+ [
117
+ "@reckona/mreact-compat/jsx-runtime",
118
+ { entry: "jsx-runtime", monorepoDir: "react-compat", packageName: "@reckona/mreact-compat" },
119
+ ],
120
+ [
121
+ "@reckona/mreact-compat/scheduler",
122
+ { entry: "scheduler", monorepoDir: "react-compat", packageName: "@reckona/mreact-compat" },
123
+ ],
124
+ [
125
+ "@reckona/mreact-reactive-core",
126
+ {
127
+ entry: "index",
128
+ monorepoDir: "reactive-core",
129
+ packageName: "@reckona/mreact-reactive-core",
130
+ },
131
+ ],
132
+ [
133
+ "@reckona/mreact-query",
134
+ { entry: "index", monorepoDir: "query", packageName: "@reckona/mreact-query" },
135
+ ],
136
+ [
137
+ "@reckona/mreact-server",
138
+ { entry: "index", monorepoDir: "server", packageName: "@reckona/mreact-server" },
139
+ ],
140
+ ]);
141
+ const routerEntries = new Map([
88
142
  ["@reckona/mreact-router", join(packageRoot, sourceOrDist)],
89
143
  ["@reckona/mreact-router/native-escape", join(packageRoot, nativeEscapeSourceOrDist)],
90
144
  ["@reckona/mreact-router/session", join(packageRoot, sessionSourceOrDist)],
@@ -97,8 +151,16 @@ function workspacePackageResolutionPlugin() {
97
151
  buildApi.onResolve({
98
152
  filter: /^@reckona\/mreact-(?:auth|query|reactive-core|server|router|compat)(?:\/(?:event-priority|flight|internal|jsx-dev-runtime|jsx-runtime|scheduler|native-escape|session|internal\/native-escape|internal\/session))?$/,
99
153
  }, (args) => {
100
- const path = entries.get(args.path);
101
- return path === undefined ? undefined : { path };
154
+ const routerPath = routerEntries.get(args.path);
155
+ if (routerPath !== undefined) {
156
+ return { path: routerPath };
157
+ }
158
+ const entry = entries.get(args.path);
159
+ return entry === undefined
160
+ ? undefined
161
+ : {
162
+ path: packageFile(entry.monorepoDir, entry.packageName, entry.entry, args.path, args.resolveDir),
163
+ };
102
164
  });
103
165
  },
104
166
  };
@@ -1 +1 @@
1
- {"version":3,"file":"module-runner.js","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-runner.js","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type AppRouterNavigationType = "push" | "replace" | "pop" | "refresh";
2
+ export interface AppRouterNavigationState {
3
+ pending: boolean;
4
+ from: string | null;
5
+ to: string | null;
6
+ type: AppRouterNavigationType | null;
7
+ }
8
+ export type AppRouterNavigationStateListener = (state: AppRouterNavigationState) => void;
9
+ export declare function getNavigationState(): AppRouterNavigationState;
10
+ export declare function subscribeNavigationState(listener: AppRouterNavigationStateListener): () => void;
11
+ //# sourceMappingURL=navigation-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-state.d.ts","sourceRoot":"","sources":["../src/navigation-state.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,KAAK,EAAE,wBAAwB,KAC5B,IAAI,CAAC;AASV,wBAAgB,kBAAkB,IAAI,wBAAwB,CAW7D;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,gCAAgC,GACzC,MAAM,IAAI,CAkBZ"}
@@ -0,0 +1,65 @@
1
+ const idleNavigationState = {
2
+ from: null,
3
+ pending: false,
4
+ to: null,
5
+ type: null,
6
+ };
7
+ export function getNavigationState() {
8
+ const runtimeState = globalThis.__mreactNavigationState?.current;
9
+ const normalized = normalizeNavigationState(runtimeState);
10
+ if (normalized !== undefined) {
11
+ return normalized;
12
+ }
13
+ return navigationStateFromDocument();
14
+ }
15
+ export function subscribeNavigationState(listener) {
16
+ if (typeof window === "undefined") {
17
+ return () => undefined;
18
+ }
19
+ const handleNavigationStateChange = (event) => {
20
+ const state = normalizeNavigationState(event.detail);
21
+ if (state !== undefined) {
22
+ listener(state);
23
+ }
24
+ };
25
+ window.addEventListener("mreact:navigation-state-change", handleNavigationStateChange);
26
+ return () => {
27
+ window.removeEventListener("mreact:navigation-state-change", handleNavigationStateChange);
28
+ };
29
+ }
30
+ function navigationStateFromDocument() {
31
+ if (typeof document === "undefined") {
32
+ return { ...idleNavigationState };
33
+ }
34
+ const root = document.documentElement;
35
+ if (root.getAttribute("data-mreact-navigation-pending") !== "true") {
36
+ return { ...idleNavigationState };
37
+ }
38
+ return {
39
+ from: root.getAttribute("data-mreact-navigation-from"),
40
+ pending: true,
41
+ to: root.getAttribute("data-mreact-navigation-to"),
42
+ type: navigationType(root.getAttribute("data-mreact-navigation-type")),
43
+ };
44
+ }
45
+ function normalizeNavigationState(value) {
46
+ if (value === null || typeof value !== "object") {
47
+ return undefined;
48
+ }
49
+ const state = value;
50
+ if (typeof state.pending !== "boolean") {
51
+ return undefined;
52
+ }
53
+ return {
54
+ from: typeof state.from === "string" ? state.from : null,
55
+ pending: state.pending,
56
+ to: typeof state.to === "string" ? state.to : null,
57
+ type: navigationType(state.type),
58
+ };
59
+ }
60
+ function navigationType(value) {
61
+ return value === "push" || value === "replace" || value === "pop" || value === "refresh"
62
+ ? value
63
+ : null;
64
+ }
65
+ //# sourceMappingURL=navigation-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-state.js","sourceRoot":"","sources":["../src/navigation-state.ts"],"names":[],"mappings":"AAaA,MAAM,mBAAmB,GAA6B;IACpD,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,KAAK;IACd,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAI,UAEpB,CAAC,uBAAuB,EAAE,OAAO,CAAC;IACpC,MAAM,UAAU,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAE1D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,2BAA2B,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAA0C;IAE1C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,MAAM,2BAA2B,GAAG,CAAC,KAAY,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,wBAAwB,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;QAE/E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,gCAAgC,EAAE,2BAA2B,CAAC,CAAC;IAEvF,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,mBAAmB,CAAC,gCAAgC,EAAE,2BAA2B,CAAC,CAAC;IAC5F,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B;IAClC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IAEtC,IAAI,IAAI,CAAC,YAAY,CAAC,gCAAgC,CAAC,KAAK,MAAM,EAAE,CAAC;QACnE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACpC,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC;QACtD,OAAO,EAAE,IAAI;QACb,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC;QAClD,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,KAA0C,CAAC;IAEzD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACxD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAClD,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS;QACtF,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAC;AACX,CAAC"}
package/dist/render.d.ts CHANGED
@@ -11,6 +11,7 @@ export interface RenderAppRequestOptions {
11
11
  clientScripts?: ReadonlyMap<string, string>;
12
12
  importPolicy?: AppRouterImportPolicy | undefined;
13
13
  logger?: AppRouterLogger | undefined;
14
+ onResponse?: AppRouterResponseHook | undefined;
14
15
  queryClient?: QueryClient | undefined;
15
16
  request: Request;
16
17
  routeCache?: AppRouterCache | undefined;
@@ -22,5 +23,9 @@ export interface RenderAppRequestOptions {
22
23
  serverActions?: AppRouterServerActionOptions | undefined;
23
24
  skipMiddleware?: boolean | undefined;
24
25
  }
26
+ export type AppRouterResponseHook = (response: Response, context: AppRouterResponseHookContext) => Response | undefined | void | Promise<Response | undefined | void>;
27
+ export interface AppRouterResponseHookContext {
28
+ request: Request;
29
+ }
25
30
  export declare function renderAppRequest(options: RenderAppRequestOptions): Promise<Response>;
26
31
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAUA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAsB/B,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,KAAK,4BAA4B,EAIlC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAqC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiBnD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS,CAAC;IAC3E,wBAAwB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5D,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IACzD,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAqED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuhB1F"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAUA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAsB/B,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,KAAK,4BAA4B,EAIlC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAqC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiBnD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS,CAAC;IAC3E,wBAAwB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5D,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IACzD,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,MAAM,qBAAqB,GAAG,CAClC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,4BAA4B,KAClC,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAExE,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;CAClB;AAqED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAU1F"}
package/dist/render.js CHANGED
@@ -50,6 +50,10 @@ export async function renderAppRequest(options) {
50
50
  if (authStorage.getStore() === undefined) {
51
51
  return authStorage.run({}, () => renderAppRequest(options));
52
52
  }
53
+ const response = await renderAppRequestInternal(options);
54
+ return applyAppRouterResponseHook(response, options);
55
+ }
56
+ async function renderAppRequestInternal(options) {
53
57
  const routes = options.routes ?? (await scanAppRoutes({ appDir: options.appDir }));
54
58
  const url = new URL(options.request.url);
55
59
  const middlewareResponse = options.skipMiddleware === true
@@ -63,7 +67,7 @@ export async function renderAppRequest(options) {
63
67
  const location = rewriteLocation(middlewareResponse);
64
68
  if (location !== undefined) {
65
69
  const rewriteUrl = new URL(location, options.request.url);
66
- return renderAppRequest({
70
+ return renderAppRequestInternal({
67
71
  ...options,
68
72
  request: new Request(rewriteUrl, options.request),
69
73
  skipMiddleware: true,
@@ -96,6 +100,7 @@ export async function renderAppRequest(options) {
96
100
  error: undefined,
97
101
  request: options.request,
98
102
  routeFile: notFoundFile,
103
+ routeScripts: options.clientScripts,
99
104
  serverModules: options.serverModules,
100
105
  serverModuleCacheVersion: options.serverModuleCacheVersion,
101
106
  serverSourceFiles: options.serverSourceFiles,
@@ -108,7 +113,7 @@ export async function renderAppRequest(options) {
108
113
  let routeCacheContext;
109
114
  try {
110
115
  if (matched.route.kind === "server") {
111
- return await dispatchServerRoute(matched.route.file, options.request);
116
+ return await dispatchServerRoute(matched.route.file, options.request, matched.params);
112
117
  }
113
118
  // Issue 080: page routes render HTML for GET / HEAD only. Other
114
119
  // methods (PUT, PATCH, DELETE, PROPFIND, ...) get 405 with an
@@ -217,6 +222,9 @@ export async function renderAppRequest(options) {
217
222
  });
218
223
  }
219
224
  const data = dataPromise === undefined ? undefined : await dataPromise;
225
+ if (data instanceof Response) {
226
+ return data;
227
+ }
220
228
  const renderedPage = await runWithQueryClient(queryClient, () => runServerModuleWithSlots(stringOutput.code, {
221
229
  data,
222
230
  params: matched.params,
@@ -271,7 +279,11 @@ export async function renderAppRequest(options) {
271
279
  html = injectQueryState(html, dehydrate(queryClient));
272
280
  const headers = new Headers(responseHeadersForMetadata(metadata));
273
281
  headers.set("x-mreact-stream", "1");
274
- return withOptionalActionCookie(htmlResponse(`<!DOCTYPE html>${modulePreloadTags(clientRoute ? clientScript : undefined, options.assetBaseUrl)}${html}`, { headers }), preparedActions.csrfToken, preparedActions.csrfTokenIsNew === true);
282
+ return withOptionalActionCookie(htmlResponse(`<!DOCTYPE html>${clientNavigationHeadTags({
283
+ assetBaseUrl: options.assetBaseUrl,
284
+ currentScript: clientRoute ? clientScript : undefined,
285
+ routeScripts: options.clientScripts,
286
+ })}${html}`, { headers }), preparedActions.csrfToken, preparedActions.csrfTokenIsNew === true);
275
287
  }
276
288
  const output = transformServerModule({
277
289
  code: routeCode,
@@ -300,6 +312,7 @@ export async function renderAppRequest(options) {
300
312
  queryClient,
301
313
  request: options.request,
302
314
  routePath: matched.route.path,
315
+ routeScripts: options.clientScripts,
303
316
  serverModules: options.serverModules,
304
317
  serverModuleCacheVersion: options.serverModuleCacheVersion,
305
318
  serverSourceFiles: options.serverSourceFiles,
@@ -311,6 +324,9 @@ export async function renderAppRequest(options) {
311
324
  }), preparedActions.csrfToken, preparedActions.csrfTokenIsNew === true);
312
325
  }
313
326
  const data = dataPromise === undefined ? undefined : await dataPromise;
327
+ if (data instanceof Response) {
328
+ return data;
329
+ }
314
330
  const props = {
315
331
  data,
316
332
  params: matched.params,
@@ -323,6 +339,7 @@ export async function renderAppRequest(options) {
323
339
  pageFile: matched.route.file,
324
340
  props,
325
341
  routePath: matched.route.path,
342
+ routeScripts: options.clientScripts,
326
343
  serverModules: options.serverModules,
327
344
  serverModuleCacheVersion: options.serverModuleCacheVersion,
328
345
  serverSourceFiles: options.serverSourceFiles,
@@ -349,6 +366,9 @@ export async function renderAppRequest(options) {
349
366
  });
350
367
  }
351
368
  const data = dataPromise === undefined ? undefined : await dataPromise;
369
+ if (data instanceof Response) {
370
+ return data;
371
+ }
352
372
  const renderedPage = await runWithQueryClient(queryClient, () => runServerModuleWithSlots(output.code, {
353
373
  data,
354
374
  params: matched.params,
@@ -406,7 +426,11 @@ export async function renderAppRequest(options) {
406
426
  html = injectHeadMetadata(html, metadata);
407
427
  html = injectAuthSessionClaims(html, originalAnalysis.authIncludesClaims ? currentAuthClaims() : undefined);
408
428
  html = injectQueryState(html, dehydrate(queryClient));
409
- const response = withOptionalActionCookie(htmlResponse(`<!DOCTYPE html>${modulePreloadTags(clientRoute ? clientScript : undefined, options.assetBaseUrl)}${html}`, {
429
+ const response = withOptionalActionCookie(htmlResponse(`<!DOCTYPE html>${clientNavigationHeadTags({
430
+ assetBaseUrl: options.assetBaseUrl,
431
+ currentScript: clientRoute ? clientScript : undefined,
432
+ routeScripts: options.clientScripts,
433
+ })}${html}`, {
410
434
  headers: responseHeadersForMetadata(metadata),
411
435
  }), preparedActions.csrfToken, preparedActions.csrfTokenIsNew === true);
412
436
  const effectiveCachePolicy = cachePolicy ?? routeCacheContext.cachePolicy;
@@ -439,6 +463,7 @@ export async function renderAppRequest(options) {
439
463
  error: undefined,
440
464
  request: options.request,
441
465
  routeFile: notFoundFile,
466
+ routeScripts: options.clientScripts,
442
467
  serverModules: options.serverModules,
443
468
  serverModuleCacheVersion: options.serverModuleCacheVersion,
444
469
  serverSourceFiles: options.serverSourceFiles,
@@ -458,6 +483,7 @@ export async function renderAppRequest(options) {
458
483
  error,
459
484
  request: options.request,
460
485
  routeFile: errorFile,
486
+ routeScripts: options.clientScripts,
461
487
  serverModules: options.serverModules,
462
488
  serverModuleCacheVersion: options.serverModuleCacheVersion,
463
489
  serverSourceFiles: options.serverSourceFiles,
@@ -470,6 +496,12 @@ export async function renderAppRequest(options) {
470
496
  await routeCacheContext?.dispose();
471
497
  }
472
498
  }
499
+ async function applyAppRouterResponseHook(response, options) {
500
+ const hooked = await options.onResponse?.(response, {
501
+ request: options.request,
502
+ });
503
+ return hooked instanceof Response ? hooked : response;
504
+ }
473
505
  function withOptionalActionCookie(response, csrfToken, csrfTokenIsNew) {
474
506
  // Only re-issue Set-Cookie when this render minted the token. Reusing
475
507
  // an incoming cookie value (Issue 070) means no Set-Cookie is needed
@@ -484,6 +516,23 @@ function modulePreloadTags(script, assetBaseUrl) {
484
516
  ? ""
485
517
  : `<link rel="modulepreload" href="${escapeHtmlAttribute(assetPath(script, assetBaseUrl ?? "/_mreact/client/"))}">`;
486
518
  }
519
+ function clientNavigationHeadTags(options) {
520
+ return [
521
+ modulePreloadTags(options.currentScript, options.assetBaseUrl),
522
+ routePrefetchManifestScript(options.routeScripts, options.assetBaseUrl),
523
+ ].join("");
524
+ }
525
+ function routePrefetchManifestScript(routeScripts, assetBaseUrl) {
526
+ if (routeScripts === undefined || routeScripts.size === 0) {
527
+ return "";
528
+ }
529
+ const routes = Array.from(routeScripts.entries(), ([path, script]) => ({
530
+ path,
531
+ script: assetPath(script, assetBaseUrl ?? "/_mreact/client/"),
532
+ }));
533
+ const json = JSON.stringify(routes).replaceAll("<", "\\u003c");
534
+ return `<script type="application/json" id="mreact-route-prefetch-manifest">${json}</script>`;
535
+ }
487
536
  function isNavigationRequest(request) {
488
537
  return request.headers.get("x-mreact-navigation") === "1";
489
538
  }
@@ -587,7 +636,11 @@ async function renderSpecialRoute(options) {
587
636
  serverModuleCacheVersion: options.serverModuleCacheVersion,
588
637
  serverSourceFiles: options.serverSourceFiles,
589
638
  });
590
- return new Response(`<!DOCTYPE html>${modulePreloadTags(options.navigation?.clientRoute === true ? options.navigation.script : undefined, options.assetBaseUrl)}${html}`, {
639
+ return new Response(`<!DOCTYPE html>${clientNavigationHeadTags({
640
+ assetBaseUrl: options.assetBaseUrl,
641
+ currentScript: options.navigation?.clientRoute === true ? options.navigation.script : undefined,
642
+ routeScripts: options.routeScripts,
643
+ })}${html}`, {
591
644
  headers: { "content-type": "text/html; charset=utf-8" },
592
645
  status: options.status,
593
646
  });
@@ -612,13 +665,22 @@ function normalizeErrorForProps(error) {
612
665
  }
613
666
  return { message: String(error) };
614
667
  }
615
- async function dispatchServerRoute(file, request) {
668
+ async function dispatchServerRoute(file, request, params) {
616
669
  const module = await importAppRouterFileModule(file);
617
670
  const handler = module[request.method] ?? module.ALL ?? module.default;
618
671
  if (typeof handler !== "function") {
619
672
  return new Response("Method Not Allowed", { status: 405 });
620
673
  }
621
- const response = await handler(request);
674
+ let response;
675
+ try {
676
+ response = await handler(request, { params });
677
+ }
678
+ catch (error) {
679
+ if (error instanceof Response) {
680
+ return error;
681
+ }
682
+ throw error;
683
+ }
622
684
  return response instanceof Response
623
685
  ? response
624
686
  : new Response("Invalid route response", { status: 500 });
@@ -895,7 +957,11 @@ function runServerStreamModule(code, options) {
895
957
  })
896
958
  : undefined;
897
959
  sink.append("<!DOCTYPE html>");
898
- sink.append(modulePreloadTags(options.clientRoute ? options.script : undefined, options.assetBaseUrl));
960
+ sink.append(clientNavigationHeadTags({
961
+ assetBaseUrl: options.assetBaseUrl,
962
+ currentScript: options.clientRoute ? options.script : undefined,
963
+ routeScripts: options.routeScripts,
964
+ }));
899
965
  for (const shell of layoutShells) {
900
966
  sink.append(shell.prefix);
901
967
  }
@@ -939,7 +1005,11 @@ async function runServerStreamModuleWithLoading(code, options) {
939
1005
  : undefined;
940
1006
  return renderToReadableStream((sink) => {
941
1007
  sink.append("<!DOCTYPE html>");
942
- sink.append(modulePreloadTags(options.clientRoute ? options.script : undefined, options.assetBaseUrl));
1008
+ sink.append(clientNavigationHeadTags({
1009
+ assetBaseUrl: options.assetBaseUrl,
1010
+ currentScript: options.clientRoute ? options.script : undefined,
1011
+ routeScripts: options.routeScripts,
1012
+ }));
943
1013
  for (const shell of layoutShells) {
944
1014
  sink.append(shell.prefix);
945
1015
  }