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,89 +1,96 @@
1
- const _proxy = _getPlatformProxy().catch((error) => {
2
- console.error("Failed to initialize wrangler bindings proxy", error);
3
- return _createStubProxy();
4
- }).then((proxy) => {
5
- globalThis.__env__ = proxy.env;
6
- return proxy;
7
- });
8
- globalThis.__env__ = _proxy.then((proxy) => proxy.env);
9
- export default (function(nitroApp) {
10
- nitroApp.hooks.hook("request", async (event) => {
11
- event.req.context ??= {};
12
- const proxy = await _proxy;
13
- event.req.context.cf = proxy.cf;
14
- event.req.context.waitUntil = proxy.ctx.waitUntil.bind(proxy.ctx);
15
- const request = new Request(event.req.url);
16
- request.cf = proxy.cf;
17
- event.req.context.cloudflare = {
18
- ...event.req.context.cloudflare,
19
- request,
20
- env: proxy.env,
21
- context: proxy.ctx
22
- };
23
- });
24
- nitroApp.hooks._hooks.request.unshift(nitroApp.hooks._hooks.request.pop());
25
- nitroApp.hooks.hook("close", () => {
26
- return _proxy?.then((proxy) => proxy.dispose);
27
- });
1
+ const proxy = await _getPlatformProxy().catch((error) => {
2
+ console.error("Failed to initialize wrangler bindings proxy", error);
3
+ return _createStubProxy();
28
4
  });
5
+ globalThis.__env__ = proxy.env;
6
+ globalThis.__wait_until__ = proxy.ctx.waitUntil.bind(proxy.ctx);
7
+ const cloudflareDevPlugin = function(nitroApp) {
8
+ nitroApp.hooks.hook("request", async (event) => {
9
+ event.req.context ??= {};
10
+ // Inject the various cf values from the proxy in event and event.context
11
+ event.req.context.cf = proxy.cf;
12
+ event.req.context.waitUntil = proxy.ctx.waitUntil.bind(proxy.ctx);
13
+ const request = event.req;
14
+ request.cf = proxy.cf;
15
+ event.req.context.cloudflare = {
16
+ ...event.req.context.cloudflare,
17
+ request,
18
+ env: proxy.env,
19
+ context: proxy.ctx
20
+ };
21
+ // Replicate Nitro production behavior
22
+ // https://github.com/unjs/nitro/blob/main/src/runtime/entries/cloudflare-pages.ts#L55
23
+ // https://github.com/unjs/nitro/blob/main/src/runtime/app.ts#L120
24
+ // TODO: Update for v3
25
+ // (event.node.req as any).__unenv__ = {
26
+ // ...(event.node.req as any).__unenv__,
27
+ // waitUntil: event.context.waitUntil,
28
+ // };
29
+ });
30
+ // https://github.com/pi0/nitro-cloudflare-dev/issues/5
31
+ // https://github.com/unjs/hookable/issues/98
32
+ // @ts-expect-error
33
+ nitroApp.hooks._hooks.request.unshift(nitroApp.hooks._hooks.request.pop());
34
+ // Dispose proxy when Nitro is closed
35
+ nitroApp.hooks.hook("close", () => {
36
+ return proxy?.dispose();
37
+ });
38
+ };
39
+ export default cloudflareDevPlugin;
29
40
  async function _getPlatformProxy() {
30
- const { useRuntimeConfig } = await import("nitro/runtime");
31
- const pkg = "wrangler";
32
- const { getPlatformProxy } = await import(
33
- /* @vite-ignore */
34
- pkg
35
- ).catch(
36
- () => {
37
- throw new Error(
38
- "Package `wrangler` not found, please install it with: `npx nypm@latest add -D wrangler`"
39
- );
40
- }
41
- );
42
- const runtimeConfig = useRuntimeConfig();
43
- const proxyOptions = {
44
- configPath: runtimeConfig.wrangler.configPath,
45
- persist: { path: runtimeConfig.wrangler.persistDir }
46
- };
47
- if (runtimeConfig.wrangler.environment) {
48
- proxyOptions.environment = runtimeConfig.wrangler.environment;
49
- }
50
- const proxy = await getPlatformProxy(proxyOptions);
51
- return proxy;
41
+ const { useRuntimeConfig } = await import("nitro/runtime");
42
+ const pkg = "wrangler";
43
+ const { getPlatformProxy } = await import(
44
+ /* @vite-ignore */
45
+ pkg
46
+ ).catch(() => {
47
+ throw new Error("Package `wrangler` not found, please install it with: `npx nypm@latest add -D wrangler`");
48
+ });
49
+ const runtimeConfig = useRuntimeConfig();
50
+ const proxyOptions = {
51
+ configPath: runtimeConfig.wrangler.configPath,
52
+ persist: { path: runtimeConfig.wrangler.persistDir }
53
+ };
54
+ // TODO: investigate why
55
+ // https://github.com/pi0/nitro-cloudflare-dev/issues/51
56
+ if (runtimeConfig.wrangler.environment) {
57
+ proxyOptions.environment = runtimeConfig.wrangler.environment;
58
+ }
59
+ const proxy = await getPlatformProxy(proxyOptions);
60
+ return proxy;
52
61
  }
53
62
  function _createStubProxy() {
54
- return {
55
- env: {},
56
- cf: {},
57
- ctx: {
58
- waitUntil() {
59
- },
60
- passThroughOnException() {
61
- },
62
- props: {}
63
- },
64
- caches: {
65
- open() {
66
- const result = Promise.resolve(new _CacheStub());
67
- return result;
68
- },
69
- get default() {
70
- return new _CacheStub();
71
- }
72
- },
73
- dispose: () => Promise.resolve()
74
- };
63
+ return {
64
+ env: {},
65
+ cf: {},
66
+ ctx: {
67
+ waitUntil() {},
68
+ passThroughOnException() {},
69
+ props: {}
70
+ },
71
+ caches: {
72
+ open() {
73
+ const result = Promise.resolve(new _CacheStub());
74
+ return result;
75
+ },
76
+ get default() {
77
+ return new _CacheStub();
78
+ }
79
+ },
80
+ dispose: () => Promise.resolve()
81
+ };
75
82
  }
76
83
  class _CacheStub {
77
- delete() {
78
- const result = Promise.resolve(false);
79
- return result;
80
- }
81
- match() {
82
- const result = Promise.resolve(void 0);
83
- return result;
84
- }
85
- put() {
86
- const result = Promise.resolve();
87
- return result;
88
- }
84
+ delete() {
85
+ const result = Promise.resolve(false);
86
+ return result;
87
+ }
88
+ match() {
89
+ const result = Promise.resolve(undefined);
90
+ return result;
91
+ }
92
+ put() {
93
+ const result = Promise.resolve();
94
+ return result;
95
+ }
89
96
  }
@@ -0,0 +1,27 @@
1
+ // Shim for "cloudflare:workers" import in dev environment
2
+
3
+ // unenv shim respects __env__
4
+ export { env } from "unenv/node/internal/process/env";
5
+
6
+ export async function waitUntil(promise) {
7
+ await globalThis.__wait_until__?.(promise);
8
+ }
9
+
10
+ export function withEnv(newEnv, fn) {
11
+ throw new Error("cf.withEnv is not implemented in dev env currently.");
12
+ }
13
+
14
+ class NotImplemented {
15
+ constructor() {
16
+ throw new Error("Not implemented in dev env currently.");
17
+ }
18
+ }
19
+
20
+ export class DurableObject extends NotImplemented {}
21
+ export class RpcPromise extends NotImplemented {}
22
+ export class RpcProperty extends NotImplemented {}
23
+ export class RpcStub extends NotImplemented {}
24
+ export class RpcTarget extends NotImplemented {}
25
+ export class ServiceStub extends NotImplemented {}
26
+ export class WorkerEntrypoint extends NotImplemented {}
27
+ export class WorkflowEntrypoint extends NotImplemented {}
@@ -1 +1,2 @@
1
1
  import "#nitro-internal-pollyfills";
2
+ export {};
@@ -2,16 +2,17 @@ import "#nitro-internal-pollyfills";
2
2
  import { useNitroApp } from "nitro/runtime";
3
3
  import wsAdapter from "crossws/adapters/deno";
4
4
  const nitroApp = useNitroApp();
5
- const ws = import.meta._websocket ? (
6
- // @ts-expect-error
7
- wsAdapter(nitroApp.h3App.websocket)
8
- ) : void 0;
5
+ const ws = import.meta._websocket ? wsAdapter(nitroApp.h3App.websocket) : undefined;
6
+ // TODO: Migrate to srvx to provide request IP
9
7
  Deno.serve((denoReq, info) => {
10
- const req = denoReq;
11
- req.runtime ??= { name: "deno" };
12
- req.runtime.deno ??= { info };
13
- if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
14
- return ws.handleUpgrade(req, info);
15
- }
16
- return nitroApp.fetch(req);
8
+ // srvx compatibility
9
+ const req = denoReq;
10
+ req.runtime ??= { name: "deno" };
11
+ req.runtime.deno ??= { info };
12
+ // TODO: Support remoteAddr
13
+ // https://crossws.unjs.io/adapters/deno
14
+ if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
15
+ return ws.handleUpgrade(req, info);
16
+ }
17
+ return nitroApp.fetch(req);
17
18
  });
@@ -1,6 +1,7 @@
1
1
  import "#nitro-internal-pollyfills";
2
+ // TODO: Declare conflict with crossws
2
3
  declare global {
3
- const Deno: typeof import("@deno/types").Deno;
4
+ const Deno: typeof import("@deno/types").Deno;
4
5
  }
5
6
  declare const _default: {};
6
7
  export default _default;
@@ -6,54 +6,46 @@ import wsAdapter from "crossws/adapters/deno";
6
6
  import destr from "destr";
7
7
  const nitroApp = useNitroApp();
8
8
  if (Deno.env.get("DEBUG")) {
9
- addEventListener(
10
- "unhandledrejection",
11
- (event) => console.error("[unhandledRejection]", event.reason)
12
- );
13
- addEventListener(
14
- "error",
15
- (event) => console.error("[uncaughtException]", event.error)
16
- );
9
+ addEventListener("unhandledrejection", (event) => console.error("[unhandledRejection]", event.reason));
10
+ addEventListener("error", (event) => console.error("[uncaughtException]", event.error));
17
11
  } else {
18
- addEventListener(
19
- "unhandledrejection",
20
- (err) => console.error("[unhandledRejection] " + err)
21
- );
22
- addEventListener(
23
- "error",
24
- (event) => console.error("[uncaughtException] " + event.error)
25
- );
12
+ addEventListener("unhandledrejection", (err) => console.error("[unhandledRejection] " + err));
13
+ addEventListener("error", (event) => console.error("[uncaughtException] " + event.error));
26
14
  }
15
+ // https://deno.land/api@v1.42.4?s=Deno.serve
27
16
  const serveOptions = {
28
- key: Deno.env.get("NITRO_SSL_KEY"),
29
- cert: Deno.env.get("NITRO_SSL_CERT"),
30
- port: destr(Deno.env.get("NITRO_PORT") || Deno.env.get("PORT")) || 3e3,
31
- hostname: Deno.env.get("NITRO_HOST") || Deno.env.get("HOST"),
32
- onListen: (opts) => {
33
- const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, "");
34
- const url = `${opts.hostname}:${opts.port}${baseURL}`;
35
- console.log(`Listening ${url}`);
36
- }
17
+ key: Deno.env.get("NITRO_SSL_KEY"),
18
+ cert: Deno.env.get("NITRO_SSL_CERT"),
19
+ port: destr(Deno.env.get("NITRO_PORT") || Deno.env.get("PORT")) || 3e3,
20
+ hostname: Deno.env.get("NITRO_HOST") || Deno.env.get("HOST"),
21
+ onListen: (opts) => {
22
+ const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, "");
23
+ const url = `${opts.hostname}:${opts.port}${baseURL}`;
24
+ console.log(`Listening ${url}`);
25
+ }
37
26
  };
27
+ // https://github.com/nitrojs/nitro/pull/2373
38
28
  if (!serveOptions.key || !serveOptions.cert) {
39
- delete serveOptions.key;
40
- delete serveOptions.cert;
29
+ delete serveOptions.key;
30
+ delete serveOptions.cert;
41
31
  }
42
32
  Deno.serve(serveOptions, handler);
43
- const ws = import.meta._websocket ? (
44
- // @ts-expect-error
45
- wsAdapter(nitroApp.h3App.websocket)
46
- ) : void 0;
33
+ // Websocket support
34
+ const ws = import.meta._websocket ? wsAdapter(nitroApp.h3App.websocket) : undefined;
47
35
  async function handler(denoReq, info) {
48
- const req = denoReq;
49
- req.runtime ??= { name: "deno" };
50
- req.runtime.deno ??= { info };
51
- if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
52
- return ws.handleUpgrade(req, info);
53
- }
54
- return nitroApp.fetch(req);
36
+ // srvx compatibility
37
+ const req = denoReq;
38
+ req.runtime ??= { name: "deno" };
39
+ req.runtime.deno ??= { info };
40
+ // TODO: Support remoteAddr
41
+ // https://crossws.unjs.io/adapters/deno
42
+ if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
43
+ return ws.handleUpgrade(req, info);
44
+ }
45
+ return nitroApp.fetch(req);
55
46
  }
47
+ // Scheduled tasks
56
48
  if (import.meta._tasks) {
57
- startScheduleRunner();
49
+ startScheduleRunner();
58
50
  }
59
51
  export default {};
@@ -1,3 +1,4 @@
1
1
  import "#nitro-internal-pollyfills";
2
2
  import type { Context } from "@netlify/edge-functions";
3
- export default function netlifyEdge(netlifyReq: Request, context: Context): Promise<any>;
3
+ // https://docs.netlify.com/edge-functions/api/
4
+ export default function netlifyEdge(netlifyReq: Request, context: Context);
@@ -2,16 +2,19 @@ import "#nitro-internal-pollyfills";
2
2
  import { useNitroApp } from "nitro/runtime";
3
3
  import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets";
4
4
  const nitroApp = useNitroApp();
5
+ // https://docs.netlify.com/edge-functions/api/
5
6
  export default async function netlifyEdge(netlifyReq, context) {
6
- const req = netlifyReq;
7
- req.runtime ??= { name: "netlify-edge" };
8
- req.runtime.netlify ??= { context };
9
- const url = new URL(req.url);
10
- if (isPublicAssetURL(url.pathname)) {
11
- return;
12
- }
13
- if (!req.headers.has("x-forwarded-proto") && url.protocol === "https:") {
14
- req.headers.set("x-forwarded-proto", "https");
15
- }
16
- return nitroApp.fetch(req);
7
+ // srvx compatibility
8
+ const req = netlifyReq;
9
+ req.runtime ??= { name: "netlify-edge" };
10
+ // @ts-expect-error (add to srvx types)
11
+ req.runtime.netlify ??= { context };
12
+ const url = new URL(req.url);
13
+ if (isPublicAssetURL(url.pathname)) {
14
+ return;
15
+ }
16
+ if (!req.headers.has("x-forwarded-proto") && url.protocol === "https:") {
17
+ req.headers.set("x-forwarded-proto", "https");
18
+ }
19
+ return nitroApp.fetch(req);
17
20
  }
@@ -3,22 +3,16 @@ import { useNitroApp } from "nitro/runtime";
3
3
  const nitroApp = useNitroApp();
4
4
  const ONE_YEAR_IN_SECONDS = 365 * 24 * 60 * 60;
5
5
  const handler = async (req) => {
6
- const response = await nitroApp.fetch(req);
7
- const isr = (req.context?.routeRules || {})?.isr?.options;
8
- if (isr) {
9
- const maxAge = typeof isr === "number" ? isr : ONE_YEAR_IN_SECONDS;
10
- const revalidateDirective = typeof isr === "number" ? `stale-while-revalidate=${ONE_YEAR_IN_SECONDS}` : "must-revalidate";
11
- if (!response.headers.has("Cache-Control")) {
12
- response.headers.set(
13
- "Cache-Control",
14
- "public, max-age=0, must-revalidate"
15
- );
16
- }
17
- response.headers.set(
18
- "Netlify-CDN-Cache-Control",
19
- `public, max-age=${maxAge}, ${revalidateDirective}, durable`
20
- );
21
- }
22
- return response;
6
+ const response = await nitroApp.fetch(req);
7
+ const isr = (req.context?.routeRules || {})?.isr?.options;
8
+ if (isr) {
9
+ const maxAge = typeof isr === "number" ? isr : ONE_YEAR_IN_SECONDS;
10
+ const revalidateDirective = typeof isr === "number" ? `stale-while-revalidate=${ONE_YEAR_IN_SECONDS}` : "must-revalidate";
11
+ if (!response.headers.has("Cache-Control")) {
12
+ response.headers.set("Cache-Control", "public, max-age=0, must-revalidate");
13
+ }
14
+ response.headers.set("Netlify-CDN-Cache-Control", `public, max-age=${maxAge}, ${revalidateDirective}, durable`);
15
+ }
16
+ return response;
23
17
  };
24
18
  export default handler;
@@ -1,58 +1,59 @@
1
1
  import cluster from "node:cluster";
2
2
  import os from "node:os";
3
- import {
4
- getGracefulShutdownConfig,
5
- trapUnhandledNodeErrors
6
- } from "nitro/runtime/internal";
3
+ import { getGracefulShutdownConfig, trapUnhandledNodeErrors } from "nitro/runtime/internal";
7
4
  function runMaster() {
8
- const numberOfWorkers = Number.parseInt(process.env.NITRO_CLUSTER_WORKERS || "") || (os.cpus().length > 0 ? os.cpus().length : 1);
9
- for (let i = 0; i < numberOfWorkers; i++) {
10
- cluster.fork();
11
- }
12
- let isShuttingDown = false;
13
- cluster.on("exit", () => {
14
- if (!isShuttingDown) {
15
- cluster.fork();
16
- }
17
- });
18
- const shutdownConfig = getGracefulShutdownConfig();
19
- if (!shutdownConfig.disabled) {
20
- async function onShutdown() {
21
- if (isShuttingDown) {
22
- return;
23
- }
24
- isShuttingDown = true;
25
- await new Promise((resolve) => {
26
- const timeout = setTimeout(() => {
27
- console.warn("Timeout reached for graceful shutdown. Forcing exit.");
28
- resolve();
29
- }, shutdownConfig.timeout);
30
- cluster.on("exit", () => {
31
- if (Object.values(cluster.workers || {}).every((w) => !w || w.isDead())) {
32
- clearTimeout(timeout);
33
- resolve();
34
- } else {
35
- }
36
- });
37
- });
38
- if (shutdownConfig.forceExit) {
39
- process.exit(0);
40
- }
41
- }
42
- for (const signal of shutdownConfig.signals) {
43
- process.once(signal, onShutdown);
44
- }
45
- }
5
+ const numberOfWorkers = Number.parseInt(process.env.NITRO_CLUSTER_WORKERS || "") || (os.cpus().length > 0 ? os.cpus().length : 1);
6
+ for (let i = 0; i < numberOfWorkers; i++) {
7
+ cluster.fork();
8
+ }
9
+ // Restore worker on exit
10
+ let isShuttingDown = false;
11
+ cluster.on("exit", () => {
12
+ if (!isShuttingDown) {
13
+ cluster.fork();
14
+ }
15
+ });
16
+ // Graceful shutdown
17
+ const shutdownConfig = getGracefulShutdownConfig();
18
+ if (!shutdownConfig.disabled) {
19
+ async function onShutdown() {
20
+ if (isShuttingDown) {
21
+ return;
22
+ }
23
+ isShuttingDown = true;
24
+ await new Promise((resolve) => {
25
+ const timeout = setTimeout(() => {
26
+ console.warn("Timeout reached for graceful shutdown. Forcing exit.");
27
+ resolve();
28
+ }, shutdownConfig.timeout);
29
+ cluster.on("exit", () => {
30
+ if (Object.values(cluster.workers || {}).every((w) => !w || w.isDead())) {
31
+ clearTimeout(timeout);
32
+ resolve();
33
+ } else {}
34
+ });
35
+ });
36
+ if (shutdownConfig.forceExit) {
37
+ // eslint-disable-next-line unicorn/no-process-exit
38
+ process.exit(0);
39
+ }
40
+ }
41
+ for (const signal of shutdownConfig.signals) {
42
+ process.once(signal, onShutdown);
43
+ }
44
+ }
46
45
  }
47
46
  function runWorker() {
48
- import("./node-server.mjs").catch((error) => {
49
- console.error(error);
50
- process.exit(1);
51
- });
47
+ import("./node-server.ts").catch((error) => {
48
+ console.error(error);
49
+ // eslint-disable-next-line unicorn/no-process-exit
50
+ process.exit(1);
51
+ });
52
52
  }
53
+ // Trap unhandled errors
53
54
  trapUnhandledNodeErrors();
54
55
  if (cluster.isPrimary) {
55
- runMaster();
56
+ runMaster();
56
57
  } else {
57
- runWorker();
58
+ runWorker();
58
59
  }
@@ -1,4 +1,5 @@
1
1
  import "#nitro-internal-pollyfills";
2
- export declare const middleware: any;
2
+ export declare const middleware: unknown;
3
+ // TODO
3
4
  /** @experimental */
4
- export declare const websocket: undefined;
5
+ export declare const websocket: unknown;
@@ -1,14 +1,15 @@
1
1
  import "#nitro-internal-pollyfills";
2
2
  import { toNodeHandler } from "srvx/node";
3
3
  import { useNitroApp } from "nitro/runtime";
4
- import {
5
- startScheduleRunner,
6
- trapUnhandledNodeErrors
7
- } from "nitro/runtime/internal";
4
+ import { startScheduleRunner, trapUnhandledNodeErrors } from "nitro/runtime/internal";
8
5
  const nitroApp = useNitroApp();
9
6
  export const middleware = toNodeHandler(nitroApp.fetch);
10
- export const websocket = import.meta._websocket ? void 0 : void 0;
7
+ // TODO
8
+ /** @experimental */
9
+ export const websocket = import.meta._websocket ? undefined : undefined;
10
+ // Trap unhandled errors
11
11
  trapUnhandledNodeErrors();
12
+ // Scheduled tasks
12
13
  if (import.meta._tasks) {
13
- startScheduleRunner();
14
+ startScheduleRunner();
14
15
  }
@@ -5,40 +5,50 @@ import wsAdapter from "crossws/adapters/node";
5
5
  import destr from "destr";
6
6
  import { toNodeHandler } from "srvx/node";
7
7
  import { useNitroApp, useRuntimeConfig } from "nitro/runtime";
8
- import {
9
- setupGracefulShutdown,
10
- startScheduleRunner,
11
- trapUnhandledNodeErrors
12
- } from "nitro/runtime/internal";
8
+ import { setupGracefulShutdown, startScheduleRunner, trapUnhandledNodeErrors } from "nitro/runtime/internal";
13
9
  const cert = process.env.NITRO_SSL_CERT;
14
10
  const key = process.env.NITRO_SSL_KEY;
15
11
  const nitroApp = useNitroApp();
16
- const server = cert && key ? new HttpsServer({ key, cert }, toNodeHandler(nitroApp.fetch)) : new HttpServer(toNodeHandler(nitroApp.fetch));
12
+ const server = cert && key ? new HttpsServer({
13
+ key,
14
+ cert
15
+ }, toNodeHandler(nitroApp.fetch)) : new HttpServer(toNodeHandler(nitroApp.fetch));
17
16
  const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3e3;
18
17
  const host = process.env.NITRO_HOST || process.env.HOST;
19
18
  const path = process.env.NITRO_UNIX_SOCKET;
20
- const listener = server.listen(path ? { path } : { port, host }, (err) => {
21
- if (err) {
22
- console.error(err);
23
- process.exit(1);
24
- }
25
- const protocol = cert && key ? "https" : "http";
26
- const addressInfo = listener.address();
27
- if (typeof addressInfo === "string") {
28
- console.log(`Listening on unix socket ${addressInfo}`);
29
- return;
30
- }
31
- const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, "");
32
- const url = `${protocol}://${addressInfo.family === "IPv6" ? `[${addressInfo.address}]` : addressInfo.address}:${addressInfo.port}${baseURL}`;
33
- console.log(`Listening on ${url}`);
19
+ // @ts-ignore
20
+ const listener = server.listen(path ? { path } : {
21
+ port,
22
+ host
23
+ }, (err) => {
24
+ if (err) {
25
+ console.error(err);
26
+ // eslint-disable-next-line unicorn/no-process-exit
27
+ process.exit(1);
28
+ }
29
+ const protocol = cert && key ? "https" : "http";
30
+ const addressInfo = listener.address();
31
+ if (typeof addressInfo === "string") {
32
+ console.log(`Listening on unix socket ${addressInfo}`);
33
+ return;
34
+ }
35
+ const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, "");
36
+ const url = `${protocol}://${addressInfo.family === "IPv6" ? `[${addressInfo.address}]` : addressInfo.address}:${addressInfo.port}${baseURL}`;
37
+ console.log(`Listening on ${url}`);
34
38
  });
39
+ // Trap unhandled errors
35
40
  trapUnhandledNodeErrors();
36
- setupGracefulShutdown(listener, nitroApp);
41
+ // Graceful shutdown
42
+ setupGracefulShutdown(listener);
43
+ // Websocket support
44
+ // https://crossws.unjs.io/adapters/node
37
45
  if (import.meta._websocket) {
38
- const { handleUpgrade } = wsAdapter(nitroApp.h3App.websocket);
39
- server.on("upgrade", handleUpgrade);
46
+ // @ts-expect-error
47
+ const { handleUpgrade } = wsAdapter(nitroApp.h3App.websocket);
48
+ server.on("upgrade", handleUpgrade);
40
49
  }
50
+ // Scheduled tasks
41
51
  if (import.meta._tasks) {
42
- startScheduleRunner();
52
+ startScheduleRunner();
43
53
  }
44
54
  export default {};
@@ -1,5 +1,3 @@
1
1
  import "#nitro-internal-pollyfills";
2
- declare const _default: {
3
- fetch: any;
4
- };
2
+ declare const _default: {};
5
3
  export default _default;
@@ -1,6 +1,4 @@
1
1
  import "#nitro-internal-pollyfills";
2
2
  import { useNitroApp } from "nitro/runtime";
3
3
  const nitroApp = useNitroApp();
4
- export default {
5
- fetch: nitroApp.fetch
6
- };
4
+ export default { fetch: nitroApp.fetch };