UNPKG

@inversifyjs/core

Version:

InversifyJs core package

25 lines 1.52 kB
import { updateOwnReflectMetadata } from '@inversifyjs/reflect-metadata-utils'; import { classMetadataReflectKey } from '../../reflectMetadata/data/classMetadataReflectKey.js'; import { getClassMetadata } from '../calculations/getClassMetadata.js'; import { getDefaultClassMetadata } from '../calculations/getDefaultClassMetadata.js'; import { getExtendedConstructorArguments } from '../calculations/getExtendedConstructorArguments.js'; import { getExtendedLifecycle } from '../calculations/getExtendedLifecycle.js'; import { getExtendedProperties } from '../calculations/getExtendedProperties.js'; export function injectFrom(options) { // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type const decorator = (target) => { const baseTypeClassMetadata = getClassMetadata(options.type); updateOwnReflectMetadata(target, classMetadataReflectKey, getDefaultClassMetadata, composeUpdateReflectMetadataCallback(options, baseTypeClassMetadata)); }; return decorator; } function composeUpdateReflectMetadataCallback(options, baseTypeClassMetadata) { const callback = (typeMetadata) => ({ constructorArguments: getExtendedConstructorArguments(options, baseTypeClassMetadata, typeMetadata), lifecycle: getExtendedLifecycle(options, baseTypeClassMetadata, typeMetadata), properties: getExtendedProperties(options, baseTypeClassMetadata, typeMetadata), scope: typeMetadata.scope, }); return callback; } //# sourceMappingURL=injectFrom.js.map