@inversifyjs/core
Version:
InversifyJs core package
28 lines • 1.34 kB
JavaScript
import { bindingScopeValues, } from '../../binding/models/BindingScope.js';
import { cacheResolvedValue } from './cacheResolvedValue.js';
import { resolveBindingActivations } from './resolveBindingActivations.js';
export function resolveScoped(getBinding, resolve) {
return (params, arg) => {
const binding = getBinding(arg);
switch (binding.scope) {
case bindingScopeValues.Singleton: {
if (binding.cache.isRight) {
return binding.cache.value;
}
const resolvedValue = resolveBindingActivations(params, binding, resolve(params, arg));
return cacheResolvedValue(binding, resolvedValue);
}
case bindingScopeValues.Request: {
if (params.requestScopeCache.has(binding.id)) {
return params.requestScopeCache.get(binding.id);
}
const resolvedValue = resolveBindingActivations(params, binding, resolve(params, arg));
params.requestScopeCache.set(binding.id, resolvedValue);
return resolvedValue;
}
case bindingScopeValues.Transient:
return resolveBindingActivations(params, binding, resolve(params, arg));
}
};
}
//# sourceMappingURL=resolveScoped.js.map