@orbit/immutable
Version:
Lightweight immutable library used by Orbit.js.
60 lines • 5.46 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ImmutableMap = void 0;
const hamt_1 = require("./utils/hamt");
class ImmutableMap {
constructor(base) {
if (base) {
this._data = base.data;
}
else {
this._data = new hamt_1.HAMTMap();
}
}
get size() {
return this._data.size;
}
clear() {
this._data = new hamt_1.HAMTMap();
}
get(key) {
return this._data.get(key);
}
set(key, value) {
this._data = this._data.set(key, value);
}
setMany(entries) {
let data = this._data.beginMutation();
entries.forEach((entry) => {
data.set(entry[0], entry[1]);
});
this._data = data.endMutation();
}
remove(key) {
this._data = this._data.remove(key);
}
removeMany(keys) {
let data = this._data.beginMutation();
keys.forEach((key) => {
data.remove(key);
});
this._data = data.endMutation();
}
has(key) {
return this.get(key) !== undefined;
}
keys() {
return this._data.keys();
}
values() {
return this._data.values();
}
entries() {
return this._data.entries();
}
get data() {
return this._data;
}
}
exports.ImmutableMap = ImmutableMap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1tdXRhYmxlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbW11dGFibGUtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUF1QztBQUV2QyxNQUFhLFlBQVk7SUFHdkIsWUFBWSxJQUF5QjtRQUNuQyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN4QjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGNBQU8sRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksY0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQU0sRUFBRSxLQUFRO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBaUI7UUFDdkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQU07UUFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBYyxJQUFJO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFsRUQsb0NBa0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSEFNVE1hcCB9IGZyb20gJy4vdXRpbHMvaGFtdCc7XG5cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVNYXA8SywgVj4ge1xuICBwcml2YXRlIF9kYXRhOiBIQU1UTWFwO1xuXG4gIGNvbnN0cnVjdG9yKGJhc2U/OiBJbW11dGFibGVNYXA8SywgVj4pIHtcbiAgICBpZiAoYmFzZSkge1xuICAgICAgdGhpcy5fZGF0YSA9IGJhc2UuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGF0YSA9IG5ldyBIQU1UTWFwKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5zaXplO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZGF0YSA9IG5ldyBIQU1UTWFwKCk7XG4gIH1cblxuICBnZXQoa2V5OiBLKTogViB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZ2V0KGtleSk7XG4gIH1cblxuICBzZXQoa2V5OiBLLCB2YWx1ZTogVik6IHZvaWQge1xuICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9kYXRhLnNldChrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHNldE1hbnkoZW50cmllczogW0ssIFZdW10pOiB2b2lkIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuX2RhdGEuYmVnaW5NdXRhdGlvbigpO1xuICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgIGRhdGEuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGEuZW5kTXV0YXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZShrZXk6IEspOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRhID0gdGhpcy5fZGF0YS5yZW1vdmUoa2V5KTtcbiAgfVxuXG4gIHJlbW92ZU1hbnkoa2V5czogS1tdKTogdm9pZCB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLl9kYXRhLmJlZ2luTXV0YXRpb24oKTtcbiAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgZGF0YS5yZW1vdmUoa2V5KTtcbiAgICB9KTtcbiAgICB0aGlzLl9kYXRhID0gZGF0YS5lbmRNdXRhdGlvbigpO1xuICB9XG5cbiAgaGFzKGtleTogSyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldChrZXkpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBrZXlzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8Sz4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmtleXMoKTtcbiAgfVxuXG4gIHZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFY+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS52YWx1ZXMoKTtcbiAgfVxuXG4gIGVudHJpZXMoKTogSXRlcmFibGVJdGVyYXRvcjxbSywgVl0+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5lbnRyaWVzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGRhdGEoKTogSEFNVE1hcCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbn1cbiJdfQ==