fix: app config import

This commit is contained in:
devlikepro committed 2026-08-31 10:44:22 +07:00
1 parent 061601826e
commit 1c5ece5a86
11 files changed
+45 -34

No files matched your search

+1 -1
View File
@@ -1,4 +1,4 @@
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { AppName } from '@waha/apps/app_sdk/apps/apps';
export const SessionExamples = {
basic: {
+28
View File
@@ -0,0 +1,28 @@
import { Type } from '@nestjs/common';
import { BrazilianPhoneNumbersAppConfig } from '@waha/apps/brazilian-phone-numbers/dto/config.dto';
import { CallsAppConfig } from '@waha/apps/calls/dto/config.dto';
import { ChatWootAppConfig } from '@waha/apps/chatwoot/dto/config.dto';
import { McpAppConfig } from '@waha/apps/mcp/dto/config.dto';
export enum AppName {
chatwoot = 'chatwoot',
calls = 'calls',
mcp = 'mcp',
brazilianPhoneNumbers = 'brazilian-phone-numbers',
}
/**
* DTO classes used to transform and validate App.config, by app name.
* Kept separate from the registry so DTOs (imported by core structures) can resolve config classes
* without pulling in every app module (controllers, services, queues) - that creates require cycles.
*/
export const AppConfigClasses: Record<AppName, Type<any>> = {
[AppName.brazilianPhoneNumbers]: BrazilianPhoneNumbersAppConfig,
[AppName.calls]: CallsAppConfig,
[AppName.chatwoot]: ChatWootAppConfig,
[AppName.mcp]: McpAppConfig,
};
export function GetAppConfigClass(name: AppName): Type<any> {
return AppConfigClasses[name] ?? Object;
}
+1 -3
View File
@@ -1,5 +1,5 @@
import { Type } from '@nestjs/common';
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { AppName } from '@waha/apps/app_sdk/apps/apps';
import { GetApp } from '@waha/apps/app_sdk/apps/registry';
import { IAppService } from '@waha/apps/app_sdk/services/IAppService';
@@ -36,8 +36,6 @@ export interface AppModule {
nestjs: AppNestJS;
// Service implementing app lifecycle hooks; must also be listed in 'nestjs.providers'
Service: Type<IAppService>;
// DTO class used to transform and validate App.config
ConfigClass: Type<any>;
}
export function isUniqueApp(name: AppName): boolean {
-6
View File
@@ -1,6 +0,0 @@
export enum AppName {
chatwoot = 'chatwoot',
calls = 'calls',
mcp = 'mcp',
brazilianPhoneNumbers = 'brazilian-phone-numbers',
}
+10 -4
View File
@@ -6,9 +6,12 @@ import {
IsString,
ValidateNested,
} from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { GetApp } from '@waha/apps/app_sdk/apps/registry';
import { ApiExtraModels, ApiProperty } from '@nestjs/swagger';
import {
AppConfigClasses,
AppName,
GetAppConfigClass,
} from '@waha/apps/app_sdk/apps/apps';
export class App<T = any> {
@IsString()
@@ -37,7 +40,10 @@ export class App<T = any> {
if (!name) {
return Object;
}
return GetApp(name)?.ConfigClass ?? Object;
return GetAppConfigClass(name);
})
config: T;
}
// Swagger models for app configs
ApiExtraModels(...Object.values(AppConfigClasses))(App);
-7
View File
@@ -1,14 +1,7 @@
import { ApiExtraModels } from '@nestjs/swagger';
import { AppRuntimeConfig } from '@waha/apps/app_sdk/apps/AppRuntime';
import { GetApps } from '@waha/apps/app_sdk/apps/registry';
import { App } from '@waha/apps/app_sdk/dto/app.dto';
import { AppsDisabled } from '@waha/apps/apps.module.disabled';
import { AppsEnabled } from '@waha/apps/apps.module.enabled';
// Swagger models for app configs come from the registry -
// applied here instead of app.dto.ts to avoid a require cycle through the registry
ApiExtraModels(...GetApps().map((app) => app.ConfigClass))(App);
export const AppsModuleExports = AppRuntimeConfig.Enabled()
? AppsEnabled
: AppsDisabled;
@@ -22,7 +22,7 @@ import {
} from '@waha/apps/brazilian-phone-numbers/dto/config.dto';
import { BrazilianPhoneCorePlugin } from '@waha/apps/brazilian-phone-numbers/plugins/BrazilianPhoneCorePlugin';
import { BrazilianPhoneCacheRepository } from '@waha/apps/brazilian-phone-numbers/storage/BrazilianPhoneCacheRepository';
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { AppName } from '@waha/apps/app_sdk/apps/apps';
import { AppRepository } from '@waha/apps/app_sdk/storage/AppRepository';
import { AppDB } from '@waha/apps/app_sdk/storage/types';
import { SessionManager } from '@waha/core/abc/manager.abc';
@@ -1,7 +1,6 @@
import { AppModule } from '@waha/apps/app_sdk/apps/definition';
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { AppName } from '@waha/apps/app_sdk/apps/apps';
import { BrazilianPhoneNumbersController } from '@waha/apps/brazilian-phone-numbers/api/brazilian-phone-numbers.controller';
import { BrazilianPhoneNumbersAppConfig } from '@waha/apps/brazilian-phone-numbers/dto/config.dto';
import { BrazilianPhoneNumbersAppService } from '@waha/apps/brazilian-phone-numbers/services/BrazilianPhoneNumbersAppService';
const BrazilianPhoneNumbersAppModule: AppModule = {
@@ -19,7 +18,6 @@ const BrazilianPhoneNumbersAppModule: AppModule = {
providers: [BrazilianPhoneNumbersAppService],
},
Service: BrazilianPhoneNumbersAppService,
ConfigClass: BrazilianPhoneNumbersAppConfig,
};
export default BrazilianPhoneNumbersAppModule;
+1 -3
View File
@@ -1,6 +1,5 @@
import { AppModule } from '@waha/apps/app_sdk/apps/definition';
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { CallsAppConfig } from '@waha/apps/calls/dto/config.dto';
import { AppName } from '@waha/apps/app_sdk/apps/apps';
import { CallsAppService } from '@waha/apps/calls/services/CallsAppService';
const CallsAppModule: AppModule = {
@@ -18,7 +17,6 @@ const CallsAppModule: AppModule = {
providers: [CallsAppService],
},
Service: CallsAppService,
ConfigClass: CallsAppConfig,
};
export default CallsAppModule;
+1 -3
View File
@@ -1,7 +1,6 @@
import { AppModule } from '@waha/apps/app_sdk/apps/definition';
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { AppName } from '@waha/apps/app_sdk/apps/apps';
import { RegisterAppQueue } from '@waha/apps/app_sdk/BullUtils';
import { ChatWootAppConfig } from '@waha/apps/chatwoot/dto/config.dto';
import {
ExponentialRetriesJobOptions,
JobRemoveOptions,
@@ -178,7 +177,6 @@ const ChatWootAppModule: AppModule = {
providers: PROVIDERS,
},
Service: ChatWootAppService,
ConfigClass: ChatWootAppConfig,
};
export default ChatWootAppModule;
+1 -3
View File
@@ -1,7 +1,6 @@
import { AppModule } from '@waha/apps/app_sdk/apps/definition';
import { AppName } from '@waha/apps/app_sdk/apps/name';
import { AppName } from '@waha/apps/app_sdk/apps/apps';
import { McpController } from '@waha/apps/mcp/api/mcp.controller';
import { McpAppConfig } from '@waha/apps/mcp/dto/config.dto';
import { McpService } from '@waha/apps/mcp/mcp.service';
import { McpAppService } from '@waha/apps/mcp/services/McpAppService';
@@ -20,7 +19,6 @@ const McpAppModule: AppModule = {
providers: [McpService, McpAppService],
},
Service: McpAppService,
ConfigClass: McpAppConfig,
};
export default McpAppModule;