@orbit/identity-map
Version:
Orbit identity map to manage model instances.
72 lines • 7.99 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.IdentityMap = void 0;
class IdentityMap {
constructor(settings) {
this._serializer = settings.serializer;
this._map = new Map();
}
get(identity) {
const identifier = this._serializer.serialize(identity);
if (identifier !== undefined) {
return this._map.get(identifier);
}
}
set(identity, record) {
const identifier = this._serializer.serialize(identity);
if (identifier !== undefined) {
this._map.set(identifier, record);
}
return this;
}
has(identity) {
const identifier = this._serializer.serialize(identity);
if (identifier !== undefined) {
return this._map.has(identifier);
}
else {
return false;
}
}
delete(identity) {
const identifier = this._serializer.serialize(identity);
const result = this._map.has(identifier);
if (result) {
this._map.delete(identifier);
}
return result;
}
entries() {
return Array.from(this._map)
.map(([identifier, record]) => [
this._serializer.deserialize(identifier),
record
])[Symbol.iterator]();
}
keys() {
return Array.from(this)
.map(([identity]) => identity)[Symbol.iterator]();
}
values() {
return this._map.values();
}
[Symbol.iterator]() {
return this.entries();
}
clear() {
this._map.clear();
}
forEach(callbackFn, thisArg) {
for (let [identity, record] of this) {
callbackFn.call(thisArg, record, identity, this);
}
}
get size() {
return this._map.size;
}
get [Symbol.toStringTag]() {
return 'IdentityMap';
}
}
exports.IdentityMap = IdentityMap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lkZW50aXR5LW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFhLFdBQVc7SUFJdEIsWUFBWSxRQUF1QztRQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxHQUFHLENBQUMsUUFBa0I7UUFDcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLFFBQWtCLEVBQUUsTUFBYTtRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsR0FBRyxDQUFDLFFBQWtCO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFrQjtRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUN6QixHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBcUIsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUN4QyxNQUFNO1NBQ1AsQ0FBQyxDQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNwQixHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FDN0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTyxDQUNMLFVBSVMsRUFDVCxPQUFpQjtRQUVqQixLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ25DLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdEIsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBekZELGtDQXlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkZW50aXR5U2VyaWFsaXplciB9IGZyb20gJy4vaWRlbnRpdHktc2VyaWFsaXplcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlNYXBTZXR0aW5nczxJZGVudGl0eT4ge1xuICBzZXJpYWxpemVyOiBJZGVudGl0eVNlcmlhbGl6ZXI8SWRlbnRpdHk+O1xufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlNYXA8SWRlbnRpdHksIE1vZGVsPiBpbXBsZW1lbnRzIE1hcDxJZGVudGl0eSwgTW9kZWw+IHtcbiAgcHJvdGVjdGVkIF9zZXJpYWxpemVyOiBJZGVudGl0eVNlcmlhbGl6ZXI8SWRlbnRpdHk+O1xuICBwcm90ZWN0ZWQgX21hcDogTWFwPHN0cmluZywgTW9kZWw+O1xuXG4gIGNvbnN0cnVjdG9yKHNldHRpbmdzOiBJZGVudGl0eU1hcFNldHRpbmdzPElkZW50aXR5Pikge1xuICAgIHRoaXMuX3NlcmlhbGl6ZXIgPSBzZXR0aW5ncy5zZXJpYWxpemVyO1xuICAgIHRoaXMuX21hcCA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIGdldChpZGVudGl0eTogSWRlbnRpdHkpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplKGlkZW50aXR5KTtcbiAgICBpZiAoaWRlbnRpZmllciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbWFwLmdldChpZGVudGlmaWVyKTtcbiAgICB9XG4gIH1cblxuICBzZXQoaWRlbnRpdHk6IElkZW50aXR5LCByZWNvcmQ6IE1vZGVsKTogdGhpcyB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplKGlkZW50aXR5KTtcbiAgICBpZiAoaWRlbnRpZmllciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9tYXAuc2V0KGlkZW50aWZpZXIsIHJlY29yZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGFzKGlkZW50aXR5OiBJZGVudGl0eSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLl9zZXJpYWxpemVyLnNlcmlhbGl6ZShpZGVudGl0eSk7XG4gICAgaWYgKGlkZW50aWZpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX21hcC5oYXMoaWRlbnRpZmllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBkZWxldGUoaWRlbnRpdHk6IElkZW50aXR5KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplKGlkZW50aXR5KTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9tYXAuaGFzKGlkZW50aWZpZXIpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuX21hcC5kZWxldGUoaWRlbnRpZmllcik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W0lkZW50aXR5LCBNb2RlbF0+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9tYXApXG4gICAgICAubWFwKChbaWRlbnRpZmllciwgcmVjb3JkXSk6IFtJZGVudGl0eSwgTW9kZWxdID0+IFtcbiAgICAgICAgdGhpcy5fc2VyaWFsaXplci5kZXNlcmlhbGl6ZShpZGVudGlmaWVyKSxcbiAgICAgICAgcmVjb3JkXG4gICAgICBdKVxuICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxuXG4gIGtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxJZGVudGl0eT4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMpXG4gICAgICAubWFwKChbaWRlbnRpdHldKSA9PiBpZGVudGl0eSlcbiAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cblxuICB2YWx1ZXMoKTogSXRlcmFibGVJdGVyYXRvcjxNb2RlbD4ge1xuICAgIHJldHVybiB0aGlzLl9tYXAudmFsdWVzKCk7XG4gIH1cblxuICBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFtJZGVudGl0eSwgTW9kZWxdPiB7XG4gICAgcmV0dXJuIHRoaXMuZW50cmllcygpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5fbWFwLmNsZWFyKCk7XG4gIH1cblxuICBmb3JFYWNoKFxuICAgIGNhbGxiYWNrRm46IChcbiAgICAgIHJlY29yZDogTW9kZWwsXG4gICAgICBpZGVudGl0eTogSWRlbnRpdHksXG4gICAgICBtYXA6IElkZW50aXR5TWFwPElkZW50aXR5LCBNb2RlbD5cbiAgICApID0+IHZvaWQsXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogdm9pZCB7XG4gICAgZm9yIChsZXQgW2lkZW50aXR5LCByZWNvcmRdIG9mIHRoaXMpIHtcbiAgICAgIGNhbGxiYWNrRm4uY2FsbCh0aGlzQXJnLCByZWNvcmQsIGlkZW50aXR5LCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXAuc2l6ZTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnSWRlbnRpdHlNYXAnO1xuICB9XG59XG4iXX0=