@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
69 lines • 6.33 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 SyncOperationProcessor {
constructor(accessor) {
this._accessor = accessor;
}
/**
* The `SyncRecordAccessor` 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) { }
/**
* Allow the processor to perform an upgrade as part of a cache upgrade.
*/
upgrade() { }
/**
* Validates an operation before processing it.
*/
validate(operation) { }
/**
* Called before an `operation` has been applied.
*
* Returns an array of operations to be applied **BEFORE** the `operation`
* itself is applied.
*/
before(operation) {
return [];
}
/**
* 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 [];
}
/**
* 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) { }
/**
* 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 [];
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1vcGVyYXRpb24tcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmMtb3BlcmF0aW9uLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFnQixzQkFBc0I7SUFVMUMsWUFBWSxRQUE0QjtRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBVEQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQU1EOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsSUFBeUIsSUFBUyxDQUFDO0lBRXpDOztPQUVHO0lBQ0gsT0FBTyxLQUFVLENBQUM7SUFFbEI7O09BRUc7SUFDSCxRQUFRLENBQUMsU0FBMEIsSUFBUyxDQUFDO0lBRTdDOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFNBQTBCO1FBQy9CLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFNBQTBCO1FBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxTQUEwQixJQUFTLENBQUM7SUFFOUM7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsU0FBMEI7UUFDaEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCB7IFN5bmNSZWNvcmRBY2Nlc3NvciB9IGZyb20gJy4vcmVjb3JkLWFjY2Vzc29yJztcbmltcG9ydCB7IFJlY29yZE9wZXJhdGlvbiB9IGZyb20gJ0BvcmJpdC9yZWNvcmRzJztcblxuZXhwb3J0IGludGVyZmFjZSBTeW5jT3BlcmF0aW9uUHJvY2Vzc29yQ2xhc3Mge1xuICBuZXcgKGNhY2hlOiBTeW5jUmVjb3JkQWNjZXNzb3IpOiBTeW5jT3BlcmF0aW9uUHJvY2Vzc29yO1xufVxuXG4vKipcbiAqIE9wZXJhdGlvbiBwcm9jZXNzb3JzIGFyZSB1c2VkIHRvIGlkZW50aWZ5IG9wZXJhdGlvbnMgdGhhdCBzaG91bGQgYmUgcGVyZm9ybWVkXG4gKiB0b2dldGhlciB0byBlbnN1cmUgdGhhdCBhIGBDYWNoZWAgb3Igb3RoZXIgY29udGFpbmVyIG9mIGRhdGEgcmVtYWluc1xuICogY29uc2lzdGVudCBhbmQgY29ycmVjdC5cbiAqXG4gKiBgT3BlcmF0aW9uUHJvY2Vzc29yYCBpcyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGJlIGV4dGVuZGVkIGJ5IHNwZWNpZmljXG4gKiBvcGVyYXRpb24gcHJvY2Vzc29ycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN5bmNPcGVyYXRpb25Qcm9jZXNzb3Ige1xuICBwcml2YXRlIF9hY2Nlc3NvcjogU3luY1JlY29yZEFjY2Vzc29yO1xuXG4gIC8qKlxuICAgKiBUaGUgYFN5bmNSZWNvcmRBY2Nlc3NvcmAgdGhhdCBpcyBtb25pdG9yZWQuXG4gICAqL1xuICBnZXQgYWNjZXNzb3IoKTogU3luY1JlY29yZEFjY2Vzc29yIHtcbiAgICByZXR1cm4gdGhpcy5fYWNjZXNzb3I7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogU3luY1JlY29yZEFjY2Vzc29yKSB7XG4gICAgdGhpcy5fYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbGwgdGhlIGRhdGEgaW4gYSBjYWNoZSBoYXMgYmVlbiByZXNldC5cbiAgICpcbiAgICogSWYgYGJhc2VgIGlzIGluY2x1ZGVkLCB0aGUgY2FjaGUgaXMgYmVpbmcgcmVzZXQgdG8gbWF0Y2ggYSBiYXNlIGNhY2hlLlxuICAgKi9cbiAgcmVzZXQoYmFzZT86IFN5bmNSZWNvcmRBY2Nlc3Nvcik6IHZvaWQge31cblxuICAvKipcbiAgICogQWxsb3cgdGhlIHByb2Nlc3NvciB0byBwZXJmb3JtIGFuIHVwZ3JhZGUgYXMgcGFydCBvZiBhIGNhY2hlIHVwZ3JhZGUuXG4gICAqL1xuICB1cGdyYWRlKCk6IHZvaWQge31cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuIG9wZXJhdGlvbiBiZWZvcmUgcHJvY2Vzc2luZyBpdC5cbiAgICovXG4gIHZhbGlkYXRlKG9wZXJhdGlvbjogUmVjb3JkT3BlcmF0aW9uKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGFuIGBvcGVyYXRpb25gIGhhcyBiZWVuIGFwcGxpZWQuXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2Ygb3BlcmF0aW9ucyB0byBiZSBhcHBsaWVkICoqQkVGT1JFKiogdGhlIGBvcGVyYXRpb25gXG4gICAqIGl0c2VsZiBpcyBhcHBsaWVkLlxuICAgKi9cbiAgYmVmb3JlKG9wZXJhdGlvbjogUmVjb3JkT3BlcmF0aW9uKTogUmVjb3JkT3BlcmF0aW9uW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGFuIGBvcGVyYXRpb25gIGhhcyBiZWVuIGFwcGxpZWQuXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2Ygb3BlcmF0aW9ucyB0byBiZSBhcHBsaWVkICoqQUZURVIqKiB0aGUgYG9wZXJhdGlvbmBcbiAgICogaGFzIGJlZW4gYXBwbGllZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBhZnRlcihvcGVyYXRpb246IFJlY29yZE9wZXJhdGlvbik6IFJlY29yZE9wZXJhdGlvbltdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGBvcGVyYXRpb25gIGhhcyBiZWVuIGFwcGxpZWQgYW5kIGJlZm9yZSB0aGVcbiAgICogYHBhdGNoYCBldmVudCBoYXMgYmVlbiBlbWl0dGVkIChpLmUuIGJlZm9yZSBhbnkgbGlzdGVuZXJzIGhhdmUgYmVlblxuICAgKiBub3RpZmllZCB0aGF0IHRoZSBvcGVyYXRpb24gd2FzIGFwcGxpZWQpLlxuICAgKlxuICAgKiBObyBvcGVyYXRpb25zIG1heSBiZSByZXR1cm5lZC5cbiAgICovXG4gIGltbWVkaWF0ZShvcGVyYXRpb246IFJlY29yZE9wZXJhdGlvbik6IHZvaWQge31cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGFuIGBvcGVyYXRpb25gIF9hbmRfIGFueSByZWxhdGVkIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIGFwcGxpZWQuXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2Ygb3BlcmF0aW9ucyB0byBiZSBhcHBsaWVkICoqQUZURVIqKiB0aGUgYG9wZXJhdGlvbmBcbiAgICogaXRzZWxmIGFuZCBhbnkgb3BlcmF0aW9ucyByZXR1cm5lZCBmcm9tIHRoZSBgYWZ0ZXJgIGhvb2sgaGF2ZSBiZWVuIGFwcGxpZWQuXG4gICAqL1xuICBmaW5hbGx5KG9wZXJhdGlvbjogUmVjb3JkT3BlcmF0aW9uKTogUmVjb3JkT3BlcmF0aW9uW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19