UNPKG

@whatwg-node/server

Version:

Fetch API compliant HTTP Server adapter

60 lines (59 loc) 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addWaitUntil = exports.completeAssign = exports.isRequestInit = exports.isReadableStream = exports.isAsyncIterable = void 0; function isAsyncIterable(body) { return (body != null && typeof body === 'object' && typeof body[Symbol.asyncIterator] === 'function'); } exports.isAsyncIterable = isAsyncIterable; function isReadableStream(stream) { return stream != null && stream.getReader != null; } exports.isReadableStream = isReadableStream; function isRequestInit(val) { return (val != null && typeof val === 'object' && ('body' in val || 'cache' in val || 'credentials' in val || 'headers' in val || 'integrity' in val || 'keepalive' in val || 'method' in val || 'mode' in val || 'redirect' in val || 'referrer' in val || 'referrerPolicy' in val || 'signal' in val || 'window' in val)); } exports.isRequestInit = isRequestInit; // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#copying_accessors function completeAssign(...args) { const [target, ...sources] = args.filter(arg => arg != null && typeof arg === 'object'); sources.forEach(source => { // modified Object.keys to Object.getOwnPropertyNames // because Object.keys only returns enumerable properties const descriptors = Object.getOwnPropertyNames(source).reduce((descriptors, key) => { descriptors[key] = Object.getOwnPropertyDescriptor(source, key); return descriptors; }, {}); // By default, Object.assign copies enumerable Symbols, too Object.getOwnPropertySymbols(source).forEach(sym => { const descriptor = Object.getOwnPropertyDescriptor(source, sym); if (descriptor.enumerable) { descriptors[sym] = descriptor; } }); Object.defineProperties(target, descriptors); }); return target; } exports.completeAssign = completeAssign; function addWaitUntil(serverContext, waitUntilPromises) { serverContext['waitUntil'] = function (promise) { if (promise != null) { waitUntilPromises.push(promise); } }; } exports.addWaitUntil = addWaitUntil;