alwz
Version:
Extendable library for typecasting
54 lines • 1.88 kB
JavaScript
;
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