UNPKG

@orchestrator/core

Version:
31 lines 4.82 kB
/* 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==