UNPKG

@nestjs-mod/common

Version:

A collection of utilities for unifying NestJS applications and modules

48 lines 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnvModel = EnvModel; exports.EnvModelProperty = EnvModelProperty; const common_1 = require("@nestjs/common"); const constants_1 = require("./constants"); const default_property_value_extractor_1 = require("./extractors/default-property-value.extractor"); const process_env_property_value_extractor_1 = require("./extractors/process-env-property-value.extractor"); const dot_env_property_name_formatter_1 = require("./formatters/dot-env-property-name.formatter"); /** * Decorator to mark a class as an environment model * Sets up default property value extractors and name formatters if not provided * @param options Optional configuration for the environment model */ function EnvModel(options) { const modelOptions = { ...options, }; // Set default property value extractors if not provided if (!modelOptions.propertyValueExtractors) { modelOptions.propertyValueExtractors = [ new default_property_value_extractor_1.DefaultPropertyValueExtractor(), new process_env_property_value_extractor_1.ProcessEnvPropertyValueExtractor(), ]; } // Set default property name formatters if not provided if (!modelOptions.propertyNameFormatters) { modelOptions.propertyNameFormatters = [new dot_env_property_name_formatter_1.DotEnvPropertyNameFormatter()]; } return (0, common_1.applyDecorators)((0, common_1.Injectable)(), (target) => { Reflect.defineMetadata(constants_1.ENV_MODEL_METADATA, { ...modelOptions, originalName: target.name, }, target); }); } /** * Decorator to define a property within an environment model * @param options Property configuration options (excluding originalName) */ function EnvModelProperty(options) { return (target, propertyKey) => { const existingMetadata = Reflect.getOwnMetadata(constants_1.ENV_MODEL_PROPERTIES_METADATA, target.constructor) || []; existingMetadata.push({ ...options, originalName: propertyKey }); Reflect.defineMetadata(constants_1.ENV_MODEL_PROPERTIES_METADATA, existingMetadata, target.constructor); }; } //# sourceMappingURL=decorators.js.map