waku 1.0.0-beta.1 → 1.0.0-beta.2
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 +20 -0
- package/dist/adapters/aws-lambda.d.ts +6 -1
- package/dist/adapters/aws-lambda.js +15 -5
- package/dist/adapters/aws-lambda.js.map +1 -1
- package/dist/adapters/bun.d.ts +6 -1
- package/dist/adapters/bun.js +15 -5
- package/dist/adapters/bun.js.map +1 -1
- package/dist/adapters/cloudflare.d.ts +6 -1
- package/dist/adapters/cloudflare.js +19 -9
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/default.d.ts +4 -1
- package/dist/adapters/deno.d.ts +6 -1
- package/dist/adapters/deno.js +15 -5
- package/dist/adapters/deno.js.map +1 -1
- package/dist/adapters/edge.d.ts +6 -1
- package/dist/adapters/edge.js +15 -5
- package/dist/adapters/edge.js.map +1 -1
- package/dist/adapters/netlify.d.ts +6 -1
- package/dist/adapters/netlify.js +15 -5
- package/dist/adapters/netlify.js.map +1 -1
- package/dist/adapters/node.d.ts +6 -1
- package/dist/adapters/node.js +15 -5
- package/dist/adapters/node.js.map +1 -1
- package/dist/adapters/vercel.d.ts +6 -1
- package/dist/adapters/vercel.js +15 -5
- package/dist/adapters/vercel.js.map +1 -1
- package/dist/lib/env.d.ts +5 -0
- package/dist/lib/env.js +12 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/hono/middleware.d.ts +7 -3
- package/dist/lib/hono/middleware.js +2 -9
- package/dist/lib/hono/middleware.js.map +1 -1
- package/dist/lib/types.d.ts +0 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/utils/initial-rsc.d.ts +8 -0
- package/dist/lib/utils/initial-rsc.js +36 -0
- package/dist/lib/utils/initial-rsc.js.map +1 -0
- package/dist/lib/utils/log.d.ts +1 -0
- package/dist/lib/utils/log.js +9 -0
- package/dist/lib/utils/log.js.map +1 -0
- package/dist/lib/utils/prefetch-cache.d.ts +14 -0
- package/dist/lib/utils/prefetch-cache.js +50 -0
- package/dist/lib/utils/prefetch-cache.js.map +1 -0
- package/dist/lib/utils/render.js +2 -1
- package/dist/lib/utils/render.js.map +1 -1
- package/dist/lib/utils/request.js +1 -0
- package/dist/lib/utils/request.js.map +1 -1
- package/dist/lib/utils/ssr.d.ts +0 -1
- package/dist/lib/utils/ssr.js +2 -2
- package/dist/lib/utils/ssr.js.map +1 -1
- package/dist/lib/vite-entries/entry.build.js +2 -2
- package/dist/lib/vite-entries/entry.build.js.map +1 -1
- package/dist/lib/vite-entries/entry.server.js +2 -2
- package/dist/lib/vite-entries/entry.server.js.map +1 -1
- package/dist/lib/vite-rsc/handler.js +5 -6
- package/dist/lib/vite-rsc/handler.js.map +1 -1
- package/dist/lib/vite-rsc/ssr.js +2 -3
- package/dist/lib/vite-rsc/ssr.js.map +1 -1
- package/dist/minimal/client.js +70 -50
- package/dist/minimal/client.js.map +1 -1
- package/dist/router/create-pages.d.ts +3 -1
- package/dist/router/create-pages.js +11 -2
- package/dist/router/create-pages.js.map +1 -1
- package/dist/router/define-router.d.ts +15 -0
- package/dist/router/define-router.js +249 -233
- package/dist/router/define-router.js.map +1 -1
- package/dist/router/fs-router.d.ts +6 -0
- package/dist/router/fs-router.js +10 -5
- package/dist/router/fs-router.js.map +1 -1
- package/dist/router/server.d.ts +3 -2
- package/dist/router/server.js +1 -1
- package/dist/router/server.js.map +1 -1
- package/dist/server.d.ts +1 -7
- package/dist/server.js +1 -15
- package/dist/server.js.map +1 -1
- package/package.json +3 -3
- package/dist/lib/context.d.ts +0 -9
- package/dist/lib/context.js +0 -26
- package/dist/lib/context.js.map +0 -1
- package/dist/lib/utils/prefetch.d.ts +0 -23
- package/dist/lib/utils/prefetch.js +0 -49
- package/dist/lib/utils/prefetch.js.map +0 -1
package/README.md
CHANGED
|
@@ -1045,6 +1045,26 @@ export default logger;
|
|
|
1045
1045
|
|
|
1046
1046
|
If you provide a custom `./src/waku.server.tsx`, pass middleware through the adapter options with `middlewareModules` or `middlewareFns`.
|
|
1047
1047
|
|
|
1048
|
+
## Interceptors
|
|
1049
|
+
|
|
1050
|
+
Files in `./src/pages/_interceptors` are loaded as handler interceptors. Each file should default export a `HandlerInterceptor` from `waku/router/server`.
|
|
1051
|
+
|
|
1052
|
+
An interceptor wraps each render, in both the request and build phases, and runs inside the request scope. Use it for cross-cutting concerns around a render, such as logging or installing an `AsyncLocalStorage`.
|
|
1053
|
+
|
|
1054
|
+
```ts
|
|
1055
|
+
// ./src/pages/_interceptors/logger.ts
|
|
1056
|
+
import type { HandlerInterceptor } from 'waku/router/server';
|
|
1057
|
+
|
|
1058
|
+
const logger: HandlerInterceptor = async (next) => {
|
|
1059
|
+
console.log('render start');
|
|
1060
|
+
const result = await next();
|
|
1061
|
+
console.log('render end');
|
|
1062
|
+
return result;
|
|
1063
|
+
};
|
|
1064
|
+
|
|
1065
|
+
export default logger;
|
|
1066
|
+
```
|
|
1067
|
+
|
|
1048
1068
|
## Data fetching
|
|
1049
1069
|
|
|
1050
1070
|
### Server
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
3
|
+
import { Hono } from 'hono/tiny';
|
|
2
4
|
declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers, options?: {
|
|
3
5
|
streaming?: boolean;
|
|
4
|
-
|
|
6
|
+
bodyLimit?: Parameters<typeof bodyLimit>[0] | false;
|
|
7
|
+
middlewareFns?: ((opts: {
|
|
8
|
+
app: Hono;
|
|
9
|
+
}) => MiddlewareHandler)[];
|
|
5
10
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
6
11
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
|
7
12
|
export default _default;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { serveStatic } from '@hono/node-server/serve-static';
|
|
3
3
|
import * as honoAwsLambda from 'hono/aws-lambda';
|
|
4
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
4
5
|
import { Hono } from 'hono/tiny';
|
|
5
6
|
import { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';
|
|
6
7
|
import { unstable_constants as constants, unstable_honoMiddleware as honoMiddleware } from 'waku/internals';
|
|
7
8
|
const { DIST_PUBLIC } = constants;
|
|
8
|
-
const {
|
|
9
|
+
const { rscMiddleware, middlewareRunner } = honoMiddleware;
|
|
10
|
+
const DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;
|
|
9
11
|
export default createServerEntryAdapter(({ processRequest, processBuild, config, isBuild, notFoundHtml }, options)=>{
|
|
10
|
-
const { middlewareFns = [], middlewareModules = {} } = options || {};
|
|
12
|
+
const { bodyLimit: bodyLimitOptions, middlewareFns = [], middlewareModules = {} } = options || {};
|
|
11
13
|
const app = new Hono();
|
|
12
14
|
app.notFound((c)=>{
|
|
13
15
|
if (notFoundHtml) {
|
|
@@ -20,11 +22,19 @@ export default createServerEntryAdapter(({ processRequest, processBuild, config,
|
|
|
20
22
|
root: path.join(config.distDir, DIST_PUBLIC)
|
|
21
23
|
}));
|
|
22
24
|
}
|
|
23
|
-
|
|
25
|
+
if (bodyLimitOptions !== false) {
|
|
26
|
+
app.use(bodyLimit(bodyLimitOptions ?? {
|
|
27
|
+
maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
24
30
|
for (const middlewareFn of middlewareFns){
|
|
25
|
-
app.use(middlewareFn(
|
|
31
|
+
app.use(middlewareFn({
|
|
32
|
+
app
|
|
33
|
+
}));
|
|
26
34
|
}
|
|
27
|
-
app.use(middlewareRunner(middlewareModules
|
|
35
|
+
app.use(middlewareRunner(middlewareModules, {
|
|
36
|
+
app
|
|
37
|
+
}));
|
|
28
38
|
app.use(rscMiddleware({
|
|
29
39
|
processRequest
|
|
30
40
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/aws-lambda.ts"],"sourcesContent":["import path from 'node:path';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport type { MiddlewareHandler } from 'hono';\nimport * as honoAwsLambda from 'hono/aws-lambda';\nimport { Hono } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './aws-lambda-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst {
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/aws-lambda.ts"],"sourcesContent":["import path from 'node:path';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport type { MiddlewareHandler } from 'hono';\nimport * as honoAwsLambda from 'hono/aws-lambda';\nimport { bodyLimit } from 'hono/body-limit';\nimport { Hono } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './aws-lambda-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst { rscMiddleware, middlewareRunner } = honoMiddleware;\n\nconst DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, isBuild, notFoundHtml },\n options?: {\n streaming?: boolean;\n bodyLimit?: Parameters<typeof bodyLimit>[0] | false;\n middlewareFns?: ((opts: { app: Hono }) => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const {\n bodyLimit: bodyLimitOptions,\n middlewareFns = [],\n middlewareModules = {},\n } = options || {};\n const app = new Hono();\n app.notFound((c) => {\n if (notFoundHtml) {\n return c.html(notFoundHtml, 404);\n }\n return c.text('404 Not Found', 404);\n });\n if (isBuild) {\n app.use(serveStatic({ root: path.join(config.distDir, DIST_PUBLIC) }));\n }\n if (bodyLimitOptions !== false) {\n app.use(\n bodyLimit(bodyLimitOptions ?? { maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE }),\n );\n }\n for (const middlewareFn of middlewareFns) {\n app.use(middlewareFn({ app }));\n }\n app.use(middlewareRunner(middlewareModules as never, { app }));\n app.use(rscMiddleware({ processRequest }));\n const buildOptions: BuildOptions = {\n distDir: config.distDir,\n };\n (globalThis as any).__WAKU_AWS_LAMBDA_HANDLE__ = options?.streaming\n ? honoAwsLambda.streamHandle\n : honoAwsLambda.handle;\n return {\n fetch: app.fetch,\n build: processBuild,\n buildOptions,\n buildEnhancers: ['waku/adapters/aws-lambda-build-enhancer'],\n };\n },\n);\n"],"names":["path","serveStatic","honoAwsLambda","bodyLimit","Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","rscMiddleware","middlewareRunner","DEFAULT_BODY_LIMIT_MAX_SIZE","processRequest","processBuild","config","isBuild","notFoundHtml","options","bodyLimitOptions","middlewareFns","middlewareModules","app","notFound","c","html","text","use","root","join","distDir","maxSize","middlewareFn","buildOptions","globalThis","__WAKU_AWS_LAMBDA_HANDLE__","streaming","streamHandle","handle","fetch","build","buildEnhancers"],"mappings":"AAAA,OAAOA,UAAU,YAAY;AAC7B,SAASC,WAAW,QAAQ,iCAAiC;AAE7D,YAAYC,mBAAmB,kBAAkB;AACjD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,qCAAqCC,wBAAwB,QAAQ,wBAAwB;AACtG,SACEC,sBAAsBC,SAAS,EAC/BC,2BAA2BC,cAAc,QACpC,iBAAiB;AAGxB,MAAM,EAAEC,WAAW,EAAE,GAAGH;AACxB,MAAM,EAAEI,aAAa,EAAEC,gBAAgB,EAAE,GAAGH;AAE5C,MAAMI,8BAA8B,MAAM,OAAO;AAEjD,eAAeR,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,OAAO,EAAEC,YAAY,EAAE,EAC/DC;IAOA,MAAM,EACJjB,WAAWkB,gBAAgB,EAC3BC,gBAAgB,EAAE,EAClBC,oBAAoB,CAAC,CAAC,EACvB,GAAGH,WAAW,CAAC;IAChB,MAAMI,MAAM,IAAIpB;IAChBoB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIP,cAAc;YAChB,OAAOO,EAAEC,IAAI,CAACR,cAAc;QAC9B;QACA,OAAOO,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIV,SAAS;QACXM,IAAIK,GAAG,CAAC5B,YAAY;YAAE6B,MAAM9B,KAAK+B,IAAI,CAACd,OAAOe,OAAO,EAAErB;QAAa;IACrE;IACA,IAAIU,qBAAqB,OAAO;QAC9BG,IAAIK,GAAG,CACL1B,UAAUkB,oBAAoB;YAAEY,SAASnB;QAA4B;IAEzE;IACA,KAAK,MAAMoB,gBAAgBZ,cAAe;QACxCE,IAAIK,GAAG,CAACK,aAAa;YAAEV;QAAI;IAC7B;IACAA,IAAIK,GAAG,CAAChB,iBAAiBU,mBAA4B;QAAEC;IAAI;IAC3DA,IAAIK,GAAG,CAACjB,cAAc;QAAEG;IAAe;IACvC,MAAMoB,eAA6B;QACjCH,SAASf,OAAOe,OAAO;IACzB;IACCI,WAAmBC,0BAA0B,GAAGjB,SAASkB,YACtDpC,cAAcqC,YAAY,GAC1BrC,cAAcsC,MAAM;IACxB,OAAO;QACLC,OAAOjB,IAAIiB,KAAK;QAChBC,OAAO1B;QACPmB;QACAQ,gBAAgB;YAAC;SAA0C;IAC7D;AACF,GACA"}
|
package/dist/adapters/bun.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
3
|
+
import { Hono } from 'hono/tiny';
|
|
2
4
|
declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers, options?: {
|
|
3
|
-
|
|
5
|
+
bodyLimit?: Parameters<typeof bodyLimit>[0] | false;
|
|
6
|
+
middlewareFns?: ((opts: {
|
|
7
|
+
app: Hono;
|
|
8
|
+
}) => MiddlewareHandler)[];
|
|
4
9
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
5
10
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
|
6
11
|
export default _default;
|
package/dist/adapters/bun.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
2
3
|
import { serveStatic } from 'hono/bun';
|
|
3
4
|
import { Hono } from 'hono/tiny';
|
|
4
5
|
import { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';
|
|
5
6
|
import { unstable_constants as constants, unstable_honoMiddleware as honoMiddleware } from 'waku/internals';
|
|
6
7
|
const { DIST_PUBLIC } = constants;
|
|
7
|
-
const {
|
|
8
|
+
const { rscMiddleware, middlewareRunner } = honoMiddleware;
|
|
9
|
+
const DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;
|
|
8
10
|
export default createServerEntryAdapter(({ processRequest, processBuild, config, isBuild, notFoundHtml }, options)=>{
|
|
9
|
-
const { middlewareFns = [], middlewareModules = {} } = options || {};
|
|
11
|
+
const { bodyLimit: bodyLimitOptions, middlewareFns = [], middlewareModules = {} } = options || {};
|
|
10
12
|
const app = new Hono();
|
|
11
13
|
app.notFound((c)=>{
|
|
12
14
|
if (notFoundHtml) {
|
|
@@ -20,11 +22,19 @@ export default createServerEntryAdapter(({ processRequest, processBuild, config,
|
|
|
20
22
|
rewriteRequestPath: (path)=>path.slice(config.basePath.length - 1)
|
|
21
23
|
}));
|
|
22
24
|
}
|
|
23
|
-
|
|
25
|
+
if (bodyLimitOptions !== false) {
|
|
26
|
+
app.use(bodyLimit(bodyLimitOptions ?? {
|
|
27
|
+
maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
24
30
|
for (const middlewareFn of middlewareFns){
|
|
25
|
-
app.use(middlewareFn(
|
|
31
|
+
app.use(middlewareFn({
|
|
32
|
+
app
|
|
33
|
+
}));
|
|
26
34
|
}
|
|
27
|
-
app.use(middlewareRunner(middlewareModules
|
|
35
|
+
app.use(middlewareRunner(middlewareModules, {
|
|
36
|
+
app
|
|
37
|
+
}));
|
|
28
38
|
app.use(rscMiddleware({
|
|
29
39
|
processRequest
|
|
30
40
|
}));
|
package/dist/adapters/bun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/bun.ts"],"sourcesContent":["import path from 'node:path';\nimport type { MiddlewareHandler } from 'hono';\nimport { serveStatic } from 'hono/bun';\nimport { Hono } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './bun-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst {
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/bun.ts"],"sourcesContent":["import path from 'node:path';\nimport type { MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { serveStatic } from 'hono/bun';\nimport { Hono } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './bun-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst { rscMiddleware, middlewareRunner } = honoMiddleware;\n\nconst DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, isBuild, notFoundHtml },\n options?: {\n bodyLimit?: Parameters<typeof bodyLimit>[0] | false;\n middlewareFns?: ((opts: { app: Hono }) => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const {\n bodyLimit: bodyLimitOptions,\n middlewareFns = [],\n middlewareModules = {},\n } = options || {};\n const app = new Hono();\n app.notFound((c) => {\n if (notFoundHtml) {\n return c.html(notFoundHtml, 404);\n }\n return c.text('404 Not Found', 404);\n });\n if (isBuild) {\n app.use(\n `${config.basePath}*`,\n serveStatic({\n root: path.join(config.distDir, DIST_PUBLIC),\n rewriteRequestPath: (path) => path.slice(config.basePath.length - 1),\n }),\n );\n }\n if (bodyLimitOptions !== false) {\n app.use(\n bodyLimit(bodyLimitOptions ?? { maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE }),\n );\n }\n for (const middlewareFn of middlewareFns) {\n app.use(middlewareFn({ app }));\n }\n app.use(middlewareRunner(middlewareModules as never, { app }));\n app.use(rscMiddleware({ processRequest }));\n const buildOptions: BuildOptions = {\n distDir: config.distDir,\n };\n return {\n fetch: app.fetch,\n build: processBuild,\n buildOptions,\n buildEnhancers: ['waku/adapters/bun-build-enhancer'],\n };\n },\n);\n"],"names":["path","bodyLimit","serveStatic","Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","rscMiddleware","middlewareRunner","DEFAULT_BODY_LIMIT_MAX_SIZE","processRequest","processBuild","config","isBuild","notFoundHtml","options","bodyLimitOptions","middlewareFns","middlewareModules","app","notFound","c","html","text","use","basePath","root","join","distDir","rewriteRequestPath","slice","length","maxSize","middlewareFn","buildOptions","fetch","build","buildEnhancers"],"mappings":"AAAA,OAAOA,UAAU,YAAY;AAE7B,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,WAAW,QAAQ,WAAW;AACvC,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,qCAAqCC,wBAAwB,QAAQ,wBAAwB;AACtG,SACEC,sBAAsBC,SAAS,EAC/BC,2BAA2BC,cAAc,QACpC,iBAAiB;AAGxB,MAAM,EAAEC,WAAW,EAAE,GAAGH;AACxB,MAAM,EAAEI,aAAa,EAAEC,gBAAgB,EAAE,GAAGH;AAE5C,MAAMI,8BAA8B,MAAM,OAAO;AAEjD,eAAeR,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,OAAO,EAAEC,YAAY,EAAE,EAC/DC;IAMA,MAAM,EACJlB,WAAWmB,gBAAgB,EAC3BC,gBAAgB,EAAE,EAClBC,oBAAoB,CAAC,CAAC,EACvB,GAAGH,WAAW,CAAC;IAChB,MAAMI,MAAM,IAAIpB;IAChBoB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIP,cAAc;YAChB,OAAOO,EAAEC,IAAI,CAACR,cAAc;QAC9B;QACA,OAAOO,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIV,SAAS;QACXM,IAAIK,GAAG,CACL,GAAGZ,OAAOa,QAAQ,CAAC,CAAC,CAAC,EACrB3B,YAAY;YACV4B,MAAM9B,KAAK+B,IAAI,CAACf,OAAOgB,OAAO,EAAEtB;YAChCuB,oBAAoB,CAACjC,OAASA,KAAKkC,KAAK,CAAClB,OAAOa,QAAQ,CAACM,MAAM,GAAG;QACpE;IAEJ;IACA,IAAIf,qBAAqB,OAAO;QAC9BG,IAAIK,GAAG,CACL3B,UAAUmB,oBAAoB;YAAEgB,SAASvB;QAA4B;IAEzE;IACA,KAAK,MAAMwB,gBAAgBhB,cAAe;QACxCE,IAAIK,GAAG,CAACS,aAAa;YAAEd;QAAI;IAC7B;IACAA,IAAIK,GAAG,CAAChB,iBAAiBU,mBAA4B;QAAEC;IAAI;IAC3DA,IAAIK,GAAG,CAACjB,cAAc;QAAEG;IAAe;IACvC,MAAMwB,eAA6B;QACjCN,SAAShB,OAAOgB,OAAO;IACzB;IACA,OAAO;QACLO,OAAOhB,IAAIgB,KAAK;QAChBC,OAAOzB;QACPuB;QACAG,gBAAgB;YAAC;SAAmC;IACtD;AACF,GACA"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
3
|
+
import { Hono } from 'hono/tiny';
|
|
2
4
|
declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers, options?: {
|
|
3
5
|
static?: boolean;
|
|
4
6
|
handlers?: Record<string, unknown>;
|
|
5
7
|
assetsDir?: string;
|
|
6
|
-
|
|
8
|
+
bodyLimit?: Parameters<typeof bodyLimit>[0] | false;
|
|
9
|
+
middlewareFns?: ((opts: {
|
|
10
|
+
app: Hono;
|
|
11
|
+
}) => MiddlewareHandler)[];
|
|
7
12
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
8
13
|
internalPathToBuildStaticFiles?: string;
|
|
9
14
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
1
2
|
import { Hono } from 'hono/tiny';
|
|
2
3
|
import { unstable_createServerEntryAdapter as createServerEntryAdapter, unstable_startPreviewServer as startPreviewServer } from 'waku/adapter-builders';
|
|
3
4
|
import { unstable_constants as constants, unstable_consumeMultiplexedStream as consumeMultiplexedStream, unstable_honoMiddleware as honoMiddleware, unstable_produceMultiplexedStream as produceMultiplexedStream } from 'waku/internals';
|
|
4
5
|
const { DIST_PUBLIC } = constants;
|
|
5
|
-
const {
|
|
6
|
+
const { rscMiddleware, middlewareRunner } = honoMiddleware;
|
|
7
|
+
const DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;
|
|
6
8
|
const DO_NOT_BUNDLE = '';
|
|
7
9
|
const PRUNABLE_KEY_PREFIX = '\0__prunable__/';
|
|
8
10
|
const emptyStream = ()=>new ReadableStream({
|
|
@@ -10,9 +12,9 @@ const emptyStream = ()=>new ReadableStream({
|
|
|
10
12
|
controller.close();
|
|
11
13
|
}
|
|
12
14
|
});
|
|
13
|
-
function
|
|
15
|
+
function isProductionWorker(req) {
|
|
14
16
|
// This header seems to only be set for production cloudflare workers
|
|
15
|
-
return
|
|
17
|
+
return !!req.headers.get('cf-visitor');
|
|
16
18
|
}
|
|
17
19
|
function removeGzipEncoding(res) {
|
|
18
20
|
const contentType = res.headers.get('content-type');
|
|
@@ -28,7 +30,7 @@ function removeGzipEncoding(res) {
|
|
|
28
30
|
return res;
|
|
29
31
|
}
|
|
30
32
|
export default createServerEntryAdapter(({ processRequest, processBuild, setAllEnv, config, notFoundHtml }, options)=>{
|
|
31
|
-
const { middlewareFns = [], middlewareModules = {}, internalPathToBuildStaticFiles = '__waku_internal_build_static_files' } = options || {};
|
|
33
|
+
const { bodyLimit: bodyLimitOptions, middlewareFns = [], middlewareModules = {}, internalPathToBuildStaticFiles = '__waku_internal_build_static_files' } = options || {};
|
|
32
34
|
const app = new Hono();
|
|
33
35
|
app.notFound((c)=>{
|
|
34
36
|
if (notFoundHtml) {
|
|
@@ -36,11 +38,19 @@ export default createServerEntryAdapter(({ processRequest, processBuild, setAllE
|
|
|
36
38
|
}
|
|
37
39
|
return c.text('404 Not Found', 404);
|
|
38
40
|
});
|
|
39
|
-
|
|
41
|
+
if (bodyLimitOptions !== false) {
|
|
42
|
+
app.use(bodyLimit(bodyLimitOptions ?? {
|
|
43
|
+
maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
40
46
|
for (const middlewareFn of middlewareFns){
|
|
41
|
-
app.use(middlewareFn(
|
|
47
|
+
app.use(middlewareFn({
|
|
48
|
+
app
|
|
49
|
+
}));
|
|
42
50
|
}
|
|
43
|
-
app.use(middlewareRunner(middlewareModules
|
|
51
|
+
app.use(middlewareRunner(middlewareModules, {
|
|
52
|
+
app
|
|
53
|
+
}));
|
|
44
54
|
app.use(rscMiddleware({
|
|
45
55
|
processRequest
|
|
46
56
|
}));
|
|
@@ -57,7 +67,7 @@ export default createServerEntryAdapter(({ processRequest, processBuild, setAllE
|
|
|
57
67
|
});
|
|
58
68
|
});
|
|
59
69
|
const fetchFn = async (req)=>{
|
|
60
|
-
if (new URL(req.url).pathname === `/${internalPathToBuildStaticFiles}`) {
|
|
70
|
+
if (new URL(req.url).pathname === `/${internalPathToBuildStaticFiles}` && !isProductionWorker(req)) {
|
|
61
71
|
return new Response(buildBody());
|
|
62
72
|
}
|
|
63
73
|
let cloudflareContext;
|
|
@@ -78,7 +88,7 @@ export default createServerEntryAdapter(({ processRequest, processBuild, setAllE
|
|
|
78
88
|
res = app.fetch(req);
|
|
79
89
|
}
|
|
80
90
|
// Workaround https://github.com/cloudflare/workers-sdk/issues/6577
|
|
81
|
-
if (import.meta.env?.PROD &&
|
|
91
|
+
if (import.meta.env?.PROD && !isProductionWorker(req)) {
|
|
82
92
|
if ('then' in res) {
|
|
83
93
|
res = res.then((res)=>removeGzipEncoding(res));
|
|
84
94
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/cloudflare.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono';\nimport { Hono } from 'hono/tiny';\nimport {\n unstable_createServerEntryAdapter as createServerEntryAdapter,\n unstable_startPreviewServer as startPreviewServer,\n} from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_consumeMultiplexedStream as consumeMultiplexedStream,\n unstable_honoMiddleware as honoMiddleware,\n unstable_produceMultiplexedStream as produceMultiplexedStream,\n} from 'waku/internals';\nimport type { BuildOptions } from './cloudflare-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;\n\nconst DO_NOT_BUNDLE = '';\n\nconst PRUNABLE_KEY_PREFIX = '\\0__prunable__/';\n\nconst emptyStream = () =>\n new ReadableStream<Uint8Array>({\n start(controller) {\n controller.close();\n },\n });\n\nfunction isWranglerDev(req: Request): boolean {\n // This header seems to only be set for production cloudflare workers\n return !req.headers.get('cf-visitor');\n}\n\nfunction removeGzipEncoding(res: Response): Response {\n const contentType = res.headers.get('content-type');\n if (\n !contentType ||\n contentType.includes('text/html') ||\n contentType.includes('text/plain')\n ) {\n const headers = new Headers(res.headers);\n headers.set('content-encoding', 'Identity');\n return new Response(res.body, {\n status: res.status,\n statusText: res.statusText,\n headers,\n });\n }\n return res;\n}\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, setAllEnv, config, notFoundHtml },\n options?: {\n static?: boolean;\n handlers?: Record<string, unknown>;\n assetsDir?: string;\n middlewareFns?: (() => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n internalPathToBuildStaticFiles?: string;\n },\n ) => {\n const {\n middlewareFns = [],\n middlewareModules = {},\n internalPathToBuildStaticFiles = '__waku_internal_build_static_files',\n } = options || {};\n const app = new Hono();\n app.notFound((c) => {\n if (notFoundHtml) {\n return c.html(notFoundHtml, 404);\n }\n return c.text('404 Not Found', 404);\n });\n app.use(contextMiddleware());\n for (const middlewareFn of middlewareFns) {\n app.use(middlewareFn());\n }\n app.use(middlewareRunner(middlewareModules as never));\n app.use(rscMiddleware({ processRequest }));\n const buildOptions: BuildOptions = {\n srcDir: config.srcDir,\n distDir: config.distDir,\n DIST_PUBLIC,\n serverless: !options?.static,\n };\n\n const buildBody = () =>\n produceMultiplexedStream(async (emitFile) => {\n await processBuild({\n emitFile,\n unstable_registerPrunableFile: (srcPath) =>\n emitFile(PRUNABLE_KEY_PREFIX + srcPath, emptyStream()),\n });\n });\n\n const fetchFn = async (req: Request) => {\n if (new URL(req.url).pathname === `/${internalPathToBuildStaticFiles}`) {\n return new Response(buildBody());\n }\n let cloudflareContext;\n try {\n cloudflareContext = await import(\n /* @vite-ignore */ DO_NOT_BUNDLE + 'cloudflare:workers'\n );\n } catch {\n // Not in a Cloudflare environment\n }\n let res: Response | Promise<Response>;\n if (cloudflareContext) {\n const { env, waitUntil, passThroughOnException } = cloudflareContext;\n res = app.fetch(req, env, {\n waitUntil,\n passThroughOnException,\n props: undefined,\n });\n } else {\n res = app.fetch(req);\n }\n // Workaround https://github.com/cloudflare/workers-sdk/issues/6577\n if (import.meta.env?.PROD && isWranglerDev(req)) {\n if ('then' in res) {\n res = res.then((res) => removeGzipEncoding(res));\n } else {\n res = removeGzipEncoding(res);\n }\n }\n return res;\n };\n\n return {\n fetch: fetchFn,\n build: async (utils) => {\n const server = await startPreviewServer();\n // Fallback middleware for the case without @cloudflare/vite-plugin\n server.middlewares.use(async (_req, res, next) => {\n try {\n const { Readable } = await import(\n /* @vite-ignore */ DO_NOT_BUNDLE + 'node:stream'\n );\n Readable.fromWeb(buildBody() as never).pipe(res);\n } catch (err) {\n next(err);\n }\n });\n const response = await fetch(\n server.baseUrl + internalPathToBuildStaticFiles,\n { headers: { connection: 'close' } },\n );\n await consumeMultiplexedStream(response.body!, async (key, stream) => {\n if (key.startsWith(PRUNABLE_KEY_PREFIX)) {\n utils.unstable_registerPrunableFile(\n key.slice(PRUNABLE_KEY_PREFIX.length),\n );\n return;\n }\n await utils.emitFile(key, stream);\n });\n // https://github.com/nodejs/node/issues/56645\n await new Promise((resolve) => setTimeout(resolve, 100));\n await server.close();\n },\n buildOptions,\n buildEnhancers: ['waku/adapters/cloudflare-build-enhancer'],\n defaultExport: {\n ...options?.handlers,\n fetch(req: Request, env: Record<string, string>) {\n setAllEnv(env);\n return fetchFn(req);\n },\n },\n };\n },\n);\n"],"names":["Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_startPreviewServer","startPreviewServer","unstable_constants","constants","unstable_consumeMultiplexedStream","consumeMultiplexedStream","unstable_honoMiddleware","honoMiddleware","unstable_produceMultiplexedStream","produceMultiplexedStream","DIST_PUBLIC","contextMiddleware","rscMiddleware","middlewareRunner","DO_NOT_BUNDLE","PRUNABLE_KEY_PREFIX","emptyStream","ReadableStream","start","controller","close","isWranglerDev","req","headers","get","removeGzipEncoding","res","contentType","includes","Headers","set","Response","body","status","statusText","processRequest","processBuild","setAllEnv","config","notFoundHtml","options","middlewareFns","middlewareModules","internalPathToBuildStaticFiles","app","notFound","c","html","text","use","middlewareFn","buildOptions","srcDir","distDir","serverless","static","buildBody","emitFile","unstable_registerPrunableFile","srcPath","fetchFn","URL","url","pathname","cloudflareContext","env","waitUntil","passThroughOnException","fetch","props","undefined","PROD","then","build","utils","server","middlewares","_req","next","Readable","fromWeb","pipe","err","response","baseUrl","connection","key","stream","startsWith","slice","length","Promise","resolve","setTimeout","buildEnhancers","defaultExport","handlers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/cloudflare.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { Hono } from 'hono/tiny';\nimport {\n unstable_createServerEntryAdapter as createServerEntryAdapter,\n unstable_startPreviewServer as startPreviewServer,\n} from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_consumeMultiplexedStream as consumeMultiplexedStream,\n unstable_honoMiddleware as honoMiddleware,\n unstable_produceMultiplexedStream as produceMultiplexedStream,\n} from 'waku/internals';\nimport type { BuildOptions } from './cloudflare-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst { rscMiddleware, middlewareRunner } = honoMiddleware;\n\nconst DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;\n\nconst DO_NOT_BUNDLE = '';\n\nconst PRUNABLE_KEY_PREFIX = '\\0__prunable__/';\n\nconst emptyStream = () =>\n new ReadableStream<Uint8Array>({\n start(controller) {\n controller.close();\n },\n });\n\nfunction isProductionWorker(req: Request): boolean {\n // This header seems to only be set for production cloudflare workers\n return !!req.headers.get('cf-visitor');\n}\n\nfunction removeGzipEncoding(res: Response): Response {\n const contentType = res.headers.get('content-type');\n if (\n !contentType ||\n contentType.includes('text/html') ||\n contentType.includes('text/plain')\n ) {\n const headers = new Headers(res.headers);\n headers.set('content-encoding', 'Identity');\n return new Response(res.body, {\n status: res.status,\n statusText: res.statusText,\n headers,\n });\n }\n return res;\n}\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, setAllEnv, config, notFoundHtml },\n options?: {\n static?: boolean;\n handlers?: Record<string, unknown>;\n assetsDir?: string;\n bodyLimit?: Parameters<typeof bodyLimit>[0] | false;\n middlewareFns?: ((opts: { app: Hono }) => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n internalPathToBuildStaticFiles?: string;\n },\n ) => {\n const {\n bodyLimit: bodyLimitOptions,\n middlewareFns = [],\n middlewareModules = {},\n internalPathToBuildStaticFiles = '__waku_internal_build_static_files',\n } = options || {};\n const app = new Hono();\n app.notFound((c) => {\n if (notFoundHtml) {\n return c.html(notFoundHtml, 404);\n }\n return c.text('404 Not Found', 404);\n });\n if (bodyLimitOptions !== false) {\n app.use(\n bodyLimit(bodyLimitOptions ?? { maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE }),\n );\n }\n for (const middlewareFn of middlewareFns) {\n app.use(middlewareFn({ app }));\n }\n app.use(middlewareRunner(middlewareModules as never, { app }));\n app.use(rscMiddleware({ processRequest }));\n const buildOptions: BuildOptions = {\n srcDir: config.srcDir,\n distDir: config.distDir,\n DIST_PUBLIC,\n serverless: !options?.static,\n };\n\n const buildBody = () =>\n produceMultiplexedStream(async (emitFile) => {\n await processBuild({\n emitFile,\n unstable_registerPrunableFile: (srcPath) =>\n emitFile(PRUNABLE_KEY_PREFIX + srcPath, emptyStream()),\n });\n });\n\n const fetchFn = async (req: Request) => {\n if (\n new URL(req.url).pathname === `/${internalPathToBuildStaticFiles}` &&\n !isProductionWorker(req)\n ) {\n return new Response(buildBody());\n }\n let cloudflareContext;\n try {\n cloudflareContext = await import(\n /* @vite-ignore */ DO_NOT_BUNDLE + 'cloudflare:workers'\n );\n } catch {\n // Not in a Cloudflare environment\n }\n let res: Response | Promise<Response>;\n if (cloudflareContext) {\n const { env, waitUntil, passThroughOnException } = cloudflareContext;\n res = app.fetch(req, env, {\n waitUntil,\n passThroughOnException,\n props: undefined,\n });\n } else {\n res = app.fetch(req);\n }\n // Workaround https://github.com/cloudflare/workers-sdk/issues/6577\n if (import.meta.env?.PROD && !isProductionWorker(req)) {\n if ('then' in res) {\n res = res.then((res) => removeGzipEncoding(res));\n } else {\n res = removeGzipEncoding(res);\n }\n }\n return res;\n };\n\n return {\n fetch: fetchFn,\n build: async (utils) => {\n const server = await startPreviewServer();\n // Fallback middleware for the case without @cloudflare/vite-plugin\n server.middlewares.use(async (_req, res, next) => {\n try {\n const { Readable } = await import(\n /* @vite-ignore */ DO_NOT_BUNDLE + 'node:stream'\n );\n Readable.fromWeb(buildBody() as never).pipe(res);\n } catch (err) {\n next(err);\n }\n });\n const response = await fetch(\n server.baseUrl + internalPathToBuildStaticFiles,\n { headers: { connection: 'close' } },\n );\n await consumeMultiplexedStream(response.body!, async (key, stream) => {\n if (key.startsWith(PRUNABLE_KEY_PREFIX)) {\n utils.unstable_registerPrunableFile(\n key.slice(PRUNABLE_KEY_PREFIX.length),\n );\n return;\n }\n await utils.emitFile(key, stream);\n });\n // https://github.com/nodejs/node/issues/56645\n await new Promise((resolve) => setTimeout(resolve, 100));\n await server.close();\n },\n buildOptions,\n buildEnhancers: ['waku/adapters/cloudflare-build-enhancer'],\n defaultExport: {\n ...options?.handlers,\n fetch(req: Request, env: Record<string, string>) {\n setAllEnv(env);\n return fetchFn(req);\n },\n },\n };\n },\n);\n"],"names":["bodyLimit","Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_startPreviewServer","startPreviewServer","unstable_constants","constants","unstable_consumeMultiplexedStream","consumeMultiplexedStream","unstable_honoMiddleware","honoMiddleware","unstable_produceMultiplexedStream","produceMultiplexedStream","DIST_PUBLIC","rscMiddleware","middlewareRunner","DEFAULT_BODY_LIMIT_MAX_SIZE","DO_NOT_BUNDLE","PRUNABLE_KEY_PREFIX","emptyStream","ReadableStream","start","controller","close","isProductionWorker","req","headers","get","removeGzipEncoding","res","contentType","includes","Headers","set","Response","body","status","statusText","processRequest","processBuild","setAllEnv","config","notFoundHtml","options","bodyLimitOptions","middlewareFns","middlewareModules","internalPathToBuildStaticFiles","app","notFound","c","html","text","use","maxSize","middlewareFn","buildOptions","srcDir","distDir","serverless","static","buildBody","emitFile","unstable_registerPrunableFile","srcPath","fetchFn","URL","url","pathname","cloudflareContext","env","waitUntil","passThroughOnException","fetch","props","undefined","PROD","then","build","utils","server","middlewares","_req","next","Readable","fromWeb","pipe","err","response","baseUrl","connection","key","stream","startsWith","slice","length","Promise","resolve","setTimeout","buildEnhancers","defaultExport","handlers"],"mappings":"AACA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,IAAI,QAAQ,YAAY;AACjC,SACEC,qCAAqCC,wBAAwB,EAC7DC,+BAA+BC,kBAAkB,QAC5C,wBAAwB;AAC/B,SACEC,sBAAsBC,SAAS,EAC/BC,qCAAqCC,wBAAwB,EAC7DC,2BAA2BC,cAAc,EACzCC,qCAAqCC,wBAAwB,QACxD,iBAAiB;AAGxB,MAAM,EAAEC,WAAW,EAAE,GAAGP;AACxB,MAAM,EAAEQ,aAAa,EAAEC,gBAAgB,EAAE,GAAGL;AAE5C,MAAMM,8BAA8B,MAAM,OAAO;AAEjD,MAAMC,gBAAgB;AAEtB,MAAMC,sBAAsB;AAE5B,MAAMC,cAAc,IAClB,IAAIC,eAA2B;QAC7BC,OAAMC,UAAU;YACdA,WAAWC,KAAK;QAClB;IACF;AAEF,SAASC,mBAAmBC,GAAY;IACtC,qEAAqE;IACrE,OAAO,CAAC,CAACA,IAAIC,OAAO,CAACC,GAAG,CAAC;AAC3B;AAEA,SAASC,mBAAmBC,GAAa;IACvC,MAAMC,cAAcD,IAAIH,OAAO,CAACC,GAAG,CAAC;IACpC,IACE,CAACG,eACDA,YAAYC,QAAQ,CAAC,gBACrBD,YAAYC,QAAQ,CAAC,eACrB;QACA,MAAML,UAAU,IAAIM,QAAQH,IAAIH,OAAO;QACvCA,QAAQO,GAAG,CAAC,oBAAoB;QAChC,OAAO,IAAIC,SAASL,IAAIM,IAAI,EAAE;YAC5BC,QAAQP,IAAIO,MAAM;YAClBC,YAAYR,IAAIQ,UAAU;YAC1BX;QACF;IACF;IACA,OAAOG;AACT;AAEA,eAAe3B,yBACb,CACE,EAAEoC,cAAc,EAAEC,YAAY,EAAEC,SAAS,EAAEC,MAAM,EAAEC,YAAY,EAAE,EACjEC;IAUA,MAAM,EACJ5C,WAAW6C,gBAAgB,EAC3BC,gBAAgB,EAAE,EAClBC,oBAAoB,CAAC,CAAC,EACtBC,iCAAiC,oCAAoC,EACtE,GAAGJ,WAAW,CAAC;IAChB,MAAMK,MAAM,IAAIhD;IAChBgD,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIR,cAAc;YAChB,OAAOQ,EAAEC,IAAI,CAACT,cAAc;QAC9B;QACA,OAAOQ,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIR,qBAAqB,OAAO;QAC9BI,IAAIK,GAAG,CACLtD,UAAU6C,oBAAoB;YAAEU,SAAStC;QAA4B;IAEzE;IACA,KAAK,MAAMuC,gBAAgBV,cAAe;QACxCG,IAAIK,GAAG,CAACE,aAAa;YAAEP;QAAI;IAC7B;IACAA,IAAIK,GAAG,CAACtC,iBAAiB+B,mBAA4B;QAAEE;IAAI;IAC3DA,IAAIK,GAAG,CAACvC,cAAc;QAAEwB;IAAe;IACvC,MAAMkB,eAA6B;QACjCC,QAAQhB,OAAOgB,MAAM;QACrBC,SAASjB,OAAOiB,OAAO;QACvB7C;QACA8C,YAAY,CAAChB,SAASiB;IACxB;IAEA,MAAMC,YAAY,IAChBjD,yBAAyB,OAAOkD;YAC9B,MAAMvB,aAAa;gBACjBuB;gBACAC,+BAA+B,CAACC,UAC9BF,SAAS5C,sBAAsB8C,SAAS7C;YAC5C;QACF;IAEF,MAAM8C,UAAU,OAAOxC;QACrB,IACE,IAAIyC,IAAIzC,IAAI0C,GAAG,EAAEC,QAAQ,KAAK,CAAC,CAAC,EAAErB,gCAAgC,IAClE,CAACvB,mBAAmBC,MACpB;YACA,OAAO,IAAIS,SAAS2B;QACtB;QACA,IAAIQ;QACJ,IAAI;YACFA,oBAAoB,MAAM,MAAM,CAC9B,gBAAgB,GAAGpD,gBAAgB;QAEvC,EAAE,OAAM;QACN,kCAAkC;QACpC;QACA,IAAIY;QACJ,IAAIwC,mBAAmB;YACrB,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAEC,sBAAsB,EAAE,GAAGH;YACnDxC,MAAMmB,IAAIyB,KAAK,CAAChD,KAAK6C,KAAK;gBACxBC;gBACAC;gBACAE,OAAOC;YACT;QACF,OAAO;YACL9C,MAAMmB,IAAIyB,KAAK,CAAChD;QAClB;QACA,mEAAmE;QACnE,IAAI,YAAY6C,GAAG,EAAEM,QAAQ,CAACpD,mBAAmBC,MAAM;YACrD,IAAI,UAAUI,KAAK;gBACjBA,MAAMA,IAAIgD,IAAI,CAAC,CAAChD,MAAQD,mBAAmBC;YAC7C,OAAO;gBACLA,MAAMD,mBAAmBC;YAC3B;QACF;QACA,OAAOA;IACT;IAEA,OAAO;QACL4C,OAAOR;QACPa,OAAO,OAAOC;YACZ,MAAMC,SAAS,MAAM5E;YACrB,mEAAmE;YACnE4E,OAAOC,WAAW,CAAC5B,GAAG,CAAC,OAAO6B,MAAMrD,KAAKsD;gBACvC,IAAI;oBACF,MAAM,EAAEC,QAAQ,EAAE,GAAG,MAAM,MAAM,CAC/B,gBAAgB,GAAGnE,gBAAgB;oBAErCmE,SAASC,OAAO,CAACxB,aAAsByB,IAAI,CAACzD;gBAC9C,EAAE,OAAO0D,KAAK;oBACZJ,KAAKI;gBACP;YACF;YACA,MAAMC,WAAW,MAAMf,MACrBO,OAAOS,OAAO,GAAG1C,gCACjB;gBAAErB,SAAS;oBAAEgE,YAAY;gBAAQ;YAAE;YAErC,MAAMlF,yBAAyBgF,SAASrD,IAAI,EAAG,OAAOwD,KAAKC;gBACzD,IAAID,IAAIE,UAAU,CAAC3E,sBAAsB;oBACvC6D,MAAMhB,6BAA6B,CACjC4B,IAAIG,KAAK,CAAC5E,oBAAoB6E,MAAM;oBAEtC;gBACF;gBACA,MAAMhB,MAAMjB,QAAQ,CAAC6B,KAAKC;YAC5B;YACA,8CAA8C;YAC9C,MAAM,IAAII,QAAQ,CAACC,UAAYC,WAAWD,SAAS;YACnD,MAAMjB,OAAOzD,KAAK;QACpB;QACAiC;QACA2C,gBAAgB;YAAC;SAA0C;QAC3DC,eAAe;YACb,GAAGzD,SAAS0D,QAAQ;YACpB5B,OAAMhD,GAAY,EAAE6C,GAA2B;gBAC7C9B,UAAU8B;gBACV,OAAOL,QAAQxC;YACjB;QACF;IACF;AACF,GACA"}
|
|
@@ -8,7 +8,10 @@ declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers,
|
|
|
8
8
|
static?: boolean;
|
|
9
9
|
handlers?: Record<string, unknown>;
|
|
10
10
|
assetsDir?: string;
|
|
11
|
-
|
|
11
|
+
bodyLimit?: Parameters<typeof import("hono/body-limit").bodyLimit>[0] | false;
|
|
12
|
+
middlewareFns?: ((opts: {
|
|
13
|
+
app: import("hono/tiny").Hono;
|
|
14
|
+
}) => import("hono").MiddlewareHandler)[];
|
|
12
15
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
13
16
|
internalPathToBuildStaticFiles?: string;
|
|
14
17
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
package/dist/adapters/deno.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
3
|
+
import { Hono as HonoForDevAndBuild } from 'hono/tiny';
|
|
2
4
|
declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers, options?: {
|
|
3
|
-
|
|
5
|
+
bodyLimit?: Parameters<typeof bodyLimit>[0] | false;
|
|
6
|
+
middlewareFns?: ((opts: {
|
|
7
|
+
app: HonoForDevAndBuild;
|
|
8
|
+
}) => MiddlewareHandler)[];
|
|
4
9
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
5
10
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
|
6
11
|
export default _default;
|
package/dist/adapters/deno.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
2
3
|
// FIXME hopefully we should avoid bundling this
|
|
3
4
|
import { Hono as HonoForDevAndBuild } from 'hono/tiny';
|
|
4
5
|
import { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';
|
|
5
6
|
import { unstable_constants as constants, unstable_honoMiddleware as honoMiddleware } from 'waku/internals';
|
|
6
7
|
const { DIST_PUBLIC } = constants;
|
|
7
|
-
const {
|
|
8
|
+
const { rscMiddleware, middlewareRunner } = honoMiddleware;
|
|
9
|
+
const DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;
|
|
8
10
|
export default createServerEntryAdapter(({ processRequest, processBuild, config, notFoundHtml }, options)=>{
|
|
9
|
-
const { middlewareFns = [], middlewareModules = {} } = options || {};
|
|
11
|
+
const { bodyLimit: bodyLimitOptions, middlewareFns = [], middlewareModules = {} } = options || {};
|
|
10
12
|
const { __WAKU_DENO_ADAPTER_HONO__: Hono = HonoForDevAndBuild, __WAKU_DENO_ADAPTER_SERVE_STATIC__: serveStatic } = globalThis;
|
|
11
13
|
const app = new Hono();
|
|
12
14
|
app.notFound((c)=>{
|
|
@@ -20,11 +22,19 @@ export default createServerEntryAdapter(({ processRequest, processBuild, config,
|
|
|
20
22
|
root: path.join(config.distDir, DIST_PUBLIC)
|
|
21
23
|
}));
|
|
22
24
|
}
|
|
23
|
-
|
|
25
|
+
if (bodyLimitOptions !== false) {
|
|
26
|
+
app.use(bodyLimit(bodyLimitOptions ?? {
|
|
27
|
+
maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
24
30
|
for (const middlewareFn of middlewareFns){
|
|
25
|
-
app.use(middlewareFn(
|
|
31
|
+
app.use(middlewareFn({
|
|
32
|
+
app
|
|
33
|
+
}));
|
|
26
34
|
}
|
|
27
|
-
app.use(middlewareRunner(middlewareModules
|
|
35
|
+
app.use(middlewareRunner(middlewareModules, {
|
|
36
|
+
app
|
|
37
|
+
}));
|
|
28
38
|
app.use(rscMiddleware({
|
|
29
39
|
processRequest
|
|
30
40
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/deno.ts"],"sourcesContent":["import path from 'node:path';\nimport type { MiddlewareHandler } from 'hono';\n// FIXME hopefully we should avoid bundling this\nimport { Hono as HonoForDevAndBuild } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './deno-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst {
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/deno.ts"],"sourcesContent":["import path from 'node:path';\nimport type { MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\n// FIXME hopefully we should avoid bundling this\nimport { Hono as HonoForDevAndBuild } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './deno-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst { rscMiddleware, middlewareRunner } = honoMiddleware;\n\nconst DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, notFoundHtml },\n options?: {\n bodyLimit?: Parameters<typeof bodyLimit>[0] | false;\n middlewareFns?: ((opts: {\n app: HonoForDevAndBuild;\n }) => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const {\n bodyLimit: bodyLimitOptions,\n middlewareFns = [],\n middlewareModules = {},\n } = options || {};\n const {\n __WAKU_DENO_ADAPTER_HONO__: Hono = HonoForDevAndBuild,\n __WAKU_DENO_ADAPTER_SERVE_STATIC__: serveStatic,\n } = globalThis as any;\n const app = new Hono();\n app.notFound((c: any) => {\n if (notFoundHtml) {\n return c.html(notFoundHtml, 404);\n }\n return c.text('404 Not Found', 404);\n });\n if (serveStatic) {\n app.use(serveStatic({ root: path.join(config.distDir, DIST_PUBLIC) }));\n }\n if (bodyLimitOptions !== false) {\n app.use(\n bodyLimit(bodyLimitOptions ?? { maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE }),\n );\n }\n for (const middlewareFn of middlewareFns) {\n app.use(middlewareFn({ app }));\n }\n app.use(middlewareRunner(middlewareModules as never, { app }));\n app.use(rscMiddleware({ processRequest }));\n const buildOptions: BuildOptions = {\n distDir: config.distDir,\n };\n return {\n fetch: app.fetch,\n build: processBuild,\n buildOptions,\n buildEnhancers: ['waku/adapters/deno-build-enhancer'],\n };\n },\n);\n"],"names":["path","bodyLimit","Hono","HonoForDevAndBuild","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","rscMiddleware","middlewareRunner","DEFAULT_BODY_LIMIT_MAX_SIZE","processRequest","processBuild","config","notFoundHtml","options","bodyLimitOptions","middlewareFns","middlewareModules","__WAKU_DENO_ADAPTER_HONO__","__WAKU_DENO_ADAPTER_SERVE_STATIC__","serveStatic","globalThis","app","notFound","c","html","text","use","root","join","distDir","maxSize","middlewareFn","buildOptions","fetch","build","buildEnhancers"],"mappings":"AAAA,OAAOA,UAAU,YAAY;AAE7B,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,gDAAgD;AAChD,SAASC,QAAQC,kBAAkB,QAAQ,YAAY;AACvD,SAASC,qCAAqCC,wBAAwB,QAAQ,wBAAwB;AACtG,SACEC,sBAAsBC,SAAS,EAC/BC,2BAA2BC,cAAc,QACpC,iBAAiB;AAGxB,MAAM,EAAEC,WAAW,EAAE,GAAGH;AACxB,MAAM,EAAEI,aAAa,EAAEC,gBAAgB,EAAE,GAAGH;AAE5C,MAAMI,8BAA8B,MAAM,OAAO;AAEjD,eAAeR,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,YAAY,EAAE,EACtDC;IAQA,MAAM,EACJjB,WAAWkB,gBAAgB,EAC3BC,gBAAgB,EAAE,EAClBC,oBAAoB,CAAC,CAAC,EACvB,GAAGH,WAAW,CAAC;IAChB,MAAM,EACJI,4BAA4BpB,OAAOC,kBAAkB,EACrDoB,oCAAoCC,WAAW,EAChD,GAAGC;IACJ,MAAMC,MAAM,IAAIxB;IAChBwB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIX,cAAc;YAChB,OAAOW,EAAEC,IAAI,CAACZ,cAAc;QAC9B;QACA,OAAOW,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIN,aAAa;QACfE,IAAIK,GAAG,CAACP,YAAY;YAAEQ,MAAMhC,KAAKiC,IAAI,CAACjB,OAAOkB,OAAO,EAAExB;QAAa;IACrE;IACA,IAAIS,qBAAqB,OAAO;QAC9BO,IAAIK,GAAG,CACL9B,UAAUkB,oBAAoB;YAAEgB,SAAStB;QAA4B;IAEzE;IACA,KAAK,MAAMuB,gBAAgBhB,cAAe;QACxCM,IAAIK,GAAG,CAACK,aAAa;YAAEV;QAAI;IAC7B;IACAA,IAAIK,GAAG,CAACnB,iBAAiBS,mBAA4B;QAAEK;IAAI;IAC3DA,IAAIK,GAAG,CAACpB,cAAc;QAAEG;IAAe;IACvC,MAAMuB,eAA6B;QACjCH,SAASlB,OAAOkB,OAAO;IACzB;IACA,OAAO;QACLI,OAAOZ,IAAIY,KAAK;QAChBC,OAAOxB;QACPsB;QACAG,gBAAgB;YAAC;SAAoC;IACvD;AACF,GACA"}
|
package/dist/adapters/edge.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
3
|
+
import { Hono } from 'hono/tiny';
|
|
2
4
|
import type { ImportGlobFunction } from 'vite/types/importGlob.d.ts';
|
|
3
5
|
declare global {
|
|
4
6
|
interface ImportMeta {
|
|
@@ -6,7 +8,10 @@ declare global {
|
|
|
6
8
|
}
|
|
7
9
|
}
|
|
8
10
|
declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers, options?: {
|
|
9
|
-
|
|
11
|
+
bodyLimit?: Parameters<typeof bodyLimit>[0] | false;
|
|
12
|
+
middlewareFns?: ((opts: {
|
|
13
|
+
app: Hono;
|
|
14
|
+
}) => MiddlewareHandler)[];
|
|
10
15
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
11
16
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
|
12
17
|
export default _default;
|
package/dist/adapters/edge.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
1
2
|
import { Hono } from 'hono/tiny';
|
|
2
3
|
import { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';
|
|
3
4
|
import { unstable_honoMiddleware as honoMiddleware } from 'waku/internals';
|
|
4
|
-
const {
|
|
5
|
+
const { rscMiddleware, middlewareRunner } = honoMiddleware;
|
|
6
|
+
const DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;
|
|
5
7
|
export default createServerEntryAdapter(({ processRequest, processBuild, notFoundHtml }, options)=>{
|
|
6
|
-
const { middlewareFns = [], middlewareModules = {} } = options || {};
|
|
8
|
+
const { bodyLimit: bodyLimitOptions, middlewareFns = [], middlewareModules = {} } = options || {};
|
|
7
9
|
const app = new Hono();
|
|
8
10
|
app.notFound((c)=>{
|
|
9
11
|
if (notFoundHtml) {
|
|
@@ -11,11 +13,19 @@ export default createServerEntryAdapter(({ processRequest, processBuild, notFoun
|
|
|
11
13
|
}
|
|
12
14
|
return c.text('404 Not Found', 404);
|
|
13
15
|
});
|
|
14
|
-
|
|
16
|
+
if (bodyLimitOptions !== false) {
|
|
17
|
+
app.use(bodyLimit(bodyLimitOptions ?? {
|
|
18
|
+
maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
15
21
|
for (const middlewareFn of middlewareFns){
|
|
16
|
-
app.use(middlewareFn(
|
|
22
|
+
app.use(middlewareFn({
|
|
23
|
+
app
|
|
24
|
+
}));
|
|
17
25
|
}
|
|
18
|
-
app.use(middlewareRunner(middlewareModules
|
|
26
|
+
app.use(middlewareRunner(middlewareModules, {
|
|
27
|
+
app
|
|
28
|
+
}));
|
|
19
29
|
app.use(rscMiddleware({
|
|
20
30
|
processRequest
|
|
21
31
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/edge.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono';\nimport { Hono } from 'hono/tiny';\nimport type { ImportGlobFunction } from 'vite/types/importGlob.d.ts';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport { unstable_honoMiddleware as honoMiddleware } from 'waku/internals';\n\ndeclare global {\n interface ImportMeta {\n glob: ImportGlobFunction;\n }\n}\n\nconst {
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/edge.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { Hono } from 'hono/tiny';\nimport type { ImportGlobFunction } from 'vite/types/importGlob.d.ts';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport { unstable_honoMiddleware as honoMiddleware } from 'waku/internals';\n\ndeclare global {\n interface ImportMeta {\n glob: ImportGlobFunction;\n }\n}\n\nconst { rscMiddleware, middlewareRunner } = honoMiddleware;\n\nconst DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, notFoundHtml },\n options?: {\n bodyLimit?: Parameters<typeof bodyLimit>[0] | false;\n middlewareFns?: ((opts: { app: Hono }) => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const {\n bodyLimit: bodyLimitOptions,\n middlewareFns = [],\n middlewareModules = {},\n } = options || {};\n const app = new Hono();\n app.notFound((c) => {\n if (notFoundHtml) {\n return c.html(notFoundHtml, 404);\n }\n return c.text('404 Not Found', 404);\n });\n if (bodyLimitOptions !== false) {\n app.use(\n bodyLimit(bodyLimitOptions ?? { maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE }),\n );\n }\n for (const middlewareFn of middlewareFns) {\n app.use(middlewareFn({ app }));\n }\n app.use(middlewareRunner(middlewareModules as never, { app }));\n app.use(rscMiddleware({ processRequest }));\n return {\n fetch: app.fetch,\n build: processBuild,\n };\n },\n);\n"],"names":["bodyLimit","Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_honoMiddleware","honoMiddleware","rscMiddleware","middlewareRunner","DEFAULT_BODY_LIMIT_MAX_SIZE","processRequest","processBuild","notFoundHtml","options","bodyLimitOptions","middlewareFns","middlewareModules","app","notFound","c","html","text","use","maxSize","middlewareFn","fetch","build"],"mappings":"AACA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,IAAI,QAAQ,YAAY;AAEjC,SAASC,qCAAqCC,wBAAwB,QAAQ,wBAAwB;AACtG,SAASC,2BAA2BC,cAAc,QAAQ,iBAAiB;AAQ3E,MAAM,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGF;AAE5C,MAAMG,8BAA8B,MAAM,OAAO;AAEjD,eAAeL,yBACb,CACE,EAAEM,cAAc,EAAEC,YAAY,EAAEC,YAAY,EAAE,EAC9CC;IAMA,MAAM,EACJZ,WAAWa,gBAAgB,EAC3BC,gBAAgB,EAAE,EAClBC,oBAAoB,CAAC,CAAC,EACvB,GAAGH,WAAW,CAAC;IAChB,MAAMI,MAAM,IAAIf;IAChBe,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIP,cAAc;YAChB,OAAOO,EAAEC,IAAI,CAACR,cAAc;QAC9B;QACA,OAAOO,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIP,qBAAqB,OAAO;QAC9BG,IAAIK,GAAG,CACLrB,UAAUa,oBAAoB;YAAES,SAASd;QAA4B;IAEzE;IACA,KAAK,MAAMe,gBAAgBT,cAAe;QACxCE,IAAIK,GAAG,CAACE,aAAa;YAAEP;QAAI;IAC7B;IACAA,IAAIK,GAAG,CAACd,iBAAiBQ,mBAA4B;QAAEC;IAAI;IAC3DA,IAAIK,GAAG,CAACf,cAAc;QAAEG;IAAe;IACvC,OAAO;QACLe,OAAOR,IAAIQ,KAAK;QAChBC,OAAOf;IACT;AACF,GACA"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
3
|
+
import { Hono } from 'hono/tiny';
|
|
2
4
|
declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers, options?: {
|
|
3
5
|
static?: boolean;
|
|
4
|
-
|
|
6
|
+
bodyLimit?: Parameters<typeof bodyLimit>[0] | false;
|
|
7
|
+
middlewareFns?: ((opts: {
|
|
8
|
+
app: Hono;
|
|
9
|
+
}) => MiddlewareHandler)[];
|
|
5
10
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
6
11
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
|
7
12
|
export default _default;
|
package/dist/adapters/netlify.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
1
2
|
import { Hono } from 'hono/tiny';
|
|
2
3
|
import { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';
|
|
3
4
|
import { unstable_constants as constants, unstable_honoMiddleware as honoMiddleware } from 'waku/internals';
|
|
4
5
|
const { DIST_PUBLIC } = constants;
|
|
5
|
-
const {
|
|
6
|
+
const { rscMiddleware, middlewareRunner } = honoMiddleware;
|
|
7
|
+
const DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;
|
|
6
8
|
export default createServerEntryAdapter(({ processRequest, processBuild, config, notFoundHtml }, options)=>{
|
|
7
|
-
const { middlewareFns = [], middlewareModules = {} } = options || {};
|
|
9
|
+
const { bodyLimit: bodyLimitOptions, middlewareFns = [], middlewareModules = {} } = options || {};
|
|
8
10
|
const app = new Hono();
|
|
9
11
|
app.notFound((c)=>{
|
|
10
12
|
if (notFoundHtml) {
|
|
@@ -12,11 +14,19 @@ export default createServerEntryAdapter(({ processRequest, processBuild, config,
|
|
|
12
14
|
}
|
|
13
15
|
return c.text('404 Not Found', 404);
|
|
14
16
|
});
|
|
15
|
-
|
|
17
|
+
if (bodyLimitOptions !== false) {
|
|
18
|
+
app.use(bodyLimit(bodyLimitOptions ?? {
|
|
19
|
+
maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
16
22
|
for (const middlewareFn of middlewareFns){
|
|
17
|
-
app.use(middlewareFn(
|
|
23
|
+
app.use(middlewareFn({
|
|
24
|
+
app
|
|
25
|
+
}));
|
|
18
26
|
}
|
|
19
|
-
app.use(middlewareRunner(middlewareModules
|
|
27
|
+
app.use(middlewareRunner(middlewareModules, {
|
|
28
|
+
app
|
|
29
|
+
}));
|
|
20
30
|
app.use(rscMiddleware({
|
|
21
31
|
processRequest
|
|
22
32
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/netlify.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono';\nimport { Hono } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './netlify-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst {
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/netlify.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { Hono } from 'hono/tiny';\nimport { unstable_createServerEntryAdapter as createServerEntryAdapter } from 'waku/adapter-builders';\nimport {\n unstable_constants as constants,\n unstable_honoMiddleware as honoMiddleware,\n} from 'waku/internals';\nimport type { BuildOptions } from './netlify-build-enhancer.js';\n\nconst { DIST_PUBLIC } = constants;\nconst { rscMiddleware, middlewareRunner } = honoMiddleware;\n\nconst DEFAULT_BODY_LIMIT_MAX_SIZE = 100 * 1024 * 1024;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, notFoundHtml },\n options?: {\n static?: boolean;\n bodyLimit?: Parameters<typeof bodyLimit>[0] | false;\n middlewareFns?: ((opts: { app: Hono }) => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const {\n bodyLimit: bodyLimitOptions,\n middlewareFns = [],\n middlewareModules = {},\n } = options || {};\n const app = new Hono();\n app.notFound((c) => {\n if (notFoundHtml) {\n return c.html(notFoundHtml, 404);\n }\n return c.text('404 Not Found', 404);\n });\n if (bodyLimitOptions !== false) {\n app.use(\n bodyLimit(bodyLimitOptions ?? { maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE }),\n );\n }\n for (const middlewareFn of middlewareFns) {\n app.use(middlewareFn({ app }));\n }\n app.use(middlewareRunner(middlewareModules as never, { app }));\n app.use(rscMiddleware({ processRequest }));\n const buildOptions: BuildOptions = {\n distDir: config.distDir,\n privateDir: config.privateDir,\n rscBase: config.rscBase,\n DIST_PUBLIC,\n serverless: !options?.static,\n };\n return {\n fetch: app.fetch,\n build: processBuild,\n buildOptions,\n buildEnhancers: ['waku/adapters/netlify-build-enhancer'],\n };\n },\n);\n"],"names":["bodyLimit","Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","rscMiddleware","middlewareRunner","DEFAULT_BODY_LIMIT_MAX_SIZE","processRequest","processBuild","config","notFoundHtml","options","bodyLimitOptions","middlewareFns","middlewareModules","app","notFound","c","html","text","use","maxSize","middlewareFn","buildOptions","distDir","privateDir","rscBase","serverless","static","fetch","build","buildEnhancers"],"mappings":"AACA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,qCAAqCC,wBAAwB,QAAQ,wBAAwB;AACtG,SACEC,sBAAsBC,SAAS,EAC/BC,2BAA2BC,cAAc,QACpC,iBAAiB;AAGxB,MAAM,EAAEC,WAAW,EAAE,GAAGH;AACxB,MAAM,EAAEI,aAAa,EAAEC,gBAAgB,EAAE,GAAGH;AAE5C,MAAMI,8BAA8B,MAAM,OAAO;AAEjD,eAAeR,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,YAAY,EAAE,EACtDC;IAOA,MAAM,EACJhB,WAAWiB,gBAAgB,EAC3BC,gBAAgB,EAAE,EAClBC,oBAAoB,CAAC,CAAC,EACvB,GAAGH,WAAW,CAAC;IAChB,MAAMI,MAAM,IAAInB;IAChBmB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIP,cAAc;YAChB,OAAOO,EAAEC,IAAI,CAACR,cAAc;QAC9B;QACA,OAAOO,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIP,qBAAqB,OAAO;QAC9BG,IAAIK,GAAG,CACLzB,UAAUiB,oBAAoB;YAAES,SAASf;QAA4B;IAEzE;IACA,KAAK,MAAMgB,gBAAgBT,cAAe;QACxCE,IAAIK,GAAG,CAACE,aAAa;YAAEP;QAAI;IAC7B;IACAA,IAAIK,GAAG,CAACf,iBAAiBS,mBAA4B;QAAEC;IAAI;IAC3DA,IAAIK,GAAG,CAAChB,cAAc;QAAEG;IAAe;IACvC,MAAMgB,eAA6B;QACjCC,SAASf,OAAOe,OAAO;QACvBC,YAAYhB,OAAOgB,UAAU;QAC7BC,SAASjB,OAAOiB,OAAO;QACvBvB;QACAwB,YAAY,CAAChB,SAASiB;IACxB;IACA,OAAO;QACLC,OAAOd,IAAIc,KAAK;QAChBC,OAAOtB;QACPe;QACAQ,gBAAgB;YAAC;SAAuC;IAC1D;AACF,GACA"}
|
package/dist/adapters/node.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
3
|
+
import { Hono } from 'hono/tiny';
|
|
2
4
|
declare const _default: (handlers: import("../lib/types.js").Unstable_Handlers, options?: {
|
|
3
|
-
|
|
5
|
+
bodyLimit?: Parameters<typeof bodyLimit>[0] | false;
|
|
6
|
+
middlewareFns?: ((opts: {
|
|
7
|
+
app: Hono;
|
|
8
|
+
}) => MiddlewareHandler)[];
|
|
4
9
|
middlewareModules?: Record<string, () => Promise<unknown>>;
|
|
5
10
|
} | undefined) => import("../lib/types.js").Unstable_ServerEntry;
|
|
6
11
|
export default _default;
|