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
..

Run Async

npm tests dependencies

Utility method to run a function either synchronously or asynchronously using a series of common patterns. This is useful for library author accepting sync or async functions as parameter. runAsync will always run them as an async method, and normalize the multiple signature.

Installation

npm install --save run-async

Usage

Here's a simple example print the function results and three options a user can provide a function.

var runAsync = require('run-async');

var printAfter = function (func) {
  var cb = function (err, returnValue) {
    console.log(returnValue);
  };
  runAsync(func, cb)(/* arguments for func */);
};

Using this.async

printAfter(function () {
  var done = this.async();

  setTimeout(function () {
    done(null, 'done running with callback');
  }, 10);
});

Returning a promise

printAfter(function () {
  return new Promise(function (resolve, reject) {
    resolve('done running with promises');
  });
});

Synchronous function

printAfter(function () {
  return 'done running sync function';
});

runAsync.cb

runAsync.cb supports all the function types that runAsync does and additionally a traditional callback as the last argument signature:

var runAsync = require('run-async');

// IMPORTANT: The wrapped function must have a fixed number of parameters.
runAsync.cb(function(a, b, cb) {
  cb(null, a + b);
}, function(err, result) {
  console.log(result)
})(1, 2)

If your version of node support Promises natively (node >= 0.12), runAsync will return a promise. Example: runAsync(func)(arg1, arg2).then(cb)

Licence

Copyright (c) 2014 Simon Boudrias (twitter: @vaxilart)
Licensed under the MIT license.