UNPKG

@orbit/record-cache

Version:

Orbit base classes used to access and maintain a set of records.

27 lines 4.37 kB
import { Assertion } from '@orbit/core'; import { validateRecordOperation, ValidationError } from '@orbit/records'; import { SyncOperationProcessor } from '../sync-operation-processor'; /** * An operation processor that ensures that an operation is compatible with * its associated schema. */ export class SyncSchemaValidationProcessor extends SyncOperationProcessor { constructor(accessor) { super(accessor); const cache = this.accessor; const { schema, validatorFor } = cache; if (validatorFor === undefined || schema === undefined) { throw new 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 = validateRecordOperation(operation, { schema, validatorFor }); if (issues) { throw new ValidationError('Validation failed', issues); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1zY2hlbWEtdmFsaWRhdGlvbi1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlcmF0aW9uLXByb2Nlc3NvcnMvc3luYy1zY2hlbWEtdmFsaWRhdGlvbi1wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBSUwsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsc0JBQXNCO0lBSXZFLFlBQVksUUFBNEI7UUFDdEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhCLE1BQU0sS0FBSyxHQUFJLElBQUksQ0FBQyxRQUFtQyxDQUFDO1FBQ3hELE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3RELE1BQU0sSUFBSSxTQUFTLENBQ2pCLGtHQUFrRyxDQUNuRyxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQTBCO1FBQ2pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxJQUFJLGVBQWUsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc2VydGlvbiB9IGZyb20gJ0BvcmJpdC9jb3JlJztcbmltcG9ydCB7XG4gIFJlY29yZE9wZXJhdGlvbixcbiAgUmVjb3JkU2NoZW1hLFxuICBTdGFuZGFyZFJlY29yZFZhbGlkYXRvcixcbiAgdmFsaWRhdGVSZWNvcmRPcGVyYXRpb24sXG4gIFZhbGlkYXRpb25FcnJvclxufSBmcm9tICdAb3JiaXQvcmVjb3Jkcyc7XG5pbXBvcnQgeyBTdGFuZGFyZFZhbGlkYXRvciwgVmFsaWRhdG9yRm9yRm4gfSBmcm9tICdAb3JiaXQvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBTeW5jUmVjb3JkQWNjZXNzb3IgfSBmcm9tICcuLi9yZWNvcmQtYWNjZXNzb3InO1xuaW1wb3J0IHsgUmVjb3JkQ2FjaGUgfSBmcm9tICcuLi9yZWNvcmQtY2FjaGUnO1xuaW1wb3J0IHsgU3luY09wZXJhdGlvblByb2Nlc3NvciB9IGZyb20gJy4uL3N5bmMtb3BlcmF0aW9uLXByb2Nlc3Nvcic7XG5cbi8qKlxuICogQW4gb3BlcmF0aW9uIHByb2Nlc3NvciB0aGF0IGVuc3VyZXMgdGhhdCBhbiBvcGVyYXRpb24gaXMgY29tcGF0aWJsZSB3aXRoXG4gKiBpdHMgYXNzb2NpYXRlZCBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjbGFzcyBTeW5jU2NoZW1hVmFsaWRhdGlvblByb2Nlc3NvciBleHRlbmRzIFN5bmNPcGVyYXRpb25Qcm9jZXNzb3Ige1xuICBzY2hlbWE6IFJlY29yZFNjaGVtYTtcbiAgdmFsaWRhdG9yRm9yOiBWYWxpZGF0b3JGb3JGbjxTdGFuZGFyZFZhbGlkYXRvciB8IFN0YW5kYXJkUmVjb3JkVmFsaWRhdG9yPjtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogU3luY1JlY29yZEFjY2Vzc29yKSB7XG4gICAgc3VwZXIoYWNjZXNzb3IpO1xuXG4gICAgY29uc3QgY2FjaGUgPSAodGhpcy5hY2Nlc3NvciBhcyB1bmtub3duKSBhcyBSZWNvcmRDYWNoZTtcbiAgICBjb25zdCB7IHNjaGVtYSwgdmFsaWRhdG9yRm9yIH0gPSBjYWNoZTtcbiAgICBpZiAodmFsaWRhdG9yRm9yID09PSB1bmRlZmluZWQgfHwgc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb24oXG4gICAgICAgICdTeW5jU2NoZW1hVmFsaWRhdGlvblByb2Nlc3NvciByZXF1aXJlcyBhIFJlY29yZENhY2hlIHdpdGggYm90aCBhIGB2YWxpZGF0aW9uRm9yYCBhbmQgYSBgc2NoZW1hYC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2NoZW1hID0gc2NoZW1hO1xuICAgIHRoaXMudmFsaWRhdG9yRm9yID0gdmFsaWRhdG9yRm9yO1xuICB9XG5cbiAgdmFsaWRhdGUob3BlcmF0aW9uOiBSZWNvcmRPcGVyYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCB7IHNjaGVtYSwgdmFsaWRhdG9yRm9yIH0gPSB0aGlzO1xuICAgIGNvbnN0IGlzc3VlcyA9IHZhbGlkYXRlUmVjb3JkT3BlcmF0aW9uKG9wZXJhdGlvbiwgeyBzY2hlbWEsIHZhbGlkYXRvckZvciB9KTtcbiAgICBpZiAoaXNzdWVzKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZCcsIGlzc3Vlcyk7XG4gICAgfVxuICB9XG59XG4iXX0=