cachified-redis-json-adapter
Version:
A redis-json adapter for usage with @epic-web/cachified
98 lines (94 loc) • 3.06 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// src/index.ts
var src_exports = {};
__export(src_exports, {
redisJsonCacheAdapter: () => redisJsonCacheAdapter
});
module.exports = __toCommonJS(src_exports);
// node_modules/.pnpm/@epic-web+cachified@5.1.2/node_modules/@epic-web/cachified/dist/index.mjs
var HANDLE = Symbol();
var MIGRATED = Symbol();
function staleWhileRevalidate(metadata) {
return (typeof metadata.swr === "undefined" ? metadata.swv : metadata.swr) || null;
}
function totalTtl(metadata) {
if (!metadata) {
return 0;
}
if (metadata.ttl === null) {
return Infinity;
}
return (metadata.ttl || 0) + (staleWhileRevalidate(metadata) || 0);
}
var CACHE_EMPTY = Symbol();
// src/index.ts
function redisJsonCacheAdapter(redisJsonCache) {
return {
name: redisJsonCache.name || "RedisJson",
delete(key) {
return redisJsonCache.json.del(key);
},
set(key, value) {
return __async(this, null, function* () {
var _a2;
const ttl = totalTtl(value == null ? void 0 : value.metadata);
const createdTime = (_a2 = value == null ? void 0 : value.metadata) == null ? void 0 : _a2.createdTime;
const setOperation = yield redisJsonCache.json.set(key, "$", value);
if (ttl > 0 && ttl < Infinity && typeof createdTime === "number") {
yield redisJsonCache.expireAt(
key,
Math.ceil((ttl + createdTime) / 1e3)
);
}
return setOperation;
});
},
get(key) {
return __async(this, null, function* () {
const value = yield redisJsonCache.json.get(key);
if (value == null) {
return null;
}
return value;
});
}
};
}
//# sourceMappingURL=index.cjs.map