@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
31 lines • 4.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SyncSchemaValidationProcessor = void 0;
const core_1 = require("@orbit/core");
const records_1 = require("@orbit/records");
const sync_operation_processor_1 = require("../sync-operation-processor");
/**
* An operation processor that ensures that an operation is compatible with
* its associated schema.
*/
class SyncSchemaValidationProcessor extends sync_operation_processor_1.SyncOperationProcessor {
constructor(accessor) {
super(accessor);
const cache = this.accessor;
const { schema, validatorFor } = cache;
if (validatorFor === undefined || schema === undefined) {
throw new core_1.Assertion('SyncSchemaValidationProcessor requires a RecordCache with both a `validationFor` and a `schema`.');
}
this.schema = schema;
this.validatorFor = validatorFor;
}
validate(operation) {
const { schema, validatorFor } = this;
const issues = (0, records_1.validateRecordOperation)(operation, { schema, validatorFor });
if (issues) {
throw new records_1.ValidationError('Validation failed', issues);
}
}
}
exports.SyncSchemaValidationProcessor = SyncSchemaValidationProcessor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1zY2hlbWEtdmFsaWRhdGlvbi1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlcmF0aW9uLXByb2Nlc3NvcnMvc3luYy1zY2hlbWEtdmFsaWRhdGlvbi1wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQXdDO0FBQ3hDLDRDQU13QjtBQUl4QiwwRUFBcUU7QUFFckU7OztHQUdHO0FBQ0gsTUFBYSw2QkFBOEIsU0FBUSxpREFBc0I7SUFJdkUsWUFBWSxRQUE0QjtRQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEIsTUFBTSxLQUFLLEdBQUksSUFBSSxDQUFDLFFBQW1DLENBQUM7UUFDeEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDdEQsTUFBTSxJQUFJLGdCQUFTLENBQ2pCLGtHQUFrRyxDQUNuRyxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQTBCO1FBQ2pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUEsaUNBQXVCLEVBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLElBQUkseUJBQWUsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7Q0FDRjtBQTFCRCxzRUEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3NlcnRpb24gfSBmcm9tICdAb3JiaXQvY29yZSc7XG5pbXBvcnQge1xuICBSZWNvcmRPcGVyYXRpb24sXG4gIFJlY29yZFNjaGVtYSxcbiAgU3RhbmRhcmRSZWNvcmRWYWxpZGF0b3IsXG4gIHZhbGlkYXRlUmVjb3JkT3BlcmF0aW9uLFxuICBWYWxpZGF0aW9uRXJyb3Jcbn0gZnJvbSAnQG9yYml0L3JlY29yZHMnO1xuaW1wb3J0IHsgU3RhbmRhcmRWYWxpZGF0b3IsIFZhbGlkYXRvckZvckZuIH0gZnJvbSAnQG9yYml0L3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgU3luY1JlY29yZEFjY2Vzc29yIH0gZnJvbSAnLi4vcmVjb3JkLWFjY2Vzc29yJztcbmltcG9ydCB7IFJlY29yZENhY2hlIH0gZnJvbSAnLi4vcmVjb3JkLWNhY2hlJztcbmltcG9ydCB7IFN5bmNPcGVyYXRpb25Qcm9jZXNzb3IgfSBmcm9tICcuLi9zeW5jLW9wZXJhdGlvbi1wcm9jZXNzb3InO1xuXG4vKipcbiAqIEFuIG9wZXJhdGlvbiBwcm9jZXNzb3IgdGhhdCBlbnN1cmVzIHRoYXQgYW4gb3BlcmF0aW9uIGlzIGNvbXBhdGlibGUgd2l0aFxuICogaXRzIGFzc29jaWF0ZWQgc2NoZW1hLlxuICovXG5leHBvcnQgY2xhc3MgU3luY1NjaGVtYVZhbGlkYXRpb25Qcm9jZXNzb3IgZXh0ZW5kcyBTeW5jT3BlcmF0aW9uUHJvY2Vzc29yIHtcbiAgc2NoZW1hOiBSZWNvcmRTY2hlbWE7XG4gIHZhbGlkYXRvckZvcjogVmFsaWRhdG9yRm9yRm48U3RhbmRhcmRWYWxpZGF0b3IgfCBTdGFuZGFyZFJlY29yZFZhbGlkYXRvcj47XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IFN5bmNSZWNvcmRBY2Nlc3Nvcikge1xuICAgIHN1cGVyKGFjY2Vzc29yKTtcblxuICAgIGNvbnN0IGNhY2hlID0gKHRoaXMuYWNjZXNzb3IgYXMgdW5rbm93bikgYXMgUmVjb3JkQ2FjaGU7XG4gICAgY29uc3QgeyBzY2hlbWEsIHZhbGlkYXRvckZvciB9ID0gY2FjaGU7XG4gICAgaWYgKHZhbGlkYXRvckZvciA9PT0gdW5kZWZpbmVkIHx8IHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uKFxuICAgICAgICAnU3luY1NjaGVtYVZhbGlkYXRpb25Qcm9jZXNzb3IgcmVxdWlyZXMgYSBSZWNvcmRDYWNoZSB3aXRoIGJvdGggYSBgdmFsaWRhdGlvbkZvcmAgYW5kIGEgYHNjaGVtYWAuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLnZhbGlkYXRvckZvciA9IHZhbGlkYXRvckZvcjtcbiAgfVxuXG4gIHZhbGlkYXRlKG9wZXJhdGlvbjogUmVjb3JkT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgeyBzY2hlbWEsIHZhbGlkYXRvckZvciB9ID0gdGhpcztcbiAgICBjb25zdCBpc3N1ZXMgPSB2YWxpZGF0ZVJlY29yZE9wZXJhdGlvbihvcGVyYXRpb24sIHsgc2NoZW1hLCB2YWxpZGF0b3JGb3IgfSk7XG4gICAgaWYgKGlzc3Vlcykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVmFsaWRhdGlvbiBmYWlsZWQnLCBpc3N1ZXMpO1xuICAgIH1cbiAgfVxufVxuIl19