@fly/cdn
Version:
Fly's TypeScript CDN
39 lines • 5.1 kB
JavaScript
/**
* A convenience function for building middleware that only operates on a response.
* @param fn
*/
export function requestModifier(fn) {
return function (fetch, ...args) {
return async function (req, init) {
if (typeof req === "string") {
req = new Request(req, init);
init = undefined;
}
let resp = fn(req, ...args);
if (resp instanceof Promise) {
resp = await resp;
}
if (resp) {
return resp;
}
return fetch(req, init);
};
};
}
/**
* A convenience function for building middleware that only operates on a response.
* @param fn
*/
export function responseModifier(fn) {
return function (fetch, ...args) {
return async function (req, init) {
const resp = await fetch(req, init);
if (typeof req === "string") {
req = new Request(req, init);
init = undefined;
}
return fn(resp, ...args);
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0E7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUE0RDtJQUUxRixPQUFPLFVBQVMsS0FBb0IsRUFBRSxHQUFHLElBQVc7UUFDbEQsT0FBTyxLQUFLLFdBQVUsR0FBZ0IsRUFBRSxJQUFrQjtZQUN4RCxJQUFHLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBQztnQkFDekIsR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDNUIsSUFBSSxHQUFHLFNBQVMsQ0FBQTthQUNqQjtZQUNELElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUMzQixJQUFHLElBQUksWUFBWSxPQUFPLEVBQUM7Z0JBQ3pCLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQTthQUNsQjtZQUNELElBQUcsSUFBSSxFQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekIsQ0FBQyxDQUFBO0lBQ0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQU9EOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUFvRTtJQUVuRyxPQUFPLFVBQVMsS0FBb0IsRUFBRSxHQUFHLElBQVc7UUFDbEQsT0FBTyxLQUFLLFdBQVUsR0FBZ0IsRUFBRSxJQUFrQjtZQUN4RCxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDbkMsSUFBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUM7Z0JBQ3pCLEdBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQzVCLElBQUksR0FBRyxTQUFTLENBQUE7YUFDakI7WUFFRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUMxQixDQUFDLENBQUE7SUFDSCxDQUFDLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIE1pZGRsZXdhcmVcbiAqL1xuaW1wb3J0IHsgRmV0Y2hGdW5jdGlvbiwgRmV0Y2hHZW5lcmF0b3JXaXRoT3B0aW9ucywgRmV0Y2hHZW5lcmF0b3IgfSBmcm9tIFwiLi4vZmV0Y2hcIjtcblxuZXhwb3J0IHR5cGUgUmVzcG9uc2VNb2RpZmllclJlc3VsdCA9IFByb21pc2U8dW5kZWZpbmVkIHwgdm9pZCB8IFJlc3BvbnNlPiB8IHVuZGVmaW5lZCB8IHZvaWQgfCBSZXNwb25zZVxuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBidWlsZGluZyBtaWRkbGV3YXJlIHRoYXQgb25seSBvcGVyYXRlcyBvbiBhIHJlcXVlc3QuXG4gKiBAcGFyYW0gZm4gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0TW9kaWZpZXI8Sj4oZm46IChyZXE6IFJlcXVlc3QsIG9wdGlvbnM6IEopID0+IFJlc3BvbnNlTW9kaWZpZXJSZXN1bHQpOiBGZXRjaEdlbmVyYXRvcldpdGhPcHRpb25zPEo+XG4vKipcbiAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGJ1aWxkaW5nIG1pZGRsZXdhcmUgdGhhdCBvbmx5IG9wZXJhdGVzIG9uIGEgcmVzcG9uc2UuXG4gKiBAcGFyYW0gZm4gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0TW9kaWZpZXIoZm46IChyZXE6IFJlcXVlc3QsIC4uLmFyZ3M6IGFueVtdKSA9PiBSZXNwb25zZU1vZGlmaWVyUmVzdWx0KTogRmV0Y2hHZW5lcmF0b3JcbntcbiAgcmV0dXJuIGZ1bmN0aW9uKGZldGNoOiBGZXRjaEZ1bmN0aW9uLCAuLi5hcmdzOiBhbnlbXSl7XG4gICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKHJlcTogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCl7XG4gICAgICBpZih0eXBlb2YgcmVxID09PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcmVxID0gbmV3IFJlcXVlc3QocmVxLCBpbml0KVxuICAgICAgICBpbml0ID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBsZXQgcmVzcCA9IGZuKHJlcSwgLi4uYXJncylcbiAgICAgIGlmKHJlc3AgaW5zdGFuY2VvZiBQcm9taXNlKXtcbiAgICAgICAgcmVzcCA9IGF3YWl0IHJlc3BcbiAgICAgIH1cbiAgICAgIGlmKHJlc3Ape1xuICAgICAgICByZXR1cm4gcmVzcFxuICAgICAgfVxuICAgICAgcmV0dXJuIGZldGNoKHJlcSwgaW5pdClcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBidWlsZGluZyBtaWRkbGV3YXJlIHRoYXQgb25seSBvcGVyYXRlcyBvbiBhIHJlc3BvbnNlLlxuICogQHBhcmFtIGZuIFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uc2VNb2RpZmllcjxKPihmbjogKHJlc3A6IFJlc3BvbnNlLCBvcHRpb25zOiBKKSA9PiBQcm9taXNlPFJlc3BvbnNlPiB8IFJlc3BvbnNlKTogRmV0Y2hHZW5lcmF0b3JXaXRoT3B0aW9uczxKPlxuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBidWlsZGluZyBtaWRkbGV3YXJlIHRoYXQgb25seSBvcGVyYXRlcyBvbiBhIHJlc3BvbnNlLlxuICogQHBhcmFtIGZuIFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uc2VNb2RpZmllcihmbjogKHJlc3A6IFJlc3BvbnNlLCAuLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxSZXNwb25zZT4gfCBSZXNwb25zZSk6IEZldGNoR2VuZXJhdG9yXG57XG4gIHJldHVybiBmdW5jdGlvbihmZXRjaDogRmV0Y2hGdW5jdGlvbiwgLi4uYXJnczogYW55W10pe1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbihyZXE6IFJlcXVlc3RJbmZvLCBpbml0PzogUmVxdWVzdEluaXQpe1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHJlcSwgaW5pdClcbiAgICAgIGlmKHR5cGVvZiByZXEgPT09IFwic3RyaW5nXCIpe1xuICAgICAgICByZXEgPSBuZXcgUmVxdWVzdChyZXEsIGluaXQpXG4gICAgICAgIGluaXQgPSB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKHJlc3AsIC4uLmFyZ3MpXG4gICAgfVxuICB9XG59Il19