UNPKG

memoized-node-fetch

Version:

A wrapper around node-fetch that caches the request's promise before resolving.

42 lines 1.86 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const node_fetch_1 = __importDefault(require("node-fetch")); const hasher_1 = __importDefault(require("./hasher")); function memoizedNodeFetchFactory(fetchFunction = node_fetch_1.default) { const promiseCache = new Map(); function wrapper(key, promise) { return __awaiter(this, void 0, void 0, function* () { try { yield promise; } finally { promiseCache.delete(key); } return promise; }); } function wrappedFetch(url, options, hashFunction = hasher_1.default) { const key = hashFunction(url, options); if (promiseCache.has(key)) { return promiseCache.get(key); } const promise = wrapper(key, fetchFunction(url, options)); promiseCache.set(key, promise); return promise; } return wrappedFetch; } exports.default = memoizedNodeFetchFactory; //# sourceMappingURL=index.js.map