@inversifyjs/core
Version:
InversifyJs core package
39 lines • 1.49 kB
JavaScript
import { isPromise } from '@inversifyjs/common';
import { bindingTypeValues, } from '../../binding/models/BindingType.js';
const CACHE_KEY_TYPE = 'cache';
export function resolveBindingPreDestroy(params, binding) {
if (binding.type === bindingTypeValues.Instance) {
const classMetadata = params.getClassMetadata(binding.implementationType);
const instance = binding.cache
.value;
if (isPromise(instance)) {
return instance.then((instance) => resolveInstancePreDestroyMethods(classMetadata, instance));
}
else {
return resolveInstancePreDestroyMethods(classMetadata, instance);
}
}
}
function resolveInstancePreDestroyMethod(instance, methodName) {
if (typeof instance[methodName] === 'function') {
const result = instance[methodName]();
return result;
}
}
function resolveInstancePreDestroyMethods(classMetadata, instance) {
const preDestroyMethodNames = classMetadata.lifecycle.preDestroyMethodNames;
if (preDestroyMethodNames.size === 0) {
return;
}
let result = undefined;
for (const methodName of preDestroyMethodNames) {
if (result === undefined) {
result = resolveInstancePreDestroyMethod(instance, methodName);
}
else {
result = result.then(() => resolveInstancePreDestroyMethod(instance, methodName));
}
}
return result;
}
//# sourceMappingURL=resolveBindingPreDestroy.js.map