@data-client/endpoint
Version:
Declarative Network Interface Definitions
22 lines • 3.9 kB
JavaScript
import PolymorphicSchema from './Polymorphic.js';
import { filterEmpty, getValues } from './utils.js';
/**
* Represents arrays
* @see https://dataclient.io/rest/api/Array
*/
export default class ArraySchema extends PolymorphicSchema {
normalize(input, parent, key, args, visit, addEntity, getEntity, checkLoop) {
const values = getValues(input);
return values.map((value, index) => this.normalizeValue(value, parent, key, args, visit));
}
denormalize(input, args, unvisit) {
return input.map ? input.map(entityOrId => this.denormalizeValue(entityOrId, unvisit)).filter(filterEmpty) : input;
}
queryKey(args, queryKey, getEntity, getIndex) {
return undefined;
}
toJSON() {
return [this.schema];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQb2x5bW9ycGhpY1NjaGVtYSIsImZpbHRlckVtcHR5IiwiZ2V0VmFsdWVzIiwiQXJyYXlTY2hlbWEiLCJub3JtYWxpemUiLCJpbnB1dCIsInBhcmVudCIsImtleSIsImFyZ3MiLCJ2aXNpdCIsImFkZEVudGl0eSIsImdldEVudGl0eSIsImNoZWNrTG9vcCIsInZhbHVlcyIsIm1hcCIsInZhbHVlIiwiaW5kZXgiLCJub3JtYWxpemVWYWx1ZSIsImRlbm9ybWFsaXplIiwidW52aXNpdCIsImVudGl0eU9ySWQiLCJkZW5vcm1hbGl6ZVZhbHVlIiwiZmlsdGVyIiwicXVlcnlLZXkiLCJnZXRJbmRleCIsInVuZGVmaW5lZCIsInRvSlNPTiIsInNjaGVtYSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0FycmF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQb2x5bW9ycGhpY1NjaGVtYSBmcm9tICcuL1BvbHltb3JwaGljLmpzJztcbmltcG9ydCB7IGZpbHRlckVtcHR5LCBnZXRWYWx1ZXMgfSBmcm9tICcuL3V0aWxzLmpzJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vaW50ZXJmYWNlLmpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFycmF5c1xuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvQXJyYXlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXJyYXlTY2hlbWEgZXh0ZW5kcyBQb2x5bW9ycGhpY1NjaGVtYSB7XG4gIG5vcm1hbGl6ZShcbiAgICBpbnB1dDogYW55LFxuICAgIHBhcmVudDogYW55LFxuICAgIGtleTogYW55LFxuICAgIGFyZ3M6IGFueVtdLFxuICAgIHZpc2l0OiBWaXNpdCxcbiAgICBhZGRFbnRpdHk6IGFueSxcbiAgICBnZXRFbnRpdHk6IGFueSxcbiAgICBjaGVja0xvb3A6IGFueSxcbiAgKTogYW55IHtcbiAgICBjb25zdCB2YWx1ZXMgPSBnZXRWYWx1ZXMoaW5wdXQpO1xuXG4gICAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlLCBpbmRleCkgPT5cbiAgICAgIHRoaXMubm9ybWFsaXplVmFsdWUodmFsdWUsIHBhcmVudCwga2V5LCBhcmdzLCB2aXNpdCksXG4gICAgKTtcbiAgfVxuXG4gIGRlbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgYXJnczogYW55W10sXG4gICAgdW52aXNpdDogKHNjaGVtYTogYW55LCBpbnB1dDogYW55KSA9PiBhbnksXG4gICkge1xuICAgIHJldHVybiBpbnB1dC5tYXAgP1xuICAgICAgICBpbnB1dFxuICAgICAgICAgIC5tYXAoKGVudGl0eU9ySWQ6IGFueSkgPT4gdGhpcy5kZW5vcm1hbGl6ZVZhbHVlKGVudGl0eU9ySWQsIHVudmlzaXQpKVxuICAgICAgICAgIC5maWx0ZXIoZmlsdGVyRW1wdHkpXG4gICAgICA6IGlucHV0O1xuICB9XG5cbiAgcXVlcnlLZXkoXG4gICAgYXJnczogdW5rbm93bixcbiAgICBxdWVyeUtleTogdW5rbm93bixcbiAgICBnZXRFbnRpdHk6IHVua25vd24sXG4gICAgZ2V0SW5kZXg6IHVua25vd24sXG4gICk6IGFueSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gW3RoaXMuc2NoZW1hXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxpQkFBaUIsTUFBTSxrQkFBa0I7QUFDaEQsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLFFBQVEsWUFBWTtBQUduRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBTUMsV0FBVyxTQUFTSCxpQkFBaUIsQ0FBQztFQUN6REksU0FBU0EsQ0FDUEMsS0FBVSxFQUNWQyxNQUFXLEVBQ1hDLEdBQVEsRUFDUkMsSUFBVyxFQUNYQyxLQUFZLEVBQ1pDLFNBQWMsRUFDZEMsU0FBYyxFQUNkQyxTQUFjLEVBQ1Q7SUFDTCxNQUFNQyxNQUFNLEdBQUdYLFNBQVMsQ0FBQ0csS0FBSyxDQUFDO0lBRS9CLE9BQU9RLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLEtBQUssRUFBRUMsS0FBSyxLQUM3QixJQUFJLENBQUNDLGNBQWMsQ0FBQ0YsS0FBSyxFQUFFVCxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLENBQ3JELENBQUM7RUFDSDtFQUVBUyxXQUFXQSxDQUNUYixLQUFVLEVBQ1ZHLElBQVcsRUFDWFcsT0FBeUMsRUFDekM7SUFDQSxPQUFPZCxLQUFLLENBQUNTLEdBQUcsR0FDWlQsS0FBSyxDQUNGUyxHQUFHLENBQUVNLFVBQWUsSUFBSyxJQUFJLENBQUNDLGdCQUFnQixDQUFDRCxVQUFVLEVBQUVELE9BQU8sQ0FBQyxDQUFDLENBQ3BFRyxNQUFNLENBQUNyQixXQUFXLENBQUMsR0FDdEJJLEtBQUs7RUFDWDtFQUVBa0IsUUFBUUEsQ0FDTmYsSUFBYSxFQUNiZSxRQUFpQixFQUNqQlosU0FBa0IsRUFDbEJhLFFBQWlCLEVBQ1o7SUFDTCxPQUFPQyxTQUFTO0VBQ2xCO0VBRUFDLE1BQU1BLENBQUEsRUFBRztJQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUNDLE1BQU0sQ0FBQztFQUN0QjtBQUNGIiwiaWdub3JlTGlzdCI6W119