
- 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.
57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
'use strict'
|
|
var color = require('console-control-strings').color
|
|
var ThemeSet = require('./theme-set.js')
|
|
|
|
var themes = module.exports = new ThemeSet()
|
|
|
|
themes.addTheme('ASCII', {
|
|
preProgressbar: '[',
|
|
postProgressbar: ']',
|
|
progressbarTheme: {
|
|
complete: '#',
|
|
remaining: '.'
|
|
},
|
|
activityIndicatorTheme: '-\\|/',
|
|
preSubsection: '>'
|
|
})
|
|
|
|
themes.addTheme('colorASCII', themes.getTheme('ASCII'), {
|
|
progressbarTheme: {
|
|
preComplete: color('bgBrightWhite', 'brightWhite'),
|
|
complete: '#',
|
|
postComplete: color('reset'),
|
|
preRemaining: color('bgBrightBlack', 'brightBlack'),
|
|
remaining: '.',
|
|
postRemaining: color('reset')
|
|
}
|
|
})
|
|
|
|
themes.addTheme('brailleSpinner', {
|
|
preProgressbar: '⸨',
|
|
postProgressbar: '⸩',
|
|
progressbarTheme: {
|
|
complete: '#',
|
|
remaining: '⠂'
|
|
},
|
|
activityIndicatorTheme: '⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏',
|
|
preSubsection: '>'
|
|
})
|
|
|
|
themes.addTheme('colorBrailleSpinner', themes.getTheme('brailleSpinner'), {
|
|
progressbarTheme: {
|
|
preComplete: color('bgBrightWhite', 'brightWhite'),
|
|
complete: '#',
|
|
postComplete: color('reset'),
|
|
preRemaining: color('bgBrightBlack', 'brightBlack'),
|
|
remaining: '⠂',
|
|
postRemaining: color('reset')
|
|
}
|
|
})
|
|
|
|
themes.setDefault({}, 'ASCII')
|
|
themes.setDefault({hasColor: true}, 'colorASCII')
|
|
themes.setDefault({platform: 'darwin', hasUnicode: true}, 'brailleSpinner')
|
|
themes.setDefault({platform: 'darwin', hasUnicode: true, hasColor: true}, 'colorBrailleSpinner')
|
|
themes.setDefault({platform: 'linux', hasUnicode: true}, 'brailleSpinner')
|
|
themes.setDefault({platform: 'linux', hasUnicode: true, hasColor: true}, 'colorBrailleSpinner')
|