@data-client/endpoint
Version:
Declarative Network Interface Definitions
39 lines (38 loc) • 6.59 kB
JavaScript
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=