UNPKG

@data-client/endpoint

Version:

Declarative Network Interface Definitions

39 lines (38 loc) 6.59 kB
import ArraySchema from './Array.js'; import { INVALID } from '../special.js'; /** * Retrieves all entities in cache * * @see https://dataclient.io/rest/api/All */ export default class AllSchema extends ArraySchema { constructor(definition, schemaAttribute) { super(definition, schemaAttribute); } normalize(input, parent, key, args, visit, addEntity, getEntity, checkLoop) { // we return undefined super.normalize(input, parent, key, args, visit, addEntity, getEntity, checkLoop); } queryKey(args, queryKey, getEntity, getIndex) { if (this.isSingleSchema) { const entitiesEntry = getEntity(this.schema.key); // we must wait until there are entries for any 'All' query to be Valid if (entitiesEntry === undefined) return INVALID; return Object.values(entitiesEntry).map(entity => entity && this.schema.pk(entity)); } let found = false; const list = Object.values(this.schema).flatMap(schema => { const entitiesEntry = getEntity(schema.key); if (entitiesEntry === undefined) return []; found = true; return Object.values(entitiesEntry).map(entity => ({ id: entity && schema.pk(entity), schema: this.getSchemaAttribute(entity, undefined, undefined) })); }); // we need at least one table entry of the Union for this to count as Valid. if (!found) return INVALID; return list; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcnJheVNjaGVtYSIsIklOVkFMSUQiLCJBbGxTY2hlbWEiLCJjb25zdHJ1Y3RvciIsImRlZmluaXRpb24iLCJzY2hlbWFBdHRyaWJ1dGUiLCJub3JtYWxpemUiLCJpbnB1dCIsInBhcmVudCIsImtleSIsImFyZ3MiLCJ2aXNpdCIsImFkZEVudGl0eSIsImdldEVudGl0eSIsImNoZWNrTG9vcCIsInF1ZXJ5S2V5IiwiZ2V0SW5kZXgiLCJpc1NpbmdsZVNjaGVtYSIsImVudGl0aWVzRW50cnkiLCJzY2hlbWEiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJtYXAiLCJlbnRpdHkiLCJwayIsImZvdW5kIiwibGlzdCIsImZsYXRNYXAiLCJpZCIsImdldFNjaGVtYUF0dHJpYnV0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0FsbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXJyYXlTY2hlbWEgZnJvbSAnLi9BcnJheS5qcyc7XG5pbXBvcnQgeyBFbnRpdHlUYWJsZSwgR2V0RW50aXR5LCBWaXNpdCB9IGZyb20gJy4uL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgeyBFbnRpdHlJbnRlcmZhY2UsIEVudGl0eU1hcCwgU2NoZW1hRnVuY3Rpb24gfSBmcm9tICcuLi9zY2hlbWEuanMnO1xuaW1wb3J0IHsgSU5WQUxJRCB9IGZyb20gJy4uL3NwZWNpYWwuanMnO1xuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgZW50aXRpZXMgaW4gY2FjaGVcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9BbGxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWxsU2NoZW1hPFxuICBTIGV4dGVuZHMgRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlID0gRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlLFxuPiBleHRlbmRzIEFycmF5U2NoZW1hIHtcbiAgY29uc3RydWN0b3IoXG4gICAgZGVmaW5pdGlvbjogUyxcbiAgICBzY2hlbWFBdHRyaWJ1dGU/OiBTIGV4dGVuZHMgRW50aXR5TWFwPGluZmVyIFQ+ID9cbiAgICAgIGtleW9mIFQgfCBTY2hlbWFGdW5jdGlvbjxrZXlvZiBTPlxuICAgIDogdW5kZWZpbmVkLFxuICApIHtcbiAgICBzdXBlcihkZWZpbml0aW9uLCBzY2hlbWFBdHRyaWJ1dGUgYXMgYW55KTtcbiAgfVxuXG4gIG5vcm1hbGl6ZShcbiAgICBpbnB1dDogYW55LFxuICAgIHBhcmVudDogYW55LFxuICAgIGtleTogYW55LFxuICAgIGFyZ3M6IGFueVtdLFxuICAgIHZpc2l0OiBWaXNpdCxcbiAgICBhZGRFbnRpdHk6IGFueSxcbiAgICBnZXRFbnRpdHk6IGFueSxcbiAgICBjaGVja0xvb3A6IGFueSxcbiAgKTogYW55IHtcbiAgICAvLyB3ZSByZXR1cm4gdW5kZWZpbmVkXG4gICAgc3VwZXIubm9ybWFsaXplKFxuICAgICAgaW5wdXQsXG4gICAgICBwYXJlbnQsXG4gICAgICBrZXksXG4gICAgICBhcmdzLFxuICAgICAgdmlzaXQsXG4gICAgICBhZGRFbnRpdHksXG4gICAgICBnZXRFbnRpdHksXG4gICAgICBjaGVja0xvb3AsXG4gICAgKTtcbiAgfVxuXG4gIHF1ZXJ5S2V5KGFyZ3M6IGFueSwgcXVlcnlLZXk6IGFueSwgZ2V0RW50aXR5OiBHZXRFbnRpdHksIGdldEluZGV4OiBhbnkpOiBhbnkge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlU2NoZW1hKSB7XG4gICAgICBjb25zdCBlbnRpdGllc0VudHJ5ID0gZ2V0RW50aXR5KHRoaXMuc2NoZW1hLmtleSk7XG4gICAgICAvLyB3ZSBtdXN0IHdhaXQgdW50aWwgdGhlcmUgYXJlIGVudHJpZXMgZm9yIGFueSAnQWxsJyBxdWVyeSB0byBiZSBWYWxpZFxuICAgICAgaWYgKGVudGl0aWVzRW50cnkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhlbnRpdGllc0VudHJ5KS5tYXAoXG4gICAgICAgIGVudGl0eSA9PiBlbnRpdHkgJiYgdGhpcy5zY2hlbWEucGsoZW50aXR5KSxcbiAgICAgICk7XG4gICAgfVxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGNvbnN0IGxpc3QgPSBPYmplY3QudmFsdWVzKHRoaXMuc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pLmZsYXRNYXAoXG4gICAgICAoc2NoZW1hOiBFbnRpdHlJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgY29uc3QgZW50aXRpZXNFbnRyeSA9IGdldEVudGl0eShzY2hlbWEua2V5KTtcbiAgICAgICAgaWYgKGVudGl0aWVzRW50cnkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGVudGl0aWVzRW50cnkpLm1hcChlbnRpdHkgPT4gKHtcbiAgICAgICAgICBpZDogZW50aXR5ICYmIHNjaGVtYS5wayhlbnRpdHkpLFxuICAgICAgICAgIHNjaGVtYTogdGhpcy5nZXRTY2hlbWFBdHRyaWJ1dGUoZW50aXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCksXG4gICAgICAgIH0pKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgICAvLyB3ZSBuZWVkIGF0IGxlYXN0IG9uZSB0YWJsZSBlbnRyeSBvZiB0aGUgVW5pb24gZm9yIHRoaXMgdG8gY291bnQgYXMgVmFsaWQuXG4gICAgaWYgKCFmb3VuZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxNQUFNLFlBQVk7QUFHcEMsU0FBU0MsT0FBTyxRQUFRLGVBQWU7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLFNBQVMsU0FFcEJGLFdBQVcsQ0FBQztFQUNwQkcsV0FBV0EsQ0FDVEMsVUFBYSxFQUNiQyxlQUVXLEVBQ1g7SUFDQSxLQUFLLENBQUNELFVBQVUsRUFBRUMsZUFBc0IsQ0FBQztFQUMzQztFQUVBQyxTQUFTQSxDQUNQQyxLQUFVLEVBQ1ZDLE1BQVcsRUFDWEMsR0FBUSxFQUNSQyxJQUFXLEVBQ1hDLEtBQVksRUFDWkMsU0FBYyxFQUNkQyxTQUFjLEVBQ2RDLFNBQWMsRUFDVDtJQUNMO0lBQ0EsS0FBSyxDQUFDUixTQUFTLENBQ2JDLEtBQUssRUFDTEMsTUFBTSxFQUNOQyxHQUFHLEVBQ0hDLElBQUksRUFDSkMsS0FBSyxFQUNMQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsU0FDRixDQUFDO0VBQ0g7RUFFQUMsUUFBUUEsQ0FBQ0wsSUFBUyxFQUFFSyxRQUFhLEVBQUVGLFNBQW9CLEVBQUVHLFFBQWEsRUFBTztJQUMzRSxJQUFJLElBQUksQ0FBQ0MsY0FBYyxFQUFFO01BQ3ZCLE1BQU1DLGFBQWEsR0FBR0wsU0FBUyxDQUFDLElBQUksQ0FBQ00sTUFBTSxDQUFDVixHQUFHLENBQUM7TUFDaEQ7TUFDQSxJQUFJUyxhQUFhLEtBQUtFLFNBQVMsRUFBRSxPQUFPbkIsT0FBTztNQUMvQyxPQUFPb0IsTUFBTSxDQUFDQyxNQUFNLENBQUNKLGFBQWEsQ0FBQyxDQUFDSyxHQUFHLENBQ3JDQyxNQUFNLElBQUlBLE1BQU0sSUFBSSxJQUFJLENBQUNMLE1BQU0sQ0FBQ00sRUFBRSxDQUFDRCxNQUFNLENBQzNDLENBQUM7SUFDSDtJQUNBLElBQUlFLEtBQUssR0FBRyxLQUFLO0lBQ2pCLE1BQU1DLElBQUksR0FBR04sTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDSCxNQUE2QixDQUFDLENBQUNTLE9BQU8sQ0FDbkVULE1BQXVCLElBQUs7TUFDM0IsTUFBTUQsYUFBYSxHQUFHTCxTQUFTLENBQUNNLE1BQU0sQ0FBQ1YsR0FBRyxDQUFDO01BQzNDLElBQUlTLGFBQWEsS0FBS0UsU0FBUyxFQUFFLE9BQU8sRUFBRTtNQUMxQ00sS0FBSyxHQUFHLElBQUk7TUFDWixPQUFPTCxNQUFNLENBQUNDLE1BQU0sQ0FBQ0osYUFBYSxDQUFDLENBQUNLLEdBQUcsQ0FBQ0MsTUFBTSxLQUFLO1FBQ2pESyxFQUFFLEVBQUVMLE1BQU0sSUFBSUwsTUFBTSxDQUFDTSxFQUFFLENBQUNELE1BQU0sQ0FBQztRQUMvQkwsTUFBTSxFQUFFLElBQUksQ0FBQ1csa0JBQWtCLENBQUNOLE1BQU0sRUFBRUosU0FBUyxFQUFFQSxTQUFTO01BQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FDRixDQUFDO0lBQ0Q7SUFDQSxJQUFJLENBQUNNLEtBQUssRUFBRSxPQUFPekIsT0FBTztJQUMxQixPQUFPMEIsSUFBSTtFQUNiO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=