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

62 lines
3.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NewCommand = void 0;
const schematics_1 = require("../lib/schematics");
const abstract_command_1 = require("./abstract.command");
class NewCommand extends abstract_command_1.AbstractCommand {
load(program) {
program
.command('new [name]')
.alias('n')
.description('Generate Nest application.')
.option('--directory [directory]', 'Specify the destination directory')
.option('-d, --dry-run', 'Report actions that would be performed without writing out results.', false)
.option('-g, --skip-git', 'Skip git repository initialization.', false)
.option('-s, --skip-install', 'Skip package installation.', false)
.option('-p, --package-manager [packageManager]', 'Specify package manager.')
.option('-l, --language [language]', 'Programming language to be used (TypeScript or JavaScript)', 'TypeScript')
.option('-c, --collection [collectionName]', 'Schematics collection to use', schematics_1.Collection.NESTJS)
.option('--strict', 'Enables strict mode in TypeScript.', false)
.action(async (name, command) => {
const options = [];
const availableLanguages = ['js', 'ts', 'javascript', 'typescript'];
options.push({ name: 'directory', value: command.directory });
options.push({ name: 'dry-run', value: command.dryRun });
options.push({ name: 'skip-git', value: command.skipGit });
options.push({ name: 'skip-install', value: command.skipInstall });
options.push({ name: 'strict', value: command.strict });
options.push({
name: 'packageManager',
value: command.packageManager,
});
options.push({ name: 'collection', value: command.collection });
if (!!command.language) {
const lowercasedLanguage = command.language.toLowerCase();
const langMatch = availableLanguages.includes(lowercasedLanguage);
if (!langMatch) {
throw new Error(`Invalid language "${command.language}" selected. Available languages are "typescript" or "javascript"`);
}
switch (lowercasedLanguage) {
case 'javascript':
command.language = 'js';
break;
case 'typescript':
command.language = 'ts';
break;
default:
command.language = lowercasedLanguage;
break;
}
}
options.push({
name: 'language',
value: command.language,
});
const inputs = [];
inputs.push({ name: 'name', value: name });
await this.action.handle(inputs, options);
});
}
}
exports.NewCommand = NewCommand;