@orchestrator/core
Version:
> Core package of Orchestrator library.
42 lines • 3.39 kB
JavaScript
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==