
- 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.
93 lines
2.6 KiB
TypeScript
93 lines
2.6 KiB
TypeScript
import { VersioningType } from '../enums/version-type.enum';
|
|
/**
|
|
* Indicates that this will work for any version passed in the request, or no version.
|
|
*
|
|
* @publicApi
|
|
*/
|
|
export declare const VERSION_NEUTRAL: unique symbol;
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export type VersionValue = string | typeof VERSION_NEUTRAL | Array<string | typeof VERSION_NEUTRAL>;
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export interface VersionOptions {
|
|
/**
|
|
* Specifies an optional API Version. When configured, methods
|
|
* within the controller will only be routed if the request version
|
|
* matches the specified value.
|
|
*
|
|
* Supported only by HTTP-based applications (does not apply to non-HTTP microservices).
|
|
*
|
|
* @see [Versioning](https://docs.nestjs.com/techniques/versioning)
|
|
*/
|
|
version?: VersionValue;
|
|
}
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export interface HeaderVersioningOptions {
|
|
type: VersioningType.HEADER;
|
|
/**
|
|
* The name of the Request Header that contains the version.
|
|
*/
|
|
header: string;
|
|
}
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export interface UriVersioningOptions {
|
|
type: VersioningType.URI;
|
|
/**
|
|
* Optional prefix that will prepend the version within the URI.
|
|
*
|
|
* Defaults to `v`.
|
|
*
|
|
* Ex. Assuming a version of `1`, for `/api/v1/route`, `v` is the prefix.
|
|
*/
|
|
prefix?: string | false;
|
|
}
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export interface MediaTypeVersioningOptions {
|
|
type: VersioningType.MEDIA_TYPE;
|
|
/**
|
|
* The key within the Media Type Header to determine the version from.
|
|
*
|
|
* Ex. For `application/json;v=1`, the key is `v=`.
|
|
*/
|
|
key: string;
|
|
}
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export interface CustomVersioningOptions {
|
|
type: VersioningType.CUSTOM;
|
|
/**
|
|
* A function that accepts a request object (specific to the underlying platform, ie Express or Fastify)
|
|
* and returns a single version value or an ordered array of versions, in order from HIGHEST to LOWEST.
|
|
*
|
|
* Ex. Returned version array = ['3.1', '3.0', '2.5', '2', '1.9']
|
|
*
|
|
* Use type assertion or narrowing to identify the specific request type.
|
|
*/
|
|
extractor: (request: unknown) => string | string[];
|
|
}
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
interface VersioningCommonOptions {
|
|
/**
|
|
* The default version to be used as a fallback when you did not provide some
|
|
* version to `@Controller()` nor `@Version()`.
|
|
*/
|
|
defaultVersion?: VersionOptions['version'];
|
|
}
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export type VersioningOptions = VersioningCommonOptions & (HeaderVersioningOptions | UriVersioningOptions | MediaTypeVersioningOptions | CustomVersioningOptions);
|
|
export {};
|