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.
- package/README.md +8 -8
- package/dist/cli.js +7 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +8 -9
- package/dist/config.js.map +1 -1
- package/dist/lib/builder/build.js +15 -9
- package/dist/lib/builder/build.js.map +1 -1
- package/dist/lib/builder/constants.d.ts +3 -0
- package/dist/lib/builder/constants.js +10 -0
- package/dist/lib/builder/constants.js.map +1 -1
- package/dist/lib/config.js +5 -5
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hono/engine.js +14 -7
- package/dist/lib/hono/engine.js.map +1 -1
- package/dist/lib/middleware/dev-server-impl.js +1 -1
- package/dist/lib/middleware/dev-server-impl.js.map +1 -1
- package/dist/lib/middleware/types.d.ts +0 -2
- package/dist/lib/middleware/types.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-deploy-aws-lambda.d.ts +1 -0
- package/dist/lib/plugins/vite-plugin-deploy-aws-lambda.js +12 -7
- package/dist/lib/plugins/vite-plugin-deploy-aws-lambda.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-deploy-cloudflare.d.ts +1 -0
- package/dist/lib/plugins/vite-plugin-deploy-cloudflare.js +12 -9
- package/dist/lib/plugins/vite-plugin-deploy-cloudflare.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-deploy-deno.d.ts +1 -0
- package/dist/lib/plugins/vite-plugin-deploy-deno.js +12 -8
- package/dist/lib/plugins/vite-plugin-deploy-deno.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-deploy-netlify.d.ts +1 -0
- package/dist/lib/plugins/vite-plugin-deploy-netlify.js +12 -8
- package/dist/lib/plugins/vite-plugin-deploy-netlify.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-deploy-partykit.d.ts +1 -0
- package/dist/lib/plugins/vite-plugin-deploy-partykit.js +12 -9
- package/dist/lib/plugins/vite-plugin-deploy-partykit.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-deploy-vercel.d.ts +1 -0
- package/dist/lib/plugins/vite-plugin-deploy-vercel.js +12 -8
- package/dist/lib/plugins/vite-plugin-deploy-vercel.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-dev-commonjs.js +1 -1
- package/dist/lib/plugins/vite-plugin-dev-commonjs.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-fs-router-typegen.js +1 -1
- package/dist/lib/plugins/vite-plugin-fs-router-typegen.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-nonjs-resolve.js +1 -1
- package/dist/lib/plugins/vite-plugin-nonjs-resolve.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-analyze.d.ts +1 -0
- package/dist/lib/plugins/vite-plugin-rsc-analyze.js +4 -3
- package/dist/lib/plugins/vite-plugin-rsc-analyze.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-delegate.js +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-delegate.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-entries.d.ts +2 -0
- package/dist/lib/plugins/vite-plugin-rsc-entries.js +7 -6
- package/dist/lib/plugins/vite-plugin-rsc-entries.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-index.js +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-index.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-managed.js +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-managed.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-rsdw.js +7 -2
- package/dist/lib/plugins/vite-plugin-rsc-rsdw.js.map +1 -1
- package/dist/lib/plugins/vite-plugin-rsc-transform.js +25 -6
- package/dist/lib/plugins/vite-plugin-rsc-transform.js.map +1 -1
- package/dist/lib/renderers/html.js +1 -1
- package/dist/lib/renderers/html.js.map +1 -1
- package/dist/lib/types.d.ts +4 -2
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/utils/swc.js +1 -1
- package/dist/lib/utils/swc.js.map +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/main.react-server.d.ts +1 -1
- package/dist/main.react-server.js +1 -1
- package/dist/main.react-server.js.map +1 -1
- package/dist/minimal/client.d.ts +17 -14
- package/dist/minimal/client.js +61 -26
- package/dist/minimal/client.js.map +1 -1
- package/dist/router/client.d.ts +9 -4
- package/dist/router/client.js +29 -20
- package/dist/router/client.js.map +1 -1
- package/dist/router/create-pages.js +0 -4
- package/dist/router/create-pages.js.map +1 -1
- package/dist/router/fs-router.js +1 -1
- package/dist/router/fs-router.js.map +1 -1
- package/dist/server.d.ts +2 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/package.json +17 -17
- package/dist/lib/constants.d.ts +0 -3
- package/dist/lib/constants.js +0 -12
- 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
|
-
[](https://github.com/wakujs/waku/actions?query=workflow%3ATest)
|
|
8
8
|
[](https://www.npmjs.com/package/waku)
|
|
9
9
|
[](https://www.npmjs.com/package/waku)
|
|
10
10
|
[](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/
|
|
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:** `^
|
|
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/
|
|
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 {
|
|
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 {
|
|
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/
|
|
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/
|
|
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
|
|
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
|
|
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":"AAAA,OAAOA,UAAU,YAAY;AAC7B,SAASC,UAAU,EAAEC,YAAY,QAAQ,UAAU;AACnD,SAASC,aAAa,QAAQ,WAAW;AACzC,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,aAAa,QAAQ,cAAc;AAC5C,SAASC,IAAI,QAAQ,OAAO;AAC5B,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,KAAK,QAAQ,oBAAoB;AAC1C,SAASC,WAAW,QAAQ,iCAAiC;AAC7D,YAAYC,YAAY,SAAS;AAGjC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,KAAK,QAAQ,yBAAyB;AAC/C,SAASC,eAAe,EAAEC,WAAW,QAAQ,6BAA6B;AAE1E,MAAMC,UAAUV,cAAc,IAAIW,IAAI,KAAK,YAAYC,GAAG;AAE1DP,OAAOQ,MAAM,CAAC;IAAElB,MAAM;QAAC;QAAc;KAAO;AAAC;AAE7C,MAAMmB,cAAc,kBAAkB,wBAAwB;AAE9D,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGjB,UAAU;IACxCkB,MAAMC,QAAQC,IAAI,CAACC,KAAK,CAAC;IACzBC,kBAAkB;IAClBC,SAAS;QACP,eAAe;YACbC,MAAM;QACR;QACA,sBAAsB;YACpBA,MAAM;QACR;QACA,gBAAgB;YACdA,MAAM;QACR;QACA,uBAAuB;YACrBA,MAAM;QACR;QACA,mBAAmB;YACjBA,MAAM;QACR;QACA,iBAAiB;YACfA,MAAM;QACR;QACA,aAAa;YACXA,MAAM;QACR;QACA,mBAAmB;YACjBA,MAAM;QACR;QACA,wBAAwB;YACtBA,MAAM;QACR;QACA,yBAAyB;YACvBA,MAAM;QACR;QACAC,MAAM;YACJD,MAAM;YACNE,OAAO;QACT;QACAC,SAAS;YACPH,MAAM;YACNE,OAAO;QACT;QACAE,MAAM;YACJJ,MAAM;YACNE,OAAO;QACT;IACF;AACF;AAEA,MAAMG,MAAMZ,WAAW,CAAC,EAAE;AAE1B,IAAID,OAAOW,OAAO,EAAE;IAClB,MAAM,EAAEA,OAAO,EAAE,GAAGhB,QAAQ;IAC5BmB,QAAQC,GAAG,CAACJ;AACd,OAAO,IAAIX,OAAOY,IAAI,EAAE;IACtBI;AACF,OAAO;IACL,OAAQH;QACN,KAAK;YACH,MAAMI;YACN;QACF,KAAK;YACH,MAAMC;YACN;QACF,KAAK;YACH,MAAMC;YACN;QACF;YACE,IAAIN,KAAK;gBACPC,QAAQM,KAAK,CAAC,oBAAoBP;YACpC;YACAG;YACA;IACJ;AACF;AAEA,eAAeC;IACb,MAAMnB,SAAS,MAAMuB;IACrB,MAAMC,eACJxB,OAAOyB,qBAAqB,IAAK,CAAA,CAACC,YAAcA,SAAQ;IAC1D,MAAMA,YAAY,CAACC;QACjB,IAAIzB,MAAM,CAAC,wBAAwB,EAAE;YACnCyB,IAAIC,GAAG,CAACvC;QACV;QACAsC,IAAIC,GAAG,CACLnC,aAAa;YACXsB,KAAK;YACLf;YACA6B,KAAKxB,QAAQwB,GAAG;YAChBC,kBAAkB,IAAIC;QACxB;QAEFJ,IAAIK,QAAQ,CAAC,CAACC;YACZ,iDAAiD;YACjD,MAAMC,OAAOpD,KAAKqD,IAAI,CAAC,UAAU;YACjC,IAAIpD,WAAWmD,OAAO;gBACpB,OAAOD,EAAEG,IAAI,CAACpD,aAAakD,MAAM,SAAS;YAC5C;YACA,OAAOD,EAAEI,IAAI,CAAC,iBAAiB;QACjC;QACA,OAAOV;IACT;IACA,MAAMhB,OAAO2B,SAASpC,OAAOS,IAAI,IAAI,QAAQ;IAC7C,MAAM4B,YAAYf,aAAaE,WAAW,IAAItC,SAASuB;AACzD;AAEA,eAAeS;IACb,MAAMpB,SAAS,MAAMuB;IACrBlB,QAAQwB,GAAG,CAACW,QAAQ,GAAG;IACvB,MAAM9C,MAAM;QACVM;QACA6B,KAAKxB,QAAQwB,GAAG;QAChBY,SAAS,CAAC,CAACvC,MAAM,CAAC,uBAAuB;QACzCwC,QACE,AAAC,CAAA,AAACxC,MAAM,CAAC,cAAc,IAAI,CAAC,CAACG,QAAQwB,GAAG,CAACc,MAAM,GAC3CzC,MAAM,CAAC,qBAAqB,GAC1B,kBACA,sBACF0C,SAAQ,KACX,CAAA,AAAC1C,MAAM,CAAC,eAAe,IAAI,CAAC,CAACG,QAAQwB,GAAG,CAACgB,OAAO,GAC7C3C,MAAM,CAAC,sBAAsB,GAC3B,mBACA,sBACF0C,SAAQ,KACX1C,CAAAA,MAAM,CAAC,kBAAkB,GAAG,eAAe0C,SAAQ,KACnD1C,CAAAA,MAAM,CAAC,gBAAgB,GAAG,aAAa0C,SAAQ,KAC/C1C,CAAAA,MAAM,CAAC,YAAY,GAAG,SAAS0C,SAAQ,KACvC1C,CAAAA,MAAM,CAAC,kBAAkB,GAAG,eAAe0C,SAAQ;IACxD;AACF;AAEA,eAAevB;IACb,MAAMrB,SAAS,MAAMuB;IACrB,MAAM,EAAEuB,UAAU,MAAM,EAAE,GAAG9C;IAC7B,MAAMwB,eACJxB,OAAOyB,qBAAqB,IAAK,CAAA,CAACC,YAAcA,SAAQ;IAC1D,MAAMqB,cAAc,IAClB,MAAM,CAAC9D,cAAcH,KAAKkE,OAAO,CAACF,SAASnD,kBAAkBsD,QAAQ;IACvE,MAAMvB,YAAY,CAACC;QACjB,IAAIzB,MAAM,CAAC,wBAAwB,EAAE;YACnCyB,IAAIC,GAAG,CAACvC;QACV;QACAsC,IAAIC,GAAG,CAACrC,YAAY;YAAE2D,MAAMpE,KAAKqD,IAAI,CAACW,SAASlD;QAAa;QAC5D+B,IAAIC,GAAG,CACLnC,aAAa;YACXsB,KAAK;YACLgC;YACAlB,KAAKxB,QAAQwB,GAAG;YAChBC,kBAAkB,IAAIC;QACxB;QAEFJ,IAAIK,QAAQ,CAAC,CAACC;YACZ,iDAAiD;YACjD,MAAMC,OAAOpD,KAAKqD,IAAI,CAACW,SAASlD,aAAa;YAC7C,IAAIb,WAAWmD,OAAO;gBACpB,OAAOD,EAAEG,IAAI,CAACpD,aAAakD,MAAM,SAAS;YAC5C;YACA,OAAOD,EAAEI,IAAI,CAAC,iBAAiB;QACjC;QACA,OAAOV;IACT;IACA,MAAMhB,OAAO2B,SAASpC,OAAOS,IAAI,IAAI,QAAQ;IAC7C,MAAM4B,YAAYf,aAAaE,WAAW,IAAItC,SAASuB;AACzD;AAEA,SAAS4B,YAAYZ,GAAS,EAAEhB,IAAY;IAC1C,OAAO,IAAIwC,QAAc,CAACH,SAASI;QACjC,MAAMC,SAAS/D,MAAM;YAAE,GAAGqC,GAAG;YAAEhB;QAAK,GAAG;YACrCK,QAAQC,GAAG,CAAC,CAAC,qCAAqC,EAAEN,KAAK,CAAC,CAAC;YAC3DqC;QACF;QACAK,OAAOC,EAAE,CAAC,SAAS,CAACC;YAClB,IAAIA,IAAIC,IAAI,KAAK,cAAc;gBAC7BxC,QAAQC,GAAG,CACT,CAAC,WAAW,EAAEN,KAAK,mBAAmB,EAAEA,OAAO,EAAE,SAAS,CAAC;gBAE7D4B,YAAYZ,KAAKhB,OAAO,GACrB8C,IAAI,CAACT,SACLU,KAAK,CAACN;YACX,OAAO;gBACLpC,QAAQM,KAAK,CAAC,CAAC,wBAAwB,EAAEiC,IAAII,OAAO,EAAE;YACxD;QACF;IACF;AACF;AAEA,SAASzC;IACPF,QAAQC,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;AAkBf,CAAC;AACD;AAEA,eAAeM;IACb,IAAI,CAACxC,WAAWkB,cAAc;QAC5B,OAAO,CAAC;IACV;IACA,MAAM,EAAE2D,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC;IAC1C,MAAM1B,OAAOjD,cAAcH,KAAKkE,OAAO,CAAC/C,cAAcgD,QAAQ;IAC9D,OAAO,AAAC,CAAA,MAAMW,iBAAsC1B,KAAI,EAAG2B,OAAO;AACpE"}
|
|
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/
|
|
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
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
46
|
+
* [
|
|
47
|
+
* 'waku/middleware/context',
|
|
48
|
+
* 'waku/middleware/dev-server',
|
|
49
|
+
* 'waku/middleware/handler',
|
|
50
50
|
* ]
|
|
51
51
|
*/
|
|
52
|
-
middleware?:
|
|
53
|
-
default: Middleware;
|
|
54
|
-
}>[];
|
|
52
|
+
middleware?: string[];
|
|
55
53
|
/**
|
|
56
54
|
* Enhancer for Hono
|
|
57
55
|
* Defaults to `undefined`
|
|
58
56
|
*/
|
|
59
|
-
unstable_honoEnhancer?:
|
|
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;
|
package/dist/config.js.map
CHANGED
|
@@ -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/
|
|
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: '
|
|
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
|
-
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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,
|
|
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"}
|
package/dist/lib/config.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const DEFAULT_MIDDLEWARE =
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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 = {
|
package/dist/lib/config.js.map
CHANGED
|
@@ -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 =
|
|
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"}
|