UNPKG

@orbit/identity-map

Version:

Orbit identity map to manage model instances.

72 lines 7.99 kB
"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=