class SyncTargetRegistry { static classById(syncTargetId) { const info = SyncTargetRegistry.reg_[syncTargetId]; if (!info) throw new Error('Invalid id: ' + syncTargetId); return info.classRef; } static addClass(SyncTargetClass) { this.reg_[SyncTargetClass.id()] = { id: SyncTargetClass.id(), name: SyncTargetClass.targetName(), label: SyncTargetClass.label(), classRef: SyncTargetClass, supportsConfigCheck: SyncTargetClass.supportsConfigCheck(), }; } static nameToId(name) { for (let n in this.reg_) { if (!this.reg_.hasOwnProperty(n)) continue; if (this.reg_[n].name === name) return this.reg_[n].id; } throw new Error('Name not found: ' + name); } static idToMetadata(id) { for (let n in this.reg_) { if (!this.reg_.hasOwnProperty(n)) continue; if (this.reg_[n].id === id) return this.reg_[n]; } throw new Error('ID not found: ' + id); } static idToName(id) { return this.idToMetadata(id).name; } static idAndLabelPlainObject() { let output = {}; for (let n in this.reg_) { if (!this.reg_.hasOwnProperty(n)) continue; output[n] = this.reg_[n].label; } return output; } } SyncTargetRegistry.reg_ = {}; module.exports = SyncTargetRegistry;