211 Commits

Author SHA1 Message Date
Franck Royer
8a4e7f5f3c
Connects to a limited number of bootstrap nodes, defaults to 1 2021-09-16 15:16:32 +10:00
Franck Royer
6bd114f551
Release 0.13.0 2021-09-16 14:57:10 +10:00
Franck Royer
6504106a9e
Connects to a limited number of bootstrap nodes, defaults to 1 2021-09-16 10:38:01 +10:00
Franck Royer
ca09c34ac6
Upgrade libp2p libraries 2021-09-03 16:02:22 +10:00
Franck Royer
3bf7e2250c
Release 0.12.0 2021-09-02 16:38:56 +10:00
Franck Royer
a21d641280
Added Waku.waitForConnectedPeer helper
To ensure that we are connected to Waku peers when using the bootstrap
option.
2021-09-02 15:46:23 +10:00
Franck Royer
3c0884a96e
Update changelog 2021-09-02 15:27:39 +10:00
Franck Royer
cfb97b6bde
Allow passing decryption keys to Waku instance
Keys can be set at creation or at run time.
They are passed to `WakuStore` and `WakuRelay` instances.
2021-09-02 15:20:43 +10:00
Franck Royer
911ce5bab7
Allow passing decryption keys to WakuStore instance
To avoid having to pass them at every `queryHistory` call.
2021-09-02 15:17:40 +10:00
Franck Royer
931a414a3c
Allow passing decryption keys in hex string format 2021-09-02 15:13:50 +10:00
Franck Royer
75352abcac
Promote dedicated symmetric key generation API
Using the private key API for symmetric key is confusing.
2021-09-02 15:09:31 +10:00
Franck Royer
880746a0df
Add guide to encrypt messages using version 1 2021-08-26 16:34:29 +10:00
Franck Royer
5af6d84852
Encrypt Public Key Messages using symmetric encryption 2021-08-26 16:12:53 +10:00
Franck Royer
398f34b57f
Fixed Buffer.concat error when using symmetric encryption in the browser 2021-08-26 16:12:53 +10:00
Franck Royer
5b34da6b5f
Both or neither time parameters must be passed
The protocol does not support open-ended time filtering windows. See
https://github.com/status-im/nim-waku/issues/706
2021-08-25 12:14:53 +10:00
Franck Royer
8fce1ad884
Release 0.11.0
### Added
- Examples: New Ethereum Private Message Using Wallet Encryption
  [Web App](./examples/eth-pm-wallet-encryption/README.md)
  example that demonstrates the usage of `eth_encrypt` API (available on
  Metamask) and EIP-712 for typed structured data signing.
- New `bootstrap` option for `Waku.create` to easily connect to Waku
  nodes upon start up.
- Support for `startTime` and `endTime` in Store queries to filter by
  time window as per [21/WAKU2-FTSTORE](https://rfc.vac.dev/spec/21/).

### Changed
- Renamed `discover.getStatusFleetNodes` to
  `discovery.getBootstrapNodes`;
  Changed the API to allow retrieval of bootstrap nodes from other
  sources.
- Examples: Renamed `eth-dm` to `eth-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 `DefaultPubSubTopic` to `waku.ts` and fixed the
  casing.
- **Breaking**: Rename all `pubsubTopic` occurrences to `pubSubTopic`,
  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](https://rfc.vac.dev/spec/22/) protocol.
- `ChatMessage` has been moved from js-waku to web-chat example;
  it is a type used for the [TOY-CHAT](https://rfc.vac.dev/spec/22/) 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.
2021-08-20 12:15:23 +10:00
Franck Royer
ac03a9e54b
Update changelog 2021-08-20 10:54:13 +10:00
Franck Royer
b7693853d2
Added support for startTime and endTime in Store queries 2021-08-20 10:37:58 +10:00
Franck Royer
1d48dc4372
Rename all pubsubTopic occurrences to pubSubTopic 2021-08-20 10:13:02 +10:00
Franck Royer
60290e8d84
Moved DefaultPubSubTopic to waku.ts and fixed the casing
The pubsub topic is used by several protocol, not just relay.
2021-08-20 10:12:55 +10:00
Franck Royer
0c09d60c91
Update changelog 2021-08-19 11:27:03 +10:00
Franck Royer
0b03952542
Update changelog 2021-08-19 11:13:34 +10:00
Franck Royer
9692b4af72
Rename Eth-DM to Eth-PM
"Direct Message" can lead to confusion with "Direct Connection" that
refers to low latency network connections.
2021-08-17 16:06:46 +10:00
Franck Royer
0f0b083586
Update changelog for Eth-PM Wallet Encryption changes 2021-08-13 16:44:29 +10:00
Franck Royer
140791cc91
Provide easy way to bootstrap when creating Waku node 2021-08-13 16:18:00 +10:00
Franck Royer
c3855112d7
Rename getStatusFleetNodes
To make it more generic to allow retrieval of bootstrap nodes from
other sources.
2021-08-13 16:17:15 +10:00
Franck Royer
319f44a0b1
WakuStore.queryHistory throws when encountering an error
Instead of returning a `null` value.
2021-08-09 12:36:24 +10:00
Franck Royer
b422c9a10b
Move contentTopics out the WakuStore.queryHistory's optional params 2021-08-09 12:36:12 +10:00
Franck Royer
ad9d629daa
ChatMessage has been moved from js-waku to web-chat example
It is a type used for the [TOY-CHAT](https://rfc.vac.dev/spec/22/)
 protocol;
js-waku users should not build on top if this toy protocol and instead
design message data structures appropriate to their use case.
2021-08-06 17:25:12 +10:00
Franck Royer
0c3995a810
Remove cli-chat example
The focus of this library is on Web environment; Several examples now
cover usage of Waku Relay and Waku Store; web-chat POC should be
preferred to use the [TOY-CHAT](https://rfc.vac.dev/spec/22/) protocol.
2021-08-06 17:25:11 +10:00
Franck Royer
70c58c8c49
Release 0.10.0
### Added
- Relay and ReactJS guides and examples
  ([#56](https://github.com/status-im/js-waku/issues/56)).

### Changed
- **Breaking**: The `WakuMessage` APIs have been changed to move
  `contentTopic` out of the optional parameters.

### Removed
- Examples (web-chat): Remove broken `/fleet` command.
- **Breaking**: Removed `DefaultContentTopic` as 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.payloadAsUtf8` returning garbage on utf-8 non-ascii
  characters.
- `ChatMessage.payloadAsUtf8` returning garbage on utf-8 non-ascii
  characters.
2021-08-06 16:38:55 +10:00
Franck Royer
1b82c21297
Update changelog 2021-08-05 13:39:42 +10:00
Franck Royer
45dc8f81c9
Fixed ChatMessage.payloadAsUtf8 returning garbage on utf-8 non-ascii 2021-08-02 10:36:50 +10:00
Franck Royer
1f692f1683
Fixed payloadAsUtf8 returning garbage on utf-8 non-ascii characters 2021-08-02 09:51:37 +10:00
Franck Royer
0cfdd34284
Removed DefaultContentTopic
As developers must choose a content topic for their app.
The`WakuMessage` APIs have been changed to move `contentTopic` out of
the optional parameters. Recommendations for content topic can be found
at https://rfc.vac.dev/spec/23/.
2021-07-28 12:03:51 +10:00
Franck Royer
53ef23362c
Remove faulty fleet feature
It does not work as it can lead to infinite loops due to the handling of
the Waku instance. It should disconnect and reconnect to peers instead
of starting a new waku instance.
2021-07-28 11:58:02 +10:00
Franck Royer
9638f6db10
Introduced new relayKeepAlive option
..on `Waku` with a default to 5min to send ping messages over relay
to ensure the relay stream stays open.

This is a workaround until
[js-libp2p#744](https://github.com/libp2p/js-libp2p/issues/744) is done
as there are issues when TCP(?) timeouts and the stream gets closed.
2021-07-27 16:24:04 +10:00
Franck Royer
ea33b9cd8a
Rename keepAlive option to pingKeepAlive
In preparation for introducing a relay keep alive feature.
2021-07-27 16:06:57 +10:00
Franck Royer
36a5a51aa8
Upgrade to libp2p 0.32.0 2021-07-27 14:31:06 +10:00
Franck Royer
c35fe74dad
Release 0.9.0
### Changed
- **Breaking**: Store Response Protobuf changed to align with
  nim-waku v0.5
  ([nim-waku#676](https://github.com/status-im/nim-waku/pull/676)).
2021-07-26 16:49:30 +10:00
Franck Royer
5f7eee394b
Store Response Protobuf change to align with nim-waku
status-im/nim-waku#676
2021-07-26 11:35:08 +10:00
Franck Royer
be007f4839
Ensure there is no infinite loop on error 2021-07-21 15:44:00 +10:00
Franck Royer
92a76b3be0
Support multiple protocol id for relay
Support id of latest nim-waku release 0.4 and current master.
2021-07-21 15:43:30 +10:00
Franck Royer
0753184079
Release 0.8.1
### Added
- Examples (web-chat): New `/fleet` command to switch connection between
  Status prod and test fleets.
- Export `generatePrivateKey` and `getPublicKey` directly from the root.
- Usage of the encryption and signature APIs to the readme.

### Changed
- **Breaking**: Renamed `WakuRelay.(add|delete)PrivateDecryptionKey` to
  `WakuRelay.(add|delete)DecryptionKey` to make it clearer that it
  accepts both symmetric keys and asymmetric private keys.

### Fix
- Align `WakuMessage` readme example with actual code behaviour.
2021-07-16 12:00:43 +10:00
Franck Royer
4f796ab920
Add encryption/signature documentation 2021-07-16 11:19:38 +10:00
Franck Royer
1d4137e2c4
Rename so that it does make dev thinks it's for asymmetric enc only 2021-07-16 10:24:29 +10:00
Franck Royer
07cba4f8ca
Update changelog for readme changes 2021-07-16 09:51:59 +10:00
Franck Royer
a3c4eed656
Update changelog for fleet command 2021-07-16 09:50:44 +10:00
Franck Royer
addf9543a2
Export generatePrivateKey and getPublicKey directly from the root 2021-07-16 09:43:10 +10:00
Franck Royer
3a3e718749
Release 0.8.0
### Added
- `WakuRelay.deleteObserver` to 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/utils` module for easy, dependency-less hex/bytes
  conversions.
- New `peers` and `randomPeer` methods on `WakuStore` and
  `WakuLightPush` to 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.7` and `libp2p-gossipsub@0.10.0` to avoid
  `TextEncoder` errors in ReactJS tests.
- Disable keep alive by default as latest nim-waku release does not
  support ping protocol.
- **Breaking**: Optional parameters for `WakuMessage.fromBytes` and
  `WakuMessage.fromUtf8String` are now passed in a single `Options`
   object.
- **Breaking**: `WakuMessage` static functions are now async to allow
  for encryption and decryption.
- **Breaking**: `WakuMessage` constructor is now private, `from*` and
  `decode*` function should be used.
- `WakuMessage` version 1 is partially supported, enabling asymmetrical
  encryption and signature of messages;
  this can be done by passing keys to `WakuMessage.from*` and
  `WakuMessage.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](https://github.com/status-im/js-waku/issues/214)).

### Fixed
- Disable `keepAlive` if set to `0`.
2021-07-15 12:48:47 +10:00