kt-extendscript-builder
Version:
Vite based builder for transpile TypeScript to ExtendScript
51 lines (50 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OptionsRuleResolver = void 0;
const rules_1 = require("./rules");
/**
* A resolver class for managing and applying option dependency rules to build options.
*
* This class allows for registering one or multiple options dependency rules and
* resolving them against a set of build options. Each rule is a function that
* can modify the build options.
*/
class OptionsRuleResolver {
constructor() {
/**
* The collection of dependency rules to apply.
* @private
*/
this.rules = [];
// Initialize with base options rules
this.addRules({ ...rules_1.baseOptionsRules, ...rules_1.adobeOptionsRules });
}
/**
* Adds one or more dependency rules to the resolver.
*
* @param rule - A single dependency rule or an array of rules to add
*/
addRules(rule) {
if (Array.isArray(rule)) {
// Caso 1: Si rule es un array de DependencyRule
this.rules.push(...rule);
}
else if (typeof rule === 'function') {
this.rules.push(rule);
}
else if (typeof rule === 'object') {
const rulesArray = Object.values(rule);
this.rules.push(...rulesArray);
}
}
/**
* Applies all registered dependency rules to the provided build options.
*
* @param options - The initial build options to transform
* @returns The transformed build options after applying all rules
*/
resolve(options) {
return this.rules.reduce((acc, rule) => rule(acc), options);
}
}
exports.OptionsRuleResolver = OptionsRuleResolver;