metaf-resolvable
Version:
Abstract resolvable mixin and injection root for adding DI/IoC to any framework
41 lines • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setResolverFn = exports.resolveRequirements = exports.resolveFor = void 0;
var Resolver_1 = require("./Resolver");
var resolver = new Resolver_1.Resolver();
var application = {
isResolverChanged: false,
resolveFor: resolver.resolveFor.bind(resolver),
resolveRequirements: resolver.resolveRequirements.bind(resolver),
};
/**
* @internal
*/
function resolveFor(classImpl, injections, instance, args) {
if (injections === void 0) { injections = {}; }
return application.resolveFor(classImpl, injections, instance, args);
}
exports.resolveFor = resolveFor;
/**
* @internal
*/
function resolveRequirements(requirements, classImpl) {
return application.resolveRequirements(requirements, classImpl);
}
exports.resolveRequirements = resolveRequirements;
/**
* This function should be used **only** once and **only** for setting another resolution mechanism
* provided by some particular `Resolver` implementation for specific environment (e.g. for `react` app)
* @description Sets function that will be used by `Resolvable` as `resolveFor` and `resolveRequirements` global helpers
* @param resolveForImpl actual implementation of `resolveFor` function to replace default one
* @param requirementsResolveImpl actual implementation of `resolveRequirements` function to replace default one
*/
function setResolverFn(resolveForImpl, requirementsResolveImpl) {
if (application.isResolverChanged)
throw new Error('Your application is trying to setup resolver more than once!');
application.resolveFor = resolveForImpl;
application.resolveRequirements = requirementsResolveImpl;
application.isResolverChanged = true;
}
exports.setResolverFn = setResolverFn;
//# sourceMappingURL=Application.js.map