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 nowindow
- 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
methodpost
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
inoptions
, do not passthreadId
- Generate UUID for each RPC call to track logic
- Add
Context
andState
classes - Change contracts
Client
andChannel
- 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
inChannel#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
inreceiveBody
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
andinvoke
- Add
redirect
method toClient
with delegation toChannel
- Update dependencies
1.8.2 - 2021-08-06
- Rewrite
Client
methodstartSession
andrestoreSession
to remove access toauth.provider
and work with database structure, move this to application leyer where weknow
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: metarhia/impress#1484
1.5.2 - 2021-02-23
- Update metautil to 3.5.0, change
await timeout
toawait 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.