UNPKG

@zero-scripts/core

Version:

Framework for creating presets, configurations and extensions

36 lines 1.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReadOptions = void 0; const AbstractOptionsContainer_1 = require("../AbstractOptionsContainer"); const readZeroScriptsOptions_1 = require("../utils/readZeroScriptsOptions"); /** * ReadOptions Decorator * * @param OptionsContainer * @param optionsKey * @constructor * * Decorated class need to accepting OptionsContainer as first argument * * Example: * * @ReadOptions(MyOptionsContainer, 'myKeyInPackageJson') * class Foo { * constructor(optionsContainer: AbstractOptionsContainer, secondArg: number, thirdArg: string): {} * } */ function ReadOptions(OptionsContainer, optionsKey) { return (DecoratedClass) => ({ [DecoratedClass.name]: class extends DecoratedClass { constructor(...args) { const externalOptions = readZeroScriptsOptions_1.readZeroScriptsOptions(optionsKey); const [optionsContainerInstance, ...restArgs] = args[0] instanceof AbstractOptionsContainer_1.AbstractOptionsContainer ? args : [new OptionsContainer(externalOptions), ...args.slice(1)]; super(optionsContainerInstance, ...restArgs); } } }[DecoratedClass.name]); } exports.ReadOptions = ReadOptions; //# sourceMappingURL=ReadOptions.js.map