artmapper
Version:
Spring Boot clone for Node.js with TypeScript/JavaScript - JPA-like ORM, Lombok decorators, dependency injection, and MySQL support
86 lines • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.QUALIFIER_METADATA_KEY = exports.VALUE_METADATA_KEY = exports.AUTOWIRED_METADATA_KEY = exports.REPOSITORY_METADATA_KEY = exports.CONTROLLER_METADATA_KEY = exports.SERVICE_METADATA_KEY = exports.COMPONENT_METADATA_KEY = void 0;
exports.Component = Component;
exports.Service = Service;
exports.Controller = Controller;
exports.Repository = Repository;
exports.Autowired = Autowired;
exports.Value = Value;
exports.Qualifier = Qualifier;
require("reflect-metadata");
exports.COMPONENT_METADATA_KEY = Symbol('component');
exports.SERVICE_METADATA_KEY = Symbol('service');
exports.CONTROLLER_METADATA_KEY = Symbol('controller');
exports.REPOSITORY_METADATA_KEY = Symbol('repository');
exports.AUTOWIRED_METADATA_KEY = Symbol('autowired');
exports.VALUE_METADATA_KEY = Symbol('value');
exports.QUALIFIER_METADATA_KEY = Symbol('qualifier');
/**
* Marks a class as a Spring component
*/
function Component(name) {
return function (target) {
Reflect.defineMetadata(exports.COMPONENT_METADATA_KEY, { name: name || target.name }, target);
};
}
/**
* Marks a class as a Spring service
*/
function Service(name) {
return function (target) {
Reflect.defineMetadata(exports.SERVICE_METADATA_KEY, { name: name || target.name }, target);
Reflect.defineMetadata(exports.COMPONENT_METADATA_KEY, { name: name || target.name }, target);
};
}
/**
* Marks a class as a Spring controller
*/
function Controller(path) {
return function (target) {
Reflect.defineMetadata(exports.CONTROLLER_METADATA_KEY, { path: path || '' }, target);
Reflect.defineMetadata(exports.COMPONENT_METADATA_KEY, { name: target.name }, target);
};
}
/**
* Marks a class as a Spring repository
*/
function Repository(name) {
return function (target) {
Reflect.defineMetadata(exports.REPOSITORY_METADATA_KEY, { name: name || target.name }, target);
Reflect.defineMetadata(exports.COMPONENT_METADATA_KEY, { name: name || target.name }, target);
};
}
/**
* Marks a property for dependency injection
*/
function Autowired(type) {
return function (target, propertyKey) {
const existingAutowired = Reflect.getMetadata(exports.AUTOWIRED_METADATA_KEY, target.constructor) || {};
existingAutowired[propertyKey] = {
type: type || Reflect.getMetadata('design:type', target, propertyKey),
};
Reflect.defineMetadata(exports.AUTOWIRED_METADATA_KEY, existingAutowired, target.constructor);
};
}
/**
* Injects a configuration value
*/
function Value(key) {
return function (target, propertyKey) {
const existingValues = Reflect.getMetadata(exports.VALUE_METADATA_KEY, target.constructor) || {};
existingValues[propertyKey] = key;
Reflect.defineMetadata(exports.VALUE_METADATA_KEY, existingValues, target.constructor);
};
}
/**
* Qualifies which bean to inject
*/
function Qualifier(name) {
return function (target, propertyKey) {
const existingQualifiers = Reflect.getMetadata(exports.QUALIFIER_METADATA_KEY, target.constructor) || {};
existingQualifiers[propertyKey] = name;
Reflect.defineMetadata(exports.QUALIFIER_METADATA_KEY, existingQualifiers, target.constructor);
};
}
//# sourceMappingURL=component.js.map