@typegoose/typegoose
Version:
Define Mongoose models using TypeScript classes
40 lines • 2.62 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Prop = exports.prop = void 0;
const tslib_1 = require("tslib");
const constants_1 = require("./internal/constants");
const utils = tslib_1.__importStar(require("./internal/utils"));
const logSettings_1 = require("./logSettings");
/**
* Set Property Options for the property below
* @param options The Options to Set
* @param kind Overwrite auto-inferred PropType
* @example
* ```ts
* class ClassName {
* @prop()
* public someProp?: string;
*
* @prop({ type: () => [String] })
* public someArrayProp?: string[];
*
* @prop({ type: () => String })
* public someMapProp?: Map<string, string>;
* }
* ```
*/
function prop(options, kind) {
return (target, key) => {
options = options ?? {};
const existingMapForTarget = Reflect.getOwnMetadata(constants_1.DecoratorKeys.PropCache, target);
if (utils.isNullOrUndefined(existingMapForTarget)) {
Reflect.defineMetadata(constants_1.DecoratorKeys.PropCache, new Map(), target);
}
const mapForTarget = existingMapForTarget ?? Reflect.getOwnMetadata(constants_1.DecoratorKeys.PropCache, target);
mapForTarget.set(key, { options, target, key, propType: kind });
logSettings_1.logger.debug('Added "%s.%s" to the Decorator Cache', utils.getName(target.constructor), key);
};
}
exports.prop = prop;
exports.Prop = prop;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxvREFBK0Q7QUFDL0QsZ0VBQTBDO0FBQzFDLCtDQUF1QztBQVl2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxTQUFTLElBQUksQ0FDWCxPQUE0SCxFQUM1SCxJQUFlO0lBRWYsT0FBTyxDQUFDLE1BQVcsRUFBRSxHQUFvQixFQUFFLEVBQUU7UUFDM0MsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFeEIsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBaUMsQ0FBQztRQUVySCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLEdBQUcsRUFBcUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLElBQUssT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQWtDLENBQUM7UUFFdkksWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVoRSxvQkFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvRixDQUFDLENBQUM7QUFDSixDQUFDO0FBRVEsb0JBQUk7QUFHSSxvQkFBSSJ9
;