UNPKG

alwz

Version:

Extendable library for typecasting

54 lines 1.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Aggregator = void 0; const Converter_js_1 = __importDefault(require("./Converter.cjs")); const ErrorValue_js_1 = __importDefault(require("./ErrorValue.cjs")); const Registry_js_1 = __importDefault(require("./Registry.cjs")); class Aggregator extends Registry_js_1.default { 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_js_1.default) { 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; } } exports.Aggregator = Aggregator; Aggregator.DuplicateConverter = class extends ErrorValue_js_1.default { }; Aggregator.InvalidConverter = class extends ErrorValue_js_1.default { }; Aggregator.AbsentConverter = class extends ErrorValue_js_1.default { }; exports.default = Aggregator; //# sourceMappingURL=Aggregator.cjs.map