New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@whatwg-node/server

Package Overview
Dependencies
Maintainers
1
Versions
802
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@whatwg-node/server - npm Package Compare versions

Comparing version 0.10.0-alpha-20250227104850-9627f0bf88c955353a57c7af1cd0849684d82a53 to 0.10.0-alpha-20250227111609-07826f71d06c96c52d7b7339816bfd94c7aa6e7c

49

cjs/createServerAdapter.js

@@ -5,2 +5,3 @@ "use strict";

const tslib_1 = require("tslib");
const instruments_1 = require("@envelop/instruments");
const disposablestack_1 = require("@whatwg-node/disposablestack");

@@ -26,3 +27,3 @@ const DefaultFetchAPI = tslib_1.__importStar(require("@whatwg-node/fetch"));

};
const givenHandleRequest = typeof serverAdapterBaseObject === 'function'
const givenHandleRequest = typeof serverAdapterBaseObject === "function"
? serverAdapterBaseObject

@@ -32,3 +33,3 @@ : serverAdapterBaseObject.handle;

const onResponseHooks = [];
let tracer;
let instruments;
const waitUntilPromises = new Set();

@@ -61,3 +62,3 @@ let _disposableStack;

waitUntilPromises.delete(promiseLike);
}, err => {
}, (err) => {
console.error(`Unexpected error while waiting: ${err.message || err}`);

@@ -70,7 +71,6 @@ waitUntilPromises.delete(promiseLike);

for (const plugin of options.plugins) {
if (plugin.tracer) {
if (tracer) {
throw new Error('Multiple tracers have been declared. Only one plugin with a tracer is allowed.');
}
tracer = plugin.tracer;
if (plugin.instruments) {
instruments = instruments
? (0, instruments_1.chain)(instruments, plugin.instruments)
: plugin.instruments;
}

@@ -103,6 +103,6 @@ if (plugin.onRequest) {

}
let url = request['parsedUrl'] ||
let url = request["parsedUrl"] ||
new Proxy(EMPTY_OBJECT, {
get(_target, prop, _receiver) {
url = new fetchAPI.URL(request.url, 'http://localhost');
url = new fetchAPI.URL(request.url, "http://localhost");
return Reflect.get(url, prop, url);

@@ -115,3 +115,3 @@ },

}
return (0, promise_helpers_1.handleMaybePromise)(() => (0, utils_js_1.iterateAsyncVoid)(onResponseHooks, onResponseHook => onResponseHook({
return (0, promise_helpers_1.handleMaybePromise)(() => (0, utils_js_1.iterateAsyncVoid)(onResponseHooks, (onResponseHook) => onResponseHook({
request,

@@ -153,11 +153,6 @@ response,

: givenHandleRequest;
if (tracer?.request) {
if (instruments?.request) {
const originalRequestHandler = handleRequest;
handleRequest = (request, initialContext) => {
let response;
const tracerPromise = tracer.request({ request }, () => {
response = originalRequestHandler(request, initialContext);
return (0, utils_js_1.isPromise)(response) ? response.then(() => undefined) : undefined;
});
return (0, utils_js_1.isPromise)(tracerPromise) ? tracerPromise.then(() => response) : response;
return (0, instruments_1.getInstrumented)({ request }).asyncFn(instruments.request, originalRequestHandler)(request, initialContext);
};

@@ -186,3 +181,3 @@ }

};
return (0, promise_helpers_1.handleMaybePromise)(() => (0, promise_helpers_1.handleMaybePromise)(() => handleNodeRequestAndResponse(nodeRequest, nodeResponse, defaultServerContext, ...ctx), response => response, err => (0, utils_js_1.handleErrorFromRequestHandler)(err, fetchAPI.Response)), response => (0, promise_helpers_1.handleMaybePromise)(() => (0, utils_js_1.sendNodeResponse)(response, nodeResponse, nodeRequest), r => r, err => console.error(`Unexpected error while handling request: ${err.message || err}`)));
return (0, promise_helpers_1.handleMaybePromise)(() => (0, promise_helpers_1.handleMaybePromise)(() => handleNodeRequestAndResponse(nodeRequest, nodeResponse, defaultServerContext, ...ctx), (response) => response, (err) => (0, utils_js_1.handleErrorFromRequestHandler)(err, fetchAPI.Response)), (response) => (0, promise_helpers_1.handleMaybePromise)(() => (0, utils_js_1.sendNodeResponse)(response, nodeResponse, nodeRequest), (r) => r, (err) => console.error(`Unexpected error while handling request: ${err.message || err}`)));
}

@@ -195,3 +190,3 @@ function handleUWS(res, req, ...ctx) {

};
const filteredCtxParts = ctx.filter(partCtx => partCtx != null);
const filteredCtxParts = ctx.filter((partCtx) => partCtx != null);
const serverContext = filteredCtxParts.length > 0

@@ -212,3 +207,3 @@ ? (0, utils_js_1.completeAssign)(defaultServerContext, ...ctx)

res.onAborted = function (cb) {
controller.signal.addEventListener('abort', cb, { once: true });
controller.signal.addEventListener("abort", cb, { once: true });
};

@@ -221,5 +216,5 @@ const request = (0, uwebsockets_js_1.getRequestFromUWSRequest)({

});
return (0, promise_helpers_1.handleMaybePromise)(() => (0, promise_helpers_1.handleMaybePromise)(() => handleRequest(request, serverContext), response => response, err => (0, utils_js_1.handleErrorFromRequestHandler)(err, fetchAPI.Response)), response => {
return (0, promise_helpers_1.handleMaybePromise)(() => (0, promise_helpers_1.handleMaybePromise)(() => handleRequest(request, serverContext), (response) => response, (err) => (0, utils_js_1.handleErrorFromRequestHandler)(err, fetchAPI.Response)), (response) => {
if (!controller.signal.aborted && !resEnded) {
return (0, promise_helpers_1.handleMaybePromise)(() => (0, uwebsockets_js_1.sendResponseToUwsOpts)(res, response, controller, fetchAPI), r => r, err => {
return (0, promise_helpers_1.handleMaybePromise)(() => (0, uwebsockets_js_1.sendResponseToUwsOpts)(res, response, controller, fetchAPI), (r) => r, (err) => {
console.error(`Unexpected error while handling request: ${err.message || err}`);

@@ -234,3 +229,3 @@ });

}
const filteredCtxParts = ctx.filter(partCtx => partCtx != null);
const filteredCtxParts = ctx.filter((partCtx) => partCtx != null);
const serverContext = filteredCtxParts.length > 0

@@ -243,3 +238,3 @@ ? (0, utils_js_1.completeAssign)({}, event, ...filteredCtxParts)

function handleRequestWithWaitUntil(request, ...ctx) {
const filteredCtxParts = ctx.filter(partCtx => partCtx != null);
const filteredCtxParts = ctx.filter((partCtx) => partCtx != null);
const serverContext = filteredCtxParts.length > 1

@@ -253,3 +248,3 @@ ? (0, utils_js_1.completeAssign)({}, ...filteredCtxParts)

const fetchFn = (input, ...maybeCtx) => {
if (typeof input === 'string' || 'href' in input) {
if (typeof input === "string" || "href" in input) {
const [initOrCtx, ...restOfCtx] = maybeCtx;

@@ -284,3 +279,3 @@ if ((0, utils_js_1.isRequestInit)(initOrCtx)) {

if ((0, utils_js_1.isServerResponse)(initOrCtxOrRes)) {
throw new TypeError('Got Node response without Node request');
throw new TypeError("Got Node response without Node request");
}

@@ -287,0 +282,0 @@ // Is input a container object over Request?

@@ -1,6 +0,7 @@

import { AsyncDisposableStack, DisposableSymbols } from '@whatwg-node/disposablestack';
import * as DefaultFetchAPI from '@whatwg-node/fetch';
import { handleMaybePromise } from '@whatwg-node/promise-helpers';
import { completeAssign, ensureDisposableStackRegisteredForTerminateEvents, handleAbortSignalAndPromiseResponse, handleErrorFromRequestHandler, isFetchEvent, isNodeRequest, isolateObject, isPromise, isRequestInit, isServerResponse, iterateAsyncVoid, nodeRequestResponseMap, normalizeNodeRequest, sendNodeResponse, } from './utils.js';
import { fakePromise, getRequestFromUWSRequest, isUWSResponse, sendResponseToUwsOpts, } from './uwebsockets.js';
import { chain, getInstrumented } from "@envelop/instruments";
import { AsyncDisposableStack, DisposableSymbols, } from "@whatwg-node/disposablestack";
import * as DefaultFetchAPI from "@whatwg-node/fetch";
import { handleMaybePromise } from "@whatwg-node/promise-helpers";
import { completeAssign, ensureDisposableStackRegisteredForTerminateEvents, handleAbortSignalAndPromiseResponse, handleErrorFromRequestHandler, isFetchEvent, isNodeRequest, isolateObject, isPromise, isRequestInit, isServerResponse, iterateAsyncVoid, nodeRequestResponseMap, normalizeNodeRequest, sendNodeResponse, } from "./utils.js";
import { fakePromise, getRequestFromUWSRequest, isUWSResponse, sendResponseToUwsOpts, } from "./uwebsockets.js";
// Required for envs like nextjs edge runtime

@@ -21,3 +22,3 @@ function isRequestAccessible(serverContext) {

};
const givenHandleRequest = typeof serverAdapterBaseObject === 'function'
const givenHandleRequest = typeof serverAdapterBaseObject === "function"
? serverAdapterBaseObject

@@ -27,3 +28,3 @@ : serverAdapterBaseObject.handle;

const onResponseHooks = [];
let tracer;
let instruments;
const waitUntilPromises = new Set();

@@ -56,3 +57,3 @@ let _disposableStack;

waitUntilPromises.delete(promiseLike);
}, err => {
}, (err) => {
console.error(`Unexpected error while waiting: ${err.message || err}`);

@@ -65,7 +66,6 @@ waitUntilPromises.delete(promiseLike);

for (const plugin of options.plugins) {
if (plugin.tracer) {
if (tracer) {
throw new Error('Multiple tracers have been declared. Only one plugin with a tracer is allowed.');
}
tracer = plugin.tracer;
if (plugin.instruments) {
instruments = instruments
? chain(instruments, plugin.instruments)
: plugin.instruments;
}

@@ -98,6 +98,6 @@ if (plugin.onRequest) {

}
let url = request['parsedUrl'] ||
let url = request["parsedUrl"] ||
new Proxy(EMPTY_OBJECT, {
get(_target, prop, _receiver) {
url = new fetchAPI.URL(request.url, 'http://localhost');
url = new fetchAPI.URL(request.url, "http://localhost");
return Reflect.get(url, prop, url);

@@ -110,3 +110,3 @@ },

}
return handleMaybePromise(() => iterateAsyncVoid(onResponseHooks, onResponseHook => onResponseHook({
return handleMaybePromise(() => iterateAsyncVoid(onResponseHooks, (onResponseHook) => onResponseHook({
request,

@@ -148,11 +148,6 @@ response,

: givenHandleRequest;
if (tracer?.request) {
if (instruments?.request) {
const originalRequestHandler = handleRequest;
handleRequest = (request, initialContext) => {
let response;
const tracerPromise = tracer.request({ request }, () => {
response = originalRequestHandler(request, initialContext);
return isPromise(response) ? response.then(() => undefined) : undefined;
});
return isPromise(tracerPromise) ? tracerPromise.then(() => response) : response;
return getInstrumented({ request }).asyncFn(instruments.request, originalRequestHandler)(request, initialContext);
};

@@ -181,3 +176,3 @@ }

};
return handleMaybePromise(() => handleMaybePromise(() => handleNodeRequestAndResponse(nodeRequest, nodeResponse, defaultServerContext, ...ctx), response => response, err => handleErrorFromRequestHandler(err, fetchAPI.Response)), response => handleMaybePromise(() => sendNodeResponse(response, nodeResponse, nodeRequest), r => r, err => console.error(`Unexpected error while handling request: ${err.message || err}`)));
return handleMaybePromise(() => handleMaybePromise(() => handleNodeRequestAndResponse(nodeRequest, nodeResponse, defaultServerContext, ...ctx), (response) => response, (err) => handleErrorFromRequestHandler(err, fetchAPI.Response)), (response) => handleMaybePromise(() => sendNodeResponse(response, nodeResponse, nodeRequest), (r) => r, (err) => console.error(`Unexpected error while handling request: ${err.message || err}`)));
}

@@ -190,3 +185,3 @@ function handleUWS(res, req, ...ctx) {

};
const filteredCtxParts = ctx.filter(partCtx => partCtx != null);
const filteredCtxParts = ctx.filter((partCtx) => partCtx != null);
const serverContext = filteredCtxParts.length > 0

@@ -207,3 +202,3 @@ ? completeAssign(defaultServerContext, ...ctx)

res.onAborted = function (cb) {
controller.signal.addEventListener('abort', cb, { once: true });
controller.signal.addEventListener("abort", cb, { once: true });
};

@@ -216,5 +211,5 @@ const request = getRequestFromUWSRequest({

});
return handleMaybePromise(() => handleMaybePromise(() => handleRequest(request, serverContext), response => response, err => handleErrorFromRequestHandler(err, fetchAPI.Response)), response => {
return handleMaybePromise(() => handleMaybePromise(() => handleRequest(request, serverContext), (response) => response, (err) => handleErrorFromRequestHandler(err, fetchAPI.Response)), (response) => {
if (!controller.signal.aborted && !resEnded) {
return handleMaybePromise(() => sendResponseToUwsOpts(res, response, controller, fetchAPI), r => r, err => {
return handleMaybePromise(() => sendResponseToUwsOpts(res, response, controller, fetchAPI), (r) => r, (err) => {
console.error(`Unexpected error while handling request: ${err.message || err}`);

@@ -229,3 +224,3 @@ });

}
const filteredCtxParts = ctx.filter(partCtx => partCtx != null);
const filteredCtxParts = ctx.filter((partCtx) => partCtx != null);
const serverContext = filteredCtxParts.length > 0

@@ -238,3 +233,3 @@ ? completeAssign({}, event, ...filteredCtxParts)

function handleRequestWithWaitUntil(request, ...ctx) {
const filteredCtxParts = ctx.filter(partCtx => partCtx != null);
const filteredCtxParts = ctx.filter((partCtx) => partCtx != null);
const serverContext = filteredCtxParts.length > 1

@@ -248,3 +243,3 @@ ? completeAssign({}, ...filteredCtxParts)

const fetchFn = (input, ...maybeCtx) => {
if (typeof input === 'string' || 'href' in input) {
if (typeof input === "string" || "href" in input) {
const [initOrCtx, ...restOfCtx] = maybeCtx;

@@ -279,3 +274,3 @@ if (isRequestInit(initOrCtx)) {

if (isServerResponse(initOrCtxOrRes)) {
throw new TypeError('Got Node response without Node request');
throw new TypeError("Got Node response without Node request");
}

@@ -282,0 +277,0 @@ // Is input a container object over Request?

{
"name": "@whatwg-node/server",
"version": "0.10.0-alpha-20250227104850-9627f0bf88c955353a57c7af1cd0849684d82a53",
"version": "0.10.0-alpha-20250227111609-07826f71d06c96c52d7b7339816bfd94c7aa6e7c",
"description": "Fetch API compliant HTTP Server adapter",
"sideEffects": false,
"dependencies": {
"@envelop/instruments": "^5.0.3",
"@whatwg-node/disposablestack": "^0.0.6",

@@ -8,0 +9,0 @@ "@whatwg-node/fetch": "^0.10.5",

@@ -1,3 +0,3 @@

import { ServerAdapterPlugin } from './plugins/types.js';
import { FetchAPI, ServerAdapter, ServerAdapterBaseObject, ServerAdapterRequestHandler } from './types.js';
import { ServerAdapterPlugin } from "./plugins/types.js";
import { FetchAPI, ServerAdapter, ServerAdapterBaseObject, ServerAdapterRequestHandler } from "./types.js";
export interface ServerAdapterOptions<TServerContext> {

@@ -4,0 +4,0 @@ plugins?: ServerAdapterPlugin<TServerContext>[];

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

import { FetchAPI, ServerAdapterRequestHandler, type ServerAdapterInitialContext } from '../types.js';
import { FetchAPI, ServerAdapterRequestHandler, type ServerAdapterInitialContext } from "../types.js";
export interface ServerAdapterPlugin<TServerContext = {}> {

@@ -7,3 +7,3 @@ /**

*/
tracer?: Tracer;
instruments?: Instruments;
/**

@@ -47,3 +47,3 @@ * This hook is invoked for ANY incoming HTTP request. Here you can manipulate the request,

}
export type Tracer = {
export type Instruments = {
request?: (payload: {

@@ -50,0 +50,0 @@ request: Request;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc