@data-client/normalizr
Version:
Normalizes and denormalizes JSON according to schema for Redux and Flux applications
42 lines (39 loc) • 5.09 kB
JavaScript
import { BaseDelegate } from './BaseDelegate.js';
/** Basic POJO state interfaces for normalize side
* Used directly as QueryDelegate, and inherited by NormalizeDelegate
*/
export class POJODelegate extends BaseDelegate {
constructor(state) {
super(state);
}
// we must expose the entities object to track in our WeakDependencyMap
// however, this should not be part of the public API
getEntitiesObject(key) {
return this.entities[key];
}
getEntities(key) {
const entities = this.entities[key];
if (entities === undefined) return undefined;
return {
keys() {
return Object.keys(entities);
},
entries() {
return Object.entries(entities);
}
};
}
getEntity(key, pk) {
var _this$entities$key;
return (_this$entities$key = this.entities[key]) == null ? void 0 : _this$entities$key[pk];
}
// this is different return value than QuerySnapshot
getIndex(key, field) {
var _this$indexes$key;
return (_this$indexes$key = this.indexes[key]) == null ? void 0 : _this$indexes$key[field];
}
getIndexEnd(entity, value) {
return entity == null ? void 0 : entity[value];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlRGVsZWdhdGUiLCJQT0pPRGVsZWdhdGUiLCJjb25zdHJ1Y3RvciIsInN0YXRlIiwiZ2V0RW50aXRpZXNPYmplY3QiLCJrZXkiLCJlbnRpdGllcyIsImdldEVudGl0aWVzIiwidW5kZWZpbmVkIiwia2V5cyIsIk9iamVjdCIsImVudHJpZXMiLCJnZXRFbnRpdHkiLCJwayIsIl90aGlzJGVudGl0aWVzJGtleSIsImdldEluZGV4IiwiZmllbGQiLCJfdGhpcyRpbmRleGVzJGtleSIsImluZGV4ZXMiLCJnZXRJbmRleEVuZCIsImVudGl0eSIsInZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlbGVnYXRlL0RlbGVnYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRW50aXRpZXNJbnRlcmZhY2UsXG4gIEVudGl0eVRhYmxlLFxuICBOb3JtYWxpemVkSW5kZXgsXG59IGZyb20gJy4uL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgeyBCYXNlRGVsZWdhdGUgfSBmcm9tICcuL0Jhc2VEZWxlZ2F0ZS5qcyc7XG5cbi8qKiBCYXNpYyBQT0pPIHN0YXRlIGludGVyZmFjZXMgZm9yIG5vcm1hbGl6ZSBzaWRlXG4gKiBVc2VkIGRpcmVjdGx5IGFzIFF1ZXJ5RGVsZWdhdGUsIGFuZCBpbmhlcml0ZWQgYnkgTm9ybWFsaXplRGVsZWdhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIFBPSk9EZWxlZ2F0ZSBleHRlbmRzIEJhc2VEZWxlZ2F0ZSB7XG4gIGRlY2xhcmUgZW50aXRpZXM6IEVudGl0eVRhYmxlO1xuICBkZWNsYXJlIGluZGV4ZXM6IHtcbiAgICBbZW50aXR5S2V5OiBzdHJpbmddOiB7XG4gICAgICBbaW5kZXhOYW1lOiBzdHJpbmddOiB7IFtsb29rdXA6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIH07XG4gIH07XG5cbiAgY29uc3RydWN0b3Ioc3RhdGU6IHsgZW50aXRpZXM6IEVudGl0eVRhYmxlOyBpbmRleGVzOiBOb3JtYWxpemVkSW5kZXggfSkge1xuICAgIHN1cGVyKHN0YXRlKTtcbiAgfVxuXG4gIC8vIHdlIG11c3QgZXhwb3NlIHRoZSBlbnRpdGllcyBvYmplY3QgdG8gdHJhY2sgaW4gb3VyIFdlYWtEZXBlbmRlbmN5TWFwXG4gIC8vIGhvd2V2ZXIsIHRoaXMgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJXG4gIHByb3RlY3RlZCBnZXRFbnRpdGllc09iamVjdChrZXk6IHN0cmluZyk6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXRpZXNba2V5XTtcbiAgfVxuXG4gIGdldEVudGl0aWVzKGtleTogc3RyaW5nKTogRW50aXRpZXNJbnRlcmZhY2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGVudGl0aWVzID0gdGhpcy5lbnRpdGllc1trZXldO1xuICAgIGlmIChlbnRpdGllcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBrZXlzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnRpdGllcykgYXMgYW55O1xuICAgICAgfSxcbiAgICAgIGVudHJpZXMoKTogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBhbnldPiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhlbnRpdGllcykgYXMgYW55O1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RW50aXR5KGtleTogc3RyaW5nLCBwazogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllc1trZXldPy5bcGtdO1xuICB9XG5cbiAgLy8gdGhpcyBpcyBkaWZmZXJlbnQgcmV0dXJuIHZhbHVlIHRoYW4gUXVlcnlTbmFwc2hvdFxuICBnZXRJbmRleChrZXk6IHN0cmluZywgZmllbGQ6IHN0cmluZyk6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXhlc1trZXldPy5bZmllbGRdO1xuICB9XG5cbiAgZ2V0SW5kZXhFbmQoZW50aXR5OiBvYmplY3QgfCB1bmRlZmluZWQsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZW50aXR5Py5bdmFsdWVdO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUtBLFNBQVNBLFlBQVksUUFBUSxtQkFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBLE9BQU8sTUFBTUMsWUFBWSxTQUFTRCxZQUFZLENBQUM7RUFRN0NFLFdBQVdBLENBQUNDLEtBQTBELEVBQUU7SUFDdEUsS0FBSyxDQUFDQSxLQUFLLENBQUM7RUFDZDs7RUFFQTtFQUNBO0VBQ1VDLGlCQUFpQkEsQ0FBQ0MsR0FBVyxFQUFzQjtJQUMzRCxPQUFPLElBQUksQ0FBQ0MsUUFBUSxDQUFDRCxHQUFHLENBQUM7RUFDM0I7RUFFQUUsV0FBV0EsQ0FBQ0YsR0FBVyxFQUFpQztJQUN0RCxNQUFNQyxRQUFRLEdBQUcsSUFBSSxDQUFDQSxRQUFRLENBQUNELEdBQUcsQ0FBQztJQUNuQyxJQUFJQyxRQUFRLEtBQUtFLFNBQVMsRUFBRSxPQUFPQSxTQUFTO0lBQzVDLE9BQU87TUFDTEMsSUFBSUEsQ0FBQSxFQUE2QjtRQUMvQixPQUFPQyxNQUFNLENBQUNELElBQUksQ0FBQ0gsUUFBUSxDQUFDO01BQzlCLENBQUM7TUFDREssT0FBT0EsQ0FBQSxFQUFvQztRQUN6QyxPQUFPRCxNQUFNLENBQUNDLE9BQU8sQ0FBQ0wsUUFBUSxDQUFDO01BQ2pDO0lBQ0YsQ0FBQztFQUNIO0VBRUFNLFNBQVNBLENBQUNQLEdBQVcsRUFBRVEsRUFBVSxFQUFPO0lBQUEsSUFBQUMsa0JBQUE7SUFDdEMsUUFBQUEsa0JBQUEsR0FBTyxJQUFJLENBQUNSLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDLHFCQUFsQlMsa0JBQUEsQ0FBcUJELEVBQUUsQ0FBQztFQUNqQzs7RUFFQTtFQUNBRSxRQUFRQSxDQUFDVixHQUFXLEVBQUVXLEtBQWEsRUFBc0I7SUFBQSxJQUFBQyxpQkFBQTtJQUN2RCxRQUFBQSxpQkFBQSxHQUFPLElBQUksQ0FBQ0MsT0FBTyxDQUFDYixHQUFHLENBQUMscUJBQWpCWSxpQkFBQSxDQUFvQkQsS0FBSyxDQUFDO0VBQ25DO0VBRUFHLFdBQVdBLENBQUNDLE1BQTBCLEVBQUVDLEtBQWEsRUFBRTtJQUNyRCxPQUFPRCxNQUFNLG9CQUFOQSxNQUFNLENBQUdDLEtBQUssQ0FBQztFQUN4QjtBQUNGIiwiaWdub3JlTGlzdCI6W119