You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

srvx

Package Overview
Dependencies
Maintainers
1
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

srvx - npm Package Compare versions

Comparing version
0.11.6
to
0.11.7
+1
-1
dist/adapters/bun.mjs

@@ -27,3 +27,3 @@ import { t as FastURL } from "../_chunks/_url.mjs";

this.fetch = fetchHandler;
loader(fetchHandler);
loader({ server: this });
return;

@@ -30,0 +30,0 @@ }

@@ -29,3 +29,3 @@ import { t as FastURL } from "../_chunks/_url.mjs";

this.fetch = fetchHandler;
loader(fetchHandler);
loader({ server: this });
return;

@@ -32,0 +32,0 @@ }

@@ -675,10 +675,2 @@ import { n as lazyInherit, t as FastURL } from "../_chunks/_url.mjs";

const fetchHandler = this.fetch = wrapFetch(this);
const loader = globalThis.__srvxLoader__;
if (loader) {
loader(fetchHandler);
return;
}
gracefulShutdownPlugin(this);
this.#wait = createWaitUntil();
this.waitUntil = this.#wait.waitUntil;
const handler = (nodeReq, nodeRes) => {

@@ -693,2 +685,14 @@ const request = new NodeRequest({

};
this.node = {
handler,
server: void 0
};
const loader = globalThis.__srvxLoader__;
if (loader) {
loader({ server: this });
return;
}
gracefulShutdownPlugin(this);
this.#wait = createWaitUntil();
this.waitUntil = this.#wait.waitUntil;
const tls = resolveTLSOptions(this.options);

@@ -716,6 +720,3 @@ const { port, hostname: host } = resolvePortAndHost(this.options);

else server = nodeHTTP.createServer(this.serveOptions, handler);
this.node = {
server,
handler
};
this.node.server = server;
if (!options.manual) this.serve();

@@ -722,0 +723,0 @@ }

import { LoadOptions } from "./loader.mjs";
import { Server } from "srvx";
//#region src/cli/types.d.ts
declare global {
var __srvx__: Server | undefined;
}
type MainOptions = CLIOptions & {

@@ -9,0 +5,0 @@ args?: string[];

@@ -13,5 +13,9 @@ import { a as green, c as url, i as gray, l as yellow, n as bold, o as magenta, r as cyan, s as red } from "./_chunks/_utils.mjs";

if (!process.env.NODE_ENV) process.env.NODE_ENV = cliOpts.prod ? "production" : "development";
let server;
const loaded = await loadServerEntry({
entry: cliOpts.entry,
dir: cliOpts.dir
dir: cliOpts.dir,
get srvxServer() {
return server;
}
});

@@ -33,3 +37,3 @@ const { serve: srvxServe } = loaded.nodeCompat ? await import("srvx/node") : await import("srvx");

printInfo(cliOpts, loaded);
await (globalThis.__srvx__ = srvxServe({
server = srvxServe({
...serverOptions,

@@ -53,3 +57,4 @@ gracefulShutdown: !!cliOpts.prod,

].filter(Boolean)
})).ready();
});
await server.ready();
} catch (error) {

@@ -180,3 +185,3 @@ console.error(error);

name: "srvx",
version: "0.11.6",
version: "0.11.7",
description: "Universal Server."

@@ -183,0 +188,0 @@ };

@@ -1,2 +0,2 @@

import { ServerHandler } from "srvx";
import { Server, ServerHandler } from "srvx";

@@ -33,2 +33,10 @@ //#region src/loader.d.ts

/**
* Node.js server instance to return when intercepting `http.Server.listen`.
*/
nodeServer?: NodeServer;
/**
* srvx server instance to return when intercepting `http.Server.listen`.
*/
srvxServer?: Server;
/**
* Hook called after the module is loaded to allow for custom processing.

@@ -72,5 +80,10 @@ *

notFound?: boolean;
/**
* The original srvx server instance if the module used the loader API to export a server directly.
*/
srvxServer?: Server;
};
declare function loadServerEntry(opts: LoadOptions): Promise<LoadedServerEntry>;
type NodeServer = NonNullable<Server["node"]>["server"];
//#endregion
export { LoadOptions, LoadedServerEntry, defaultEntries, defaultExts, loadServerEntry };

@@ -5,2 +5,3 @@ import { pathToFileURL } from "node:url";

import * as nodeHTTP$1 from "node:http";
import { EventEmitter } from "node:events";
const defaultExts = [

@@ -39,9 +40,9 @@ ".mjs",

let interceptedNodeHandler;
let interceptedFetchHandler;
let interceptedServer;
try {
if (opts.interceptHttpListen !== false) {
const loaded = await interceptListen(() => import(url));
const loaded = await interceptListen(() => import(url), opts);
mod = loaded.res;
interceptedNodeHandler = loaded.listenHandler;
interceptedFetchHandler = loaded.fetchHandler;
interceptedServer = loaded.server;
} else mod = await import(url);

@@ -57,3 +58,3 @@ } catch (error) {

mod = await opts?.onLoad?.(mod) || mod;
let fetchHandler = mod?.fetch || mod?.default?.fetch || mod?.default?.default?.fetch || interceptedFetchHandler;
let fetchHandler = mod?.fetch || mod?.default?.fetch || mod?.default?.default?.fetch || interceptedServer?.fetch;
if (!fetchHandler && typeof mod?.default === "function" && mod.default.length < 2) fetchHandler = mod.default;

@@ -73,7 +74,8 @@ let nodeCompat = false;

url,
fetch: fetchHandler
fetch: fetchHandler,
srvxServer: interceptedServer
};
}
let _interceptQueue = Promise.resolve();
async function interceptListen(cb) {
async function interceptListen(cb, opts = {}) {
const result = _interceptQueue.then(async () => {

@@ -83,5 +85,7 @@ const originalListen = nodeHTTP$1.Server.prototype.listen;

let listenHandler;
let fetchHandler;
globalThis.__srvxLoader__ = (handler) => {
fetchHandler = handler;
let server;
const nodeServerStub = opts.nodeServer || opts.srvxServer?.node?.server || new StubNodeServer(() => opts.srvxServer?.node?.server);
globalThis.__srvxLoader__ = (obj) => {
server = obj.server;
if (server && server.node) server.node.server ||= nodeServerStub;
};

@@ -97,11 +101,3 @@ try {

});
return new Proxy({}, { get(_, prop) {
const server = globalThis.__srvx__;
if (!server && prop === "address") return () => ({
address: "",
family: "",
port: 0
});
return server?.node?.server?.[prop];
} });
return nodeServerStub;
};

@@ -116,3 +112,3 @@ res = await cb();

listenHandler,
fetchHandler
server
};

@@ -123,2 +119,28 @@ });

}
var StubNodeServer = class extends EventEmitter {
constructor(getServer) {
super();
return new Proxy(this, { get(target, prop, receiver) {
const server = getServer();
if (!server) return Reflect.get(target, prop, receiver);
const value = server[prop];
if (typeof value === "function") return value.bind(server);
return value;
} });
}
address() {
return {
address: "",
family: "",
port: 0
};
}
listen() {
return this;
}
close(callback) {
callback?.();
return this;
}
};
export { defaultEntries, defaultExts, loadServerEntry };
{
"name": "srvx",
"version": "0.11.6",
"version": "0.11.7",
"description": "Universal Server.",

@@ -5,0 +5,0 @@ "homepage": "https://srvx.h3.dev",