@livestore/webmesh 0.3.0-dev.3 → 0.3.0-dev.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +26 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/channel/message-channel-internal.d.ts +26 -0
  4. package/dist/channel/message-channel-internal.d.ts.map +1 -0
  5. package/dist/channel/message-channel-internal.js +217 -0
  6. package/dist/channel/message-channel-internal.js.map +1 -0
  7. package/dist/channel/message-channel.d.ts +21 -19
  8. package/dist/channel/message-channel.d.ts.map +1 -1
  9. package/dist/channel/message-channel.js +132 -162
  10. package/dist/channel/message-channel.js.map +1 -1
  11. package/dist/channel/proxy-channel.d.ts +3 -3
  12. package/dist/channel/proxy-channel.d.ts.map +1 -1
  13. package/dist/channel/proxy-channel.js +38 -19
  14. package/dist/channel/proxy-channel.js.map +1 -1
  15. package/dist/common.d.ts +36 -14
  16. package/dist/common.d.ts.map +1 -1
  17. package/dist/common.js +7 -4
  18. package/dist/common.js.map +1 -1
  19. package/dist/mesh-schema.d.ts +71 -5
  20. package/dist/mesh-schema.d.ts.map +1 -1
  21. package/dist/mesh-schema.js +55 -6
  22. package/dist/mesh-schema.js.map +1 -1
  23. package/dist/mod.d.ts +2 -2
  24. package/dist/mod.d.ts.map +1 -1
  25. package/dist/mod.js +2 -2
  26. package/dist/mod.js.map +1 -1
  27. package/dist/node.d.ts +43 -21
  28. package/dist/node.d.ts.map +1 -1
  29. package/dist/node.js +273 -100
  30. package/dist/node.js.map +1 -1
  31. package/dist/node.test.d.ts +1 -1
  32. package/dist/node.test.d.ts.map +1 -1
  33. package/dist/node.test.js +391 -156
  34. package/dist/node.test.js.map +1 -1
  35. package/dist/utils.d.ts +4 -4
  36. package/dist/utils.d.ts.map +1 -1
  37. package/dist/utils.js +7 -1
  38. package/dist/utils.js.map +1 -1
  39. package/dist/websocket-edge.d.ts +52 -0
  40. package/dist/websocket-edge.d.ts.map +1 -0
  41. package/dist/websocket-edge.js +85 -0
  42. package/dist/websocket-edge.js.map +1 -0
  43. package/package.json +5 -6
  44. package/src/channel/message-channel-internal.ts +356 -0
  45. package/src/channel/message-channel.ts +190 -310
  46. package/src/channel/proxy-channel.ts +259 -231
  47. package/src/common.ts +12 -13
  48. package/src/mesh-schema.ts +62 -6
  49. package/src/mod.ts +2 -2
  50. package/src/node.test.ts +554 -189
  51. package/src/node.ts +421 -138
  52. package/src/utils.ts +13 -2
  53. package/src/websocket-edge.ts +177 -0
  54. package/tmp/pack.tgz +0 -0
  55. package/dist/websocket-connection.d.ts +0 -51
  56. package/dist/websocket-connection.d.ts.map +0 -1
  57. package/dist/websocket-connection.js +0 -74
  58. package/dist/websocket-connection.js.map +0 -1
  59. package/dist/websocket-server.d.ts +0 -7
  60. package/dist/websocket-server.d.ts.map +0 -1
  61. package/dist/websocket-server.js +0 -24
  62. package/dist/websocket-server.js.map +0 -1
  63. package/src/websocket-connection.ts +0 -158
  64. package/src/websocket-server.ts +0 -40
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # @livestore/webmesh
2
+
3
+ Webmesh is a library for connecting multiple nodes (windows/tabs, workers, threads, ...) in a network-like topology. It helps to establish end-to-end communication channels between nodes either by proxying messages via hop nodes or by establishing an end-to-end `MessageChannel` with support for transferable objects (e.g. `Uint8Array`) when possible.
4
+
5
+ It's used in LiveStore as the foundation for the LiveStore devtools protocol communication.
6
+
7
+ ## Available connection implementations
8
+
9
+ - `MessageChannel`
10
+ - `BroadcastChannel` (both web and Node.js)
11
+ - `WebSocket`
12
+ - `window.postMessage`
13
+
14
+ ## Important notes
15
+
16
+ - Each node name needs to be unique in the network.
17
+ - The node name is also used as a "tie-breaker" as part of the messaging protocol.
18
+ - It's using the `WebChannel` concept from the `@livestore/utils` package.
19
+
20
+ ## Inspiration
21
+
22
+ - Elixir `Distribution` / OTP
23
+ - https://elixirschool.com/en/lessons/advanced/otp_distribution
24
+ - https://serokell.io/blog/elixir-otp-guide
25
+ - Consul by HashiCorp
26
+ - Ethernet