UNPKG

@zero-scripts/core

Version:

Framework for creating presets, configurations and extensions

45 lines 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractConfigBuilder = void 0; const cloneInstance_1 = require("./utils/cloneInstance"); class AbstractConfigBuilder { constructor(optionsContainer) { this.optionsContainer = optionsContainer; this.modifications = []; this._beforeBuild = []; this._afterBuild = []; } build(createBaseConfig) { this._beforeBuild.forEach(func => { func(this); }); const options = this.optionsContainer.build(); const config = createBaseConfig ? createBaseConfig(options) : {}; const appliedModifications = []; this.modifications.forEach(modifier => { if (!modifier.id || !appliedModifications.some(appliedModifier => Boolean(appliedModifier.id) && appliedModifier.id === modifier.id)) { appliedModifications.push(modifier.apply(config, options)); } }); this._afterBuild.forEach(func => { func(config); }); return config; } beforeBuild(func) { this._beforeBuild.push(func); return this; } afterBuild(func) { this._afterBuild.push(func); return this; } clone() { return cloneInstance_1.cloneInstance(this); } } exports.AbstractConfigBuilder = AbstractConfigBuilder; //# sourceMappingURL=AbstractConfigBuilder.js.map