
- 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.
stack-utils
Captures and cleans stack traces.
Extracted from lib/stack.js
in the node-tap
project
Install
$ npm install --save stack-utils
Usage
const StackUtils = require('stack-utils');
const stack = new StackUtils({cwd: process.cwd(), internals: StackUtils.nodeInternals()});
console.log(stack.clean(new Error().stack));
// outputs a beautified stack trace
API
new StackUtils([options])
Creates a new stackUtils
instance.
options
internals
Type: array
of RegularExpression
s
A set of regular expressions that match internal stack stack trace lines which should be culled from the stack trace.
The default is StackUtils.nodeInternals()
, this can be disabled by setting []
or appended using
StackUtils.nodeInternals().concat(additionalRegExp)
. See also ignoredPackages
.
ignoredPackages
Type: array
of string
s
An array of npm modules to be culled from the stack trace. This list will mapped to regular
expressions and merged with the internals
.
Default ''
.
cwd
Type: string
The path to the current working directory. File names in the stack trace will be shown relative to this directory.
wrapCallSite
Type: function(CallSite)
A mapping function for manipulating CallSites before processing. The first argument is a CallSite instance, and the function should return a modified CallSite. This is useful for providing source map support.
StackUtils.nodeInternals()
Returns an array of regular expressions that be used to cull lines from the stack trace that reference common Node.js internal files.
stackUtils.clean(stack, indent = 0)
Cleans up a stack trace by deleting any lines that match the internals
passed to the constructor, and shortening file names relative to cwd
.
Returns a string
with the cleaned up stack (always terminated with a \n
newline character).
Spaces at the start of each line are trimmed, indentation can be added by setting indent
to the desired number of spaces.
stack
Required
Type: string
or an array
of string
s
stackUtils.capture([limit], [startStackFunction])
Captures the current stack trace, returning an array of CallSite
s. There are good overviews of the available CallSite methods here, and here.
limit
Type: number
Default: Infinity
Limits the number of lines returned by dropping all lines in excess of the limit. This removes lines from the stack trace.
startStackFunction
Type: function
The function where the stack trace should start. The first line of the stack trace will be the function that called startStackFunction
. This removes lines from the end of the stack trace.
stackUtils.captureString([limit], [startStackFunction])
Captures the current stack trace, cleans it using stackUtils.clean(stack)
, and returns a string with the cleaned stack trace. It takes the same arguments as stackUtils.capture
.
stackUtils.at([startStackFunction])
Captures the first line of the stack trace (or the first line after startStackFunction
if supplied), and returns a CallSite
like object that is serialization friendly (properties are actual values instead of getter functions).
The available properties are:
line
:number
column
:number
file
:string
constructor
:boolean
evalOrigin
:string
native
:boolean
type
:string
function
:string
method
:string
stackUtils.parseLine(line)
Parses a string
(which should be a single line from a stack trace), and generates an object with the following properties:
line
:number
column
:number
file
:string
constructor
:boolean
evalOrigin
:string
evalLine
:number
evalColumn
:number
evalFile
:string
native
:boolean
function
:string
method
:string
License
MIT © Isaac Z. Schlueter, James Talmage