mirror of
https://github.com/logos-messaging/js-waku.git
synced 2026-01-02 13:53:12 +00:00
20 KiB
20 KiB
Changelog
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.
Unreleased
Changed
- Published files moved from
buildtodist/. - Migrate from ts-proto to protons; the latter does not bring Buffer/Long deps, is ESM compatible and remove the need for bufbuild and protoc.
- Move package to
"type": "module", it is now a pure ESM package. - Use ESM code in Mocha and Karma tests.
- Upgrade
dns-querydependency, breaking change onDnsNodeDiscoveryAPI. - Bump many libp2p libraries to their latest version (which usually are pure ESM).
- Replace webpack with parcel for bundling
- Examples: Updated store-js and relay-js to demonstrate usage of ESM bundle in
<script>tag. - Remove need to polyfill
buffer. - breaking: Various API changes. Refer to tests to check proper usage of the new API.
Fix
- size-limit config to test several usages of Waku.
bufferis not needed in the browser.
0.24.0 - 2022-05-27
Added
waitForRemotePeernow accepts atimeoutMsparameter that rejects the promise if it is reached. By default, no timeout is applied.- Experimental support for the Waku Filter protocol (client side) added, currently only works in NodeJS.
Changed
waitForRemotePeerwaits for a Relay peer by default instead of Relay and Store.- Breaking: Removed dupe secp256k1 code, removed some unused APIs.
0.23.0 - 2022-05-19
Added
- Some dependencies that were used but not declared (often transient).
Changed
- Replaced deprecated
multihasheswithmultiformats.
Removed
- No more
assertusage.
0.22.0 - 2022-05-10
Changed
- Replaced
secp256k1and henceellipticdependencies with@noble/secp256k1, reducing package size, number of dependency and removing need forcrypto-browserifypolyfill.
0.21.0 - 2022-05-5
Added
- Support of the
waku2ENR key: When using DNS Discovery, wanted node capabilities (e.g. relay, store) must be passed.
Changed
- Prefer the use of
BigIntover integer literal (npostfix) to facilitate the use of a polyfill.
Fixed
- Declare
it-pipedependency, import as perit-pipe@2.0.0convention.
0.20.0 - 2022-03-29
Changed
- Examples: Add Relay JavaScript example.
- Breaking: Moved utf-8 conversion functions to
utils. - Froze
libp2p-gossipsubto0.13.0as new patch version bring breaking changes.
Fixed
- Replace Base 64 buggy conversion functions with
uint8arrays.
Removed
- Breaking: Removed
equalByteArrays, useuint8arrays/equalsinstead. See changes ineth-pmexample. - Breaking: Removed deprecated utils functions.
0.19.2 - 2022-03-21
Fixed
- Enable usage in NodeJS by fixing
exportsfield and usage of thecryptomodule.
0.19.1 - 2022-03-10
Added
- When using
Waku.create,bootstrap.peersnow accepts an array ofMultiaddr. - Exports
Protocolsfor easy usage withwaitForRemotePeer.
0.19.0 - 2022-03-09
Added
- New
pubsub_topicfield on thecursorof Waku Store queries (#585).
Changed
- Add
exportstopackage.jsonfor NodeJS usage (not officially supported but helpful for experiments).
Fixed
- Handle errors thrown by
bytesToUtf8. WakuMessage.timestampfield must use nanoseconds (was using microseconds).
Removed
- Removed
ecies-gethdependency.
0.18.0 - 2022-02-24
Changed
- Replaced
rlpdependency with@ethersproject/rlp. - Breaking:
staticNoiseKeychanged fromBuffertoUint8Array. - Implement Waku Store 2.0.0-beta4. The
WakuMessage.timestampfield now stores nanoseconds over the wire. - Breaking:
HistoryRPC.createQuerytakesDateinstead ofnumberforstartTimeandendTime.
Removed
base64urlandbigint-bufferdependencies.
0.17.0 - 2022-02-16
Changed
- Breaking: Upgrade
libp2pto0.36.2&libp2p-gossipsubto0.13.0. Some APIs are now async. - docs: Various improvements.
- Ran
npm audit fix. Waku.dialaccepts protocols expected from the peer. Defaults to Waku Relay only.- Deprecated
hexToBuf&bufToHexin favour ofhexToBytes&bytesToHexto move towards removing thebufferpolyfill. - Breaking: Replaced
getNodesFromHostedJsonwithgetPredefinedBootstrapNodes. Now, it uses a hardcoded list of nodes.
Removed
axiosdependency in favour of fetch.
0.16.0 - 2022-01-31
Changed
- Test: Upgrade nim-waku node to v0.7.
- Doc: Renamed "DappConnect" to "Waku Connect".
- Docs: API Docs are now available at https://js-waku.wakuconnect.dev/.
- Breaking: Replace
waitForConnectedPeerwithwaitForRemotePeer; the new method checks that the peer is ready before resolving the promise.
0.15.0 - 2022-01-17
Added
- Implement DNS Discovery as per EIP-1459,
with ENR records as defined in 31/WAKU2-ENR;
Available by passing
{ bootstrap: { enrUrl: enrtree://... } }toWaku.create. - When using
addDecryptionKey, it is now possible to specify the decryption method and the content topics of the messages to decrypt; this is to reduce the number of decryption attempt done and improve performance.
Changed
- Test: Upgrade nim-waku node to v0.6.
- Breaking: Renamed
getBootstrapNodestogetNodesFromHostedJson. - Minimum node version changed to 16.
- Breaking: Changed
Waku.createbootstrap option from{ bootstrap: boolean }to{ bootstrap: BootstrapOptions }. Replace{ boostrap: true }with{ boostrap: { default: true } }to retain same behaviour. - Breaking:
WakuMessage.decodeandWakuMessage.decodeProtonow accepts method and content topics for the decryption key.WakuMessage.decode(bytes, [key])becomesWakuMessage.decode(bytes, [{key: key}]).
Fixed
- Doc: Some broken links.
0.14.2 - 2021-11-30
Changed
- Examples: JS examples uses local ESM folder to replicate behaviour of js-waku publish package.
Fixed
TypeErrorissue related to constructors using js-waku in a JS project (#323).
0.14.1 - 2021-10-22
Fixed
- Issue when importing the
utilsmodule.
0.14.0 - 2021-10-13
Added
- If the
callbackfunction passed toWakuStore.queryHistoryreturnstrue, then no further pages are retrieved from the store. - Use webpack to build UMD bundle of the library, see README for usage.
Changed
- Breaking: Renamed
WakuStore.QueryOptions'sdirectiontopageDirection(and its type) as it only affects the page ordering, not the ordering of messages with the page.
Fixed
- Docs: Ensure that
WakuStore'sQueryOptionsdocumentation is available online.
0.13.1 - 2021-09-21
Fixed
Error: Bootstrap requires a list of peer addresseserror when usingbootstrap: trueinWaku.create.
0.13.0 - 2021-09-16
Changed
- Upgrade libp2p libraries: @chainsafe/libp2p-noise@4.1.1, libp2p@0.32.4, libp2p-gossipsub@0.11.1.
- Connects to a limited number of bootstrap nodes, defaults to 1.
0.12.2 - 2021-09-21
Fixed
- hot fix:
Error: Bootstrap requires a list of peer addresseserror when usingbootstrap: trueinWaku.create.
0.12.1 - 2021-09-16
Changed
- hot fix: Connects to a limited number of bootstrap nodes, defaults to 1.
0.12.0 - 2021-09-2
Added
- Examples (eth-pm): Encrypt Public Key Messages using symmetric encryption.
- Guides: Encrypt messages using Waku Message Version 1.
- Allow passing decryption keys in hex string format.
- Allow passing decryption keys to
WakuStoreinstance to avoid having to pass them at everyqueryHistorycall. - Allow passing decryption keys to
Wakuinstance to avoid having to pass them to bothWakuRelayandWakuStore. Waku.waitForConnectedPeerhelper to ensure that we are connected to Waku peers when using the bootstrap option.
Changed
- Breaking: Moved
startTimeandendTimefor history queries to atimeFilterproperty as both or neither must be passed; passing only one parameter is not supported. - Renamed and promote the usage of
generateSymmetricKey()to generate random symmetric keys. - Improved errors thrown by
WakuStore.queryHistory.
Fixed
- Buffer concat error when using symmetric encryption in the browser.
0.11.0 - 2021-08-20
Added
- Examples: New Ethereum Private Message Using Wallet Encryption Web App
example that demonstrates the usage of
eth_encryptAPI (available on Metamask) and EIP-712 for typed structured data signing. - New
bootstrapoption forWaku.createto easily connect to Waku nodes upon start up. - Support for
startTimeandendTimein Store queries to filter by time window as per 21/WAKU2-FTSTORE.
Changed
- Renamed
discover.getStatusFleetNodestodiscovery.getBootstrapNodes; Changed the API to allow retrieval of bootstrap nodes from other sources. - Examples: Renamed
eth-dmtoeth-pm; "Direct Message" can lead to confusion with "Direct Connection" that refers to low latency network connections. - Examples (eth-pm): Use sign typed data EIP-712 instead of personal sign.
- Upgraded dependencies to remove warning at installation.
- Breaking: Moved
DefaultPubSubTopictowaku.tsand fixed the casing. - Breaking: Rename all
pubsubTopicoccurrences topubSubTopic, across all interfaces.
Removed
- Examples (cli-chat): The focus of this library is Web environment; Several examples now cover usage of Waku Relay and Waku Store making cli-chat example obsolete; web-chat POC should be preferred to use the TOY-CHAT protocol.
ChatMessagehas been moved from js-waku to web-chat example; it is a type used for the TOY-CHAT protocol; js-waku users should not build on top if this toy protocol and instead design message data structures appropriate to their use case.- Unused dependencies & scripts.
0.10.0 - 2021-08-06
Added
- Relay and ReactJS guides and examples (#56).
Changed
- Breaking: The
WakuMessageAPIs have been changed to movecontentTopicout of the optional parameters. - Breaking: Move
contentTopicsout theWakuStore.queryHistory's optional parameters. - Breaking:
WakuStore.queryHistorythrows when encountering an error instead of returning anullvalue.
Removed
- Examples (web-chat): Remove broken
/fleetcommand. - Breaking: Removed
DefaultContentTopicas developers must choose a content topic for their app; recommendations for content topic can be found at https://rfc.vac.dev/spec/23/.
Fixed
WakuMessage.payloadAsUtf8returning garbage on utf-8 non-ascii characters.ChatMessage.payloadAsUtf8returning garbage on utf-8 non-ascii characters.
0.9.0 - 2021-07-26
Changed
- Breaking: Store Response Protobuf changed to align with nim-waku v0.5 (nim-waku#676).
0.8.1 - 2021-07-16
Added
- Examples (web-chat): New
/fleetcommand to switch connection between Status prod and test fleets. - Export
generatePrivateKeyandgetPublicKeydirectly from the root. - Usage of the encryption and signature APIs to the readme.
- Support multiple protocol ids for Waku Relay, allowing interoperability with nim-waku v0.4 and latest master (#238).
Changed
- Breaking: Renamed
WakuRelay.(add|delete)PrivateDecryptionKeytoWakuRelay.(add|delete)DecryptionKeyto make it clearer that it accepts both symmetric keys and asymmetric private keys. - Upgrade libp2p to 0.32.0.
- Breaking: Rename
keepAliveoption topingKeepAlive. - Introduced new
relayKeepAliveoption onWakuwith a default to 59s to send ping messages over relay to ensure the relay stream stays open. This is a workaround until js-libp2p#744 is done as there are issues when TCP(?) timeouts and the stream gets closed (#185, js-libp2p#939)
Fixed
- Align
WakuMessagereadme example with actual code behaviour. - Remove infinite loop when an error with Waku Store is encountered.
0.8.0 - 2021-07-15
Added
WakuRelay.deleteObserverto allow removal of observers, useful when a React component add observers when mounting and needs to delete it when unmounting.- Keep alive feature that pings host regularly, reducing the chance of connections being dropped due to idle.
Can be disabled or default frequency (10s) can be changed when calling
Waku.create. - New
lib/utilsmodule for easy, dependency-less hex/bytes conversions. - New
peersandrandomPeermethods onWakuStoreandWakuLightPushto have a better idea of available peers; Note that it does not check whether Waku node is currently connected to said peers. - Enable passing decryption private keys to
WakuStore.queryHistory. - Test: Introduce testing in browser environment (Chrome) using Karma.
- Add support for Waku Message version 1: Asymmetric encryption, symmetric encryption, and signature of the data.
Changed
- Breaking: Auto select peer if none provided for store and light push protocols.
- Upgrade to
libp2p@0.31.7andlibp2p-gossipsub@0.10.0to avoidTextEncodererrors in ReactJS tests. - Disable keep alive by default as latest nim-waku release does not support ping protocol.
- Breaking: Optional parameters for
WakuMessage.fromBytesandWakuMessage.fromUtf8Stringare now passed in a singleOptionsobject. - Breaking:
WakuMessagestatic functions are now async to allow for encryption and decryption. - Breaking:
WakuMessageconstructor is now private,from*anddecode*function should be used. WakuMessageversion 1 is partially supported, enabling asymmetrical encryption and signature of messages; this can be done by passing keys toWakuMessage.from*andWakuMessage.decode*methods.- Examples (eth-dm): Use Waku Message version 1 encryption scheme instead of
eth-crypto. - Examples (eth-dm): Use Protobuf for direct messages instead of JSON (#214).
Fixed
- Disable
keepAliveif set to0.
0.7.0 - 2021-06-15
Changed
- Test: Upgrade nim-waku node to v0.4.
- Waku Light Push upgraded to
2.0.0-beta1. - Examples (web chat): Catch error if chat message decoding fails.
- Examples (web chat): Do not send message if shift/alt/ctrl is pressed, enabling multiline messages.
0.6.0 - 2021-06-09
Changed
- Breaking: Websocket protocol is not automatically added anymore if the user specifies a protocol in
libp2p.moduleswhen usingWaku.create. - Breaking: Options passed to
Waku.createused to be passed toLibp2p.create; Now, only thelibp2pproperty is passed toLibp2p.create, allowing for a cleaner interface. - Examples (cli chat): Use tcp protocol instead of websocket.
Added
- Enable access to
WakuMessage.timestamp. - Examples (web chat): Use
WakuMessage.timestampas unique key for list items. - Doc: Link to new topic guidelines in README.
- Doc: Link to Waku v2 Toy Chat specs in README.
- Examples (web chat): Persist nick.
- Support for custom PubSub Topics to
Waku,WakuRelay,WakuStoreandWakuLightPush; Passing a PubSub Topic is optional and still defaults to/waku/2/default-waku/proto; JS-Waku currently supports one, and only, PubSub topic per instance.
0.5.0 - 2021-05-21
Added
- Implement Waku v2 Light Push protocol.
- Expose
Directionenum from js-waku root (it was only accessible via the proto module). - Examples (cli chat): Use light push to send messages if
--lightPushis passed. - Examples (cli chat): Print usage if
--helpis passed.
0.4.0 - 2021-05-18
Added
callbackargument toWakuStore.queryHistory(), called as messages are retrieved ; Messages are retrieved using pagination, and it may take some time to retrieve all messages, with thecallbackfunction, messages are processed as soon as they are received.
Changed
- Testing: Upgrade nim-waku node to v0.3.
- Breaking: Modify
WakuStore.queryHistory()to accept oneObjectinstead of multiple individual arguments. getStatusFleetNodesreturn prod nodes by default, instead of test nodes.- Examples (web chat): Connect to prod fleet by default, test fleet for local development.
- Examples (cli chat): Connect to test fleet by default, use
--prodto connect to prod fleet.
Fixed
- Expose
EnviromentandProtocolenums to pass togetStatusFleetNodes.
0.3.0 - 2021-05-15
Added
getStatusFleetNodesto connect to Status' nim-waku nodes.
Changed
- Clarify content topic format in README.md.
Removed
- Unused dependencies.
0.2.0 - 2021-05-14
Added
WakuRelay.getPeersmethod.- Use
WakuRelay.getPeersin web chat app example to disable send button.
Changed
- Enable passing
strings toaddPeerToAddressBook. - Use
addPeerToAddressBookin examples and usage doc. - Settle on
js-wakuname across the board. - Breaking:
RelayDefaultTopicrenamed toDefaultPubsubTopic.
0.1.0 - 2021-05-12
Added
- Add usage section to the README.
- Support of Waku v2 Relay.
- Support of Waku v2 Store.
- Node Chat App example.
- ReactJS Chat App example.
- Typedoc Documentation.