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.
- package/dist/_build/common.mjs +763 -0
- package/dist/_build/rolldown.mjs +216 -0
- package/dist/_build/rollup.mjs +359 -0
- package/dist/_build/vite.build.mjs +67 -0
- package/dist/_build/vite.plugin.mjs +747 -0
- package/dist/_chunks/B-7HiF0V.mjs +1303 -0
- package/dist/_chunks/B3asVbT4.mjs +151 -0
- package/dist/_chunks/B5ooyfLk.mjs +372 -0
- package/dist/_chunks/DXMHy5ca.mjs +43 -0
- package/dist/_dev.d.mts +12 -0
- package/dist/_dev.mjs +675 -0
- package/dist/_libs/acorn.mjs +5034 -0
- package/dist/_libs/c12.mjs +2798 -0
- package/dist/_libs/chokidar.mjs +1560 -0
- package/dist/_libs/citty.mjs +333 -0
- package/dist/_libs/commondir.mjs +22 -0
- package/dist/_libs/compatx.mjs +46 -0
- package/dist/_libs/confbox.mjs +2920 -0
- package/dist/_libs/debug.mjs +848 -0
- package/dist/_libs/deepmerge.mjs +86 -0
- package/dist/_libs/depd.mjs +314 -0
- package/dist/_libs/dot-prop.mjs +138 -0
- package/dist/_libs/duplexer.mjs +71 -0
- package/dist/_libs/ee-first.mjs +68 -0
- package/dist/_libs/encodeurl.mjs +49 -0
- package/dist/_libs/escape-html.mjs +58 -0
- package/dist/_libs/escape-string-regexp.mjs +8 -0
- package/dist/_libs/estree-walker.mjs +330 -0
- package/dist/_libs/etag.mjs +75 -0
- package/dist/_libs/fdir.mjs +514 -0
- package/dist/_libs/fresh.mjs +85 -0
- package/dist/_libs/function-bind.mjs +63 -0
- package/dist/_libs/gen-mapping.mjs +612 -0
- package/dist/_libs/giget.mjs +19076 -0
- package/dist/_libs/gzip-size.mjs +21 -0
- package/dist/_libs/hasown.mjs +14 -0
- package/dist/_libs/http-errors.mjs +436 -0
- package/dist/_libs/httpxy.mjs +410 -0
- package/dist/_libs/is-core-module.mjs +220 -0
- package/dist/_libs/is-module.mjs +13 -0
- package/dist/_libs/is-reference.mjs +32 -0
- package/dist/_libs/js-tokens.mjs +382 -0
- package/dist/_libs/klona.mjs +90 -0
- package/dist/_libs/knitwork.mjs +124 -0
- package/dist/_libs/local-pkg.mjs +1686 -0
- package/dist/_libs/magic-string.mjs +939 -0
- package/dist/_libs/mime-db.mjs +7642 -0
- package/dist/_libs/mime-types.mjs +162 -0
- package/dist/_libs/mime.mjs +1391 -0
- package/dist/_libs/node-fetch-native.mjs +173 -0
- package/dist/_libs/on-finished.mjs +170 -0
- package/dist/_libs/parseurl.mjs +103 -0
- package/dist/_libs/path-parse.mjs +47 -0
- package/dist/_libs/pathe.mjs +41 -0
- package/dist/_libs/picomatch.mjs +1673 -0
- package/dist/_libs/plugin-alias.mjs +64 -0
- package/dist/_libs/plugin-commonjs.mjs +1489 -0
- package/dist/_libs/plugin-inject.mjs +135 -0
- package/dist/_libs/plugin-json.mjs +36 -0
- package/dist/_libs/plugin-node-resolve.mjs +1553 -0
- package/dist/_libs/plugin-replace.mjs +104 -0
- package/dist/_libs/pretty-bytes.mjs +116 -0
- package/dist/_libs/range-parser.mjs +102 -0
- package/dist/_libs/remapping.mjs +117 -0
- package/dist/_libs/rou3.mjs +311 -0
- package/dist/_libs/send.mjs +857 -0
- package/dist/_libs/serve-static.mjs +124 -0
- package/dist/_libs/std-env.mjs +158 -0
- package/dist/_libs/strip-literal.mjs +51 -0
- package/dist/_libs/tinyglobby.mjs +292 -0
- package/dist/_libs/ultrahtml.mjs +138 -0
- package/dist/_libs/unimport.mjs +3520 -0
- package/dist/_libs/untyped.mjs +271 -0
- package/dist/_libs/unwasm.mjs +5825 -0
- package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
- package/dist/_presets.mjs +1723 -0
- package/dist/builder.d.mts +54 -0
- package/dist/builder.mjs +45 -0
- package/dist/cli/_chunks/build.mjs +43 -0
- package/dist/cli/_chunks/common.mjs +15 -0
- package/dist/cli/_chunks/detect-acorn.mjs +12 -0
- package/dist/cli/_chunks/dev.mjs +79 -0
- package/dist/cli/_chunks/dist.mjs +3 -0
- package/dist/cli/_chunks/dist2.mjs +4 -0
- package/dist/cli/_chunks/esm.mjs +3 -0
- package/dist/cli/_chunks/json5.mjs +4 -0
- package/dist/cli/_chunks/jsonc.mjs +4 -0
- package/dist/cli/_chunks/list.mjs +27 -0
- package/dist/cli/_chunks/multipart-parser.mjs +6 -0
- package/dist/cli/_chunks/prepare.mjs +19 -0
- package/dist/cli/_chunks/run.mjs +55 -0
- package/dist/cli/_chunks/task.mjs +16 -0
- package/dist/cli/_chunks/toml.mjs +4 -0
- package/dist/cli/_chunks/yaml.mjs +4 -0
- package/dist/cli/index.d.mts +1 -1
- package/dist/cli/index.mjs +20 -476
- package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
- package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
- package/dist/node_modules/@speed-highlight/core/package.json +7 -3
- package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
- package/dist/node_modules/cookie-es/package.json +37 -0
- package/dist/node_modules/hookable/dist/index.mjs +243 -266
- package/dist/node_modules/hookable/package.json +29 -26
- package/dist/node_modules/rendu/dist/index.mjs +380 -0
- package/dist/node_modules/rendu/package.json +47 -0
- package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +44 -38
- package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +9 -12
- package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
- package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
- package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
- package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
- package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
- package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
- package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
- package/dist/presets/azure/runtime/_utils.mjs +43 -43
- package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
- package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
- package/dist/presets/bun/runtime/bun.d.mts +1 -0
- package/dist/presets/bun/runtime/bun.mjs +18 -17
- package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +79 -87
- package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +55 -61
- package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
- package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
- package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
- package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
- package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
- package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
- package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
- package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
- package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
- package/dist/presets/deno/runtime/deno-server.mjs +31 -39
- package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
- package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
- package/dist/presets/netlify/runtime/netlify.mjs +11 -17
- package/dist/presets/node/runtime/node-cluster.mjs +49 -48
- package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
- package/dist/presets/node/runtime/node-middleware.mjs +7 -6
- package/dist/presets/node/runtime/node-server.mjs +34 -24
- package/dist/presets/standard/runtime/server.d.mts +1 -3
- package/dist/presets/standard/runtime/server.mjs +1 -3
- package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
- package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
- package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
- package/dist/presets/vercel/runtime/vercel.mjs +15 -14
- package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
- package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
- package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
- package/dist/runtime/index.d.mts +13 -2
- package/dist/runtime/index.mjs +13 -8
- package/dist/runtime/internal/app.d.mts +3 -1
- package/dist/runtime/internal/app.mjs +179 -140
- package/dist/runtime/internal/cache.d.mts +10 -4
- package/dist/runtime/internal/cache.mjs +247 -216
- package/dist/runtime/internal/context.d.mts +9 -9
- package/dist/runtime/internal/context.mjs +17 -10
- package/dist/runtime/internal/database.mjs +8 -10
- package/dist/runtime/internal/error/dev.d.mts +5 -4
- package/dist/runtime/internal/error/dev.mjs +106 -105
- package/dist/runtime/internal/error/prod.d.mts +5 -4
- package/dist/runtime/internal/error/prod.mjs +51 -59
- package/dist/runtime/internal/error/utils.d.mts +4 -4
- package/dist/runtime/internal/error/utils.mjs +1 -1
- package/dist/runtime/internal/index.d.mts +2 -0
- package/dist/runtime/internal/index.mjs +2 -0
- package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
- package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
- package/dist/runtime/internal/meta.d.mts +1 -1
- package/dist/runtime/internal/meta.mjs +1 -1
- package/dist/runtime/internal/plugin.d.mts +2 -2
- package/dist/runtime/internal/plugin.mjs +1 -1
- package/dist/runtime/internal/renderer.mjs +40 -32
- package/dist/runtime/internal/route-rules.d.mts +8 -8
- package/dist/runtime/internal/route-rules.mjs +53 -51
- package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
- package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
- package/dist/runtime/internal/routes/openapi.d.mts +1 -0
- package/dist/runtime/internal/routes/openapi.mjs +81 -87
- package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
- package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
- package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
- package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
- package/dist/runtime/internal/routes/scalar.d.mts +1 -0
- package/dist/runtime/internal/routes/scalar.mjs +22 -23
- package/dist/runtime/internal/routes/swagger.d.mts +1 -0
- package/dist/runtime/internal/routes/swagger.mjs +9 -11
- package/dist/runtime/internal/runtime-config.d.mts +4 -4
- package/dist/runtime/internal/runtime-config.mjs +40 -35
- package/dist/runtime/internal/shutdown.d.mts +2 -8
- package/dist/runtime/internal/shutdown.mjs +32 -30
- package/dist/runtime/internal/static.mjs +63 -74
- package/dist/runtime/internal/storage.mjs +2 -2
- package/dist/runtime/internal/task.d.mts +6 -6
- package/dist/runtime/internal/task.mjs +56 -60
- package/dist/runtime/internal/utils.d.mts +1 -1
- package/dist/runtime/internal/utils.mjs +4 -10
- package/dist/types/index.d.mts +2594 -2286
- package/dist/types/index.mjs +1 -1
- package/dist/vite.d.mts +56 -47
- package/dist/vite.mjs +55 -68
- package/lib/index.d.mts +1 -0
- package/lib/index.mjs +1 -0
- package/lib/runtime/meta.mjs +35 -0
- package/package.json +49 -50
- package/dist/_chunks/app.mjs +0 -19797
- package/dist/_chunks/build.mjs +0 -84
- package/dist/_chunks/build2.mjs +0 -318
- package/dist/_chunks/build3.mjs +0 -6452
- package/dist/_chunks/detect-acorn.mjs +0 -503
- package/dist/_chunks/index.mjs +0 -22242
- package/dist/_chunks/index2.mjs +0 -297
- package/dist/_chunks/index3.mjs +0 -1058
- package/dist/_chunks/index4.mjs +0 -1206
- package/dist/_chunks/info.mjs +0 -11157
- package/dist/_chunks/json5.mjs +0 -68
- package/dist/_chunks/jsonc.mjs +0 -51
- package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
- package/dist/_chunks/plugin.mjs +0 -960
- package/dist/_chunks/server.mjs +0 -254
- package/dist/_chunks/snapshot.mjs +0 -284
- package/dist/_chunks/toml.mjs +0 -259
- package/dist/_chunks/yaml.mjs +0 -86
- package/dist/cli/build.mjs +0 -54
- package/dist/cli/common.mjs +0 -13
- package/dist/cli/dev.mjs +0 -95
- package/dist/cli/index2.mjs +0 -17
- package/dist/cli/list.mjs +0 -34
- package/dist/cli/prepare.mjs +0 -24
- package/dist/cli/run.mjs +0 -60
- package/dist/index.d.mts +0 -52
- package/dist/index.mjs +0 -55
- package/dist/node_modules/klona/dist/index.mjs +0 -81
- package/dist/node_modules/klona/full/index.mjs +0 -53
- package/dist/node_modules/klona/package.json +0 -74
- package/dist/node_modules/std-env/dist/index.mjs +0 -1
- package/dist/node_modules/std-env/package.json +0 -46
- package/dist/presets.mjs +0 -2460
- package/dist/runtime/internal/debug.d.mts +0 -2
- package/dist/runtime/internal/debug.mjs +0 -5
- package/dist/runtime/internal/empty.d.mts +0 -0
- package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
- package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
- package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
- package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
- package/lib/runtime-meta.mjs +0 -38
- /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +0 -0
|
@@ -1,89 +1,96 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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 {}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
});
|
|
@@ -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
|
-
|
|
10
|
-
|
|
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
|
-
|
|
19
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
40
|
-
|
|
29
|
+
delete serveOptions.key;
|
|
30
|
+
delete serveOptions.cert;
|
|
41
31
|
}
|
|
42
32
|
Deno.serve(serveOptions, handler);
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
56
|
+
runMaster();
|
|
56
57
|
} else {
|
|
57
|
-
|
|
58
|
+
runWorker();
|
|
58
59
|
}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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({
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
41
|
+
// Graceful shutdown
|
|
42
|
+
setupGracefulShutdown(listener);
|
|
43
|
+
// Websocket support
|
|
44
|
+
// https://crossws.unjs.io/adapters/node
|
|
37
45
|
if (import.meta._websocket) {
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
52
|
+
startScheduleRunner();
|
|
43
53
|
}
|
|
44
54
|
export default {};
|