
- 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.
abort-controller
An implementation of WHATWG AbortController interface.
import AbortController from "abort-controller"
const controller = new AbortController()
const signal = controller.signal
signal.addEventListener("abort", () => {
console.log("aborted!")
})
controller.abort()
💿 Installation
Use npm to install then use a bundler.
npm install abort-controller
Or download from dist
directory.
- dist/abort-controller.mjs ... ES modules version.
- dist/abort-controller.js ... Common JS version.
- dist/abort-controller.umd.js ... UMD (Universal Module Definition) version. This is transpiled by Babel for IE 11.
📖 Usage
Basic
import AbortController from "abort-controller"
// or
const AbortController = require("abort-controller")
// or UMD version defines a global variable:
const AbortController = window.AbortControllerShim
If your bundler recognizes browser
field of package.json
, the imported AbortController
is the native one and it doesn't contain shim (even if the native implementation was nothing).
If you wanted to polyfill AbortController
for IE, use abort-controller/polyfill
.
Polyfilling
Importing abort-controller/polyfill
assigns the AbortController
shim to the AbortController
global variable if the native implementation was nothing.
import "abort-controller/polyfill"
// or
require("abort-controller/polyfill")
API
AbortController
controller.signal
The AbortSignal object which is associated to this controller.
controller.abort()
Notify abort
event to listeners that the signal
has.
📰 Changelog
- See GitHub releases.
🍻 Contributing
Contributing is welcome ❤️
Please use GitHub issues/PRs.
Development tools
npm install
installs dependencies for development.npm test
runs tests and measures code coverage.npm run clean
removes temporary files of tests.npm run coverage
opens code coverage of the previous test with your default browser.npm run lint
runs ESLint.npm run build
generatesdist
codes.npm run watch
runs tests on each file change.