nitro-nightly 4.0.0-20251010-091516-7cafddba → 4.0.0-20251030-121649-98b56dfe

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 (252) hide show
  1. package/dist/_build/common.mjs +763 -0
  2. package/dist/_build/rolldown.mjs +216 -0
  3. package/dist/_build/rollup.mjs +359 -0
  4. package/dist/_build/vite.build.mjs +67 -0
  5. package/dist/_build/vite.plugin.mjs +747 -0
  6. package/dist/_chunks/B-7HiF0V.mjs +1303 -0
  7. package/dist/_chunks/B3asVbT4.mjs +151 -0
  8. package/dist/_chunks/B5ooyfLk.mjs +372 -0
  9. package/dist/_chunks/DXMHy5ca.mjs +43 -0
  10. package/dist/_dev.d.mts +12 -0
  11. package/dist/_dev.mjs +675 -0
  12. package/dist/_libs/acorn.mjs +5034 -0
  13. package/dist/_libs/c12.mjs +2798 -0
  14. package/dist/_libs/chokidar.mjs +1560 -0
  15. package/dist/_libs/citty.mjs +333 -0
  16. package/dist/_libs/commondir.mjs +22 -0
  17. package/dist/_libs/compatx.mjs +46 -0
  18. package/dist/_libs/confbox.mjs +2920 -0
  19. package/dist/_libs/debug.mjs +848 -0
  20. package/dist/_libs/deepmerge.mjs +86 -0
  21. package/dist/_libs/depd.mjs +314 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/ee-first.mjs +68 -0
  25. package/dist/_libs/encodeurl.mjs +49 -0
  26. package/dist/_libs/escape-html.mjs +58 -0
  27. package/dist/_libs/escape-string-regexp.mjs +8 -0
  28. package/dist/_libs/estree-walker.mjs +330 -0
  29. package/dist/_libs/etag.mjs +75 -0
  30. package/dist/_libs/fdir.mjs +514 -0
  31. package/dist/_libs/fresh.mjs +85 -0
  32. package/dist/_libs/function-bind.mjs +63 -0
  33. package/dist/_libs/gen-mapping.mjs +612 -0
  34. package/dist/_libs/giget.mjs +19076 -0
  35. package/dist/_libs/gzip-size.mjs +21 -0
  36. package/dist/_libs/hasown.mjs +14 -0
  37. package/dist/_libs/http-errors.mjs +436 -0
  38. package/dist/_libs/httpxy.mjs +410 -0
  39. package/dist/_libs/is-core-module.mjs +220 -0
  40. package/dist/_libs/is-module.mjs +13 -0
  41. package/dist/_libs/is-reference.mjs +32 -0
  42. package/dist/_libs/js-tokens.mjs +382 -0
  43. package/dist/_libs/klona.mjs +90 -0
  44. package/dist/_libs/knitwork.mjs +124 -0
  45. package/dist/_libs/local-pkg.mjs +1686 -0
  46. package/dist/_libs/magic-string.mjs +939 -0
  47. package/dist/_libs/mime-db.mjs +7642 -0
  48. package/dist/_libs/mime-types.mjs +162 -0
  49. package/dist/_libs/mime.mjs +1391 -0
  50. package/dist/_libs/node-fetch-native.mjs +173 -0
  51. package/dist/_libs/on-finished.mjs +170 -0
  52. package/dist/_libs/parseurl.mjs +103 -0
  53. package/dist/_libs/path-parse.mjs +47 -0
  54. package/dist/_libs/pathe.mjs +41 -0
  55. package/dist/_libs/picomatch.mjs +1673 -0
  56. package/dist/_libs/plugin-alias.mjs +64 -0
  57. package/dist/_libs/plugin-commonjs.mjs +1489 -0
  58. package/dist/_libs/plugin-inject.mjs +135 -0
  59. package/dist/_libs/plugin-json.mjs +36 -0
  60. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  61. package/dist/_libs/plugin-replace.mjs +104 -0
  62. package/dist/_libs/pretty-bytes.mjs +116 -0
  63. package/dist/_libs/range-parser.mjs +102 -0
  64. package/dist/_libs/remapping.mjs +117 -0
  65. package/dist/_libs/rou3.mjs +311 -0
  66. package/dist/_libs/send.mjs +857 -0
  67. package/dist/_libs/serve-static.mjs +124 -0
  68. package/dist/_libs/std-env.mjs +158 -0
  69. package/dist/_libs/strip-literal.mjs +51 -0
  70. package/dist/_libs/tinyglobby.mjs +292 -0
  71. package/dist/_libs/ultrahtml.mjs +138 -0
  72. package/dist/_libs/unimport.mjs +3520 -0
  73. package/dist/_libs/untyped.mjs +271 -0
  74. package/dist/_libs/unwasm.mjs +5825 -0
  75. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  76. package/dist/_presets.mjs +1723 -0
  77. package/dist/builder.d.mts +54 -0
  78. package/dist/builder.mjs +45 -0
  79. package/dist/cli/_chunks/build.mjs +43 -0
  80. package/dist/cli/_chunks/common.mjs +15 -0
  81. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  82. package/dist/cli/_chunks/dev.mjs +79 -0
  83. package/dist/cli/_chunks/dist.mjs +3 -0
  84. package/dist/cli/_chunks/dist2.mjs +4 -0
  85. package/dist/cli/_chunks/esm.mjs +3 -0
  86. package/dist/cli/_chunks/json5.mjs +4 -0
  87. package/dist/cli/_chunks/jsonc.mjs +4 -0
  88. package/dist/cli/_chunks/list.mjs +27 -0
  89. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  90. package/dist/cli/_chunks/prepare.mjs +19 -0
  91. package/dist/cli/_chunks/run.mjs +55 -0
  92. package/dist/cli/_chunks/task.mjs +16 -0
  93. package/dist/cli/_chunks/toml.mjs +4 -0
  94. package/dist/cli/_chunks/yaml.mjs +4 -0
  95. package/dist/cli/index.d.mts +1 -1
  96. package/dist/cli/index.mjs +20 -476
  97. package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
  98. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
  99. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  100. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  101. package/dist/node_modules/cookie-es/package.json +37 -0
  102. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  103. package/dist/node_modules/hookable/package.json +29 -26
  104. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  105. package/dist/node_modules/rendu/package.json +47 -0
  106. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  107. package/dist/presets/_nitro/runtime/nitro-dev.mjs +44 -38
  108. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  109. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +9 -12
  110. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
  112. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  113. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
  114. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  115. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  116. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  117. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
  118. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
  119. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  120. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  121. package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
  122. package/dist/presets/bun/runtime/bun.d.mts +1 -0
  123. package/dist/presets/bun/runtime/bun.mjs +18 -17
  124. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  125. package/dist/presets/cloudflare/runtime/_module-handler.mjs +79 -87
  126. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  127. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +55 -61
  128. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  129. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
  130. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  131. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
  132. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  133. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  134. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  135. package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
  136. package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
  137. package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
  138. package/dist/presets/deno/runtime/deno-server.mjs +31 -39
  139. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  140. package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
  141. package/dist/presets/netlify/runtime/netlify.mjs +11 -17
  142. package/dist/presets/node/runtime/node-cluster.mjs +49 -48
  143. package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
  144. package/dist/presets/node/runtime/node-middleware.mjs +7 -6
  145. package/dist/presets/node/runtime/node-server.mjs +34 -24
  146. package/dist/presets/standard/runtime/server.d.mts +1 -3
  147. package/dist/presets/standard/runtime/server.mjs +1 -3
  148. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  149. package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
  150. package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
  151. package/dist/presets/vercel/runtime/vercel.mjs +15 -14
  152. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  153. package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
  154. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  155. package/dist/runtime/index.d.mts +13 -2
  156. package/dist/runtime/index.mjs +13 -8
  157. package/dist/runtime/internal/app.d.mts +3 -1
  158. package/dist/runtime/internal/app.mjs +179 -140
  159. package/dist/runtime/internal/cache.d.mts +10 -4
  160. package/dist/runtime/internal/cache.mjs +247 -216
  161. package/dist/runtime/internal/context.d.mts +9 -9
  162. package/dist/runtime/internal/context.mjs +17 -10
  163. package/dist/runtime/internal/database.mjs +8 -10
  164. package/dist/runtime/internal/error/dev.d.mts +5 -4
  165. package/dist/runtime/internal/error/dev.mjs +106 -105
  166. package/dist/runtime/internal/error/prod.d.mts +5 -4
  167. package/dist/runtime/internal/error/prod.mjs +51 -59
  168. package/dist/runtime/internal/error/utils.d.mts +4 -4
  169. package/dist/runtime/internal/error/utils.mjs +1 -1
  170. package/dist/runtime/internal/index.d.mts +2 -0
  171. package/dist/runtime/internal/index.mjs +2 -0
  172. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
  173. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
  174. package/dist/runtime/internal/meta.d.mts +1 -1
  175. package/dist/runtime/internal/meta.mjs +1 -1
  176. package/dist/runtime/internal/plugin.d.mts +2 -2
  177. package/dist/runtime/internal/plugin.mjs +1 -1
  178. package/dist/runtime/internal/renderer.mjs +40 -32
  179. package/dist/runtime/internal/route-rules.d.mts +8 -8
  180. package/dist/runtime/internal/route-rules.mjs +53 -51
  181. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  182. package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
  183. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  184. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  185. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  186. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  187. package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
  188. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  189. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  190. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  191. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  192. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  193. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  194. package/dist/runtime/internal/runtime-config.mjs +40 -35
  195. package/dist/runtime/internal/shutdown.d.mts +2 -8
  196. package/dist/runtime/internal/shutdown.mjs +32 -30
  197. package/dist/runtime/internal/static.mjs +63 -74
  198. package/dist/runtime/internal/storage.mjs +2 -2
  199. package/dist/runtime/internal/task.d.mts +6 -6
  200. package/dist/runtime/internal/task.mjs +56 -60
  201. package/dist/runtime/internal/utils.d.mts +1 -1
  202. package/dist/runtime/internal/utils.mjs +4 -10
  203. package/dist/types/index.d.mts +2594 -2286
  204. package/dist/types/index.mjs +1 -1
  205. package/dist/vite.d.mts +56 -47
  206. package/dist/vite.mjs +55 -68
  207. package/lib/index.d.mts +1 -0
  208. package/lib/index.mjs +1 -0
  209. package/lib/runtime/meta.mjs +35 -0
  210. package/package.json +49 -50
  211. package/dist/_chunks/app.mjs +0 -19797
  212. package/dist/_chunks/build.mjs +0 -84
  213. package/dist/_chunks/build2.mjs +0 -318
  214. package/dist/_chunks/build3.mjs +0 -6452
  215. package/dist/_chunks/detect-acorn.mjs +0 -503
  216. package/dist/_chunks/index.mjs +0 -22242
  217. package/dist/_chunks/index2.mjs +0 -297
  218. package/dist/_chunks/index3.mjs +0 -1058
  219. package/dist/_chunks/index4.mjs +0 -1206
  220. package/dist/_chunks/info.mjs +0 -11157
  221. package/dist/_chunks/json5.mjs +0 -68
  222. package/dist/_chunks/jsonc.mjs +0 -51
  223. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  224. package/dist/_chunks/plugin.mjs +0 -960
  225. package/dist/_chunks/server.mjs +0 -254
  226. package/dist/_chunks/snapshot.mjs +0 -284
  227. package/dist/_chunks/toml.mjs +0 -259
  228. package/dist/_chunks/yaml.mjs +0 -86
  229. package/dist/cli/build.mjs +0 -54
  230. package/dist/cli/common.mjs +0 -13
  231. package/dist/cli/dev.mjs +0 -95
  232. package/dist/cli/index2.mjs +0 -17
  233. package/dist/cli/list.mjs +0 -34
  234. package/dist/cli/prepare.mjs +0 -24
  235. package/dist/cli/run.mjs +0 -60
  236. package/dist/index.d.mts +0 -52
  237. package/dist/index.mjs +0 -55
  238. package/dist/node_modules/klona/dist/index.mjs +0 -81
  239. package/dist/node_modules/klona/full/index.mjs +0 -53
  240. package/dist/node_modules/klona/package.json +0 -74
  241. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  242. package/dist/node_modules/std-env/package.json +0 -46
  243. package/dist/presets.mjs +0 -2460
  244. package/dist/runtime/internal/debug.d.mts +0 -2
  245. package/dist/runtime/internal/debug.mjs +0 -5
  246. package/dist/runtime/internal/empty.d.mts +0 -0
  247. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  248. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  249. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  250. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  251. package/lib/runtime-meta.mjs +0 -38
  252. /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +0 -0
@@ -1,93 +1,85 @@
1
1
  import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
2
+ import { useNitroApp, useNitroHooks } from "nitro/runtime";
3
3
  import { runCronTasks } from "nitro/runtime/internal";
4
4
  export function createHandler(hooks) {
5
- const nitroApp = useNitroApp();
6
- return {
7
- async fetch(request, env, context) {
8
- const ctxExt = {};
9
- const url = new URL(request.url);
10
- if (hooks.fetch) {
11
- const res = await hooks.fetch(request, env, context, url, ctxExt);
12
- if (res) {
13
- return res;
14
- }
15
- }
16
- return fetchHandler(request, env, context, url, nitroApp, ctxExt);
17
- },
18
- scheduled(controller, env, context) {
19
- globalThis.__env__ = env;
20
- context.waitUntil(
21
- nitroApp.hooks.callHook("cloudflare:scheduled", {
22
- controller,
23
- env,
24
- context
25
- })
26
- );
27
- if (import.meta._tasks) {
28
- context.waitUntil(
29
- runCronTasks(controller.cron, {
30
- context: {
31
- cloudflare: {
32
- env,
33
- context
34
- }
35
- },
36
- payload: {}
37
- })
38
- );
39
- }
40
- },
41
- email(message, env, context) {
42
- globalThis.__env__ = env;
43
- context.waitUntil(
44
- nitroApp.hooks.callHook("cloudflare:email", {
45
- message,
46
- event: message,
47
- // backward compat
48
- env,
49
- context
50
- })
51
- );
52
- },
53
- queue(batch, env, context) {
54
- globalThis.__env__ = env;
55
- context.waitUntil(
56
- nitroApp.hooks.callHook("cloudflare:queue", {
57
- batch,
58
- event: batch,
59
- env,
60
- context
61
- })
62
- );
63
- },
64
- tail(traces, env, context) {
65
- globalThis.__env__ = env;
66
- context.waitUntil(
67
- nitroApp.hooks.callHook("cloudflare:tail", {
68
- traces,
69
- env,
70
- context
71
- })
72
- );
73
- },
74
- trace(traces, env, context) {
75
- globalThis.__env__ = env;
76
- context.waitUntil(
77
- nitroApp.hooks.callHook("cloudflare:trace", {
78
- traces,
79
- env,
80
- context
81
- })
82
- );
83
- }
84
- };
5
+ const nitroApp = useNitroApp();
6
+ const nitroHooks = useNitroHooks();
7
+ return {
8
+ async fetch(request, env, context) {
9
+ const ctxExt = {};
10
+ const url = new URL(request.url);
11
+ // Preset-specific logic
12
+ if (hooks.fetch) {
13
+ const res = await hooks.fetch(request, env, context, url, ctxExt);
14
+ if (res) {
15
+ return res;
16
+ }
17
+ }
18
+ return fetchHandler(request, env, context, url, nitroApp, ctxExt);
19
+ },
20
+ scheduled(controller, env, context) {
21
+ globalThis.__env__ = env;
22
+ context.waitUntil(nitroHooks.callHook("cloudflare:scheduled", {
23
+ controller,
24
+ env,
25
+ context
26
+ }));
27
+ if (import.meta._tasks) {
28
+ context.waitUntil(runCronTasks(controller.cron, {
29
+ context: { cloudflare: {
30
+ env,
31
+ context
32
+ } },
33
+ payload: {}
34
+ }));
35
+ }
36
+ },
37
+ email(message, env, context) {
38
+ globalThis.__env__ = env;
39
+ context.waitUntil(nitroHooks.callHook("cloudflare:email", {
40
+ message,
41
+ event: message,
42
+ env,
43
+ context
44
+ }));
45
+ },
46
+ queue(batch, env, context) {
47
+ globalThis.__env__ = env;
48
+ context.waitUntil(nitroHooks.callHook("cloudflare:queue", {
49
+ batch,
50
+ event: batch,
51
+ env,
52
+ context
53
+ }));
54
+ },
55
+ tail(traces, env, context) {
56
+ globalThis.__env__ = env;
57
+ context.waitUntil(nitroHooks.callHook("cloudflare:tail", {
58
+ traces,
59
+ env,
60
+ context
61
+ }));
62
+ },
63
+ trace(traces, env, context) {
64
+ globalThis.__env__ = env;
65
+ context.waitUntil(nitroHooks.callHook("cloudflare:trace", {
66
+ traces,
67
+ env,
68
+ context
69
+ }));
70
+ }
71
+ };
85
72
  }
86
73
  export async function fetchHandler(cfReq, env, context, url = new URL(cfReq.url), nitroApp = useNitroApp(), ctxExt) {
87
- globalThis.__env__ = env;
88
- const req = cfReq;
89
- req.runtime ??= { name: "cloudflare" };
90
- req.runtime.cloudflare ??= { context, env };
91
- req.waitUntil = context.waitUntil.bind(context);
92
- return nitroApp.fetch(req);
74
+ // Expose latest env to the global context
75
+ globalThis.__env__ = env;
76
+ // srvx compatibility
77
+ const req = cfReq;
78
+ req.runtime ??= { name: "cloudflare" };
79
+ req.runtime.cloudflare ??= {
80
+ context,
81
+ env
82
+ };
83
+ req.waitUntil = context.waitUntil.bind(context);
84
+ return nitroApp.fetch(req);
93
85
  }
@@ -1,19 +1,11 @@
1
1
  import "#nitro-internal-pollyfills";
2
- import type * as CF from "@cloudflare/workers-types";
3
2
  import { DurableObject } from "cloudflare:workers";
4
- declare const DURABLE_BINDING = "$DurableObject";
5
- interface Env {
6
- ASSETS?: {
7
- fetch: typeof CF.fetch;
8
- };
9
- [DURABLE_BINDING]?: CF.DurableObjectNamespace;
10
- }
11
- declare const _default: CF.ExportedHandler<Env, unknown, unknown>;
3
+ declare const _default;
12
4
  export default _default;
13
5
  export declare class $DurableObject extends DurableObject {
14
- constructor(state: DurableObjectState, env: Record<string, any>);
15
- fetch(request: Request): Promise<Response>;
16
- alarm(): void | Promise<void>;
17
- webSocketMessage(client: WebSocket, message: ArrayBuffer | string): Promise<void>;
18
- webSocketClose(client: WebSocket, code: number, reason: string, wasClean: boolean): Promise<void>;
6
+ constructor(state: DurableObjectState, env: Record<string, any>);
7
+ fetch(request: Request);
8
+ alarm(): void | Promise<void>;
9
+ webSocketMessage(client: WebSocket, message: ArrayBuffer | string);
10
+ webSocketClose(client: WebSocket, code: number, reason: string, wasClean: boolean);
19
11
  }
@@ -1,74 +1,68 @@
1
1
  import "#nitro-internal-pollyfills";
2
2
  import { DurableObject } from "cloudflare:workers";
3
3
  import wsAdapter from "crossws/adapters/cloudflare";
4
- import { useNitroApp } from "nitro/runtime";
4
+ import { useNitroApp, useNitroHooks } from "nitro/runtime";
5
5
  import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets";
6
6
  import { createHandler, fetchHandler } from "./_module-handler.mjs";
7
7
  const DURABLE_BINDING = "$DurableObject";
8
8
  const DURABLE_INSTANCE = "server";
9
9
  const nitroApp = useNitroApp();
10
+ const nitroHooks = useNitroHooks();
10
11
  const getDurableStub = (env) => {
11
- const binding = env[DURABLE_BINDING];
12
- if (!binding) {
13
- throw new Error(
14
- `Durable Object binding "${DURABLE_BINDING}" not available.`
15
- );
16
- }
17
- const id = binding.idFromName(DURABLE_INSTANCE);
18
- return binding.get(id);
12
+ const binding = env[DURABLE_BINDING];
13
+ if (!binding) {
14
+ throw new Error(`Durable Object binding "${DURABLE_BINDING}" not available.`);
15
+ }
16
+ const id = binding.idFromName(DURABLE_INSTANCE);
17
+ return binding.get(id);
19
18
  };
20
19
  const ws = import.meta._websocket ? wsAdapter({
21
- // TODO!
22
- // ...nitroApp.h3App.websocket,
23
- instanceName: DURABLE_INSTANCE,
24
- bindingName: DURABLE_BINDING
25
- }) : void 0;
26
- export default createHandler({
27
- fetch(request, env, context, url, ctxExt) {
28
- if (env.ASSETS && isPublicAssetURL(url.pathname)) {
29
- return env.ASSETS.fetch(request);
30
- }
31
- ctxExt.durableFetch = (req = request) => getDurableStub(env).fetch(req);
32
- if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
33
- return ws.handleUpgrade(request, env, context);
34
- }
35
- }
36
- });
20
+ instanceName: DURABLE_INSTANCE,
21
+ bindingName: DURABLE_BINDING
22
+ }) : undefined;
23
+ export default createHandler({ fetch(request, env, context, url, ctxExt) {
24
+ // Static assets fallback (optional binding)
25
+ if (env.ASSETS && isPublicAssetURL(url.pathname)) {
26
+ return env.ASSETS.fetch(request);
27
+ }
28
+ // Expose stub fetch to the context
29
+ ctxExt.durableFetch = (req = request) => getDurableStub(env).fetch(req);
30
+ // Websocket upgrade
31
+ // https://crossws.unjs.io/adapters/cloudflare#durable-objects
32
+ if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
33
+ return ws.handleUpgrade(request, env, context);
34
+ }
35
+ } });
37
36
  export class $DurableObject extends DurableObject {
38
- constructor(state, env) {
39
- super(state, env);
40
- state.waitUntil(
41
- nitroApp.hooks.callHook("cloudflare:durable:init", this, {
42
- state,
43
- env
44
- })
45
- );
46
- if (import.meta._websocket) {
47
- ws.handleDurableInit(this, state, env);
48
- }
49
- }
50
- fetch(request) {
51
- if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
52
- return ws.handleDurableUpgrade(this, request);
53
- }
54
- const url = new URL(request.url);
55
- return fetchHandler(request, this.env, this.ctx, url, nitroApp, {
56
- durable: this
57
- });
58
- }
59
- alarm() {
60
- this.ctx.waitUntil(
61
- nitroApp.hooks.callHook("cloudflare:durable:alarm", this)
62
- );
63
- }
64
- async webSocketMessage(client, message) {
65
- if (import.meta._websocket) {
66
- return ws.handleDurableMessage(this, client, message);
67
- }
68
- }
69
- async webSocketClose(client, code, reason, wasClean) {
70
- if (import.meta._websocket) {
71
- return ws.handleDurableClose(this, client, code, reason, wasClean);
72
- }
73
- }
37
+ constructor(state, env) {
38
+ super(state, env);
39
+ state.waitUntil(nitroHooks.callHook("cloudflare:durable:init", this, {
40
+ state,
41
+ env
42
+ }));
43
+ if (import.meta._websocket) {
44
+ ws.handleDurableInit(this, state, env);
45
+ }
46
+ }
47
+ fetch(request) {
48
+ if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
49
+ return ws.handleDurableUpgrade(this, request);
50
+ }
51
+ // Main handler
52
+ const url = new URL(request.url);
53
+ return fetchHandler(request, this.env, this.ctx, url, nitroApp, { durable: this });
54
+ }
55
+ alarm() {
56
+ this.ctx.waitUntil(nitroHooks.callHook("cloudflare:durable:alarm", this));
57
+ }
58
+ async webSocketMessage(client, message) {
59
+ if (import.meta._websocket) {
60
+ return ws.handleDurableMessage(this, client, message);
61
+ }
62
+ }
63
+ async webSocketClose(client, code, reason, wasClean) {
64
+ if (import.meta._websocket) {
65
+ return ws.handleDurableClose(this, client, code, reason, wasClean);
66
+ }
67
+ }
74
68
  }
@@ -1,9 +1,3 @@
1
1
  import "#nitro-internal-pollyfills";
2
- import type { fetch } from "@cloudflare/workers-types";
3
- interface Env {
4
- ASSETS?: {
5
- fetch: typeof fetch;
6
- };
7
- }
8
- declare const _default: import("@cloudflare/workers-types").ExportedHandler<Env, unknown, unknown>;
2
+ declare const _default;
9
3
  export default _default;
@@ -4,17 +4,15 @@ import { useNitroApp } from "nitro/runtime";
4
4
  import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets";
5
5
  import { createHandler } from "./_module-handler.mjs";
6
6
  const nitroApp = useNitroApp();
7
- const ws = import.meta._websocket ? (
8
- // @ts-expect-error
9
- wsAdapter(nitroApp.h3App.websocket)
10
- ) : void 0;
11
- export default createHandler({
12
- fetch(request, env, context, url) {
13
- if (env.ASSETS && isPublicAssetURL(url.pathname)) {
14
- return env.ASSETS.fetch(request);
15
- }
16
- if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
17
- return ws.handleUpgrade(request, env, context);
18
- }
19
- }
20
- });
7
+ const ws = import.meta._websocket ? wsAdapter(nitroApp.h3App.websocket) : undefined;
8
+ export default createHandler({ fetch(request, env, context, url) {
9
+ // Static assets fallback (optional binding)
10
+ if (env.ASSETS && isPublicAssetURL(url.pathname)) {
11
+ return env.ASSETS.fetch(request);
12
+ }
13
+ // Websocket upgrade
14
+ // https://crossws.unjs.io/adapters/cloudflare
15
+ if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
16
+ return ws.handleUpgrade(request, env, context);
17
+ }
18
+ } });
@@ -1,20 +1,20 @@
1
1
  import "#nitro-internal-pollyfills";
2
2
  import type { Request as CFRequest, EventContext, ExecutionContext } from "@cloudflare/workers-types";
3
3
  /**
4
- * Reference: https://developers.cloudflare.com/workers/runtime-apis/fetch-event/#parameters
5
- */
4
+ * Reference: https://developers.cloudflare.com/workers/runtime-apis/fetch-event/#parameters
5
+ */
6
6
  interface CFPagesEnv {
7
- ASSETS: {
8
- fetch: (request: CFRequest) => Promise<Response>;
9
- };
10
- CF_PAGES: "1";
11
- CF_PAGES_BRANCH: string;
12
- CF_PAGES_COMMIT_SHA: string;
13
- CF_PAGES_URL: string;
14
- [key: string]: any;
7
+ ASSETS: {
8
+ fetch: (request: CFRequest) => Promise<Response>;
9
+ };
10
+ CF_PAGES: "1";
11
+ CF_PAGES_BRANCH: string;
12
+ CF_PAGES_COMMIT_SHA: string;
13
+ CF_PAGES_URL: string;
14
+ [key: string]: any;
15
15
  }
16
16
  declare const _default: {
17
- fetch(cfReq: CFRequest, env: CFPagesEnv, context: EventContext<CFPagesEnv, string, any>): Promise<any>;
18
- scheduled(event: any, env: CFPagesEnv, context: ExecutionContext): void;
17
+ fetch(cfReq: CFRequest, env: CFPagesEnv, context: EventContext<CFPagesEnv, string, any>);
18
+ scheduled(event: any, env: CFPagesEnv, context: ExecutionContext);
19
19
  };
20
20
  export default _default;
@@ -4,44 +4,40 @@ import { runCronTasks } from "nitro/runtime/internal";
4
4
  import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets";
5
5
  import wsAdapter from "crossws/adapters/cloudflare";
6
6
  const nitroApp = useNitroApp();
7
- const ws = import.meta._websocket ? (
8
- // @ts-expect-error
9
- wsAdapter(nitroApp.h3App.websocket)
10
- ) : void 0;
7
+ const ws = import.meta._websocket ? wsAdapter(nitroApp.h3App.websocket) : undefined;
11
8
  export default {
12
- async fetch(cfReq, env, context) {
13
- const req = cfReq;
14
- req.runtime ??= { name: "cloudflare" };
15
- req.runtime.cloudflare ??= { context, env };
16
- req.waitUntil = context.waitUntil.bind(context);
17
- if (import.meta._websocket && cfReq.headers.get("upgrade") === "websocket") {
18
- return ws.handleUpgrade(
19
- cfReq,
20
- env,
21
- context
22
- );
23
- }
24
- const url = new URL(cfReq.url);
25
- if (env.ASSETS && isPublicAssetURL(url.pathname)) {
26
- return env.ASSETS.fetch(cfReq);
27
- }
28
- globalThis.__env__ = env;
29
- return nitroApp.fetch(req);
30
- },
31
- scheduled(event, env, context) {
32
- if (import.meta._tasks) {
33
- globalThis.__env__ = env;
34
- context.waitUntil(
35
- runCronTasks(event.cron, {
36
- context: {
37
- cloudflare: {
38
- env,
39
- context
40
- }
41
- },
42
- payload: {}
43
- })
44
- );
45
- }
46
- }
9
+ async fetch(cfReq, env, context) {
10
+ // srvx compatibility
11
+ const req = cfReq;
12
+ req.runtime ??= { name: "cloudflare" };
13
+ req.runtime.cloudflare ??= {
14
+ context,
15
+ env
16
+ };
17
+ req.waitUntil = context.waitUntil.bind(context);
18
+ // Websocket upgrade
19
+ // https://crossws.unjs.io/adapters/cloudflare
20
+ if (import.meta._websocket && cfReq.headers.get("upgrade") === "websocket") {
21
+ return ws.handleUpgrade(cfReq, env, context);
22
+ }
23
+ const url = new URL(cfReq.url);
24
+ if (env.ASSETS && isPublicAssetURL(url.pathname)) {
25
+ return env.ASSETS.fetch(cfReq);
26
+ }
27
+ // Expose latest env to the global context
28
+ globalThis.__env__ = env;
29
+ return nitroApp.fetch(req);
30
+ },
31
+ scheduled(event, env, context) {
32
+ if (import.meta._tasks) {
33
+ globalThis.__env__ = env;
34
+ context.waitUntil(runCronTasks(event.cron, {
35
+ context: { cloudflare: {
36
+ env,
37
+ context
38
+ } },
39
+ payload: {}
40
+ }));
41
+ }
42
+ }
47
43
  };
@@ -1,3 +1,3 @@
1
1
  import type { NitroAppPlugin } from "nitro/types";
2
- declare const _default: NitroAppPlugin;
3
- export default _default;
2
+ declare const cloudflareDevPlugin: NitroAppPlugin;
3
+ export default cloudflareDevPlugin;