UNPKG

@orbit/record-cache

Version:

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

77 lines 7.19 kB
/** * Operation processors are used to identify operations that should be performed * together to ensure that a `Cache` or other container of data remains * consistent and correct. * * `OperationProcessor` is an abstract base class to be extended by specific * operation processors. */ export class AsyncOperationProcessor { constructor(accessor) { this._accessor = accessor; } /** * The `AsyncRecordAccessor` that is monitored. */ get accessor() { return this._accessor; } /** * Called when all the data in a cache has been reset. * * If `base` is included, the cache is being reset to match a base cache. */ reset(base) { return Promise.resolve(); } /** * Allow the processor to perform an upgrade as part of a cache upgrade. */ upgrade() { return Promise.resolve(); } /** * Validates an operation before processing it. */ validate(operation) { return Promise.resolve(); } /** * Called before an `operation` has been applied. * * Returns an array of operations to be applied **BEFORE** the `operation` * itself is applied. */ before(operation) { return Promise.resolve([]); } /** * Called before an `operation` has been applied. * * Returns an array of operations to be applied **AFTER** the `operation` * has been applied successfully. */ after(operation) { return Promise.resolve([]); } /** * Called immediately after an `operation` has been applied and before the * `patch` event has been emitted (i.e. before any listeners have been * notified that the operation was applied). * * No operations may be returned. */ immediate(operation) { return Promise.resolve(); } /** * Called after an `operation` _and_ any related operations have been applied. * * Returns an array of operations to be applied **AFTER** the `operation` * itself and any operations returned from the `after` hook have been applied. */ finally(operation) { return Promise.resolve([]); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtb3BlcmF0aW9uLXByb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3luYy1vcGVyYXRpb24tcHJvY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQWdCLHVCQUF1QjtJQVUzQyxZQUFZLFFBQTZCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFURDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBTUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxJQUEwQjtRQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLFNBQTBCO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxTQUEwQjtRQUMvQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFNBQTBCO1FBQzlCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLFNBQTBCO1FBQ2xDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxTQUEwQjtRQUNoQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBBc3luY1JlY29yZEFjY2Vzc29yIH0gZnJvbSAnLi9yZWNvcmQtYWNjZXNzb3InO1xuaW1wb3J0IHsgUmVjb3JkT3BlcmF0aW9uIH0gZnJvbSAnQG9yYml0L3JlY29yZHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzeW5jT3BlcmF0aW9uUHJvY2Vzc29yQ2xhc3Mge1xuICBuZXcgKGNhY2hlOiBBc3luY1JlY29yZEFjY2Vzc29yKTogQXN5bmNPcGVyYXRpb25Qcm9jZXNzb3I7XG59XG5cbi8qKlxuICogT3BlcmF0aW9uIHByb2Nlc3NvcnMgYXJlIHVzZWQgdG8gaWRlbnRpZnkgb3BlcmF0aW9ucyB0aGF0IHNob3VsZCBiZSBwZXJmb3JtZWRcbiAqIHRvZ2V0aGVyIHRvIGVuc3VyZSB0aGF0IGEgYENhY2hlYCBvciBvdGhlciBjb250YWluZXIgb2YgZGF0YSByZW1haW5zXG4gKiBjb25zaXN0ZW50IGFuZCBjb3JyZWN0LlxuICpcbiAqIGBPcGVyYXRpb25Qcm9jZXNzb3JgIGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gYmUgZXh0ZW5kZWQgYnkgc3BlY2lmaWNcbiAqIG9wZXJhdGlvbiBwcm9jZXNzb3JzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXN5bmNPcGVyYXRpb25Qcm9jZXNzb3Ige1xuICBwcml2YXRlIF9hY2Nlc3NvcjogQXN5bmNSZWNvcmRBY2Nlc3NvcjtcblxuICAvKipcbiAgICogVGhlIGBBc3luY1JlY29yZEFjY2Vzc29yYCB0aGF0IGlzIG1vbml0b3JlZC5cbiAgICovXG4gIGdldCBhY2Nlc3NvcigpOiBBc3luY1JlY29yZEFjY2Vzc29yIHtcbiAgICByZXR1cm4gdGhpcy5fYWNjZXNzb3I7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQXN5bmNSZWNvcmRBY2Nlc3Nvcikge1xuICAgIHRoaXMuX2FjY2Vzc29yID0gYWNjZXNzb3I7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYWxsIHRoZSBkYXRhIGluIGEgY2FjaGUgaGFzIGJlZW4gcmVzZXQuXG4gICAqXG4gICAqIElmIGBiYXNlYCBpcyBpbmNsdWRlZCwgdGhlIGNhY2hlIGlzIGJlaW5nIHJlc2V0IHRvIG1hdGNoIGEgYmFzZSBjYWNoZS5cbiAgICovXG4gIHJlc2V0KGJhc2U/OiBBc3luY1JlY29yZEFjY2Vzc29yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHRoZSBwcm9jZXNzb3IgdG8gcGVyZm9ybSBhbiB1cGdyYWRlIGFzIHBhcnQgb2YgYSBjYWNoZSB1cGdyYWRlLlxuICAgKi9cbiAgdXBncmFkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuIG9wZXJhdGlvbiBiZWZvcmUgcHJvY2Vzc2luZyBpdC5cbiAgICovXG4gIHZhbGlkYXRlKG9wZXJhdGlvbjogUmVjb3JkT3BlcmF0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgYW4gYG9wZXJhdGlvbmAgaGFzIGJlZW4gYXBwbGllZC5cbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBvcGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgKipCRUZPUkUqKiB0aGUgYG9wZXJhdGlvbmBcbiAgICogaXRzZWxmIGlzIGFwcGxpZWQuXG4gICAqL1xuICBiZWZvcmUob3BlcmF0aW9uOiBSZWNvcmRPcGVyYXRpb24pOiBQcm9taXNlPFJlY29yZE9wZXJhdGlvbltdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBhbiBgb3BlcmF0aW9uYCBoYXMgYmVlbiBhcHBsaWVkLlxuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG9wZXJhdGlvbnMgdG8gYmUgYXBwbGllZCAqKkFGVEVSKiogdGhlIGBvcGVyYXRpb25gXG4gICAqIGhhcyBiZWVuIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgYWZ0ZXIob3BlcmF0aW9uOiBSZWNvcmRPcGVyYXRpb24pOiBQcm9taXNlPFJlY29yZE9wZXJhdGlvbltdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGBvcGVyYXRpb25gIGhhcyBiZWVuIGFwcGxpZWQgYW5kIGJlZm9yZSB0aGVcbiAgICogYHBhdGNoYCBldmVudCBoYXMgYmVlbiBlbWl0dGVkIChpLmUuIGJlZm9yZSBhbnkgbGlzdGVuZXJzIGhhdmUgYmVlblxuICAgKiBub3RpZmllZCB0aGF0IHRoZSBvcGVyYXRpb24gd2FzIGFwcGxpZWQpLlxuICAgKlxuICAgKiBObyBvcGVyYXRpb25zIG1heSBiZSByZXR1cm5lZC5cbiAgICovXG4gIGltbWVkaWF0ZShvcGVyYXRpb246IFJlY29yZE9wZXJhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgYW4gYG9wZXJhdGlvbmAgX2FuZF8gYW55IHJlbGF0ZWQgb3BlcmF0aW9ucyBoYXZlIGJlZW4gYXBwbGllZC5cbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBvcGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgKipBRlRFUioqIHRoZSBgb3BlcmF0aW9uYFxuICAgKiBpdHNlbGYgYW5kIGFueSBvcGVyYXRpb25zIHJldHVybmVkIGZyb20gdGhlIGBhZnRlcmAgaG9vayBoYXZlIGJlZW4gYXBwbGllZC5cbiAgICovXG4gIGZpbmFsbHkob3BlcmF0aW9uOiBSZWNvcmRPcGVyYXRpb24pOiBQcm9taXNlPFJlY29yZE9wZXJhdGlvbltdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cbn1cbiJdfQ==