yasui
Version:
Lightweight Express-based framework for REST and web APIs
44 lines • 4.26 kB
JavaScript
import { ReflectMetadata, defineMetadata, getMetadata } from '../utils/reflect.js';
export function Injectable() {
return function (target) {
defineMetadata(ReflectMetadata.INJECTABLE, true, target);
};
}
export function Inject(token) {
return function (target, propertyKey, index) {
if (propertyKey) {
const methodName = String(propertyKey);
const methodsDeps = getMetadata(ReflectMetadata.METHOD_INJECTED_DEPS, target) || {};
if (!methodsDeps[methodName]) {
methodsDeps[methodName] = {};
}
if (token) {
methodsDeps[methodName][index] = token;
}
else {
const paramTypes = getMetadata(ReflectMetadata.DESIGN_PARAM_TYPES, target, methodName) || [];
methodsDeps[methodName][index] = paramTypes[index];
}
defineMetadata(ReflectMetadata.METHOD_INJECTED_DEPS, methodsDeps, target);
}
else if (token) {
const deps = getMetadata(ReflectMetadata.PRE_INJECTED_DEPS, target) || {};
deps[index] = token;
defineMetadata(ReflectMetadata.PRE_INJECTED_DEPS, deps, target);
}
};
}
export function Scope(scope) {
return function (target, propertyKey, index) {
if (propertyKey) {
const methodName = String(propertyKey);
const scopes = getMetadata(ReflectMetadata.DEP_SCOPES, target, methodName) || {};
scopes[index] = scope;
defineMetadata(ReflectMetadata.DEP_SCOPES, scopes, target, methodName);
}
const scopes = getMetadata(ReflectMetadata.DEP_SCOPES, target) || {};
scopes[index] = scope;
defineMetadata(ReflectMetadata.DEP_SCOPES, scopes, target);
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9pbmplY3RhYmxlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFuRixNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLFVBQVUsTUFBZ0I7UUFDL0IsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQztBQUNKLENBQUM7QUFRRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQWM7SUFDbkMsT0FBTyxVQUNMLE1BQWMsRUFDZCxXQUF3QyxFQUN4QyxLQUFhO1FBRWIsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM3QixXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDekMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0YsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFrQixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELGNBQWMsQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVFLENBQUM7YUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDcEIsY0FBYyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFRRCxNQUFNLFVBQVUsS0FBSyxDQUFDLEtBQWE7SUFDakMsT0FBTyxVQUNMLE1BQWMsRUFDZCxXQUF3QyxFQUN4QyxLQUFhO1FBRWIsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqRixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLGNBQWMsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDIn0=