
- 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.
@eslint-community/regexpp
A regular expression parser for ECMAScript.
💿 Installation
$ npm install @eslint-community/regexpp
- require Node@^12.0.0 || ^14.0.0 || >=16.0.0.
📖 Usage
import {
AST,
RegExpParser,
RegExpValidator,
RegExpVisitor,
parseRegExpLiteral,
validateRegExpLiteral,
visitRegExpAST
} from "@eslint-community/regexpp"
parseRegExpLiteral(source, options?)
Parse a given regular expression literal then make AST object.
This is equivalent to new RegExpParser(options).parseLiteral(source)
.
- Parameters:
source
(string | RegExp
) The source code to parse.options?
(RegExpParser.Options
) The options to parse.
- Return:
- The AST of the regular expression.
validateRegExpLiteral(source, options?)
Validate a given regular expression literal.
This is equivalent to new RegExpValidator(options).validateLiteral(source)
.
- Parameters:
source
(string
) The source code to validate.options?
(RegExpValidator.Options
) The options to validate.
visitRegExpAST(ast, handlers)
Visit each node of a given AST.
This is equivalent to new RegExpVisitor(handlers).visit(ast)
.
- Parameters:
ast
(AST.Node
) The AST to visit.handlers
(RegExpVisitor.Handlers
) The callbacks.
RegExpParser
new RegExpParser(options?)
- Parameters:
options?
(RegExpParser.Options
) The options to parse.
parser.parseLiteral(source, start?, end?)
Parse a regular expression literal.
- Parameters:
source
(string
) The source code to parse. E.g."/abc/g"
.start?
(number
) The start index in the source code. Default is0
.end?
(number
) The end index in the source code. Default issource.length
.
- Return:
- The AST of the regular expression.
parser.parsePattern(source, start?, end?, flags?)
Parse a regular expression pattern.
- Parameters:
source
(string
) The source code to parse. E.g."abc"
.start?
(number
) The start index in the source code. Default is0
.end?
(number
) The end index in the source code. Default issource.length
.flags?
({ unicode?: boolean, unicodeSets?: boolean }
) The flags to enable Unicode mode, and Unicode Set mode.
- Return:
- The AST of the regular expression pattern.
parser.parseFlags(source, start?, end?)
Parse a regular expression flags.
- Parameters:
source
(string
) The source code to parse. E.g."gim"
.start?
(number
) The start index in the source code. Default is0
.end?
(number
) The end index in the source code. Default issource.length
.
- Return:
- The AST of the regular expression flags.
RegExpValidator
new RegExpValidator(options)
- Parameters:
options
(RegExpValidator.Options
) The options to validate.
validator.validateLiteral(source, start, end)
Validate a regular expression literal.
- Parameters:
source
(string
) The source code to validate.start?
(number
) The start index in the source code. Default is0
.end?
(number
) The end index in the source code. Default issource.length
.
validator.validatePattern(source, start, end, flags)
Validate a regular expression pattern.
- Parameters:
source
(string
) The source code to validate.start?
(number
) The start index in the source code. Default is0
.end?
(number
) The end index in the source code. Default issource.length
.flags?
({ unicode?: boolean, unicodeSets?: boolean }
) The flags to enable Unicode mode, and Unicode Set mode.
validator.validateFlags(source, start, end)
Validate a regular expression flags.
- Parameters:
source
(string
) The source code to validate.start?
(number
) The start index in the source code. Default is0
.end?
(number
) The end index in the source code. Default issource.length
.
RegExpVisitor
new RegExpVisitor(handlers)
- Parameters:
handlers
(RegExpVisitor.Handlers
) The callbacks.
visitor.visit(ast)
Validate a regular expression literal.
- Parameters:
ast
(AST.Node
) The AST to visit.
📰 Changelog
🍻 Contributing
Welcome contributing!
Please use GitHub's Issues/PRs.
Development Tools
npm test
runs tests and measures coverage.npm run build
compiles TypeScript source code toindex.js
,index.js.map
, andindex.d.ts
.npm run clean
removes the temporary files which are created bynpm test
andnpm run build
.npm run lint
runs ESLint.npm run update:test
updates test fixtures.npm run update:ids
updatessrc/unicode/ids.ts
.npm run watch
runs tests with--watch
option.