reactant-di
Version:
A dependency injection lib for Reactant
73 lines (70 loc) • 2.86 kB
JavaScript
import { __values } from './node_modules/tslib/tslib.es6.js';
import 'reflect-metadata';
import { Optional } from './optional.js';
var getMetadata = function (metaKey) {
return Reflect.getMetadata(metaKey, Reflect) || new Map();
};
var setMetadata = function (metaKey, target, serviceIdentifier) {
if (serviceIdentifier === void 0) { serviceIdentifier = target; }
var providesMeta = getMetadata(metaKey);
providesMeta.set(serviceIdentifier || target, target);
Reflect.defineMetadata(metaKey, providesMeta, Reflect);
};
var modulesDeps;
var setModulesDeps = function (deps) {
modulesDeps = deps;
};
var lookupServiceIdentifier = function (target, original, index) {
var e_1, _a;
if (typeof index === 'undefined')
return original;
try {
for (var modulesDeps_1 = __values(modulesDeps), modulesDeps_1_1 = modulesDeps_1.next(); !modulesDeps_1_1.done; modulesDeps_1_1 = modulesDeps_1.next()) {
var modulesDep = modulesDeps_1_1.value;
if (typeof modulesDep === 'object') {
var deps = modulesDep.deps;
if ((modulesDep.provide === target ||
modulesDep.useClass === target) &&
Array.isArray(deps) &&
typeof deps[index] !== 'undefined') {
if (deps[index] instanceof Optional) {
return deps[index].key;
}
return deps[index];
}
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (modulesDeps_1_1 && !modulesDeps_1_1.done && (_a = modulesDeps_1.return)) _a.call(modulesDeps_1);
}
finally { if (e_1) throw e_1.error; }
}
return original;
};
var lookupOptionalIdentifier = function (serviceIdentifier) {
var e_2, _a;
try {
for (var modulesDeps_2 = __values(modulesDeps), modulesDeps_2_1 = modulesDeps_2.next(); !modulesDeps_2_1.done; modulesDeps_2_1 = modulesDeps_2.next()) {
var modulesDep = modulesDeps_2_1.value;
var deps = modulesDep.deps;
if (typeof modulesDep === 'object' &&
Array.isArray(deps) &&
(modulesDep.useClass ||
Object.keys(modulesDep).length === 2)) {
return !!deps.filter(function (dep) { return dep instanceof Optional && dep.identifier === serviceIdentifier; }).length;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (modulesDeps_2_1 && !modulesDeps_2_1.done && (_a = modulesDeps_2.return)) _a.call(modulesDeps_2);
}
finally { if (e_2) throw e_2.error; }
}
return false;
};
export { getMetadata, lookupOptionalIdentifier, lookupServiceIdentifier, setMetadata, setModulesDeps };