@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
31 lines • 4.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AsyncSchemaValidationProcessor = void 0;
const core_1 = require("@orbit/core");
const records_1 = require("@orbit/records");
const async_operation_processor_1 = require("../async-operation-processor");
/**
* An operation processor that ensures that an operation is compatible with
* its associated schema.
*/
class AsyncSchemaValidationProcessor extends async_operation_processor_1.AsyncOperationProcessor {
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;
}
async 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.AsyncSchemaValidationProcessor = AsyncSchemaValidationProcessor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtc2NoZW1hLXZhbGlkYXRpb24tcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZXJhdGlvbi1wcm9jZXNzb3JzL2FzeW5jLXNjaGVtYS12YWxpZGF0aW9uLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBd0M7QUFDeEMsNENBTXdCO0FBRXhCLDRFQUF1RTtBQUl2RTs7O0dBR0c7QUFDSCxNQUFhLDhCQUErQixTQUFRLG1EQUF1QjtJQUl6RSxZQUFZLFFBQTZCO1FBQ3ZDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQixNQUFNLEtBQUssR0FBSSxJQUFJLENBQUMsUUFBbUMsQ0FBQztRQUN4RCxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN0RCxNQUFNLElBQUksZ0JBQVMsQ0FDakIsa0dBQWtHLENBQ25HLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQTBCO1FBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUEsaUNBQXVCLEVBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLElBQUkseUJBQWUsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7Q0FDRjtBQTFCRCx3RUEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3NlcnRpb24gfSBmcm9tICdAb3JiaXQvY29yZSc7XG5pbXBvcnQge1xuICBSZWNvcmRPcGVyYXRpb24sXG4gIFJlY29yZFNjaGVtYSxcbiAgU3RhbmRhcmRSZWNvcmRWYWxpZGF0b3IsXG4gIHZhbGlkYXRlUmVjb3JkT3BlcmF0aW9uLFxuICBWYWxpZGF0aW9uRXJyb3Jcbn0gZnJvbSAnQG9yYml0L3JlY29yZHMnO1xuaW1wb3J0IHsgU3RhbmRhcmRWYWxpZGF0b3IsIFZhbGlkYXRvckZvckZuIH0gZnJvbSAnQG9yYml0L3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgQXN5bmNPcGVyYXRpb25Qcm9jZXNzb3IgfSBmcm9tICcuLi9hc3luYy1vcGVyYXRpb24tcHJvY2Vzc29yJztcbmltcG9ydCB7IEFzeW5jUmVjb3JkQWNjZXNzb3IgfSBmcm9tICcuLi9yZWNvcmQtYWNjZXNzb3InO1xuaW1wb3J0IHsgUmVjb3JkQ2FjaGUgfSBmcm9tICcuLi9yZWNvcmQtY2FjaGUnO1xuXG4vKipcbiAqIEFuIG9wZXJhdGlvbiBwcm9jZXNzb3IgdGhhdCBlbnN1cmVzIHRoYXQgYW4gb3BlcmF0aW9uIGlzIGNvbXBhdGlibGUgd2l0aFxuICogaXRzIGFzc29jaWF0ZWQgc2NoZW1hLlxuICovXG5leHBvcnQgY2xhc3MgQXN5bmNTY2hlbWFWYWxpZGF0aW9uUHJvY2Vzc29yIGV4dGVuZHMgQXN5bmNPcGVyYXRpb25Qcm9jZXNzb3Ige1xuICBzY2hlbWE6IFJlY29yZFNjaGVtYTtcbiAgdmFsaWRhdG9yRm9yOiBWYWxpZGF0b3JGb3JGbjxTdGFuZGFyZFZhbGlkYXRvciB8IFN0YW5kYXJkUmVjb3JkVmFsaWRhdG9yPjtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQXN5bmNSZWNvcmRBY2Nlc3Nvcikge1xuICAgIHN1cGVyKGFjY2Vzc29yKTtcblxuICAgIGNvbnN0IGNhY2hlID0gKHRoaXMuYWNjZXNzb3IgYXMgdW5rbm93bikgYXMgUmVjb3JkQ2FjaGU7XG4gICAgY29uc3QgeyBzY2hlbWEsIHZhbGlkYXRvckZvciB9ID0gY2FjaGU7XG4gICAgaWYgKHZhbGlkYXRvckZvciA9PT0gdW5kZWZpbmVkIHx8IHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uKFxuICAgICAgICAnU3luY1NjaGVtYVZhbGlkYXRpb25Qcm9jZXNzb3IgcmVxdWlyZXMgYSBSZWNvcmRDYWNoZSB3aXRoIGJvdGggYSBgdmFsaWRhdGlvbkZvcmAgYW5kIGEgYHNjaGVtYWAuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLnZhbGlkYXRvckZvciA9IHZhbGlkYXRvckZvcjtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKG9wZXJhdGlvbjogUmVjb3JkT3BlcmF0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBzY2hlbWEsIHZhbGlkYXRvckZvciB9ID0gdGhpcztcbiAgICBjb25zdCBpc3N1ZXMgPSB2YWxpZGF0ZVJlY29yZE9wZXJhdGlvbihvcGVyYXRpb24sIHsgc2NoZW1hLCB2YWxpZGF0b3JGb3IgfSk7XG4gICAgaWYgKGlzc3Vlcykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVmFsaWRhdGlvbiBmYWlsZWQnLCBpc3N1ZXMpO1xuICAgIH1cbiAgfVxufVxuIl19