@inversifyjs/core
Version:
InversifyJs core package
36 lines • 1.68 kB
JavaScript
import { isPromise } from '@inversifyjs/common';
export function resolveBindingServiceActivations(params, serviceIdentifier, value) {
const activations = params.getActivations(serviceIdentifier);
if (activations === undefined) {
return value;
}
if (isPromise(value)) {
return resolveBindingActivationsFromIteratorAsync(params, value, activations[Symbol.iterator]());
}
return resolveBindingActivationsFromIterator(params, value, activations[Symbol.iterator]());
}
function resolveBindingActivationsFromIterator(params, value, activationsIterator) {
let activatedValue = value;
let activationIteratorResult = activationsIterator.next();
while (activationIteratorResult.done !== true) {
const nextActivatedValue = activationIteratorResult.value(params.context, activatedValue);
if (isPromise(nextActivatedValue)) {
return resolveBindingActivationsFromIteratorAsync(params, nextActivatedValue, activationsIterator);
}
else {
activatedValue = nextActivatedValue;
}
activationIteratorResult = activationsIterator.next();
}
return activatedValue;
}
async function resolveBindingActivationsFromIteratorAsync(params, value, activationsIterator) {
let activatedValue = await value;
let activationIteratorResult = activationsIterator.next();
while (activationIteratorResult.done !== true) {
activatedValue = await activationIteratorResult.value(params.context, activatedValue);
activationIteratorResult = activationsIterator.next();
}
return activatedValue;
}
//# sourceMappingURL=resolveBindingServiceActivations.js.map