@orbit/coordinator
Version:
A coordinator and set of coordination strategies for managing data flow and keeping @orbit/data sources in sync.
63 lines • 7.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Strategy = void 0;
const core_1 = require("@orbit/core");
const { assert } = core_1.Orbit;
class Strategy {
constructor(options = {}) {
this._sources = [];
if (options.name) {
this._name = options.name;
}
else {
assert('Strategy requires a name', false);
}
this._sourceNames = options.sources;
this._logPrefix = options.logPrefix || `[${this._name}]`;
this._logLevel = this._customLogLevel = options.logLevel;
}
async activate(coordinator, options = {}) {
this._coordinator = coordinator;
if (this._customLogLevel === undefined) {
this._logLevel = options.logLevel;
}
if (this._sourceNames) {
this._sources = this._sourceNames.map((name) => coordinator.getSource(name));
}
else {
this._sources = coordinator.sources;
}
}
async deactivate() {
this._coordinator = undefined;
}
async beforeSourceActivation() { }
async afterSourceActivation() { }
async beforeSourceDeactivation() { }
async afterSourceDeactivation() { }
get name() {
return this._name;
}
get coordinator() {
return this._coordinator;
}
get sources() {
return this._sources;
}
get logPrefix() {
return this._logPrefix;
}
get logLevel() {
return this._logLevel;
}
getSourceName(source) {
if (source.name) {
return source.name;
}
else {
throw new core_1.Assertion(`Sources require a 'name' to be used by a coordination strategy.`);
}
}
}
exports.Strategy = Strategy;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQStDO0FBSS9DLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxZQUFLLENBQUM7QUErQnpCLE1BQXNCLFFBQVE7SUFTNUIsWUFBWSxVQUEyQixFQUFFO1FBTC9CLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFNaEMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztTQUMzQjthQUFNO1lBQ0wsTUFBTSxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FDWixXQUF3QixFQUN4QixVQUE2QixFQUFFO1FBRS9CLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ25DO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUM3QyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUM1QixDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLEtBQW1CLENBQUM7SUFDaEQsS0FBSyxDQUFDLHFCQUFxQixLQUFtQixDQUFDO0lBRS9DLEtBQUssQ0FBQyx3QkFBd0IsS0FBbUIsQ0FBQztJQUNsRCxLQUFLLENBQUMsdUJBQXVCLEtBQW1CLENBQUM7SUFFakQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVTLGFBQWEsQ0FBQyxNQUFjO1FBQ3BDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUNmLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztTQUNwQjthQUFNO1lBQ0wsTUFBTSxJQUFJLGdCQUFTLENBQ2pCLGlFQUFpRSxDQUNsRSxDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0Y7QUEvRUQsNEJBK0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JiaXQsIEFzc2VydGlvbiB9IGZyb20gJ0BvcmJpdC9jb3JlJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJ0BvcmJpdC9kYXRhJztcbmltcG9ydCB7IENvb3JkaW5hdG9yLCBBY3RpdmF0aW9uT3B0aW9ucywgTG9nTGV2ZWwgfSBmcm9tICcuL2Nvb3JkaW5hdG9yJztcblxuY29uc3QgeyBhc3NlcnQgfSA9IE9yYml0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmF0ZWd5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHN0cmF0ZWd5LlxuICAgKlxuICAgKiBVc2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgc3RyYXRlZ3kgaW4gYSBjb29yZGluYXRvcidzIGNvbGxlY3Rpb24uXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXMgb2Ygc291cmNlcyB0byBpbmNsdWRlIGluIHRoaXMgc3RyYXRlZ3kuIExlYXZlIHVuZGVmaW5lZFxuICAgKiB0byBpbmNsdWRlIGFsbCBzb3VyY2VzIHJlZ2lzdGVyZWQgd2l0aCBhIGNvb3JkaW5hdG9yLlxuICAgKi9cbiAgc291cmNlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHRvIHVzZSBmb3IgbG9nZ2luZyBmcm9tIHRoaXMgc3RyYXRlZ3kuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBbJHtuYW1lfV1gLlxuICAgKi9cbiAgbG9nUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNwZWNpZmljIGxvZyBsZXZlbCBmb3IgdGhpcyBzdHJhdGVneS5cbiAgICpcbiAgICogT3ZlcnJpZGVzIHRoZSBsb2cgbGV2ZWwgdXNlZCB3aGVuIGFjdGl2YXRpbmcgdGhlIGNvb3JkaW5hdG9yLlxuICAgKi9cbiAgbG9nTGV2ZWw/OiBMb2dMZXZlbDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0cmF0ZWd5IHtcbiAgcHJvdGVjdGVkIF9uYW1lITogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Nvb3JkaW5hdG9yPzogQ29vcmRpbmF0b3I7XG4gIHByb3RlY3RlZCBfc291cmNlTmFtZXM/OiBzdHJpbmdbXTtcbiAgcHJvdGVjdGVkIF9zb3VyY2VzOiBTb3VyY2VbXSA9IFtdO1xuICBwcm90ZWN0ZWQgX2N1c3RvbUxvZ0xldmVsPzogTG9nTGV2ZWw7XG4gIHByb3RlY3RlZCBfbG9nTGV2ZWw/OiBMb2dMZXZlbDtcbiAgcHJvdGVjdGVkIF9sb2dQcmVmaXg6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTdHJhdGVneU9wdGlvbnMgPSB7fSkge1xuICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgIHRoaXMuX25hbWUgPSBvcHRpb25zLm5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydCgnU3RyYXRlZ3kgcmVxdWlyZXMgYSBuYW1lJywgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuX3NvdXJjZU5hbWVzID0gb3B0aW9ucy5zb3VyY2VzO1xuICAgIHRoaXMuX2xvZ1ByZWZpeCA9IG9wdGlvbnMubG9nUHJlZml4IHx8IGBbJHt0aGlzLl9uYW1lfV1gO1xuICAgIHRoaXMuX2xvZ0xldmVsID0gdGhpcy5fY3VzdG9tTG9nTGV2ZWwgPSBvcHRpb25zLmxvZ0xldmVsO1xuICB9XG5cbiAgYXN5bmMgYWN0aXZhdGUoXG4gICAgY29vcmRpbmF0b3I6IENvb3JkaW5hdG9yLFxuICAgIG9wdGlvbnM6IEFjdGl2YXRpb25PcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY29vcmRpbmF0b3IgPSBjb29yZGluYXRvcjtcblxuICAgIGlmICh0aGlzLl9jdXN0b21Mb2dMZXZlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9sb2dMZXZlbCA9IG9wdGlvbnMubG9nTGV2ZWw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NvdXJjZU5hbWVzKSB7XG4gICAgICB0aGlzLl9zb3VyY2VzID0gdGhpcy5fc291cmNlTmFtZXMubWFwKChuYW1lKSA9PlxuICAgICAgICBjb29yZGluYXRvci5nZXRTb3VyY2UobmFtZSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NvdXJjZXMgPSBjb29yZGluYXRvci5zb3VyY2VzO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlYWN0aXZhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY29vcmRpbmF0b3IgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBiZWZvcmVTb3VyY2VBY3RpdmF0aW9uKCk6IFByb21pc2U8dm9pZD4ge31cbiAgYXN5bmMgYWZ0ZXJTb3VyY2VBY3RpdmF0aW9uKCk6IFByb21pc2U8dm9pZD4ge31cblxuICBhc3luYyBiZWZvcmVTb3VyY2VEZWFjdGl2YXRpb24oKTogUHJvbWlzZTx2b2lkPiB7fVxuICBhc3luYyBhZnRlclNvdXJjZURlYWN0aXZhdGlvbigpOiBQcm9taXNlPHZvaWQ+IHt9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIGdldCBjb29yZGluYXRvcigpOiBDb29yZGluYXRvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Nvb3JkaW5hdG9yO1xuICB9XG5cbiAgZ2V0IHNvdXJjZXMoKTogU291cmNlW10ge1xuICAgIHJldHVybiB0aGlzLl9zb3VyY2VzO1xuICB9XG5cbiAgZ2V0IGxvZ1ByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2dQcmVmaXg7XG4gIH1cblxuICBnZXQgbG9nTGV2ZWwoKTogTG9nTGV2ZWwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9sb2dMZXZlbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTb3VyY2VOYW1lKHNvdXJjZTogU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoc291cmNlLm5hbWUpIHtcbiAgICAgIHJldHVybiBzb3VyY2UubmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbihcbiAgICAgICAgYFNvdXJjZXMgcmVxdWlyZSBhICduYW1lJyB0byBiZSB1c2VkIGJ5IGEgY29vcmRpbmF0aW9uIHN0cmF0ZWd5LmBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=