Files
micro-service-api/node_modules/@redis/client/dist/lib/single-entry-cache.js
2025-11-11 12:36:06 +07:00

38 lines
1.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class SingleEntryCache {
#cached;
#serializedKey;
/**
* Retrieves an instance from the cache based on the provided key object.
*
* @param keyObj - The key object to look up in the cache.
* @returns The cached instance if found, undefined otherwise.
*
* @remarks
* This method uses JSON.stringify for comparison, which may not work correctly
* if the properties in the key object are rearranged or reordered.
*/
get(keyObj) {
return JSON.stringify(keyObj, makeCircularReplacer()) === this.#serializedKey ? this.#cached : undefined;
}
set(keyObj, obj) {
this.#cached = obj;
this.#serializedKey = JSON.stringify(keyObj, makeCircularReplacer());
}
}
exports.default = SingleEntryCache;
function makeCircularReplacer() {
const seen = new WeakSet();
return function serialize(_, value) {
if (value && typeof value === 'object') {
if (seen.has(value)) {
return 'circular';
}
seen.add(value);
return value;
}
return value;
};
}
//# sourceMappingURL=single-entry-cache.js.map