133 lines
11 KiB
JavaScript
133 lines
11 KiB
JavaScript
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
};
|
|
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
};
|
|
var _MemoryBackend_instances, _MemoryBackend_buckets, _MemoryBackend_findBucket;
|
|
// ---------------------------------------------------------------------------
|
|
// Helpers
|
|
// ---------------------------------------------------------------------------
|
|
function toArray(v) {
|
|
return Array.isArray(v) ? v : [v];
|
|
}
|
|
function setUnion(a, b) {
|
|
return [...new Set([...a, ...b])];
|
|
}
|
|
function setDifference(a, b) {
|
|
const set = new Set(b);
|
|
return a.filter((x) => !set.has(x));
|
|
}
|
|
// ---------------------------------------------------------------------------
|
|
// MemoryBackend
|
|
// ---------------------------------------------------------------------------
|
|
export class MemoryBackend {
|
|
constructor() {
|
|
_MemoryBackend_instances.add(this);
|
|
_MemoryBackend_buckets.set(this, {});
|
|
}
|
|
/** Expose raw data (used by FileBackend for serialisation). */
|
|
get buckets() {
|
|
return __classPrivateFieldGet(this, _MemoryBackend_buckets, "f");
|
|
}
|
|
set buckets(data) {
|
|
__classPrivateFieldSet(this, _MemoryBackend_buckets, data, "f");
|
|
}
|
|
// -- Transaction lifecycle ------------------------------------------------
|
|
begin() {
|
|
return [];
|
|
}
|
|
async end(transaction) {
|
|
for (const fn of transaction) {
|
|
fn();
|
|
}
|
|
}
|
|
async clean() {
|
|
__classPrivateFieldSet(this, _MemoryBackend_buckets, {}, "f");
|
|
}
|
|
// -- Reads ----------------------------------------------------------------
|
|
async get(bucket, key) {
|
|
var _a, _b;
|
|
return (_b = (_a = __classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[bucket]) === null || _a === void 0 ? void 0 : _a[key]) !== null && _b !== void 0 ? _b : [];
|
|
}
|
|
async union(bucket, keys) {
|
|
const b = __classPrivateFieldGet(this, _MemoryBackend_instances, "m", _MemoryBackend_findBucket).call(this, bucket);
|
|
if (!b)
|
|
return [];
|
|
const result = [];
|
|
for (const key of keys) {
|
|
const vals = b[String(key)];
|
|
if (vals)
|
|
result.push(...vals);
|
|
}
|
|
return [...new Set(result)];
|
|
}
|
|
async unions(buckets, keys) {
|
|
const result = {};
|
|
for (const bucket of buckets) {
|
|
const b = __classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[bucket];
|
|
if (!b) {
|
|
result[bucket] = [];
|
|
continue;
|
|
}
|
|
const merged = [];
|
|
for (const key of keys) {
|
|
const vals = b[String(key)];
|
|
if (vals)
|
|
merged.push(...vals);
|
|
}
|
|
result[bucket] = [...new Set(merged)];
|
|
}
|
|
return result;
|
|
}
|
|
// -- Writes (queued in transaction) ---------------------------------------
|
|
add(transaction, bucket, key, values) {
|
|
const vals = toArray(values).map(String);
|
|
transaction.push(() => {
|
|
var _a, _b;
|
|
var _c;
|
|
(_a = (_c = __classPrivateFieldGet(this, _MemoryBackend_buckets, "f"))[bucket]) !== null && _a !== void 0 ? _a : (_c[bucket] = {});
|
|
const existing = (_b = __classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[bucket][String(key)]) !== null && _b !== void 0 ? _b : [];
|
|
__classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[bucket][String(key)] = setUnion(existing, vals);
|
|
});
|
|
}
|
|
del(transaction, bucket, keys) {
|
|
const keysArr = toArray(keys).map(String);
|
|
transaction.push(() => {
|
|
const b = __classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[bucket];
|
|
if (!b)
|
|
return;
|
|
for (const k of keysArr) {
|
|
delete b[k];
|
|
}
|
|
});
|
|
}
|
|
remove(transaction, bucket, key, values) {
|
|
const vals = toArray(values).map(String);
|
|
transaction.push(() => {
|
|
const b = __classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[bucket];
|
|
if (!b)
|
|
return;
|
|
const old = b[String(key)];
|
|
if (old) {
|
|
b[String(key)] = setDifference(old, vals);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
_MemoryBackend_buckets = new WeakMap(), _MemoryBackend_instances = new WeakSet(), _MemoryBackend_findBucket = function _MemoryBackend_findBucket(name) {
|
|
if (__classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[name])
|
|
return __classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[name];
|
|
for (const key of Object.keys(__classPrivateFieldGet(this, _MemoryBackend_buckets, "f"))) {
|
|
if (new RegExp(`^${key}$`).test(name)) {
|
|
return __classPrivateFieldGet(this, _MemoryBackend_buckets, "f")[key];
|
|
}
|
|
}
|
|
return undefined;
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5QmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL01lbW9yeUJhY2tlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBV0EsOEVBQThFO0FBQzlFLFVBQVU7QUFDViw4RUFBOEU7QUFFOUUsU0FBUyxPQUFPLENBQUMsQ0FBUztJQUN0QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBVyxFQUFFLENBQVc7SUFDdEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsQ0FBVyxFQUFFLENBQVc7SUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsOEVBQThFO0FBQzlFLGdCQUFnQjtBQUNoQiw4RUFBOEU7QUFFOUUsTUFBTSxPQUFPLGFBQWE7SUFBMUI7O1FBQ0ksaUNBQXdCLEVBQUUsRUFBQztJQWlIL0IsQ0FBQztJQS9HRywrREFBK0Q7SUFDL0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyx1QkFBQSxJQUFJLDhCQUFTLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLElBQWlCO1FBQ3pCLHVCQUFBLElBQUksMEJBQVksSUFBSSxNQUFBLENBQUM7SUFDekIsQ0FBQztJQUVELDRFQUE0RTtJQUU1RSxL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
|