Automated Action 545563e776 Implement comprehensive real-time chat API with NestJS
- Complete NestJS TypeScript implementation with WebSocket support
- Direct messaging (DM) and group chat functionality
- End-to-end encryption with AES encryption and key pairs
- Media file support (images, videos, audio, documents) up to 100MB
- Push notifications with Firebase Cloud Messaging integration
- Mention alerts and real-time typing indicators
- User authentication with JWT and Passport
- SQLite database with TypeORM entities and relationships
- Comprehensive API documentation with Swagger/OpenAPI
- File upload handling with secure access control
- Online/offline status tracking and presence management
- Message editing, deletion, and reply functionality
- Notification management with automatic cleanup
- Health check endpoint for monitoring
- CORS configuration for cross-origin requests
- Environment-based configuration management
- Structured for Flutter SDK integration

Features implemented:
 Real-time messaging with Socket.IO
 User registration and authentication
 Direct messages and group chats
 Media file uploads and management
 End-to-end encryption
 Push notifications
 Mention alerts
 Typing indicators
 Message read receipts
 Online status tracking
 File access control
 Comprehensive API documentation

Ready for Flutter SDK development and production deployment.
2025-06-21 17:13:05 +00:00

108 lines
3.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApplicationConfig = void 0;
class ApplicationConfig {
constructor(ioAdapter = null) {
this.ioAdapter = ioAdapter;
this.globalPrefix = '';
this.globalPrefixOptions = {};
this.globalPipes = [];
this.globalFilters = [];
this.globalInterceptors = [];
this.globalGuards = [];
this.globalRequestPipes = [];
this.globalRequestFilters = [];
this.globalRequestInterceptors = [];
this.globalRequestGuards = [];
}
setGlobalPrefix(prefix) {
this.globalPrefix = prefix;
}
getGlobalPrefix() {
return this.globalPrefix;
}
setGlobalPrefixOptions(options) {
this.globalPrefixOptions = options;
}
getGlobalPrefixOptions() {
return this.globalPrefixOptions;
}
setIoAdapter(ioAdapter) {
this.ioAdapter = ioAdapter;
}
getIoAdapter() {
return this.ioAdapter;
}
addGlobalPipe(pipe) {
this.globalPipes.push(pipe);
}
useGlobalPipes(...pipes) {
this.globalPipes = this.globalPipes.concat(pipes);
}
getGlobalFilters() {
return this.globalFilters;
}
addGlobalFilter(filter) {
this.globalFilters.push(filter);
}
useGlobalFilters(...filters) {
this.globalFilters = this.globalFilters.concat(filters);
}
getGlobalPipes() {
return this.globalPipes;
}
getGlobalInterceptors() {
return this.globalInterceptors;
}
addGlobalInterceptor(interceptor) {
this.globalInterceptors.push(interceptor);
}
useGlobalInterceptors(...interceptors) {
this.globalInterceptors = this.globalInterceptors.concat(interceptors);
}
getGlobalGuards() {
return this.globalGuards;
}
addGlobalGuard(guard) {
this.globalGuards.push(guard);
}
useGlobalGuards(...guards) {
this.globalGuards = this.globalGuards.concat(guards);
}
addGlobalRequestInterceptor(wrapper) {
this.globalRequestInterceptors.push(wrapper);
}
getGlobalRequestInterceptors() {
return this.globalRequestInterceptors;
}
addGlobalRequestPipe(wrapper) {
this.globalRequestPipes.push(wrapper);
}
getGlobalRequestPipes() {
return this.globalRequestPipes;
}
addGlobalRequestFilter(wrapper) {
this.globalRequestFilters.push(wrapper);
}
getGlobalRequestFilters() {
return this.globalRequestFilters;
}
addGlobalRequestGuard(wrapper) {
this.globalRequestGuards.push(wrapper);
}
getGlobalRequestGuards() {
return this.globalRequestGuards;
}
enableVersioning(options) {
if (Array.isArray(options.defaultVersion)) {
// Drop duplicated versions
options.defaultVersion = Array.from(new Set(options.defaultVersion));
}
this.versioningOptions = options;
}
getVersioning() {
return this.versioningOptions;
}
}
exports.ApplicationConfig = ApplicationConfig;