import type { DynamicModule } from '@nestjs/common'; import { LoggerFactory } from '@rsdk/logging'; import type { PlatformRawGlobalMetadata } from '@rsdk/metadata'; import { PLATFORM_RAW_GLOBAL_METADATA_SCOPE, RsdkMetadataProvider, } from '@rsdk/metadata'; export class RsdkMetadataGlobalModule { static logger = LoggerFactory.create(RsdkMetadataGlobalModule); static async fromProvider( rsdkMetadataProvider: RsdkMetadataProvider, ): Promise { const resources = rsdkMetadataProvider.get( PLATFORM_RAW_GLOBAL_METADATA_SCOPE, ); const imports = resources.map(({ value }) => value); RsdkMetadataGlobalModule.logger.trace('extracted imports: ', { imports, }); return { global: true, imports, module: RsdkMetadataGlobalModule, providers: [ { provide: RsdkMetadataProvider, useValue: rsdkMetadataProvider, }, ], exports: [...imports, RsdkMetadataProvider], }; } }