ts-ioc-container
Version:
Typescript IoC container
20 lines (19 loc) • 639 B
JavaScript
import { isConstructor } from '../utils';
import { DependencyNotFoundError } from '../errors/DependencyNotFoundError';
export function isDependencyKey(token) {
return ['string', 'symbol'].includes(typeof token);
}
export const DEFAULT_CONTAINER_RESOLVER = (scope, keyOrAlias, options) => {
if (isConstructor(keyOrAlias)) {
return scope.resolveByClass(keyOrAlias, options);
}
try {
return scope.resolveOneByKey(keyOrAlias, options);
}
catch (e) {
if (e instanceof DependencyNotFoundError) {
return scope.resolveOneByAlias(keyOrAlias, options);
}
throw e;
}
};