@tezos-x/octez.connect-core 0.9.0

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 (285) hide show
  1. package/LICENCE +19 -0
  2. package/README.md +9 -0
  3. package/dist/cjs/MockAnalytics.d.ts +4 -0
  4. package/dist/cjs/MockAnalytics.js +11 -0
  5. package/dist/cjs/MockAnalytics.js.map +1 -0
  6. package/dist/cjs/MockWindow.d.ts +14 -0
  7. package/dist/cjs/MockWindow.js +39 -0
  8. package/dist/cjs/MockWindow.js.map +1 -0
  9. package/dist/cjs/Serializer.d.ts +19 -0
  10. package/dist/cjs/Serializer.js +48 -0
  11. package/dist/cjs/Serializer.js.map +1 -0
  12. package/dist/cjs/clients/beacon-client/BeaconClient.d.ts +53 -0
  13. package/dist/cjs/clients/beacon-client/BeaconClient.js +111 -0
  14. package/dist/cjs/clients/beacon-client/BeaconClient.js.map +1 -0
  15. package/dist/cjs/clients/beacon-client/BeaconClientOptions.d.ts +26 -0
  16. package/dist/cjs/clients/beacon-client/BeaconClientOptions.js +3 -0
  17. package/dist/cjs/clients/beacon-client/BeaconClientOptions.js.map +1 -0
  18. package/dist/cjs/clients/client/Client.d.ts +91 -0
  19. package/dist/cjs/clients/client/Client.js +241 -0
  20. package/dist/cjs/clients/client/Client.js.map +1 -0
  21. package/dist/cjs/clients/client/ClientOptions.d.ts +42 -0
  22. package/dist/cjs/clients/client/ClientOptions.js +3 -0
  23. package/dist/cjs/clients/client/ClientOptions.js.map +1 -0
  24. package/dist/cjs/constants.d.ts +4 -0
  25. package/dist/cjs/constants.js +8 -0
  26. package/dist/cjs/constants.js.map +1 -0
  27. package/dist/cjs/debug.d.ts +2 -0
  28. package/dist/cjs/debug.js +17 -0
  29. package/dist/cjs/debug.js.map +1 -0
  30. package/dist/cjs/errors/AbortedBeaconError.d.ts +9 -0
  31. package/dist/cjs/errors/AbortedBeaconError.js +17 -0
  32. package/dist/cjs/errors/AbortedBeaconError.js.map +1 -0
  33. package/dist/cjs/errors/BeaconError.d.ts +15 -0
  34. package/dist/cjs/errors/BeaconError.js +19 -0
  35. package/dist/cjs/errors/BeaconError.js.map +1 -0
  36. package/dist/cjs/errors/BroadcastBeaconError.d.ts +9 -0
  37. package/dist/cjs/errors/BroadcastBeaconError.js +17 -0
  38. package/dist/cjs/errors/BroadcastBeaconError.js.map +1 -0
  39. package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.d.ts +3 -0
  40. package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.js +18 -0
  41. package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.js.map +1 -0
  42. package/dist/cjs/errors/NetworkNotSupportedBeaconError.d.ts +9 -0
  43. package/dist/cjs/errors/NetworkNotSupportedBeaconError.js +17 -0
  44. package/dist/cjs/errors/NetworkNotSupportedBeaconError.js.map +1 -0
  45. package/dist/cjs/errors/NoAddressBeaconError.d.ts +9 -0
  46. package/dist/cjs/errors/NoAddressBeaconError.js +17 -0
  47. package/dist/cjs/errors/NoAddressBeaconError.js.map +1 -0
  48. package/dist/cjs/errors/NoPrivateKeyBeaconError.d.ts +9 -0
  49. package/dist/cjs/errors/NoPrivateKeyBeaconError.js +17 -0
  50. package/dist/cjs/errors/NoPrivateKeyBeaconError.js.map +1 -0
  51. package/dist/cjs/errors/NotGrantedBeaconError.d.ts +9 -0
  52. package/dist/cjs/errors/NotGrantedBeaconError.js +17 -0
  53. package/dist/cjs/errors/NotGrantedBeaconError.js.map +1 -0
  54. package/dist/cjs/errors/ParametersInvalidBeaconError.d.ts +9 -0
  55. package/dist/cjs/errors/ParametersInvalidBeaconError.js +17 -0
  56. package/dist/cjs/errors/ParametersInvalidBeaconError.js.map +1 -0
  57. package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.d.ts +9 -0
  58. package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js +17 -0
  59. package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js.map +1 -0
  60. package/dist/cjs/errors/TooManyOperationsBeaconError.d.ts +9 -0
  61. package/dist/cjs/errors/TooManyOperationsBeaconError.js +17 -0
  62. package/dist/cjs/errors/TooManyOperationsBeaconError.js.map +1 -0
  63. package/dist/cjs/errors/TransactionInvalidBeaconError.d.ts +14 -0
  64. package/dist/cjs/errors/TransactionInvalidBeaconError.js +22 -0
  65. package/dist/cjs/errors/TransactionInvalidBeaconError.js.map +1 -0
  66. package/dist/cjs/errors/UnknownBeaconError.d.ts +9 -0
  67. package/dist/cjs/errors/UnknownBeaconError.js +17 -0
  68. package/dist/cjs/errors/UnknownBeaconError.js.map +1 -0
  69. package/dist/cjs/errors/get-error.d.ts +8 -0
  70. package/dist/cjs/errors/get-error.js +53 -0
  71. package/dist/cjs/errors/get-error.js.map +1 -0
  72. package/dist/cjs/index.d.ts +53 -0
  73. package/dist/cjs/index.js +90 -0
  74. package/dist/cjs/index.js.map +1 -0
  75. package/dist/cjs/managers/AccountManager.d.ts +18 -0
  76. package/dist/cjs/managers/AccountManager.js +73 -0
  77. package/dist/cjs/managers/AccountManager.js.map +1 -0
  78. package/dist/cjs/managers/AppMetadataManager.d.ts +16 -0
  79. package/dist/cjs/managers/AppMetadataManager.js +57 -0
  80. package/dist/cjs/managers/AppMetadataManager.js.map +1 -0
  81. package/dist/cjs/managers/PeerManager.d.ts +18 -0
  82. package/dist/cjs/managers/PeerManager.js +61 -0
  83. package/dist/cjs/managers/PeerManager.js.map +1 -0
  84. package/dist/cjs/managers/PermissionManager.d.ts +17 -0
  85. package/dist/cjs/managers/PermissionManager.js +64 -0
  86. package/dist/cjs/managers/PermissionManager.js.map +1 -0
  87. package/dist/cjs/managers/PermissionValidator.d.ts +16 -0
  88. package/dist/cjs/managers/PermissionValidator.js +58 -0
  89. package/dist/cjs/managers/PermissionValidator.js.map +1 -0
  90. package/dist/cjs/managers/StorageManager.d.ts +18 -0
  91. package/dist/cjs/managers/StorageManager.js +72 -0
  92. package/dist/cjs/managers/StorageManager.js.map +1 -0
  93. package/dist/cjs/migrations/migrate-0.7.0.d.ts +20 -0
  94. package/dist/cjs/migrations/migrate-0.7.0.js +44 -0
  95. package/dist/cjs/migrations/migrate-0.7.0.js.map +1 -0
  96. package/dist/cjs/migrations/migrations.d.ts +2 -0
  97. package/dist/cjs/migrations/migrations.js +44 -0
  98. package/dist/cjs/migrations/migrations.js.map +1 -0
  99. package/dist/cjs/storage/ChromeStorage.d.ts +19 -0
  100. package/dist/cjs/storage/ChromeStorage.js +76 -0
  101. package/dist/cjs/storage/ChromeStorage.js.map +1 -0
  102. package/dist/cjs/storage/IndexedDBStorage.d.ts +65 -0
  103. package/dist/cjs/storage/IndexedDBStorage.js +230 -0
  104. package/dist/cjs/storage/IndexedDBStorage.js.map +1 -0
  105. package/dist/cjs/storage/LocalStorage.d.ts +21 -0
  106. package/dist/cjs/storage/LocalStorage.js +92 -0
  107. package/dist/cjs/storage/LocalStorage.js.map +1 -0
  108. package/dist/cjs/storage/StorageValidator.d.ts +12 -0
  109. package/dist/cjs/storage/StorageValidator.js +110 -0
  110. package/dist/cjs/storage/StorageValidator.js.map +1 -0
  111. package/dist/cjs/storage/WCStorage.d.ts +15 -0
  112. package/dist/cjs/storage/WCStorage.js +84 -0
  113. package/dist/cjs/storage/WCStorage.js.map +1 -0
  114. package/dist/cjs/storage/getStorage.d.ts +5 -0
  115. package/dist/cjs/storage/getStorage.js +34 -0
  116. package/dist/cjs/storage/getStorage.js.map +1 -0
  117. package/dist/cjs/transports/Transport.d.ts +85 -0
  118. package/dist/cjs/transports/Transport.js +171 -0
  119. package/dist/cjs/transports/Transport.js.map +1 -0
  120. package/dist/cjs/transports/clients/ClientEvents.d.ts +6 -0
  121. package/dist/cjs/transports/clients/ClientEvents.js +3 -0
  122. package/dist/cjs/transports/clients/ClientEvents.js.map +1 -0
  123. package/dist/cjs/transports/clients/CommunicationClient.d.ts +47 -0
  124. package/dist/cjs/transports/clients/CommunicationClient.js +86 -0
  125. package/dist/cjs/transports/clients/CommunicationClient.js.map +1 -0
  126. package/dist/cjs/transports/clients/MessageBasedClient.d.ts +56 -0
  127. package/dist/cjs/transports/clients/MessageBasedClient.js +109 -0
  128. package/dist/cjs/transports/clients/MessageBasedClient.js.map +1 -0
  129. package/dist/cjs/utils/Logger.d.ts +33 -0
  130. package/dist/cjs/utils/Logger.js +98 -0
  131. package/dist/cjs/utils/Logger.js.map +1 -0
  132. package/dist/cjs/utils/assert-never.d.ts +6 -0
  133. package/dist/cjs/utils/assert-never.js +14 -0
  134. package/dist/cjs/utils/assert-never.js.map +1 -0
  135. package/dist/cjs/utils/get-account-identifier.d.ts +10 -0
  136. package/dist/cjs/utils/get-account-identifier.js +36 -0
  137. package/dist/cjs/utils/get-account-identifier.js.map +1 -0
  138. package/dist/cjs/utils/get-sender-id.d.ts +8 -0
  139. package/dist/cjs/utils/get-sender-id.js +31 -0
  140. package/dist/cjs/utils/get-sender-id.js.map +1 -0
  141. package/dist/cjs/utils/multi-tab-channel.d.ts +17 -0
  142. package/dist/cjs/utils/multi-tab-channel.js +85 -0
  143. package/dist/cjs/utils/multi-tab-channel.js.map +1 -0
  144. package/dist/esm/MockAnalytics.d.ts +4 -0
  145. package/dist/esm/MockAnalytics.js +7 -0
  146. package/dist/esm/MockAnalytics.js.map +1 -0
  147. package/dist/esm/MockWindow.d.ts +14 -0
  148. package/dist/esm/MockWindow.js +35 -0
  149. package/dist/esm/MockWindow.js.map +1 -0
  150. package/dist/esm/Serializer.d.ts +19 -0
  151. package/dist/esm/Serializer.js +31 -0
  152. package/dist/esm/Serializer.js.map +1 -0
  153. package/dist/esm/clients/beacon-client/BeaconClient.d.ts +53 -0
  154. package/dist/esm/clients/beacon-client/BeaconClient.js +103 -0
  155. package/dist/esm/clients/beacon-client/BeaconClient.js.map +1 -0
  156. package/dist/esm/clients/beacon-client/BeaconClientOptions.d.ts +26 -0
  157. package/dist/esm/clients/beacon-client/BeaconClientOptions.js +2 -0
  158. package/dist/esm/clients/beacon-client/BeaconClientOptions.js.map +1 -0
  159. package/dist/esm/clients/client/Client.d.ts +91 -0
  160. package/dist/esm/clients/client/Client.js +198 -0
  161. package/dist/esm/clients/client/Client.js.map +1 -0
  162. package/dist/esm/clients/client/ClientOptions.d.ts +42 -0
  163. package/dist/esm/clients/client/ClientOptions.js +2 -0
  164. package/dist/esm/clients/client/ClientOptions.js.map +1 -0
  165. package/dist/esm/constants.d.ts +4 -0
  166. package/dist/esm/constants.js +5 -0
  167. package/dist/esm/constants.js.map +1 -0
  168. package/dist/esm/debug.d.ts +2 -0
  169. package/dist/esm/debug.js +12 -0
  170. package/dist/esm/debug.js.map +1 -0
  171. package/dist/esm/errors/AbortedBeaconError.d.ts +9 -0
  172. package/dist/esm/errors/AbortedBeaconError.js +13 -0
  173. package/dist/esm/errors/AbortedBeaconError.js.map +1 -0
  174. package/dist/esm/errors/BeaconError.d.ts +15 -0
  175. package/dist/esm/errors/BeaconError.js +17 -0
  176. package/dist/esm/errors/BeaconError.js.map +1 -0
  177. package/dist/esm/errors/BroadcastBeaconError.d.ts +9 -0
  178. package/dist/esm/errors/BroadcastBeaconError.js +13 -0
  179. package/dist/esm/errors/BroadcastBeaconError.js.map +1 -0
  180. package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.d.ts +3 -0
  181. package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.js +18 -0
  182. package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.js.map +1 -0
  183. package/dist/esm/errors/NetworkNotSupportedBeaconError.d.ts +9 -0
  184. package/dist/esm/errors/NetworkNotSupportedBeaconError.js +13 -0
  185. package/dist/esm/errors/NetworkNotSupportedBeaconError.js.map +1 -0
  186. package/dist/esm/errors/NoAddressBeaconError.d.ts +9 -0
  187. package/dist/esm/errors/NoAddressBeaconError.js +13 -0
  188. package/dist/esm/errors/NoAddressBeaconError.js.map +1 -0
  189. package/dist/esm/errors/NoPrivateKeyBeaconError.d.ts +9 -0
  190. package/dist/esm/errors/NoPrivateKeyBeaconError.js +13 -0
  191. package/dist/esm/errors/NoPrivateKeyBeaconError.js.map +1 -0
  192. package/dist/esm/errors/NotGrantedBeaconError.d.ts +9 -0
  193. package/dist/esm/errors/NotGrantedBeaconError.js +13 -0
  194. package/dist/esm/errors/NotGrantedBeaconError.js.map +1 -0
  195. package/dist/esm/errors/ParametersInvalidBeaconError.d.ts +9 -0
  196. package/dist/esm/errors/ParametersInvalidBeaconError.js +13 -0
  197. package/dist/esm/errors/ParametersInvalidBeaconError.js.map +1 -0
  198. package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.d.ts +9 -0
  199. package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.js +13 -0
  200. package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.js.map +1 -0
  201. package/dist/esm/errors/TooManyOperationsBeaconError.d.ts +9 -0
  202. package/dist/esm/errors/TooManyOperationsBeaconError.js +13 -0
  203. package/dist/esm/errors/TooManyOperationsBeaconError.js.map +1 -0
  204. package/dist/esm/errors/TransactionInvalidBeaconError.d.ts +14 -0
  205. package/dist/esm/errors/TransactionInvalidBeaconError.js +19 -0
  206. package/dist/esm/errors/TransactionInvalidBeaconError.js.map +1 -0
  207. package/dist/esm/errors/UnknownBeaconError.d.ts +9 -0
  208. package/dist/esm/errors/UnknownBeaconError.js +13 -0
  209. package/dist/esm/errors/UnknownBeaconError.js.map +1 -0
  210. package/dist/esm/errors/get-error.d.ts +8 -0
  211. package/dist/esm/errors/get-error.js +49 -0
  212. package/dist/esm/errors/get-error.js.map +1 -0
  213. package/dist/esm/index.d.ts +53 -0
  214. package/dist/esm/index.js +67 -0
  215. package/dist/esm/index.js.map +1 -0
  216. package/dist/esm/managers/AccountManager.d.ts +18 -0
  217. package/dist/esm/managers/AccountManager.js +44 -0
  218. package/dist/esm/managers/AccountManager.js.map +1 -0
  219. package/dist/esm/managers/AppMetadataManager.d.ts +16 -0
  220. package/dist/esm/managers/AppMetadataManager.js +32 -0
  221. package/dist/esm/managers/AppMetadataManager.js.map +1 -0
  222. package/dist/esm/managers/PeerManager.d.ts +18 -0
  223. package/dist/esm/managers/PeerManager.js +34 -0
  224. package/dist/esm/managers/PeerManager.js.map +1 -0
  225. package/dist/esm/managers/PermissionManager.d.ts +17 -0
  226. package/dist/esm/managers/PermissionManager.js +37 -0
  227. package/dist/esm/managers/PermissionManager.js.map +1 -0
  228. package/dist/esm/managers/PermissionValidator.d.ts +16 -0
  229. package/dist/esm/managers/PermissionValidator.js +43 -0
  230. package/dist/esm/managers/PermissionValidator.js.map +1 -0
  231. package/dist/esm/managers/StorageManager.d.ts +18 -0
  232. package/dist/esm/managers/StorageManager.js +50 -0
  233. package/dist/esm/managers/StorageManager.js.map +1 -0
  234. package/dist/esm/migrations/migrate-0.7.0.d.ts +20 -0
  235. package/dist/esm/migrations/migrate-0.7.0.js +31 -0
  236. package/dist/esm/migrations/migrate-0.7.0.js.map +1 -0
  237. package/dist/esm/migrations/migrations.d.ts +2 -0
  238. package/dist/esm/migrations/migrations.js +31 -0
  239. package/dist/esm/migrations/migrations.js.map +1 -0
  240. package/dist/esm/storage/ChromeStorage.d.ts +19 -0
  241. package/dist/esm/storage/ChromeStorage.js +53 -0
  242. package/dist/esm/storage/ChromeStorage.js.map +1 -0
  243. package/dist/esm/storage/IndexedDBStorage.d.ts +65 -0
  244. package/dist/esm/storage/IndexedDBStorage.js +212 -0
  245. package/dist/esm/storage/IndexedDBStorage.js.map +1 -0
  246. package/dist/esm/storage/LocalStorage.d.ts +21 -0
  247. package/dist/esm/storage/LocalStorage.js +70 -0
  248. package/dist/esm/storage/LocalStorage.js.map +1 -0
  249. package/dist/esm/storage/StorageValidator.d.ts +12 -0
  250. package/dist/esm/storage/StorageValidator.js +96 -0
  251. package/dist/esm/storage/StorageValidator.js.map +1 -0
  252. package/dist/esm/storage/WCStorage.d.ts +15 -0
  253. package/dist/esm/storage/WCStorage.js +64 -0
  254. package/dist/esm/storage/WCStorage.js.map +1 -0
  255. package/dist/esm/storage/getStorage.d.ts +5 -0
  256. package/dist/esm/storage/getStorage.js +21 -0
  257. package/dist/esm/storage/getStorage.js.map +1 -0
  258. package/dist/esm/transports/Transport.d.ts +85 -0
  259. package/dist/esm/transports/Transport.js +149 -0
  260. package/dist/esm/transports/Transport.js.map +1 -0
  261. package/dist/esm/transports/clients/ClientEvents.d.ts +6 -0
  262. package/dist/esm/transports/clients/ClientEvents.js +2 -0
  263. package/dist/esm/transports/clients/ClientEvents.js.map +1 -0
  264. package/dist/esm/transports/clients/CommunicationClient.d.ts +47 -0
  265. package/dist/esm/transports/clients/CommunicationClient.js +63 -0
  266. package/dist/esm/transports/clients/CommunicationClient.js.map +1 -0
  267. package/dist/esm/transports/clients/MessageBasedClient.d.ts +56 -0
  268. package/dist/esm/transports/clients/MessageBasedClient.js +83 -0
  269. package/dist/esm/transports/clients/MessageBasedClient.js.map +1 -0
  270. package/dist/esm/utils/Logger.d.ts +33 -0
  271. package/dist/esm/utils/Logger.js +92 -0
  272. package/dist/esm/utils/Logger.js.map +1 -0
  273. package/dist/esm/utils/assert-never.d.ts +6 -0
  274. package/dist/esm/utils/assert-never.js +11 -0
  275. package/dist/esm/utils/assert-never.js.map +1 -0
  276. package/dist/esm/utils/get-account-identifier.d.ts +10 -0
  277. package/dist/esm/utils/get-account-identifier.js +23 -0
  278. package/dist/esm/utils/get-account-identifier.js.map +1 -0
  279. package/dist/esm/utils/get-sender-id.d.ts +8 -0
  280. package/dist/esm/utils/get-sender-id.js +18 -0
  281. package/dist/esm/utils/get-sender-id.js.map +1 -0
  282. package/dist/esm/utils/multi-tab-channel.d.ts +17 -0
  283. package/dist/esm/utils/multi-tab-channel.js +66 -0
  284. package/dist/esm/utils/multi-tab-channel.js.map +1 -0
  285. package/package.json +46 -0
@@ -0,0 +1,63 @@
1
+ import { toHex, getHexHash, sealCryptobox } from '@tezos-x/octez.connect-utils';
2
+ import { convertPublicKeyToX25519, convertSecretKeyToX25519 } from '@stablelib/ed25519';
3
+ import { clientSessionKeys, serverSessionKeys } from '@stablelib/x25519-session';
4
+ /**
5
+ * @internalapi
6
+ *
7
+ *
8
+ */
9
+ export class CommunicationClient {
10
+ keyPair;
11
+ constructor(keyPair) {
12
+ this.keyPair = keyPair;
13
+ }
14
+ eventHandlers = new Map();
15
+ // todo move OS
16
+ isMobileOS = () => /(Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|Tablet|Windows Phone|SymbianOS|Kindle)/i.test(navigator.userAgent);
17
+ /**
18
+ * Get the public key
19
+ */
20
+ async getPublicKey() {
21
+ return toHex(this.keyPair?.publicKey);
22
+ }
23
+ /**
24
+ * get the public key hash
25
+ */
26
+ async getPublicKeyHash() {
27
+ return getHexHash(this.keyPair.publicKey);
28
+ }
29
+ /**
30
+ * Create a cryptobox server
31
+ *
32
+ * @param otherPublicKey
33
+ * @param selfKeypair
34
+ */
35
+ async createCryptoBoxServer(otherPublicKey, selfKeypair) {
36
+ return serverSessionKeys({
37
+ publicKey: convertPublicKeyToX25519(selfKeypair.publicKey),
38
+ secretKey: convertSecretKeyToX25519(selfKeypair.secretKey)
39
+ }, convertPublicKeyToX25519(Buffer.from(otherPublicKey, 'hex')));
40
+ }
41
+ /**
42
+ * Create a cryptobox client
43
+ *
44
+ * @param otherPublicKey
45
+ * @param selfKeypair
46
+ */
47
+ async createCryptoBoxClient(otherPublicKey, selfKeypair) {
48
+ return clientSessionKeys({
49
+ publicKey: convertPublicKeyToX25519(selfKeypair.publicKey),
50
+ secretKey: convertSecretKeyToX25519(selfKeypair.secretKey)
51
+ }, convertPublicKeyToX25519(Buffer.from(otherPublicKey, 'hex')));
52
+ }
53
+ /**
54
+ * Encrypt a message for a specific publicKey (receiver, asymmetric)
55
+ *
56
+ * @param recipientPublicKey
57
+ * @param message
58
+ */
59
+ async encryptMessageAsymmetric(recipientPublicKey, message) {
60
+ return sealCryptobox(message, Buffer.from(recipientPublicKey, 'hex'));
61
+ }
62
+ }
63
+ //# sourceMappingURL=CommunicationClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommunicationClient.js","sourceRoot":"","sources":["../../../../src/transports/clients/CommunicationClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC/E,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAW,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAe,MAAM,2BAA2B,CAAA;AAE7F;;;;GAIG;AACH,MAAM,OAAgB,mBAAmB;IACjB;IAAtB,YAAsB,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;IAAG,CAAC;IAEpC,aAAa,GAAgC,IAAI,GAAG,EAAE,CAAA;IAE7D,eAAe;IACL,UAAU,GAAG,GAAY,EAAE,CACnC,+GAA+G,CAAC,IAAI,CAClH,SAAS,CAAC,SAAS,CACpB,CAAA;IAEH;;OAEG;IACI,KAAK,CAAC,YAAY;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACvC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB;QAC3B,OAAO,UAAU,CAAC,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,qBAAqB,CACnC,cAAsB,EACtB,WAAoB;QAEpB,OAAO,iBAAiB,CACtB;YACE,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC;YAC1D,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC;SAC3D,EACD,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAC7D,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,qBAAqB,CACnC,cAAsB,EACtB,WAAoB;QAEpB,OAAO,iBAAiB,CACtB;YACE,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC;YAC1D,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC;SAC3D,EACD,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAC7D,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,wBAAwB,CACtC,kBAA0B,EAC1B,OAAe;QAEf,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAA;IACvE,CAAC;CAMF"}
@@ -0,0 +1,56 @@
1
+ import { CommunicationClient } from './CommunicationClient';
2
+ import { PostMessagePairingRequest, PostMessagePairingResponse } from '@tezos-x/octez.connect-types';
3
+ import { KeyPair } from '@stablelib/ed25519';
4
+ /**
5
+ * @internalapi
6
+ *
7
+ *
8
+ */
9
+ export declare abstract class MessageBasedClient extends CommunicationClient {
10
+ protected readonly name: string;
11
+ /**
12
+ * The listeners that will be notified of new messages
13
+ */
14
+ protected abstract readonly activeListeners: Map<string, unknown>;
15
+ constructor(name: string, keyPair: KeyPair);
16
+ /**
17
+ * start the client and make sure all dependencies are ready
18
+ */
19
+ start(): Promise<void>;
20
+ /**
21
+ * Get the pairing request information. This will be shared with the peer during the connection setup
22
+ */
23
+ getPairingRequestInfo(): Promise<PostMessagePairingRequest>;
24
+ /**
25
+ * Get the pairing response information. This will be shared with the peer during the connection setup
26
+ */
27
+ getPairingResponseInfo(request: PostMessagePairingRequest): Promise<PostMessagePairingResponse>;
28
+ /**
29
+ * Unsubscribe from encrypted messages from a specific peer
30
+ *
31
+ * @param senderPublicKey
32
+ */
33
+ unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise<void>;
34
+ /**
35
+ * Unsubscribe from all encrypted messages
36
+ */
37
+ unsubscribeFromEncryptedMessages(): Promise<void>;
38
+ /**
39
+ * Decrypt a message from a specific peer
40
+ *
41
+ * @param senderPublicKey
42
+ * @param payload
43
+ */
44
+ protected decryptMessage(senderPublicKey: string, payload: string): Promise<string>;
45
+ /**
46
+ * Encrypt a message for a specific publicKey (receiver)
47
+ *
48
+ * @param recipientPublicKey
49
+ * @param message
50
+ */
51
+ protected encryptMessage(recipientPublicKey: string, message: string): Promise<string>;
52
+ /**
53
+ * Initialize the connection
54
+ */
55
+ abstract init(): Promise<void>;
56
+ }
@@ -0,0 +1,83 @@
1
+ import { BEACON_VERSION } from '../../constants';
2
+ import { decryptCryptoboxPayload, encryptCryptoboxPayload, generateGUID, secretbox_NONCEBYTES, secretbox_MACBYTES } from '@tezos-x/octez.connect-utils';
3
+ import { CommunicationClient } from './CommunicationClient';
4
+ import { PostMessagePairingRequest, PostMessagePairingResponse } from '@tezos-x/octez.connect-types';
5
+ /**
6
+ * @internalapi
7
+ *
8
+ *
9
+ */
10
+ export class MessageBasedClient extends CommunicationClient {
11
+ name;
12
+ constructor(name, keyPair) {
13
+ super(keyPair);
14
+ this.name = name;
15
+ this.init().catch(console.error);
16
+ }
17
+ /**
18
+ * start the client and make sure all dependencies are ready
19
+ */
20
+ async start() {
21
+ await Promise.resolve();
22
+ }
23
+ /**
24
+ * Get the pairing request information. This will be shared with the peer during the connection setup
25
+ */
26
+ async getPairingRequestInfo() {
27
+ return new PostMessagePairingRequest(await generateGUID(), this.name, await this.getPublicKey(), BEACON_VERSION);
28
+ }
29
+ /**
30
+ * Get the pairing response information. This will be shared with the peer during the connection setup
31
+ */
32
+ async getPairingResponseInfo(request) {
33
+ return new PostMessagePairingResponse(request.id, this.name, await this.getPublicKey(), request.version);
34
+ }
35
+ /**
36
+ * Unsubscribe from encrypted messages from a specific peer
37
+ *
38
+ * @param senderPublicKey
39
+ */
40
+ async unsubscribeFromEncryptedMessage(senderPublicKey) {
41
+ const listener = this.activeListeners.get(senderPublicKey);
42
+ if (!listener) {
43
+ return;
44
+ }
45
+ this.activeListeners.delete(senderPublicKey);
46
+ }
47
+ /**
48
+ * Unsubscribe from all encrypted messages
49
+ */
50
+ async unsubscribeFromEncryptedMessages() {
51
+ this.activeListeners.clear();
52
+ }
53
+ /**
54
+ * Decrypt a message from a specific peer
55
+ *
56
+ * @param senderPublicKey
57
+ * @param payload
58
+ */
59
+ async decryptMessage(senderPublicKey, payload) {
60
+ const sharedKey = await this.createCryptoBoxServer(senderPublicKey, this.keyPair);
61
+ const hexPayload = Buffer.from(payload, 'hex');
62
+ if (hexPayload.length >= secretbox_NONCEBYTES + secretbox_MACBYTES) {
63
+ try {
64
+ return await decryptCryptoboxPayload(hexPayload, sharedKey.receive);
65
+ }
66
+ catch (decryptionError) {
67
+ /* NO-OP. We try to decode every message, but some might not be addressed to us. */
68
+ }
69
+ }
70
+ throw new Error('Could not decrypt message');
71
+ }
72
+ /**
73
+ * Encrypt a message for a specific publicKey (receiver)
74
+ *
75
+ * @param recipientPublicKey
76
+ * @param message
77
+ */
78
+ async encryptMessage(recipientPublicKey, message) {
79
+ const sharedKey = await this.createCryptoBoxClient(recipientPublicKey, this.keyPair);
80
+ return encryptCryptoboxPayload(message, sharedKey.send);
81
+ }
82
+ }
83
+ //# sourceMappingURL=MessageBasedClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBasedClient.js","sourceRoot":"","sources":["../../../../src/transports/clients/MessageBasedClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAGpG;;;;GAIG;AACH,MAAM,OAAgB,kBAAmB,SAAQ,mBAAmB;IAO7C;IADrB,YACqB,IAAY,EAC/B,OAAgB;QAEhB,KAAK,CAAC,OAAO,CAAC,CAAA;QAHK,SAAI,GAAJ,IAAI,CAAQ;QAI/B,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IACzB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,qBAAqB;QAChC,OAAO,IAAI,yBAAyB,CAClC,MAAM,YAAY,EAAE,EACpB,IAAI,CAAC,IAAI,EACT,MAAM,IAAI,CAAC,YAAY,EAAE,EACzB,cAAc,CACf,CAAA;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,sBAAsB,CACjC,OAAkC;QAElC,OAAO,IAAI,0BAA0B,CACnC,OAAO,CAAC,EAAE,EACV,IAAI,CAAC,IAAI,EACT,MAAM,IAAI,CAAC,YAAY,EAAE,EACzB,OAAO,CAAC,OAAO,CAChB,CAAA;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,+BAA+B,CAAC,eAAuB;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAM;QACR,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gCAAgC;QAC3C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,cAAc,CAAC,eAAuB,EAAE,OAAe;QACrE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,OAAQ,CAAC,CAAA;QAElF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAE9C,IAAI,UAAU,CAAC,MAAM,IAAI,oBAAoB,GAAG,kBAAkB,EAAE,CAAC;YACnE,IAAI,CAAC;gBACH,OAAO,MAAM,uBAAuB,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;YACrE,CAAC;YAAC,OAAO,eAAe,EAAE,CAAC;gBACzB,mFAAmF;YACrF,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,cAAc,CAAC,kBAA0B,EAAE,OAAe;QACxE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAQ,CAAC,CAAA;QAErF,OAAO,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;CAMF"}
@@ -0,0 +1,33 @@
1
+ export interface LoggerInterface {
2
+ debug(method: string, ...args: any[]): void;
3
+ log(method: string, ...args: any[]): void;
4
+ warn(method: string, ...args: any[]): void;
5
+ error(method: string, ...args: any[]): void;
6
+ time(start: boolean, label?: string): void;
7
+ timeLog(method: string, ...args: any[]): void;
8
+ }
9
+ /**
10
+ * The logger that is used internally
11
+ */
12
+ export declare class InternalLogger implements LoggerInterface {
13
+ constructor();
14
+ debug(name: string, method: string, ...args: any[]): void;
15
+ log(name: string, method: string, ...args: any[]): void;
16
+ warn(name: string, method: string, ...args: any[]): void;
17
+ error(name: string, method: string, ...args: any[]): void;
18
+ time(start: boolean, label?: string | undefined): void;
19
+ timeLog(name: string, method: string, ...args: any[]): void;
20
+ private _log;
21
+ }
22
+ export declare class Logger implements LoggerInterface {
23
+ private readonly name;
24
+ constructor(service: string);
25
+ debug(method: string, ...args: any[]): void;
26
+ log(method: string, ...args: any[]): void;
27
+ warn(method: string, ...args: any[]): void;
28
+ error(method: string, ...args: any[]): void;
29
+ time(start: boolean, label?: string | undefined): void;
30
+ timeLog(method: string, ...args: any[]): void;
31
+ }
32
+ export declare const setLogger: (newLogger: LoggerInterface) => void;
33
+ export declare const getLogger: () => LoggerInterface;
@@ -0,0 +1,92 @@
1
+ import { getDebugEnabled } from '../debug';
2
+ /**
3
+ * The logger that is used internally
4
+ */
5
+ export class InternalLogger {
6
+ constructor() { }
7
+ debug(name, method, ...args) {
8
+ this._log('debug', name, method, args);
9
+ }
10
+ log(name, method, ...args) {
11
+ this._log('log', name, method, args);
12
+ }
13
+ warn(name, method, ...args) {
14
+ this._log('warn', name, method, args);
15
+ }
16
+ error(name, method, ...args) {
17
+ this._log('error', name, method, args);
18
+ }
19
+ time(start, label) {
20
+ start ? console.time(label) : console.timeEnd(label);
21
+ }
22
+ timeLog(name, method, ...args) {
23
+ this._log('timeLog', name, method, args);
24
+ }
25
+ _log(type, name, method, args = []) {
26
+ if (!getDebugEnabled()) {
27
+ return;
28
+ }
29
+ let groupText = `[BEACON] ${new Date().toISOString()} [${name}](${method})`;
30
+ let data = args;
31
+ if (args[0] && typeof args[0] === 'string') {
32
+ groupText += ` ${args[0]}`;
33
+ data = args.slice(1);
34
+ }
35
+ switch (type) {
36
+ case 'error':
37
+ console.group(groupText);
38
+ console.error(...data);
39
+ break;
40
+ case 'warn':
41
+ console.group(groupText);
42
+ console.warn(...data);
43
+ break;
44
+ case 'debug':
45
+ console.groupCollapsed(groupText);
46
+ console.debug(...data);
47
+ break;
48
+ case 'timeLog':
49
+ console.group(groupText);
50
+ console.timeLog(...data);
51
+ break;
52
+ default:
53
+ console.group(groupText);
54
+ console.log(...data);
55
+ }
56
+ console.groupEnd();
57
+ // echo.group(echo.asWarning(`[BEACON] ${message}`))
58
+ // echo.log(echo.asWarning(`[${this.name}]`), echo.asAlert(`(${method})`), ...args)
59
+ // echo.groupEnd()
60
+ }
61
+ }
62
+ export class Logger {
63
+ name;
64
+ constructor(service) {
65
+ this.name = service;
66
+ }
67
+ debug(method, ...args) {
68
+ logger.debug(this.name, method, args);
69
+ }
70
+ log(method, ...args) {
71
+ logger.log(this.name, method, args);
72
+ }
73
+ warn(method, ...args) {
74
+ logger.warn(this.name, method, args);
75
+ }
76
+ error(method, ...args) {
77
+ logger.error(this.name, method, args);
78
+ }
79
+ time(start, label) {
80
+ logger.time(start, label);
81
+ }
82
+ timeLog(method, ...args) {
83
+ logger.timeLog(method, args);
84
+ }
85
+ }
86
+ const loggerWrapper = new Logger('');
87
+ let logger = new InternalLogger();
88
+ export const setLogger = (newLogger) => {
89
+ logger = newLogger;
90
+ };
91
+ export const getLogger = () => loggerWrapper;
92
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAW1C;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB,gBAAe,CAAC;IAEhB,KAAK,CAAC,IAAY,EAAE,MAAc,EAAE,GAAG,IAAW;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,GAAG,IAAW;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,MAAc,EAAE,GAAG,IAAW;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,MAAc,EAAE,GAAG,IAAW;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,KAAc,EAAE,KAA0B;QAC7C,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,MAAc,EAAE,GAAG,IAAW;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEO,IAAI,CACV,IAAoD,EACpD,IAAY,EACZ,MAAc,EACd,OAAc,EAAE;QAEhB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,IAAI,SAAS,GAAG,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,MAAM,GAAG,CAAA;QAC3E,IAAI,IAAI,GAAG,IAAI,CAAA;QACf,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3C,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YAC1B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC;QAED,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;gBACtB,MAAK;YACP,KAAK,MAAM;gBACT,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;gBACrB,MAAK;YACP,KAAK,OAAO;gBACV,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;gBACjC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;gBACtB,MAAK;YACP,KAAK,SAAS;gBACZ,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;gBACxB,MAAK;YACP;gBACE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,CAAA;QAElB,oDAAoD;QACpD,mFAAmF;QACnF,kBAAkB;IACpB,CAAC;CACF;AAED,MAAM,OAAO,MAAM;IACA,IAAI,CAAQ;IAE7B,YAAY,OAAe;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAG,IAAW;QAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,GAAG,IAAW;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,GAAG,IAAW;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAG,IAAW;QAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,CAAC,KAAc,EAAE,KAA0B;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,GAAG,IAAW;QACpC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,aAAa,GAAoB,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;AACrD,IAAI,MAAM,GAAoB,IAAI,cAAc,EAAE,CAAA;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAA0B,EAAQ,EAAE;IAC5D,MAAM,GAAG,SAAS,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,GAAoB,EAAE,CAAC,aAAa,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A helper function to make sure if/elses and switch/cases are exhaustive
3
+ *
4
+ * @param empty The data that has to be empty
5
+ */
6
+ export declare function assertNever(empty: never): never;
@@ -0,0 +1,11 @@
1
+ /* eslint-disable prefer-arrow/prefer-arrow-functions */
2
+ /**
3
+ * A helper function to make sure if/elses and switch/cases are exhaustive
4
+ *
5
+ * @param empty The data that has to be empty
6
+ */
7
+ export function assertNever(empty) {
8
+ return empty;
9
+ }
10
+ /* eslint-enable prefer-arrow/prefer-arrow-functions */
11
+ //# sourceMappingURL=assert-never.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-never.js","sourceRoot":"","sources":["../../../src/utils/assert-never.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,uDAAuD"}
@@ -0,0 +1,10 @@
1
+ import { Network } from '@tezos-x/octez.connect-types';
2
+ /**
3
+ * @internalapi
4
+ *
5
+ * Generate a deterministic account identifier based on an address and a network
6
+ *
7
+ * @param address
8
+ * @param network
9
+ */
10
+ export declare const getAccountIdentifier: (address: string, network: Network) => Promise<string>;
@@ -0,0 +1,23 @@
1
+ import bs58check from 'bs58check';
2
+ import { hash } from '@stablelib/blake2b';
3
+ import { encode } from '@stablelib/utf8';
4
+ /**
5
+ * @internalapi
6
+ *
7
+ * Generate a deterministic account identifier based on an address and a network
8
+ *
9
+ * @param address
10
+ * @param network
11
+ */
12
+ export const getAccountIdentifier = async (address, network) => {
13
+ const data = [address, network.type];
14
+ if (network.name) {
15
+ data.push(`name:${network.name}`);
16
+ }
17
+ if (network.rpcUrl) {
18
+ data.push(`rpc:${network.rpcUrl}`);
19
+ }
20
+ const buffer = Buffer.from(hash(encode(data.join('-')), 10));
21
+ return bs58check.encode(buffer);
22
+ };
23
+ //# sourceMappingURL=get-account-identifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-account-identifier.js","sourceRoot":"","sources":["../../../src/utils/get-account-identifier.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAe,EAAE,OAAgB,EAAmB,EAAE;IAC/F,MAAM,IAAI,GAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAE5D,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @internalapi
3
+ *
4
+ * Generate a deterministic sender identifier based on a public key
5
+ *
6
+ * @param publicKey
7
+ */
8
+ export declare const getSenderId: (publicKey: string) => Promise<string>;
@@ -0,0 +1,18 @@
1
+ import { hash } from '@stablelib/blake2b';
2
+ import bs58check from 'bs58check';
3
+ const isHex = (str) => /^[A-F0-9]+$/i.test(str);
4
+ /**
5
+ * @internalapi
6
+ *
7
+ * Generate a deterministic sender identifier based on a public key
8
+ *
9
+ * @param publicKey
10
+ */
11
+ export const getSenderId = async (publicKey) => {
12
+ if (!isHex(publicKey)) {
13
+ console.error('PublicKey needs to be in hex format!');
14
+ }
15
+ const buffer = Buffer.from(hash(Buffer.from(publicKey, 'hex'), 5));
16
+ return bs58check.encode(buffer);
17
+ };
18
+ //# sourceMappingURL=get-sender-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-sender-id.js","sourceRoot":"","sources":["../../../src/utils/get-sender-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,SAAiB,EAAmB,EAAE;IACtE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAElE,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ export declare class MultiTabChannel {
2
+ private channel;
3
+ private elector;
4
+ private eventListeners;
5
+ private onBCMessageHandler;
6
+ private onElectedLeaderHandler;
7
+ private wasLeader;
8
+ private initialized;
9
+ constructor(name: string, onBCMessageHandler: Function, onElectedLeaderHandler: Function);
10
+ init(): Promise<void>;
11
+ private onBeforeUnloadHandler;
12
+ private onMessageHandler;
13
+ isLeader(): boolean;
14
+ getLeadership(): Promise<void>;
15
+ hasLeader(): Promise<boolean>;
16
+ postMessage(message: any): void;
17
+ }
@@ -0,0 +1,66 @@
1
+ import { createLeaderElection, BroadcastChannel } from 'broadcast-channel';
2
+ export class MultiTabChannel {
3
+ channel;
4
+ elector;
5
+ eventListeners = [
6
+ () => this.onBeforeUnloadHandler(),
7
+ (message) => this.onMessageHandler(message)
8
+ ];
9
+ onBCMessageHandler;
10
+ onElectedLeaderHandler;
11
+ // Auxiliary variable needed for handling beforeUnload.
12
+ // Closing a tab causes the elector to be killed immediately
13
+ wasLeader = false;
14
+ initialized = false;
15
+ constructor(name, onBCMessageHandler, onElectedLeaderHandler) {
16
+ this.onBCMessageHandler = onBCMessageHandler;
17
+ this.onElectedLeaderHandler = onElectedLeaderHandler;
18
+ this.channel = new BroadcastChannel(name);
19
+ this.elector = createLeaderElection(this.channel);
20
+ }
21
+ async init() {
22
+ if (this.initialized) {
23
+ return;
24
+ }
25
+ const hasLeader = await this.elector.hasLeader();
26
+ if (!hasLeader) {
27
+ await this.elector.awaitLeadership();
28
+ this.wasLeader = this.isLeader();
29
+ }
30
+ this.channel.onmessage = this.eventListeners[1];
31
+ window?.addEventListener('beforeunload', this.eventListeners[0]);
32
+ this.initialized = true;
33
+ }
34
+ async onBeforeUnloadHandler() {
35
+ if (this.wasLeader) {
36
+ await this.elector.die();
37
+ this.postMessage({ type: 'LEADER_DEAD' });
38
+ }
39
+ window?.removeEventListener('beforeunload', this.eventListeners[0]);
40
+ this.channel.removeEventListener('message', this.eventListeners[1]);
41
+ }
42
+ async onMessageHandler(message) {
43
+ if (message.type === 'LEADER_DEAD') {
44
+ await this.elector.awaitLeadership();
45
+ this.wasLeader = this.isLeader();
46
+ if (this.isLeader()) {
47
+ this.onElectedLeaderHandler();
48
+ }
49
+ return;
50
+ }
51
+ this.onBCMessageHandler(message);
52
+ }
53
+ isLeader() {
54
+ return this.elector.isLeader;
55
+ }
56
+ async getLeadership() {
57
+ return this.elector.awaitLeadership();
58
+ }
59
+ async hasLeader() {
60
+ return this.elector.hasLeader();
61
+ }
62
+ postMessage(message) {
63
+ this.channel.postMessage(message);
64
+ }
65
+ }
66
+ //# sourceMappingURL=multi-tab-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-tab-channel.js","sourceRoot":"","sources":["../../../src/utils/multi-tab-channel.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@tezos-x/octez.connect-core",
3
+ "version": "0.9.0",
4
+ "description": "This package contains internal methods that are used by both the dApp and wallet client.",
5
+ "author": "Andreas Gassmann <a.gassmann@papers.ch>",
6
+ "license": "ISC",
7
+ "main": "dist/cjs/index.js",
8
+ "module": "dist/esm/index.js",
9
+ "types": "dist/esm/index.d.ts",
10
+ "exports": {
11
+ "require": "./dist/cjs/index.js",
12
+ "import": "./dist/esm/index.js"
13
+ },
14
+ "directories": {
15
+ "lib": "dist/esm",
16
+ "test": "__tests__"
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/trilitech/octez.connect-sdk.git"
27
+ },
28
+ "scripts": {
29
+ "tsc": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json",
30
+ "test": "jest"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/trilitech/octez.connect-sdk/issues"
34
+ },
35
+ "dependencies": {
36
+ "@stablelib/ed25519": "^2.0.2",
37
+ "@stablelib/nacl": "^2.0.1",
38
+ "@stablelib/utf8": "^2.0.1",
39
+ "@stablelib/x25519-session": "^2.0.1",
40
+ "@tezos-x/octez.connect-types": "0.9.0",
41
+ "@tezos-x/octez.connect-utils": "0.9.0",
42
+ "broadcast-channel": "^7.1.0",
43
+ "bs58check": "4.0.0"
44
+ },
45
+ "gitHead": "730911e2d7fd40331a8486a7eaac8fc2b247082e"
46
+ }