@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
77 lines • 7.19 kB
JavaScript
/**
* 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==