@jiaxinjiang/nest-config
Version:
Configuration component for NestJs.
46 lines • 2.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@nestjs/common");
const config_service_1 = require("./config.service");
const config_constants_1 = require("./config.constants");
const config_helper_1 = require("./config.helper");
exports.InjectConfig = () => common_1.Inject(config_service_1.ConfigService);
exports.Configurable = () => {
return (target, key, descriptor) => {
const originalMethod = descriptor.value;
descriptor.value = function (...args) {
const paramsMetadata = (Reflect.getMetadata(config_constants_1.CONFIG_PARAMS, target, key) || []).filter(p => {
return p.propertyKey === key;
});
return originalMethod.apply(this, config_helper_1.applyParamsMetadataDecorator(paramsMetadata, args, config_service_1.ConfigService.get));
};
Reflect.defineMetadata(config_constants_1.CONFIG_CONFIGURABLE, Reflect.getMetadata(config_constants_1.CONFIG_PARAMS, target, key) || [], descriptor.value);
return descriptor;
};
};
exports.ConfigParam = (configKey, fallback = undefined) => (target, propertyKey, parameterIndex) => {
const existingParameters = Reflect.getMetadata(config_constants_1.CONFIG_PARAMS, target, propertyKey) || [];
existingParameters.push({ parameterIndex, propertyKey, configKey, fallback });
Reflect.defineMetadata(config_constants_1.CONFIG_PARAMS, existingParameters, target, propertyKey);
return target;
};
exports.ProxyProperty = (propertyName) => function classDecorator(constructor) {
const decorated = class A extends constructor {
constructor(...args) {
super(...args);
return new Proxy(this, {
get: (target, prop) => {
if (target[prop] !== undefined) {
return target[prop];
}
else if (target[propertyName].hasOwnProperty(prop)) {
return target[propertyName][prop];
}
},
});
}
};
Object.defineProperty(decorated, 'name', { value: constructor.name });
return decorated;
};
//# sourceMappingURL=config.decorator.js.map