waku 0.21.23 → 0.22.0

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 (87) hide show
  1. package/README.md +8 -8
  2. package/dist/cli.js +7 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +8 -9
  5. package/dist/config.js.map +1 -1
  6. package/dist/lib/builder/build.js +15 -9
  7. package/dist/lib/builder/build.js.map +1 -1
  8. package/dist/lib/builder/constants.d.ts +3 -0
  9. package/dist/lib/builder/constants.js +10 -0
  10. package/dist/lib/builder/constants.js.map +1 -1
  11. package/dist/lib/config.js +5 -5
  12. package/dist/lib/config.js.map +1 -1
  13. package/dist/lib/hono/engine.js +14 -7
  14. package/dist/lib/hono/engine.js.map +1 -1
  15. package/dist/lib/middleware/dev-server-impl.js +1 -1
  16. package/dist/lib/middleware/dev-server-impl.js.map +1 -1
  17. package/dist/lib/middleware/types.d.ts +0 -2
  18. package/dist/lib/middleware/types.js.map +1 -1
  19. package/dist/lib/plugins/vite-plugin-deploy-aws-lambda.d.ts +1 -0
  20. package/dist/lib/plugins/vite-plugin-deploy-aws-lambda.js +12 -7
  21. package/dist/lib/plugins/vite-plugin-deploy-aws-lambda.js.map +1 -1
  22. package/dist/lib/plugins/vite-plugin-deploy-cloudflare.d.ts +1 -0
  23. package/dist/lib/plugins/vite-plugin-deploy-cloudflare.js +12 -9
  24. package/dist/lib/plugins/vite-plugin-deploy-cloudflare.js.map +1 -1
  25. package/dist/lib/plugins/vite-plugin-deploy-deno.d.ts +1 -0
  26. package/dist/lib/plugins/vite-plugin-deploy-deno.js +12 -8
  27. package/dist/lib/plugins/vite-plugin-deploy-deno.js.map +1 -1
  28. package/dist/lib/plugins/vite-plugin-deploy-netlify.d.ts +1 -0
  29. package/dist/lib/plugins/vite-plugin-deploy-netlify.js +12 -8
  30. package/dist/lib/plugins/vite-plugin-deploy-netlify.js.map +1 -1
  31. package/dist/lib/plugins/vite-plugin-deploy-partykit.d.ts +1 -0
  32. package/dist/lib/plugins/vite-plugin-deploy-partykit.js +12 -9
  33. package/dist/lib/plugins/vite-plugin-deploy-partykit.js.map +1 -1
  34. package/dist/lib/plugins/vite-plugin-deploy-vercel.d.ts +1 -0
  35. package/dist/lib/plugins/vite-plugin-deploy-vercel.js +12 -8
  36. package/dist/lib/plugins/vite-plugin-deploy-vercel.js.map +1 -1
  37. package/dist/lib/plugins/vite-plugin-dev-commonjs.js +1 -1
  38. package/dist/lib/plugins/vite-plugin-dev-commonjs.js.map +1 -1
  39. package/dist/lib/plugins/vite-plugin-fs-router-typegen.js +1 -1
  40. package/dist/lib/plugins/vite-plugin-fs-router-typegen.js.map +1 -1
  41. package/dist/lib/plugins/vite-plugin-nonjs-resolve.js +1 -1
  42. package/dist/lib/plugins/vite-plugin-nonjs-resolve.js.map +1 -1
  43. package/dist/lib/plugins/vite-plugin-rsc-analyze.d.ts +1 -0
  44. package/dist/lib/plugins/vite-plugin-rsc-analyze.js +4 -3
  45. package/dist/lib/plugins/vite-plugin-rsc-analyze.js.map +1 -1
  46. package/dist/lib/plugins/vite-plugin-rsc-delegate.js +1 -1
  47. package/dist/lib/plugins/vite-plugin-rsc-delegate.js.map +1 -1
  48. package/dist/lib/plugins/vite-plugin-rsc-entries.d.ts +2 -0
  49. package/dist/lib/plugins/vite-plugin-rsc-entries.js +7 -6
  50. package/dist/lib/plugins/vite-plugin-rsc-entries.js.map +1 -1
  51. package/dist/lib/plugins/vite-plugin-rsc-index.js +1 -1
  52. package/dist/lib/plugins/vite-plugin-rsc-index.js.map +1 -1
  53. package/dist/lib/plugins/vite-plugin-rsc-managed.js +1 -1
  54. package/dist/lib/plugins/vite-plugin-rsc-managed.js.map +1 -1
  55. package/dist/lib/plugins/vite-plugin-rsc-rsdw.js +7 -2
  56. package/dist/lib/plugins/vite-plugin-rsc-rsdw.js.map +1 -1
  57. package/dist/lib/plugins/vite-plugin-rsc-transform.js +25 -6
  58. package/dist/lib/plugins/vite-plugin-rsc-transform.js.map +1 -1
  59. package/dist/lib/renderers/html.js +1 -1
  60. package/dist/lib/renderers/html.js.map +1 -1
  61. package/dist/lib/types.d.ts +4 -2
  62. package/dist/lib/types.js.map +1 -1
  63. package/dist/lib/utils/swc.js +1 -1
  64. package/dist/lib/utils/swc.js.map +1 -1
  65. package/dist/main.d.ts +1 -1
  66. package/dist/main.js +1 -1
  67. package/dist/main.js.map +1 -1
  68. package/dist/main.react-server.d.ts +1 -1
  69. package/dist/main.react-server.js +1 -1
  70. package/dist/main.react-server.js.map +1 -1
  71. package/dist/minimal/client.d.ts +17 -14
  72. package/dist/minimal/client.js +61 -26
  73. package/dist/minimal/client.js.map +1 -1
  74. package/dist/router/client.d.ts +9 -4
  75. package/dist/router/client.js +29 -20
  76. package/dist/router/client.js.map +1 -1
  77. package/dist/router/create-pages.js +0 -4
  78. package/dist/router/create-pages.js.map +1 -1
  79. package/dist/router/fs-router.js +1 -1
  80. package/dist/router/fs-router.js.map +1 -1
  81. package/dist/server.d.ts +2 -1
  82. package/dist/server.js +2 -0
  83. package/dist/server.js.map +1 -1
  84. package/package.json +17 -17
  85. package/dist/lib/constants.d.ts +0 -3
  86. package/dist/lib/constants.js +0 -12
  87. package/dist/lib/constants.js.map +0 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  visit [waku.gg](https://waku.gg) or `npm create waku@latest`
6
6
 
7
- [![Build Status](https://img.shields.io/github/actions/workflow/status/dai-shi/waku/test.yml?branch=main&style=flat&colorA=000000&colorB=000000)](https://github.com/dai-shi/waku/actions?query=workflow%3ATest)
7
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/wakujs/waku/test.yml?branch=main&style=flat&colorA=000000&colorB=000000)](https://github.com/wakujs/waku/actions?query=workflow%3ATest)
8
8
  [![Version](https://img.shields.io/npm/v/waku?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/waku)
9
9
  [![Downloads](https://img.shields.io/npm/dt/waku.svg?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/waku)
10
10
  [![Discord Shield](https://img.shields.io/discord/627656437971288081?style=flat&colorA=000000&colorB=000000&label=discord&logo=discord&logoColor=ffffff)](https://discord.gg/MrQdmzd)
@@ -21,13 +21,13 @@ We recommend other frameworks for heavy ecommerce or enterprise applications. Wa
21
21
 
22
22
  ## Getting started
23
23
 
24
- Start a new Waku project with the `create` command for your preferred package manager. It will scaffold a new project with our default [Waku starter](https://github.com/dai-shi/waku/tree/main/examples/01_template).
24
+ Start a new Waku project with the `create` command for your preferred package manager. It will scaffold a new project with our default [Waku starter](https://github.com/wakujs/waku/tree/main/examples/01_template).
25
25
 
26
26
  ```sh
27
27
  npm create waku@latest
28
28
  ```
29
29
 
30
- **Node.js version requirement:** `^20.8.0` or `^18.17.0`
30
+ **Node.js version requirement:** `^22.7.0` or `^20.8.0`
31
31
 
32
32
  ## Rendering
33
33
 
@@ -145,7 +145,7 @@ To learn more about the modern React architecture, we recommend [Making Sense of
145
145
 
146
146
  Waku provides a minimal file-based “pages router” experience built for the server components era.
147
147
 
148
- Its underlying [low-level API](https://github.com/dai-shi/waku/blob/main/docs/create-pages.mdx) is also available for those that prefer programmatic routing. This documentation covers file-based routing since many React developers prefer it, but please feel free to try both and see which you like more!
148
+ Its underlying [low-level API](https://github.com/wakujs/waku/blob/main/docs/create-pages.mdx) is also available for those that prefer programmatic routing. This documentation covers file-based routing since many React developers prefer it, but please feel free to try both and see which you like more!
149
149
 
150
150
  ### Overview
151
151
 
@@ -544,7 +544,7 @@ The `router` object has two properties related to the current route: `path` (str
544
544
  ```tsx
545
545
  'use client';
546
546
 
547
- import { useRouter_UNSTABLE as useRouter } from 'waku';
547
+ import { useRouter } from 'waku';
548
548
 
549
549
  export const Component = () => {
550
550
  const { path, query } = useRouter();
@@ -577,7 +577,7 @@ The `router` object also contains several methods for programmatic navigation:
577
577
  ```tsx
578
578
  'use client';
579
579
 
580
- import { useRouter_UNSTABLE as useRouter } from 'waku';
580
+ import { useRouter } from 'waku';
581
581
 
582
582
  export const Component = () => {
583
583
  const router = useRouter();
@@ -1075,8 +1075,8 @@ Streaming can be activated by setting environment variable `DEPLOY_AWS_LAMBDA_ST
1075
1075
 
1076
1076
  ## Community
1077
1077
 
1078
- Please join our friendly [GitHub discussions](https://github.com/dai-shi/waku/discussions) or [Discord server](https://discord.gg/MrQdmzd) to participate in the Waku community. Hope to see you there!
1078
+ Please join our friendly [GitHub discussions](https://github.com/wakujs/waku/discussions) or [Discord server](https://discord.gg/MrQdmzd) to participate in the Waku community. Hope to see you there!
1079
1079
 
1080
1080
  ## Roadmap
1081
1081
 
1082
- Waku is in active development and we’re seeking additional contributors. Check out our [roadmap](https://github.com/dai-shi/waku/issues/24) for more information.
1082
+ Waku is in active development and we’re seeking additional contributors. Check out our [roadmap](https://github.com/wakujs/waku/issues/24) for more information.
package/dist/cli.js CHANGED
@@ -94,7 +94,7 @@ if (values.version) {
94
94
  }
95
95
  async function runDev() {
96
96
  const config = await loadConfig();
97
- const honoEnhancer = config.unstable_honoEnhancer || ((createApp)=>createApp);
97
+ const honoEnhancer = config.unstable_honoEnhancer ? await loadHonoEnhancer(config.unstable_honoEnhancer) : (fn)=>fn;
98
98
  const createApp = (app)=>{
99
99
  if (values['experimental-compress']) {
100
100
  app.use(compress());
@@ -131,7 +131,7 @@ async function runBuild() {
131
131
  async function runStart() {
132
132
  const config = await loadConfig();
133
133
  const { distDir = 'dist' } = config;
134
- const honoEnhancer = config.unstable_honoEnhancer || ((createApp)=>createApp);
134
+ const honoEnhancer = config.unstable_honoEnhancer ? await loadHonoEnhancer(config.unstable_honoEnhancer) : (fn)=>fn;
135
135
  const loadEntries = ()=>import(pathToFileURL(path.resolve(distDir, DIST_ENTRIES_JS)).toString());
136
136
  const createApp = (app)=>{
137
137
  if (values['experimental-compress']) {
@@ -207,5 +207,10 @@ async function loadConfig() {
207
207
  const file = pathToFileURL(path.resolve(CONFIG_FILE)).toString();
208
208
  return (await loadServerModule(file)).default;
209
209
  }
210
+ async function loadHonoEnhancer(file) {
211
+ const { loadServerModule } = await import('./lib/utils/vite-loader.js');
212
+ const fileUrl = pathToFileURL(path.resolve(CONFIG_FILE, '..', file)).toString();
213
+ return (await loadServerModule(fileUrl)).default;
214
+ }
210
215
 
211
216
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["import path from 'node:path';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport { parseArgs } from 'node:util';\nimport { createRequire } from 'node:module';\nimport { Hono } from 'hono';\nimport { compress } from 'hono/compress';\nimport { serve } from '@hono/node-server';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport * as dotenv from 'dotenv';\n\nimport type { Config } from './config.js';\nimport { serverEngine } from './lib/hono/engine.js';\nimport { build } from './lib/builder/build.js';\nimport { DIST_ENTRIES_JS, DIST_PUBLIC } from './lib/builder/constants.js';\n\nconst require = createRequire(new URL('.', import.meta.url));\n\ndotenv.config({ path: ['.env.local', '.env'] });\n\nconst CONFIG_FILE = 'waku.config.ts'; // XXX only ts extension\n\nconst { values, positionals } = parseArgs({\n args: process.argv.slice(2),\n allowPositionals: true,\n options: {\n 'with-vercel': {\n type: 'boolean',\n },\n 'with-vercel-static': {\n type: 'boolean',\n },\n 'with-netlify': {\n type: 'boolean',\n },\n 'with-netlify-static': {\n type: 'boolean',\n },\n 'with-cloudflare': {\n type: 'boolean',\n },\n 'with-partykit': {\n type: 'boolean',\n },\n 'with-deno': {\n type: 'boolean',\n },\n 'with-aws-lambda': {\n type: 'boolean',\n },\n 'experimental-partial': {\n type: 'boolean',\n },\n 'experimental-compress': {\n type: 'boolean',\n },\n port: {\n type: 'string',\n short: 'p',\n },\n version: {\n type: 'boolean',\n short: 'v',\n },\n help: {\n type: 'boolean',\n short: 'h',\n },\n },\n});\n\nconst cmd = positionals[0];\n\nif (values.version) {\n const { version } = require('../package.json');\n console.log(version);\n} else if (values.help) {\n displayUsage();\n} else {\n switch (cmd) {\n case 'dev':\n await runDev();\n break;\n case 'build':\n await runBuild();\n break;\n case 'start':\n await runStart();\n break;\n default:\n if (cmd) {\n console.error('Unknown command:', cmd);\n }\n displayUsage();\n break;\n }\n}\n\nasync function runDev() {\n const config = await loadConfig();\n const honoEnhancer =\n config.unstable_honoEnhancer || ((createApp) => createApp);\n const createApp = (app: Hono) => {\n if (values['experimental-compress']) {\n app.use(compress());\n }\n app.use(\n serverEngine({\n cmd: 'dev',\n config,\n env: process.env as any,\n unstable_onError: new Set(),\n }),\n );\n app.notFound((c) => {\n // FIXME can we avoid hardcoding the public path?\n const file = path.join('public', '404.html');\n if (existsSync(file)) {\n return c.html(readFileSync(file, 'utf8'), 404);\n }\n return c.text('404 Not Found', 404);\n });\n return app;\n };\n const port = parseInt(values.port || '3000', 10);\n await startServer(honoEnhancer(createApp)(new Hono()), port);\n}\n\nasync function runBuild() {\n const config = await loadConfig();\n process.env.NODE_ENV = 'production';\n await build({\n config,\n env: process.env as any,\n partial: !!values['experimental-partial'],\n deploy:\n ((values['with-vercel'] ?? !!process.env.VERCEL)\n ? values['with-vercel-static']\n ? 'vercel-static'\n : 'vercel-serverless'\n : undefined) ||\n ((values['with-netlify'] ?? !!process.env.NETLIFY)\n ? values['with-netlify-static']\n ? 'netlify-static'\n : 'netlify-functions'\n : undefined) ||\n (values['with-cloudflare'] ? 'cloudflare' : undefined) ||\n (values['with-partykit'] ? 'partykit' : undefined) ||\n (values['with-deno'] ? 'deno' : undefined) ||\n (values['with-aws-lambda'] ? 'aws-lambda' : undefined),\n });\n}\n\nasync function runStart() {\n const config = await loadConfig();\n const { distDir = 'dist' } = config;\n const honoEnhancer =\n config.unstable_honoEnhancer || ((createApp) => createApp);\n const loadEntries = () =>\n import(pathToFileURL(path.resolve(distDir, DIST_ENTRIES_JS)).toString());\n const createApp = (app: Hono) => {\n if (values['experimental-compress']) {\n app.use(compress());\n }\n app.use(serveStatic({ root: path.join(distDir, DIST_PUBLIC) }));\n app.use(\n serverEngine({\n cmd: 'start',\n loadEntries,\n env: process.env as any,\n unstable_onError: new Set(),\n }),\n );\n app.notFound((c) => {\n // FIXME better implementation using node stream?\n const file = path.join(distDir, DIST_PUBLIC, '404.html');\n if (existsSync(file)) {\n return c.html(readFileSync(file, 'utf8'), 404);\n }\n return c.text('404 Not Found', 404);\n });\n return app;\n };\n const port = parseInt(values.port || '8080', 10);\n await startServer(honoEnhancer(createApp)(new Hono()), port);\n}\n\nfunction startServer(app: Hono, port: number) {\n return new Promise<void>((resolve, reject) => {\n const server = serve({ ...app, port }, () => {\n console.log(`ready: Listening on http://localhost:${port}/`);\n resolve();\n });\n server.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EADDRINUSE') {\n console.log(\n `warn: Port ${port} is in use, trying ${port + 1} instead.`,\n );\n startServer(app, port + 1)\n .then(resolve)\n .catch(reject);\n } else {\n console.error(`Failed to start server: ${err.message}`);\n }\n });\n });\n}\n\nfunction displayUsage() {\n console.log(`\nUsage: waku [options] <command>\n\nCommands:\n dev Start the development server\n build Build the application for production\n start Start the production server\n\nOptions:\n --with-vercel Output for Vercel on build\n --with-netlify Output for Netlify on build\n --with-cloudflare Output for Cloudflare on build\n --with-partykit Output for PartyKit on build\n --with-deno Output for Deno on build\n --with-aws-lambda Output for AWS Lambda on build\n -p, --port Port number for the server\n -v, --version Display the version number\n -h, --help Display this help message\n`);\n}\n\nasync function loadConfig(): Promise<Config> {\n if (!existsSync(CONFIG_FILE)) {\n return {};\n }\n const { loadServerModule } = await import('./lib/utils/vite-loader.js');\n const file = pathToFileURL(path.resolve(CONFIG_FILE)).toString();\n return (await loadServerModule<{ default: Config }>(file)).default;\n}\n"],"names":["path","existsSync","readFileSync","pathToFileURL","parseArgs","createRequire","Hono","compress","serve","serveStatic","dotenv","serverEngine","build","DIST_ENTRIES_JS","DIST_PUBLIC","require","URL","url","config","CONFIG_FILE","values","positionals","args","process","argv","slice","allowPositionals","options","type","port","short","version","help","cmd","console","log","displayUsage","runDev","runBuild","runStart","error","loadConfig","honoEnhancer","unstable_honoEnhancer","createApp","app","use","env","unstable_onError","Set","notFound","c","file","join","html","text","parseInt","startServer","NODE_ENV","partial","deploy","VERCEL","undefined","NETLIFY","distDir","loadEntries","resolve","toString","root","Promise","reject","server","on","err","code","then","catch","message","loadServerModule","default"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["import path from 'node:path';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport { parseArgs } from 'node:util';\nimport { createRequire } from 'node:module';\nimport { Hono } from 'hono';\nimport { compress } from 'hono/compress';\nimport { serve } from '@hono/node-server';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport * as dotenv from 'dotenv';\n\nimport type { Config } from './config.js';\nimport { serverEngine } from './lib/hono/engine.js';\nimport { build } from './lib/builder/build.js';\nimport { DIST_ENTRIES_JS, DIST_PUBLIC } from './lib/builder/constants.js';\n\nconst require = createRequire(new URL('.', import.meta.url));\n\ndotenv.config({ path: ['.env.local', '.env'] });\n\nconst CONFIG_FILE = 'waku.config.ts'; // XXX only ts extension\n\nconst { values, positionals } = parseArgs({\n args: process.argv.slice(2),\n allowPositionals: true,\n options: {\n 'with-vercel': {\n type: 'boolean',\n },\n 'with-vercel-static': {\n type: 'boolean',\n },\n 'with-netlify': {\n type: 'boolean',\n },\n 'with-netlify-static': {\n type: 'boolean',\n },\n 'with-cloudflare': {\n type: 'boolean',\n },\n 'with-partykit': {\n type: 'boolean',\n },\n 'with-deno': {\n type: 'boolean',\n },\n 'with-aws-lambda': {\n type: 'boolean',\n },\n 'experimental-partial': {\n type: 'boolean',\n },\n 'experimental-compress': {\n type: 'boolean',\n },\n port: {\n type: 'string',\n short: 'p',\n },\n version: {\n type: 'boolean',\n short: 'v',\n },\n help: {\n type: 'boolean',\n short: 'h',\n },\n },\n});\n\nconst cmd = positionals[0];\n\nif (values.version) {\n const { version } = require('../package.json');\n console.log(version);\n} else if (values.help) {\n displayUsage();\n} else {\n switch (cmd) {\n case 'dev':\n await runDev();\n break;\n case 'build':\n await runBuild();\n break;\n case 'start':\n await runStart();\n break;\n default:\n if (cmd) {\n console.error('Unknown command:', cmd);\n }\n displayUsage();\n break;\n }\n}\n\nasync function runDev() {\n const config = await loadConfig();\n const honoEnhancer: HonoEnhancer = config.unstable_honoEnhancer\n ? await loadHonoEnhancer(config.unstable_honoEnhancer)\n : (fn) => fn;\n const createApp = (app: Hono) => {\n if (values['experimental-compress']) {\n app.use(compress());\n }\n app.use(\n serverEngine({\n cmd: 'dev',\n config,\n env: process.env as any,\n unstable_onError: new Set(),\n }),\n );\n app.notFound((c) => {\n // FIXME can we avoid hardcoding the public path?\n const file = path.join('public', '404.html');\n if (existsSync(file)) {\n return c.html(readFileSync(file, 'utf8'), 404);\n }\n return c.text('404 Not Found', 404);\n });\n return app;\n };\n const port = parseInt(values.port || '3000', 10);\n await startServer(honoEnhancer(createApp)(new Hono()), port);\n}\n\nasync function runBuild() {\n const config = await loadConfig();\n process.env.NODE_ENV = 'production';\n await build({\n config,\n env: process.env as any,\n partial: !!values['experimental-partial'],\n deploy:\n ((values['with-vercel'] ?? !!process.env.VERCEL)\n ? values['with-vercel-static']\n ? 'vercel-static'\n : 'vercel-serverless'\n : undefined) ||\n ((values['with-netlify'] ?? !!process.env.NETLIFY)\n ? values['with-netlify-static']\n ? 'netlify-static'\n : 'netlify-functions'\n : undefined) ||\n (values['with-cloudflare'] ? 'cloudflare' : undefined) ||\n (values['with-partykit'] ? 'partykit' : undefined) ||\n (values['with-deno'] ? 'deno' : undefined) ||\n (values['with-aws-lambda'] ? 'aws-lambda' : undefined),\n });\n}\n\nasync function runStart() {\n const config = await loadConfig();\n const { distDir = 'dist' } = config;\n const honoEnhancer: HonoEnhancer = config.unstable_honoEnhancer\n ? await loadHonoEnhancer(config.unstable_honoEnhancer)\n : (fn) => fn;\n const loadEntries = () =>\n import(pathToFileURL(path.resolve(distDir, DIST_ENTRIES_JS)).toString());\n const createApp = (app: Hono) => {\n if (values['experimental-compress']) {\n app.use(compress());\n }\n app.use(serveStatic({ root: path.join(distDir, DIST_PUBLIC) }));\n app.use(\n serverEngine({\n cmd: 'start',\n loadEntries,\n env: process.env as any,\n unstable_onError: new Set(),\n }),\n );\n app.notFound((c) => {\n // FIXME better implementation using node stream?\n const file = path.join(distDir, DIST_PUBLIC, '404.html');\n if (existsSync(file)) {\n return c.html(readFileSync(file, 'utf8'), 404);\n }\n return c.text('404 Not Found', 404);\n });\n return app;\n };\n const port = parseInt(values.port || '8080', 10);\n await startServer(honoEnhancer(createApp)(new Hono()), port);\n}\n\nfunction startServer(app: Hono, port: number) {\n return new Promise<void>((resolve, reject) => {\n const server = serve({ ...app, port }, () => {\n console.log(`ready: Listening on http://localhost:${port}/`);\n resolve();\n });\n server.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EADDRINUSE') {\n console.log(\n `warn: Port ${port} is in use, trying ${port + 1} instead.`,\n );\n startServer(app, port + 1)\n .then(resolve)\n .catch(reject);\n } else {\n console.error(`Failed to start server: ${err.message}`);\n }\n });\n });\n}\n\nfunction displayUsage() {\n console.log(`\nUsage: waku [options] <command>\n\nCommands:\n dev Start the development server\n build Build the application for production\n start Start the production server\n\nOptions:\n --with-vercel Output for Vercel on build\n --with-netlify Output for Netlify on build\n --with-cloudflare Output for Cloudflare on build\n --with-partykit Output for PartyKit on build\n --with-deno Output for Deno on build\n --with-aws-lambda Output for AWS Lambda on build\n -p, --port Port number for the server\n -v, --version Display the version number\n -h, --help Display this help message\n`);\n}\n\nasync function loadConfig(): Promise<Config> {\n if (!existsSync(CONFIG_FILE)) {\n return {};\n }\n const { loadServerModule } = await import('./lib/utils/vite-loader.js');\n const file = pathToFileURL(path.resolve(CONFIG_FILE)).toString();\n return (await loadServerModule<{ default: Config }>(file)).default;\n}\n\ntype HonoEnhancer = <Hono>(fn: (app: Hono) => Hono) => (app: Hono) => Hono;\n\nasync function loadHonoEnhancer(file: string): Promise<HonoEnhancer> {\n const { loadServerModule } = await import('./lib/utils/vite-loader.js');\n const fileUrl = pathToFileURL(\n path.resolve(CONFIG_FILE, '..', file),\n ).toString();\n return (await loadServerModule<{ default: HonoEnhancer }>(fileUrl)).default;\n}\n"],"names":["path","existsSync","readFileSync","pathToFileURL","parseArgs","createRequire","Hono","compress","serve","serveStatic","dotenv","serverEngine","build","DIST_ENTRIES_JS","DIST_PUBLIC","require","URL","url","config","CONFIG_FILE","values","positionals","args","process","argv","slice","allowPositionals","options","type","port","short","version","help","cmd","console","log","displayUsage","runDev","runBuild","runStart","error","loadConfig","honoEnhancer","unstable_honoEnhancer","loadHonoEnhancer","fn","createApp","app","use","env","unstable_onError","Set","notFound","c","file","join","html","text","parseInt","startServer","NODE_ENV","partial","deploy","VERCEL","undefined","NETLIFY","distDir","loadEntries","resolve","toString","root","Promise","reject","server","on","err","code","then","catch","message","loadServerModule","default","fileUrl"],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -5,7 +5,7 @@ export interface Config {
5
5
  /**
6
6
  * The base path for serve HTTP.
7
7
  * Defaults to "/".
8
- * TODO https://github.com/dai-shi/waku/issues/698
8
+ * TODO https://github.com/wakujs/waku/issues/698
9
9
  */
10
10
  basePath?: string;
11
11
  /**
@@ -43,20 +43,18 @@ export interface Config {
43
43
  /**
44
44
  * Middleware to use
45
45
  * Defaults to:
46
- * () => [
47
- * import('waku/middleware/context'),
48
- * import('waku/middleware/dev-server'),
49
- * import('waku/middleware/handler'),
46
+ * [
47
+ * 'waku/middleware/context',
48
+ * 'waku/middleware/dev-server',
49
+ * 'waku/middleware/handler',
50
50
  * ]
51
51
  */
52
- middleware?: () => Promise<{
53
- default: Middleware;
54
- }>[];
52
+ middleware?: string[];
55
53
  /**
56
54
  * Enhancer for Hono
57
55
  * Defaults to `undefined`
58
56
  */
59
- unstable_honoEnhancer?: (<Hono>(createApp: (app: Hono) => Hono) => (app: Hono) => Hono) | undefined;
57
+ unstable_honoEnhancer?: string | undefined;
60
58
  /**
61
59
  * Vite configuration options.
62
60
  * `common` can contains shared configs that are shallowly merged with other configs.
@@ -70,6 +68,7 @@ export interface Config {
70
68
  'build-server'?: () => UserConfig;
71
69
  'build-ssr'?: () => UserConfig;
72
70
  'build-client'?: () => UserConfig;
71
+ 'build-deploy'?: () => UserConfig;
73
72
  } | undefined;
74
73
  }
75
74
  export declare function defineConfig(config: Config): Config;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts"],"sourcesContent":["import type { UserConfig } from 'vite';\nimport type { Middleware } from './lib/middleware/types.js';\n\nexport type { Middleware };\n\nexport interface Config {\n /**\n * The base path for serve HTTP.\n * Defaults to \"/\".\n * TODO https://github.com/dai-shi/waku/issues/698\n */\n basePath?: string;\n /**\n * The source directory relative to root.\n * Defaults to \"src\".\n */\n srcDir?: string;\n /**\n * The dist directory relative to root.\n * This will be the folder to contain the built files.\n * Defaults to \"dist\".\n */\n distDir?: string;\n /**\n * The pages directory relative to srcDir.\n * Defaults to \"pages\".\n */\n pagesDir?: string;\n /**\n * The api directory inside pagesDir.\n * Defaults to \"api\".\n */\n apiDir?: string;\n /**\n * The private directory relative to root.\n * This folder will contain files that should be read only on the server.\n * Defaults to \"private\".\n */\n privateDir?: string;\n /**\n * Bse path for HTTP requests to indicate RSC requests.\n * Defaults to \"RSC\".\n */\n rscBase?: string;\n /**\n * Middleware to use\n * Defaults to:\n * () => [\n * import('waku/middleware/context'),\n * import('waku/middleware/dev-server'),\n * import('waku/middleware/handler'),\n * ]\n */\n middleware?: () => Promise<{ default: Middleware }>[];\n /**\n * Enhancer for Hono\n * Defaults to `undefined`\n */\n unstable_honoEnhancer?:\n | (<Hono>(createApp: (app: Hono) => Hono) => (app: Hono) => Hono)\n | undefined;\n /**\n * Vite configuration options.\n * `common` can contains shared configs that are shallowly merged with other configs.\n * Defaults to `undefined` if not provided.\n */\n unstable_viteConfigs?:\n | {\n common?: () => UserConfig;\n 'dev-main'?: () => UserConfig;\n 'dev-rsc'?: () => UserConfig;\n 'build-analyze'?: () => UserConfig;\n 'build-server'?: () => UserConfig;\n 'build-ssr'?: () => UserConfig;\n 'build-client'?: () => UserConfig;\n }\n | undefined;\n}\n\nexport function defineConfig(config: Config) {\n return config;\n}\n"],"names":["defineConfig","config"],"mappings":"AA+EA,OAAO,SAASA,aAAaC,MAAc;IACzC,OAAOA;AACT"}
1
+ {"version":3,"sources":["../src/config.ts"],"sourcesContent":["import type { UserConfig } from 'vite';\nimport type { Middleware } from './lib/middleware/types.js';\n\nexport type { Middleware };\n\nexport interface Config {\n /**\n * The base path for serve HTTP.\n * Defaults to \"/\".\n * TODO https://github.com/wakujs/waku/issues/698\n */\n basePath?: string;\n /**\n * The source directory relative to root.\n * Defaults to \"src\".\n */\n srcDir?: string;\n /**\n * The dist directory relative to root.\n * This will be the folder to contain the built files.\n * Defaults to \"dist\".\n */\n distDir?: string;\n /**\n * The pages directory relative to srcDir.\n * Defaults to \"pages\".\n */\n pagesDir?: string;\n /**\n * The api directory inside pagesDir.\n * Defaults to \"api\".\n */\n apiDir?: string;\n /**\n * The private directory relative to root.\n * This folder will contain files that should be read only on the server.\n * Defaults to \"private\".\n */\n privateDir?: string;\n /**\n * Bse path for HTTP requests to indicate RSC requests.\n * Defaults to \"RSC\".\n */\n rscBase?: string;\n /**\n * Middleware to use\n * Defaults to:\n * [\n * 'waku/middleware/context',\n * 'waku/middleware/dev-server',\n * 'waku/middleware/handler',\n * ]\n */\n middleware?: string[];\n /**\n * Enhancer for Hono\n * Defaults to `undefined`\n */\n unstable_honoEnhancer?: string | undefined;\n /**\n * Vite configuration options.\n * `common` can contains shared configs that are shallowly merged with other configs.\n * Defaults to `undefined` if not provided.\n */\n unstable_viteConfigs?:\n | {\n common?: () => UserConfig;\n 'dev-main'?: () => UserConfig;\n 'dev-rsc'?: () => UserConfig;\n 'build-analyze'?: () => UserConfig;\n 'build-server'?: () => UserConfig;\n 'build-ssr'?: () => UserConfig;\n 'build-client'?: () => UserConfig;\n 'build-deploy'?: () => UserConfig;\n }\n | undefined;\n}\n\nexport function defineConfig(config: Config) {\n return config;\n}\n"],"names":["defineConfig","config"],"mappings":"AA8EA,OAAO,SAASA,aAAaC,MAAc;IACzC,OAAOA;AACT"}
@@ -4,7 +4,6 @@ import { build as buildVite, resolveConfig as resolveViteConfig } from 'vite';
4
4
  import viteReact from '@vitejs/plugin-react';
5
5
  import { INTERNAL_setAllEnv, unstable_getBuildOptions } from '../../server.js';
6
6
  import { resolveConfigDev } from '../config.js';
7
- import { EXTENSIONS } from '../constants.js';
8
7
  import { decodeFilePathFromAbsolute, extname, filePathToFileURL, fileURLToFilePath, joinPath } from '../utils/path.js';
9
8
  import { extendViteConfig } from '../utils/vite-config.js';
10
9
  import { copyFile, createWriteStream, existsSync, mkdir, readdir, readFile, unlink, writeFile } from '../utils/node-fs.js';
@@ -21,7 +20,7 @@ import { rscEntriesPlugin } from '../plugins/vite-plugin-rsc-entries.js';
21
20
  import { rscEnvPlugin } from '../plugins/vite-plugin-rsc-env.js';
22
21
  import { rscPrivatePlugin } from '../plugins/vite-plugin-rsc-private.js';
23
22
  import { rscManagedPlugin } from '../plugins/vite-plugin-rsc-managed.js';
24
- import { DIST_ENTRIES_JS, DIST_PUBLIC, DIST_ASSETS, DIST_SSR } from './constants.js';
23
+ import { EXTENSIONS, DIST_ENTRIES_JS, DIST_PUBLIC, DIST_ASSETS, DIST_SSR } from './constants.js';
25
24
  import { deployVercelPlugin } from '../plugins/vite-plugin-deploy-vercel.js';
26
25
  import { deployNetlifyPlugin } from '../plugins/vite-plugin-deploy-netlify.js';
27
26
  import { deployCloudflarePlugin } from '../plugins/vite-plugin-deploy-cloudflare.js';
@@ -105,14 +104,14 @@ const analyzeEntries = async (rootDir, config)=>{
105
104
  build: {
106
105
  write: false,
107
106
  ssr: true,
108
- target: 'node18',
107
+ target: 'node20',
109
108
  rollupOptions: {
110
109
  onwarn,
111
110
  input: Object.fromEntries(moduleFileMap)
112
111
  }
113
112
  }
114
113
  }, config, 'build-analyze'));
115
- const clientEntryFiles = Object.fromEntries(Array.from(clientFileMap).map(([fname, hash], i)=>[
114
+ let clientEntryFiles = Object.fromEntries(Array.from(clientFileMap).map(([fname, hash], i)=>[
116
115
  `${DIST_ASSETS}/rsc${i}-${hash}`,
117
116
  fname
118
117
  ]));
@@ -121,6 +120,7 @@ const analyzeEntries = async (rootDir, config)=>{
121
120
  plugins: [
122
121
  rscAnalyzePlugin({
123
122
  isClient: true,
123
+ clientFileMap,
124
124
  serverFileMap
125
125
  }),
126
126
  rscManagedPlugin({
@@ -136,13 +136,17 @@ const analyzeEntries = async (rootDir, config)=>{
136
136
  build: {
137
137
  write: false,
138
138
  ssr: true,
139
- target: 'node18',
139
+ target: 'node20',
140
140
  rollupOptions: {
141
141
  onwarn,
142
142
  input: clientEntryFiles
143
143
  }
144
144
  }
145
145
  }, config, 'build-analyze'));
146
+ clientEntryFiles = Object.fromEntries(Array.from(clientFileMap).map(([fname, hash], i)=>[
147
+ `${DIST_ASSETS}/rsc${i}-${hash}`,
148
+ fname
149
+ ]));
146
150
  const serverEntryFiles = Object.fromEntries(Array.from(serverFileMap).map(([fname, hash], i)=>[
147
151
  `${DIST_ASSETS}/rsf${i}-${hash}`,
148
152
  fname
@@ -180,6 +184,8 @@ const buildServerBundle = async (rootDir, env, config, clientEntryFiles, serverE
180
184
  rscEntriesPlugin({
181
185
  basePath: config.basePath,
182
186
  rscBase: config.rscBase,
187
+ middleware: config.middleware,
188
+ rootDir,
183
189
  srcDir: config.srcDir,
184
190
  ssrDir: DIST_SSR,
185
191
  moduleMap: {
@@ -225,7 +231,7 @@ const buildServerBundle = async (rootDir, env, config, clientEntryFiles, serverE
225
231
  emptyOutDir: !partial,
226
232
  ssr: true,
227
233
  ssrEmitAssets: true,
228
- target: 'node18',
234
+ target: 'node20',
229
235
  outDir: joinPath(rootDir, config.distDir),
230
236
  rollupOptions: {
231
237
  onwarn,
@@ -287,7 +293,7 @@ const buildSsrBundle = async (rootDir, env, config, clientEntryFiles, serverEntr
287
293
  build: {
288
294
  emptyOutDir: !partial,
289
295
  ssr: true,
290
- target: 'node18',
296
+ target: 'node20',
291
297
  outDir: joinPath(rootDir, config.distDir, DIST_SSR),
292
298
  rollupOptions: {
293
299
  onwarn,
@@ -495,7 +501,7 @@ const emitStaticFiles = async (rootDir, config, distEntriesFile, distEntries, cs
495
501
  // FIXME Is this a good approach? I wonder if there's something missing.
496
502
  const buildDeploy = async (rootDir, config)=>{
497
503
  const DUMMY = 'dummy-entry';
498
- await buildVite({
504
+ await buildVite(extendViteConfig({
499
505
  plugins: [
500
506
  {
501
507
  // FIXME This is too hacky. There must be a better way.
@@ -536,7 +542,7 @@ const buildDeploy = async (rootDir, config)=>{
536
542
  },
537
543
  outDir: joinPath(rootDir, config.distDir)
538
544
  }
539
- });
545
+ }, config, 'build-deploy'));
540
546
  };
541
547
  export async function build(options) {
542
548
  const env = options.env || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/builder/build.ts"],"sourcesContent":["import { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\n\nimport { build as buildVite, resolveConfig as resolveViteConfig } from 'vite';\nimport viteReact from '@vitejs/plugin-react';\nimport type { LoggingFunction, RollupLog } from 'rollup';\nimport type { ReactNode } from 'react';\n\nimport type { Config } from '../../config.js';\nimport { INTERNAL_setAllEnv, unstable_getBuildOptions } from '../../server.js';\nimport type { EntriesPrd } from '../types.js';\nimport type { ConfigDev } from '../config.js';\nimport { resolveConfigDev } from '../config.js';\nimport { EXTENSIONS } from '../constants.js';\nimport type { PathSpec } from '../utils/path.js';\nimport {\n decodeFilePathFromAbsolute,\n extname,\n filePathToFileURL,\n fileURLToFilePath,\n joinPath,\n} from '../utils/path.js';\nimport { extendViteConfig } from '../utils/vite-config.js';\nimport {\n copyFile,\n createWriteStream,\n existsSync,\n mkdir,\n readdir,\n readFile,\n unlink,\n writeFile,\n} from '../utils/node-fs.js';\nimport { encodeRscPath, generatePrefetchCode } from '../renderers/utils.js';\nimport { collectClientModules, renderRsc } from '../renderers/rsc.js';\nimport { renderHtml } from '../renderers/html.js';\nimport {\n SERVER_MODULE_MAP,\n CLIENT_MODULE_MAP,\n CLIENT_PREFIX,\n} from '../middleware/handler.js';\nimport { rscRsdwPlugin } from '../plugins/vite-plugin-rsc-rsdw.js';\nimport { rscIndexPlugin } from '../plugins/vite-plugin-rsc-index.js';\nimport { rscAnalyzePlugin } from '../plugins/vite-plugin-rsc-analyze.js';\nimport { nonjsResolvePlugin } from '../plugins/vite-plugin-nonjs-resolve.js';\nimport { rscTransformPlugin } from '../plugins/vite-plugin-rsc-transform.js';\nimport { rscEntriesPlugin } from '../plugins/vite-plugin-rsc-entries.js';\nimport { rscEnvPlugin } from '../plugins/vite-plugin-rsc-env.js';\nimport { rscPrivatePlugin } from '../plugins/vite-plugin-rsc-private.js';\nimport { rscManagedPlugin } from '../plugins/vite-plugin-rsc-managed.js';\nimport {\n DIST_ENTRIES_JS,\n DIST_PUBLIC,\n DIST_ASSETS,\n DIST_SSR,\n} from './constants.js';\nimport { deployVercelPlugin } from '../plugins/vite-plugin-deploy-vercel.js';\nimport { deployNetlifyPlugin } from '../plugins/vite-plugin-deploy-netlify.js';\nimport { deployCloudflarePlugin } from '../plugins/vite-plugin-deploy-cloudflare.js';\nimport { deployDenoPlugin } from '../plugins/vite-plugin-deploy-deno.js';\nimport { deployPartykitPlugin } from '../plugins/vite-plugin-deploy-partykit.js';\nimport { deployAwsLambdaPlugin } from '../plugins/vite-plugin-deploy-aws-lambda.js';\nimport { emitPlatformData } from './platform-data.js';\n\n// TODO this file and functions in it are too long. will fix.\n\n// Upstream issue: https://github.com/rollup/rollup/issues/4699\nconst onwarn = (warning: RollupLog, defaultHandler: LoggingFunction) => {\n if (\n warning.code === 'MODULE_LEVEL_DIRECTIVE' &&\n /\"use (client|server)\"/.test(warning.message)\n ) {\n return;\n } else if (\n warning.code === 'SOURCEMAP_ERROR' &&\n warning.loc?.column === 0 &&\n warning.loc?.line === 1\n ) {\n return;\n }\n defaultHandler(warning);\n};\n\nconst deployPlugins = (config: ConfigDev) => [\n deployVercelPlugin(config),\n deployNetlifyPlugin(config),\n deployCloudflarePlugin(config),\n deployDenoPlugin(config),\n deployPartykitPlugin(config),\n deployAwsLambdaPlugin(config),\n];\n\nconst analyzeEntries = async (rootDir: string, config: ConfigDev) => {\n const wakuClientDist = decodeFilePathFromAbsolute(\n joinPath(fileURLToFilePath(import.meta.url), '../../../client.js'),\n );\n const wakuMinimalClientDist = decodeFilePathFromAbsolute(\n joinPath(fileURLToFilePath(import.meta.url), '../../../minimal/client.js'),\n );\n const clientFileMap = new Map<string, string>([\n // FIXME 'lib' should be the real hash\n [wakuClientDist, 'lib'],\n [wakuMinimalClientDist, 'lib'],\n ]);\n const serverFileMap = new Map<string, string>();\n const moduleFileMap = new Map<string, string>(); // module id -> full path\n const pagesDirPath = joinPath(rootDir, config.srcDir, config.pagesDir);\n if (existsSync(pagesDirPath)) {\n const files = await readdir(pagesDirPath, {\n encoding: 'utf8',\n recursive: true,\n });\n for (const file of files) {\n const ext = extname(file);\n if (EXTENSIONS.includes(ext)) {\n moduleFileMap.set(\n joinPath(config.pagesDir, file.slice(0, -ext.length)),\n joinPath(pagesDirPath, file),\n );\n }\n }\n }\n await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n plugins: [\n rscAnalyzePlugin({\n isClient: false,\n clientFileMap,\n serverFileMap,\n }),\n rscManagedPlugin({ ...config, addEntriesToInput: true }),\n ...deployPlugins(config),\n ],\n ssr: {\n target: 'webworker',\n resolve: {\n conditions: ['react-server'],\n externalConditions: ['react-server'],\n },\n noExternal: /^(?!node:)/,\n },\n build: {\n write: false,\n ssr: true,\n target: 'node18',\n rollupOptions: {\n onwarn,\n input: Object.fromEntries(moduleFileMap),\n },\n },\n },\n config,\n 'build-analyze',\n ),\n );\n const clientEntryFiles = Object.fromEntries(\n Array.from(clientFileMap).map(([fname, hash], i) => [\n `${DIST_ASSETS}/rsc${i}-${hash}`,\n fname,\n ]),\n );\n await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n plugins: [\n rscAnalyzePlugin({ isClient: true, serverFileMap }),\n rscManagedPlugin({ ...config, addMainToInput: true }),\n ...deployPlugins(config),\n ],\n ssr: {\n target: 'webworker',\n noExternal: /^(?!node:)/,\n },\n build: {\n write: false,\n ssr: true,\n target: 'node18',\n rollupOptions: {\n onwarn,\n input: clientEntryFiles,\n },\n },\n },\n config,\n 'build-analyze',\n ),\n );\n const serverEntryFiles = Object.fromEntries(\n Array.from(serverFileMap).map(([fname, hash], i) => [\n `${DIST_ASSETS}/rsf${i}-${hash}`,\n fname,\n ]),\n );\n const serverModuleFiles = Object.fromEntries(moduleFileMap);\n return {\n clientEntryFiles,\n serverEntryFiles,\n serverModuleFiles,\n };\n};\n\n// For RSC\nconst buildServerBundle = async (\n rootDir: string,\n env: Record<string, string>,\n config: ConfigDev,\n clientEntryFiles: Record<string, string>,\n serverEntryFiles: Record<string, string>,\n serverModuleFiles: Record<string, string>,\n partial: boolean,\n) => {\n const serverBuildOutput = await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n plugins: [\n nonjsResolvePlugin(),\n rscTransformPlugin({\n isClient: false,\n isBuild: true,\n clientEntryFiles,\n serverEntryFiles,\n }),\n rscRsdwPlugin(),\n rscEnvPlugin({ isDev: false, env, config }),\n rscPrivatePlugin(config),\n rscManagedPlugin({\n ...config,\n addEntriesToInput: true,\n }),\n rscEntriesPlugin({\n basePath: config.basePath,\n rscBase: config.rscBase,\n srcDir: config.srcDir,\n ssrDir: DIST_SSR,\n moduleMap: {\n ...Object.fromEntries(\n Object.keys(SERVER_MODULE_MAP).map((key) => [\n key,\n `./${key}.js`,\n ]),\n ),\n ...Object.fromEntries(\n Object.keys(CLIENT_MODULE_MAP).map((key) => [\n `${CLIENT_PREFIX}${key}`,\n `./${DIST_SSR}/${key}.js`,\n ]),\n ),\n ...Object.fromEntries(\n Object.keys(clientEntryFiles || {}).map((key) => [\n `${DIST_SSR}/${key}.js`,\n `./${DIST_SSR}/${key}.js`,\n ]),\n ),\n ...Object.fromEntries(\n Object.keys(serverEntryFiles || {}).map((key) => [\n `${key}.js`,\n `./${key}.js`,\n ]),\n ),\n },\n }),\n ...deployPlugins(config),\n ],\n ssr: {\n resolve: {\n conditions: ['react-server'],\n externalConditions: ['react-server'],\n },\n noExternal: /^(?!node:)/,\n },\n esbuild: {\n jsx: 'automatic',\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify('production'),\n },\n publicDir: false,\n build: {\n emptyOutDir: !partial,\n ssr: true,\n ssrEmitAssets: true,\n target: 'node18',\n outDir: joinPath(rootDir, config.distDir),\n rollupOptions: {\n onwarn,\n input: {\n ...SERVER_MODULE_MAP,\n ...serverModuleFiles,\n ...clientEntryFiles,\n ...serverEntryFiles,\n },\n },\n },\n },\n config,\n 'build-server',\n ),\n );\n if (!('output' in serverBuildOutput)) {\n throw new Error('Unexpected vite server build output');\n }\n return serverBuildOutput;\n};\n\n// For SSR (render client components on server to generate HTML)\nconst buildSsrBundle = async (\n rootDir: string,\n env: Record<string, string>,\n config: ConfigDev,\n clientEntryFiles: Record<string, string>,\n serverEntryFiles: Record<string, string>,\n serverBuildOutput: Awaited<ReturnType<typeof buildServerBundle>>,\n partial: boolean,\n) => {\n const cssAssets = serverBuildOutput.output.flatMap(({ type, fileName }) =>\n type === 'asset' && fileName.endsWith('.css') ? [fileName] : [],\n );\n await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n base: config.basePath,\n plugins: [\n rscRsdwPlugin(),\n rscIndexPlugin({ ...config, cssAssets }),\n rscEnvPlugin({ isDev: false, env, config }),\n rscPrivatePlugin(config),\n rscManagedPlugin({ ...config, addMainToInput: true }),\n rscTransformPlugin({\n isClient: true,\n isBuild: true,\n serverEntryFiles,\n }),\n ...deployPlugins(config),\n ],\n ssr: {\n noExternal: /^(?!node:)/,\n },\n esbuild: {\n jsx: 'automatic',\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify('production'),\n },\n publicDir: false,\n build: {\n emptyOutDir: !partial,\n ssr: true,\n target: 'node18',\n outDir: joinPath(rootDir, config.distDir, DIST_SSR),\n rollupOptions: {\n onwarn,\n input: {\n ...clientEntryFiles,\n ...CLIENT_MODULE_MAP,\n },\n output: {\n entryFileNames: (chunkInfo: { name: string }) => {\n if (\n CLIENT_MODULE_MAP[\n chunkInfo.name as keyof typeof CLIENT_MODULE_MAP\n ] ||\n clientEntryFiles[chunkInfo.name]\n ) {\n return '[name].js';\n }\n return DIST_ASSETS + '/[name]-[hash].js';\n },\n },\n },\n },\n },\n config,\n 'build-ssr',\n ),\n );\n};\n\n// For Browsers\nconst buildClientBundle = async (\n rootDir: string,\n env: Record<string, string>,\n config: ConfigDev,\n clientEntryFiles: Record<string, string>,\n serverEntryFiles: Record<string, string>,\n serverBuildOutput: Awaited<ReturnType<typeof buildServerBundle>>,\n partial: boolean,\n) => {\n const nonJsAssets = serverBuildOutput.output.flatMap(({ type, fileName }) =>\n type === 'asset' && !fileName.endsWith('.js') ? [fileName] : [],\n );\n const cssAssets = nonJsAssets.filter((asset) => asset.endsWith('.css'));\n const clientBuildOutput = await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n base: config.basePath,\n plugins: [\n viteReact(),\n rscRsdwPlugin(),\n rscIndexPlugin({ ...config, cssAssets }),\n rscEnvPlugin({ isDev: false, env, config }),\n rscPrivatePlugin(config),\n rscManagedPlugin({ ...config, addMainToInput: true }),\n rscTransformPlugin({\n isClient: true,\n isBuild: true,\n serverEntryFiles,\n }),\n ...deployPlugins(config),\n ],\n build: {\n emptyOutDir: !partial,\n outDir: joinPath(rootDir, config.distDir, DIST_PUBLIC),\n rollupOptions: {\n onwarn,\n // rollup will ouput the style files related to clientEntryFiles, but since it does not find any link to them in the index.html file, it will not inject them. They are only mentioned by the standalone `clientEntryFiles`\n input: clientEntryFiles,\n preserveEntrySignatures: 'exports-only',\n output: {\n entryFileNames: (chunkInfo: { name: string }) => {\n if (clientEntryFiles[chunkInfo.name]) {\n return '[name].js';\n }\n return DIST_ASSETS + '/[name]-[hash].js';\n },\n },\n },\n },\n },\n config,\n 'build-client',\n ),\n );\n if (!('output' in clientBuildOutput)) {\n throw new Error('Unexpected vite client build output');\n }\n for (const nonJsAsset of nonJsAssets) {\n const from = joinPath(rootDir, config.distDir, nonJsAsset);\n const to = joinPath(rootDir, config.distDir, DIST_PUBLIC, nonJsAsset);\n await copyFile(from, to);\n }\n return clientBuildOutput;\n};\n\n// TODO: Add progress indication for static builds.\n\nconst createTaskRunner = (limit: number) => {\n let running = 0;\n const waiting: (() => void)[] = [];\n const errors: unknown[] = [];\n const scheduleTask = async (task: () => Promise<void>) => {\n if (running >= limit) {\n await new Promise<void>((resolve) => waiting.push(resolve));\n }\n running++;\n try {\n await task();\n } catch (err) {\n errors.push(err);\n } finally {\n running--;\n waiting.shift()?.();\n }\n };\n const runTask = (task: () => Promise<void>) => {\n scheduleTask(task).catch(() => {});\n };\n const waitForTasks = async () => {\n if (running > 0) {\n await new Promise<void>((resolve) => waiting.push(resolve));\n await waitForTasks();\n }\n if (errors.length > 0) {\n console.error('Errors occurred during running tasks:', errors);\n throw errors[0];\n }\n };\n return { runTask, waitForTasks };\n};\nconst WRITE_FILE_BATCH_SIZE = 2500;\nconst { runTask, waitForTasks } = createTaskRunner(WRITE_FILE_BATCH_SIZE);\n\nconst emitStaticFile = (\n rootDir: string,\n config: ConfigDev,\n pathname: string,\n body: Promise<ReadableStream> | string,\n) => {\n const destFile = joinPath(\n rootDir,\n config.distDir,\n DIST_PUBLIC,\n extname(pathname)\n ? pathname\n : pathname === '/404'\n ? '404.html' // HACK special treatment for 404, better way?\n : pathname + '/index.html',\n );\n // In partial mode, skip if the file already exists.\n if (existsSync(destFile)) {\n return;\n }\n runTask(async () => {\n await mkdir(joinPath(destFile, '..'), { recursive: true });\n if (typeof body === 'string') {\n await writeFile(destFile, body);\n } else {\n await pipeline(\n Readable.fromWeb((await body) as never),\n createWriteStream(destFile),\n );\n }\n });\n};\n\nconst emitStaticFiles = async (\n rootDir: string,\n config: ConfigDev,\n distEntriesFile: string,\n distEntries: EntriesPrd,\n cssAssets: string[],\n) => {\n const unstable_modules = {\n rsdwServer: await distEntries.loadModule('rsdw-server'),\n rdServer: await distEntries.loadModule(CLIENT_PREFIX + 'rd-server'),\n rsdwClient: await distEntries.loadModule(CLIENT_PREFIX + 'rsdw-client'),\n wakuMinimalClient: await distEntries.loadModule(\n CLIENT_PREFIX + 'waku-minimal-client',\n ),\n };\n const publicIndexHtmlFile = joinPath(\n rootDir,\n config.distDir,\n DIST_PUBLIC,\n 'index.html',\n );\n const publicIndexHtml = await readFile(publicIndexHtmlFile, {\n encoding: 'utf8',\n });\n const publicIndexHtmlHead = publicIndexHtml.replace(\n /.*?<head>(.*?)<\\/head>.*/s,\n '$1',\n );\n const cssStr = cssAssets\n .map((asset) => `<link rel=\"stylesheet\" href=\"${config.basePath}${asset}\">`)\n .join('\\n');\n const defaultHtmlStr = publicIndexHtml\n // HACK is this too naive to inject style code?\n .replace(/<\\/head>/, cssStr + '</head>');\n const defaultHtmlHead = publicIndexHtmlHead + cssStr;\n const baseRscPrefix = config.basePath + config.rscBase + '/';\n const utils = {\n renderRsc: (\n elements: Record<string, unknown>,\n options?: {\n moduleIdCallback?: (id: string) => void;\n },\n ) =>\n renderRsc(\n config,\n { unstable_modules },\n elements,\n new Set(),\n options?.moduleIdCallback,\n ),\n renderHtml: async (\n elements: Record<string, unknown>,\n html: ReactNode,\n options: { rscPath: string; htmlHead?: string },\n ) => {\n const body = await renderHtml(\n config,\n { unstable_modules },\n defaultHtmlHead + (options.htmlHead || ''),\n elements,\n new Set(),\n html,\n options.rscPath,\n );\n const headers = { 'content-type': 'text/html; charset=utf-8' };\n return { body, headers };\n },\n rscPath2pathname: (rscPath: string) =>\n joinPath(config.rscBase, encodeRscPath(rscPath)),\n unstable_generatePrefetchCode: (\n rscPaths: Iterable<string>,\n moduleIds: Iterable<string>,\n ) => generatePrefetchCode(baseRscPrefix, rscPaths, moduleIds),\n unstable_collectClientModules: (elements: Record<string, unknown>) =>\n collectClientModules(\n config,\n unstable_modules.rsdwServer as never,\n elements,\n ),\n };\n const dynamicHtmlPathMap = new Map<PathSpec, string>();\n const buildConfigs = distEntries.default.handleBuild(utils);\n if (buildConfigs) {\n await unlink(publicIndexHtmlFile);\n }\n for await (const buildConfig of buildConfigs || []) {\n switch (buildConfig.type) {\n case 'file':\n emitStaticFile(rootDir, config, buildConfig.pathname, buildConfig.body);\n break;\n case 'htmlHead':\n dynamicHtmlPathMap.set(\n buildConfig.pathSpec,\n defaultHtmlHead + (buildConfig.head || ''),\n );\n break;\n case 'defaultHtml':\n emitStaticFile(\n rootDir,\n config,\n buildConfig.pathname,\n // HACK is this too naive to inject script code?\n defaultHtmlStr.replace(\n /<\\/head>/,\n (buildConfig.head || '') + '</head>',\n ),\n );\n break;\n }\n }\n await waitForTasks();\n const dynamicHtmlPaths = Array.from(dynamicHtmlPathMap);\n let distEntriesFileContent = await readFile(distEntriesFile, {\n encoding: 'utf8',\n });\n distEntriesFileContent = distEntriesFileContent.replace(\n 'globalThis.__WAKU_DYNAMIC_HTML_PATHS__',\n JSON.stringify(dynamicHtmlPaths),\n );\n distEntriesFileContent = distEntriesFileContent.replace(\n 'globalThis.__WAKU_PUBLIC_INDEX_HTML__',\n JSON.stringify(defaultHtmlStr),\n );\n await writeFile(distEntriesFile, distEntriesFileContent);\n};\n\n// For Deploy\n// FIXME Is this a good approach? I wonder if there's something missing.\nconst buildDeploy = async (rootDir: string, config: ConfigDev) => {\n const DUMMY = 'dummy-entry';\n await buildVite({\n plugins: [\n {\n // FIXME This is too hacky. There must be a better way.\n name: 'dummy-entry-plugin',\n resolveId(source) {\n if (source === DUMMY) {\n return source;\n }\n },\n load(id) {\n if (id === DUMMY) {\n return '';\n }\n },\n generateBundle(_options, bundle) {\n Object.entries(bundle).forEach(([key, value]) => {\n if (value.name === DUMMY) {\n delete bundle[key];\n }\n });\n },\n },\n ...deployPlugins(config),\n ],\n publicDir: false,\n build: {\n emptyOutDir: false,\n ssr: true,\n rollupOptions: {\n onwarn: (warning, warn) => {\n if (!warning.message.startsWith('Generated an empty chunk:')) {\n warn(warning);\n }\n },\n input: { [DUMMY]: DUMMY },\n },\n outDir: joinPath(rootDir, config.distDir),\n },\n });\n};\n\nexport async function build(options: {\n config: Config;\n env?: Record<string, string>;\n partial?: boolean;\n deploy?:\n | 'vercel-static'\n | 'vercel-serverless'\n | 'netlify-static'\n | 'netlify-functions'\n | 'cloudflare'\n | 'partykit'\n | 'deno'\n | 'aws-lambda'\n | undefined;\n}) {\n const env = options.env || {};\n const config = await resolveConfigDev(options.config);\n const rootDir = (\n await resolveViteConfig({}, 'build', 'production', 'production')\n ).root;\n const distEntriesFile = joinPath(rootDir, config.distDir, DIST_ENTRIES_JS);\n\n const buildOptions = unstable_getBuildOptions();\n buildOptions.deploy = options.deploy;\n\n buildOptions.unstable_phase = 'analyzeEntries';\n const { clientEntryFiles, serverEntryFiles, serverModuleFiles } =\n await analyzeEntries(rootDir, config);\n buildOptions.unstable_phase = 'buildServerBundle';\n const serverBuildOutput = await buildServerBundle(\n rootDir,\n env,\n config,\n clientEntryFiles,\n serverEntryFiles,\n serverModuleFiles,\n !!options.partial,\n );\n buildOptions.unstable_phase = 'buildSsrBundle';\n await buildSsrBundle(\n rootDir,\n env,\n config,\n clientEntryFiles,\n serverEntryFiles,\n serverBuildOutput,\n !!options.partial,\n );\n buildOptions.unstable_phase = 'buildClientBundle';\n const clientBuildOutput = await buildClientBundle(\n rootDir,\n env,\n config,\n clientEntryFiles,\n serverEntryFiles,\n serverBuildOutput,\n !!options.partial,\n );\n delete buildOptions.unstable_phase;\n\n const distEntries: EntriesPrd = await import(\n filePathToFileURL(distEntriesFile)\n );\n\n INTERNAL_setAllEnv(env);\n const cssAssets = clientBuildOutput.output.flatMap(({ type, fileName }) =>\n type === 'asset' && fileName.endsWith('.css') ? [fileName] : [],\n );\n buildOptions.unstable_phase = 'emitStaticFiles';\n await emitStaticFiles(\n rootDir,\n config,\n distEntriesFile,\n distEntries,\n cssAssets,\n );\n\n buildOptions.unstable_phase = 'buildDeploy';\n await buildDeploy(rootDir, config);\n delete buildOptions.unstable_phase;\n\n if (existsSync(distEntriesFile)) {\n await emitPlatformData(joinPath(rootDir, config.distDir));\n }\n}\n"],"names":["Readable","pipeline","build","buildVite","resolveConfig","resolveViteConfig","viteReact","INTERNAL_setAllEnv","unstable_getBuildOptions","resolveConfigDev","EXTENSIONS","decodeFilePathFromAbsolute","extname","filePathToFileURL","fileURLToFilePath","joinPath","extendViteConfig","copyFile","createWriteStream","existsSync","mkdir","readdir","readFile","unlink","writeFile","encodeRscPath","generatePrefetchCode","collectClientModules","renderRsc","renderHtml","SERVER_MODULE_MAP","CLIENT_MODULE_MAP","CLIENT_PREFIX","rscRsdwPlugin","rscIndexPlugin","rscAnalyzePlugin","nonjsResolvePlugin","rscTransformPlugin","rscEntriesPlugin","rscEnvPlugin","rscPrivatePlugin","rscManagedPlugin","DIST_ENTRIES_JS","DIST_PUBLIC","DIST_ASSETS","DIST_SSR","deployVercelPlugin","deployNetlifyPlugin","deployCloudflarePlugin","deployDenoPlugin","deployPartykitPlugin","deployAwsLambdaPlugin","emitPlatformData","onwarn","warning","defaultHandler","code","test","message","loc","column","line","deployPlugins","config","analyzeEntries","rootDir","wakuClientDist","url","wakuMinimalClientDist","clientFileMap","Map","serverFileMap","moduleFileMap","pagesDirPath","srcDir","pagesDir","files","encoding","recursive","file","ext","includes","set","slice","length","mode","plugins","isClient","addEntriesToInput","ssr","target","resolve","conditions","externalConditions","noExternal","write","rollupOptions","input","Object","fromEntries","clientEntryFiles","Array","from","map","fname","hash","i","addMainToInput","serverEntryFiles","serverModuleFiles","buildServerBundle","env","partial","serverBuildOutput","isBuild","isDev","basePath","rscBase","ssrDir","moduleMap","keys","key","esbuild","jsx","define","JSON","stringify","publicDir","emptyOutDir","ssrEmitAssets","outDir","distDir","Error","buildSsrBundle","cssAssets","output","flatMap","type","fileName","endsWith","base","entryFileNames","chunkInfo","name","buildClientBundle","nonJsAssets","filter","asset","clientBuildOutput","preserveEntrySignatures","nonJsAsset","to","createTaskRunner","limit","running","waiting","errors","scheduleTask","task","Promise","push","err","shift","runTask","catch","waitForTasks","console","error","WRITE_FILE_BATCH_SIZE","emitStaticFile","pathname","body","destFile","fromWeb","emitStaticFiles","distEntriesFile","distEntries","unstable_modules","rsdwServer","loadModule","rdServer","rsdwClient","wakuMinimalClient","publicIndexHtmlFile","publicIndexHtml","publicIndexHtmlHead","replace","cssStr","join","defaultHtmlStr","defaultHtmlHead","baseRscPrefix","utils","elements","options","Set","moduleIdCallback","html","htmlHead","rscPath","headers","rscPath2pathname","unstable_generatePrefetchCode","rscPaths","moduleIds","unstable_collectClientModules","dynamicHtmlPathMap","buildConfigs","default","handleBuild","buildConfig","pathSpec","head","dynamicHtmlPaths","distEntriesFileContent","buildDeploy","DUMMY","resolveId","source","load","id","generateBundle","_options","bundle","entries","forEach","value","warn","startsWith","root","buildOptions","deploy","unstable_phase"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/lib/builder/build.ts"],"sourcesContent":["import { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\n\nimport { build as buildVite, resolveConfig as resolveViteConfig } from 'vite';\nimport viteReact from '@vitejs/plugin-react';\nimport type { LoggingFunction, RollupLog } from 'rollup';\nimport type { ReactNode } from 'react';\n\nimport type { Config } from '../../config.js';\nimport { INTERNAL_setAllEnv, unstable_getBuildOptions } from '../../server.js';\nimport type { EntriesPrd } from '../types.js';\nimport type { ConfigDev } from '../config.js';\nimport { resolveConfigDev } from '../config.js';\nimport type { PathSpec } from '../utils/path.js';\nimport {\n decodeFilePathFromAbsolute,\n extname,\n filePathToFileURL,\n fileURLToFilePath,\n joinPath,\n} from '../utils/path.js';\nimport { extendViteConfig } from '../utils/vite-config.js';\nimport {\n copyFile,\n createWriteStream,\n existsSync,\n mkdir,\n readdir,\n readFile,\n unlink,\n writeFile,\n} from '../utils/node-fs.js';\nimport { encodeRscPath, generatePrefetchCode } from '../renderers/utils.js';\nimport { collectClientModules, renderRsc } from '../renderers/rsc.js';\nimport { renderHtml } from '../renderers/html.js';\nimport {\n SERVER_MODULE_MAP,\n CLIENT_MODULE_MAP,\n CLIENT_PREFIX,\n} from '../middleware/handler.js';\nimport { rscRsdwPlugin } from '../plugins/vite-plugin-rsc-rsdw.js';\nimport { rscIndexPlugin } from '../plugins/vite-plugin-rsc-index.js';\nimport { rscAnalyzePlugin } from '../plugins/vite-plugin-rsc-analyze.js';\nimport { nonjsResolvePlugin } from '../plugins/vite-plugin-nonjs-resolve.js';\nimport { rscTransformPlugin } from '../plugins/vite-plugin-rsc-transform.js';\nimport { rscEntriesPlugin } from '../plugins/vite-plugin-rsc-entries.js';\nimport { rscEnvPlugin } from '../plugins/vite-plugin-rsc-env.js';\nimport { rscPrivatePlugin } from '../plugins/vite-plugin-rsc-private.js';\nimport { rscManagedPlugin } from '../plugins/vite-plugin-rsc-managed.js';\nimport {\n EXTENSIONS,\n DIST_ENTRIES_JS,\n DIST_PUBLIC,\n DIST_ASSETS,\n DIST_SSR,\n} from './constants.js';\nimport { deployVercelPlugin } from '../plugins/vite-plugin-deploy-vercel.js';\nimport { deployNetlifyPlugin } from '../plugins/vite-plugin-deploy-netlify.js';\nimport { deployCloudflarePlugin } from '../plugins/vite-plugin-deploy-cloudflare.js';\nimport { deployDenoPlugin } from '../plugins/vite-plugin-deploy-deno.js';\nimport { deployPartykitPlugin } from '../plugins/vite-plugin-deploy-partykit.js';\nimport { deployAwsLambdaPlugin } from '../plugins/vite-plugin-deploy-aws-lambda.js';\nimport { emitPlatformData } from './platform-data.js';\n\n// TODO this file and functions in it are too long. will fix.\n\n// Upstream issue: https://github.com/rollup/rollup/issues/4699\nconst onwarn = (warning: RollupLog, defaultHandler: LoggingFunction) => {\n if (\n warning.code === 'MODULE_LEVEL_DIRECTIVE' &&\n /\"use (client|server)\"/.test(warning.message)\n ) {\n return;\n } else if (\n warning.code === 'SOURCEMAP_ERROR' &&\n warning.loc?.column === 0 &&\n warning.loc?.line === 1\n ) {\n return;\n }\n defaultHandler(warning);\n};\n\nconst deployPlugins = (config: ConfigDev) => [\n deployVercelPlugin(config),\n deployNetlifyPlugin(config),\n deployCloudflarePlugin(config),\n deployDenoPlugin(config),\n deployPartykitPlugin(config),\n deployAwsLambdaPlugin(config),\n];\n\nconst analyzeEntries = async (rootDir: string, config: ConfigDev) => {\n const wakuClientDist = decodeFilePathFromAbsolute(\n joinPath(fileURLToFilePath(import.meta.url), '../../../client.js'),\n );\n const wakuMinimalClientDist = decodeFilePathFromAbsolute(\n joinPath(fileURLToFilePath(import.meta.url), '../../../minimal/client.js'),\n );\n const clientFileMap = new Map<string, string>([\n // FIXME 'lib' should be the real hash\n [wakuClientDist, 'lib'],\n [wakuMinimalClientDist, 'lib'],\n ]);\n const serverFileMap = new Map<string, string>();\n const moduleFileMap = new Map<string, string>(); // module id -> full path\n const pagesDirPath = joinPath(rootDir, config.srcDir, config.pagesDir);\n if (existsSync(pagesDirPath)) {\n const files = await readdir(pagesDirPath, {\n encoding: 'utf8',\n recursive: true,\n });\n for (const file of files) {\n const ext = extname(file);\n if (EXTENSIONS.includes(ext)) {\n moduleFileMap.set(\n joinPath(config.pagesDir, file.slice(0, -ext.length)),\n joinPath(pagesDirPath, file),\n );\n }\n }\n }\n await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n plugins: [\n rscAnalyzePlugin({\n isClient: false,\n clientFileMap,\n serverFileMap,\n }),\n rscManagedPlugin({ ...config, addEntriesToInput: true }),\n ...deployPlugins(config),\n ],\n ssr: {\n target: 'webworker',\n resolve: {\n conditions: ['react-server'],\n externalConditions: ['react-server'],\n },\n noExternal: /^(?!node:)/,\n },\n build: {\n write: false,\n ssr: true,\n target: 'node20',\n rollupOptions: {\n onwarn,\n input: Object.fromEntries(moduleFileMap),\n },\n },\n },\n config,\n 'build-analyze',\n ),\n );\n let clientEntryFiles = Object.fromEntries(\n Array.from(clientFileMap).map(([fname, hash], i) => [\n `${DIST_ASSETS}/rsc${i}-${hash}`,\n fname,\n ]),\n );\n await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n plugins: [\n rscAnalyzePlugin({ isClient: true, clientFileMap, serverFileMap }),\n rscManagedPlugin({ ...config, addMainToInput: true }),\n ...deployPlugins(config),\n ],\n ssr: {\n target: 'webworker',\n noExternal: /^(?!node:)/,\n },\n build: {\n write: false,\n ssr: true,\n target: 'node20',\n rollupOptions: {\n onwarn,\n input: clientEntryFiles,\n },\n },\n },\n config,\n 'build-analyze',\n ),\n );\n clientEntryFiles = Object.fromEntries(\n Array.from(clientFileMap).map(([fname, hash], i) => [\n `${DIST_ASSETS}/rsc${i}-${hash}`,\n fname,\n ]),\n );\n const serverEntryFiles = Object.fromEntries(\n Array.from(serverFileMap).map(([fname, hash], i) => [\n `${DIST_ASSETS}/rsf${i}-${hash}`,\n fname,\n ]),\n );\n const serverModuleFiles = Object.fromEntries(moduleFileMap);\n return {\n clientEntryFiles,\n serverEntryFiles,\n serverModuleFiles,\n };\n};\n\n// For RSC\nconst buildServerBundle = async (\n rootDir: string,\n env: Record<string, string>,\n config: ConfigDev,\n clientEntryFiles: Record<string, string>,\n serverEntryFiles: Record<string, string>,\n serverModuleFiles: Record<string, string>,\n partial: boolean,\n) => {\n const serverBuildOutput = await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n plugins: [\n nonjsResolvePlugin(),\n rscTransformPlugin({\n isClient: false,\n isBuild: true,\n clientEntryFiles,\n serverEntryFiles,\n }),\n rscRsdwPlugin(),\n rscEnvPlugin({ isDev: false, env, config }),\n rscPrivatePlugin(config),\n rscManagedPlugin({\n ...config,\n addEntriesToInput: true,\n }),\n rscEntriesPlugin({\n basePath: config.basePath,\n rscBase: config.rscBase,\n middleware: config.middleware,\n rootDir,\n srcDir: config.srcDir,\n ssrDir: DIST_SSR,\n moduleMap: {\n ...Object.fromEntries(\n Object.keys(SERVER_MODULE_MAP).map((key) => [\n key,\n `./${key}.js`,\n ]),\n ),\n ...Object.fromEntries(\n Object.keys(CLIENT_MODULE_MAP).map((key) => [\n `${CLIENT_PREFIX}${key}`,\n `./${DIST_SSR}/${key}.js`,\n ]),\n ),\n ...Object.fromEntries(\n Object.keys(clientEntryFiles || {}).map((key) => [\n `${DIST_SSR}/${key}.js`,\n `./${DIST_SSR}/${key}.js`,\n ]),\n ),\n ...Object.fromEntries(\n Object.keys(serverEntryFiles || {}).map((key) => [\n `${key}.js`,\n `./${key}.js`,\n ]),\n ),\n },\n }),\n ...deployPlugins(config),\n ],\n ssr: {\n resolve: {\n conditions: ['react-server'],\n externalConditions: ['react-server'],\n },\n noExternal: /^(?!node:)/,\n },\n esbuild: {\n jsx: 'automatic',\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify('production'),\n },\n publicDir: false,\n build: {\n emptyOutDir: !partial,\n ssr: true,\n ssrEmitAssets: true,\n target: 'node20',\n outDir: joinPath(rootDir, config.distDir),\n rollupOptions: {\n onwarn,\n input: {\n ...SERVER_MODULE_MAP,\n ...serverModuleFiles,\n ...clientEntryFiles,\n ...serverEntryFiles,\n },\n },\n },\n },\n config,\n 'build-server',\n ),\n );\n if (!('output' in serverBuildOutput)) {\n throw new Error('Unexpected vite server build output');\n }\n return serverBuildOutput;\n};\n\n// For SSR (render client components on server to generate HTML)\nconst buildSsrBundle = async (\n rootDir: string,\n env: Record<string, string>,\n config: ConfigDev,\n clientEntryFiles: Record<string, string>,\n serverEntryFiles: Record<string, string>,\n serverBuildOutput: Awaited<ReturnType<typeof buildServerBundle>>,\n partial: boolean,\n) => {\n const cssAssets = serverBuildOutput.output.flatMap(({ type, fileName }) =>\n type === 'asset' && fileName.endsWith('.css') ? [fileName] : [],\n );\n await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n base: config.basePath,\n plugins: [\n rscRsdwPlugin(),\n rscIndexPlugin({ ...config, cssAssets }),\n rscEnvPlugin({ isDev: false, env, config }),\n rscPrivatePlugin(config),\n rscManagedPlugin({ ...config, addMainToInput: true }),\n rscTransformPlugin({\n isClient: true,\n isBuild: true,\n serverEntryFiles,\n }),\n ...deployPlugins(config),\n ],\n ssr: {\n noExternal: /^(?!node:)/,\n },\n esbuild: {\n jsx: 'automatic',\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify('production'),\n },\n publicDir: false,\n build: {\n emptyOutDir: !partial,\n ssr: true,\n target: 'node20',\n outDir: joinPath(rootDir, config.distDir, DIST_SSR),\n rollupOptions: {\n onwarn,\n input: {\n ...clientEntryFiles,\n ...CLIENT_MODULE_MAP,\n },\n output: {\n entryFileNames: (chunkInfo: { name: string }) => {\n if (\n CLIENT_MODULE_MAP[\n chunkInfo.name as keyof typeof CLIENT_MODULE_MAP\n ] ||\n clientEntryFiles[chunkInfo.name]\n ) {\n return '[name].js';\n }\n return DIST_ASSETS + '/[name]-[hash].js';\n },\n },\n },\n },\n },\n config,\n 'build-ssr',\n ),\n );\n};\n\n// For Browsers\nconst buildClientBundle = async (\n rootDir: string,\n env: Record<string, string>,\n config: ConfigDev,\n clientEntryFiles: Record<string, string>,\n serverEntryFiles: Record<string, string>,\n serverBuildOutput: Awaited<ReturnType<typeof buildServerBundle>>,\n partial: boolean,\n) => {\n const nonJsAssets = serverBuildOutput.output.flatMap(({ type, fileName }) =>\n type === 'asset' && !fileName.endsWith('.js') ? [fileName] : [],\n );\n const cssAssets = nonJsAssets.filter((asset) => asset.endsWith('.css'));\n const clientBuildOutput = await buildVite(\n extendViteConfig(\n {\n mode: 'production',\n base: config.basePath,\n plugins: [\n viteReact(),\n rscRsdwPlugin(),\n rscIndexPlugin({ ...config, cssAssets }),\n rscEnvPlugin({ isDev: false, env, config }),\n rscPrivatePlugin(config),\n rscManagedPlugin({ ...config, addMainToInput: true }),\n rscTransformPlugin({\n isClient: true,\n isBuild: true,\n serverEntryFiles,\n }),\n ...deployPlugins(config),\n ],\n build: {\n emptyOutDir: !partial,\n outDir: joinPath(rootDir, config.distDir, DIST_PUBLIC),\n rollupOptions: {\n onwarn,\n // rollup will ouput the style files related to clientEntryFiles, but since it does not find any link to them in the index.html file, it will not inject them. They are only mentioned by the standalone `clientEntryFiles`\n input: clientEntryFiles,\n preserveEntrySignatures: 'exports-only',\n output: {\n entryFileNames: (chunkInfo: { name: string }) => {\n if (clientEntryFiles[chunkInfo.name]) {\n return '[name].js';\n }\n return DIST_ASSETS + '/[name]-[hash].js';\n },\n },\n },\n },\n },\n config,\n 'build-client',\n ),\n );\n if (!('output' in clientBuildOutput)) {\n throw new Error('Unexpected vite client build output');\n }\n for (const nonJsAsset of nonJsAssets) {\n const from = joinPath(rootDir, config.distDir, nonJsAsset);\n const to = joinPath(rootDir, config.distDir, DIST_PUBLIC, nonJsAsset);\n await copyFile(from, to);\n }\n return clientBuildOutput;\n};\n\n// TODO: Add progress indication for static builds.\n\nconst createTaskRunner = (limit: number) => {\n let running = 0;\n const waiting: (() => void)[] = [];\n const errors: unknown[] = [];\n const scheduleTask = async (task: () => Promise<void>) => {\n if (running >= limit) {\n await new Promise<void>((resolve) => waiting.push(resolve));\n }\n running++;\n try {\n await task();\n } catch (err) {\n errors.push(err);\n } finally {\n running--;\n waiting.shift()?.();\n }\n };\n const runTask = (task: () => Promise<void>) => {\n scheduleTask(task).catch(() => {});\n };\n const waitForTasks = async () => {\n if (running > 0) {\n await new Promise<void>((resolve) => waiting.push(resolve));\n await waitForTasks();\n }\n if (errors.length > 0) {\n console.error('Errors occurred during running tasks:', errors);\n throw errors[0];\n }\n };\n return { runTask, waitForTasks };\n};\nconst WRITE_FILE_BATCH_SIZE = 2500;\nconst { runTask, waitForTasks } = createTaskRunner(WRITE_FILE_BATCH_SIZE);\n\nconst emitStaticFile = (\n rootDir: string,\n config: ConfigDev,\n pathname: string,\n body: Promise<ReadableStream> | string,\n) => {\n const destFile = joinPath(\n rootDir,\n config.distDir,\n DIST_PUBLIC,\n extname(pathname)\n ? pathname\n : pathname === '/404'\n ? '404.html' // HACK special treatment for 404, better way?\n : pathname + '/index.html',\n );\n // In partial mode, skip if the file already exists.\n if (existsSync(destFile)) {\n return;\n }\n runTask(async () => {\n await mkdir(joinPath(destFile, '..'), { recursive: true });\n if (typeof body === 'string') {\n await writeFile(destFile, body);\n } else {\n await pipeline(\n Readable.fromWeb((await body) as never),\n createWriteStream(destFile),\n );\n }\n });\n};\n\nconst emitStaticFiles = async (\n rootDir: string,\n config: ConfigDev,\n distEntriesFile: string,\n distEntries: EntriesPrd,\n cssAssets: string[],\n) => {\n const unstable_modules = {\n rsdwServer: await distEntries.loadModule('rsdw-server'),\n rdServer: await distEntries.loadModule(CLIENT_PREFIX + 'rd-server'),\n rsdwClient: await distEntries.loadModule(CLIENT_PREFIX + 'rsdw-client'),\n wakuMinimalClient: await distEntries.loadModule(\n CLIENT_PREFIX + 'waku-minimal-client',\n ),\n };\n const publicIndexHtmlFile = joinPath(\n rootDir,\n config.distDir,\n DIST_PUBLIC,\n 'index.html',\n );\n const publicIndexHtml = await readFile(publicIndexHtmlFile, {\n encoding: 'utf8',\n });\n const publicIndexHtmlHead = publicIndexHtml.replace(\n /.*?<head>(.*?)<\\/head>.*/s,\n '$1',\n );\n const cssStr = cssAssets\n .map((asset) => `<link rel=\"stylesheet\" href=\"${config.basePath}${asset}\">`)\n .join('\\n');\n const defaultHtmlStr = publicIndexHtml\n // HACK is this too naive to inject style code?\n .replace(/<\\/head>/, cssStr + '</head>');\n const defaultHtmlHead = publicIndexHtmlHead + cssStr;\n const baseRscPrefix = config.basePath + config.rscBase + '/';\n const utils = {\n renderRsc: (\n elements: Record<string, unknown>,\n options?: {\n moduleIdCallback?: (id: string) => void;\n },\n ) =>\n renderRsc(\n config,\n { unstable_modules },\n elements,\n new Set(),\n options?.moduleIdCallback,\n ),\n renderHtml: async (\n elements: Record<string, unknown>,\n html: ReactNode,\n options: { rscPath: string; htmlHead?: string },\n ) => {\n const body = await renderHtml(\n config,\n { unstable_modules },\n defaultHtmlHead + (options.htmlHead || ''),\n elements,\n new Set(),\n html,\n options.rscPath,\n );\n const headers = { 'content-type': 'text/html; charset=utf-8' };\n return { body, headers };\n },\n rscPath2pathname: (rscPath: string) =>\n joinPath(config.rscBase, encodeRscPath(rscPath)),\n unstable_generatePrefetchCode: (\n rscPaths: Iterable<string>,\n moduleIds: Iterable<string>,\n ) => generatePrefetchCode(baseRscPrefix, rscPaths, moduleIds),\n unstable_collectClientModules: (elements: Record<string, unknown>) =>\n collectClientModules(\n config,\n unstable_modules.rsdwServer as never,\n elements,\n ),\n };\n const dynamicHtmlPathMap = new Map<PathSpec, string>();\n const buildConfigs = distEntries.default.handleBuild(utils);\n if (buildConfigs) {\n await unlink(publicIndexHtmlFile);\n }\n for await (const buildConfig of buildConfigs || []) {\n switch (buildConfig.type) {\n case 'file':\n emitStaticFile(rootDir, config, buildConfig.pathname, buildConfig.body);\n break;\n case 'htmlHead':\n dynamicHtmlPathMap.set(\n buildConfig.pathSpec,\n defaultHtmlHead + (buildConfig.head || ''),\n );\n break;\n case 'defaultHtml':\n emitStaticFile(\n rootDir,\n config,\n buildConfig.pathname,\n // HACK is this too naive to inject script code?\n defaultHtmlStr.replace(\n /<\\/head>/,\n (buildConfig.head || '') + '</head>',\n ),\n );\n break;\n }\n }\n await waitForTasks();\n const dynamicHtmlPaths = Array.from(dynamicHtmlPathMap);\n let distEntriesFileContent = await readFile(distEntriesFile, {\n encoding: 'utf8',\n });\n distEntriesFileContent = distEntriesFileContent.replace(\n 'globalThis.__WAKU_DYNAMIC_HTML_PATHS__',\n JSON.stringify(dynamicHtmlPaths),\n );\n distEntriesFileContent = distEntriesFileContent.replace(\n 'globalThis.__WAKU_PUBLIC_INDEX_HTML__',\n JSON.stringify(defaultHtmlStr),\n );\n await writeFile(distEntriesFile, distEntriesFileContent);\n};\n\n// For Deploy\n// FIXME Is this a good approach? I wonder if there's something missing.\nconst buildDeploy = async (rootDir: string, config: ConfigDev) => {\n const DUMMY = 'dummy-entry';\n await buildVite(\n extendViteConfig(\n {\n plugins: [\n {\n // FIXME This is too hacky. There must be a better way.\n name: 'dummy-entry-plugin',\n resolveId(source) {\n if (source === DUMMY) {\n return source;\n }\n },\n load(id) {\n if (id === DUMMY) {\n return '';\n }\n },\n generateBundle(_options, bundle) {\n Object.entries(bundle).forEach(([key, value]) => {\n if (value.name === DUMMY) {\n delete bundle[key];\n }\n });\n },\n },\n ...deployPlugins(config),\n ],\n publicDir: false,\n build: {\n emptyOutDir: false,\n ssr: true,\n rollupOptions: {\n onwarn: (warning, warn) => {\n if (!warning.message.startsWith('Generated an empty chunk:')) {\n warn(warning);\n }\n },\n input: { [DUMMY]: DUMMY },\n },\n outDir: joinPath(rootDir, config.distDir),\n },\n },\n config,\n 'build-deploy',\n ),\n );\n};\n\nexport async function build(options: {\n config: Config;\n env?: Record<string, string>;\n partial?: boolean;\n deploy?:\n | 'vercel-static'\n | 'vercel-serverless'\n | 'netlify-static'\n | 'netlify-functions'\n | 'cloudflare'\n | 'partykit'\n | 'deno'\n | 'aws-lambda'\n | undefined;\n}) {\n const env = options.env || {};\n const config = await resolveConfigDev(options.config);\n const rootDir = (\n await resolveViteConfig({}, 'build', 'production', 'production')\n ).root;\n const distEntriesFile = joinPath(rootDir, config.distDir, DIST_ENTRIES_JS);\n\n const buildOptions = unstable_getBuildOptions();\n buildOptions.deploy = options.deploy;\n\n buildOptions.unstable_phase = 'analyzeEntries';\n const { clientEntryFiles, serverEntryFiles, serverModuleFiles } =\n await analyzeEntries(rootDir, config);\n buildOptions.unstable_phase = 'buildServerBundle';\n const serverBuildOutput = await buildServerBundle(\n rootDir,\n env,\n config,\n clientEntryFiles,\n serverEntryFiles,\n serverModuleFiles,\n !!options.partial,\n );\n buildOptions.unstable_phase = 'buildSsrBundle';\n await buildSsrBundle(\n rootDir,\n env,\n config,\n clientEntryFiles,\n serverEntryFiles,\n serverBuildOutput,\n !!options.partial,\n );\n buildOptions.unstable_phase = 'buildClientBundle';\n const clientBuildOutput = await buildClientBundle(\n rootDir,\n env,\n config,\n clientEntryFiles,\n serverEntryFiles,\n serverBuildOutput,\n !!options.partial,\n );\n delete buildOptions.unstable_phase;\n\n const distEntries: EntriesPrd = await import(\n filePathToFileURL(distEntriesFile)\n );\n\n INTERNAL_setAllEnv(env);\n const cssAssets = clientBuildOutput.output.flatMap(({ type, fileName }) =>\n type === 'asset' && fileName.endsWith('.css') ? [fileName] : [],\n );\n buildOptions.unstable_phase = 'emitStaticFiles';\n await emitStaticFiles(\n rootDir,\n config,\n distEntriesFile,\n distEntries,\n cssAssets,\n );\n\n buildOptions.unstable_phase = 'buildDeploy';\n await buildDeploy(rootDir, config);\n delete buildOptions.unstable_phase;\n\n if (existsSync(distEntriesFile)) {\n await emitPlatformData(joinPath(rootDir, config.distDir));\n }\n}\n"],"names":["Readable","pipeline","build","buildVite","resolveConfig","resolveViteConfig","viteReact","INTERNAL_setAllEnv","unstable_getBuildOptions","resolveConfigDev","decodeFilePathFromAbsolute","extname","filePathToFileURL","fileURLToFilePath","joinPath","extendViteConfig","copyFile","createWriteStream","existsSync","mkdir","readdir","readFile","unlink","writeFile","encodeRscPath","generatePrefetchCode","collectClientModules","renderRsc","renderHtml","SERVER_MODULE_MAP","CLIENT_MODULE_MAP","CLIENT_PREFIX","rscRsdwPlugin","rscIndexPlugin","rscAnalyzePlugin","nonjsResolvePlugin","rscTransformPlugin","rscEntriesPlugin","rscEnvPlugin","rscPrivatePlugin","rscManagedPlugin","EXTENSIONS","DIST_ENTRIES_JS","DIST_PUBLIC","DIST_ASSETS","DIST_SSR","deployVercelPlugin","deployNetlifyPlugin","deployCloudflarePlugin","deployDenoPlugin","deployPartykitPlugin","deployAwsLambdaPlugin","emitPlatformData","onwarn","warning","defaultHandler","code","test","message","loc","column","line","deployPlugins","config","analyzeEntries","rootDir","wakuClientDist","url","wakuMinimalClientDist","clientFileMap","Map","serverFileMap","moduleFileMap","pagesDirPath","srcDir","pagesDir","files","encoding","recursive","file","ext","includes","set","slice","length","mode","plugins","isClient","addEntriesToInput","ssr","target","resolve","conditions","externalConditions","noExternal","write","rollupOptions","input","Object","fromEntries","clientEntryFiles","Array","from","map","fname","hash","i","addMainToInput","serverEntryFiles","serverModuleFiles","buildServerBundle","env","partial","serverBuildOutput","isBuild","isDev","basePath","rscBase","middleware","ssrDir","moduleMap","keys","key","esbuild","jsx","define","JSON","stringify","publicDir","emptyOutDir","ssrEmitAssets","outDir","distDir","Error","buildSsrBundle","cssAssets","output","flatMap","type","fileName","endsWith","base","entryFileNames","chunkInfo","name","buildClientBundle","nonJsAssets","filter","asset","clientBuildOutput","preserveEntrySignatures","nonJsAsset","to","createTaskRunner","limit","running","waiting","errors","scheduleTask","task","Promise","push","err","shift","runTask","catch","waitForTasks","console","error","WRITE_FILE_BATCH_SIZE","emitStaticFile","pathname","body","destFile","fromWeb","emitStaticFiles","distEntriesFile","distEntries","unstable_modules","rsdwServer","loadModule","rdServer","rsdwClient","wakuMinimalClient","publicIndexHtmlFile","publicIndexHtml","publicIndexHtmlHead","replace","cssStr","join","defaultHtmlStr","defaultHtmlHead","baseRscPrefix","utils","elements","options","Set","moduleIdCallback","html","htmlHead","rscPath","headers","rscPath2pathname","unstable_generatePrefetchCode","rscPaths","moduleIds","unstable_collectClientModules","dynamicHtmlPathMap","buildConfigs","default","handleBuild","buildConfig","pathSpec","head","dynamicHtmlPaths","distEntriesFileContent","buildDeploy","DUMMY","resolveId","source","load","id","generateBundle","_options","bundle","entries","forEach","value","warn","startsWith","root","buildOptions","deploy","unstable_phase"],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ export declare const EXTENSIONS: string[];
2
+ export declare const SRC_MAIN = "main";
3
+ export declare const SRC_ENTRIES = "entries";
1
4
  export declare const DIST_ENTRIES_JS = "entries.js";
2
5
  export declare const DIST_SERVE_JS = "serve.js";
3
6
  export declare const DIST_PUBLIC = "public";
@@ -1,3 +1,13 @@
1
+ export const EXTENSIONS = [
2
+ '.js',
3
+ '.ts',
4
+ '.tsx',
5
+ '.jsx',
6
+ '.mjs',
7
+ '.cjs'
8
+ ];
9
+ export const SRC_MAIN = 'main';
10
+ export const SRC_ENTRIES = 'entries';
1
11
  // Some file and dir names for dist
2
12
  // We may change this in the future
3
13
  export const DIST_ENTRIES_JS = 'entries.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/builder/constants.ts"],"sourcesContent":["// Some file and dir names for dist\n// We may change this in the future\nexport const DIST_ENTRIES_JS = 'entries.js';\nexport const DIST_SERVE_JS = 'serve.js';\nexport const DIST_PUBLIC = 'public';\nexport const DIST_ASSETS = 'assets';\nexport const DIST_SSR = 'ssr';\n"],"names":["DIST_ENTRIES_JS","DIST_SERVE_JS","DIST_PUBLIC","DIST_ASSETS","DIST_SSR"],"mappings":"AAAA,mCAAmC;AACnC,mCAAmC;AACnC,OAAO,MAAMA,kBAAkB,aAAa;AAC5C,OAAO,MAAMC,gBAAgB,WAAW;AACxC,OAAO,MAAMC,cAAc,SAAS;AACpC,OAAO,MAAMC,cAAc,SAAS;AACpC,OAAO,MAAMC,WAAW,MAAM"}
1
+ {"version":3,"sources":["../../../src/lib/builder/constants.ts"],"sourcesContent":["export const EXTENSIONS = ['.js', '.ts', '.tsx', '.jsx', '.mjs', '.cjs'];\nexport const SRC_MAIN = 'main';\nexport const SRC_ENTRIES = 'entries';\n\n// Some file and dir names for dist\n// We may change this in the future\nexport const DIST_ENTRIES_JS = 'entries.js';\nexport const DIST_SERVE_JS = 'serve.js';\nexport const DIST_PUBLIC = 'public';\nexport const DIST_ASSETS = 'assets';\nexport const DIST_SSR = 'ssr';\n"],"names":["EXTENSIONS","SRC_MAIN","SRC_ENTRIES","DIST_ENTRIES_JS","DIST_SERVE_JS","DIST_PUBLIC","DIST_ASSETS","DIST_SSR"],"mappings":"AAAA,OAAO,MAAMA,aAAa;IAAC;IAAO;IAAO;IAAQ;IAAQ;IAAQ;CAAO,CAAC;AACzE,OAAO,MAAMC,WAAW,OAAO;AAC/B,OAAO,MAAMC,cAAc,UAAU;AAErC,mCAAmC;AACnC,mCAAmC;AACnC,OAAO,MAAMC,kBAAkB,aAAa;AAC5C,OAAO,MAAMC,gBAAgB,WAAW;AACxC,OAAO,MAAMC,cAAc,SAAS;AACpC,OAAO,MAAMC,cAAc,SAAS;AACpC,OAAO,MAAMC,WAAW,MAAM"}
@@ -1,8 +1,8 @@
1
- const DEFAULT_MIDDLEWARE = ()=>[
2
- import('waku/middleware/context'),
3
- import('waku/middleware/dev-server'),
4
- import('waku/middleware/handler')
5
- ];
1
+ const DEFAULT_MIDDLEWARE = [
2
+ 'waku/middleware/context',
3
+ 'waku/middleware/dev-server',
4
+ 'waku/middleware/handler'
5
+ ];
6
6
  // Keep async function for future extension
7
7
  export async function resolveConfigDev(config) {
8
8
  const configDev = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/config.ts"],"sourcesContent":["import type { Config } from '../config.js';\n\nexport type ConfigDev = Required<Config>;\n\nconst DEFAULT_MIDDLEWARE = () => [\n import('waku/middleware/context'),\n import('waku/middleware/dev-server'),\n import('waku/middleware/handler'),\n];\n\n// Keep async function for future extension\nexport async function resolveConfigDev(config: Config) {\n const configDev: ConfigDev = {\n basePath: '/',\n srcDir: 'src',\n distDir: 'dist',\n pagesDir: 'pages',\n apiDir: 'api',\n privateDir: 'private',\n rscBase: 'RSC',\n middleware: DEFAULT_MIDDLEWARE,\n unstable_honoEnhancer: undefined,\n unstable_viteConfigs: undefined,\n ...config,\n };\n return configDev;\n}\n\nexport type ConfigPrd = Pick<Required<Config>, 'basePath' | 'rscBase'>;\n"],"names":["DEFAULT_MIDDLEWARE","resolveConfigDev","config","configDev","basePath","srcDir","distDir","pagesDir","apiDir","privateDir","rscBase","middleware","unstable_honoEnhancer","undefined","unstable_viteConfigs"],"mappings":"AAIA,MAAMA,qBAAqB,IAAM;QAC/B,MAAM,CAAC;QACP,MAAM,CAAC;QACP,MAAM,CAAC;KACR;AAED,2CAA2C;AAC3C,OAAO,eAAeC,iBAAiBC,MAAc;IACnD,MAAMC,YAAuB;QAC3BC,UAAU;QACVC,QAAQ;QACRC,SAAS;QACTC,UAAU;QACVC,QAAQ;QACRC,YAAY;QACZC,SAAS;QACTC,YAAYX;QACZY,uBAAuBC;QACvBC,sBAAsBD;QACtB,GAAGX,MAAM;IACX;IACA,OAAOC;AACT"}
1
+ {"version":3,"sources":["../../src/lib/config.ts"],"sourcesContent":["import type { Config } from '../config.js';\n\nexport type ConfigDev = Required<Config>;\n\nconst DEFAULT_MIDDLEWARE = [\n 'waku/middleware/context',\n 'waku/middleware/dev-server',\n 'waku/middleware/handler',\n];\n\n// Keep async function for future extension\nexport async function resolveConfigDev(config: Config) {\n const configDev: ConfigDev = {\n basePath: '/',\n srcDir: 'src',\n distDir: 'dist',\n pagesDir: 'pages',\n apiDir: 'api',\n privateDir: 'private',\n rscBase: 'RSC',\n middleware: DEFAULT_MIDDLEWARE,\n unstable_honoEnhancer: undefined,\n unstable_viteConfigs: undefined,\n ...config,\n };\n return configDev;\n}\n\nexport type ConfigPrd = Pick<Required<Config>, 'basePath' | 'rscBase'>;\n"],"names":["DEFAULT_MIDDLEWARE","resolveConfigDev","config","configDev","basePath","srcDir","distDir","pagesDir","apiDir","privateDir","rscBase","middleware","unstable_honoEnhancer","undefined","unstable_viteConfigs"],"mappings":"AAIA,MAAMA,qBAAqB;IACzB;IACA;IACA;CACD;AAED,2CAA2C;AAC3C,OAAO,eAAeC,iBAAiBC,MAAc;IACnD,MAAMC,YAAuB;QAC3BC,UAAU;QACVC,QAAQ;QACRC,SAAS;QACTC,UAAU;QACVC,QAAQ;QACRC,YAAY;QACZC,SAAS;QACTC,YAAYX;QACZY,uBAAuBC;QACvBC,sBAAsBD;QACtB,GAAGX,MAAM;IACX;IACA,OAAOC;AACT"}