@reckona/mreact-router 0.0.160 → 0.0.162

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 (183) hide show
  1. package/dist/actions.d.ts +6 -0
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js.map +1 -1
  4. package/dist/adapters/aws-lambda.d.ts +29 -0
  5. package/dist/adapters/aws-lambda.d.ts.map +1 -1
  6. package/dist/adapters/aws-lambda.js.map +1 -1
  7. package/dist/adapters/cloudflare.d.ts +78 -0
  8. package/dist/adapters/cloudflare.d.ts.map +1 -1
  9. package/dist/adapters/cloudflare.js.map +1 -1
  10. package/dist/adapters/edge.d.ts +6 -0
  11. package/dist/adapters/edge.d.ts.map +1 -1
  12. package/dist/adapters/edge.js.map +1 -1
  13. package/dist/adapters/node.d.ts +7 -0
  14. package/dist/adapters/node.d.ts.map +1 -1
  15. package/dist/adapters/node.js.map +1 -1
  16. package/dist/adapters/static.d.ts +6 -0
  17. package/dist/adapters/static.d.ts.map +1 -1
  18. package/dist/adapters/static.js.map +1 -1
  19. package/dist/app-router-globals.d.ts +6 -0
  20. package/dist/app-router-globals.d.ts.map +1 -1
  21. package/dist/app-router-globals.js.map +1 -1
  22. package/dist/assets.d.ts +18 -0
  23. package/dist/assets.d.ts.map +1 -1
  24. package/dist/assets.js +6 -0
  25. package/dist/assets.js.map +1 -1
  26. package/dist/build.d.ts +30 -0
  27. package/dist/build.d.ts.map +1 -1
  28. package/dist/build.js +4 -0
  29. package/dist/build.js.map +1 -1
  30. package/dist/cache-stats.d.ts +3 -0
  31. package/dist/cache-stats.d.ts.map +1 -1
  32. package/dist/cache-stats.js.map +1 -1
  33. package/dist/cache.d.ts +15 -0
  34. package/dist/cache.d.ts.map +1 -1
  35. package/dist/cache.js.map +1 -1
  36. package/dist/cli-options.d.ts.map +1 -1
  37. package/dist/cli-options.js +2 -0
  38. package/dist/cli-options.js.map +1 -1
  39. package/dist/cli.js +1 -0
  40. package/dist/cli.js.map +1 -1
  41. package/dist/config.d.ts +15 -0
  42. package/dist/config.d.ts.map +1 -1
  43. package/dist/config.js.map +1 -1
  44. package/dist/cookies.d.ts +3 -0
  45. package/dist/cookies.d.ts.map +1 -1
  46. package/dist/cookies.js.map +1 -1
  47. package/dist/csrf.d.ts +12 -0
  48. package/dist/csrf.d.ts.map +1 -1
  49. package/dist/csrf.js +12 -0
  50. package/dist/csrf.js.map +1 -1
  51. package/dist/deferred.d.ts +9 -0
  52. package/dist/deferred.d.ts.map +1 -1
  53. package/dist/deferred.js +6 -0
  54. package/dist/deferred.js.map +1 -1
  55. package/dist/dev-server.d.ts +3 -0
  56. package/dist/dev-server.d.ts.map +1 -1
  57. package/dist/dev-server.js.map +1 -1
  58. package/dist/file-conventions.d.ts +3 -0
  59. package/dist/file-conventions.d.ts.map +1 -1
  60. package/dist/file-conventions.js.map +1 -1
  61. package/dist/i18n.d.ts +15 -0
  62. package/dist/i18n.d.ts.map +1 -1
  63. package/dist/i18n.js +6 -0
  64. package/dist/i18n.js.map +1 -1
  65. package/dist/import-policy.d.ts +3 -0
  66. package/dist/import-policy.d.ts.map +1 -1
  67. package/dist/import-policy.js.map +1 -1
  68. package/dist/index.d.ts +19 -0
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +10 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/link.d.ts +34 -0
  73. package/dist/link.d.ts.map +1 -1
  74. package/dist/link.js.map +1 -1
  75. package/dist/logger.d.ts +33 -0
  76. package/dist/logger.d.ts.map +1 -1
  77. package/dist/logger.js.map +1 -1
  78. package/dist/multipart.d.ts +15 -0
  79. package/dist/multipart.d.ts.map +1 -1
  80. package/dist/multipart.js +3 -0
  81. package/dist/multipart.js.map +1 -1
  82. package/dist/native-escape.d.ts +3 -0
  83. package/dist/native-escape.d.ts.map +1 -1
  84. package/dist/native-escape.js +3 -0
  85. package/dist/native-escape.js.map +1 -1
  86. package/dist/navigation-state.d.ts +15 -0
  87. package/dist/navigation-state.d.ts.map +1 -1
  88. package/dist/navigation-state.js +6 -0
  89. package/dist/navigation-state.js.map +1 -1
  90. package/dist/navigation.d.ts +9 -0
  91. package/dist/navigation.d.ts.map +1 -1
  92. package/dist/navigation.js +6 -0
  93. package/dist/navigation.js.map +1 -1
  94. package/dist/prerender-store.d.ts +21 -0
  95. package/dist/prerender-store.d.ts.map +1 -1
  96. package/dist/prerender-store.js +9 -0
  97. package/dist/prerender-store.js.map +1 -1
  98. package/dist/render.d.ts +12 -0
  99. package/dist/render.d.ts.map +1 -1
  100. package/dist/render.js +3 -0
  101. package/dist/render.js.map +1 -1
  102. package/dist/routes.d.ts +30 -0
  103. package/dist/routes.d.ts.map +1 -1
  104. package/dist/routes.js +6 -0
  105. package/dist/routes.js.map +1 -1
  106. package/dist/runtime-cache.d.ts +4 -0
  107. package/dist/runtime-cache.d.ts.map +1 -1
  108. package/dist/runtime-cache.js +3 -0
  109. package/dist/runtime-cache.js.map +1 -1
  110. package/dist/runtime-state.d.ts +3 -0
  111. package/dist/runtime-state.d.ts.map +1 -1
  112. package/dist/runtime-state.js +3 -0
  113. package/dist/runtime-state.js.map +1 -1
  114. package/dist/serve.d.ts +24 -0
  115. package/dist/serve.d.ts.map +1 -1
  116. package/dist/serve.js +6 -0
  117. package/dist/serve.js.map +1 -1
  118. package/dist/session.d.ts +12 -0
  119. package/dist/session.d.ts.map +1 -1
  120. package/dist/session.js.map +1 -1
  121. package/dist/stream-list.d.ts +12 -0
  122. package/dist/stream-list.d.ts.map +1 -1
  123. package/dist/stream-list.js +3 -0
  124. package/dist/stream-list.js.map +1 -1
  125. package/dist/trace.d.ts +30 -0
  126. package/dist/trace.d.ts.map +1 -1
  127. package/dist/trace.js +6 -0
  128. package/dist/trace.js.map +1 -1
  129. package/dist/typed-routes.d.ts +33 -0
  130. package/dist/typed-routes.d.ts.map +1 -1
  131. package/dist/typed-routes.js.map +1 -1
  132. package/dist/types.d.ts +72 -0
  133. package/dist/types.d.ts.map +1 -1
  134. package/dist/types.js.map +1 -1
  135. package/dist/upgrade.d.ts +3 -0
  136. package/dist/upgrade.d.ts.map +1 -1
  137. package/dist/upgrade.js.map +1 -1
  138. package/dist/vite.d.ts +21 -0
  139. package/dist/vite.d.ts.map +1 -1
  140. package/dist/vite.js +15 -0
  141. package/dist/vite.js.map +1 -1
  142. package/package.json +11 -11
  143. package/src/actions.ts +6 -0
  144. package/src/adapters/aws-lambda.ts +29 -0
  145. package/src/adapters/cloudflare.ts +78 -0
  146. package/src/adapters/edge.ts +6 -0
  147. package/src/adapters/node.ts +7 -0
  148. package/src/adapters/static.ts +6 -0
  149. package/src/app-router-globals.ts +6 -0
  150. package/src/assets.ts +18 -0
  151. package/src/build.ts +38 -0
  152. package/src/cache-stats.ts +3 -0
  153. package/src/cache.ts +15 -0
  154. package/src/cli-options.ts +2 -0
  155. package/src/cli.ts +1 -0
  156. package/src/config.ts +15 -0
  157. package/src/cookies.ts +3 -0
  158. package/src/csrf.ts +12 -0
  159. package/src/deferred.ts +9 -0
  160. package/src/dev-server.ts +3 -0
  161. package/src/file-conventions.ts +3 -0
  162. package/src/i18n.ts +15 -0
  163. package/src/import-policy.ts +3 -0
  164. package/src/index.ts +19 -0
  165. package/src/link.ts +34 -0
  166. package/src/logger.ts +33 -0
  167. package/src/multipart.ts +15 -0
  168. package/src/native-escape.ts +3 -0
  169. package/src/navigation-state.ts +15 -0
  170. package/src/navigation.ts +9 -0
  171. package/src/prerender-store.ts +21 -0
  172. package/src/render.ts +12 -0
  173. package/src/routes.ts +30 -0
  174. package/src/runtime-cache.ts +5 -0
  175. package/src/runtime-state.ts +3 -0
  176. package/src/serve.ts +24 -0
  177. package/src/session.ts +12 -0
  178. package/src/stream-list.ts +12 -0
  179. package/src/trace.ts +30 -0
  180. package/src/typed-routes.ts +33 -0
  181. package/src/types.ts +72 -0
  182. package/src/upgrade.ts +3 -0
  183. package/src/vite.ts +21 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/adapters/static.ts"],"names":[],"mappings":"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","sourcesContent":["import { cp, mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { dirname, join, resolve, sep } from \"node:path\";\nimport type { BuiltPrerenderedRoute, BuiltServerManifest } from \"../build.js\";\n\nexport interface StaticExportOptions {\n exportDir: string;\n outDir: string;\n paths?: readonly string[] | undefined;\n}\n\nexport interface StaticExportResult {\n routes: string[];\n}\n\n/**\n * Exports prerendered app-router routes and client assets to a static filesystem directory.\n *\n * Only routes present in the built prerender manifest can be exported; the export directory is removed and recreated, and route paths are checked to prevent traversal outside it.\n */\nexport async function exportStaticApp(options: StaticExportOptions): Promise<StaticExportResult> {\n const manifest = JSON.parse(\n await readFile(join(options.outDir, \"server\", \"manifest.json\"), \"utf8\"),\n ) as BuiltServerManifest;\n const clientManifest = JSON.parse(\n await readFile(join(options.outDir, \"client\", \"manifest.json\"), \"utf8\"),\n ) as { publicAssets?: readonly string[] };\n const prerenderedRoutes = manifest.prerenderedRoutes ?? {};\n const routes = [...(options.paths ?? Object.keys(prerenderedRoutes))].sort();\n\n await rm(options.exportDir, { force: true, recursive: true });\n await mkdir(options.exportDir, { recursive: true });\n\n for (const route of routes) {\n const entry = prerenderedRoutes[route];\n\n if (entry === undefined) {\n throw new Error(`Cannot export non-prerendered route: ${route}`);\n }\n\n await writePrerenderedRoute(options.exportDir, route, entry);\n }\n\n await cp(join(options.outDir, \"client\"), join(options.exportDir, \"_mreact\", \"client\"), {\n recursive: true,\n });\n await copyPublicAssetsToExportRoot(\n join(options.outDir, \"client\"),\n options.exportDir,\n clientManifest.publicAssets ?? [],\n );\n\n return { routes };\n}\n\nasync function copyPublicAssetsToExportRoot(\n clientDir: string,\n exportDir: string,\n publicAssets: readonly string[],\n): Promise<void> {\n for (const asset of publicAssets) {\n if (\n !asset.startsWith(\"/\") ||\n asset.startsWith(\"//\") ||\n asset.includes(\"..\") ||\n asset === \"/_mreact\" ||\n asset.startsWith(\"/_mreact/\")\n ) {\n continue;\n }\n\n const relativeAsset = asset.slice(1);\n const destination = join(exportDir, relativeAsset);\n await mkdir(dirname(destination), { recursive: true });\n await cp(join(clientDir, relativeAsset), destination, { recursive: true });\n }\n}\n\nasync function writePrerenderedRoute(\n exportDir: string,\n route: string,\n entry: BuiltPrerenderedRoute,\n): Promise<void> {\n if (entry.status < 200 || entry.status >= 300) {\n throw new Error(`Cannot export route ${route} with status ${entry.status}.`);\n }\n\n const file = routeToHtmlFile(exportDir, route);\n await mkdir(dirname(file), { recursive: true });\n await writeFile(file, entry.html);\n}\n\nfunction routeToHtmlFile(exportDir: string, route: string): string {\n const pathname = route.split(\"?\")[0] ?? \"/\";\n const normalized = pathname.startsWith(\"/\") ? pathname.slice(1) : pathname;\n const relativeFile = normalized === \"\" ? \"index.html\" : join(normalized, \"index.html\");\n const root = resolve(exportDir);\n const file = resolve(root, relativeFile);\n\n if (file !== root && !file.startsWith(`${root}${sep}`)) {\n throw new Error(`unsafe static export route: ${route}`);\n }\n\n return file;\n}\n"]}
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/adapters/static.ts"],"names":[],"mappings":"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","sourcesContent":["import { cp, mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { dirname, join, resolve, sep } from \"node:path\";\nimport type { BuiltPrerenderedRoute, BuiltServerManifest } from \"../build.js\";\n\n/**\n * Configures static export from a built app-router output directory.\n */\nexport interface StaticExportOptions {\n exportDir: string;\n outDir: string;\n paths?: readonly string[] | undefined;\n}\n\n/**\n * Lists the routes written by a static app-router export.\n */\nexport interface StaticExportResult {\n routes: string[];\n}\n\n/**\n * Exports prerendered app-router routes and client assets to a static filesystem directory.\n *\n * Only routes present in the built prerender manifest can be exported; the export directory is removed and recreated, and route paths are checked to prevent traversal outside it.\n */\nexport async function exportStaticApp(options: StaticExportOptions): Promise<StaticExportResult> {\n const manifest = JSON.parse(\n await readFile(join(options.outDir, \"server\", \"manifest.json\"), \"utf8\"),\n ) as BuiltServerManifest;\n const clientManifest = JSON.parse(\n await readFile(join(options.outDir, \"client\", \"manifest.json\"), \"utf8\"),\n ) as { publicAssets?: readonly string[] };\n const prerenderedRoutes = manifest.prerenderedRoutes ?? {};\n const routes = [...(options.paths ?? Object.keys(prerenderedRoutes))].sort();\n\n await rm(options.exportDir, { force: true, recursive: true });\n await mkdir(options.exportDir, { recursive: true });\n\n for (const route of routes) {\n const entry = prerenderedRoutes[route];\n\n if (entry === undefined) {\n throw new Error(`Cannot export non-prerendered route: ${route}`);\n }\n\n await writePrerenderedRoute(options.exportDir, route, entry);\n }\n\n await cp(join(options.outDir, \"client\"), join(options.exportDir, \"_mreact\", \"client\"), {\n recursive: true,\n });\n await copyPublicAssetsToExportRoot(\n join(options.outDir, \"client\"),\n options.exportDir,\n clientManifest.publicAssets ?? [],\n );\n\n return { routes };\n}\n\nasync function copyPublicAssetsToExportRoot(\n clientDir: string,\n exportDir: string,\n publicAssets: readonly string[],\n): Promise<void> {\n for (const asset of publicAssets) {\n if (\n !asset.startsWith(\"/\") ||\n asset.startsWith(\"//\") ||\n asset.includes(\"..\") ||\n asset === \"/_mreact\" ||\n asset.startsWith(\"/_mreact/\")\n ) {\n continue;\n }\n\n const relativeAsset = asset.slice(1);\n const destination = join(exportDir, relativeAsset);\n await mkdir(dirname(destination), { recursive: true });\n await cp(join(clientDir, relativeAsset), destination, { recursive: true });\n }\n}\n\nasync function writePrerenderedRoute(\n exportDir: string,\n route: string,\n entry: BuiltPrerenderedRoute,\n): Promise<void> {\n if (entry.status < 200 || entry.status >= 300) {\n throw new Error(`Cannot export route ${route} with status ${entry.status}.`);\n }\n\n const file = routeToHtmlFile(exportDir, route);\n await mkdir(dirname(file), { recursive: true });\n await writeFile(file, entry.html);\n}\n\nfunction routeToHtmlFile(exportDir: string, route: string): string {\n const pathname = route.split(\"?\")[0] ?? \"/\";\n const normalized = pathname.startsWith(\"/\") ? pathname.slice(1) : pathname;\n const relativeFile = normalized === \"\" ? \"index.html\" : join(normalized, \"index.html\");\n const root = resolve(exportDir);\n const file = resolve(root, relativeFile);\n\n if (file !== root && !file.startsWith(`${root}${sep}`)) {\n throw new Error(`unsafe static export route: ${route}`);\n }\n\n return file;\n}\n"]}
@@ -1,5 +1,8 @@
1
1
  import type { ReactCompatElement, ReactCompatNode } from "@reckona/mreact-compat";
2
2
  declare global {
3
+ /**
4
+ * Renders the fulfilled, rejected, or placeholder state of a deferred value.
5
+ */
3
6
  function Await<T>(props: {
4
7
  children?: (value: Awaited<T>) => ReactCompatNode;
5
8
  catch?: (error: Error) => ReactCompatNode;
@@ -7,6 +10,9 @@ declare global {
7
10
  placeholderAs?: string;
8
11
  value: T | PromiseLike<T>;
9
12
  }): ReactCompatElement;
13
+ /**
14
+ * Renders a named layout slot with optional fallback children.
15
+ */
10
16
  function Slot(props?: {
11
17
  children?: ReactCompatNode;
12
18
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"app-router-globals.d.ts","sourceRoot":"","sources":["../src/app-router-globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,OAAO,CAAC,MAAM,CAAC;IACb,SAAS,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE;QACvB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;QAClD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,eAAe,CAAC;QAC1C,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;KAC3B,GAAG,kBAAkB,CAAC;IAEvB,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE;QACpB,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;KAC9B,GAAG,kBAAkB,CAAC;CACxB;AAED,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"app-router-globals.d.ts","sourceRoot":"","sources":["../src/app-router-globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,OAAO,CAAC,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE;QACvB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;QAClD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,eAAe,CAAC;QAC1C,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;KAC3B,GAAG,kBAAkB,CAAC;IAEvB;;OAEG;IACH,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE;QACpB,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;KAC9B,GAAG,kBAAkB,CAAC;CACxB;AAED,OAAO,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-router-globals.js","sourceRoot":"","sources":["../src/app-router-globals.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,CAAC","sourcesContent":["import type { ReactCompatElement, ReactCompatNode } from \"@reckona/mreact-compat\";\n\ndeclare global {\n function Await<T>(props: {\n children?: (value: Awaited<T>) => ReactCompatNode;\n catch?: (error: Error) => ReactCompatNode;\n placeholder?: ReactCompatNode;\n placeholderAs?: string;\n value: T | PromiseLike<T>;\n }): ReactCompatElement;\n\n function Slot(props?: {\n children?: ReactCompatNode;\n name?: string;\n [attribute: string]: unknown;\n }): ReactCompatElement;\n}\n\nexport {};\n"]}
1
+ {"version":3,"file":"app-router-globals.js","sourceRoot":"","sources":["../src/app-router-globals.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,CAAC","sourcesContent":["import type { ReactCompatElement, ReactCompatNode } from \"@reckona/mreact-compat\";\n\ndeclare global {\n /**\n * Renders the fulfilled, rejected, or placeholder state of a deferred value.\n */\n function Await<T>(props: {\n children?: (value: Awaited<T>) => ReactCompatNode;\n catch?: (error: Error) => ReactCompatNode;\n placeholder?: ReactCompatNode;\n placeholderAs?: string;\n value: T | PromiseLike<T>;\n }): ReactCompatElement;\n\n /**\n * Renders a named layout slot with optional fallback children.\n */\n function Slot(props?: {\n children?: ReactCompatNode;\n name?: string;\n [attribute: string]: unknown;\n }): ReactCompatElement;\n}\n\nexport {};\n"]}
package/dist/assets.d.ts CHANGED
@@ -1,18 +1,36 @@
1
+ /**
2
+ * Describes the generated files associated with a client bundle manifest entry.
3
+ */
1
4
  export interface AssetManifestEntry {
2
5
  assets?: readonly string[];
3
6
  css?: readonly string[];
4
7
  file: string;
5
8
  imports?: readonly string[];
6
9
  }
10
+ /**
11
+ * Maps app-router entry keys to generated client asset metadata.
12
+ */
7
13
  export type AssetManifest = Readonly<Record<string, AssetManifestEntry>>;
14
+ /**
15
+ * Configures URL generation for asset helper functions.
16
+ */
8
17
  export interface AssetHelperOptions {
9
18
  base?: string;
10
19
  }
20
+ /**
21
+ * Represents a preload or stylesheet link descriptor derived from an asset manifest.
22
+ */
11
23
  export interface AssetLinkDescriptor {
12
24
  attrs: Record<string, string>;
13
25
  tag: "link";
14
26
  }
27
+ /**
28
+ * Resolves a manifest entry key to its public asset URL.
29
+ */
15
30
  export declare function assetHref(manifest: AssetManifest, key: string, options?: AssetHelperOptions): string;
31
+ /**
32
+ * Builds unique preload and stylesheet link descriptors for one or more manifest entries.
33
+ */
16
34
  export declare function assetPreloadLinks(manifest: AssetManifest, keys: readonly string[] | string, options?: AssetHelperOptions): AssetLinkDescriptor[];
17
35
  export declare function assetPath(file: string, base?: string): string;
18
36
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAChC,OAAO,GAAE,kBAAuB,GAC/B,mBAAmB,EAAE,CAsCvB;AAYD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,MAAM,CAK1D"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAChC,OAAO,GAAE,kBAAuB,GAC/B,mBAAmB,EAAE,CAsCvB;AAYD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,MAAM,CAK1D"}
package/dist/assets.js CHANGED
@@ -1,6 +1,12 @@
1
+ /**
2
+ * Resolves a manifest entry key to its public asset URL.
3
+ */
1
4
  export function assetHref(manifest, key, options = {}) {
2
5
  return assetPath(manifestEntry(manifest, key).file, options.base);
3
6
  }
7
+ /**
8
+ * Builds unique preload and stylesheet link descriptors for one or more manifest entries.
9
+ */
4
10
  export function assetPreloadLinks(manifest, keys, options = {}) {
5
11
  const seen = new Set();
6
12
  const links = [];
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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","sourcesContent":["export interface AssetManifestEntry {\n assets?: readonly string[];\n css?: readonly string[];\n file: string;\n imports?: readonly string[];\n}\n\nexport type AssetManifest = Readonly<Record<string, AssetManifestEntry>>;\n\nexport interface AssetHelperOptions {\n base?: string;\n}\n\nexport interface AssetLinkDescriptor {\n attrs: Record<string, string>;\n tag: \"link\";\n}\n\nexport function assetHref(\n manifest: AssetManifest,\n key: string,\n options: AssetHelperOptions = {},\n): string {\n return assetPath(manifestEntry(manifest, key).file, options.base);\n}\n\nexport function assetPreloadLinks(\n manifest: AssetManifest,\n keys: readonly string[] | string,\n options: AssetHelperOptions = {},\n): AssetLinkDescriptor[] {\n const seen = new Set<string>();\n const links: AssetLinkDescriptor[] = [];\n\n for (const key of Array.isArray(keys) ? keys : [keys]) {\n const entry = manifestEntry(manifest, key);\n\n pushUniqueLink(seen, links, {\n attrs: {\n href: assetPath(entry.file, options.base),\n rel: entry.file.endsWith(\".js\") ? \"modulepreload\" : \"preload\",\n },\n tag: \"link\",\n });\n\n for (const css of entry.css ?? []) {\n pushUniqueLink(seen, links, {\n attrs: {\n href: assetPath(css, options.base),\n rel: \"stylesheet\",\n },\n tag: \"link\",\n });\n }\n\n for (const asset of entry.assets ?? []) {\n pushUniqueLink(seen, links, {\n attrs: {\n as: preloadAs(asset),\n href: assetPath(asset, options.base),\n rel: \"preload\",\n },\n tag: \"link\",\n });\n }\n }\n\n return links;\n}\n\nfunction manifestEntry(manifest: AssetManifest, key: string): AssetManifestEntry {\n const entry = manifest[key];\n\n if (entry === undefined) {\n throw new Error(`Asset manifest entry not found: ${key}`);\n }\n\n return entry;\n}\n\nexport function assetPath(file: string, base = \"/\"): string {\n const normalizedBase = base.endsWith(\"/\") ? base : `${base}/`;\n const normalizedFile = file.startsWith(\"/\") ? file.slice(1) : file;\n\n return `${normalizedBase}${normalizedFile}`;\n}\n\nfunction pushUniqueLink(\n seen: Set<string>,\n links: AssetLinkDescriptor[],\n link: AssetLinkDescriptor,\n): void {\n const key = JSON.stringify(link);\n\n if (seen.has(key)) {\n return;\n }\n\n seen.add(key);\n links.push(link);\n}\n\nfunction preloadAs(file: string): string {\n if (/\\.(?:avif|gif|jpe?g|png|svg|webp)$/i.test(file)) {\n return \"image\";\n }\n\n if (/\\.(?:woff2?|ttf|otf)$/i.test(file)) {\n return \"font\";\n }\n\n return \"fetch\";\n}\n"]}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Describes the generated files associated with a client bundle manifest entry.\n */\nexport interface AssetManifestEntry {\n assets?: readonly string[];\n css?: readonly string[];\n file: string;\n imports?: readonly string[];\n}\n\n/**\n * Maps app-router entry keys to generated client asset metadata.\n */\nexport type AssetManifest = Readonly<Record<string, AssetManifestEntry>>;\n\n/**\n * Configures URL generation for asset helper functions.\n */\nexport interface AssetHelperOptions {\n base?: string;\n}\n\n/**\n * Represents a preload or stylesheet link descriptor derived from an asset manifest.\n */\nexport interface AssetLinkDescriptor {\n attrs: Record<string, string>;\n tag: \"link\";\n}\n\n/**\n * Resolves a manifest entry key to its public asset URL.\n */\nexport function assetHref(\n manifest: AssetManifest,\n key: string,\n options: AssetHelperOptions = {},\n): string {\n return assetPath(manifestEntry(manifest, key).file, options.base);\n}\n\n/**\n * Builds unique preload and stylesheet link descriptors for one or more manifest entries.\n */\nexport function assetPreloadLinks(\n manifest: AssetManifest,\n keys: readonly string[] | string,\n options: AssetHelperOptions = {},\n): AssetLinkDescriptor[] {\n const seen = new Set<string>();\n const links: AssetLinkDescriptor[] = [];\n\n for (const key of Array.isArray(keys) ? keys : [keys]) {\n const entry = manifestEntry(manifest, key);\n\n pushUniqueLink(seen, links, {\n attrs: {\n href: assetPath(entry.file, options.base),\n rel: entry.file.endsWith(\".js\") ? \"modulepreload\" : \"preload\",\n },\n tag: \"link\",\n });\n\n for (const css of entry.css ?? []) {\n pushUniqueLink(seen, links, {\n attrs: {\n href: assetPath(css, options.base),\n rel: \"stylesheet\",\n },\n tag: \"link\",\n });\n }\n\n for (const asset of entry.assets ?? []) {\n pushUniqueLink(seen, links, {\n attrs: {\n as: preloadAs(asset),\n href: assetPath(asset, options.base),\n rel: \"preload\",\n },\n tag: \"link\",\n });\n }\n }\n\n return links;\n}\n\nfunction manifestEntry(manifest: AssetManifest, key: string): AssetManifestEntry {\n const entry = manifest[key];\n\n if (entry === undefined) {\n throw new Error(`Asset manifest entry not found: ${key}`);\n }\n\n return entry;\n}\n\nexport function assetPath(file: string, base = \"/\"): string {\n const normalizedBase = base.endsWith(\"/\") ? base : `${base}/`;\n const normalizedFile = file.startsWith(\"/\") ? file.slice(1) : file;\n\n return `${normalizedBase}${normalizedFile}`;\n}\n\nfunction pushUniqueLink(\n seen: Set<string>,\n links: AssetLinkDescriptor[],\n link: AssetLinkDescriptor,\n): void {\n const key = JSON.stringify(link);\n\n if (seen.has(key)) {\n return;\n }\n\n seen.add(key);\n links.push(link);\n}\n\nfunction preloadAs(file: string): string {\n if (/\\.(?:avif|gif|jpe?g|png|svg|webp)$/i.test(file)) {\n return \"image\";\n }\n\n if (/\\.(?:woff2?|ttf|otf)$/i.test(file)) {\n return \"font\";\n }\n\n return \"fetch\";\n}\n"]}
package/dist/build.d.ts CHANGED
@@ -4,6 +4,9 @@ import type { ModuleMetadata } from "@reckona/mreact-compiler";
4
4
  import type { RouteCachePolicy } from "./cache.js";
5
5
  import { type AppRouterImportPolicy } from "./import-policy.js";
6
6
  import type { PluginOption, UserConfig } from "vite";
7
+ /**
8
+ * Configures an app-router production build and its deployment targets.
9
+ */
7
10
  export interface BuildAppOptions extends AppRouterProjectOptions {
8
11
  onBuildProgress?: ((event: BuildAppProgressEvent) => void) | undefined;
9
12
  onBuildPhaseTiming?: ((timing: BuildAppPhaseTiming) => void) | undefined;
@@ -11,11 +14,20 @@ export interface BuildAppOptions extends AppRouterProjectOptions {
11
14
  targets?: readonly AppRouterBuildTarget[] | undefined;
12
15
  viteConfig?: Pick<UserConfig, "define" | "plugins"> | undefined;
13
16
  }
17
+ /**
18
+ * Names a high-level phase reported while building an app-router application.
19
+ */
14
20
  export type BuildAppPhase = "scan" | "collectFiles" | "analyzeSources" | "validate" | "prepareOutput" | "publicAssets" | "serverActionManifest" | "serverModules" | "importPolicy" | "serverModuleArtifacts" | "clientBundles" | "navigationRuntime" | "prerender" | "cloudflare" | "writeManifests" | "adapterArtifacts";
21
+ /**
22
+ * Captures the elapsed time for a completed app-router build phase.
23
+ */
15
24
  export interface BuildAppPhaseTiming {
16
25
  ms: number;
17
26
  phase: BuildAppPhase;
18
27
  }
28
+ /**
29
+ * Reports build progress events emitted during app-router compilation and packaging.
30
+ */
19
31
  export type BuildAppProgressEvent = {
20
32
  kind: "phase-start";
21
33
  phase: BuildAppPhase;
@@ -27,14 +39,23 @@ export type BuildAppProgressEvent = {
27
39
  count: number;
28
40
  kind: "routes-discovered";
29
41
  };
42
+ /**
43
+ * Contains the route graph produced by an app-router build.
44
+ */
30
45
  export interface BuildAppResult {
31
46
  routes: AppRoute[];
32
47
  }
48
+ /**
49
+ * Describes the generated import policy artifact consumed by built request handlers.
50
+ */
33
51
  export interface BuiltImportPolicyArtifact {
34
52
  byRoute: Record<string, string[]>;
35
53
  runtimePackages: string[];
36
54
  version: 1;
37
55
  }
56
+ /**
57
+ * Summarizes the files and entry point produced for an AWS Lambda artifact.
58
+ */
38
59
  export interface AwsLambdaArtifactManifest {
39
60
  files: Array<{
40
61
  bytes: number;
@@ -45,6 +66,9 @@ export interface AwsLambdaArtifactManifest {
45
66
  totalBytes: number;
46
67
  version: 1;
47
68
  }
69
+ /**
70
+ * Summarizes the files and worker entry produced for a Cloudflare Pages artifact.
71
+ */
48
72
  export interface CloudflarePagesArtifactManifest {
49
73
  files: Array<{
50
74
  bytes: number;
@@ -55,12 +79,18 @@ export interface CloudflarePagesArtifactManifest {
55
79
  version: 1;
56
80
  worker: "_worker.js";
57
81
  }
82
+ /**
83
+ * Configures packaging of a built app-router output directory for AWS Lambda.
84
+ */
58
85
  export interface PackageAwsLambdaArtifactOptions {
59
86
  fromDir: string;
60
87
  handlerEntry?: string | undefined;
61
88
  outDir: string;
62
89
  skipRuntimeDependencyCheck?: boolean | undefined;
63
90
  }
91
+ /**
92
+ * Configures packaging of a built app-router output directory for Cloudflare Pages.
93
+ */
64
94
  export interface PackageCloudflarePagesArtifactOptions {
65
95
  fromDir: string;
66
96
  outDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
package/dist/build.js CHANGED
@@ -1149,6 +1149,9 @@ function isNodeError(error) {
1149
1149
  async function prerenderStaticRoutes(options) {
1150
1150
  const clientScripts = new Map(options.clientRoutes.flatMap((route) => route.client && route.script !== undefined ? [[route.path, route.script]] : []));
1151
1151
  const clientStyles = new Map(options.clientRoutes.flatMap((route) => route.css !== undefined && route.css.length > 0 ? [[route.path, route.css]] : []));
1152
+ const navigationScripts = new Map(options.clientRoutes.flatMap((route) => route.navigation === true && route.navigationScript !== undefined
1153
+ ? [[route.path, route.navigationScript]]
1154
+ : []));
1152
1155
  const prerendered = {};
1153
1156
  const importPolicy = {
1154
1157
  allowedPackages: await readDeclaredProjectPackages(options.project.projectRoot),
@@ -1180,6 +1183,7 @@ async function prerenderStaticRoutes(options) {
1180
1183
  clientStyles,
1181
1184
  define: options.define,
1182
1185
  importPolicy,
1186
+ navigationScripts,
1183
1187
  request: new Request(`http://mreact.local${pathname}`),
1184
1188
  serverModuleCacheVersion,
1185
1189
  serverModules: serverModuleMap,