nitro-nightly 3.0.1-20260121-180512-722efdcf → 3.0.1-20260121-183047-b2b37883

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.
@@ -17408,7 +17408,8 @@ function baseBuildConfig(nitro) {
17408
17408
  client: false,
17409
17409
  baseURL: nitro.options.baseURL,
17410
17410
  _asyncContext: nitro.options.experimental.asyncContext,
17411
- _tasks: nitro.options.experimental.tasks
17411
+ _tasks: nitro.options.experimental.tasks,
17412
+ _websocket: nitro.options.features.websocket ?? nitro.options.experimental.websocket
17412
17413
  };
17413
17414
  const replacements = {
17414
17415
  ...Object.fromEntries(Object.entries(importMetaInjections).map(([key, val]) => [`import.meta.${key}`, JSON.stringify(val)])),
@@ -17469,7 +17470,7 @@ function libChunkName(id) {
17469
17470
  }
17470
17471
  function getChunkName(chunk, nitro) {
17471
17472
  if (chunk.name === "rolldown-runtime") return "_runtime.mjs";
17472
- if (chunk.moduleIds.every((id) => id.includes("node_modules"))) {
17473
+ if (chunk.moduleIds.every((id) => /node_modules[/\\]\w/.test(id))) {
17473
17474
  const pkgNames = [...new Set(chunk.moduleIds.map((id) => id.match(/.*[/\\]node_modules[/\\](?<package>@[^/\\]+[/\\][^/\\]+|[^/\\]+)/)?.groups?.package).filter(Boolean).map((name) => name.split(/[/\\]/).pop()).filter(Boolean))].sort((a$1, b$2) => a$1.length - b$2.length);
17474
17475
  let chunkName = "";
17475
17476
  for (const name of pkgNames) {
@@ -17571,8 +17572,7 @@ function featureFlags(nitro) {
17571
17572
  hasRoutedMiddleware: nitro.routing.routedMiddleware.hasRoutes(),
17572
17573
  hasGlobalMiddleware: nitro.routing.globalMiddleware.length > 0,
17573
17574
  hasPlugins: nitro.options.plugins.length > 0,
17574
- hasHooks: nitro.options.features?.runtimeHooks ?? nitro.options.plugins.length > 0,
17575
- hasWebSocket: nitro.options.features?.websocket ?? nitro.options.experimental.websocket ?? false
17575
+ hasHooks: nitro.options.features?.runtimeHooks ?? nitro.options.plugins.length > 0
17576
17576
  };
17577
17577
  return Object.entries(featureFlags).map(([key, value]) => `export const ${key} = ${Boolean(value)};`).join("\n");
17578
17578
  }
@@ -8,7 +8,6 @@ import { useNitroApp, useNitroHooks } from "nitro/app";
8
8
  import { startScheduleRunner } from "#nitro/runtime/task";
9
9
  import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
10
10
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
11
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
12
11
  // Listen for shutdown signal from runner
13
12
  parentPort?.on("message", (msg) => {
14
13
  if (msg && msg.event === "shutdown") {
@@ -25,7 +24,7 @@ listen().catch((error) => {
25
24
  return shutdown();
26
25
  });
27
26
  // https://crossws.unjs.io/adapters/node
28
- if (hasWebSocket) {
27
+ if (import.meta._websocket) {
29
28
  const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
30
29
  server.on("upgrade", handleUpgrade);
31
30
  }
@@ -5,7 +5,6 @@ import { useNitroApp } from "nitro/app";
5
5
  import { startScheduleRunner } from "#nitro/runtime/task";
6
6
  import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
7
7
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
8
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
9
8
  const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
10
9
  const host = process.env.NITRO_HOST || process.env.HOST;
11
10
  const cert = process.env.NITRO_SSL_CERT;
@@ -13,8 +12,8 @@ const key = process.env.NITRO_SSL_KEY;
13
12
  // const socketPath = process.env.NITRO_UNIX_SOCKET; // TODO
14
13
  const nitroApp = useNitroApp();
15
14
  let _fetch = nitroApp.fetch;
16
- const ws = hasWebSocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
17
- if (hasWebSocket) {
15
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
16
+ if (import.meta._websocket) {
18
17
  _fetch = (req) => {
19
18
  if (req.headers.get("upgrade") === "websocket") {
20
19
  return ws.handleUpgrade(req, req.runtime.bun.server);
@@ -30,7 +29,7 @@ serve({
30
29
  key
31
30
  } : undefined,
32
31
  fetch: _fetch,
33
- bun: { websocket: hasWebSocket ? ws?.websocket : undefined }
32
+ bun: { websocket: import.meta._websocket ? ws?.websocket : undefined }
34
33
  });
35
34
  trapUnhandledErrors();
36
35
  // Scheduled tasks
@@ -5,7 +5,6 @@ import { createHandler, augmentReq } from "./_module-handler.mjs";
5
5
  import { useNitroApp, useNitroHooks } from "nitro/app";
6
6
  import { isPublicAssetURL } from "#nitro/virtual/public-assets";
7
7
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
8
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
9
8
  const DURABLE_BINDING = "$DurableObject";
10
9
  const DURABLE_INSTANCE = "server";
11
10
  const nitroApp = useNitroApp();
@@ -18,7 +17,7 @@ const getDurableStub = (env) => {
18
17
  const id = binding.idFromName(DURABLE_INSTANCE);
19
18
  return binding.get(id);
20
19
  };
21
- const ws = hasWebSocket ? wsAdapter({
20
+ const ws = import.meta._websocket ? wsAdapter({
22
21
  resolve: resolveWebsocketHooks,
23
22
  instanceName: DURABLE_INSTANCE,
24
23
  bindingName: DURABLE_BINDING
@@ -32,7 +31,7 @@ export default createHandler({ fetch(request, env, context, url, ctxExt) {
32
31
  ctxExt.durableFetch = (req = request) => getDurableStub(env).fetch(req);
33
32
  // Websocket upgrade
34
33
  // https://crossws.unjs.io/adapters/cloudflare#durable-objects
35
- if (hasWebSocket && request.headers.get("upgrade") === "websocket") {
34
+ if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
36
35
  return ws.handleUpgrade(request, env, context);
37
36
  }
38
37
  } });
@@ -43,7 +42,7 @@ export class $DurableObject extends DurableObject {
43
42
  state,
44
43
  env
45
44
  }) || Promise.resolve());
46
- if (hasWebSocket) {
45
+ if (import.meta._websocket) {
47
46
  ws.handleDurableInit(this, state, env);
48
47
  }
49
48
  }
@@ -52,7 +51,7 @@ export class $DurableObject extends DurableObject {
52
51
  env: this.env,
53
52
  context: this.ctx
54
53
  });
55
- if (hasWebSocket && request.headers.get("upgrade") === "websocket") {
54
+ if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
56
55
  return ws.handleDurableUpgrade(this, request);
57
56
  }
58
57
  return nitroApp.fetch(request);
@@ -61,12 +60,12 @@ export class $DurableObject extends DurableObject {
61
60
  this.ctx.waitUntil(nitroHooks.callHook("cloudflare:durable:alarm", this) || Promise.resolve());
62
61
  }
63
62
  async webSocketMessage(client, message) {
64
- if (hasWebSocket) {
63
+ if (import.meta._websocket) {
65
64
  return ws.handleDurableMessage(this, client, message);
66
65
  }
67
66
  }
68
67
  async webSocketClose(client, code, reason, wasClean) {
69
- if (hasWebSocket) {
68
+ if (import.meta._websocket) {
70
69
  return ws.handleDurableClose(this, client, code, reason, wasClean);
71
70
  }
72
71
  }
@@ -3,8 +3,7 @@ import wsAdapter from "crossws/adapters/cloudflare";
3
3
  import { isPublicAssetURL } from "#nitro/virtual/public-assets";
4
4
  import { createHandler } from "./_module-handler.mjs";
5
5
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
6
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
7
- const ws = hasWebSocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
6
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
8
7
  export default createHandler({ fetch(cfRequest, env, context, url) {
9
8
  // Static assets fallback (optional binding)
10
9
  if (env.ASSETS && isPublicAssetURL(url.pathname)) {
@@ -12,7 +11,7 @@ export default createHandler({ fetch(cfRequest, env, context, url) {
12
11
  }
13
12
  // Websocket upgrade
14
13
  // https://crossws.unjs.io/adapters/cloudflare
15
- if (hasWebSocket && cfRequest.headers.get("upgrade") === "websocket") {
14
+ if (import.meta._websocket && cfRequest.headers.get("upgrade") === "websocket") {
16
15
  return ws.handleUpgrade(cfRequest, env, context);
17
16
  }
18
17
  } });
@@ -4,10 +4,9 @@ import { useNitroApp } from "nitro/app";
4
4
  import { isPublicAssetURL } from "#nitro/virtual/public-assets";
5
5
  import { runCronTasks } from "#nitro/runtime/task";
6
6
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
7
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
8
7
  import { augmentReq } from "./_module-handler.mjs";
9
8
  const nitroApp = useNitroApp();
10
- const ws = hasWebSocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
9
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
11
10
  export default {
12
11
  async fetch(cfReq, env, context) {
13
12
  augmentReq(cfReq, {
@@ -16,7 +15,7 @@ export default {
16
15
  });
17
16
  // Websocket upgrade
18
17
  // https://crossws.unjs.io/adapters/cloudflare
19
- if (hasWebSocket && cfReq.headers.get("upgrade") === "websocket") {
18
+ if (import.meta._websocket && cfReq.headers.get("upgrade") === "websocket") {
20
19
  return ws.handleUpgrade(cfReq, env, context);
21
20
  }
22
21
  const url = new URL(cfReq.url);
@@ -2,9 +2,8 @@ import "#nitro/virtual/polyfills";
2
2
  import wsAdapter from "crossws/adapters/deno";
3
3
  import { useNitroApp } from "nitro/app";
4
4
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
5
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
6
5
  const nitroApp = useNitroApp();
7
- const ws = hasWebSocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
6
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
8
7
  // TODO: Migrate to srvx to provide request IP
9
8
  Deno.serve((denoReq, info) => {
10
9
  // srvx compatibility
@@ -13,7 +12,7 @@ Deno.serve((denoReq, info) => {
13
12
  req.runtime.deno ??= { info };
14
13
  // TODO: Support remoteAddr
15
14
  // https://crossws.unjs.io/adapters/deno
16
- if (hasWebSocket && req.headers.get("upgrade") === "websocket") {
15
+ if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
17
16
  return ws.handleUpgrade(req, info);
18
17
  }
19
18
  return nitroApp.fetch(req);
@@ -5,7 +5,6 @@ import { useNitroApp } from "nitro/app";
5
5
  import { startScheduleRunner } from "#nitro/runtime/task";
6
6
  import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
7
7
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
8
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
9
8
  const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
10
9
  const host = process.env.NITRO_HOST || process.env.HOST;
11
10
  const cert = process.env.NITRO_SSL_CERT;
@@ -13,7 +12,7 @@ const key = process.env.NITRO_SSL_KEY;
13
12
  // const socketPath = process.env.NITRO_UNIX_SOCKET; // TODO
14
13
  const nitroApp = useNitroApp();
15
14
  let _fetch = nitroApp.fetch;
16
- if (hasWebSocket) {
15
+ if (import.meta._websocket) {
17
16
  const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
18
17
  _fetch = (req) => {
19
18
  if (req.headers.get("upgrade") === "websocket") {
@@ -6,7 +6,6 @@ import { useNitroApp } from "nitro/app";
6
6
  import { startScheduleRunner } from "#nitro/runtime/task";
7
7
  import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
8
8
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
9
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
10
9
  const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
11
10
  const host = process.env.NITRO_HOST || process.env.HOST;
12
11
  const cert = process.env.NITRO_SSL_CERT;
@@ -28,7 +27,7 @@ const server = serve({
28
27
  silent: clusterId ? clusterId !== "1" : undefined,
29
28
  fetch: nitroApp.fetch
30
29
  });
31
- if (hasWebSocket) {
30
+ if (import.meta._websocket) {
32
31
  const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
33
32
  server.node.server.on("upgrade", (req, socket, head) => {
34
33
  handleUpgrade(
@@ -4,10 +4,9 @@ import wsAdapter from "crossws/adapters/node";
4
4
  import { useNitroApp } from "nitro/app";
5
5
  import { startScheduleRunner } from "#nitro/runtime/task";
6
6
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
7
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
8
7
  const nitroApp = useNitroApp();
9
8
  export const middleware = toNodeHandler(nitroApp.fetch);
10
- const ws = hasWebSocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
9
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
11
10
  export const handleUpgrade = ws?.handleUpgrade;
12
11
  // Scheduled tasks
13
12
  if (import.meta._tasks) {
@@ -5,7 +5,6 @@ import { useNitroApp } from "nitro/app";
5
5
  import { startScheduleRunner } from "#nitro/runtime/task";
6
6
  import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
7
7
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
8
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
9
8
  const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
10
9
  const host = process.env.NITRO_HOST || process.env.HOST;
11
10
  const cert = process.env.NITRO_SSL_CERT;
@@ -21,7 +20,7 @@ const server = serve({
21
20
  } : undefined,
22
21
  fetch: nitroApp.fetch
23
22
  });
24
- if (hasWebSocket) {
23
+ if (import.meta._websocket) {
25
24
  const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
26
25
  server.node.server.on("upgrade", (req, socket, head) => {
27
26
  handleUpgrade(
@@ -3,13 +3,12 @@ import wsAdapter from "crossws/adapters/node";
3
3
 
4
4
  import { useNitroApp } from "nitro/app";
5
5
  import { resolveWebsocketHooks } from "#nitro/runtime/app";
6
- import { hasWebSocket } from "#nitro/virtual/feature-flags";
7
6
 
8
7
  const nitroApp = useNitroApp();
9
8
 
10
9
  export const fetch = nitroApp.fetch;
11
10
 
12
- const ws = hasWebSocket
11
+ const ws = import.meta._websocket
13
12
  ? wsAdapter({ resolve: resolveWebsocketHooks })
14
13
  : undefined;
15
14
 
@@ -5,4 +5,3 @@ export declare const hasGlobalMiddleware: boolean;
5
5
  export declare const hasRoutedMiddleware: boolean;
6
6
  export declare const hasPlugins: boolean;
7
7
  export declare const hasHooks: boolean;
8
- export declare const hasWebSocket: boolean;
@@ -5,4 +5,3 @@ export const hasGlobalMiddleware = true;
5
5
  export const hasRoutedMiddleware = true;
6
6
  export const hasPlugins = true;
7
7
  export const hasHooks = true;
8
- export const hasWebSocket = true;
@@ -3031,6 +3031,7 @@ interface NitroImportMeta {
3031
3031
  runtimeConfig?: Record<string, any>;
3032
3032
  _asyncContext?: boolean;
3033
3033
  _tasks?: boolean;
3034
+ _websocket?: boolean;
3034
3035
  }
3035
3036
  declare global {
3036
3037
  interface ImportMeta extends NitroImportMeta {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nitro-nightly",
3
- "version": "3.0.1-20260121-180512-722efdcf",
3
+ "version": "3.0.1-20260121-183047-b2b37883",
4
4
  "description": "Build and Deploy Universal JavaScript Servers",
5
5
  "keywords": [
6
6
  "api-routes",