Comparing version 8.3.2 to 8.4.0
@@ -29,3 +29,3 @@ /// <reference types="node" /> | ||
*/ | ||
export declare type ExportEnv = 'node' | 'browser' | ||
export declare type ExportEnv = 'node' | 'react-server' | 'browser' | ||
@@ -32,0 +32,0 @@ /** @public */ |
@@ -1,2 +0,2 @@ | ||
import { processOptions, validateOptions } from './_chunks/defaultOptionsValidator-f87a8c35.js'; | ||
import { createRequester } from './_chunks/createRequester-1d54ad39.js'; | ||
import http from 'node:http'; | ||
@@ -12,117 +12,2 @@ import https from 'node:https'; | ||
import * as tunnel from 'tunnel-agent'; | ||
const middlewareReducer = middleware => function applyMiddleware(hook, defaultValue) { | ||
const bailEarly = hook === "onError"; | ||
let value = defaultValue; | ||
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { | ||
args[_key - 2] = arguments[_key]; | ||
} | ||
for (let i = 0; i < middleware[hook].length; i++) { | ||
const handler = middleware[hook][i]; | ||
value = handler(value, ...args); | ||
if (bailEarly && !value) { | ||
break; | ||
} | ||
} | ||
return value; | ||
}; | ||
function createPubSub() { | ||
const subscribers = /* @__PURE__ */Object.create(null); | ||
let nextId = 0; | ||
function subscribe(subscriber) { | ||
const id = nextId++; | ||
subscribers[id] = subscriber; | ||
return function unsubscribe() { | ||
delete subscribers[id]; | ||
}; | ||
} | ||
function publish(event) { | ||
for (const id in subscribers) { | ||
subscribers[id](event); | ||
} | ||
} | ||
return { | ||
publish, | ||
subscribe | ||
}; | ||
} | ||
const channelNames = ["request", "response", "progress", "error", "abort"]; | ||
const middlehooks = ["processOptions", "validateOptions", "interceptRequest", "finalizeOptions", "onRequest", "onResponse", "onError", "onReturn", "onHeaders"]; | ||
function createRequester(initMiddleware, httpRequest) { | ||
const loadedMiddleware = []; | ||
const middleware = middlehooks.reduce((ware, name) => { | ||
ware[name] = ware[name] || []; | ||
return ware; | ||
}, { | ||
processOptions: [processOptions], | ||
validateOptions: [validateOptions] | ||
}); | ||
function request(opts) { | ||
const onResponse = (reqErr, res, ctx) => { | ||
let error = reqErr; | ||
let response = res; | ||
if (!error) { | ||
try { | ||
response = applyMiddleware("onResponse", res, ctx); | ||
} catch (err) { | ||
response = null; | ||
error = err; | ||
} | ||
} | ||
error = error && applyMiddleware("onError", error, ctx); | ||
if (error) { | ||
channels.error.publish(error); | ||
} else if (response) { | ||
channels.response.publish(response); | ||
} | ||
}; | ||
const channels = channelNames.reduce((target, name) => { | ||
target[name] = createPubSub(); | ||
return target; | ||
}, {}); | ||
const applyMiddleware = middlewareReducer(middleware); | ||
const options = applyMiddleware("processOptions", opts); | ||
applyMiddleware("validateOptions", options); | ||
const context = { | ||
options, | ||
channels, | ||
applyMiddleware | ||
}; | ||
let ongoingRequest; | ||
const unsubscribe = channels.request.subscribe(ctx => { | ||
ongoingRequest = httpRequest(ctx, (err, res) => onResponse(err, res, ctx)); | ||
}); | ||
channels.abort.subscribe(() => { | ||
unsubscribe(); | ||
if (ongoingRequest) { | ||
ongoingRequest.abort(); | ||
} | ||
}); | ||
const returnValue = applyMiddleware("onReturn", channels, context); | ||
if (returnValue === channels) { | ||
channels.request.publish(context); | ||
} | ||
return returnValue; | ||
} | ||
request.use = function use(newMiddleware) { | ||
if (!newMiddleware) { | ||
throw new Error("Tried to add middleware that resolved to falsey value"); | ||
} | ||
if (typeof newMiddleware === "function") { | ||
throw new Error("Tried to add middleware that was a function. It probably expects you to pass options to it."); | ||
} | ||
if (newMiddleware.onReturn && middleware.onReturn.length > 0) { | ||
throw new Error("Tried to add new middleware with `onReturn` handler, but another handler has already been registered for this event"); | ||
} | ||
middlehooks.forEach(key => { | ||
if (newMiddleware[key]) { | ||
middleware[key].push(newMiddleware[key]); | ||
} | ||
}); | ||
loadedMiddleware.push(newMiddleware); | ||
return request; | ||
}; | ||
request.clone = () => createRequester(loadedMiddleware, httpRequest); | ||
initMiddleware.forEach(request.use); | ||
return request; | ||
} | ||
function lowerCaseHeaders(headers) { | ||
@@ -129,0 +14,0 @@ return Object.keys(headers || {}).reduce((acc, header) => { |
@@ -72,3 +72,3 @@ /// <reference types="node" /> | ||
*/ | ||
export declare type ExportEnv = 'node' | 'browser' | ||
export declare type ExportEnv = 'node' | 'react-server' | 'browser' | ||
@@ -75,0 +75,0 @@ /** @public */ |
{ | ||
"name": "get-it", | ||
"version": "8.3.2", | ||
"version": "8.4.0", | ||
"description": "Generic HTTP request library for node, browsers and workers", | ||
@@ -25,13 +25,14 @@ "keywords": [ | ||
"types": "./dist/index.d.ts", | ||
"source": "./src/index.ts", | ||
"browser": { | ||
"source": "./src/index.browser.ts", | ||
"require": "./dist/index.browser.cjs", | ||
"import": "./dist/index.browser.js" | ||
"import": "./dist/index.browser.js", | ||
"require": "./dist/index.browser.cjs" | ||
}, | ||
"react-server": "./dist/index.react-server.js", | ||
"deno": "./dist/index.browser.js", | ||
"edge-light": "./dist/index.browser.js", | ||
"worker": "./dist/index.browser.js", | ||
"source": "./src/index.ts", | ||
"import": "./dist/index.js", | ||
"require": "./dist/index.cjs", | ||
"import": "./dist/index.js", | ||
"default": "./dist/index.js" | ||
@@ -41,2 +42,3 @@ }, | ||
"types": "./dist/middleware.d.ts", | ||
"source": "./src/middleware.ts", | ||
"browser": { | ||
@@ -47,8 +49,8 @@ "source": "./src/middleware.browser.ts", | ||
}, | ||
"react-server": "./dist/middleware.browser.js", | ||
"deno": "./dist/middleware.browser.js", | ||
"edge-light": "./dist/middleware.browser.js", | ||
"worker": "./dist/middleware.browser.js", | ||
"source": "./src/middleware.ts", | ||
"import": "./dist/middleware.js", | ||
"require": "./dist/middleware.cjs", | ||
"import": "./dist/middleware.js", | ||
"default": "./dist/middleware.js" | ||
@@ -89,2 +91,3 @@ }, | ||
"test:edge-runtime": "npm test -- --config ./vitest.edge.config.ts", | ||
"test:react-server": "npm test -- --config ./vitest.react-server.config.ts", | ||
"test:esm": "node --test test-esm/ | faucet", | ||
@@ -114,7 +117,7 @@ "test:esm:browser": "node -C browser --test test-esm/test.mjs | faucet", | ||
"@edge-runtime/vm": "^3.0.4", | ||
"@sanity/pkg-utils": "^2.3.10", | ||
"@sanity/pkg-utils": "^2.4.0", | ||
"@sanity/semantic-release-preset": "^4.1.2", | ||
"@types/debug": "^4.1.8", | ||
"@types/follow-redirects": "^1.14.1", | ||
"@types/node": "^18.17.1", | ||
"@types/node": "^18.17.3", | ||
"@types/progress-stream": "^2.0.2", | ||
@@ -126,3 +129,3 @@ "@types/zen-observable": "^0.8.3", | ||
"eslint": "^8.46.0", | ||
"eslint-config-prettier": "^8.10.0", | ||
"eslint-config-prettier": "^9.0.0", | ||
"eslint-plugin-prettier": "^5.0.0", | ||
@@ -132,3 +135,3 @@ "eslint-plugin-simple-import-sort": "^10.0.0", | ||
"get-uri": "^6.0.1", | ||
"happy-dom": "^9.20.3", | ||
"happy-dom": "^10.8.0", | ||
"ls-engines": "^0.9.0", | ||
@@ -140,3 +143,3 @@ "node-fetch": "^2.6.7", | ||
"typescript": "^5.1.6", | ||
"vite": "4.4.8", | ||
"vite": "4.4.9", | ||
"vitest": "^0.34.1", | ||
@@ -143,0 +146,0 @@ "vitest-github-actions-reporter": "^0.10.0", |
@@ -180,3 +180,3 @@ import type {IncomingHttpHeaders, IncomingMessage} from 'node:http' | ||
*/ | ||
export type ExportEnv = 'node' | 'browser' | ||
export type ExportEnv = 'node' | 'react-server' | 'browser' | ||
@@ -183,0 +183,0 @@ /** |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
598878
74
7061
7