cacheable-request
Advanced tools
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,OAAO,EAEZ,KAAK,SAAS,EAEd,MAAM,YAAY,CAAC;AAEpB,KAAK,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE/C,cAAM,gBAAgB;IACrB,KAAK,EAAE,IAAI,CAAqD;IAChE,YAAY,EAAE,SAAS,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAgC;gBACjD,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,GAAG;IAgBvD,OAAO,SAGL,SAAS,gBAAgB,EACzB,WAAW,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,KAC1C,OAAO,CA0PR;IAEH,OAAO,GAAI,MAAM,MAAM,EAAE,WAAW,SAAS,UAI3C;IAEF,UAAU,GAAI,MAAM,MAAM,aAA6B;IAEvD,OAAO,GAAI,MAAM,MAAM,eAA0B;IAEjD,OAAO,GAAU,MAAM,MAAM,EAAE,GAAG,YAAY,GAAG,EAAE,KAAG,OAAO,CAAC,UAAU,CAAC,CAClC;CACvC;AA+CD,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM;;;;;;;;;;;;;;;CAmB1C,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,eAAO,MAAM,UAAU,eAAe,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,OAAO,EAEZ,KAAK,SAAS,EAEd,MAAM,YAAY,CAAC;AAEpB,KAAK,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE/C,cAAM,gBAAgB;IACrB,KAAK,EAAE,IAAI,CAAqD;IAChE,YAAY,EAAE,SAAS,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAgC;gBACjD,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,GAAG;IAgBvD,OAAO,SAGL,SAAS,gBAAgB,EACzB,WAAW,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,KAC1C,OAAO,CAgSR;IAEH,OAAO,GAAI,MAAM,MAAM,EAAE,WAAW,SAAS,UAI3C;IAEF,UAAU,GAAI,MAAM,MAAM,aAA6B;IAEvD,OAAO,GAAI,MAAM,MAAM,eAA0B;IAEjD,OAAO,GAAU,MAAM,MAAM,EAAE,GAAG,YAAY,GAAG,EAAE,KAAG,OAAO,CAAC,UAAU,CAAC,CAClC;CACvC;AA+CD,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM;;;;;;;;;;;;;;;CAmB1C,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,eAAO,MAAM,UAAU,eAAe,CAAC"} |
+30
-3
@@ -89,3 +89,4 @@ // biome-ignore-all lint/suspicious/noImplicitAnyLet: legacy format | ||
| response.status = response.statusCode; | ||
| const revalidatedPolicy = CachePolicy.fromObject(revalidate.cachePolicy).revalidatedPolicy(options_, response); | ||
| const originalPolicy = CachePolicy.fromObject(revalidate.cachePolicy); | ||
| const revalidatedPolicy = originalPolicy.revalidatedPolicy(options_, response); | ||
| if (!revalidatedPolicy.modified) { | ||
@@ -97,3 +98,25 @@ response.resume(); | ||
| }); | ||
| // Get headers from revalidated policy | ||
| const headers = convertHeaders(revalidatedPolicy.policy.responseHeaders()); | ||
| // Preserve headers from the original cached response that may have been | ||
| // lost during revalidation (e.g., content-encoding, content-type, etc.) | ||
| // This works around a limitation in http-cache-semantics where some headers | ||
| // are not preserved when a 304 response has minimal headers | ||
| const originalHeaders = convertHeaders(originalPolicy.responseHeaders()); | ||
| // Headers that should be preserved from the cached response | ||
| // according to RFC 7232 section 4.1 | ||
| const preserveHeaders = [ | ||
| "content-encoding", | ||
| "content-type", | ||
| "content-length", | ||
| "content-language", | ||
| "content-location", | ||
| "etag", | ||
| ]; | ||
| for (const headerName of preserveHeaders) { | ||
| if (originalHeaders[headerName] !== undefined && | ||
| headers[headerName] === undefined) { | ||
| headers[headerName] = originalHeaders[headerName]; | ||
| } | ||
| } | ||
| response = new Response({ | ||
@@ -145,6 +168,8 @@ statusCode: revalidate.statusCode, | ||
| await this.cache.set(key, value, ttl); | ||
| /* c8 ignore next -- @preserve */ | ||
| } | ||
| catch (error) { | ||
| /* c8 ignore next 2 */ | ||
| /* c8 ignore next -- @preserve */ | ||
| ee.emit("error", new CacheError(error)); | ||
| /* c8 ignore next -- @preserve */ | ||
| } | ||
@@ -157,6 +182,8 @@ })(); | ||
| await this.cache.delete(key); | ||
| /* c8 ignore next -- @preserve */ | ||
| } | ||
| catch (error) { | ||
| /* c8 ignore next 2 */ | ||
| /* c8 ignore next -- @preserve */ | ||
| ee.emit("error", new CacheError(error)); | ||
| /* c8 ignore next -- @preserve */ | ||
| } | ||
@@ -163,0 +190,0 @@ })(); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// biome-ignore-all lint/suspicious/noImplicitAnyLet: legacy format\n// biome-ignore-all lint/suspicious/noExplicitAny: legacy format\nimport crypto from \"node:crypto\";\nimport EventEmitter from \"node:events\";\nimport type { IncomingMessage } from \"node:http\";\nimport stream, { PassThrough as PassThroughStream } from \"node:stream\";\nimport urlLib, { URL } from \"node:url\";\nimport { getStreamAsBuffer } from \"get-stream\";\nimport CachePolicy from \"http-cache-semantics\";\nimport { Keyv } from \"keyv\";\nimport mimicResponse from \"mimic-response\";\nimport normalizeUrl from \"normalize-url\";\nimport Response from \"responselike\";\nimport {\n\ttype CacheableOptions,\n\tCacheError,\n\ttype CacheResponse,\n\ttype CacheValue,\n\ttype Emitter,\n\tRequestError,\n\ttype RequestFn,\n\ttype UrlOption,\n} from \"./types.js\";\n\ntype Function_ = (...arguments_: any[]) => any;\n\nclass CacheableRequest {\n\tcache: Keyv = new Keyv<any>({ namespace: \"cacheable-request\" });\n\tcacheRequest: RequestFn;\n\thooks: Map<string, Function_> = new Map<string, Function_>();\n\tconstructor(cacheRequest: RequestFn, cacheAdapter?: any) {\n\t\tif (cacheAdapter) {\n\t\t\tif (cacheAdapter instanceof Keyv) {\n\t\t\t\tthis.cache = cacheAdapter;\n\t\t\t} else {\n\t\t\t\tthis.cache = new Keyv({\n\t\t\t\t\tstore: cacheAdapter,\n\t\t\t\t\tnamespace: \"cacheable-request\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.request = this.request.bind(this);\n\t\tthis.cacheRequest = cacheRequest;\n\t}\n\n\trequest =\n\t\t() =>\n\t\t(\n\t\t\toptions: CacheableOptions,\n\t\t\tcallback?: (response: CacheResponse) => void,\n\t\t): Emitter => {\n\t\t\tlet url;\n\t\t\tif (typeof options === \"string\") {\n\t\t\t\turl = normalizeUrlObject(parseWithWhatwg(options));\n\t\t\t\toptions = {};\n\t\t\t} else if (options instanceof urlLib.URL) {\n\t\t\t\turl = normalizeUrlObject(parseWithWhatwg(options.toString()));\n\t\t\t\toptions = {};\n\t\t\t} else {\n\t\t\t\tconst [pathname, ...searchParts] = (options.path ?? \"\").split(\"?\");\n\t\t\t\tconst search =\n\t\t\t\t\tsearchParts.length > 0 ? `?${searchParts.join(\"?\")}` : \"\";\n\t\t\t\turl = normalizeUrlObject({ ...options, pathname, search });\n\t\t\t}\n\n\t\t\toptions = {\n\t\t\t\theaders: {},\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tcache: true,\n\t\t\t\tstrictTtl: false,\n\t\t\t\tautomaticFailover: false,\n\t\t\t\t...options,\n\t\t\t\t...urlObjectToRequestOptions(url),\n\t\t\t};\n\t\t\toptions.headers = Object.fromEntries(\n\t\t\t\tentries(options.headers).map(([key, value]) => [\n\t\t\t\t\t(key as string).toLowerCase(),\n\t\t\t\t\tvalue,\n\t\t\t\t]),\n\t\t\t);\n\t\t\tconst ee: Emitter = new EventEmitter() as Emitter;\n\t\t\tconst normalizedUrlString = normalizeUrl(urlLib.format(url), {\n\t\t\t\tstripWWW: false,\n\t\t\t\tremoveTrailingSlash: false,\n\t\t\t\tstripAuthentication: false,\n\t\t\t});\n\t\t\tlet key = `${options.method}:${normalizedUrlString}`;\n\t\t\t// POST, PATCH, and PUT requests may be cached, depending on the response\n\t\t\t// cache-control headers. As a result, the body of the request should be\n\t\t\t// added to the cache key in order to avoid collisions.\n\t\t\tif (\n\t\t\t\toptions.body &&\n\t\t\t\toptions.method !== undefined &&\n\t\t\t\t[\"POST\", \"PATCH\", \"PUT\"].includes(options.method)\n\t\t\t) {\n\t\t\t\tif (options.body instanceof stream.Readable) {\n\t\t\t\t\t// Streamed bodies should completely skip the cache because they may\n\t\t\t\t\t// or may not be hashable and in either case the stream would need to\n\t\t\t\t\t// close before the cache key could be generated.\n\t\t\t\t\toptions.cache = false;\n\t\t\t\t} else {\n\t\t\t\t\tkey += `:${crypto.createHash(\"md5\").update(options.body).digest(\"hex\")}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet revalidate: any = false;\n\t\t\tlet madeRequest = false;\n\t\t\tconst makeRequest = (options_: any) => {\n\t\t\t\tmadeRequest = true;\n\t\t\t\tlet requestErrored = false;\n\t\t\t\t/* c8 ignore next 4 */\n\t\t\t\tlet requestErrorCallback: (...arguments_: any[]) => void = () => {\n\t\t\t\t\t/* do nothing */\n\t\t\t\t};\n\n\t\t\t\tconst requestErrorPromise = new Promise<void>((resolve) => {\n\t\t\t\t\trequestErrorCallback = () => {\n\t\t\t\t\t\tif (!requestErrored) {\n\t\t\t\t\t\t\trequestErrored = true;\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tconst handler = async (response: any) => {\n\t\t\t\t\tif (revalidate) {\n\t\t\t\t\t\tresponse.status = response.statusCode;\n\t\t\t\t\t\tconst revalidatedPolicy = CachePolicy.fromObject(\n\t\t\t\t\t\t\trevalidate.cachePolicy,\n\t\t\t\t\t\t).revalidatedPolicy(options_, response);\n\t\t\t\t\t\tif (!revalidatedPolicy.modified) {\n\t\t\t\t\t\t\tresponse.resume();\n\t\t\t\t\t\t\tawait new Promise((resolve) => {\n\t\t\t\t\t\t\t\t// Skipping 'error' handler cause 'error' event should't be emitted for 304 response\n\t\t\t\t\t\t\t\tresponse.once(\"end\", resolve);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst headers = convertHeaders(\n\t\t\t\t\t\t\t\trevalidatedPolicy.policy.responseHeaders(),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponse = new Response({\n\t\t\t\t\t\t\t\tstatusCode: revalidate.statusCode,\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t\tbody: revalidate.body,\n\t\t\t\t\t\t\t\turl: revalidate.url,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tresponse.cachePolicy = revalidatedPolicy.policy;\n\t\t\t\t\t\t\tresponse.fromCache = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.fromCache) {\n\t\t\t\t\t\tresponse.cachePolicy = new CachePolicy(\n\t\t\t\t\t\t\toptions_,\n\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\toptions_,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponse.fromCache = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet clonedResponse;\n\t\t\t\t\tif (options_.cache && response.cachePolicy.storable()) {\n\t\t\t\t\t\tclonedResponse = cloneResponse(response);\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst bodyPromise = getStreamAsBuffer(response);\n\t\t\t\t\t\t\t\tawait Promise.race([\n\t\t\t\t\t\t\t\t\trequestErrorPromise,\n\t\t\t\t\t\t\t\t\tnew Promise((resolve) => response.once(\"end\", resolve)),\n\t\t\t\t\t\t\t\t\tnew Promise((resolve) => response.once(\"close\", resolve)),\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\tconst body = await bodyPromise;\n\t\t\t\t\t\t\t\tlet value: CacheValue = {\n\t\t\t\t\t\t\t\t\turl: response.url,\n\t\t\t\t\t\t\t\t\tstatusCode: response.fromCache\n\t\t\t\t\t\t\t\t\t\t? revalidate.statusCode\n\t\t\t\t\t\t\t\t\t\t: response.statusCode,\n\t\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t\t\tcachePolicy: response.cachePolicy.toObject(),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tlet ttl = options_.strictTtl\n\t\t\t\t\t\t\t\t\t? response.cachePolicy.timeToLive()\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\tif (options_.maxTtl) {\n\t\t\t\t\t\t\t\t\tttl = ttl ? Math.min(ttl, options_.maxTtl) : options_.maxTtl;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (this.hooks.size > 0) {\n\t\t\t\t\t\t\t\t\tfor (const key_ of this.hooks.keys()) {\n\t\t\t\t\t\t\t\t\t\tvalue = await this.runHook(key_, value, response);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tawait this.cache.set(key, value, ttl);\n\t\t\t\t\t\t\t} catch (error: any) {\n\t\t\t\t\t\t\t\t/* c8 ignore next 2 */\n\t\t\t\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t} else if (options_.cache && revalidate) {\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cache.delete(key);\n\t\t\t\t\t\t\t} catch (error: any) {\n\t\t\t\t\t\t\t\t/* c8 ignore next 2 */\n\t\t\t\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit(\"response\", clonedResponse ?? response);\n\t\t\t\t\tif (typeof callback === \"function\") {\n\t\t\t\t\t\tcallback(clonedResponse ?? response);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tconst request_ = this.cacheRequest(options_, handler);\n\t\t\t\t\trequest_.once(\"error\", requestErrorCallback);\n\t\t\t\t\trequest_.once(\"abort\", requestErrorCallback);\n\t\t\t\t\trequest_.once(\"destroy\", requestErrorCallback);\n\t\t\t\t\tee.emit(\"request\", request_);\n\t\t\t\t} catch (error: any) {\n\t\t\t\t\tee.emit(\"error\", new RequestError(error));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t(async () => {\n\t\t\t\tconst get = async (options_: any) => {\n\t\t\t\t\tawait Promise.resolve();\n\t\t\t\t\tconst cacheEntry = options_.cache\n\t\t\t\t\t\t? await this.cache.get(key)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tif (cacheEntry === undefined && !options_.forceRefresh) {\n\t\t\t\t\t\tmakeRequest(options_);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst policy = CachePolicy.fromObject(\n\t\t\t\t\t\t(cacheEntry as CacheValue).cachePolicy,\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tpolicy.satisfiesWithoutRevalidation(options_) &&\n\t\t\t\t\t\t!options_.forceRefresh\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst headers = convertHeaders(policy.responseHeaders());\n\t\t\t\t\t\tconst bodyBuffer = (cacheEntry as CacheValue).body;\n\t\t\t\t\t\tconst body = Buffer.from(bodyBuffer as string);\n\t\t\t\t\t\tconst response: any = new Response({\n\t\t\t\t\t\t\tstatusCode: (cacheEntry as CacheValue).statusCode,\n\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\turl: (cacheEntry as CacheValue).url,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresponse.cachePolicy = policy;\n\t\t\t\t\t\tresponse.fromCache = true;\n\t\t\t\t\t\tee.emit(\"response\", response);\n\t\t\t\t\t\tif (typeof callback === \"function\") {\n\t\t\t\t\t\t\tcallback(response);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tpolicy.satisfiesWithoutRevalidation(options_) &&\n\t\t\t\t\t\tDate.now() >= policy.timeToLive() &&\n\t\t\t\t\t\toptions_.forceRefresh\n\t\t\t\t\t) {\n\t\t\t\t\t\tawait this.cache.delete(key);\n\t\t\t\t\t\toptions_.headers = policy.revalidationHeaders(options_);\n\t\t\t\t\t\tmakeRequest(options_);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trevalidate = cacheEntry;\n\t\t\t\t\t\toptions_.headers = policy.revalidationHeaders(options_);\n\t\t\t\t\t\tmakeRequest(options_);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst errorHandler = (error: Error) =>\n\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\tif (this.cache instanceof Keyv) {\n\t\t\t\t\tconst cachek = this.cache;\n\t\t\t\t\tcachek.once(\"error\", errorHandler);\n\t\t\t\t\tee.on(\"error\", () => {\n\t\t\t\t\t\tcachek.removeListener(\"error\", errorHandler);\n\t\t\t\t\t});\n\t\t\t\t\tee.on(\"response\", () => {\n\t\t\t\t\t\tcachek.removeListener(\"error\", errorHandler);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait get(options);\n\t\t\t\t} catch (error: any) {\n\t\t\t\t\t/* c8 ignore next 3 */\n\t\t\t\t\tif (options.automaticFailover && !madeRequest) {\n\t\t\t\t\t\tmakeRequest(options);\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\t}\n\t\t\t})();\n\n\t\t\treturn ee;\n\t\t};\n\n\taddHook = (name: string, function_: Function_) => {\n\t\tif (!this.hooks.has(name)) {\n\t\t\tthis.hooks.set(name, function_);\n\t\t}\n\t};\n\n\tremoveHook = (name: string) => this.hooks.delete(name);\n\n\tgetHook = (name: string) => this.hooks.get(name);\n\n\trunHook = async (name: string, ...arguments_: any[]): Promise<CacheValue> =>\n\t\tthis.hooks.get(name)?.(...arguments_);\n}\n\nconst entries = Object.entries as <T>(\n\tobject: T,\n) => Array<[keyof T, T[keyof T]]>;\n\nconst cloneResponse = (response: IncomingMessage) => {\n\tconst clone = new PassThroughStream({ autoDestroy: false });\n\tmimicResponse(response, clone);\n\n\treturn response.pipe(clone);\n};\n\nconst urlObjectToRequestOptions = (url: any) => {\n\tconst options: UrlOption = { ...url };\n\toptions.path = `${url.pathname || \"/\"}${url.search || \"\"}`;\n\tdelete options.pathname;\n\tdelete options.search;\n\treturn options;\n};\n\nconst normalizeUrlObject = (url: any) =>\n\t// If url was parsed by url.parse or new URL:\n\t// - hostname will be set\n\t// - host will be hostname[:port]\n\t// - port will be set if it was explicit in the parsed string\n\t// Otherwise, url was from request options:\n\t// - hostname or host may be set\n\t// - host shall not have port encoded\n\t({\n\t\tprotocol: url.protocol,\n\t\tauth: url.auth,\n\t\thostname: url.hostname || url.host || \"localhost\",\n\t\tport: url.port,\n\t\tpathname: url.pathname,\n\t\tsearch: url.search,\n\t});\n\nconst convertHeaders = (headers: CachePolicy.Headers) => {\n\tconst result: any = [];\n\tfor (const name of Object.keys(headers)) {\n\t\tresult[name.toLowerCase()] = headers[name];\n\t}\n\n\treturn result;\n};\n\nexport const parseWithWhatwg = (raw: string) => {\n\tconst u = new URL(raw);\n\n\t// If normalizeUrlObject expects the same fields as url.parse()\n\treturn {\n\t\tprotocol: u.protocol, // E.g. 'https:'\n\t\tslashes: true, // Always true for WHATWG URLs\n\t\t/* c8 ignore next 3 */\n\t\tauth: u.username || u.password ? `${u.username}:${u.password}` : undefined,\n\t\thost: u.host, // E.g. 'example.com:8080'\n\t\tport: u.port, // E.g. '8080'\n\t\thostname: u.hostname, // E.g. 'example.com'\n\t\thash: u.hash, // E.g. '#quux'\n\t\tsearch: u.search, // E.g. '?bar=baz'\n\t\tquery: Object.fromEntries(u.searchParams), // { bar: 'baz' }\n\t\tpathname: u.pathname, // E.g. '/foo'\n\t\tpath: u.pathname + u.search, // '/foo?bar=baz'\n\t\thref: u.href, // Full serialized URL\n\t};\n};\n\nexport default CacheableRequest;\nexport * from \"./types.js\";\nexport const onResponse = \"onResponse\";\n"]} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// biome-ignore-all lint/suspicious/noImplicitAnyLet: legacy format\n// biome-ignore-all lint/suspicious/noExplicitAny: legacy format\nimport crypto from \"node:crypto\";\nimport EventEmitter from \"node:events\";\nimport type { IncomingMessage } from \"node:http\";\nimport stream, { PassThrough as PassThroughStream } from \"node:stream\";\nimport urlLib, { URL } from \"node:url\";\nimport { getStreamAsBuffer } from \"get-stream\";\nimport CachePolicy from \"http-cache-semantics\";\nimport { Keyv } from \"keyv\";\nimport mimicResponse from \"mimic-response\";\nimport normalizeUrl from \"normalize-url\";\nimport Response from \"responselike\";\nimport {\n\ttype CacheableOptions,\n\tCacheError,\n\ttype CacheResponse,\n\ttype CacheValue,\n\ttype Emitter,\n\tRequestError,\n\ttype RequestFn,\n\ttype UrlOption,\n} from \"./types.js\";\n\ntype Function_ = (...arguments_: any[]) => any;\n\nclass CacheableRequest {\n\tcache: Keyv = new Keyv<any>({ namespace: \"cacheable-request\" });\n\tcacheRequest: RequestFn;\n\thooks: Map<string, Function_> = new Map<string, Function_>();\n\tconstructor(cacheRequest: RequestFn, cacheAdapter?: any) {\n\t\tif (cacheAdapter) {\n\t\t\tif (cacheAdapter instanceof Keyv) {\n\t\t\t\tthis.cache = cacheAdapter;\n\t\t\t} else {\n\t\t\t\tthis.cache = new Keyv({\n\t\t\t\t\tstore: cacheAdapter,\n\t\t\t\t\tnamespace: \"cacheable-request\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.request = this.request.bind(this);\n\t\tthis.cacheRequest = cacheRequest;\n\t}\n\n\trequest =\n\t\t() =>\n\t\t(\n\t\t\toptions: CacheableOptions,\n\t\t\tcallback?: (response: CacheResponse) => void,\n\t\t): Emitter => {\n\t\t\tlet url;\n\t\t\tif (typeof options === \"string\") {\n\t\t\t\turl = normalizeUrlObject(parseWithWhatwg(options));\n\t\t\t\toptions = {};\n\t\t\t} else if (options instanceof urlLib.URL) {\n\t\t\t\turl = normalizeUrlObject(parseWithWhatwg(options.toString()));\n\t\t\t\toptions = {};\n\t\t\t} else {\n\t\t\t\tconst [pathname, ...searchParts] = (options.path ?? \"\").split(\"?\");\n\t\t\t\tconst search =\n\t\t\t\t\tsearchParts.length > 0 ? `?${searchParts.join(\"?\")}` : \"\";\n\t\t\t\turl = normalizeUrlObject({ ...options, pathname, search });\n\t\t\t}\n\n\t\t\toptions = {\n\t\t\t\theaders: {},\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tcache: true,\n\t\t\t\tstrictTtl: false,\n\t\t\t\tautomaticFailover: false,\n\t\t\t\t...options,\n\t\t\t\t...urlObjectToRequestOptions(url),\n\t\t\t};\n\t\t\toptions.headers = Object.fromEntries(\n\t\t\t\tentries(options.headers).map(([key, value]) => [\n\t\t\t\t\t(key as string).toLowerCase(),\n\t\t\t\t\tvalue,\n\t\t\t\t]),\n\t\t\t);\n\t\t\tconst ee: Emitter = new EventEmitter() as Emitter;\n\t\t\tconst normalizedUrlString = normalizeUrl(urlLib.format(url), {\n\t\t\t\tstripWWW: false,\n\t\t\t\tremoveTrailingSlash: false,\n\t\t\t\tstripAuthentication: false,\n\t\t\t});\n\t\t\tlet key = `${options.method}:${normalizedUrlString}`;\n\t\t\t// POST, PATCH, and PUT requests may be cached, depending on the response\n\t\t\t// cache-control headers. As a result, the body of the request should be\n\t\t\t// added to the cache key in order to avoid collisions.\n\t\t\tif (\n\t\t\t\toptions.body &&\n\t\t\t\toptions.method !== undefined &&\n\t\t\t\t[\"POST\", \"PATCH\", \"PUT\"].includes(options.method)\n\t\t\t) {\n\t\t\t\tif (options.body instanceof stream.Readable) {\n\t\t\t\t\t// Streamed bodies should completely skip the cache because they may\n\t\t\t\t\t// or may not be hashable and in either case the stream would need to\n\t\t\t\t\t// close before the cache key could be generated.\n\t\t\t\t\toptions.cache = false;\n\t\t\t\t} else {\n\t\t\t\t\tkey += `:${crypto.createHash(\"md5\").update(options.body).digest(\"hex\")}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet revalidate: any = false;\n\t\t\tlet madeRequest = false;\n\t\t\tconst makeRequest = (options_: any) => {\n\t\t\t\tmadeRequest = true;\n\t\t\t\tlet requestErrored = false;\n\t\t\t\t/* c8 ignore next 4 */\n\t\t\t\tlet requestErrorCallback: (...arguments_: any[]) => void = () => {\n\t\t\t\t\t/* do nothing */\n\t\t\t\t};\n\n\t\t\t\tconst requestErrorPromise = new Promise<void>((resolve) => {\n\t\t\t\t\trequestErrorCallback = () => {\n\t\t\t\t\t\tif (!requestErrored) {\n\t\t\t\t\t\t\trequestErrored = true;\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tconst handler = async (response: any) => {\n\t\t\t\t\tif (revalidate) {\n\t\t\t\t\t\tresponse.status = response.statusCode;\n\t\t\t\t\t\tconst originalPolicy = CachePolicy.fromObject(\n\t\t\t\t\t\t\trevalidate.cachePolicy,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst revalidatedPolicy = originalPolicy.revalidatedPolicy(\n\t\t\t\t\t\t\toptions_,\n\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!revalidatedPolicy.modified) {\n\t\t\t\t\t\t\tresponse.resume();\n\t\t\t\t\t\t\tawait new Promise((resolve) => {\n\t\t\t\t\t\t\t\t// Skipping 'error' handler cause 'error' event should't be emitted for 304 response\n\t\t\t\t\t\t\t\tresponse.once(\"end\", resolve);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t// Get headers from revalidated policy\n\t\t\t\t\t\t\tconst headers = convertHeaders(\n\t\t\t\t\t\t\t\trevalidatedPolicy.policy.responseHeaders(),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// Preserve headers from the original cached response that may have been\n\t\t\t\t\t\t\t// lost during revalidation (e.g., content-encoding, content-type, etc.)\n\t\t\t\t\t\t\t// This works around a limitation in http-cache-semantics where some headers\n\t\t\t\t\t\t\t// are not preserved when a 304 response has minimal headers\n\t\t\t\t\t\t\tconst originalHeaders = convertHeaders(\n\t\t\t\t\t\t\t\toriginalPolicy.responseHeaders(),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// Headers that should be preserved from the cached response\n\t\t\t\t\t\t\t// according to RFC 7232 section 4.1\n\t\t\t\t\t\t\tconst preserveHeaders = [\n\t\t\t\t\t\t\t\t\"content-encoding\",\n\t\t\t\t\t\t\t\t\"content-type\",\n\t\t\t\t\t\t\t\t\"content-length\",\n\t\t\t\t\t\t\t\t\"content-language\",\n\t\t\t\t\t\t\t\t\"content-location\",\n\t\t\t\t\t\t\t\t\"etag\",\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tfor (const headerName of preserveHeaders) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\toriginalHeaders[headerName] !== undefined &&\n\t\t\t\t\t\t\t\t\theaders[headerName] === undefined\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\theaders[headerName] = originalHeaders[headerName];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tresponse = new Response({\n\t\t\t\t\t\t\t\tstatusCode: revalidate.statusCode,\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t\tbody: revalidate.body,\n\t\t\t\t\t\t\t\turl: revalidate.url,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tresponse.cachePolicy = revalidatedPolicy.policy;\n\t\t\t\t\t\t\tresponse.fromCache = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.fromCache) {\n\t\t\t\t\t\tresponse.cachePolicy = new CachePolicy(\n\t\t\t\t\t\t\toptions_,\n\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\toptions_,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponse.fromCache = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet clonedResponse;\n\t\t\t\t\tif (options_.cache && response.cachePolicy.storable()) {\n\t\t\t\t\t\tclonedResponse = cloneResponse(response);\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst bodyPromise = getStreamAsBuffer(response);\n\t\t\t\t\t\t\t\tawait Promise.race([\n\t\t\t\t\t\t\t\t\trequestErrorPromise,\n\t\t\t\t\t\t\t\t\tnew Promise((resolve) => response.once(\"end\", resolve)),\n\t\t\t\t\t\t\t\t\tnew Promise((resolve) => response.once(\"close\", resolve)),\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\tconst body = await bodyPromise;\n\t\t\t\t\t\t\t\tlet value: CacheValue = {\n\t\t\t\t\t\t\t\t\turl: response.url,\n\t\t\t\t\t\t\t\t\tstatusCode: response.fromCache\n\t\t\t\t\t\t\t\t\t\t? revalidate.statusCode\n\t\t\t\t\t\t\t\t\t\t: response.statusCode,\n\t\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t\t\tcachePolicy: response.cachePolicy.toObject(),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tlet ttl = options_.strictTtl\n\t\t\t\t\t\t\t\t\t? response.cachePolicy.timeToLive()\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\tif (options_.maxTtl) {\n\t\t\t\t\t\t\t\t\tttl = ttl ? Math.min(ttl, options_.maxTtl) : options_.maxTtl;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (this.hooks.size > 0) {\n\t\t\t\t\t\t\t\t\tfor (const key_ of this.hooks.keys()) {\n\t\t\t\t\t\t\t\t\t\tvalue = await this.runHook(key_, value, response);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tawait this.cache.set(key, value, ttl);\n\t\t\t\t\t\t\t\t/* c8 ignore next -- @preserve */\n\t\t\t\t\t\t\t} catch (error: any) {\n\t\t\t\t\t\t\t\t/* c8 ignore next -- @preserve */\n\t\t\t\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\t\t\t\t\t/* c8 ignore next -- @preserve */\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t} else if (options_.cache && revalidate) {\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cache.delete(key);\n\t\t\t\t\t\t\t\t/* c8 ignore next -- @preserve */\n\t\t\t\t\t\t\t} catch (error: any) {\n\t\t\t\t\t\t\t\t/* c8 ignore next -- @preserve */\n\t\t\t\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\t\t\t\t\t/* c8 ignore next -- @preserve */\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit(\"response\", clonedResponse ?? response);\n\t\t\t\t\tif (typeof callback === \"function\") {\n\t\t\t\t\t\tcallback(clonedResponse ?? response);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tconst request_ = this.cacheRequest(options_, handler);\n\t\t\t\t\trequest_.once(\"error\", requestErrorCallback);\n\t\t\t\t\trequest_.once(\"abort\", requestErrorCallback);\n\t\t\t\t\trequest_.once(\"destroy\", requestErrorCallback);\n\t\t\t\t\tee.emit(\"request\", request_);\n\t\t\t\t} catch (error: any) {\n\t\t\t\t\tee.emit(\"error\", new RequestError(error));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t(async () => {\n\t\t\t\tconst get = async (options_: any) => {\n\t\t\t\t\tawait Promise.resolve();\n\t\t\t\t\tconst cacheEntry = options_.cache\n\t\t\t\t\t\t? await this.cache.get(key)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tif (cacheEntry === undefined && !options_.forceRefresh) {\n\t\t\t\t\t\tmakeRequest(options_);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst policy = CachePolicy.fromObject(\n\t\t\t\t\t\t(cacheEntry as CacheValue).cachePolicy,\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tpolicy.satisfiesWithoutRevalidation(options_) &&\n\t\t\t\t\t\t!options_.forceRefresh\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst headers = convertHeaders(policy.responseHeaders());\n\t\t\t\t\t\tconst bodyBuffer = (cacheEntry as CacheValue).body;\n\t\t\t\t\t\tconst body = Buffer.from(bodyBuffer as string);\n\t\t\t\t\t\tconst response: any = new Response({\n\t\t\t\t\t\t\tstatusCode: (cacheEntry as CacheValue).statusCode,\n\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\turl: (cacheEntry as CacheValue).url,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresponse.cachePolicy = policy;\n\t\t\t\t\t\tresponse.fromCache = true;\n\t\t\t\t\t\tee.emit(\"response\", response);\n\t\t\t\t\t\tif (typeof callback === \"function\") {\n\t\t\t\t\t\t\tcallback(response);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tpolicy.satisfiesWithoutRevalidation(options_) &&\n\t\t\t\t\t\tDate.now() >= policy.timeToLive() &&\n\t\t\t\t\t\toptions_.forceRefresh\n\t\t\t\t\t) {\n\t\t\t\t\t\tawait this.cache.delete(key);\n\t\t\t\t\t\toptions_.headers = policy.revalidationHeaders(options_);\n\t\t\t\t\t\tmakeRequest(options_);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trevalidate = cacheEntry;\n\t\t\t\t\t\toptions_.headers = policy.revalidationHeaders(options_);\n\t\t\t\t\t\tmakeRequest(options_);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst errorHandler = (error: Error) =>\n\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\tif (this.cache instanceof Keyv) {\n\t\t\t\t\tconst cachek = this.cache;\n\t\t\t\t\tcachek.once(\"error\", errorHandler);\n\t\t\t\t\tee.on(\"error\", () => {\n\t\t\t\t\t\tcachek.removeListener(\"error\", errorHandler);\n\t\t\t\t\t});\n\t\t\t\t\tee.on(\"response\", () => {\n\t\t\t\t\t\tcachek.removeListener(\"error\", errorHandler);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait get(options);\n\t\t\t\t} catch (error: any) {\n\t\t\t\t\t/* c8 ignore next 3 */\n\t\t\t\t\tif (options.automaticFailover && !madeRequest) {\n\t\t\t\t\t\tmakeRequest(options);\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit(\"error\", new CacheError(error));\n\t\t\t\t}\n\t\t\t})();\n\n\t\t\treturn ee;\n\t\t};\n\n\taddHook = (name: string, function_: Function_) => {\n\t\tif (!this.hooks.has(name)) {\n\t\t\tthis.hooks.set(name, function_);\n\t\t}\n\t};\n\n\tremoveHook = (name: string) => this.hooks.delete(name);\n\n\tgetHook = (name: string) => this.hooks.get(name);\n\n\trunHook = async (name: string, ...arguments_: any[]): Promise<CacheValue> =>\n\t\tthis.hooks.get(name)?.(...arguments_);\n}\n\nconst entries = Object.entries as <T>(\n\tobject: T,\n) => Array<[keyof T, T[keyof T]]>;\n\nconst cloneResponse = (response: IncomingMessage) => {\n\tconst clone = new PassThroughStream({ autoDestroy: false });\n\tmimicResponse(response, clone);\n\n\treturn response.pipe(clone);\n};\n\nconst urlObjectToRequestOptions = (url: any) => {\n\tconst options: UrlOption = { ...url };\n\toptions.path = `${url.pathname || \"/\"}${url.search || \"\"}`;\n\tdelete options.pathname;\n\tdelete options.search;\n\treturn options;\n};\n\nconst normalizeUrlObject = (url: any) =>\n\t// If url was parsed by url.parse or new URL:\n\t// - hostname will be set\n\t// - host will be hostname[:port]\n\t// - port will be set if it was explicit in the parsed string\n\t// Otherwise, url was from request options:\n\t// - hostname or host may be set\n\t// - host shall not have port encoded\n\t({\n\t\tprotocol: url.protocol,\n\t\tauth: url.auth,\n\t\thostname: url.hostname || url.host || \"localhost\",\n\t\tport: url.port,\n\t\tpathname: url.pathname,\n\t\tsearch: url.search,\n\t});\n\nconst convertHeaders = (headers: CachePolicy.Headers) => {\n\tconst result: any = [];\n\tfor (const name of Object.keys(headers)) {\n\t\tresult[name.toLowerCase()] = headers[name];\n\t}\n\n\treturn result;\n};\n\nexport const parseWithWhatwg = (raw: string) => {\n\tconst u = new URL(raw);\n\n\t// If normalizeUrlObject expects the same fields as url.parse()\n\treturn {\n\t\tprotocol: u.protocol, // E.g. 'https:'\n\t\tslashes: true, // Always true for WHATWG URLs\n\t\t/* c8 ignore next 3 */\n\t\tauth: u.username || u.password ? `${u.username}:${u.password}` : undefined,\n\t\thost: u.host, // E.g. 'example.com:8080'\n\t\tport: u.port, // E.g. '8080'\n\t\thostname: u.hostname, // E.g. 'example.com'\n\t\thash: u.hash, // E.g. '#quux'\n\t\tsearch: u.search, // E.g. '?bar=baz'\n\t\tquery: Object.fromEntries(u.searchParams), // { bar: 'baz' }\n\t\tpathname: u.pathname, // E.g. '/foo'\n\t\tpath: u.pathname + u.search, // '/foo?bar=baz'\n\t\thref: u.href, // Full serialized URL\n\t};\n};\n\nexport default CacheableRequest;\nexport * from \"./types.js\";\nexport const onResponse = \"onResponse\";\n"]} |
+1
-1
| { | ||
| "name": "cacheable-request", | ||
| "version": "13.0.12", | ||
| "version": "13.0.13", | ||
| "description": "Wrap native HTTP requests with RFC compliant cache support", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
79498
5.26%500
5.71%