@graphql-mesh/cache-cfw-kv
Version:
43 lines (42 loc) • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("@graphql-mesh/utils");
class CFWorkerKVCache {
constructor(config) {
if (typeof config.namespace === 'string') {
this.kvNamespace = globalThis[config.namespace];
}
else {
this.kvNamespace = config.namespace;
}
if (this.kvNamespace === undefined) {
// We don't use mocks because they increase the bundle size.
config.logger?.warn(`Make sure KV Namespace: ${config.namespace} exists.`);
}
}
get(key) {
return this.kvNamespace?.get(key, 'json');
}
getKeysByPrefix(prefix) {
return (0, utils_1.mapMaybePromise)(this.kvNamespace?.list({ prefix }), result => {
if (!result) {
return [];
}
return result.keys.map(keyEntry => keyEntry.name);
});
}
set(key, value, options) {
return this.kvNamespace?.put(key, JSON.stringify(value), {
expirationTtl: options?.ttl,
});
}
delete(key) {
try {
return (0, utils_1.mapMaybePromise)(this.kvNamespace?.delete(key), () => true, () => false);
}
catch (e) {
return false;
}
}
}
exports.default = CFWorkerKVCache;