import type { DynamicModule } from '@nestjs/common'; import type { INestApplication } from '@nestjs/common/interfaces'; import type { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface'; import type { AbstractHttpAdapter } from '@nestjs/core'; import type { RsdkMetadataProvider } from '@rsdk/metadata'; import type { PlatformAppMetadata, PlatformExtendedOptions, PlatformOptions } from './types'; /** * Агрегат для хранения опций приложения, а также методы для конфигурации и запуска приложения */ export declare class PlatformContext { readonly options: PlatformOptions; readonly strictnessOptions?: { skipAssertAppName?: boolean; forceAppName?: string; } | undefined; private readonly logger; private readonly microservices; private readonly httpTransport; private readonly aggregator; private _extendedOptions?; /** * Создаёт контекст проводя базовые проверки * - все транспорты совместимы между собой * - подключенные плагины могут работать с таким набором транспортов * * А также инициализирует конфигурацию согласно требованиям платформы * @param options * @param strictnessOptions */ constructor(options: PlatformOptions, strictnessOptions?: { skipAssertAppName?: boolean; forceAppName?: string; } | undefined); get extendedOptions(): PlatformExtendedOptions; getRsdkMetadataProvider(): Promise; getRoot(): Promise; /** * Get all important information about PlatformApp instance * @returns Readonly metadata */ getMetadata(): Promise>; /** * Сделано прежде всего для совместимости с тестами. * Производит все необходимые проверки и инициализации транспортов, не запускает приложение */ configureApp(app: INestApplication): Promise; /** * Сделано прежде всего для совместимости с тестами * @param app просто запускает приложение (не применяет никакую конфигурацию) */ runConfiguredApplication(app: INestApplication): Promise; /** * Возвращает аргументы для `createNestApplication`. * Немедленно возникает вопрос, а почему бы не просто `createNestApplication` * Ответ: Потому что как минимум в тестах приложение создаётся хитрым способом не поддающемуся логике с точки зрения последовательности решений * * testingModuleRef.createApplication(...context.getNestFactoryCreateOptions()) * NestFactory.create(context.root, ...context.getNestFactoryCreateOptions()) */ getNestFactoryCreateOptions(): Promise<[ httpAdapter: AbstractHttpAdapter, options?: NestApplicationOptions ]>; private assertPluginCompatibility; private assertTransportCompatibility; private getConfigContext; }