@zero-scripts/core
Version:
Framework for creating presets, configurations and extensions
45 lines • 1.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConfigModification = void 0;
const get_value_1 = __importDefault(require("get-value"));
const set_value_1 = __importDefault(require("set-value"));
const types_1 = require("./types");
const extractFirstPropChain_1 = require("./utils/extractFirstPropChain");
class ConfigModification {
constructor(selector, createNewValue, id) {
this.createNewValue = createNewValue;
this.id = id;
this.path = extractFirstPropChain_1.extractFirstPropChain(String(selector));
}
apply(target, options) {
set_value_1.default(target, this.path, this.createNewValue(get_value_1.default(target, this.path), options));
return this;
}
static arrayInsertCreator(creator, position) {
return (array, options) => {
const element = creator(options);
if (!element) {
return array;
}
if (!array) {
return [element];
}
switch (position) {
case types_1.InsertPos.Start:
return [element, ...array];
case types_1.InsertPos.Middle:
array.splice(array.length / 2, 0, element);
return array.slice(0);
case types_1.InsertPos.End:
return [...array, element];
default:
throw new Error(`[${this.constructor.name}]: Insert position '${position}' doesn't exists`);
}
};
}
}
exports.ConfigModification = ConfigModification;
//# sourceMappingURL=ConfigModification.js.map