metacom
Version:
Communication protocol for Metarhia stack with rpc, events, binary streams, memory and db access
345 lines (248 loc) • 11.4 kB
Markdown
# Changelog
## [Unreleased][unreleased]
## [3.2.6][] - 2024-09-20
- Migrate tests from metatests to Node.js native test runner
- Update dependencies, and remove metatests
- Update Node.js engine requirement to >=18, update CI
## [3.2.5][] - 2025-05-25
- Add node.js 23 and 24 to CI
- Update dependencies
## [3.2.4][] - 2024-09-01
- Update eslint to 9.x and prettier with configs
- Add node.js 22 to CI
## [3.2.3][] - 2024-04-27
- Fixed ping packets
- Update dependencies
## [3.2.2][] - 2024-03-26
- Fixed MetaReadable and MetaWritable
## [3.2.1][] - 2024-02-12
- Added call limits with queue to hooks
- Fix conversion of custom thrown exceptions for response to client
- Update dependencies
## [3.2.0][] - 2023-12-10
- Remove `EventEmitter` polyfill, use polyfill from metautil 5.0.0
- Stop using deprecated `fetch` polyfill from metautil
- Do not add `online` event if we have no `window`
- Implement simple websocket server
- Fixed MetaReadable stream
- Fixed timeouts in unittests
- Package maintenance: update dependencies and eslint and CI configs
## [3.1.2][] - 2023-10-22
- Fix: proc timeout reached error detection
## [3.1.1][] - 2023-10-09
- Fix: do not serve API over http and ws on balancing port
## [3.1.0][] - 2023-10-06
- Decompose bind to init and listen to handle EADDRINUSE and escalate error
- Fix buffer length calculation for unicode strings
- Drop node.js 16 and 19 and update dependencies
## [3.0.6][] - 2023-09-13
- Log requests to static
- Template pages for HTTP errors
## [3.0.5][] - 2023-09-08
- Check static handler class
- Update dependencies
## [3.0.4][] - 2023-08-20
- Bugfixes: event packets parsing and prevent echo
## [3.0.3][] - 2023-08-19
- Bugfixes: sendEvent call, checking http or ws transport
## [3.0.2][] - 2023-08-14
- Bugfixes: MetaReadable, binary packages parsing and serialization
- Refactoring: Transport API unification
## [3.0.1][] - 2023-06-22
- Add `MetacomUnit` method `post` not emitting `*`
- Fix invalid event packets parsing in server client
- Package maintenance: update code style and dependencies
## [3.0.0][] - 2023-06-30
- Implement metacom3 specs: https://github.com/metarhia/Contracts/blob/master/doc/Metacom.md
- Implement metacom streams
- Websocket bidirectional streaming
- Multiple simultaneous streams
- Interaction with nodejs streams
- File streaming
- Pass certain port for `Server` in `options`, do not pass `threadId`
- Generate UUID for each RPC call to track logic
- Add `Context` and `State` classes
- Change contracts `Client` and `Channel`
- Fix setTimeout and setInterval leaks
- Support pipe readable (for large files)
- Support SNI callback for TLS transport
- Support Content-Range, Accept-Ranges, Content-Length headers
- Move `serveStatic` to impress
- Serve static from balancing port
- Use `fetch` polyfill from metautil
- Convert package_lock.json to lockfileVersion 2
- Unify `EventEmitter` implementation
- Drop node.js 14 support, add node.js 20
- Add `node:` prefix for all internal modules
- Update dependencies
## [2.0.7][] - 2022-05-09
- Fix client to support falsy results parsing
- Add reading cors.origin from server config in impress
- Removed duplicated error handling
- Remove duplicated EventEmitter in MetacomInterface
## [2.0.6][] - 2022-04-26
- Fix missing channel handling in Client
- Fix default `httpCode` in `Channel#error()` calls
- Add custom http headers for rpc hooks
- Prevent return after semaphore enter
## [2.0.5][] - 2022-03-18
- Fix clients Map memory leak
- Add static create method for server-side Client
- Add open and close events in browser-side Client
- Add common content types (MIME) to collection
- Pass custom errors with `code` thrown or returned from handlers
- Update dependencies
## [2.0.4][] - 2021-10-12
- Return index.html not only from the root folder
- Fix parse broken JSON packets
- Fix detecting ping packets (empty objects)
- Fix error logging and passing to client
- Validation `call` identifier type
## [2.0.3][] - 2021-09-23
- Remove `toString` in `receiveBody` to be compatible with ws
## [2.0.2][] - 2021-09-11
- Rework Channel and Server
- Decompose Channel to WsChannel and HttpChannel
- Move event handlers from Server to WsChannel and HttpChannel
- Return after error to avoid double reply and logging
- Update typings
## [2.0.1][] - 2021-09-03
- Simplify Channel/Session machinery
- Collections: sessions, channels
- Decompose: extract transport and static modules
- Fix: empty packet structure error
## [2.0.0][] - 2021-08-19
- Support GET requests and change calls: `hook` and `invoke`
- Add `redirect` method to `Client` with delegation to `Channel`
- Update dependencies
## [1.8.2][] - 2021-08-06
- Rewrite `Client` method `startSession` and `restoreSession` to remove access
to `auth.provider` and work with database structure, move this to application
leyer where we `know` auth specific DB structure
- Move types to package root
## [1.8.1][] - 2021-07-10
- Move split and parseParams to metautil
- Fix custom errors over http transport
- Remove timeout in Server duplicated in rpc call (Procedure class)
## [1.8.0][] - 2021-07-07
- Add http hooks with custom method names
- Fix Metacom typings
- Improve url parsing
## [1.7.5][] - 2021-07-01
- Fix Metacom typings
- Update dependencies
## [1.7.4][] - 2021-06-26
- Update Metacom exports
- Throw errors on wrong configs
- Update Client implementation in /distr
## [1.7.3][] - 2021-06-08
- Fix passing validation error to the client
## [1.7.2][] - 2021-06-06
- Move @types/ws to dev dependencies to reduce prod module size
## [1.7.1][] - 2021-06-03
- Update dependencies for security reasons
## [1.7.0][] - 2021-05-24
- Fix method access check
- Rename id field to support new auth
## [1.6.1][] - 2021-04-13
- Fix and improve typings
- Publish typings to npm package
## [1.6.0][] - 2021-03-15
- Implement port re-bind
- Disable Nagle's algorithm if configured
- Read timeouts from config (remove hardcoded constants)
- Refactor and improve code style
- Add typing for Metacom class
## [1.5.3][] - 2021-02-28
- Marshal timeout error to the client side
- Get user ip from Client class: `context.client.ip`
- Change queue configuration: https://github.com/metarhia/impress/issues/1484
## [1.5.2][] - 2021-02-23
- Update metautil to 3.5.0, change `await timeout` to `await delay`
- Remove channel from collection on connections close
- Add Client event: 'close' for http and websockets
- Delegate server and browser socket on 'error' handler
## [1.5.1][] - 2021-02-19
- Fix restore session for Channel
## [1.5.0][] - 2021-02-19
- Move Semaphore and timeout to metautil
- Decompose Channel.prototype.rpc
- Use new impress class Procedure
## [1.4.0][] - 2021-02-17
- Fix error passing to client side
- Call application.invoke to execute methods with schema validation
- Don't pass context to `application.getMethod`
- Pass context to application.invoke
- Now proc is a struct, not just method with injected context
## [1.3.1][] - 2021-02-09
- Revert to lock-file version 1
- Fix memory leak: remove sessions from collection by token
## [1.3.0][] - 2021-02-07
- Fix channel collection memory leak and duplication
- Change `Server` constrictor signature to `(config, application)`
- Fix spelling in method: Channel.startSession
## [1.2.0][] - 2021-02-04
- Move cookies operations from impress/auth
- Move sessions from impress/auth
## [1.1.0][] - 2021-01-08
- Use metautil instead of metarhia/common
## [1.0.0][] - 2020-12-21
- Metacom protocol implementation for client and server
- Support ws, wss, http and https transports
- Automatic reconnect on network errors or disconnect
- Server-side introspection and Client-side scaffolding
- Domain errors passing to browser client code
- Support ping interval (default 60s) and call timeout (default 7s)
- Reconnect active connections on browser `onlene` event
## [0.0.0][] - 2018-04-14
Module stub v0.0.0 and all before 1.0.0 are experiments with syntactic and
binary structures and multiple different ideas originated from JSTP and old
protocols like USP and CLEAR.
[unreleased]: https://github.com/metarhia/metacom/compare/v3.2.6...HEAD
[3.2.6]: https://github.com/metarhia/metacom/compare/v3.2.5...v3.2.6
[3.2.5]: https://github.com/metarhia/metacom/compare/v3.2.4...v3.2.5
[3.2.4]: https://github.com/metarhia/metacom/compare/v3.2.3...v3.2.4
[3.2.3]: https://github.com/metarhia/metacom/compare/v3.2.2...v3.2.3
[3.2.2]: https://github.com/metarhia/metacom/compare/v3.2.1...v3.2.2
[3.2.1]: https://github.com/metarhia/metacom/compare/v3.2.0...v3.2.1
[3.2.0]: https://github.com/metarhia/metacom/compare/v3.1.2...v3.2.0
[3.1.2]: https://github.com/metarhia/metacom/compare/v3.1.1...v3.1.2
[3.1.1]: https://github.com/metarhia/metacom/compare/v3.1.0...v3.1.1
[3.1.0]: https://github.com/metarhia/metacom/compare/v3.0.6...v3.1.0
[3.0.6]: https://github.com/metarhia/metacom/compare/v3.0.5...v3.0.6
[3.0.5]: https://github.com/metarhia/metacom/compare/v3.0.4...v3.0.5
[3.0.4]: https://github.com/metarhia/metacom/compare/v3.0.3...v3.0.4
[3.0.3]: https://github.com/metarhia/metacom/compare/v3.0.2...v3.0.3
[3.0.2]: https://github.com/metarhia/metacom/compare/v3.0.1...v3.0.2
[3.0.1]: https://github.com/metarhia/metacom/compare/v3.0.0...v3.0.1
[3.0.0]: https://github.com/metarhia/metacom/compare/v2.0.7...v3.0.0
[2.0.7]: https://github.com/metarhia/metacom/compare/v2.0.6...v2.0.7
[2.0.6]: https://github.com/metarhia/metacom/compare/v2.0.5...v2.0.6
[2.0.5]: https://github.com/metarhia/metacom/compare/v2.0.4...v2.0.5
[2.0.4]: https://github.com/metarhia/metacom/compare/v2.0.3...v2.0.4
[2.0.3]: https://github.com/metarhia/metacom/compare/v2.0.2...v2.0.3
[2.0.2]: https://github.com/metarhia/metacom/compare/v2.0.1...v2.0.2
[2.0.1]: https://github.com/metarhia/metacom/compare/v2.0.0...v2.0.1
[2.0.0]: https://github.com/metarhia/metacom/compare/v1.8.1...v2.0.0
[1.8.2]: https://github.com/metarhia/metacom/compare/v1.8.1...v1.8.2
[1.8.1]: https://github.com/metarhia/metacom/compare/v1.8.0...v1.8.1
[1.8.0]: https://github.com/metarhia/metacom/compare/v1.7.5...v1.8.0
[1.7.5]: https://github.com/metarhia/metacom/compare/v1.7.4...v1.7.5
[1.7.4]: https://github.com/metarhia/metacom/compare/v1.7.3...v1.7.4
[1.7.3]: https://github.com/metarhia/metacom/compare/v1.7.2...v1.7.3
[1.7.2]: https://github.com/metarhia/metacom/compare/v1.7.1...v1.7.2
[1.7.1]: https://github.com/metarhia/metacom/compare/v1.7.0...v1.7.1
[1.7.0]: https://github.com/metarhia/metacom/compare/v1.6.1...v1.7.0
[1.6.1]: https://github.com/metarhia/metacom/compare/v1.6.0...v1.6.1
[1.6.0]: https://github.com/metarhia/metacom/compare/v1.5.3...v1.6.0
[1.5.3]: https://github.com/metarhia/metacom/compare/v1.5.2...v1.5.3
[1.5.2]: https://github.com/metarhia/metacom/compare/v1.5.1...v1.5.2
[1.5.1]: https://github.com/metarhia/metacom/compare/v1.5.0...v1.5.1
[1.5.0]: https://github.com/metarhia/metacom/compare/v1.4.0...v1.5.0
[1.4.0]: https://github.com/metarhia/metacom/compare/v1.3.1...v1.4.0
[1.3.1]: https://github.com/metarhia/metacom/compare/v1.3.0...v1.3.1
[1.3.0]: https://github.com/metarhia/metacom/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/metarhia/metacom/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/metarhia/metacom/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/metarhia/metacom/compare/v0.0.0...v1.0.0
[0.0.0]: https://github.com/metarhia/metacom/releases/tag/v0.0.0