UNPKG

alwz

Version:

Extendable library for typecasting

47 lines 1.43 kB
import Converter from './Converter.mjs'; import EV from './ErrorValue.mjs'; import Registry from './Registry.mjs'; export class Aggregator extends Registry { constructor() { super(); this.converter = (name) => { if (this._items.has(name)) { return this._items.get(name); } else { throw new Aggregator.AbsentConverter('converter has not been registered', name); } }; this.to = (name) => this.converter(name).convert; Object.freeze(this); } get converters() { return Array.from(this._items); } register(name, converter) { if (this._items.has(name)) { throw new Aggregator.DuplicateConverter('converter has already been registered', name); } else { if (converter instanceof Converter) { this._items.set(name, converter); } else { throw new Aggregator.InvalidConverter('must be an instance of Converter', converter); } } return this; } unregister(name) { this._items.delete(name); return this; } } Aggregator.DuplicateConverter = class extends EV { }; Aggregator.InvalidConverter = class extends EV { }; Aggregator.AbsentConverter = class extends EV { }; export default Aggregator; //# sourceMappingURL=Aggregator.mjs.map