
- 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.
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { BLAKE2 } from './blake2.ts';
|
|
import { type CHashXO, type HashXOF, type Input } from './utils.ts';
|
|
/**
|
|
* Ensure to use EITHER `key` OR `context`, not both.
|
|
*
|
|
* * `key`: 32-byte MAC key.
|
|
* * `context`: string for KDF. Should be hardcoded, globally unique, and application - specific.
|
|
* A good default format for the context string is "[application] [commit timestamp] [purpose]".
|
|
*/
|
|
export type Blake3Opts = {
|
|
dkLen?: number;
|
|
key?: Input;
|
|
context?: Input;
|
|
};
|
|
/** Blake3 hash. Can be used as MAC and KDF. */
|
|
export declare class BLAKE3 extends BLAKE2<BLAKE3> implements HashXOF<BLAKE3> {
|
|
private chunkPos;
|
|
private chunksDone;
|
|
private flags;
|
|
private IV;
|
|
private state;
|
|
private stack;
|
|
private posOut;
|
|
private bufferOut32;
|
|
private bufferOut;
|
|
private chunkOut;
|
|
private enableXOF;
|
|
constructor(opts?: Blake3Opts, flags?: number);
|
|
protected get(): [];
|
|
protected set(): void;
|
|
private b2Compress;
|
|
protected compress(buf: Uint32Array, bufPos?: number, isLast?: boolean): void;
|
|
_cloneInto(to?: BLAKE3): BLAKE3;
|
|
destroy(): void;
|
|
private b2CompressOut;
|
|
protected finish(): void;
|
|
private writeInto;
|
|
xofInto(out: Uint8Array): Uint8Array;
|
|
xof(bytes: number): Uint8Array;
|
|
digestInto(out: Uint8Array): Uint8Array;
|
|
digest(): Uint8Array;
|
|
}
|
|
/**
|
|
* BLAKE3 hash function. Can be used as MAC and KDF.
|
|
* @param msg - message that would be hashed
|
|
* @param opts - `dkLen` for output length, `key` for MAC mode, `context` for KDF mode
|
|
* @example
|
|
* const data = new Uint8Array(32);
|
|
* const hash = blake3(data);
|
|
* const mac = blake3(data, { key: new Uint8Array(32) });
|
|
* const kdf = blake3(data, { context: 'application name' });
|
|
*/
|
|
export declare const blake3: CHashXO;
|
|
//# sourceMappingURL=blake3.d.ts.map
|