@nestjs-mod/common
Version:
A collection of utilities for unifying NestJS applications and modules
36 lines • 1.86 kB
JavaScript
;
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");
function EnvModel(options) {
if (!options) {
options = {};
}
if (!options.propertyValueExtractors) {
options.propertyValueExtractors = [new default_property_value_extractor_1.DefaultPropertyValueExtractor(), new process_env_property_value_extractor_1.ProcessEnvPropertyValueExtractor()];
}
if (!options.propertyNameFormatters) {
options.propertyNameFormatters = [new dot_env_property_name_formatter_1.DotEnvPropertyNameFormatter()];
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return (0, common_1.applyDecorators)((0, common_1.Injectable)(), (target) => {
Reflect.defineMetadata(constants_1.ENV_MODEL_METADATA, {
...options,
originalName: target.name,
}, target);
});
}
function EnvModelProperty(options) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return (target, propertyKey) => {
const envModelPropertyMetadata = Reflect.getOwnMetadata(constants_1.ENV_MODEL_PROPERTIES_METADATA, target.constructor) || [];
envModelPropertyMetadata.push({ ...options, originalName: propertyKey });
Reflect.defineMetadata(constants_1.ENV_MODEL_PROPERTIES_METADATA, envModelPropertyMetadata, target.constructor);
};
}
//# sourceMappingURL=decorators.js.map