UNPKG

@inversifyjs/core

Version:

InversifyJs core package

28 lines 1.5 kB
import { isPromise } from '@inversifyjs/common'; import { InversifyCoreError } from '../../error/models/InversifyCoreError.js'; import { InversifyCoreErrorKind } from '../../error/models/InversifyCoreErrorKind.js'; import { ClassElementMetadataKind } from '../../metadata/models/ClassElementMetadataKind.js'; export function setInstanceProperties(resolveServiceNode) { return (params, instance, node) => { const propertyAssignmentPromises = []; for (const [propertyKey, propertyNode] of node.propertyParams) { const metadata = node.classMetadata.properties.get(propertyKey); if (metadata === undefined) { throw new InversifyCoreError(InversifyCoreErrorKind.resolution, `Expecting metadata at property "${propertyKey.toString()}", none found`); } if (metadata.kind !== ClassElementMetadataKind.unmanaged && propertyNode.bindings !== undefined) { instance[propertyKey] = resolveServiceNode(params, propertyNode); if (isPromise(instance[propertyKey])) { propertyAssignmentPromises.push((async () => { instance[propertyKey] = await instance[propertyKey]; })()); } } } if (propertyAssignmentPromises.length > 0) { return Promise.all(propertyAssignmentPromises).then(() => undefined); } }; } //# sourceMappingURL=setInstanceProperties.js.map