forked from ToolJet/ToolJet
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodule.ts
More file actions
156 lines (150 loc) · 7.75 KB
/
module.ts
File metadata and controls
156 lines (150 loc) · 7.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import { OnModuleInit, RequestMethod, MiddlewareConsumer, DynamicModule } from '@nestjs/common';
import { GetConnection } from './database/getConnection';
import { ShutdownHook } from './schedulers/shut-down.hook';
import { AppModuleLoader } from './loader';
import * as Sentry from '@sentry/node';
import { getTooljetEdition } from '@helpers/utils.helper';
import { TOOLJET_EDITIONS } from '@modules/app/constants';
import { InstanceSettingsModule } from '@modules/instance-settings/module';
import { AbilityModule } from '@modules/ability/module';
import { LicenseModule } from '@modules/licensing/module';
import { AppConfigModule } from '@modules/configs/module';
import { OrganizationsModule } from '@modules/organizations/module';
import { MetaModule } from '@modules/meta/module';
import { SessionModule } from '@modules/session/module';
import { EncryptionModule } from '@modules/encryption/module';
import { AppController } from './controller';
import { ProfileModule } from '@modules/profile/module';
import { SMTPModule } from '@modules/smtp/module';
import { UsersModule } from '@modules/users/module';
import { FilesModule } from '@modules/files/module';
import { RolesModule } from '@modules/roles/module';
import { GroupPermissionsModule } from '@modules/group-permissions/module';
import { OrganizationUsersModule } from '@modules/organization-users/module';
import { OnboardingModule } from '@modules/onboarding/module';
import { AppEnvironmentsModule } from '@modules/app-environments/module';
import { DataSourcesModule } from '@modules/data-sources/module';
import { LoginConfigsModule } from '@modules/login-configs/module';
import { AuthModule } from '@modules/auth/module';
import { ThemesModule } from '@modules/organization-themes/module';
import { SetupOrganizationsModule } from '@modules/setup-organization/module';
import { FoldersModule } from '@modules/folders/module';
import { WhiteLabellingModule } from '@modules/white-labelling/module';
import { EmailModule } from '@modules/email/module';
import { OrganizationConstantModule } from '@modules/organization-constants/module';
import { FolderAppsModule } from '@modules/folder-apps/module';
import { AppsModule } from '@modules/apps/module';
import { VersionModule } from '@modules/versions/module';
import { DataQueriesModule } from '@modules/data-queries/module';
import { PluginsModule } from '@modules/plugins/module';
import { TemplatesModule } from '@modules/templates/module';
import { ImportExportResourcesModule } from '@modules/import-export-resources/module';
import { TooljetDbModule } from '@modules/tooljet-db/module';
import { WorkflowsModule } from '@modules/workflows/module';
import { AiModule } from '@modules/ai/module';
import { CustomStylesModule } from '@modules/custom-styles/module';
import { AppPermissionsModule } from '@modules/app-permissions/module';
import { EventsModule } from '@modules/events/module';
import { ExternalApiModule } from '@modules/external-apis/module';
import { GitSyncModule } from '@modules/git-sync/module';
import { AppGitModule } from '@modules/app-git/module';
import { OrganizationPaymentModule } from '@modules/organization-payments/module';
import { CrmModule } from '@modules/CRM/module';
import { ClearSSOResponseScheduler } from '@modules/auth/schedulers/clear-sso-response.scheduler';
import { SampleDBScheduler } from '@modules/data-sources/schedulers/sample-db.scheduler';
import { SessionScheduler } from '@modules/session/scheduler';
import { AuditLogsClearScheduler } from '@modules/audit-logs/scheduler';
import { ModulesModule } from '@modules/modules/module';
import { EmailListenerModule } from '@modules/email-listener/module';
import { InMemoryCacheModule } from '@modules/inMemoryCache/module';
export class AppModule implements OnModuleInit {
static async register(configs: { IS_GET_CONTEXT: boolean }): Promise<DynamicModule> {
// Load static and dynamic modules
const modules = await AppModuleLoader.loadModules(configs);
/**
* ████████████████████████████████████████████████████████████████████
* █ █
* █ MODULE IMPORTS █
* █ █
* █ CE/EE/Cloud Implementations should be handled in each module. █
* █ █
* ████████████████████████████████████████████████████████████████████
*/
const baseImports = [
await AbilityModule.forRoot(configs),
await LicenseModule.forRoot(configs),
await FilesModule.register(configs),
await EncryptionModule.register(configs),
await InstanceSettingsModule.register(configs),
await FoldersModule.register(configs),
await FolderAppsModule.register(configs),
await SMTPModule.register(configs),
await RolesModule.register(configs),
await GroupPermissionsModule.register(configs),
await AppConfigModule.register(configs),
await SessionModule.register(configs),
await MetaModule.register(configs),
await OrganizationsModule.register(configs),
await ProfileModule.register(configs),
await UsersModule.register(configs),
await OrganizationUsersModule.register(configs),
await OnboardingModule.register(configs),
await AppEnvironmentsModule.register(configs),
await OrganizationConstantModule.register(configs),
await DataSourcesModule.register(configs),
await LoginConfigsModule.register(configs),
await AuthModule.register(configs),
await ThemesModule.register(configs),
await SetupOrganizationsModule.register(configs),
await WhiteLabellingModule.register(configs),
await EmailModule.register(configs),
await AppsModule.register(configs),
await VersionModule.register(configs),
await DataQueriesModule.register(configs),
await PluginsModule.register(configs),
await ImportExportResourcesModule.register(configs),
await TemplatesModule.register(configs),
await TooljetDbModule.register(configs),
await ModulesModule.register(configs),
await AiModule.register(configs),
await CustomStylesModule.register(configs),
await AppPermissionsModule.register(configs),
await EventsModule.register(configs),
await ExternalApiModule.register(configs),
await GitSyncModule.register(configs),
await AppGitModule.register(configs),
await CrmModule.register(configs),
await OrganizationPaymentModule.register(configs),
await EmailListenerModule.register(configs),
await InMemoryCacheModule.register(configs),
];
const conditionalImports = [];
if (getTooljetEdition() !== TOOLJET_EDITIONS.Cloud) {
conditionalImports.push(await WorkflowsModule.register(configs));
}
const imports = [...baseImports, ...conditionalImports];
return {
module: AppModule,
imports: [...modules, ...imports],
controllers: [AppController],
providers: [
ShutdownHook,
GetConnection,
ClearSSOResponseScheduler,
SampleDBScheduler,
SessionScheduler,
AuditLogsClearScheduler,
],
};
}
configure(consumer: MiddlewareConsumer): void {
consumer.apply(Sentry.Handlers.requestHandler()).forRoutes({
path: '*',
method: RequestMethod.ALL,
});
}
onModuleInit(): void {
console.log(`Version: ${globalThis.TOOLJET_VERSION}`);
console.log(`Initializing server modules 📡 `);
}
}