
- 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.
104 lines
2.7 KiB
JavaScript
104 lines
2.7 KiB
JavaScript
"use strict";
|
|
module.exports = function(Promise) {
|
|
function PromiseInspection(promise) {
|
|
if (promise !== undefined) {
|
|
promise = promise._target();
|
|
this._bitField = promise._bitField;
|
|
this._settledValueField = promise._isFateSealed()
|
|
? promise._settledValue() : undefined;
|
|
}
|
|
else {
|
|
this._bitField = 0;
|
|
this._settledValueField = undefined;
|
|
}
|
|
}
|
|
|
|
PromiseInspection.prototype._settledValue = function() {
|
|
return this._settledValueField;
|
|
};
|
|
|
|
var value = PromiseInspection.prototype.value = function () {
|
|
if (!this.isFulfilled()) {
|
|
throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a");
|
|
}
|
|
return this._settledValue();
|
|
};
|
|
|
|
var reason = PromiseInspection.prototype.error =
|
|
PromiseInspection.prototype.reason = function () {
|
|
if (!this.isRejected()) {
|
|
throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a");
|
|
}
|
|
return this._settledValue();
|
|
};
|
|
|
|
var isFulfilled = PromiseInspection.prototype.isFulfilled = function() {
|
|
return (this._bitField & 33554432) !== 0;
|
|
};
|
|
|
|
var isRejected = PromiseInspection.prototype.isRejected = function () {
|
|
return (this._bitField & 16777216) !== 0;
|
|
};
|
|
|
|
var isPending = PromiseInspection.prototype.isPending = function () {
|
|
return (this._bitField & 50397184) === 0;
|
|
};
|
|
|
|
var isResolved = PromiseInspection.prototype.isResolved = function () {
|
|
return (this._bitField & 50331648) !== 0;
|
|
};
|
|
|
|
PromiseInspection.prototype.isCancelled = function() {
|
|
return (this._bitField & 8454144) !== 0;
|
|
};
|
|
|
|
Promise.prototype.__isCancelled = function() {
|
|
return (this._bitField & 65536) === 65536;
|
|
};
|
|
|
|
Promise.prototype._isCancelled = function() {
|
|
return this._target().__isCancelled();
|
|
};
|
|
|
|
Promise.prototype.isCancelled = function() {
|
|
return (this._target()._bitField & 8454144) !== 0;
|
|
};
|
|
|
|
Promise.prototype.isPending = function() {
|
|
return isPending.call(this._target());
|
|
};
|
|
|
|
Promise.prototype.isRejected = function() {
|
|
return isRejected.call(this._target());
|
|
};
|
|
|
|
Promise.prototype.isFulfilled = function() {
|
|
return isFulfilled.call(this._target());
|
|
};
|
|
|
|
Promise.prototype.isResolved = function() {
|
|
return isResolved.call(this._target());
|
|
};
|
|
|
|
Promise.prototype.value = function() {
|
|
return value.call(this._target());
|
|
};
|
|
|
|
Promise.prototype.reason = function() {
|
|
var target = this._target();
|
|
target._unsetRejectionIsUnhandled();
|
|
return reason.call(target);
|
|
};
|
|
|
|
Promise.prototype._value = function() {
|
|
return this._settledValue();
|
|
};
|
|
|
|
Promise.prototype._reason = function() {
|
|
this._unsetRejectionIsUnhandled();
|
|
return this._settledValue();
|
|
};
|
|
|
|
Promise.PromiseInspection = PromiseInspection;
|
|
};
|