UNPKG

@inversifyjs/core

Version:

InversifyJs core package

39 lines 1.49 kB
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