@data-client/endpoint
Version:
Declarative Network Interface Definitions
82 lines (73 loc) • 10.4 kB
JavaScript
import { INVALID } from '../special.js';
/**
* Marks entity as Invalid.
*
* This triggers suspense for all endpoints requiring it.
* Optional (like variable sized Array and Values) will simply remove the item.
* @see https://dataclient.io/rest/api/Invalidate
*/
export default class Invalidate {
/**
* Marks entity as Invalid.
*
* This triggers suspense for all endpoints requiring it.
* Optional (like variable sized Array and Values) will simply remove the item.
* @see https://dataclient.io/rest/api/Invalidate
*/
constructor(entity) {
if (process.env.NODE_ENV !== 'production' && !entity) {
throw new Error('Expected option "entity" not found on DeleteSchema.');
}
this._entity = entity;
}
get key() {
return this._entity.key;
}
/** Normalize lifecycles **/
normalize(input, parent, key, args, visit, addEntity, getEntity, checkLoop) {
// TODO: what's store needs to be a differing type from fromJS
const processedEntity = this._entity.process(input, parent, key, args);
const id = this._entity.pk(processedEntity, parent, key, args);
if (process.env.NODE_ENV !== 'production' && (id === undefined || id === '' || id === 'undefined')) {
const error = new Error(`Missing usable primary key when normalizing response.
This is likely due to a malformed response.
Try inspecting the network response or fetch() return value.
Or use debugging tools: https://dataclient.io/docs/getting-started/debugging
Learn more about schemas: https://dataclient.io/docs/api/schema
Invalidate(Entity): Invalidate(${this._entity.key})
Value (processed): ${input && JSON.stringify(input, null, 2)}
`);
error.status = 400;
throw error;
}
addEntity(this, INVALID, id);
return id;
}
/* istanbul ignore next */
merge(existing, incoming) {
return incoming;
}
mergeWithStore(existingMeta, incomingMeta, existing, incoming) {
// any queued updates are meaningless with delete, so we should just set it
return this.merge(existing, incoming);
}
mergeMetaWithStore(existingMeta, incomingMeta, existing, incoming) {
return incomingMeta;
}
/** /End Normalize lifecycles **/
queryKey(args, queryKey, getEntity, getIndex) {
return undefined;
}
denormalize(id, args, unvisit) {
return unvisit(this._entity, id);
}
/* istanbul ignore next */
_denormalizeNullable() {
return {};
}
/* istanbul ignore next */
_normalizeNullable() {
return {};
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEIiwiSW52YWxpZGF0ZSIsImNvbnN0cnVjdG9yIiwiZW50aXR5IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRXJyb3IiLCJfZW50aXR5Iiwia2V5Iiwibm9ybWFsaXplIiwiaW5wdXQiLCJwYXJlbnQiLCJhcmdzIiwidmlzaXQiLCJhZGRFbnRpdHkiLCJnZXRFbnRpdHkiLCJjaGVja0xvb3AiLCJwcm9jZXNzZWRFbnRpdHkiLCJpZCIsInBrIiwidW5kZWZpbmVkIiwiZXJyb3IiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwibWVyZ2UiLCJleGlzdGluZyIsImluY29taW5nIiwibWVyZ2VXaXRoU3RvcmUiLCJleGlzdGluZ01ldGEiLCJpbmNvbWluZ01ldGEiLCJtZXJnZU1ldGFXaXRoU3RvcmUiLCJxdWVyeUtleSIsImdldEluZGV4IiwiZGVub3JtYWxpemUiLCJ1bnZpc2l0IiwiX2Rlbm9ybWFsaXplTnVsbGFibGUiLCJfbm9ybWFsaXplTnVsbGFibGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9JbnZhbGlkYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5SW50ZXJmYWNlLCBTY2hlbWFTaW1wbGUgfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSB9IGZyb20gJy4uL25vcm1hbC5qcyc7XG5pbXBvcnQgeyBJTlZBTElEIH0gZnJvbSAnLi4vc3BlY2lhbC5qcyc7XG5cbi8qKlxuICogTWFya3MgZW50aXR5IGFzIEludmFsaWQuXG4gKlxuICogVGhpcyB0cmlnZ2VycyBzdXNwZW5zZSBmb3IgYWxsIGVuZHBvaW50cyByZXF1aXJpbmcgaXQuXG4gKiBPcHRpb25hbCAobGlrZSB2YXJpYWJsZSBzaXplZCBBcnJheSBhbmQgVmFsdWVzKSB3aWxsIHNpbXBseSByZW1vdmUgdGhlIGl0ZW0uXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9JbnZhbGlkYXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludmFsaWRhdGU8XG4gIEUgZXh0ZW5kcyBFbnRpdHlJbnRlcmZhY2UgJiB7XG4gICAgcHJvY2VzczogYW55O1xuICB9LFxuPiBpbXBsZW1lbnRzIFNjaGVtYVNpbXBsZVxue1xuICBkZWNsYXJlIHByb3RlY3RlZCBfZW50aXR5OiBFO1xuXG4gIC8qKlxuICAgKiBNYXJrcyBlbnRpdHkgYXMgSW52YWxpZC5cbiAgICpcbiAgICogVGhpcyB0cmlnZ2VycyBzdXNwZW5zZSBmb3IgYWxsIGVuZHBvaW50cyByZXF1aXJpbmcgaXQuXG4gICAqIE9wdGlvbmFsIChsaWtlIHZhcmlhYmxlIHNpemVkIEFycmF5IGFuZCBWYWx1ZXMpIHdpbGwgc2ltcGx5IHJlbW92ZSB0aGUgaXRlbS5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvSW52YWxpZGF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZW50aXR5OiBFKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWVudGl0eSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBvcHRpb24gXCJlbnRpdHlcIiBub3QgZm91bmQgb24gRGVsZXRlU2NoZW1hLicpO1xuICAgIH1cbiAgICB0aGlzLl9lbnRpdHkgPSBlbnRpdHk7XG4gIH1cblxuICBnZXQga2V5KCkge1xuICAgIHJldHVybiB0aGlzLl9lbnRpdHkua2V5O1xuICB9XG5cbiAgLyoqIE5vcm1hbGl6ZSBsaWZlY3ljbGVzICoqL1xuICBub3JtYWxpemUoXG4gICAgaW5wdXQ6IGFueSxcbiAgICBwYXJlbnQ6IGFueSxcbiAgICBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBhcmdzOiBhbnlbXSxcbiAgICB2aXNpdDogKC4uLmFyZ3M6IGFueSkgPT4gYW55LFxuICAgIGFkZEVudGl0eTogKC4uLmFyZ3M6IGFueSkgPT4gYW55LFxuICAgIGdldEVudGl0eTogYW55LFxuICAgIGNoZWNrTG9vcDogYW55LFxuICApOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIC8vIFRPRE86IHdoYXQncyBzdG9yZSBuZWVkcyB0byBiZSBhIGRpZmZlcmluZyB0eXBlIGZyb20gZnJvbUpTXG4gICAgY29uc3QgcHJvY2Vzc2VkRW50aXR5ID0gdGhpcy5fZW50aXR5LnByb2Nlc3MoaW5wdXQsIHBhcmVudCwga2V5LCBhcmdzKTtcbiAgICBjb25zdCBpZCA9IHRoaXMuX2VudGl0eS5wayhwcm9jZXNzZWRFbnRpdHksIHBhcmVudCwga2V5LCBhcmdzKTtcblxuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSAnJyB8fCBpZCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgYE1pc3NpbmcgdXNhYmxlIHByaW1hcnkga2V5IHdoZW4gbm9ybWFsaXppbmcgcmVzcG9uc2UuXG5cbiAgVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuICBUcnkgaW5zcGVjdGluZyB0aGUgbmV0d29yayByZXNwb25zZSBvciBmZXRjaCgpIHJldHVybiB2YWx1ZS5cbiAgT3IgdXNlIGRlYnVnZ2luZyB0b29sczogaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvZ2V0dGluZy1zdGFydGVkL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IHNjaGVtYXM6IGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWFcblxuICBJbnZhbGlkYXRlKEVudGl0eSk6IEludmFsaWRhdGUoJHt0aGlzLl9lbnRpdHkua2V5fSlcbiAgVmFsdWUgKHByb2Nlc3NlZCk6ICR7aW5wdXQgJiYgSlNPTi5zdHJpbmdpZnkoaW5wdXQsIG51bGwsIDIpfVxuICBgLFxuICAgICAgKTtcbiAgICAgIChlcnJvciBhcyBhbnkpLnN0YXR1cyA9IDQwMDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBhZGRFbnRpdHkodGhpcywgSU5WQUxJRCwgaWQpO1xuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIG1lcmdlKGV4aXN0aW5nOiBhbnksIGluY29taW5nOiBhbnkpIHtcbiAgICByZXR1cm4gaW5jb21pbmc7XG4gIH1cblxuICBtZXJnZVdpdGhTdG9yZShcbiAgICBleGlzdGluZ01ldGE6IGFueSxcbiAgICBpbmNvbWluZ01ldGE6IGFueSxcbiAgICBleGlzdGluZzogYW55LFxuICAgIGluY29taW5nOiBhbnksXG4gICkge1xuICAgIC8vIGFueSBxdWV1ZWQgdXBkYXRlcyBhcmUgbWVhbmluZ2xlc3Mgd2l0aCBkZWxldGUsIHNvIHdlIHNob3VsZCBqdXN0IHNldCBpdFxuICAgIHJldHVybiB0aGlzLm1lcmdlKGV4aXN0aW5nLCBpbmNvbWluZyk7XG4gIH1cblxuICBtZXJnZU1ldGFXaXRoU3RvcmUoXG4gICAgZXhpc3RpbmdNZXRhOiB7XG4gICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgIGRhdGU6IG51bWJlcjtcbiAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgIH0sXG4gICAgaW5jb21pbmdNZXRhOiB7IGV4cGlyZXNBdDogbnVtYmVyOyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgZXhpc3Rpbmc6IGFueSxcbiAgICBpbmNvbWluZzogYW55LFxuICApIHtcbiAgICByZXR1cm4gaW5jb21pbmdNZXRhO1xuICB9XG5cbiAgLyoqIC9FbmQgTm9ybWFsaXplIGxpZmVjeWNsZXMgKiovXG5cbiAgcXVlcnlLZXkoXG4gICAgYXJnczogYW55LFxuICAgIHF1ZXJ5S2V5OiB1bmtub3duLFxuICAgIGdldEVudGl0eTogdW5rbm93bixcbiAgICBnZXRJbmRleDogdW5rbm93bixcbiAgKTogdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZGVub3JtYWxpemUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhcmdzOiByZWFkb25seSBhbnlbXSxcbiAgICB1bnZpc2l0OiAoc2NoZW1hOiBhbnksIGlucHV0OiBhbnkpID0+IGFueSxcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8RT4ge1xuICAgIHJldHVybiB1bnZpc2l0KHRoaXMuX2VudGl0eSwgaWQpIGFzIGFueTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIF9kZW5vcm1hbGl6ZU51bGxhYmxlKCk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPEU+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4ge30gYXMgYW55O1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgX25vcm1hbGl6ZU51bGxhYmxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHt9IGFzIGFueTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxPQUFPLFFBQVEsZUFBZTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLFVBQVUsQ0FLL0I7RUFHRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFQyxXQUFXQSxDQUFDQyxNQUFTLEVBQUU7SUFDckIsSUFBSUMsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxZQUFZLElBQUksQ0FBQ0gsTUFBTSxFQUFFO01BQ3BELE1BQU0sSUFBSUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDO0lBQ3hFO0lBQ0EsSUFBSSxDQUFDQyxPQUFPLEdBQUdMLE1BQU07RUFDdkI7RUFFQSxJQUFJTSxHQUFHQSxDQUFBLEVBQUc7SUFDUixPQUFPLElBQUksQ0FBQ0QsT0FBTyxDQUFDQyxHQUFHO0VBQ3pCOztFQUVBO0VBQ0FDLFNBQVNBLENBQ1BDLEtBQVUsRUFDVkMsTUFBVyxFQUNYSCxHQUF1QixFQUN2QkksSUFBVyxFQUNYQyxLQUE0QixFQUM1QkMsU0FBZ0MsRUFDaENDLFNBQWMsRUFDZEMsU0FBYyxFQUNlO0lBQzdCO0lBQ0EsTUFBTUMsZUFBZSxHQUFHLElBQUksQ0FBQ1YsT0FBTyxDQUFDSixPQUFPLENBQUNPLEtBQUssRUFBRUMsTUFBTSxFQUFFSCxHQUFHLEVBQUVJLElBQUksQ0FBQztJQUN0RSxNQUFNTSxFQUFFLEdBQUcsSUFBSSxDQUFDWCxPQUFPLENBQUNZLEVBQUUsQ0FBQ0YsZUFBZSxFQUFFTixNQUFNLEVBQUVILEdBQUcsRUFBRUksSUFBSSxDQUFDO0lBRTlELElBQ0VULE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssWUFBWSxLQUNwQ2EsRUFBRSxLQUFLRSxTQUFTLElBQUlGLEVBQUUsS0FBSyxFQUFFLElBQUlBLEVBQUUsS0FBSyxXQUFXLENBQUMsRUFDckQ7TUFDQSxNQUFNRyxLQUFLLEdBQUcsSUFBSWYsS0FBSyxDQUNyQjtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsR0FBRztBQUNuRCx1QkFBdUJFLEtBQUssSUFBSVksSUFBSSxDQUFDQyxTQUFTLENBQUNiLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELEdBQ00sQ0FBQztNQUNBVyxLQUFLLENBQVNHLE1BQU0sR0FBRyxHQUFHO01BQzNCLE1BQU1ILEtBQUs7SUFDYjtJQUNBUCxTQUFTLENBQUMsSUFBSSxFQUFFZixPQUFPLEVBQUVtQixFQUFFLENBQUM7SUFDNUIsT0FBT0EsRUFBRTtFQUNYOztFQUVBO0VBQ0FPLEtBQUtBLENBQUNDLFFBQWEsRUFBRUMsUUFBYSxFQUFFO0lBQ2xDLE9BQU9BLFFBQVE7RUFDakI7RUFFQUMsY0FBY0EsQ0FDWkMsWUFBaUIsRUFDakJDLFlBQWlCLEVBQ2pCSixRQUFhLEVBQ2JDLFFBQWEsRUFDYjtJQUNBO0lBQ0EsT0FBTyxJQUFJLENBQUNGLEtBQUssQ0FBQ0MsUUFBUSxFQUFFQyxRQUFRLENBQUM7RUFDdkM7RUFFQUksa0JBQWtCQSxDQUNoQkYsWUFJQyxFQUNEQyxZQUFvRSxFQUNwRUosUUFBYSxFQUNiQyxRQUFhLEVBQ2I7SUFDQSxPQUFPRyxZQUFZO0VBQ3JCOztFQUVBOztFQUVBRSxRQUFRQSxDQUNOcEIsSUFBUyxFQUNUb0IsUUFBaUIsRUFDakJqQixTQUFrQixFQUNsQmtCLFFBQWlCLEVBQ047SUFDWCxPQUFPYixTQUFTO0VBQ2xCO0VBRUFjLFdBQVdBLENBQ1RoQixFQUFVLEVBQ1ZOLElBQW9CLEVBQ3BCdUIsT0FBeUMsRUFDaEI7SUFDekIsT0FBT0EsT0FBTyxDQUFDLElBQUksQ0FBQzVCLE9BQU8sRUFBRVcsRUFBRSxDQUFDO0VBQ2xDOztFQUVBO0VBQ0FrQixvQkFBb0JBLENBQUEsRUFBd0M7SUFDMUQsT0FBTyxDQUFDLENBQUM7RUFDWDs7RUFFQTtFQUNBQyxrQkFBa0JBLENBQUEsRUFBdUI7SUFDdkMsT0FBTyxDQUFDLENBQUM7RUFDWDtBQUNGIiwiaWdub3JlTGlzdCI6W119