keyv-file
Version:
File storage adapter for Keyv, using msgpack to serialize data fast and small.
49 lines (48 loc) • 1.37 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Field = void 0;
exports.makeField = makeField;
class Field {
kv;
key;
defaults;
constructor(kv, key, defaults) {
this.kv = kv;
this.key = key;
this.defaults = defaults;
}
async get(def = this.defaults) {
return (await this.kv.get(this.key)) ?? def;
}
getSync(def = this.defaults) {
if (this.kv instanceof Map) {
return this.kv.get(this.key) ?? def;
}
else if ('getSync' in this.kv) {
return this.kv.getSync(this.key) ?? def;
}
throw new Error('kv does not support getSync');
}
// setSync(def:T) {
// if ('setSync' in this.kv) {
// return this.kv.setSync(this.key, def) ?? def
// }
// throw new Error('kv does not support getSync')
// }
/**
* Note: `await kv.someFiled.set()` will wait <options.writeDelay> millseconds to save to disk, it would be slow. Please remove `await` if you find performance issues.
* @param value
* @param ttl
* @returns
*/
set(val, ttl) {
return this.kv.set(this.key, val, ttl);
}
delete() {
return this.kv.delete(this.key);
}
}
exports.Field = Field;
function makeField(kv, key, defaults) {
return new Field(kv, key, defaults);
}