
- 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.
108 lines
3.0 KiB
JSON
108 lines
3.0 KiB
JSON
{
|
|
"name": "ts-api-utils",
|
|
"version": "1.4.3",
|
|
"description": "Utility functions for working with TypeScript's API. Successor to the wonderful tsutils. 🛠️️",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/JoshuaKGoldberg/ts-api-utils"
|
|
},
|
|
"license": "MIT",
|
|
"author": {
|
|
"name": "JoshuaKGoldberg",
|
|
"email": "npm@joshuakgoldberg.com"
|
|
},
|
|
"type": "module",
|
|
"exports": {
|
|
".": {
|
|
"types": {
|
|
"import": "./lib/index.d.ts",
|
|
"require": "./lib/index.d.cts"
|
|
},
|
|
"import": "./lib/index.js",
|
|
"require": "./lib/index.cjs"
|
|
}
|
|
},
|
|
"main": "./lib/index.js",
|
|
"files": [
|
|
"lib/",
|
|
"package.json",
|
|
"LICENSE.md",
|
|
"README.md"
|
|
],
|
|
"scripts": {
|
|
"build": "tsup src/index.ts && cp lib/index.d.ts lib/index.d.cts",
|
|
"docs": "typedoc",
|
|
"docs:serve": "npx --yes http-server docs/generated",
|
|
"format": "prettier \"**/*\" --ignore-unknown",
|
|
"lint": "eslint . .*js --max-warnings 0",
|
|
"lint:docs": "typedoc --validation --treatValidationWarningsAsErrors",
|
|
"lint:knip": "knip",
|
|
"lint:knip:production": "knip --production",
|
|
"lint:md": "markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line",
|
|
"lint:packages": "pnpm dedupe --check",
|
|
"lint:spelling": "cspell \"**\" \".github/**/*\"",
|
|
"prepare": "husky",
|
|
"should-semantic-release": "should-semantic-release --verbose",
|
|
"test": "vitest",
|
|
"tsc": "tsc"
|
|
},
|
|
"lint-staged": {
|
|
"*": "prettier --ignore-unknown --write"
|
|
},
|
|
"devDependencies": {
|
|
"@phenomnomnominal/tsquery": "^6.1.3",
|
|
"@release-it/conventional-changelog": "^9.0.0",
|
|
"@types/eslint": "^8.56.5",
|
|
"@typescript-eslint/eslint-plugin": "^7.3.1",
|
|
"@typescript-eslint/parser": "^8.0.0",
|
|
"@typescript/vfs": "^1.5.0",
|
|
"@vitest/coverage-v8": "^1.3.1",
|
|
"console-fail-test": "^0.5.0",
|
|
"cspell": "^8.6.0",
|
|
"eslint": "^8.57.0",
|
|
"eslint-plugin-deprecation": "^3.0.0",
|
|
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
"eslint-plugin-jsdoc": "^50.0.0",
|
|
"eslint-plugin-jsonc": "^2.13.0",
|
|
"eslint-plugin-markdown": "^5.0.0",
|
|
"eslint-plugin-n": "^17.0.0",
|
|
"eslint-plugin-package-json": "^0.15.0",
|
|
"eslint-plugin-perfectionist": "^2.6.0",
|
|
"eslint-plugin-regexp": "^2.3.0",
|
|
"eslint-plugin-vitest": "^0.4.0",
|
|
"eslint-plugin-yml": "^1.12.2",
|
|
"husky": "^9.0.11",
|
|
"jsonc-eslint-parser": "^2.4.0",
|
|
"knip": "^5.12.3",
|
|
"lint-staged": "^15.2.2",
|
|
"markdownlint": "^0.36.0",
|
|
"markdownlint-cli": "^0.43.0",
|
|
"prettier": "^3.1.1",
|
|
"prettier-plugin-curly": "^0.3.0",
|
|
"prettier-plugin-packagejson": "^2.4.7",
|
|
"release-it": "^17.0.1",
|
|
"sentences-per-line": "^0.2.1",
|
|
"should-semantic-release": "^0.3.0",
|
|
"tsup": "^8.0.2",
|
|
"typedoc": "~0.24.8",
|
|
"typedoc-plugin-coverage": "^3.0.0",
|
|
"typedoc-plugin-custom-validation": "^2.0.2",
|
|
"typedoc-plugin-konamimojisplosion": "^0.0.2",
|
|
"typedoc-plugin-mdn-links": "^4.0.0",
|
|
"typedoc-plugin-versions": "^0.2.4",
|
|
"typescript": "~5.4.5",
|
|
"vitest": "^1.3.1",
|
|
"yaml-eslint-parser": "^1.2.2"
|
|
},
|
|
"peerDependencies": {
|
|
"typescript": ">=4.2.0"
|
|
},
|
|
"packageManager": "pnpm@8.15.9",
|
|
"engines": {
|
|
"node": ">=16"
|
|
},
|
|
"publishConfig": {
|
|
"provenance": true
|
|
}
|
|
}
|