@data-client/endpoint
Version:
Declarative Network Interface Definitions
33 lines (32 loc) • 4.84 kB
JavaScript
import PolymorphicSchema from './Polymorphic.js';
/**
* Represents variably sized objects
* @see https://dataclient.io/rest/api/Values
*/
export default class ValuesSchema extends PolymorphicSchema {
normalize(input, parent, key, args, visit, addEntity, getEntity, checkLoop) {
return Object.keys(input).reduce((output, key, index) => {
const value = input[key];
return value !== undefined && value !== null ? {
...output,
[key]: this.normalizeValue(value, input, key, args, visit)
} : output;
}, {});
}
denormalize(input, args, unvisit) {
return Object.keys(input).reduce((output, key) => {
const entityOrId = input[key];
const value = this.denormalizeValue(entityOrId, unvisit);
// remove empty or deleted values
if (!value || typeof value === 'symbol') return output;
return {
...output,
[key]: value
};
}, {});
}
queryKey(args, queryKey, getEntity, getIndex) {
return undefined;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQb2x5bW9ycGhpY1NjaGVtYSIsIlZhbHVlc1NjaGVtYSIsIm5vcm1hbGl6ZSIsImlucHV0IiwicGFyZW50Iiwia2V5IiwiYXJncyIsInZpc2l0IiwiYWRkRW50aXR5IiwiZ2V0RW50aXR5IiwiY2hlY2tMb29wIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsIm91dHB1dCIsImluZGV4IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJub3JtYWxpemVWYWx1ZSIsImRlbm9ybWFsaXplIiwidW52aXNpdCIsImVudGl0eU9ySWQiLCJkZW5vcm1hbGl6ZVZhbHVlIiwicXVlcnlLZXkiLCJnZXRJbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL1ZhbHVlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUG9seW1vcnBoaWNTY2hlbWEgZnJvbSAnLi9Qb2x5bW9ycGhpYy5qcyc7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL2ludGVyZmFjZS5qcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB2YXJpYWJseSBzaXplZCBvYmplY3RzXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9WYWx1ZXNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFsdWVzU2NoZW1hIGV4dGVuZHMgUG9seW1vcnBoaWNTY2hlbWEge1xuICBub3JtYWxpemUoXG4gICAgaW5wdXQ6IGFueSxcbiAgICBwYXJlbnQ6IGFueSxcbiAgICBrZXk6IGFueSxcbiAgICBhcmdzOiBhbnlbXSxcbiAgICB2aXNpdDogVmlzaXQsXG4gICAgYWRkRW50aXR5OiBhbnksXG4gICAgZ2V0RW50aXR5OiBhbnksXG4gICAgY2hlY2tMb29wOiBhbnksXG4gICkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhpbnB1dCkucmVkdWNlKChvdXRwdXQsIGtleSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXRba2V5XTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsID9cbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgICAgICBba2V5XTogdGhpcy5ub3JtYWxpemVWYWx1ZSh2YWx1ZSwgaW5wdXQsIGtleSwgYXJncywgdmlzaXQpLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBvdXRwdXQ7XG4gICAgfSwge30pO1xuICB9XG5cbiAgZGVub3JtYWxpemUoXG4gICAgaW5wdXQ6IHt9LFxuICAgIGFyZ3M6IHJlYWRvbmx5IGFueVtdLFxuICAgIHVudmlzaXQ6IChzY2hlbWE6IGFueSwgaW5wdXQ6IGFueSkgPT4gYW55LFxuICApOiBhbnkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhpbnB1dCkucmVkdWNlKChvdXRwdXQsIGtleSkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5T3JJZCA9IChpbnB1dCBhcyBhbnkpW2tleV07XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGVub3JtYWxpemVWYWx1ZShlbnRpdHlPcklkLCB1bnZpc2l0KTtcblxuICAgICAgLy8gcmVtb3ZlIGVtcHR5IG9yIGRlbGV0ZWQgdmFsdWVzXG4gICAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcpIHJldHVybiBvdXRwdXQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICAgIH07XG4gICAgfSwge30pO1xuICB9XG5cbiAgcXVlcnlLZXkoXG4gICAgYXJnczogYW55LFxuICAgIHF1ZXJ5S2V5OiB1bmtub3duLFxuICAgIGdldEVudGl0eTogdW5rbm93bixcbiAgICBnZXRJbmRleDogdW5rbm93bixcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxpQkFBaUIsTUFBTSxrQkFBa0I7QUFHaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLFlBQVksU0FBU0QsaUJBQWlCLENBQUM7RUFDMURFLFNBQVNBLENBQ1BDLEtBQVUsRUFDVkMsTUFBVyxFQUNYQyxHQUFRLEVBQ1JDLElBQVcsRUFDWEMsS0FBWSxFQUNaQyxTQUFjLEVBQ2RDLFNBQWMsRUFDZEMsU0FBYyxFQUNkO0lBQ0EsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLENBQUNULEtBQUssQ0FBQyxDQUFDVSxNQUFNLENBQUMsQ0FBQ0MsTUFBTSxFQUFFVCxHQUFHLEVBQUVVLEtBQUssS0FBSztNQUN2RCxNQUFNQyxLQUFLLEdBQUdiLEtBQUssQ0FBQ0UsR0FBRyxDQUFDO01BQ3hCLE9BQU9XLEtBQUssS0FBS0MsU0FBUyxJQUFJRCxLQUFLLEtBQUssSUFBSSxHQUN4QztRQUNFLEdBQUdGLE1BQU07UUFDVCxDQUFDVCxHQUFHLEdBQUcsSUFBSSxDQUFDYSxjQUFjLENBQUNGLEtBQUssRUFBRWIsS0FBSyxFQUFFRSxHQUFHLEVBQUVDLElBQUksRUFBRUMsS0FBSztNQUMzRCxDQUFDLEdBQ0RPLE1BQU07SUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDUjtFQUVBSyxXQUFXQSxDQUNUaEIsS0FBUyxFQUNURyxJQUFvQixFQUNwQmMsT0FBeUMsRUFDcEM7SUFDTCxPQUFPVCxNQUFNLENBQUNDLElBQUksQ0FBQ1QsS0FBSyxDQUFDLENBQUNVLE1BQU0sQ0FBQyxDQUFDQyxNQUFNLEVBQUVULEdBQUcsS0FBSztNQUNoRCxNQUFNZ0IsVUFBVSxHQUFJbEIsS0FBSyxDQUFTRSxHQUFHLENBQUM7TUFDdEMsTUFBTVcsS0FBSyxHQUFHLElBQUksQ0FBQ00sZ0JBQWdCLENBQUNELFVBQVUsRUFBRUQsT0FBTyxDQUFDOztNQUV4RDtNQUNBLElBQUksQ0FBQ0osS0FBSyxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUUsT0FBT0YsTUFBTTtNQUN0RCxPQUFPO1FBQ0wsR0FBR0EsTUFBTTtRQUNULENBQUNULEdBQUcsR0FBR1c7TUFDVCxDQUFDO0lBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ1I7RUFFQU8sUUFBUUEsQ0FDTmpCLElBQVMsRUFDVGlCLFFBQWlCLEVBQ2pCZCxTQUFrQixFQUNsQmUsUUFBaUIsRUFDakI7SUFDQSxPQUFPUCxTQUFTO0VBQ2xCO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=