@orchestrator/core
Version:
> Core package of Orchestrator library.
31 lines • 4.82 kB
JavaScript
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import { Property } from '@orchestrator/gen-io-ts';
import { OptionAllowedValues } from './allowed-values';
import { OptionInteger } from './integer';
import { OptionRange } from './range';
import { OptionRequired } from './required';
import { OptionType } from './type';
export function Option(config = {}) {
const decorator = Property();
const decorators = Object.keys(config)
.map((key) => {
switch (key) {
case 'required':
return config.required ? OptionRequired() : null;
case 'type':
return OptionType(config.type);
case 'range':
return OptionRange(config.range.min, config.range.max, config.range.step);
case 'integer':
return config.integer ? OptionInteger() : null;
case 'allowedValues':
return OptionAllowedValues(...config.allowedValues);
}
})
.filter(Boolean);
return (target, prop) => {
decorator(target, prop);
decorators.forEach((d) => d(target, prop));
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29uZmlnL29wdGlvbi9vcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVXBDLE1BQU0sVUFBVSxNQUFNLENBQUMsU0FBdUIsRUFBRTtJQUM5QyxNQUFNLFNBQVMsR0FBRyxRQUFRLEVBQUUsQ0FBQztJQUU3QixNQUFNLFVBQVUsR0FBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBNEI7U0FDL0QsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDWCxRQUFRLEdBQUcsRUFBRTtZQUNYLEtBQUssVUFBVTtnQkFDYixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkQsS0FBSyxNQUFNO2dCQUNULE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxXQUFXLENBQ2hCLE1BQU0sQ0FBQyxLQUFNLENBQUMsR0FBRyxFQUNqQixNQUFNLENBQUMsS0FBTSxDQUFDLEdBQUcsRUFDakIsTUFBTSxDQUFDLEtBQU0sQ0FBQyxJQUFJLENBQ25CLENBQUM7WUFDSixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2pELEtBQUssZUFBZTtnQkFDbEIsT0FBTyxtQkFBbUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFjLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVuQixPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3RCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gJ0BvcmNoZXN0cmF0b3IvZ2VuLWlvLXRzJztcblxuaW1wb3J0IHsgT3B0aW9uQWxsb3dlZFZhbHVlcyB9IGZyb20gJy4vYWxsb3dlZC12YWx1ZXMnO1xuaW1wb3J0IHsgT3B0aW9uSW50ZWdlciB9IGZyb20gJy4vaW50ZWdlcic7XG5pbXBvcnQgeyBPcHRpb25SYW5nZSB9IGZyb20gJy4vcmFuZ2UnO1xuaW1wb3J0IHsgT3B0aW9uUmVxdWlyZWQgfSBmcm9tICcuL3JlcXVpcmVkJztcbmltcG9ydCB7IE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbkNvbmZpZyB7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdHlwZT86IGFueTtcbiAgcmFuZ2U/OiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlcjsgc3RlcD86IG51bWJlciB9O1xuICBpbnRlZ2VyPzogYm9vbGVhbjtcbiAgYWxsb3dlZFZhbHVlcz86IGFueVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gT3B0aW9uKGNvbmZpZzogT3B0aW9uQ29uZmlnID0ge30pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIGNvbnN0IGRlY29yYXRvciA9IFByb3BlcnR5KCk7XG5cbiAgY29uc3QgZGVjb3JhdG9ycyA9IChPYmplY3Qua2V5cyhjb25maWcpIGFzIChrZXlvZiBPcHRpb25Db25maWcpW10pXG4gICAgLm1hcCgoa2V5KSA9PiB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgICAgcmV0dXJuIGNvbmZpZy5yZXF1aXJlZCA/IE9wdGlvblJlcXVpcmVkKCkgOiBudWxsO1xuICAgICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgICByZXR1cm4gT3B0aW9uVHlwZShjb25maWcudHlwZSk7XG4gICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICByZXR1cm4gT3B0aW9uUmFuZ2UoXG4gICAgICAgICAgICBjb25maWcucmFuZ2UhLm1pbixcbiAgICAgICAgICAgIGNvbmZpZy5yYW5nZSEubWF4LFxuICAgICAgICAgICAgY29uZmlnLnJhbmdlIS5zdGVwLFxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgIHJldHVybiBjb25maWcuaW50ZWdlciA/IE9wdGlvbkludGVnZXIoKSA6IG51bGw7XG4gICAgICAgIGNhc2UgJ2FsbG93ZWRWYWx1ZXMnOlxuICAgICAgICAgIHJldHVybiBPcHRpb25BbGxvd2VkVmFsdWVzKC4uLmNvbmZpZy5hbGxvd2VkVmFsdWVzISk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIHJldHVybiAodGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgZGVjb3JhdG9yKHRhcmdldCwgcHJvcCk7XG4gICAgZGVjb3JhdG9ycy5mb3JFYWNoKChkKSA9PiBkISh0YXJnZXQsIHByb3ApKTtcbiAgfTtcbn1cbiJdfQ==