mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-19 06:58:27 +00:00
* feat: initial commit for collaboration feature * add dnd to comments * add positions endpoint * feat: encapsulate all http common logic in http-client * segregate sections and transfer responsibility of state * feat: use-spring to add fade effect ⚡ * fix: open in right * fix: left-right position css * add footer for message * integrate getcomment endpoint * use fromnow for date ago * add dnd * - Add data trasfer object for comment - Add class-validator package to check the response type from client - Add comment repository class for persistance layer - Add comment service with std. http methods - Update controller with all http methods - Update comment module - Fix http-client bug when error is thrown * fix http client bug when error is thrown * feat: add entity thread * feat: add migrations for thread and comment * update entitites * add tid to migration * filter comments by tid(thread_id) * fix: comment migration, add missing column comment * feat: integrate in ui * feat: split comments based on app_id * fix: dnd to correct position * package json engines * engines update * update npm * npm 6 to 7 * fix: add user initials to thread * fix: add firtname lastname to the comments * - Return user object when save thread called - Hide password field from user response - Fix created_at date typo - Instead of fetch all threads on new thread added, add the response to array of existing threads * feat: update ui components * change icon on comments view * ui fixes * fix: close icon close the popover * temp: comment select: false * use currentUser from localStorage * fix: on click outside if comment is open, dont hit addThread * fix: auth token issue in http-client * on drag hide the comment if open * add jwt auth * spec: add test for comment & thread * cleanup: remove console.log * feat: add comment actions * feat: add edit, delete, resolve options * feat: add mentions component * feat: add nestjs websockets * temp * websocket: establish client-server communication * ws: add message listner to comments module in ui * feat: add broadcast method to broadcast new events to all clients 💣 * ws: cleanup 🤙 * fix: remove max height from comment actions * feat: add user mentions, emoji support * fix: add static list of users - temp * update and delete iterations * - Rename comment, thread to comments, threads - Add conditional actions - Show edit, delete only if he is comment owner - Show resolve only if he is thread owner * reset engines * move svgr webpack to deps * fix: ui issues * remove log stmt * refactor: move resolved icon to comment-header * feat: allow comments to be added on top of widgets * feat: add keyboard shortcut * scroll to bottom on comment add * ui fixes * feat: add react toast for notification display * feat: add comment badge * fix: ws connection * fix: ws * remove rvrse * feat: add comment sidebar * feat: add comment right sidebar * fix: add missing foreign key elements * - upgrade typeorm to 0.2.38 - comment sidebar ui - added filter ui * feat: on click of right sidebar notificaiton open the comment box * reset engines * fix: add organization id to the comment and thread module * fix: add current version id * add currentversion id * disable comments if no id present * temp:checking for heroku deploy * fetch app on edit and deploy version * rename current_version_id to app_versions_id * ui fixes * show mentioned user in blue color * add ui changes * add authorization for create thread * change color to blue on click of comment, add auth for other endpoints of thread * update threads, notifications using socket * add auth for comments * remove events spec file * fix duplicate key error * fix notificaitons updation on edit, delete, resolve buttons clicked * update notifications for edit * feature toggle changes for frontend * add check for comments server * add emoji mart package for emoji * add reply count in comment sidebar * subtract 1 from count in comment sidebar * change empty text when no comments available
116 lines
3.7 KiB
TypeScript
116 lines
3.7 KiB
TypeScript
import { Module, OnApplicationBootstrap, OnModuleInit, RequestMethod, MiddlewareConsumer } from '@nestjs/common';
|
|
|
|
import { Connection } from 'typeorm';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import ormconfig from '../ormconfig';
|
|
import { SeedsModule } from './modules/seeds/seeds.module';
|
|
import { SeedsService } from '@services/seeds.service';
|
|
|
|
import { LoggerModule } from 'nestjs-pino';
|
|
import { SentryModule } from './modules/observability/sentry/sentry.module';
|
|
import * as Sentry from '@sentry/node';
|
|
|
|
import { ConfigModule } from '@nestjs/config';
|
|
import { ServeStaticModule } from '@nestjs/serve-static';
|
|
import { CaslModule } from './modules/casl/casl.module';
|
|
import { EmailService } from '@services/email.service';
|
|
import { MetaModule } from './modules/meta/meta.module';
|
|
import { AppController } from './controllers/app.controller';
|
|
import { AuthModule } from './modules/auth/auth.module';
|
|
import { UsersModule } from './modules/users/users.module';
|
|
import { AppConfigModule } from './modules/app_config/app_config.module';
|
|
import { AppsModule } from './modules/apps/apps.module';
|
|
import { FoldersModule } from './modules/folders/folders.module';
|
|
import { FolderAppsModule } from './modules/folder_apps/folder_apps.module';
|
|
import { DataQueriesModule } from './modules/data_queries/data_queries.module';
|
|
import { DataSourcesModule } from './modules/data_sources/data_sources.module';
|
|
import { OrganizationsModule } from './modules/organizations/organizations.module';
|
|
import { CommentModule } from './modules/comments/comment.module';
|
|
import { join } from 'path';
|
|
import { ThreadModule } from './modules/thread/thread.module';
|
|
import { EventsModule } from './events/events.module';
|
|
import { GroupPermissionsModule } from './modules/group_permissions/group_permissions.module';
|
|
|
|
const imports = [
|
|
ConfigModule.forRoot({
|
|
isGlobal: true,
|
|
envFilePath: [`../.env.${process.env.NODE_ENV}`, '../.env'],
|
|
}),
|
|
LoggerModule.forRoot({
|
|
pinoHttp: {
|
|
level: process.env.NODE_ENV !== 'production' ? 'debug' : 'info',
|
|
autoLogging: {
|
|
ignorePaths: ['/api/health'],
|
|
},
|
|
prettyPrint:
|
|
process.env.NODE_ENV !== 'production'
|
|
? {
|
|
colorize: true,
|
|
levelFirst: true,
|
|
translateTime: 'UTC:mm/dd/yyyy, h:MM:ss TT Z',
|
|
}
|
|
: false,
|
|
redact: ['req.headers.authorization'],
|
|
},
|
|
}),
|
|
TypeOrmModule.forRoot(ormconfig),
|
|
AppConfigModule,
|
|
SeedsModule,
|
|
AuthModule,
|
|
UsersModule,
|
|
AppsModule,
|
|
FoldersModule,
|
|
FolderAppsModule,
|
|
DataQueriesModule,
|
|
DataSourcesModule,
|
|
OrganizationsModule,
|
|
CaslModule,
|
|
MetaModule,
|
|
GroupPermissionsModule,
|
|
];
|
|
|
|
if (process.env.SERVE_CLIENT !== 'false') {
|
|
imports.unshift(
|
|
ServeStaticModule.forRoot({
|
|
rootPath: join(__dirname, '../../../', 'frontend/build'),
|
|
})
|
|
);
|
|
}
|
|
|
|
if (process.env.APM_VENDOR == 'sentry') {
|
|
imports.unshift(
|
|
SentryModule.forRoot({
|
|
dsn: process.env.SENTRY_DNS,
|
|
tracesSampleRate: 1.0,
|
|
debug: !!process.env.SENTRY_DEBUG,
|
|
})
|
|
);
|
|
}
|
|
|
|
if (process.env.COMMENT_FEATURE_ENABLE !== 'false') {
|
|
imports.unshift(CommentModule, ThreadModule, EventsModule);
|
|
}
|
|
|
|
@Module({
|
|
imports,
|
|
controllers: [AppController],
|
|
providers: [EmailService, SeedsService],
|
|
})
|
|
export class AppModule implements OnModuleInit, OnApplicationBootstrap {
|
|
constructor(private connection: Connection) {}
|
|
|
|
configure(consumer: MiddlewareConsumer): void {
|
|
consumer.apply(Sentry.Handlers.requestHandler()).forRoutes({
|
|
path: '*',
|
|
method: RequestMethod.ALL,
|
|
});
|
|
}
|
|
|
|
onModuleInit(): void {
|
|
console.log(`Initializing ToolJet server modules 📡 `);
|
|
}
|
|
|
|
onApplicationBootstrap(): void {
|
|
console.log(`Initialized ToolJet server, waiting for requests 🚀`);
|
|
}
|
|
}
|