angular-style-injector
Version:
Dependency injection container inspired by Angular's Injector.
34 lines (33 loc) • 1.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.INJECTOR_ERRORS = exports.isSingleProvider = exports.InjectionToken = void 0;
class InjectionToken {
constructor(uniqueDesc) {
this.uniqueDesc = uniqueDesc;
}
get description() {
return this.uniqueDesc;
}
}
exports.InjectionToken = InjectionToken;
const isSingleProvider = (config) => {
return typeof config === 'function' || !('multi' in config) || !config.multi;
};
exports.isSingleProvider = isSingleProvider;
const getTokenName = (token) => {
return typeof token === 'function' ? token.name : token.description;
};
const getInjectorName = (name) => {
return name ? `Injector: ${name}` : '';
};
exports.INJECTOR_ERRORS = {
EMPTY_PROVIDERS_WARN: (name) => {
return `Injector created without any providers. Consider adding providers to enable dependency resolution. ${getInjectorName(name)}`;
},
THROW_PROVIDER_NOT_FOUND: (token, name) => {
return `Injector Error: No provider for ${getTokenName(token)}. ${getInjectorName(name)}`;
},
THROW_DECORATOR_MISSING: (constructorName) => {
return `Injector Error: Cannot instantiate class ${constructorName} because it does not have the @Injectable decorator.`;
},
};
;