UNPKG

@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
"use strict"; 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=