All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Package streamr-broker follows its own versioning and has its own changelog found here.
- Add config option
gapFillStrategy
to control gap filling strategy
8.5.5 - 2023-07-06
- Use pre-built JSON schema validators instead of compiling at run-time
8.5.4 - 2023-06-26
- Add optional config option
encryption.rsaKeyLength
to control the strength of RSA encryption in key-exchange (streamr-dev#1505)
- Improve error messages for contract call errors (streamr-dev#1558)
- Fix error handling in message pipeline (streamr-dev#1479)
- Fix resend freeze issue (streamr-dev#1554)
- Fix error handling in gap fill (streamr-dev#1570)
8.5.3 - 2023-06-07
- Optimize message ordering and gap handling of resends (streamr-dev#1460)
- Clear permissions cache when message decryption fails (streamr-dev#1458)
- Fix default value handling for resend range queries (streamr-dev#1462)
8.5.2 - 2023-05-31
- Fix another TypeScript definitions issue that caused build to fail with
skipLibCheck: false
(streamr-dev#1432)
8.5.1 - 2023-05-29
- Fix TypeScript definitions issue that caused build to fail with
skipLibCheck: false
(streamr-dev#1403) - Fix active gap fill for encrypted streams (streamr-dev#1421)
8.5.0 - 2023-05-10
- Add config option
network.externalIp
to set a custom external IP address for the node (streamr-dev#1357)
8.4.0 - 2023-05-09
- Reduce browser bundle size (streamr-dev#1343)
- Add flag
--raw
(or shorthand-r
) to commandstream subscribe
for raw subscription (streamr-dev#1317) - Add flag
--with-metadata
(or shorthand-m
) to commandstream subscribe
to include metadata in output (streamr-dev#1317)
8.3.1 - 2023-05-03
- Fix duplicate message sending issue in network library (streamr-dev#1290)
- Fix calculation of diagnostic info in network library (streamr-dev#1300)
8.3.0 - 2023-04-26
- Add method
.getDiagnosticInfo
for getting diagnostic information for debugging purposes - Add support for observing stream creation events with
.on('createStream')
- Add optional config option
contracts.pollInterval
- Validate
partitions
when parsing contract metadata - Use default partition count if there is no information in contract metadata
- Handling of
undefined
partition in.createStream
- Fix
stream create
ouput (now valid JSON without extra characters)
8.2.1 - 2023-04-13
- Fix crashing issue in network library when
acceptProxyConnections
is enabled
8.2.0 - 2023-04-11
- Add new option
raw
to method.subscribe
- Add optional parameter to
.searchStreams
for defining order of the result set
- Increase default timeout of stream creation when ENS domains are used
8.1.0 - 2023-03-23
- Encryption keys are re-used automatically
- .addEncryptionKey: 2nd parameter is now
publisherId
instead ofstreamId
8.0.4 - 2023-03-20
- Add optional config option
network.webrtcPortRange
- Add optional config option
network.webrtcMaxMessageSize
8.0.3 - 2023-03-08
- Fix startup error
ERR_PACKAGE_PATH_NOT_EXPORTED
8.0.2 - 2023-02-27
- Optimize browser bundle
8.0.1 - 2023-02-20
- Browser bundle
8.0.0 - 2023-02-20
- Add support for experimental encryption key exchange via Lit Protocol. Enabled by
setting configuration option
encryption.litProtocolEnabled
to be true.
- Proxy enhancements
- Use
.setProxies
instead of.openProxyConnections
and.closeProxyConnections
. - It is possible to set a limit for the number of proxy connections while having a larger set of nodes to choose from.
- Use
- All contract providers are used to query the tracker registry, storage node registry and stream storage registry
- Stream registry contract queries are done in sequence
- Combine
encryption
anddecryption
config option blocks- All options are now in the
encryption
block
- All options are now in the
- Remove deprecated:
gasPriceStrategy
config option fromcontracts.ethereumNetworks
- method parameter of
.waitForStorage()
STREAM_CLIENT_DEFAULTS
constantConfigTest
constantStrictStreamrClientConfig
TypeScript interfaceNetworkNodeConfig
TypeScript interface
- Remove
BigNumber
class export (was only used ingasPriceStrategy
)
7.3.0 - 2023-01-23
- Add optional config option
network.webrtcSendBufferMaxMessageCount
- Add optional config option
network.iceServers.tcp
7.2.1 - 2023-01-12
- Fix
allOf
filter ofclient.searchStreams
7.2.0 - 2022-12-14
- Deprecate TypeScript interface
NetworkNodeConfig
7.1.0 - 2022-11-25
- Deprecate TypeScript interface
StrictStreamrClientConfig
- Deprecate
gasPriceStrategy
config option incontracts.ethereumNetworks
, usehighGasPriceStrategy
instead - Deprecate method parameter of
.waitForStorage()
- Networking issue in which connections could not be formed via WebRTC if STUN or TURN were needed
7.0.3 - 2022-11-23
- Change default list of Ethereum RPC URLs
7.0.2 - 2022-11-22
- Deprecate
STREAM_CLIENT_DEFAULTS
constant - Deprecate
ConfigTest
constant, useCONFIG_TEST
instead
- Remove (non-functional) client configuration option
contracts.ensCacheChainAddress
- Fix CORS issue in browser when interacting with smart contracts
- Remove https://rpc-mainnet.matic.network/ from default list of Polygon RPCs
7.0.1 - 2022-11-18
- Simplify authentication config type to use union instead of
XOR
- Remove TypeScript interfaces and types:
AuthConfig
NetworkConfig
EthereumConfig
SubscriberConfig
DecryptionConfig
CacheConfig
MetricsConfig
MetricsPeriodConfig
TimeoutsConfig
XOR
Without
7.0.0 - 2022-11-15
- The client publishes telemetry metrics to the network at regular intervals (enabled by default, configurable with
metrics
config option) - You can manually update a stream encryption key with method
.updateEncryptionKey()
- Add optional client configuration option
logLevel
to set desired logging level.
- Methods related to publishing and subscribing operate on new interfaces
Message
andMessageMetadata
instead ofStreamMessage
- in
.subscribe()
and.resend()
the data type of 2nd parameter ofonMessage
callback isMessageMetadata
instead ofStreamMessage
- in
.subscribe()
,.resend()
and.resendSubscribe()
the async iterator type isMessage
instead ofStreamMessage
- in
.publish()
andstream.publish()
the return type isMessage
instead ofStreamMessage
- in
.waitForStorage()
parameter type isMessage
instead ofStreamMessage
- in
- Change method signatures of
.publish()
andstream.publish()
- optional metadata is given as an object instead of positional arguments
- new metadata field:
msgChainId
- Config option
auth
must be non-empty (if given) - Encryption keys are delivered in-stream, not in a separate key exchange stream
- new optional config options
decryption.keyRequestTimeout
anddecryption.maxKeyRequestsPerSecond
- notice that key exchange is not backwards compatible with v6 clients
- new optional config options
- Replace method
subscription.onResent(listener)
withsubscription.once('resendComplete', listener)
- Resend supports multiple storage nodes: the data is fetched from a random storage node
- Enforce concurrency limit for smart contract calls (per contract, configurable with
contracts.maxConcurrentCalls
config option) - Enforce presence of message signatures
- all non-signed messages received by client are simply ignored
- Stream metadata now accessed through
stream.getMetadata()
- e.g. usages of
stream.partitions
has changed tostream.getMetadata().partitions
- e.g. usages of
- Method
stream.update()
parameterprops
is no longer optional - Rename method
.getStorageNodesOf()
to.getStorageNodes()
- Rename method
.getStoredStreamsOf()
to.getStoredStreams()
- Rename method
.isStreamStoredInStorageNode()
to.isStoredStream()
- Replaced methods
.createOrUpdateNodeInStorageNodeRegistry()
and.removeNodeFromStorageNodeRegistry()
with single method.setStorageNodeMetadata()
- Change configuration option
network.stunUrls
tonetwork.iceServers
with new format - Move contract configuration options from root level to new
contracts
block - Change storage node assignment event handlers
- replace method
.registerStorageEventListeners(listener)
with.on('addToStorageNode', listener)
and.on('removeFromStorageNode', listener)
- replace method
.unRegisterStorageEventListeners()
with.off('addToStorageNode', listener)
and.off('removeFromStorageNode', listener)
- replace method
- Rename interface
SubscriptionOnMessage
/MessageStreamOnMessage
toMessageListener
- Rename class
GroupKey
toEncryptionKey
- Rename interface
TrackerRegistrySmartContract
toTrackerRegistryContract
- Change interface of
MessageStream
fromAsyncGenerator
toAsyncIterable
- Change return type of
.getStreamPublishers()
,.getStreamSubscribers()
and.searchStreams()
fromAsyncGenerator
toAsyncIterable
- Result set of
.getStoredStreams()
is no longer capped to 1000 streams - Result sets of
.getPermissions()
and.getStorageNodes()
are no longer capped to 100 items
- Deprecate
.getNode()
method and interfaceNetworkNodeStub
- Remove Data Union functionality
- functionality moved to package
@dataunions/client
- functionality moved to package
- Remove method
.getAllStorageNodes()
- use
.getStorageNodes()
without arguments to same effect
- use
- Remove method
.disconnect()
- use
.destroy()
instead
- use
- Remove method
.unsubscribeAll()
- use
.unsubscribe()
without arguments to same effect
- use
- Remove method
stream.toObject()
and interfaceStreamProperties
- use
stream.getMetadata()
to get metadata (doesn't contain stream id) - use interface
StreamMetadata
instead
- use
- Remove properties
subscription.onMessage
,onStart
, andonError
- use
subscription.on('error', cb)
to add an error listener
- use
- Remove configuration option
groupKeys
- use methods
.updateEncryptionKey()
and.addEncryptionKey()
instead
- use methods
- Remove client configuration option
verifySignatures
- Remove client configuration option
client.network.name
- Remove client configuration option
client.debug
- Remove (non-functional) client configuration options
autoConnect
,autoDisconnect
, andmaxRetries
- Remove
AuthenticatedAuthConfig
andUnauthenticatedAuthConfig
interfaces
- Promise
MessageStream
returned from.resend()
does not reject in the case of an encryption key being unavailable - Fix timeout issue of method
stream.addToStorageNode()
when used with storage node cluster - Fix concurrency issue when encryption keys are added in parallel for multiple streams (
SQLITE_ERROR: no such table: GroupKeys
)
- Replace command
storage-node list-stream-parts
withstorage-node list-streams
and change the output format
6.0.10 - 2022-10-03
- Fix
searchStreams
,getStreamSubscribers
, andgetStreamPublishers
timestamp filtering behaviour where valid entries were not appearing in the result set.
6.0.9 - 2022-06-20
- Update
streamr-network
library to include fix tostd::bad_weak_ptr
crashing issue
6.0.8 - 2022-05-31
- Update
streamr-network
library to include propagation fix to proxy stream behaviour
6.0.7 - 2022-05-25
- Update
streamr-network
library to include race condition fix to proxy stream behaviour
6.0.6 - 2022-05-24
- Subscriptions now have a default error handler in case of errors in message processing (e.g. message validation failures). This means that unhandled promise rejections will not occur when not setting an explicit error handler. The default error handler will simply log the error and continue.
6.0.5 - 2022-05-10
- Update
streamr-network
library to include stability fixes
6.0.4 - 2022-04-28
- Update
streamr-network
library that includes a fix to Firefox compatibility
6.0.3 - 2022-04-25
- Fix stream encryption: messages weren't automatically encrypted if the local database didn't contain pre-existing encryption keys for a stream
6.0.2 - 2022-03-04
- Fixed an issue in which method
searchStreams
would throw on invalid metadata (NET-730)
6.0.1 - 2022-02-24
- Fixed an import so that the client successfully loads in a web browser environment (NET-721)