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

Ansi escape codes faster than you can say "Bam bam".
Installation
npm install sisteransi
Usage
const ansi = require('sisteransi');
// or const { cursor } = require('sisteransi');
const p = str => process.stdout.write(str);
// move cursor to 2, 1
p(ansi.cursor.to(2, 1));
// to up, one down
p(ansi.cursor.up(2)+ansi.cursor.down(1));
API
cursor
to(x, y)
Set the absolute position of the cursor. x0
y0
is the top left of the screen.
move(x, y)
Set the position of the cursor relative to its current position.
up(count = 1)
Move cursor up a specific amount of rows. Default is 1
.
down(count = 1)
Move cursor down a specific amount of rows. Default is 1
.
forward(count = 1)
Move cursor forward a specific amount of rows. Default is 1
.
backward(count = 1)
Move cursor backward a specific amount of rows. Default is 1
.
nextLine(count = 1)
Move cursor to the next line a specific amount of lines. Default is 1
.
prevLine(count = 1)
Move cursor to the previous a specific amount of lines. Default is 1
.
left
Move cursor to the left side.
hide
Hide cursor.
show
Show cursor.
save
Save cursor position.
restore
Restore cursor position.
scroll
up(count = 1)
Scroll display up a specific amount of lines. Default to 1
.
down(count = 1)
Scroll display down a specific amount of lines. Default to 1
.
erase
screen
Erase the screen and move the cursor the top left position.
up(count = 1)
Erase the screen from the current line up to the top of the screen. Default to 1
.
down(count = 2)
Erase the screen from the current line down to the bottom of the screen. Default to 1
.
line
Erase the entire current line.
lineEnd
Erase from the current cursor position to the end of the current line.
lineStart
Erase from the current cursor position to the start of the current line.
lines(count)
Erase from the current cursor position up the specified amount of rows.
Credit
This is a fork of ansi-escapes.
License
MIT © Terkel Gjervig