mono/packages/acl/dist-in/data/MemoryBackend.js
2026-02-19 19:47:24 +01:00

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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