Commit Graph

341 Commits

Author SHA1 Message Date
Franck Royer 2b1a6dafea
Skip nim-waku interop tests
ecies-parity does not provide the same ECIES that waku:
ecies-parity uses a shared hmac of `[0,0]` whereas waku uses `[]`.

Work is needed to find or create a new library.
2021-07-09 15:50:17 +10:00
Franck Royer 8cd5a52eba
Provide hex/bytes utils as part of js-waku 2021-07-09 15:50:17 +10:00
Franck Royer 22c716e0e6
Add API to generate keys 2021-07-09 15:50:16 +10:00
Franck Royer f123cd7e62
Test asymmetric encryption against nim-waku 2021-07-09 15:50:16 +10:00
Franck Royer f95d9aec3c
Add version 1 support to waku relay, test decryption against nim-waku 2021-07-09 15:50:16 +10:00
Franck Royer acdc032253
Simplify code 2021-07-09 15:50:16 +10:00
Franck Royer 34e6ac5247
Add version 1 support to WakuMessage 2021-07-09 15:50:15 +10:00
Franck Royer 2266f31d30
Move optional parameters to a single `Options` object. 2021-07-09 15:50:15 +10:00
Franck Royer 381333347e
Remove dupe code 2021-07-09 15:50:15 +10:00
Franck Royer f2a2233c77
Add encrypt/decrypt asymmetric 2021-07-09 15:50:15 +10:00
Franck Royer f97dc4de81
Implement Waku Message Version 1 encoding and signature 2021-07-09 14:49:09 +10:00
Franck Royer 7b5c8d6094
Move waku_message to dedicated folder 2021-07-09 14:49:09 +10:00
Franck Royer c3b726cb99
Remove deprecated call 2021-07-09 14:49:08 +10:00
Franck Royer aaf3b1867e
Disable keep alive by default as latest nim-waku release does not
support ping protocol.
2021-07-05 09:40:07 +10:00
Franck Royer 354dcd66a5
Constructor is more appropriate when comparing function signatures 2021-07-02 13:52:50 +10:00
Franck Royer 370a347ff2
Actually disable keep alive if set to 0 2021-07-02 10:51:58 +10:00
Franck Royer 8cecfc205b
Use plain websocket in tests
Thanks to the libp2p upgrade, waku actually tries to listen to a
secure websocket. Using plain websocket for now, testing secure
websocket is tracked with #50.
2021-06-22 14:11:38 +10:00
Franck Royer 6cb92dd4b9
Upgrade to latest libp2p versions
And few other packages
2021-06-22 13:21:23 +10:00
Franck Royer dbab0cc582
Unnecessary and create conflicts due to disparity of version
Between libp2p-interfaces from libp2p and libp2p-gossipsub.
2021-06-22 10:08:02 +10:00
Franck Royer 381fc8b82c
Add keep alive feature
Using libp2p ping protocol.
2021-06-21 09:46:41 +10:00
Franck Royer e3b4a42822
Add keep alive feature
Using libp2p ping protocol.
2021-06-21 09:46:29 +10:00
Franck Royer 939b5fb20a
Auto select peer if none provided for store and light push protocols 2021-06-16 23:51:20 +10:00
Franck Royer 60eb473047
Add `WakuRelay.deleteObserver` to allow removal of observers
Useful when a React component add observers when mounting and needs to
delete it when unmounting.
2021-06-16 16:37:04 +10:00
Franck Royer af1e97fafe
Use Set to facilitate removal of observers 2021-06-16 16:37:04 +10:00
Franck Royer bc544c8e0b
Update Light Push protocol string to match nim-waku v0.4 2021-06-11 14:38:08 +10:00
Franck Royer 5ce0717f05
Enable passing a custom pubsub topic
Note that we currently only support one, and only one, pubsub topic for
a given instance across the codebase. The PubSub topic needs to be set
when instantiating the Waku* classes.

At this stage, we believe that most DApp will use, and only use, the
default PubSub topic. Some application want to use an alternative topic
but not use the default one so this behaviour should be fine. See #174
for details.
2021-06-09 15:00:03 +10:00
Franck Royer f0f14f9995
Rename type before introducing CreateOptions 2021-06-09 15:00:03 +10:00
Franck Royer eb521b4dbd
Extract subscription logic from start method 2021-06-09 15:00:02 +10:00
Franck Royer d8629b7fbc
Define type for WakuRelay create options 2021-06-09 15:00:02 +10:00
Franck Royer f17a008278
Separate the libp2p create options from Waku's 2021-06-09 15:00:02 +10:00
Franck Royer 9e64eec2a6
Enable test encoding and decoding of WakuMessage.timestamp 2021-05-28 22:35:59 +10:00
Franck Royer 3055881c57
Proto message is expected, not the wrapping class 2021-05-28 15:59:57 +10:00
Franck Royer b13ecdd45f
Do not inherit doc for Waku Relay
As it clutters the documentation and at this stage we do not expect
users to use inherited methods.
2021-05-21 11:47:17 +10:00
Franck Royer c347ec28b4
Ensure that no unnecessary js node are started for interop tests
Indeed, the beforeEach/afterEach methods are called for all tests in the
block, including interop tests.
2021-05-20 15:49:13 +10:00
Franck Royer ed69122ac3
Remove warning 2021-05-19 12:55:39 +10:00
Franck Royer fb7e9f2b9e
Get messages from store in chronological order 2021-05-19 12:29:29 +10:00
Franck Royer de3aea626a
Implement Light Push protocol 2021-05-19 12:29:29 +10:00
Franck Royer 2cd87b561d
Expose `Enviroment` & `Protocol` enums to pass to `getStatusFleetNodes` 2021-05-18 13:45:49 +10:00
Franck Royer 537a2b73a7
Use prod nodes by default instead of test 2021-05-18 13:26:42 +10:00
Franck Royer 243b6629c3
Add callback option to store query 2021-05-17 16:32:34 +10:00
Franck Royer 4b6fe84392
Use one object as we are increasing the number of parameters 2021-05-17 16:32:33 +10:00
Franck Royer 79bef35460
Add and use `getStatusFleetNodes` to connect to Status' wakunodes 2021-05-15 19:52:05 +10:00
Franck Royer a8d4d494f8
Add getPeers method
To know if relay messages would be published.
2021-05-13 20:48:33 +10:00
Franck Royer eb9955314c
Align terminology with specs
In specs, this is referenced as a `pubsubTopic`.
2021-05-13 20:48:30 +10:00
Franck Royer 065593b0cf
Revert naming to js-waku
To align with go-waku and nim-waku and keep bors working.
2021-05-13 20:27:38 +10:00
Franck Royer 6f7c1e0ca3
Enhance addPeerToAddressBook
So that consumer does not need to import multiaddr and peer-id.
2021-05-13 13:42:40 +10:00
Franck Royer 19e265c490
Remove unneeded variable 2021-05-13 12:30:13 +10:00
Franck Royer fda65ca83b
Fix documentation 2021-05-13 12:30:13 +10:00
Franck Royer 7c6730b4a3
Remove `declare` keyword which removes the values from generated JS 2021-05-11 14:05:13 +10:00
Franck Royer 40fd7ff365
Use Typedoc comment style 2021-05-11 09:06:22 +10:00
Franck Royer 50eaa39fec
Add debug statement in tests
Also enable debug logs in CI.
2021-05-10 20:18:26 +10:00
Franck Royer 3663ce260d
Rework exports for an easy use of the library 2021-05-10 16:41:58 +10:00
Franck Royer e91f7933c9
Pass proto in constructor
Makes the relation between the protobuf class and the wrapper more
direct. Conversion only happens at creates or on getters.
2021-05-10 16:29:25 +10:00
Franck Royer 3b7fc44419
Remove `Proto` suffix
Manage with namespace instead.
2021-05-10 15:53:23 +10:00
Franck Royer ba6b67cc53
Enable observers to filter by contentTopic 2021-05-10 14:54:08 +10:00
Franck Royer de3dcd9e22
Improve test readability
By avoiding buffer comparison.
2021-05-10 14:10:37 +10:00
Franck Royer 71a5b23bd2
Add observer interface that directly pass waku messages 2021-05-10 12:38:44 +10:00
Franck Royer ace5f2776f
Prefer camel case for module constants 2021-05-10 12:38:44 +10:00
Franck Royer cbe9559096
Clarify what methods should be used 2021-05-10 12:38:44 +10:00
Franck Royer 21414ad55e
Upgrade nim-waku to latest version 2021-05-07 11:30:36 +10:00
Franck Royer d19be03862
Ensure that rpc call to send messages is successful 2021-05-07 11:30:35 +10:00
Franck Royer 775a288a5c
Log more around usage of waku store 2021-05-07 10:41:38 +10:00
Franck Royer abd5709f86
Move cli chat to examples folder 2021-05-05 10:53:40 +10:00
Franck Royer 906d118d7d
Remove empty file 2021-05-05 09:59:36 +10:00
Franck Royer 19d6459883
Move chat message in js-waku 2021-05-05 09:59:19 +10:00
Franck Royer de57b2691e
Only the `result` property is ever used 2021-05-04 11:12:32 +10:00
Franck Royer 9e30627e2b
Force return types to be specified
Makes it easier to use the library. Best to enforce this early on.
2021-05-04 11:12:32 +10:00
bors[bot] 3ae782d3b4
Merge #118 #121 #122
118: Clean up WakuMessage API r=D4nte a=D4nte



121: Always trigger store query at connection r=D4nte a=D4nte

If no new messages are received, the rendering does not change
as dupe messages are filtered out.

122: Use provided API r=D4nte a=D4nte



Co-authored-by: Franck Royer <franck@status.im>
2021-05-04 00:26:12 +00:00
Franck Royer d0020744b4
Use provided API 2021-05-04 10:23:31 +10:00
Franck Royer 0ff0e6ee7b
Clean up WakuMessage API 2021-05-03 16:26:02 +10:00
Franck Royer 1016e85f70
Enable pubsub topic filter in history queries
Resolves #78
2021-04-29 16:52:55 +10:00
Franck Royer 5664c14743
Check subscribers until it finds one 2021-04-29 16:38:50 +10:00
Franck Royer 0270003556
Increase test timeouts 2021-04-29 16:07:37 +10:00
Franck Royer 2c66f86e91
Upgrade libp2p packages 2021-04-29 12:06:38 +10:00
Franck Royer 69a3f73ee6
Self emit to see own messages 2021-04-22 14:47:43 +10:00
Franck Royer 09fa8a0447
Must pass filter.all to connect to ip4 ws peer 2021-04-22 10:39:05 +10:00
Franck Royer df5a4f8326
waku is undefined 2021-04-21 16:17:32 +10:00
Franck Royer afba3210e9
Upgrade libp2p to 0.31.0-rc.3 2021-04-21 16:17:32 +10:00
Franck Royer bf11d76a93
Log in error raised by question 2021-04-21 09:57:21 +10:00
Franck Royer dd0a843770
Upgrade ts-proto to fix long dependency warning/error 2021-04-20 16:11:53 +10:00
Franck Royer ee6226bd32
Update waku store as per the latest spec 2021-04-20 15:38:40 +10:00
Franck Royer 0241d9edf3
Catch nick promise failure 2021-04-20 15:32:10 +10:00
Franck Royer 4542e01f0e
Check in protobuf generated files
So that developers do not have to install protobuf suite by default.
2021-04-20 15:32:10 +10:00
Franck Royer 6ee404c3ce
Skip the js-nim-js test as it fails in CI 2021-04-20 15:26:01 +10:00
Franck Royer eec55b7b71
Add sleep for failing tests + logging 2021-04-20 15:15:18 +10:00
Franck Royer 818a8256e7
Wait for identify protocol to finish 2021-04-20 10:34:23 +10:00
Franck Royer 00e303ee0a
Increase test timeout 2021-04-20 10:13:13 +10:00
Franck Royer e233ad8da4
Increase test timeouts 2021-04-20 09:38:30 +10:00
Franck Royer e0debac165
Subscribe to default topic when starting, Remove dual Waku relay classes 2021-04-16 11:25:08 +10:00
Franck Royer bc1ba3f4e4
Increase test timeout 2021-04-15 15:24:01 +10:00
Franck Royer 896462340a
Simplify API
At this stage, if waku relay is mounted then we always want to subscribe
to default topic.

We can re-introduce the flexibility once we know what matters to the user.

Resolves #17.
2021-04-15 14:45:14 +10:00
Franck Royer 9a305033bc
Use peerStore event to determine if identify is done 2021-04-15 14:44:35 +10:00
Franck Royer 503157401e
Allow passing transports, enable websocket transport 2021-04-15 13:56:07 +10:00
Franck Royer 1a813256e9
Start Waku first
So that even if the user does not enter a nick, the chat app
already acts as a waku node.
2021-04-15 13:56:07 +10:00
Franck Royer 31a45bf44e
Group imports 2021-04-15 13:56:07 +10:00
Franck Royer 1a4407b4f5
Increase test timeout 2021-04-15 13:56:06 +10:00
Franck Royer 4b31a6aaba
Wait for identify protocol to finish when dialing
Removes most `delay()`.
2021-04-13 22:43:13 +10:00
Franck Royer b38634fd14
Remove warnings 2021-04-13 15:25:00 +10:00
Franck Royer ee8db698b3
Allow constant condition for loops 2021-04-13 15:03:14 +10:00
Franck Royer 0e9b0b1b74
Ensure store waku calls returns messages in chronological order
Oldest at the start of the list.
2021-04-13 15:02:56 +10:00
Franck Royer 433f0432b3
Use pagination to retrieve all results from store 2021-04-13 15:02:53 +10:00
Franck Royer 1e10eeb5f5
Change API to directly return array of Waku Messages 2021-04-13 12:51:04 +10:00
Franck Royer 59df437490
test: History messages through several pages are retrieved 2021-04-13 11:47:15 +10:00
Franck Royer ef409bd89b
Upgrade to latest nim-waku commit 2021-04-13 10:36:22 +10:00
Franck Royer e534e0a4c8
Do not rely on nim-waku trace logs for test purposes 2021-04-13 09:51:41 +10:00
Franck Royer e9d51a6c57
Implement Waku store protocol 2021-04-09 16:54:30 +10:00
Franck Royer 79a9520348
Test cleanup 2021-04-09 16:05:43 +10:00
Franck Royer eb9f1c154b
Remove noisy test logs 2021-04-09 16:05:02 +10:00
Franck Royer 78292c471a
Enable nim-waku trace logs 2021-04-09 11:23:00 +10:00
Franck Royer 27540fae47
Remove dupe test 2021-04-09 10:47:29 +10:00
Franck Royer 5bc6173cb8
Upgrade nim-waku 2021-04-08 22:32:36 +10:00
Franck Royer ff8e96b60c
Clean up imports 2021-04-01 18:27:15 +11:00
Franck Royer ff9bfa7f0a
Override gossipsub function that checked for gossipsub peers
Instead, we need to check for waku relay peers.
2021-04-01 16:58:26 +11:00
Franck Royer b487e7803b
Returns waku relay peers, not all waku peers across the various protocols 2021-04-01 16:44:28 +11:00
Franck Royer 433a490dec
Move waku relay codec and default topic to constants module 2021-04-01 16:41:49 +11:00
Franck Royer 7bd48b6220
Move all relay files under common folder 2021-04-01 16:37:05 +11:00
Franck Royer ed5a363096
Ensure that heartbeat checks for waku, and not gossipsub, peers 2021-04-01 16:18:06 +11:00
Franck Royer 95b88d2815
Check against gossipsub protocol was also done in publish
Meaning it would sometimes fail to recognize another waku node at
a subscriber of a topic, depending on timing with the `subscribe`
call.
2021-04-01 15:47:34 +11:00
Franck Royer 5a967ecbcc
Avoid possible type name clash between js-waku and consuming apps
`Message` is a very generic name and JS does not offer strong namespace
boundaries. Using `WakuMessage` avoid name clashing with classes
of the consumer app.
2021-04-01 11:18:35 +11:00
Franck Royer f15f4ff7f2
Reference GitHub issues 2021-04-01 11:15:51 +11:00
Franck Royer 58838ec898
Custom nick 2021-04-01 11:01:15 +11:00
Franck Royer cca1d685dc
Implement chat message protobuf to support nick and time handles 2021-04-01 11:01:15 +11:00
Franck Royer 0b282be882
Move chat folder inside src 2021-04-01 11:01:15 +11:00
Franck Royer c3cf6462cc
Pass listening addresses as argument 2021-04-01 11:01:14 +11:00
Franck Royer d2f1995f3e
Can receive message over internet 2021-04-01 11:01:14 +11:00
Franck Royer 2b450cf2dd
Include js>nim>js test 2021-04-01 11:01:14 +11:00
Franck Royer 086623243e
Remove `StrictSign` hack 2021-04-01 11:01:14 +11:00
Franck Royer f2c1c92353
Chat app example 2021-04-01 11:01:14 +11:00
Franck Royer e167f4fba4
Decode payload to utf8 string 2021-03-29 15:08:31 +11:00
Franck Royer 46c41dc50f
Test connection triggered from js and add API 2021-03-29 15:08:31 +11:00
Franck Royer c4d3c7fb47
Update nim-waku, `0x` now optional in RPC requests 2021-03-29 14:25:03 +11:00
Franck Royer a57f361b1e
Print log file name on failure 2021-03-26 13:09:44 +11:00
Franck Royer 1d248351c1
Wait a bit before subscribing 2021-03-26 13:09:44 +11:00
Franck Royer e99d1c012c
Add logs to track nim-waku process 2021-03-26 13:09:44 +11:00
Franck Royer e7ad81afee
Re-add Publish test 2021-03-26 09:37:01 +11:00
Franck Royer 4f58bde054
Add js to js subscribe test 2021-03-26 09:37:01 +11:00
Franck Royer 4473ad4cc7
Add tests where js initialize the connection to nim 2021-03-25 20:47:48 +11:00
Franck Royer c491b65edc
Handle nim-waku process exit & error 2021-03-25 20:09:33 +11:00
Franck Royer ee0c63eba3
Improve helper function for log name 2021-03-25 15:49:07 +11:00
Franck Royer e89b4ca437
Override Gossipsub.join` function to consider waku peers
Instead of gossipsub peers, this allows js to publish messages to nim.
2021-03-24 12:22:00 +11:00
Franck Royer 71f3e9aa1f
Name logs with test name only 2021-03-24 12:22:00 +11:00
Franck Royer 2486071708
Reduce entropy usage in tests
When playing around with tests frameworks, it was noticed that noise
was using entropy that lead to handles remaining open at the end of the
test run.
2021-03-22 22:25:13 +11:00
Franck Royer 08a7f004c3
Missing protocols in identify message are now present
status-im/nim-waku/issues/419 has been fixed.
2021-03-22 22:05:18 +11:00
Franck Royer 27c3668121
Use `--exit` to force termination of node after tests 2021-03-22 21:36:44 +11:00
Franck Royer d1e8ba2c6e
Finish conversion to mocha 2021-03-22 16:02:10 +11:00
Franck Royer 704f2770d1
Use ts-proto
This allows the generation of ts files which makes it easier
to handle with test frameworks than just d.ts files
2021-03-22 15:49:58 +11:00
Franck Royer a89f2700a2
Partial conversion to ts-node/mocha 2021-03-22 15:05:03 +11:00
Franck Royer 090b064c84
Kill nim-waku & js-libp2p nodes after tests 2021-03-22 14:24:01 +11:00
Franck Royer 13e941513d
Reorg tests, add describe sections 2021-03-19 15:55:38 +11:00
Franck Royer 7d595b0c8f
Move waku relay tests in dedicated file 2021-03-19 15:55:38 +11:00
Franck Royer 39332808d5
Improve API by using composition 2021-03-19 14:40:16 +11:00
Franck Royer 345a2ba7b3
Skip failing test
Investigation is harder that first thought.
Skipping this so we can track a green CI and not introduced more bugs
by mistake.
2021-03-19 10:41:40 +11:00
Franck Royer 5c29394937
Migrate to jest for better debugging experience
ava is not yet integrated in popular IDEs.
2021-03-17 15:34:58 +11:00
Franck Royer 33a6176181
pubsub config is specific to waku relay 2021-03-17 14:30:35 +11:00
Franck Royer eb06f056c0
Work around nim-waku signing policy bug 2021-03-16 15:41:44 +11:00
Franck Royer b2632af04b
Remove fixed time delays 2021-03-16 13:45:18 +11:00
Franck Royer 953aeea053
Implement reception of messages over waku-relay 2021-03-16 13:39:34 +11:00
Franck Royer b53bf4ddca
Correct comment 2021-03-15 17:57:31 +11:00
Franck Royer 4c34420ccc
Remove TODO 2021-03-15 17:53:24 +11:00
Franck Royer f0233f7696
Manually patch identify protocol 2021-03-15 17:29:48 +11:00
Franck Royer fe7daebbb0
Payload is now always a buffer 2021-03-15 16:26:07 +11:00
Franck Royer 3115874a05
Make testing in CI possible
By adding nim-waku as a submodule and building it as part of the tests.
2021-03-15 16:22:26 +11:00
Franck Royer e3a488bbf5
Fix spelling 2021-03-15 15:45:41 +11:00
Franck Royer 6558ac60bb
Force identify nim node to support waku protocol 2021-03-15 15:34:56 +11:00
Franck Royer a6cbdf3117
Segregate logs files in single directory 2021-03-15 13:38:36 +11:00
Franck Royer 548c50668a
test: Send message from js node to nim node 2021-03-15 13:27:50 +11:00
Franck Royer c99e02af20
Allow waiting for nim waku logs from test 2021-03-15 13:25:14 +11:00
Franck Royer b7ce121955
Replace delay by waiting on correct event 2021-03-15 11:35:30 +11:00
Franck Royer eb874a956b
Only node receiving message needs to subscribe 2021-03-15 11:23:20 +11:00
Franck Royer 4c6c54cf87
Nim node subscribes to default topic as soon as it connects to js node 2021-03-15 10:28:32 +11:00
Franck Royer fdbcbe0896
Allow multiple wakunodes to be started in parallel 2021-03-12 17:08:59 +11:00
Franck Royer a0d6784e3c
Use multiaddr lib instead of string parsing 2021-03-12 17:08:58 +11:00
Franck Royer a7c666f108
Fix WakuMessage (de)serialisation 2021-03-12 17:08:58 +11:00
Franck Royer 27c433f750
Test hex conversion functions 2021-03-12 10:44:47 +11:00
Franck Royer ee38df8757
Nim-interop: nim sends message (not working) 2021-03-12 10:35:50 +11:00
Franck Royer 8ed47b2cf7
Nim-interop: subscribe
At this stage, we are only able to check that the
subscription works on js side: it confirms that
the nim node is considered as subscribing to the same
topic.
2021-03-12 09:46:47 +11:00
Franck Royer f0c9c3ef50
Check peer ids on both side when connecting 2021-03-11 15:02:29 +11:00
Franck Royer 057f5f80ab
test: Nim-waku connects to JS (success) 2021-03-11 11:11:37 +11:00
Franck Royer a6c1fae5a6
test: Nim-waku connects to JS (wip) 2021-03-11 10:54:35 +11:00
Franck Royer 4f63bd5835
test: Connect to nim waku 2021-03-10 17:39:53 +11:00
Franck Royer b8c63355a5
Ensure waku relay node does not use a sub protocol
At the moment we do not assert that we publish messages over waku relay
protocol (not sure this assertion is possible).
By asserting we do not register any sub (pubsub, gossipsub, floodsub)
protocols, we can be (more) confident that this
protocols are not be used behind the scenes.
2021-03-10 16:25:54 +11:00
Franck Royer 4329b8006e
Use waku messages over waku relay 2021-03-10 16:22:49 +11:00
Franck Royer 070847d2c0
Use waku relay interface to subscribe and publish messages 2021-03-10 15:15:36 +11:00
Franck Royer 12c2a93c7f
Register waku protocol instead of gossip sub 2021-03-10 15:08:27 +11:00
Franck Royer 525815528f
Remove message signing as per waku specs 2021-03-10 14:58:04 +11:00
Franck Royer b5bf5c03ab
Reduce test verbosity 2021-03-10 14:56:12 +11:00
Franck Royer dfe08058d9
Use promises to remove one delay 2021-03-10 14:55:16 +11:00
Franck Royer 8e91ca6d01
Adopt more typescript-y syntax, do not lint generated files 2021-03-10 14:30:31 +11:00
Franck Royer 5e64708111
Can use gossipsub to publish messages 2021-03-10 14:24:23 +11:00
Franck Royer be47223bae
Connects to nim-waku using waku-relay protocol 2021-03-05 14:41:20 +11:00
Franck Royer f46ce77f57
Initial commit
Created with bitjson/typescript-starter@586cdb3029
2021-03-05 09:34:01 +11:00