UNPKG

@orchestrator/core

Version:
42 lines 3.39 kB
import { Property } from '@orchestrator/gen-io-ts'; import { null as nullType, undefined as undefinedType, union } from 'io-ts'; import { addConfig } from '../../metadata/configuration'; /** * Will set type of property to `null | undefined`. * * Useful for cases when you have to explicitly exclude * specific property from type. * * **Example:** * ```ts * class A { * @Option() * prop1: string; * @Option() * prop2: string; * @OptionNotPresent() * prop3?: null | undefined; // This prop should be excluded! * } * * class B { * @Option() * prop1: string; * @Option() * prop2: string; * @Option() * prop3: string; * } * * type AorB = A | B; * ``` */ export function OptionNotPresent() { const decorator = Property({ typeFactory: () => union([nullType, undefinedType]), }); return (target, prop) => { decorator(target, prop); addConfig(target, { prop, decorator: OptionNotPresent, args: [] }); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LXByZXNlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb25maWcvb3B0aW9uL25vdC1wcmVzZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxJQUFJLFFBQVEsRUFBRSxTQUFTLElBQUksYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUN6QixXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ3BELENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdEIsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QixTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tICdAb3JjaGVzdHJhdG9yL2dlbi1pby10cyc7XG5pbXBvcnQgeyBudWxsIGFzIG51bGxUeXBlLCB1bmRlZmluZWQgYXMgdW5kZWZpbmVkVHlwZSwgdW5pb24gfSBmcm9tICdpby10cyc7XG5cbmltcG9ydCB7IGFkZENvbmZpZyB9IGZyb20gJy4uLy4uL21ldGFkYXRhL2NvbmZpZ3VyYXRpb24nO1xuXG4vKipcbiAqIFdpbGwgc2V0IHR5cGUgb2YgcHJvcGVydHkgdG8gYG51bGwgfCB1bmRlZmluZWRgLlxuICpcbiAqIFVzZWZ1bCBmb3IgY2FzZXMgd2hlbiB5b3UgaGF2ZSB0byBleHBsaWNpdGx5IGV4Y2x1ZGVcbiAqIHNwZWNpZmljIHByb3BlcnR5IGZyb20gdHlwZS5cbiAqXG4gKiAqKkV4YW1wbGU6KipcbiAqIGBgYHRzXG4gKiBjbGFzcyBBIHtcbiAqICAgQE9wdGlvbigpXG4gKiAgIHByb3AxOiBzdHJpbmc7XG4gKiAgIEBPcHRpb24oKVxuICogICBwcm9wMjogc3RyaW5nO1xuICogICBAT3B0aW9uTm90UHJlc2VudCgpXG4gKiAgIHByb3AzPzogbnVsbCB8IHVuZGVmaW5lZDsgLy8gVGhpcyBwcm9wIHNob3VsZCBiZSBleGNsdWRlZCFcbiAqIH1cbiAqXG4gKiBjbGFzcyBCIHtcbiAqICAgQE9wdGlvbigpXG4gKiAgIHByb3AxOiBzdHJpbmc7XG4gKiAgIEBPcHRpb24oKVxuICogICBwcm9wMjogc3RyaW5nO1xuICogICBAT3B0aW9uKClcbiAqICAgcHJvcDM6IHN0cmluZztcbiAqIH1cbiAqXG4gKiB0eXBlIEFvckIgPSBBIHwgQjtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gT3B0aW9uTm90UHJlc2VudCgpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIGNvbnN0IGRlY29yYXRvciA9IFByb3BlcnR5KHtcbiAgICB0eXBlRmFjdG9yeTogKCkgPT4gdW5pb24oW251bGxUeXBlLCB1bmRlZmluZWRUeXBlXSksXG4gIH0pO1xuICByZXR1cm4gKHRhcmdldCwgcHJvcCkgPT4ge1xuICAgIGRlY29yYXRvcih0YXJnZXQsIHByb3ApO1xuICAgIGFkZENvbmZpZyh0YXJnZXQsIHsgcHJvcCwgZGVjb3JhdG9yOiBPcHRpb25Ob3RQcmVzZW50LCBhcmdzOiBbXSB9KTtcbiAgfTtcbn1cbiJdfQ==