UNPKG

2.56 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.Prop = exports.prop = void 0;
4const constants_1 = require("./internal/constants");
5const utils = require("./internal/utils");
6const logSettings_1 = require("./logSettings");
7/**
8 * Set Property Options for the property below
9 * @param options The Options to Set
10 * @param kind Overwrite auto-inferred PropType
11 * @example
12 * ```ts
13 * class ClassName {
14 * @prop()
15 * public someProp?: string;
16 *
17 * @prop({ type: () => [String] })
18 * public someArrayProp?: string[];
19 *
20 * @prop({ type: () => String })
21 * public someMapProp?: Map<string, string>;
22 * }
23 * ```
24 */
25function prop(options, kind) {
26 return (target, key) => {
27 options = options ?? {};
28 const existingMapForTarget = Reflect.getOwnMetadata(constants_1.DecoratorKeys.PropCache, target);
29 if (utils.isNullOrUndefined(existingMapForTarget)) {
30 Reflect.defineMetadata(constants_1.DecoratorKeys.PropCache, new Map(), target);
31 }
32 const mapForTarget = existingMapForTarget ?? Reflect.getOwnMetadata(constants_1.DecoratorKeys.PropCache, target);
33 mapForTarget.set(key, { options, target, key, propType: kind });
34 logSettings_1.logger.debug('Added "%s.%s" to the Decorator Cache', utils.getName(target.constructor), key);
35 };
36}
37exports.prop = prop;
38exports.Prop = prop;
39//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9EQUErRDtBQUMvRCwwQ0FBMEM7QUFDMUMsK0NBQXVDO0FBWXZDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILFNBQVMsSUFBSSxDQUNYLE9BQTRILEVBQzVILElBQWU7SUFFZixPQUFPLENBQUMsTUFBVyxFQUFFLEdBQW9CLEVBQUUsRUFBRTtRQUMzQyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUV4QixNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFpQyxDQUFDO1FBRXJILElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQUU7WUFDakQsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLEdBQUcsRUFBcUMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN2RztRQUVELE1BQU0sWUFBWSxHQUFHLG9CQUFvQixJQUFLLE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFrQyxDQUFDO1FBRXZJLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFaEUsb0JBQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVRLG9CQUFJO0FBR0ksb0JBQUkifQ==
\No newline at end of file