
- 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.
116 lines
3.6 KiB
TypeScript
116 lines
3.6 KiB
TypeScript
import { Hash, type CHashO, type Input } from './utils.ts';
|
|
/** Blake hash options. dkLen is output length. key is used in MAC mode. salt is used in KDF mode. */
|
|
export type Blake2Opts = {
|
|
dkLen?: number;
|
|
key?: Input;
|
|
salt?: Input;
|
|
personalization?: Input;
|
|
};
|
|
/** Class, from which others are subclassed. */
|
|
export declare abstract class BLAKE2<T extends BLAKE2<T>> extends Hash<T> {
|
|
protected abstract compress(msg: Uint32Array, offset: number, isLast: boolean): void;
|
|
protected abstract get(): number[];
|
|
protected abstract set(...args: number[]): void;
|
|
abstract destroy(): void;
|
|
protected buffer: Uint8Array;
|
|
protected buffer32: Uint32Array;
|
|
protected finished: boolean;
|
|
protected destroyed: boolean;
|
|
protected length: number;
|
|
protected pos: number;
|
|
readonly blockLen: number;
|
|
readonly outputLen: number;
|
|
constructor(blockLen: number, outputLen: number);
|
|
update(data: Input): this;
|
|
digestInto(out: Uint8Array): void;
|
|
digest(): Uint8Array;
|
|
_cloneInto(to?: T): T;
|
|
clone(): T;
|
|
}
|
|
export declare class BLAKE2b extends BLAKE2<BLAKE2b> {
|
|
private v0l;
|
|
private v0h;
|
|
private v1l;
|
|
private v1h;
|
|
private v2l;
|
|
private v2h;
|
|
private v3l;
|
|
private v3h;
|
|
private v4l;
|
|
private v4h;
|
|
private v5l;
|
|
private v5h;
|
|
private v6l;
|
|
private v6h;
|
|
private v7l;
|
|
private v7h;
|
|
constructor(opts?: Blake2Opts);
|
|
protected get(): [
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number,
|
|
number
|
|
];
|
|
protected set(v0l: number, v0h: number, v1l: number, v1h: number, v2l: number, v2h: number, v3l: number, v3h: number, v4l: number, v4h: number, v5l: number, v5h: number, v6l: number, v6h: number, v7l: number, v7h: number): void;
|
|
protected compress(msg: Uint32Array, offset: number, isLast: boolean): void;
|
|
destroy(): void;
|
|
}
|
|
/**
|
|
* Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS.
|
|
* @param msg - message that would be hashed
|
|
* @param opts - dkLen output length, key for MAC mode, salt, personalization
|
|
*/
|
|
export declare const blake2b: CHashO;
|
|
export type Num16 = {
|
|
v0: number;
|
|
v1: number;
|
|
v2: number;
|
|
v3: number;
|
|
v4: number;
|
|
v5: number;
|
|
v6: number;
|
|
v7: number;
|
|
v8: number;
|
|
v9: number;
|
|
v10: number;
|
|
v11: number;
|
|
v12: number;
|
|
v13: number;
|
|
v14: number;
|
|
v15: number;
|
|
};
|
|
export declare function compress(s: Uint8Array, offset: number, msg: Uint32Array, rounds: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number): Num16;
|
|
export declare class BLAKE2s extends BLAKE2<BLAKE2s> {
|
|
private v0;
|
|
private v1;
|
|
private v2;
|
|
private v3;
|
|
private v4;
|
|
private v5;
|
|
private v6;
|
|
private v7;
|
|
constructor(opts?: Blake2Opts);
|
|
protected get(): [number, number, number, number, number, number, number, number];
|
|
protected set(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number): void;
|
|
protected compress(msg: Uint32Array, offset: number, isLast: boolean): void;
|
|
destroy(): void;
|
|
}
|
|
/**
|
|
* Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS.
|
|
* @param msg - message that would be hashed
|
|
* @param opts - dkLen output length, key for MAC mode, salt, personalization
|
|
*/
|
|
export declare const blake2s: CHashO;
|
|
//# sourceMappingURL=blake2.d.ts.map
|