waku 1.0.0-beta.1 → 1.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +20 -0
  2. package/dist/adapters/aws-lambda.d.ts +6 -1
  3. package/dist/adapters/aws-lambda.js +15 -5
  4. package/dist/adapters/aws-lambda.js.map +1 -1
  5. package/dist/adapters/bun.d.ts +6 -1
  6. package/dist/adapters/bun.js +15 -5
  7. package/dist/adapters/bun.js.map +1 -1
  8. package/dist/adapters/cloudflare.d.ts +6 -1
  9. package/dist/adapters/cloudflare.js +23 -9
  10. package/dist/adapters/cloudflare.js.map +1 -1
  11. package/dist/adapters/default.d.ts +4 -1
  12. package/dist/adapters/deno.d.ts +6 -1
  13. package/dist/adapters/deno.js +15 -5
  14. package/dist/adapters/deno.js.map +1 -1
  15. package/dist/adapters/edge.d.ts +6 -1
  16. package/dist/adapters/edge.js +15 -5
  17. package/dist/adapters/edge.js.map +1 -1
  18. package/dist/adapters/netlify.d.ts +6 -1
  19. package/dist/adapters/netlify.js +15 -5
  20. package/dist/adapters/netlify.js.map +1 -1
  21. package/dist/adapters/node.d.ts +6 -1
  22. package/dist/adapters/node.js +15 -5
  23. package/dist/adapters/node.js.map +1 -1
  24. package/dist/adapters/vercel.d.ts +6 -1
  25. package/dist/adapters/vercel.js +16 -6
  26. package/dist/adapters/vercel.js.map +1 -1
  27. package/dist/lib/env.d.ts +5 -0
  28. package/dist/lib/env.js +18 -0
  29. package/dist/lib/env.js.map +1 -0
  30. package/dist/lib/global-types.d.ts +14 -0
  31. package/dist/lib/hono/middleware.d.ts +7 -3
  32. package/dist/lib/hono/middleware.js +2 -9
  33. package/dist/lib/hono/middleware.js.map +1 -1
  34. package/dist/lib/types.d.ts +1 -2
  35. package/dist/lib/types.js.map +1 -1
  36. package/dist/lib/utils/base64-node.d.ts +2 -0
  37. package/dist/lib/utils/base64-node.js +4 -0
  38. package/dist/lib/utils/base64-node.js.map +1 -0
  39. package/dist/lib/utils/base64-web.d.ts +2 -0
  40. package/dist/lib/utils/base64-web.js +11 -0
  41. package/dist/lib/utils/base64-web.js.map +1 -0
  42. package/dist/lib/utils/custom-errors.js.map +1 -1
  43. package/dist/lib/utils/initial-rsc.d.ts +7 -0
  44. package/dist/lib/utils/initial-rsc.js +37 -0
  45. package/dist/lib/utils/initial-rsc.js.map +1 -0
  46. package/dist/lib/utils/log.d.ts +1 -0
  47. package/dist/lib/utils/log.js +9 -0
  48. package/dist/lib/utils/log.js.map +1 -0
  49. package/dist/lib/utils/path.js +33 -55
  50. package/dist/lib/utils/path.js.map +1 -1
  51. package/dist/lib/utils/prefetch-cache.d.ts +20 -0
  52. package/dist/lib/utils/prefetch-cache.js +50 -0
  53. package/dist/lib/utils/prefetch-cache.js.map +1 -0
  54. package/dist/lib/utils/react-debug-channel.js +1 -8
  55. package/dist/lib/utils/react-debug-channel.js.map +1 -1
  56. package/dist/lib/utils/render.js +2 -1
  57. package/dist/lib/utils/render.js.map +1 -1
  58. package/dist/lib/utils/request.js +1 -0
  59. package/dist/lib/utils/request.js.map +1 -1
  60. package/dist/lib/utils/rsc-path.js +1 -3
  61. package/dist/lib/utils/rsc-path.js.map +1 -1
  62. package/dist/lib/utils/ssr.d.ts +0 -1
  63. package/dist/lib/utils/ssr.js +2 -2
  64. package/dist/lib/utils/ssr.js.map +1 -1
  65. package/dist/lib/utils/stream.d.ts +0 -2
  66. package/dist/lib/utils/stream.js +0 -8
  67. package/dist/lib/utils/stream.js.map +1 -1
  68. package/dist/lib/vite-entries/entry.build.js +2 -2
  69. package/dist/lib/vite-entries/entry.build.js.map +1 -1
  70. package/dist/lib/vite-entries/entry.server.d.ts +1 -1
  71. package/dist/lib/vite-entries/entry.server.js +2 -2
  72. package/dist/lib/vite-entries/entry.server.js.map +1 -1
  73. package/dist/lib/vite-plugins/environments.js.map +1 -1
  74. package/dist/lib/vite-plugins/private-dir.js +2 -1
  75. package/dist/lib/vite-plugins/private-dir.js.map +1 -1
  76. package/dist/lib/vite-plugins/rsc-devtools.js +1 -2
  77. package/dist/lib/vite-plugins/rsc-devtools.js.map +1 -1
  78. package/dist/lib/vite-rsc/cmd-build.js +3 -2
  79. package/dist/lib/vite-rsc/cmd-build.js.map +1 -1
  80. package/dist/lib/vite-rsc/cmd-dev.js +3 -2
  81. package/dist/lib/vite-rsc/cmd-dev.js.map +1 -1
  82. package/dist/lib/vite-rsc/cmd-start.js +3 -2
  83. package/dist/lib/vite-rsc/cmd-start.js.map +1 -1
  84. package/dist/lib/vite-rsc/handler.js +14 -8
  85. package/dist/lib/vite-rsc/handler.js.map +1 -1
  86. package/dist/lib/vite-rsc/loader.d.ts +0 -1
  87. package/dist/lib/vite-rsc/loader.js +0 -7
  88. package/dist/lib/vite-rsc/loader.js.map +1 -1
  89. package/dist/lib/vite-rsc/ssr.js +2 -3
  90. package/dist/lib/vite-rsc/ssr.js.map +1 -1
  91. package/dist/minimal/client.d.ts +3 -3
  92. package/dist/minimal/client.js +70 -50
  93. package/dist/minimal/client.js.map +1 -1
  94. package/dist/router/client.d.ts +22 -8
  95. package/dist/router/client.js +104 -85
  96. package/dist/router/client.js.map +1 -1
  97. package/dist/router/common.d.ts +1 -0
  98. package/dist/router/common.js +1 -0
  99. package/dist/router/common.js.map +1 -1
  100. package/dist/router/create-pages.d.ts +53 -3
  101. package/dist/router/create-pages.js +86 -62
  102. package/dist/router/create-pages.js.map +1 -1
  103. package/dist/router/define-router.d.ts +21 -0
  104. package/dist/router/define-router.js +363 -326
  105. package/dist/router/define-router.js.map +1 -1
  106. package/dist/router/fs-router.d.ts +19 -0
  107. package/dist/router/fs-router.js +10 -5
  108. package/dist/router/fs-router.js.map +1 -1
  109. package/dist/router/server.d.ts +3 -2
  110. package/dist/router/server.js +1 -1
  111. package/dist/router/server.js.map +1 -1
  112. package/dist/server.d.ts +1 -7
  113. package/dist/server.js +1 -15
  114. package/dist/server.js.map +1 -1
  115. package/package.json +6 -3
  116. package/dist/lib/context.d.ts +0 -9
  117. package/dist/lib/context.js +0 -26
  118. package/dist/lib/context.js.map +0 -1
  119. package/dist/lib/utils/prefetch.d.ts +0 -23
  120. package/dist/lib/utils/prefetch.js +0 -49
  121. 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
- middlewareFns?: (() => MiddlewareHandler)[];
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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;
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
- app.use(contextMiddleware());
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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, isBuild, notFoundHtml },\n options?: {\n streaming?: boolean;\n middlewareFns?: (() => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const { middlewareFns = [], middlewareModules = {} } = 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 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 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","Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","contextMiddleware","rscMiddleware","middlewareRunner","processRequest","processBuild","config","isBuild","notFoundHtml","options","middlewareFns","middlewareModules","app","notFound","c","html","text","use","root","join","distDir","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,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,iBAAiB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGJ;AAE/D,eAAeJ,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,OAAO,EAAEC,YAAY,EAAE,EAC/DC;IAMA,MAAM,EAAEC,gBAAgB,EAAE,EAAEC,oBAAoB,CAAC,CAAC,EAAE,GAAGF,WAAW,CAAC;IACnE,MAAMG,MAAM,IAAInB;IAChBmB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIN,cAAc;YAChB,OAAOM,EAAEC,IAAI,CAACP,cAAc;QAC9B;QACA,OAAOM,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIT,SAAS;QACXK,IAAIK,GAAG,CAAC1B,YAAY;YAAE2B,MAAM5B,KAAK6B,IAAI,CAACb,OAAOc,OAAO,EAAEpB;QAAa;IACrE;IACAY,IAAIK,GAAG,CAAChB;IACR,KAAK,MAAMoB,gBAAgBX,cAAe;QACxCE,IAAIK,GAAG,CAACI;IACV;IACAT,IAAIK,GAAG,CAACd,iBAAiBQ;IACzBC,IAAIK,GAAG,CAACf,cAAc;QAAEE;IAAe;IACvC,MAAMkB,eAA6B;QACjCF,SAASd,OAAOc,OAAO;IACzB;IACCG,WAAmBC,0BAA0B,GAAGf,SAASgB,YACtDjC,cAAckC,YAAY,GAC1BlC,cAAcmC,MAAM;IACxB,OAAO;QACLC,OAAOhB,IAAIgB,KAAK;QAChBC,OAAOxB;QACPiB;QACAQ,gBAAgB;YAAC;SAA0C;IAC7D;AACF,GACA"}
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.__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;IACAI,WAAWC,0BAA0B,GAAGjB,SAASkB,YAC7CpC,cAAcqC,YAAY,GAC1BrC,cAAcsC,MAAM;IACxB,OAAO;QACLC,OAAOjB,IAAIiB,KAAK;QAChBC,OAAO1B;QACPmB;QACAQ,gBAAgB;YAAC;SAA0C;IAC7D;AACF,GACA"}
@@ -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
- middlewareFns?: (() => MiddlewareHandler)[];
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;
@@ -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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;
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
- app.use(contextMiddleware());
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/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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, isBuild, notFoundHtml },\n options?: {\n middlewareFns?: (() => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const { middlewareFns = [], middlewareModules = {} } = 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 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 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","serveStatic","Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","contextMiddleware","rscMiddleware","middlewareRunner","processRequest","processBuild","config","isBuild","notFoundHtml","options","middlewareFns","middlewareModules","app","notFound","c","html","text","use","basePath","root","join","distDir","rewriteRequestPath","slice","length","middlewareFn","buildOptions","fetch","build","buildEnhancers"],"mappings":"AAAA,OAAOA,UAAU,YAAY;AAE7B,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,iBAAiB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGJ;AAE/D,eAAeJ,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,OAAO,EAAEC,YAAY,EAAE,EAC/DC;IAKA,MAAM,EAAEC,gBAAgB,EAAE,EAAEC,oBAAoB,CAAC,CAAC,EAAE,GAAGF,WAAW,CAAC;IACnE,MAAMG,MAAM,IAAInB;IAChBmB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIN,cAAc;YAChB,OAAOM,EAAEC,IAAI,CAACP,cAAc;QAC9B;QACA,OAAOM,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIT,SAAS;QACXK,IAAIK,GAAG,CACL,GAAGX,OAAOY,QAAQ,CAAC,CAAC,CAAC,EACrB1B,YAAY;YACV2B,MAAM5B,KAAK6B,IAAI,CAACd,OAAOe,OAAO,EAAErB;YAChCsB,oBAAoB,CAAC/B,OAASA,KAAKgC,KAAK,CAACjB,OAAOY,QAAQ,CAACM,MAAM,GAAG;QACpE;IAEJ;IACAZ,IAAIK,GAAG,CAAChB;IACR,KAAK,MAAMwB,gBAAgBf,cAAe;QACxCE,IAAIK,GAAG,CAACQ;IACV;IACAb,IAAIK,GAAG,CAACd,iBAAiBQ;IACzBC,IAAIK,GAAG,CAACf,cAAc;QAAEE;IAAe;IACvC,MAAMsB,eAA6B;QACjCL,SAASf,OAAOe,OAAO;IACzB;IACA,OAAO;QACLM,OAAOf,IAAIe,KAAK;QAChBC,OAAOvB;QACPqB;QACAG,gBAAgB;YAAC;SAAmC;IACtD;AACF,GACA"}
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
- middlewareFns?: (() => MiddlewareHandler)[];
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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;
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,13 @@ const emptyStream = ()=>new ReadableStream({
10
12
  controller.close();
11
13
  }
12
14
  });
13
- function isWranglerDev(req) {
15
+ function isProductionWorker(req) {
14
16
  // This header seems to only be set for production cloudflare workers
15
- return !req.headers.get('cf-visitor');
17
+ return !!req.headers.get('cf-visitor');
18
+ }
19
+ function isLoopbackRequest(req) {
20
+ const { hostname } = new URL(req.url);
21
+ return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1' || hostname === '[::1]';
16
22
  }
17
23
  function removeGzipEncoding(res) {
18
24
  const contentType = res.headers.get('content-type');
@@ -28,7 +34,7 @@ function removeGzipEncoding(res) {
28
34
  return res;
29
35
  }
30
36
  export default createServerEntryAdapter(({ processRequest, processBuild, setAllEnv, config, notFoundHtml }, options)=>{
31
- const { middlewareFns = [], middlewareModules = {}, internalPathToBuildStaticFiles = '__waku_internal_build_static_files' } = options || {};
37
+ const { bodyLimit: bodyLimitOptions, middlewareFns = [], middlewareModules = {}, internalPathToBuildStaticFiles = '__waku_internal_build_static_files' } = options || {};
32
38
  const app = new Hono();
33
39
  app.notFound((c)=>{
34
40
  if (notFoundHtml) {
@@ -36,11 +42,19 @@ export default createServerEntryAdapter(({ processRequest, processBuild, setAllE
36
42
  }
37
43
  return c.text('404 Not Found', 404);
38
44
  });
39
- app.use(contextMiddleware());
45
+ if (bodyLimitOptions !== false) {
46
+ app.use(bodyLimit(bodyLimitOptions ?? {
47
+ maxSize: DEFAULT_BODY_LIMIT_MAX_SIZE
48
+ }));
49
+ }
40
50
  for (const middlewareFn of middlewareFns){
41
- app.use(middlewareFn());
51
+ app.use(middlewareFn({
52
+ app
53
+ }));
42
54
  }
43
- app.use(middlewareRunner(middlewareModules));
55
+ app.use(middlewareRunner(middlewareModules, {
56
+ app
57
+ }));
44
58
  app.use(rscMiddleware({
45
59
  processRequest
46
60
  }));
@@ -57,7 +71,7 @@ export default createServerEntryAdapter(({ processRequest, processBuild, setAllE
57
71
  });
58
72
  });
59
73
  const fetchFn = async (req)=>{
60
- if (new URL(req.url).pathname === `/${internalPathToBuildStaticFiles}`) {
74
+ if (new URL(req.url).pathname === `/${internalPathToBuildStaticFiles}` && isLoopbackRequest(req) && !isProductionWorker(req)) {
61
75
  return new Response(buildBody());
62
76
  }
63
77
  let cloudflareContext;
@@ -78,7 +92,7 @@ export default createServerEntryAdapter(({ processRequest, processBuild, setAllE
78
92
  res = app.fetch(req);
79
93
  }
80
94
  // Workaround https://github.com/cloudflare/workers-sdk/issues/6577
81
- if (import.meta.env?.PROD && isWranglerDev(req)) {
95
+ if (import.meta.env?.PROD && !isProductionWorker(req)) {
82
96
  if ('then' in res) {
83
97
  res = res.then((res)=>removeGzipEncoding(res));
84
98
  } 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 isLoopbackRequest(req: Request): boolean {\n const { hostname } = new URL(req.url);\n return (\n hostname === 'localhost' ||\n hostname === '127.0.0.1' ||\n hostname === '::1' ||\n hostname === '[::1]'\n );\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 isLoopbackRequest(req) &&\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, unknown>) {\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","isLoopbackRequest","hostname","URL","url","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","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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"}
@@ -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
- middlewareFns?: (() => import("hono").MiddlewareHandler)[];
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;
@@ -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
- middlewareFns?: (() => MiddlewareHandler)[];
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;
@@ -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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;
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
- app.use(contextMiddleware());
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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, notFoundHtml },\n options?: {\n middlewareFns?: (() => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const { middlewareFns = [], middlewareModules = {} } = 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 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 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","Hono","HonoForDevAndBuild","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","contextMiddleware","rscMiddleware","middlewareRunner","processRequest","processBuild","config","notFoundHtml","options","middlewareFns","middlewareModules","__WAKU_DENO_ADAPTER_HONO__","__WAKU_DENO_ADAPTER_SERVE_STATIC__","serveStatic","globalThis","app","notFound","c","html","text","use","root","join","distDir","middlewareFn","buildOptions","fetch","build","buildEnhancers"],"mappings":"AAAA,OAAOA,UAAU,YAAY;AAE7B,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,iBAAiB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGJ;AAE/D,eAAeJ,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,YAAY,EAAE,EACtDC;IAKA,MAAM,EAAEC,gBAAgB,EAAE,EAAEC,oBAAoB,CAAC,CAAC,EAAE,GAAGF,WAAW,CAAC;IACnE,MAAM,EACJG,4BAA4BnB,OAAOC,kBAAkB,EACrDmB,oCAAoCC,WAAW,EAChD,GAAGC;IACJ,MAAMC,MAAM,IAAIvB;IAChBuB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIV,cAAc;YAChB,OAAOU,EAAEC,IAAI,CAACX,cAAc;QAC9B;QACA,OAAOU,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAIN,aAAa;QACfE,IAAIK,GAAG,CAACP,YAAY;YAAEQ,MAAM9B,KAAK+B,IAAI,CAAChB,OAAOiB,OAAO,EAAEvB;QAAa;IACrE;IACAe,IAAIK,GAAG,CAACnB;IACR,KAAK,MAAMuB,gBAAgBf,cAAe;QACxCM,IAAIK,GAAG,CAACI;IACV;IACAT,IAAIK,GAAG,CAACjB,iBAAiBO;IACzBK,IAAIK,GAAG,CAAClB,cAAc;QAAEE;IAAe;IACvC,MAAMqB,eAA6B;QACjCF,SAASjB,OAAOiB,OAAO;IACzB;IACA,OAAO;QACLG,OAAOX,IAAIW,KAAK;QAChBC,OAAOtB;QACPoB;QACAG,gBAAgB;YAAC;SAAoC;IACvD;AACF,GACA"}
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;\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 (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"}
@@ -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
- middlewareFns?: (() => MiddlewareHandler)[];
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;
@@ -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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;
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
- app.use(contextMiddleware());
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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, notFoundHtml },\n options?: {\n middlewareFns?: (() => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const { middlewareFns = [], middlewareModules = {} } = 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 return {\n fetch: app.fetch,\n build: processBuild,\n };\n },\n);\n"],"names":["Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_honoMiddleware","honoMiddleware","contextMiddleware","rscMiddleware","middlewareRunner","processRequest","processBuild","notFoundHtml","options","middlewareFns","middlewareModules","app","notFound","c","html","text","use","middlewareFn","fetch","build"],"mappings":"AACA,SAASA,IAAI,QAAQ,YAAY;AAEjC,SAASC,qCAAqCC,wBAAwB,QAAQ,wBAAwB;AACtG,SAASC,2BAA2BC,cAAc,QAAQ,iBAAiB;AAQ3E,MAAM,EAAEC,iBAAiB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGH;AAE/D,eAAeF,yBACb,CACE,EAAEM,cAAc,EAAEC,YAAY,EAAEC,YAAY,EAAE,EAC9CC;IAKA,MAAM,EAAEC,gBAAgB,EAAE,EAAEC,oBAAoB,CAAC,CAAC,EAAE,GAAGF,WAAW,CAAC;IACnE,MAAMG,MAAM,IAAId;IAChBc,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIN,cAAc;YAChB,OAAOM,EAAEC,IAAI,CAACP,cAAc;QAC9B;QACA,OAAOM,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACAJ,IAAIK,GAAG,CAACd;IACR,KAAK,MAAMe,gBAAgBR,cAAe;QACxCE,IAAIK,GAAG,CAACC;IACV;IACAN,IAAIK,GAAG,CAACZ,iBAAiBM;IACzBC,IAAIK,GAAG,CAACb,cAAc;QAAEE;IAAe;IACvC,OAAO;QACLa,OAAOP,IAAIO,KAAK;QAChBC,OAAOb;IACT;AACF,GACA"}
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
- middlewareFns?: (() => MiddlewareHandler)[];
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,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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;
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
- app.use(contextMiddleware());
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 { contextMiddleware, rscMiddleware, middlewareRunner } = honoMiddleware;\n\nexport default createServerEntryAdapter(\n (\n { processRequest, processBuild, config, notFoundHtml },\n options?: {\n static?: boolean;\n middlewareFns?: (() => MiddlewareHandler)[];\n middlewareModules?: Record<string, () => Promise<unknown>>;\n },\n ) => {\n const { middlewareFns = [], middlewareModules = {} } = 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 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":["Hono","unstable_createServerEntryAdapter","createServerEntryAdapter","unstable_constants","constants","unstable_honoMiddleware","honoMiddleware","DIST_PUBLIC","contextMiddleware","rscMiddleware","middlewareRunner","processRequest","processBuild","config","notFoundHtml","options","middlewareFns","middlewareModules","app","notFound","c","html","text","use","middlewareFn","buildOptions","distDir","privateDir","rscBase","serverless","static","fetch","build","buildEnhancers"],"mappings":"AACA,SAASA,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,iBAAiB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGJ;AAE/D,eAAeJ,yBACb,CACE,EAAES,cAAc,EAAEC,YAAY,EAAEC,MAAM,EAAEC,YAAY,EAAE,EACtDC;IAMA,MAAM,EAAEC,gBAAgB,EAAE,EAAEC,oBAAoB,CAAC,CAAC,EAAE,GAAGF,WAAW,CAAC;IACnE,MAAMG,MAAM,IAAIlB;IAChBkB,IAAIC,QAAQ,CAAC,CAACC;QACZ,IAAIN,cAAc;YAChB,OAAOM,EAAEC,IAAI,CAACP,cAAc;QAC9B;QACA,OAAOM,EAAEE,IAAI,CAAC,iBAAiB;IACjC;IACAJ,IAAIK,GAAG,CAACf;IACR,KAAK,MAAMgB,gBAAgBR,cAAe;QACxCE,IAAIK,GAAG,CAACC;IACV;IACAN,IAAIK,GAAG,CAACb,iBAAiBO;IACzBC,IAAIK,GAAG,CAACd,cAAc;QAAEE;IAAe;IACvC,MAAMc,eAA6B;QACjCC,SAASb,OAAOa,OAAO;QACvBC,YAAYd,OAAOc,UAAU;QAC7BC,SAASf,OAAOe,OAAO;QACvBrB;QACAsB,YAAY,CAACd,SAASe;IACxB;IACA,OAAO;QACLC,OAAOb,IAAIa,KAAK;QAChBC,OAAOpB;QACPa;QACAQ,gBAAgB;YAAC;SAAuC;IAC1D;AACF,GACA"}
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"}
@@ -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
- middlewareFns?: (() => MiddlewareHandler)[];
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;