@massalabs/wallet-provider 1.4.2-dev.20230922132805 → 1.4.2-dev.20230926140020

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 (158) hide show
  1. package/dist/cmd/bearbyWallet/BearbyConnect.d.ts.map +1 -1
  2. package/dist/cmd/bearbyWallet/BearbyConnect.js +1 -4
  3. package/dist/cmd/bearbyWallet/BearbyConnect.js.map +1 -1
  4. package/dist/cmd/connector/Connector.d.ts +8 -3
  5. package/dist/cmd/connector/Connector.d.ts.map +1 -1
  6. package/dist/cmd/connector/Connector.js +11 -2
  7. package/dist/cmd/connector/Connector.js.map +1 -1
  8. package/dist/cmd/index.d.ts +1 -0
  9. package/dist/cmd/index.d.ts.map +1 -1
  10. package/dist/cmd/index.js +1 -1
  11. package/dist/cmd/index.js.map +1 -1
  12. package/dist/cmd/massaStation/MassaStationDiscovery.d.ts +1 -1
  13. package/dist/cmd/massaStation/MassaStationDiscovery.d.ts.map +1 -1
  14. package/dist/cmd/massaStation/MassaStationDiscovery.js +12 -12
  15. package/dist/cmd/massaStation/MassaStationDiscovery.js.map +1 -1
  16. package/dist/cmd/massaStation/MassaStationProvider.d.ts +3 -1
  17. package/dist/cmd/massaStation/MassaStationProvider.d.ts.map +1 -1
  18. package/dist/cmd/massaStation/MassaStationProvider.js +2 -1
  19. package/dist/cmd/massaStation/MassaStationProvider.js.map +1 -1
  20. package/dist/cmd/massaStation/types.d.ts +9 -0
  21. package/dist/cmd/massaStation/types.d.ts.map +1 -1
  22. package/dist/cmd/massaStation/types.js.map +1 -1
  23. package/dist/esm/bearbyWallet/BearbyConnect.d.ts.map +1 -1
  24. package/dist/esm/bearbyWallet/BearbyConnect.js +1 -4
  25. package/dist/esm/bearbyWallet/BearbyConnect.js.map +1 -1
  26. package/dist/esm/connector/Connector.d.ts +8 -3
  27. package/dist/esm/connector/Connector.d.ts.map +1 -1
  28. package/dist/esm/connector/Connector.js +11 -2
  29. package/dist/esm/connector/Connector.js.map +1 -1
  30. package/dist/esm/index.d.ts +1 -0
  31. package/dist/esm/index.d.ts.map +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/massaStation/MassaStationDiscovery.d.ts +1 -1
  35. package/dist/esm/massaStation/MassaStationDiscovery.d.ts.map +1 -1
  36. package/dist/esm/massaStation/MassaStationDiscovery.js +12 -12
  37. package/dist/esm/massaStation/MassaStationDiscovery.js.map +1 -1
  38. package/dist/esm/massaStation/MassaStationProvider.d.ts +3 -1
  39. package/dist/esm/massaStation/MassaStationProvider.d.ts.map +1 -1
  40. package/dist/esm/massaStation/MassaStationProvider.js +4 -3
  41. package/dist/esm/massaStation/MassaStationProvider.js.map +1 -1
  42. package/dist/esm/massaStation/types.d.ts +9 -0
  43. package/dist/esm/massaStation/types.d.ts.map +1 -1
  44. package/dist/esm/massaStation/types.js.map +1 -1
  45. package/package.json +7 -16
  46. package/bundle.js +0 -8998
  47. package/bundle.min.js +0 -3
  48. package/dist/account/Account.d.ts +0 -104
  49. package/dist/account/Account.d.ts.map +0 -1
  50. package/dist/account/Account.js +0 -174
  51. package/dist/account/AccountBalance.d.ts +0 -14
  52. package/dist/account/AccountBalance.d.ts.map +0 -1
  53. package/dist/account/AccountBalance.js +0 -1
  54. package/dist/account/AccountSign.d.ts +0 -23
  55. package/dist/account/AccountSign.d.ts.map +0 -1
  56. package/dist/account/AccountSign.js +0 -1
  57. package/dist/account/IAccount.d.ts +0 -21
  58. package/dist/account/IAccount.d.ts.map +0 -1
  59. package/dist/account/IAccount.js +0 -1
  60. package/dist/account/IAccountCallSCRequest.d.ts +0 -25
  61. package/dist/account/IAccountCallSCRequest.d.ts.map +0 -1
  62. package/dist/account/IAccountCallSCRequest.js +0 -1
  63. package/dist/account/IAccountDetails.d.ts +0 -8
  64. package/dist/account/IAccountDetails.d.ts.map +0 -1
  65. package/dist/account/IAccountDetails.js +0 -1
  66. package/dist/account/IAccountRolls.d.ts +0 -8
  67. package/dist/account/IAccountRolls.d.ts.map +0 -1
  68. package/dist/account/IAccountRolls.js +0 -1
  69. package/dist/account/IAccountSendTransaction.d.ts +0 -9
  70. package/dist/account/IAccountSendTransaction.d.ts.map +0 -1
  71. package/dist/account/IAccountSendTransaction.js +0 -1
  72. package/dist/account/index.d.ts +0 -9
  73. package/dist/account/index.d.ts.map +0 -1
  74. package/dist/account/index.js +0 -1
  75. package/dist/bearbyWallet/BalanceResponse.d.ts +0 -28
  76. package/dist/bearbyWallet/BalanceResponse.d.ts.map +0 -1
  77. package/dist/bearbyWallet/BalanceResponse.js +0 -1
  78. package/dist/bearbyWallet/BearbyAccount.d.ts +0 -86
  79. package/dist/bearbyWallet/BearbyAccount.d.ts.map +0 -1
  80. package/dist/bearbyWallet/BearbyAccount.js +0 -275
  81. package/dist/bearbyWallet/BearbyConnect.d.ts +0 -4
  82. package/dist/bearbyWallet/BearbyConnect.d.ts.map +0 -1
  83. package/dist/bearbyWallet/BearbyConnect.js +0 -19
  84. package/dist/bearbyWallet/BearbyProvider.d.ts +0 -20
  85. package/dist/bearbyWallet/BearbyProvider.d.ts.map +0 -1
  86. package/dist/bearbyWallet/BearbyProvider.js +0 -43
  87. package/dist/bearbyWallet/ICallData.d.ts +0 -26
  88. package/dist/bearbyWallet/ICallData.d.ts.map +0 -1
  89. package/dist/bearbyWallet/ICallData.js +0 -1
  90. package/dist/bearbyWallet/NodeStatus.d.ts +0 -84
  91. package/dist/bearbyWallet/NodeStatus.d.ts.map +0 -1
  92. package/dist/bearbyWallet/NodeStatus.js +0 -1
  93. package/dist/bearbyWallet/jsonRpcMethods.d.ts +0 -31
  94. package/dist/bearbyWallet/jsonRpcMethods.d.ts.map +0 -1
  95. package/dist/bearbyWallet/jsonRpcMethods.js +0 -33
  96. package/dist/bearbyWallet/jsonRpcResponseData.d.ts +0 -13
  97. package/dist/bearbyWallet/jsonRpcResponseData.d.ts.map +0 -1
  98. package/dist/bearbyWallet/jsonRpcResponseData.js +0 -1
  99. package/dist/connector/Connector.d.ts +0 -87
  100. package/dist/connector/Connector.d.ts.map +0 -1
  101. package/dist/connector/Connector.js +0 -174
  102. package/dist/connector/ICustomEventMessageRequest.d.ts +0 -10
  103. package/dist/connector/ICustomEventMessageRequest.d.ts.map +0 -1
  104. package/dist/connector/ICustomEventMessageRequest.js +0 -1
  105. package/dist/connector/ICustomEventMessageResponse.d.ts +0 -11
  106. package/dist/connector/ICustomEventMessageResponse.d.ts.map +0 -1
  107. package/dist/connector/ICustomEventMessageResponse.js +0 -1
  108. package/dist/connector/IRegisterEvent.d.ts +0 -8
  109. package/dist/connector/IRegisterEvent.d.ts.map +0 -1
  110. package/dist/connector/IRegisterEvent.js +0 -1
  111. package/dist/connector/index.d.ts +0 -5
  112. package/dist/connector/index.d.ts.map +0 -1
  113. package/dist/connector/index.js +0 -1
  114. package/dist/index.d.ts +0 -50
  115. package/dist/index.d.ts.map +0 -1
  116. package/dist/index.js +0 -87
  117. package/dist/massaStation/MassaStationAccount.d.ts +0 -105
  118. package/dist/massaStation/MassaStationAccount.d.ts.map +0 -1
  119. package/dist/massaStation/MassaStationAccount.js +0 -313
  120. package/dist/massaStation/MassaStationDiscovery.d.ts +0 -57
  121. package/dist/massaStation/MassaStationDiscovery.d.ts.map +0 -1
  122. package/dist/massaStation/MassaStationDiscovery.js +0 -75
  123. package/dist/massaStation/MassaStationProvider.d.ts +0 -101
  124. package/dist/massaStation/MassaStationProvider.d.ts.map +0 -1
  125. package/dist/massaStation/MassaStationProvider.js +0 -212
  126. package/dist/massaStation/RequestHandler.d.ts +0 -47
  127. package/dist/massaStation/RequestHandler.d.ts.map +0 -1
  128. package/dist/massaStation/RequestHandler.js +0 -130
  129. package/dist/massaStation/types.d.ts +0 -11
  130. package/dist/massaStation/types.d.ts.map +0 -1
  131. package/dist/massaStation/types.js +0 -1
  132. package/dist/provider/AccountDeletion.d.ts +0 -24
  133. package/dist/provider/AccountDeletion.d.ts.map +0 -1
  134. package/dist/provider/AccountDeletion.js +0 -10
  135. package/dist/provider/AccountImport.d.ts +0 -26
  136. package/dist/provider/AccountImport.d.ts.map +0 -1
  137. package/dist/provider/AccountImport.js +0 -10
  138. package/dist/provider/AccoutGeneration.d.ts +0 -8
  139. package/dist/provider/AccoutGeneration.d.ts.map +0 -1
  140. package/dist/provider/AccoutGeneration.js +0 -1
  141. package/dist/provider/IProvider.d.ts +0 -17
  142. package/dist/provider/IProvider.d.ts.map +0 -1
  143. package/dist/provider/IProvider.js +0 -1
  144. package/dist/provider/Provider.d.ts +0 -74
  145. package/dist/provider/Provider.d.ts.map +0 -1
  146. package/dist/provider/Provider.js +0 -138
  147. package/dist/provider/index.d.ts +0 -5
  148. package/dist/provider/index.d.ts.map +0 -1
  149. package/dist/provider/index.js +0 -3
  150. package/dist/utils/argsToBase64.d.ts +0 -16
  151. package/dist/utils/argsToBase64.d.ts.map +0 -1
  152. package/dist/utils/argsToBase64.js +0 -19
  153. package/dist/utils/time.d.ts +0 -77
  154. package/dist/utils/time.d.ts.map +0 -1
  155. package/dist/utils/time.js +0 -112
  156. package/dist/utils/typeCheck.d.ts +0 -2
  157. package/dist/utils/typeCheck.d.ts.map +0 -1
  158. package/dist/utils/typeCheck.js +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"BearbyConnect.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAKrD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGtD"}
1
+ {"version":3,"file":"BearbyConnect.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAErD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGtD"}
@@ -3,10 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.disconnectBearby = exports.connectBearby = exports.detectBearby = void 0;
4
4
  const bearby_js_1 = require("@hicaru/bearby.js");
5
5
  async function detectBearby() {
6
- if (globalThis.window && globalThis.window['bearby']) {
7
- return true;
8
- }
9
- return false;
6
+ return !!globalThis?.window?.bearby;
10
7
  }
11
8
  exports.detectBearby = detectBearby;
12
9
  async function connectBearby() {
@@ -1 +1 @@
1
- {"version":3,"file":"BearbyConnect.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAElC,KAAK,UAAU,YAAY;IAChC,IAAI,UAAU,CAAC,MAAM,IAAK,UAAU,CAAC,MAAc,CAAC,QAAQ,CAAC,EAAE;QAC7D,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,oCAKC;AAEM,KAAK,UAAU,aAAa;IACjC,IAAI;QACF,MAAM,gBAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KAC7B;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACjB;AACH,CAAC;AAND,sCAMC;AAEM,KAAK,UAAU,gBAAgB;IACpC,MAAM,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC;AAHD,4CAGC","sourcesContent":["import { web3 } from '@hicaru/bearby.js';\n\nexport async function detectBearby(): Promise<boolean> {\n if (globalThis.window && (globalThis.window as any)['bearby']) {\n return true;\n }\n return false;\n}\n\nexport async function connectBearby(): Promise<void> {\n try {\n await web3.wallet.connect();\n } catch (ex) {\n console.log(ex);\n }\n}\n\nexport async function disconnectBearby(): Promise<void> {\n await web3.wallet.disconnect();\n console.log('Bearby disconnected');\n}\n"]}
1
+ {"version":3,"file":"BearbyConnect.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAElC,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;AACtC,CAAC;AAFD,oCAEC;AAEM,KAAK,UAAU,aAAa;IACjC,IAAI;QACF,MAAM,gBAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KAC7B;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACjB;AACH,CAAC;AAND,sCAMC;AAEM,KAAK,UAAU,gBAAgB;IACpC,MAAM,gBAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC;AAHD,4CAGC","sourcesContent":["import { web3 } from '@hicaru/bearby.js';\n\nexport async function detectBearby(): Promise<boolean> {\n return !!globalThis?.window?.bearby;\n}\n\nexport async function connectBearby(): Promise<void> {\n try {\n await web3.wallet.connect();\n } catch (ex) {\n console.log(ex);\n }\n}\n\nexport async function disconnectBearby(): Promise<void> {\n await web3.wallet.disconnect();\n console.log('Bearby disconnected');\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { AvailableCommands, IAccountBalanceRequest, IAccountBalanceResponse, IAccountDeletionRequest, IAccountDeletionResponse, IAccountImportRequest, IAccountImportResponse, IAccountSignRequest, IAccountSignResponse } from '..';
2
2
  import { IAccount } from '../account/IAccount';
3
+ import { PluginInfo } from '../massaStation/types';
3
4
  /**
4
5
  * A constant string that is used to identify the HTML element that is used for
5
6
  * communication between the web page script and the content script.
@@ -19,6 +20,7 @@ declare class Connector {
19
20
  private registeredProviders;
20
21
  private pendingRequests;
21
22
  private massaStationListener;
23
+ private providersInfo;
22
24
  /**
23
25
  * Connector constructor
24
26
  *
@@ -69,9 +71,12 @@ declare class Connector {
69
71
  * @returns The registered provider associated with its unique key.
70
72
  *
71
73
  */
72
- getWalletProviders(): {
73
- [key: string]: string;
74
- };
74
+ getWalletProviders(): Record<string, string>;
75
+ /**
76
+ * This method returns the provider wallet info.
77
+ *
78
+ */
79
+ getProviderInfo(providerName: string): PluginInfo | undefined;
75
80
  /**
76
81
  * This method handles the response from the content script by
77
82
  * calling the response callback with the response and error objects.
@@ -1 +1 @@
1
- {"version":3,"file":"Connector.d.ts","sourceRoot":"","sources":["../../../src/connector/Connector.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,IAAI,CAAC;AAOZ,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,KAAK,gBAAgB,GAAG,CACtB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,KAAK,GAAG,IAAI,KAChB,OAAO,CAAC;AAEb,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,wBAAwB,GACxB,QAAQ,EAAE,GACV,MAAM,CAAC;AAEX;;;;;;GAMG;AACH,cAAM,SAAS;IACb,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,oBAAoB,CAAwB;IAEpD;;;;;;;;;;;OAWG;;IAkBH;;;;;;;;;;OAUG;IACH,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,wBAAwB;IAWnB,0BAA0B;IAQvC;;;;;;;;;;;;;;;OAeG;IAEI,0BAA0B,CAC/B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,gBAAgB;IAgCpC;;;;;OAKG;IACI,kBAAkB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAItD;;;;;;;OAOG;IACH,OAAO,CAAC,+BAA+B;CAuBxC;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"Connector.d.ts","sourceRoot":"","sources":["../../../src/connector/Connector.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,IAAI,CAAC;AAOZ,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,KAAK,gBAAgB,GAAG,CACtB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,KAAK,GAAG,IAAI,KAChB,OAAO,CAAC;AAEb,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,wBAAwB,GACxB,QAAQ,EAAE,GACV,MAAM,CAAC;AAEX;;;;;;GAMG;AACH,cAAM,SAAS;IACb,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,oBAAoB,CAAwB;IAEpD,OAAO,CAAC,aAAa,CAAkC;IAEvD;;;;;;;;;;;OAWG;;IAkBH;;;;;;;;;;OAUG;IACH,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,wBAAwB;IAgBnB,0BAA0B;IAQvC;;;;;;;;;;;;;;;OAeG;IAEI,0BAA0B,CAC/B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,gBAAgB;IAgCpC;;;;;OAKG;IACI,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAInD;;;OAGG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIpE;;;;;;;OAOG;IACH,OAAO,CAAC,+BAA+B;CAuBxC;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
@@ -41,6 +41,7 @@ class Connector {
41
41
  */
42
42
  constructor() {
43
43
  this.registeredProviders = {};
44
+ this.providersInfo = {};
44
45
  if (typeof document !== 'undefined') {
45
46
  this.pendingRequests = new Map();
46
47
  this.massaStationListener = new MassaStationDiscovery_1.MassaStationDiscovery();
@@ -86,8 +87,9 @@ class Connector {
86
87
  }
87
88
  }
88
89
  initMassaStationListener() {
89
- this.massaStationListener.on(MassaStationDiscovery_1.ON_MASSA_STATION_DISCOVERED, () => {
90
+ this.massaStationListener.on(MassaStationDiscovery_1.ON_MASSA_STATION_DISCOVERED, (walletModule) => {
90
91
  this.registeredProviders[MassaStationProvider_1.MASSA_STATION_PROVIDER_NAME] = `${exports.MASSA_WINDOW_OBJECT}_${MassaStationProvider_1.MASSA_STATION_PROVIDER_NAME}`;
92
+ this.providersInfo[MassaStationProvider_1.MASSA_STATION_PROVIDER_NAME] = walletModule;
91
93
  });
92
94
  this.massaStationListener.on(MassaStationDiscovery_1.ON_MASSA_STATION_DISCONNECTED, () => {
93
95
  delete this.registeredProviders[MassaStationProvider_1.MASSA_STATION_PROVIDER_NAME];
@@ -98,7 +100,7 @@ class Connector {
98
100
  await this.massaStationListener.startListening();
99
101
  }
100
102
  catch (e) {
101
- console.log('MassaStation is not detected');
103
+ console.log('get MassaStation provider error: ', e);
102
104
  }
103
105
  }
104
106
  /**
@@ -146,6 +148,13 @@ class Connector {
146
148
  getWalletProviders() {
147
149
  return this.registeredProviders;
148
150
  }
151
+ /**
152
+ * This method returns the provider wallet info.
153
+ *
154
+ */
155
+ getProviderInfo(providerName) {
156
+ return this.providersInfo[providerName];
157
+ }
149
158
  /**
150
159
  * This method handles the response from the content script by
151
160
  * calling the response callback with the response and error objects.
@@ -1 +1 @@
1
- {"version":3,"file":"Connector.js","sourceRoot":"","sources":["../../../src/connector/Connector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This file defines a TypeScript module named connector.\n * It is the tool that allows the 'provider' and 'account' objects to communicate with the web page script.\n *\n * @remarks\n * - If you are only looking to use our library, the connector object will not be useful to you.\n * - If you want to work on this repo, you will probably be interested in this object\n *\n */\nimport { uid } from 'uid';\nimport { ICustomEventMessageResponse } from './ICustomEventMessageResponse';\nimport { ICustomEventMessageRequest } from './ICustomEventMessageRequest';\nimport { IRegisterEvent } from './IRegisterEvent';\nimport {\n AvailableCommands,\n IAccountBalanceRequest,\n IAccountBalanceResponse,\n IAccountDeletionRequest,\n IAccountDeletionResponse,\n IAccountImportRequest,\n IAccountImportResponse,\n IAccountSignRequest,\n IAccountSignResponse,\n} from '..';\nimport {\n ON_MASSA_STATION_DISCOVERED,\n ON_MASSA_STATION_DISCONNECTED,\n MassaStationDiscovery,\n} from '../massaStation/MassaStationDiscovery';\nimport { MASSA_STATION_PROVIDER_NAME } from '../massaStation/MassaStationProvider';\nimport { IAccount } from '../account/IAccount';\n\n/**\n * A constant string that is used to identify the HTML element that is used for\n * communication between the web page script and the content script.\n */\nexport const MASSA_WINDOW_OBJECT = 'massaWalletProvider';\n\ntype CallbackFunction = (\n result: AllowedResponses,\n error: Error | null,\n) => unknown;\n\nexport type AllowedRequests =\n | object\n | IAccountBalanceRequest\n | IAccountSignRequest\n | IAccountImportRequest\n | IAccountDeletionRequest;\n\nexport type AllowedResponses =\n | object\n | IAccountBalanceResponse\n | IAccountSignResponse\n | IAccountImportResponse\n | IAccountDeletionResponse\n | IAccount[]\n | string;\n\n/**\n * This class enables communication with the content script by sending and receiving messages.\n * @remarks\n * - This class is used to send messages to the content script and to receive messages from the content script.\n * - It is used to send messages to the content script and to receive messages from the content script.\n *\n */\nclass Connector {\n private registeredProviders: { [key: string]: string } = {};\n private pendingRequests: Map<string, CallbackFunction>;\n private massaStationListener: MassaStationDiscovery;\n\n /**\n * Connector constructor\n *\n * @remarks\n * - The Connector constructor takes no arguments.\n * - It creates a Map object that is used to store pending requests.\n * - It creates an HTML element that is used to communicate with the content script.\n * - It adds an event listener to the HTML element that is used to communicate with the content script.\n *\n * @returns An instance of the Connector class.\n *\n */\n public constructor() {\n if (typeof document !== 'undefined') {\n this.pendingRequests = new Map<string, CallbackFunction>();\n this.massaStationListener = new MassaStationDiscovery();\n this.initMassaStationListener();\n this.register();\n\n // start listening to messages from content script\n document\n .getElementById(MASSA_WINDOW_OBJECT)\n .addEventListener(\n 'message',\n this.handleResponseFromContentScript.bind(this),\n );\n }\n }\n\n /**\n * This method adds a register listener in the web page.\n * It listens to the 'register' event.\n *\n * @returns void\n *\n * @remarks\n * - It is used to register a new provider.\n * - This method creates a new HTML element and a listener that listens to the register event.\n *\n */\n private register() {\n // global event target to use for all wallet provider\n // check if document exist\n if (typeof document !== 'undefined') {\n if (!document.getElementById(MASSA_WINDOW_OBJECT)) {\n const inv = document.createElement('p');\n inv.id = MASSA_WINDOW_OBJECT;\n inv.setAttribute('style', 'display:none');\n document.body.appendChild(inv);\n }\n\n // add an invisible HTML element and set a listener to it like the following\n // hook up register handler\n document\n .getElementById(MASSA_WINDOW_OBJECT)\n .addEventListener('register', (evt: CustomEvent) => {\n const payload: IRegisterEvent = evt.detail;\n const providerEventTargetName = `${MASSA_WINDOW_OBJECT}_${payload.providerName}`;\n this.registeredProviders[payload.providerName] =\n providerEventTargetName;\n });\n }\n }\n\n private initMassaStationListener() {\n this.massaStationListener.on(ON_MASSA_STATION_DISCOVERED, () => {\n this.registeredProviders[\n MASSA_STATION_PROVIDER_NAME\n ] = `${MASSA_WINDOW_OBJECT}_${MASSA_STATION_PROVIDER_NAME}`;\n });\n this.massaStationListener.on(ON_MASSA_STATION_DISCONNECTED, () => {\n delete this.registeredProviders[MASSA_STATION_PROVIDER_NAME];\n });\n }\n\n public async startMassaStationDiscovery() {\n try {\n await this.massaStationListener.startListening();\n } catch (e) {\n console.log('MassaStation is not detected');\n }\n }\n\n /**\n * This method sends a message from the webpage script to the content script.\n *\n * @remarks\n * Sends a message to the content script using the specified provider name, command, and parameters,\n *\n * @privateRemarks\n * This method registers the response callback with a unique ID.\n *\n * @param providerName - The name of the provider.\n * @param command - The command that is sent to the content script (among the {@link AvailableCommands}).\n * @param params - The parameters that are sent to the content script.\n * @param responseCallback - The callback function that is called when the content script sends a response.\n * @returns void\n *\n */\n\n public sendMessageToContentScript(\n providerName: string,\n command: AvailableCommands,\n params: AllowedRequests,\n responseCallback: CallbackFunction,\n ) {\n if (!Object.values(AvailableCommands).includes(command)) {\n throw new Error(`Unknown command ${command}`);\n }\n\n const requestId = uid();\n const eventMessageRequest: ICustomEventMessageRequest = {\n params,\n requestId,\n };\n this.pendingRequests.set(requestId, responseCallback);\n\n // dispatch an event to the specific provider event target\n const specificProviderEventTarget = document?.getElementById(\n `${this.registeredProviders[providerName]}`,\n ) as EventTarget;\n if (!specificProviderEventTarget) {\n throw new Error(\n `Registered provider with name ${providerName} does not exist`,\n );\n }\n const isDispatched = specificProviderEventTarget.dispatchEvent(\n new CustomEvent(command, { detail: eventMessageRequest }),\n );\n if (!isDispatched) {\n throw new Error(\n `Could not dispatch a message to ${this.registeredProviders[providerName]}`,\n );\n }\n }\n\n /**\n * This method returns the registered providers.\n *\n * @returns The registered provider associated with its unique key.\n *\n */\n public getWalletProviders(): { [key: string]: string } {\n return this.registeredProviders;\n }\n\n /**\n * This method handles the response from the content script by\n * calling the response callback with the response and error objects.\n *\n * @param event - The event that is sent from the content script.\n * @returns void\n *\n */\n private handleResponseFromContentScript(event: CustomEvent) {\n const { result, error, requestId }: ICustomEventMessageResponse =\n event.detail;\n\n const responseCallback: CallbackFunction =\n this.pendingRequests.get(requestId);\n\n if (responseCallback) {\n if (error) {\n responseCallback(null, new Error(error.message));\n } else {\n responseCallback(result, null);\n }\n const deleted = this.pendingRequests.delete(requestId);\n if (!deleted) {\n console.error(`Error deleting a pending request with id ${requestId}`);\n }\n } else {\n console.error(\n `Request Id ${requestId} not found in response callback map`,\n );\n }\n }\n}\n\nexport const connector = new Connector();\n"]}
1
+ {"version":3,"file":"Connector.js","sourceRoot":"","sources":["../../../src/connector/Connector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This file defines a TypeScript module named connector.\n * It is the tool that allows the 'provider' and 'account' objects to communicate with the web page script.\n *\n * @remarks\n * - If you are only looking to use our library, the connector object will not be useful to you.\n * - If you want to work on this repo, you will probably be interested in this object\n *\n */\nimport { uid } from 'uid';\nimport { ICustomEventMessageResponse } from './ICustomEventMessageResponse';\nimport { ICustomEventMessageRequest } from './ICustomEventMessageRequest';\nimport { IRegisterEvent } from './IRegisterEvent';\nimport {\n AvailableCommands,\n IAccountBalanceRequest,\n IAccountBalanceResponse,\n IAccountDeletionRequest,\n IAccountDeletionResponse,\n IAccountImportRequest,\n IAccountImportResponse,\n IAccountSignRequest,\n IAccountSignResponse,\n} from '..';\nimport {\n ON_MASSA_STATION_DISCOVERED,\n ON_MASSA_STATION_DISCONNECTED,\n MassaStationDiscovery,\n} from '../massaStation/MassaStationDiscovery';\nimport { MASSA_STATION_PROVIDER_NAME } from '../massaStation/MassaStationProvider';\nimport { IAccount } from '../account/IAccount';\nimport { PluginInfo } from '../massaStation/types';\n\n/**\n * A constant string that is used to identify the HTML element that is used for\n * communication between the web page script and the content script.\n */\nexport const MASSA_WINDOW_OBJECT = 'massaWalletProvider';\n\ntype CallbackFunction = (\n result: AllowedResponses,\n error: Error | null,\n) => unknown;\n\nexport type AllowedRequests =\n | object\n | IAccountBalanceRequest\n | IAccountSignRequest\n | IAccountImportRequest\n | IAccountDeletionRequest;\n\nexport type AllowedResponses =\n | object\n | IAccountBalanceResponse\n | IAccountSignResponse\n | IAccountImportResponse\n | IAccountDeletionResponse\n | IAccount[]\n | string;\n\n/**\n * This class enables communication with the content script by sending and receiving messages.\n * @remarks\n * - This class is used to send messages to the content script and to receive messages from the content script.\n * - It is used to send messages to the content script and to receive messages from the content script.\n *\n */\nclass Connector {\n private registeredProviders: Record<string, string> = {};\n private pendingRequests: Map<string, CallbackFunction>;\n private massaStationListener: MassaStationDiscovery;\n\n private providersInfo: Record<string, PluginInfo> = {};\n\n /**\n * Connector constructor\n *\n * @remarks\n * - The Connector constructor takes no arguments.\n * - It creates a Map object that is used to store pending requests.\n * - It creates an HTML element that is used to communicate with the content script.\n * - It adds an event listener to the HTML element that is used to communicate with the content script.\n *\n * @returns An instance of the Connector class.\n *\n */\n public constructor() {\n if (typeof document !== 'undefined') {\n this.pendingRequests = new Map<string, CallbackFunction>();\n this.massaStationListener = new MassaStationDiscovery();\n this.initMassaStationListener();\n this.register();\n\n // start listening to messages from content script\n document\n .getElementById(MASSA_WINDOW_OBJECT)\n .addEventListener(\n 'message',\n this.handleResponseFromContentScript.bind(this),\n );\n }\n }\n\n /**\n * This method adds a register listener in the web page.\n * It listens to the 'register' event.\n *\n * @returns void\n *\n * @remarks\n * - It is used to register a new provider.\n * - This method creates a new HTML element and a listener that listens to the register event.\n *\n */\n private register() {\n // global event target to use for all wallet provider\n // check if document exist\n if (typeof document !== 'undefined') {\n if (!document.getElementById(MASSA_WINDOW_OBJECT)) {\n const inv = document.createElement('p');\n inv.id = MASSA_WINDOW_OBJECT;\n inv.setAttribute('style', 'display:none');\n document.body.appendChild(inv);\n }\n\n // add an invisible HTML element and set a listener to it like the following\n // hook up register handler\n document\n .getElementById(MASSA_WINDOW_OBJECT)\n .addEventListener('register', (evt: CustomEvent) => {\n const payload: IRegisterEvent = evt.detail;\n const providerEventTargetName = `${MASSA_WINDOW_OBJECT}_${payload.providerName}`;\n this.registeredProviders[payload.providerName] =\n providerEventTargetName;\n });\n }\n }\n\n private initMassaStationListener() {\n this.massaStationListener.on(\n ON_MASSA_STATION_DISCOVERED,\n (walletModule: PluginInfo) => {\n this.registeredProviders[\n MASSA_STATION_PROVIDER_NAME\n ] = `${MASSA_WINDOW_OBJECT}_${MASSA_STATION_PROVIDER_NAME}`;\n\n this.providersInfo[MASSA_STATION_PROVIDER_NAME] = walletModule;\n },\n );\n this.massaStationListener.on(ON_MASSA_STATION_DISCONNECTED, () => {\n delete this.registeredProviders[MASSA_STATION_PROVIDER_NAME];\n });\n }\n\n public async startMassaStationDiscovery() {\n try {\n await this.massaStationListener.startListening();\n } catch (e) {\n console.log('get MassaStation provider error: ', e);\n }\n }\n\n /**\n * This method sends a message from the webpage script to the content script.\n *\n * @remarks\n * Sends a message to the content script using the specified provider name, command, and parameters,\n *\n * @privateRemarks\n * This method registers the response callback with a unique ID.\n *\n * @param providerName - The name of the provider.\n * @param command - The command that is sent to the content script (among the {@link AvailableCommands}).\n * @param params - The parameters that are sent to the content script.\n * @param responseCallback - The callback function that is called when the content script sends a response.\n * @returns void\n *\n */\n\n public sendMessageToContentScript(\n providerName: string,\n command: AvailableCommands,\n params: AllowedRequests,\n responseCallback: CallbackFunction,\n ) {\n if (!Object.values(AvailableCommands).includes(command)) {\n throw new Error(`Unknown command ${command}`);\n }\n\n const requestId = uid();\n const eventMessageRequest: ICustomEventMessageRequest = {\n params,\n requestId,\n };\n this.pendingRequests.set(requestId, responseCallback);\n\n // dispatch an event to the specific provider event target\n const specificProviderEventTarget = document?.getElementById(\n `${this.registeredProviders[providerName]}`,\n ) as EventTarget;\n if (!specificProviderEventTarget) {\n throw new Error(\n `Registered provider with name ${providerName} does not exist`,\n );\n }\n const isDispatched = specificProviderEventTarget.dispatchEvent(\n new CustomEvent(command, { detail: eventMessageRequest }),\n );\n if (!isDispatched) {\n throw new Error(\n `Could not dispatch a message to ${this.registeredProviders[providerName]}`,\n );\n }\n }\n\n /**\n * This method returns the registered providers.\n *\n * @returns The registered provider associated with its unique key.\n *\n */\n public getWalletProviders(): Record<string, string> {\n return this.registeredProviders;\n }\n\n /**\n * This method returns the provider wallet info.\n *\n */\n public getProviderInfo(providerName: string): PluginInfo | undefined {\n return this.providersInfo[providerName];\n }\n\n /**\n * This method handles the response from the content script by\n * calling the response callback with the response and error objects.\n *\n * @param event - The event that is sent from the content script.\n * @returns void\n *\n */\n private handleResponseFromContentScript(event: CustomEvent) {\n const { result, error, requestId }: ICustomEventMessageResponse =\n event.detail;\n\n const responseCallback: CallbackFunction =\n this.pendingRequests.get(requestId);\n\n if (responseCallback) {\n if (error) {\n responseCallback(null, new Error(error.message));\n } else {\n responseCallback(result, null);\n }\n const deleted = this.pendingRequests.delete(requestId);\n if (!deleted) {\n console.error(`Error deleting a pending request with id ${requestId}`);\n }\n } else {\n console.error(\n `Request Id ${requestId} not found in response callback map`,\n );\n }\n }\n}\n\nexport const connector = new Connector();\n"]}
@@ -4,6 +4,7 @@ import { Buffer } from 'buffer';
4
4
  declare global {
5
5
  interface Window {
6
6
  Buffer: typeof Buffer;
7
+ bearby?: unknown;
7
8
  }
8
9
  }
9
10
  import { IProvider } from './provider/IProvider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,OAAO,MAAM,CAAC;KACvB;CACF;AAQD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUjD,oBAAY,iBAAiB;IAC3B,oBAAoB,kBAAkB;IACtC,qBAAqB,mBAAmB;IACxC,qBAAqB,mBAAmB;IACxC,oBAAoB,mBAAmB;IACvC,kBAAkB,gBAAgB;IAClC,cAAc,oBAAoB;IAClC,WAAW,iBAAiB;IAC5B,0BAA0B,yBAAyB;IACnD,gBAAgB,uBAAuB;IACvC,eAAe,sBAAsB;IACrC,sBAAsB,6BAA6B;IACnD,aAAa,oBAAoB;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,KAAK,UAAO,EACZ,OAAO,SAAO,EACd,YAAY,SAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAuBtB;AAiBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAsB,GAAG,IAAI,CAU7E;AAED,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,QAAQ,EACR,OAAO,EACP,oBAAoB,EACpB,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,OAAO,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;CACF;AAQD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUjD,oBAAY,iBAAiB;IAC3B,oBAAoB,kBAAkB;IACtC,qBAAqB,mBAAmB;IACxC,qBAAqB,mBAAmB;IACxC,oBAAoB,mBAAmB;IACvC,kBAAkB,gBAAgB;IAClC,cAAc,oBAAoB;IAClC,WAAW,iBAAiB;IAC5B,0BAA0B,yBAAyB;IACnD,gBAAgB,uBAAuB;IACvC,eAAe,sBAAsB;IACrC,sBAAsB,6BAA6B;IACnD,aAAa,oBAAoB;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,KAAK,UAAO,EACZ,OAAO,SAAO,EACd,YAAY,SAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAuBtB;AAmBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAsB,GAAG,IAAI,CAU7E;AAED,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,QAAQ,EACR,OAAO,EACP,oBAAoB,EACpB,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/cmd/index.js CHANGED
@@ -60,7 +60,7 @@ function getProviderInstances() {
60
60
  const availableProviders = Object.keys(Connector_1.connector.getWalletProviders());
61
61
  const providerInstances = availableProviders.map((providerName) => {
62
62
  if (providerName === MassaStationProvider_1.MASSA_STATION_PROVIDER_NAME) {
63
- return new MassaStationProvider_1.MassaStationProvider();
63
+ return new MassaStationProvider_1.MassaStationProvider(Connector_1.connector.getProviderInfo(providerName));
64
64
  }
65
65
  else {
66
66
  return new Provider_1.Provider(providerName);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/** Polyfills */\nimport { Buffer } from 'buffer';\n\ndeclare global {\n interface Window {\n Buffer: typeof Buffer;\n }\n}\n\n// Check if we are on browser\nif (typeof window !== 'undefined') {\n window.Buffer = Buffer;\n}\n\nimport { MASSA_WINDOW_OBJECT, connector } from './connector/Connector';\nimport { IProvider } from './provider/IProvider';\nimport { Provider } from './provider/Provider';\nimport {\n MASSA_STATION_PROVIDER_NAME,\n MassaStationProvider,\n} from './massaStation/MassaStationProvider';\nimport { detectBearby } from './bearbyWallet/BearbyConnect';\nimport { BearbyProvider } from './bearbyWallet/BearbyProvider';\nimport { wait } from './utils/time';\n\nexport enum AvailableCommands {\n ProviderListAccounts = 'LIST_ACCOUNTS',\n ProviderDeleteAccount = 'DELETE_ACCOUNT',\n ProviderImportAccount = 'IMPORT_ACCOUNT',\n ProviderGetNodesUrls = 'GET_NODES_URLS',\n ProviderGetNetwork = 'GET_NETWORK',\n AccountBalance = 'ACCOUNT_BALANCE',\n AccountSign = 'ACCOUNT_SIGN',\n ProviderGenerateNewAccount = 'GENERATE_NEW_ACCOUNT',\n AccountSellRolls = 'ACCOUNT_SELL_ROLLS',\n AccountBuyRolls = 'ACCOUNT_BUY_ROLLS',\n AccountSendTransaction = 'ACCOUNT_SEND_TRANSACTION',\n AccountCallSC = 'ACCOUNT_CALL_SC',\n}\n\nexport interface ITransactionDetails {\n operationId: string;\n}\n\n/**\n * Get the list of providers that are available to interact with.\n *\n * @param retry - If true, will retry to get the list of providers if none are available.\n * @param pollInterval - The timeout in milliseconds to wait between retries. default is 2000ms.\n * @param timeout - The timeout in milliseconds to wait before giving up. default is 3000ms.\n *\n * @returns An array of providers.\n */\nexport async function providers(\n retry = true,\n timeout = 3000,\n pollInterval = 500,\n): Promise<IProvider[]> {\n const startTime = Date.now();\n\n await connector.startMassaStationDiscovery();\n\n let bearby: BearbyProvider | undefined;\n if (await detectBearby()) {\n bearby = new BearbyProvider('BEARBY');\n }\n\n while (Date.now() - startTime < timeout) {\n const providerInstances: IProvider[] = getProviderInstances();\n\n if (bearby) providerInstances.push(bearby);\n\n if (!retry || providerInstances.length > 0) {\n return providerInstances;\n }\n\n await wait(pollInterval);\n }\n\n return [];\n}\n\nfunction getProviderInstances() {\n const availableProviders = Object.keys(connector.getWalletProviders());\n\n const providerInstances: IProvider[] = availableProviders.map(\n (providerName) => {\n if (providerName === MASSA_STATION_PROVIDER_NAME) {\n return new MassaStationProvider();\n } else {\n return new Provider(providerName);\n }\n },\n );\n return providerInstances;\n}\n\n/**\n * Manually register a provider to interact with.\n *\n * @param name - The name of the provider.\n * @param id - The id of the HTML element that is used to communicate with the provider.\n */\nexport function registerProvider(name: string, id = MASSA_WINDOW_OBJECT): void {\n if (typeof document !== 'undefined') {\n const registerEvent = new CustomEvent('register', {\n detail: { providerName: name },\n });\n const element = document?.getElementById(id);\n if (element) {\n element.dispatchEvent(registerEvent);\n }\n }\n}\n\nexport { AllowedRequests, AllowedResponses } from './connector';\n\nexport {\n IAccountDetails,\n IAccountBalanceRequest,\n IAccountBalanceResponse,\n IAccountSignRequest,\n IAccountSignResponse,\n IAccount,\n Account,\n IAccountRollsRequest,\n IAccountSendTransactionRequest,\n IAccountCallSCRequest,\n} from './account';\n\nexport {\n EAccountDeletionResponse,\n EAccountImportResponse,\n IAccountDeletionRequest,\n IAccountDeletionResponse,\n IAccountImportRequest,\n IAccountImportResponse,\n IProvider,\n Provider,\n} from './provider';\n\nexport { IMassaStationWallet } from './massaStation/MassaStationProvider';\n\nexport { MassaStationAccount } from './massaStation/MassaStationAccount';\n\nexport { connectBearby, disconnectBearby } from './bearbyWallet/BearbyConnect';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/** Polyfills */\nimport { Buffer } from 'buffer';\n\ndeclare global {\n interface Window {\n Buffer: typeof Buffer;\n bearby?: unknown;\n }\n}\n\n// Check if we are on browser\nif (typeof window !== 'undefined') {\n window.Buffer = Buffer;\n}\n\nimport { MASSA_WINDOW_OBJECT, connector } from './connector/Connector';\nimport { IProvider } from './provider/IProvider';\nimport { Provider } from './provider/Provider';\nimport {\n MASSA_STATION_PROVIDER_NAME,\n MassaStationProvider,\n} from './massaStation/MassaStationProvider';\nimport { detectBearby } from './bearbyWallet/BearbyConnect';\nimport { BearbyProvider } from './bearbyWallet/BearbyProvider';\nimport { wait } from './utils/time';\n\nexport enum AvailableCommands {\n ProviderListAccounts = 'LIST_ACCOUNTS',\n ProviderDeleteAccount = 'DELETE_ACCOUNT',\n ProviderImportAccount = 'IMPORT_ACCOUNT',\n ProviderGetNodesUrls = 'GET_NODES_URLS',\n ProviderGetNetwork = 'GET_NETWORK',\n AccountBalance = 'ACCOUNT_BALANCE',\n AccountSign = 'ACCOUNT_SIGN',\n ProviderGenerateNewAccount = 'GENERATE_NEW_ACCOUNT',\n AccountSellRolls = 'ACCOUNT_SELL_ROLLS',\n AccountBuyRolls = 'ACCOUNT_BUY_ROLLS',\n AccountSendTransaction = 'ACCOUNT_SEND_TRANSACTION',\n AccountCallSC = 'ACCOUNT_CALL_SC',\n}\n\nexport interface ITransactionDetails {\n operationId: string;\n}\n\n/**\n * Get the list of providers that are available to interact with.\n *\n * @param retry - If true, will retry to get the list of providers if none are available.\n * @param pollInterval - The timeout in milliseconds to wait between retries. default is 2000ms.\n * @param timeout - The timeout in milliseconds to wait before giving up. default is 3000ms.\n *\n * @returns An array of providers.\n */\nexport async function providers(\n retry = true,\n timeout = 3000,\n pollInterval = 500,\n): Promise<IProvider[]> {\n const startTime = Date.now();\n\n await connector.startMassaStationDiscovery();\n\n let bearby: BearbyProvider | undefined;\n if (await detectBearby()) {\n bearby = new BearbyProvider('BEARBY');\n }\n\n while (Date.now() - startTime < timeout) {\n const providerInstances: IProvider[] = getProviderInstances();\n\n if (bearby) providerInstances.push(bearby);\n\n if (!retry || providerInstances.length > 0) {\n return providerInstances;\n }\n\n await wait(pollInterval);\n }\n\n return [];\n}\n\nfunction getProviderInstances() {\n const availableProviders = Object.keys(connector.getWalletProviders());\n\n const providerInstances: IProvider[] = availableProviders.map(\n (providerName) => {\n if (providerName === MASSA_STATION_PROVIDER_NAME) {\n return new MassaStationProvider(\n connector.getProviderInfo(providerName),\n );\n } else {\n return new Provider(providerName);\n }\n },\n );\n return providerInstances;\n}\n\n/**\n * Manually register a provider to interact with.\n *\n * @param name - The name of the provider.\n * @param id - The id of the HTML element that is used to communicate with the provider.\n */\nexport function registerProvider(name: string, id = MASSA_WINDOW_OBJECT): void {\n if (typeof document !== 'undefined') {\n const registerEvent = new CustomEvent('register', {\n detail: { providerName: name },\n });\n const element = document?.getElementById(id);\n if (element) {\n element.dispatchEvent(registerEvent);\n }\n }\n}\n\nexport { AllowedRequests, AllowedResponses } from './connector';\n\nexport {\n IAccountDetails,\n IAccountBalanceRequest,\n IAccountBalanceResponse,\n IAccountSignRequest,\n IAccountSignResponse,\n IAccount,\n Account,\n IAccountRollsRequest,\n IAccountSendTransactionRequest,\n IAccountCallSCRequest,\n} from './account';\n\nexport {\n EAccountDeletionResponse,\n EAccountImportResponse,\n IAccountDeletionRequest,\n IAccountDeletionResponse,\n IAccountImportRequest,\n IAccountImportResponse,\n IProvider,\n Provider,\n} from './provider';\n\nexport { IMassaStationWallet } from './massaStation/MassaStationProvider';\n\nexport { MassaStationAccount } from './massaStation/MassaStationAccount';\n\nexport { connectBearby, disconnectBearby } from './bearbyWallet/BearbyConnect';\n"]}
@@ -13,7 +13,7 @@ import { EventEmitter } from 'events';
13
13
  /**
14
14
  * Url used for the MassaStation discovery and pinging the MassaStation server's index.html
15
15
  */
16
- export declare const MASSA_STATION_DISCOVERY_URL = "https://station.massa/web/index";
16
+ export declare const MASSA_STATION_DISCOVERY_URL = "https://station.massa/plugin-manager";
17
17
  /**
18
18
  * A message emitted on successful MassaStation discovery
19
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MassaStationDiscovery.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC;;GAEG;AACH,eAAO,MAAM,2BAA2B,oCAAoC,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,2BAA2B,gCAAgC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;;;;;;;;;;;OAeG;;IAOH;;;;OAIG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB7C"}
1
+ {"version":3,"file":"MassaStationDiscovery.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC;;GAEG;AACH,eAAO,MAAM,2BAA2B,yCACA,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,2BAA2B,gCAAgC,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAI7E;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;;;;;;;;;;;OAeG;;IAOH;;;;OAIG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB7C"}
@@ -16,7 +16,7 @@ const RequestHandler_1 = require("./RequestHandler");
16
16
  /**
17
17
  * Url used for the MassaStation discovery and pinging the MassaStation server's index.html
18
18
  */
19
- exports.MASSA_STATION_DISCOVERY_URL = 'https://station.massa/web/index';
19
+ exports.MASSA_STATION_DISCOVERY_URL = 'https://station.massa/plugin-manager';
20
20
  /**
21
21
  * A message emitted on successful MassaStation discovery
22
22
  */
@@ -25,6 +25,8 @@ exports.ON_MASSA_STATION_DISCOVERED = 'ON_MASSA_STATION_DISCOVERED';
25
25
  * A message emitted on MassaStation disconnect
26
26
  */
27
27
  exports.ON_MASSA_STATION_DISCONNECTED = 'ON_MASSA_STATION_DISCONNECTED';
28
+ const MS_WALLET_PLUGIN_NAME = 'Massa Wallet';
29
+ const MS_WALLET_PLUGIN_AUTHOR = 'Massa Labs';
28
30
  /**
29
31
  * This file defines a TypeScript class named MassaStation.
30
32
  * The class is being used to recursively ping MassaStation's server
@@ -59,18 +61,16 @@ class MassaStationDiscovery extends events_1.EventEmitter {
59
61
  * @returns void
60
62
  */
61
63
  async startListening() {
62
- let resp = null;
63
- try {
64
- resp = await (0, RequestHandler_1.getRequest)(exports.MASSA_STATION_DISCOVERY_URL, 2000);
64
+ const resp = await (0, RequestHandler_1.getRequest)(exports.MASSA_STATION_DISCOVERY_URL, 2000);
65
+ if (!resp.isError) {
66
+ const walletModule = resp.result.find((module) => module.name === MS_WALLET_PLUGIN_NAME &&
67
+ module.author === MS_WALLET_PLUGIN_AUTHOR);
68
+ if (walletModule) {
69
+ this.isDiscovered = true;
70
+ this.emit(exports.ON_MASSA_STATION_DISCOVERED, walletModule);
71
+ }
65
72
  }
66
- catch (ex) {
67
- console.error(`Error calling ${exports.MASSA_STATION_DISCOVERY_URL}`);
68
- }
69
- if (!resp.isError && !resp.error) {
70
- this.isDiscovered = true;
71
- this.emit(exports.ON_MASSA_STATION_DISCOVERED);
72
- }
73
- if ((resp.isError || resp.error) && this.isDiscovered) {
73
+ else if (this.isDiscovered) {
74
74
  this.isDiscovered = false;
75
75
  this.emit(exports.ON_MASSA_STATION_DISCONNECTED);
76
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MassaStationDiscovery.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationDiscovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,mCAAsC;AACtC,qDAAmE;AAEnE;;GAEG;AACU,QAAA,2BAA2B,GAAG,iCAAiC,CAAC;AAE7E;;GAEG;AACU,QAAA,2BAA2B,GAAG,6BAA6B,CAAC;AAEzE;;GAEG;AACU,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAE7E;;;;;GAKG;AACH,MAAa,qBAAsB,SAAQ,qBAAY;IAGrD;;;;;;;;;;;;;;;OAeG;IACH;QACE,KAAK,EAAE,CAAC;QAnBF,iBAAY,GAAG,KAAK,CAAC;QAqB3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc;QACzB,IAAI,IAAI,GAAiC,IAAI,CAAC;QAC9C,IAAI;YACF,IAAI,GAAG,MAAM,IAAA,2BAAU,EAAC,mCAA2B,EAAE,IAAI,CAAC,CAAC;SAC5D;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,iBAAiB,mCAA2B,EAAE,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,mCAA2B,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YACrD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,qCAA6B,CAAC,CAAC;SAC1C;IACH,CAAC;CACF;AAhDD,sDAgDC","sourcesContent":["/**\n * This file defines a TypeScript class named MassaStationDiscovery.\n * The class is being used to recursively search for a connection to MassaStation's server\n * and if so report this via emitting messages.\n *\n * @remarks\n * - If you are only looking to use our library, the connector MassaStationDiscovery will not be useful to you.\n * - If you want to work on this repo, you will probably be interested in this object\n *\n */\n\nimport { EventEmitter } from 'events';\nimport { JsonRpcResponseData, getRequest } from './RequestHandler';\n\n/**\n * Url used for the MassaStation discovery and pinging the MassaStation server's index.html\n */\nexport const MASSA_STATION_DISCOVERY_URL = 'https://station.massa/web/index';\n\n/**\n * A message emitted on successful MassaStation discovery\n */\nexport const ON_MASSA_STATION_DISCOVERED = 'ON_MASSA_STATION_DISCOVERED';\n\n/**\n * A message emitted on MassaStation disconnect\n */\nexport const ON_MASSA_STATION_DISCONNECTED = 'ON_MASSA_STATION_DISCONNECTED';\n\n/**\n * This file defines a TypeScript class named MassaStation.\n * The class is being used to recursively ping MassaStation's server\n * and if a response is received emit a message so MassaStation can be enlisted as\n * a wallet provider in the `Connector` class.\n */\nexport class MassaStationDiscovery extends EventEmitter {\n private isDiscovered = false;\n\n /**\n * MassaStation constructor\n *\n * @param pollIntervalMillis - Polling interval defined in milliseconds\n *\n * @remarks\n * - It creates a timeout using the given `pollIntervalMillis` argument on every trigger of which\n * the MassaStation pinging is triggered and if a successful response is fetched,\n * a message `ON_MASSA_STATION_DISCOVERED` is emitted that MassaStation has been discovered\n * as a wallet provider upon which the `Connector` class will enlist MassaStation as a wallet provider\n * - If once found, but then disconnected the following message `ON_MASSA_STATION_DISCONNECTED` is being emitted\n * so that the `Connector` class delists MassaStation as a wallet provider\n *\n * @returns An instance of the MassaStation class.\n *\n */\n public constructor() {\n super();\n\n this.startListening = this.startListening.bind(this);\n }\n\n /**\n * A method to start listening for a connection to MassaStation's server.\n *\n * @returns void\n */\n public async startListening(): Promise<void> {\n let resp: JsonRpcResponseData<unknown> = null;\n try {\n resp = await getRequest(MASSA_STATION_DISCOVERY_URL, 2000);\n } catch (ex) {\n console.error(`Error calling ${MASSA_STATION_DISCOVERY_URL}`);\n }\n\n if (!resp.isError && !resp.error) {\n this.isDiscovered = true;\n this.emit(ON_MASSA_STATION_DISCOVERED);\n }\n\n if ((resp.isError || resp.error) && this.isDiscovered) {\n this.isDiscovered = false;\n this.emit(ON_MASSA_STATION_DISCONNECTED);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MassaStationDiscovery.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationDiscovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,mCAAsC;AACtC,qDAA8C;AAG9C;;GAEG;AACU,QAAA,2BAA2B,GACtC,sCAAsC,CAAC;AAEzC;;GAEG;AACU,QAAA,2BAA2B,GAAG,6BAA6B,CAAC;AAEzE;;GAEG;AACU,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAE7E,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAC7C,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAC7C;;;;;GAKG;AACH,MAAa,qBAAsB,SAAQ,qBAAY;IAGrD;;;;;;;;;;;;;;;OAeG;IACH;QACE,KAAK,EAAE,CAAC;QAnBF,iBAAY,GAAG,KAAK,CAAC;QAqB3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,GAAG,MAAM,IAAA,2BAAU,EAC3B,mCAA2B,EAC3B,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,IAAI,KAAK,qBAAqB;gBACrC,MAAM,CAAC,MAAM,KAAK,uBAAuB,CAC5C,CAAC;YACF,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,mCAA2B,EAAE,YAAY,CAAC,CAAC;aACtD;SACF;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,qCAA6B,CAAC,CAAC;SAC1C;IACH,CAAC;CACF;AAnDD,sDAmDC","sourcesContent":["/**\n * This file defines a TypeScript class named MassaStationDiscovery.\n * The class is being used to recursively search for a connection to MassaStation's server\n * and if so report this via emitting messages.\n *\n * @remarks\n * - If you are only looking to use our library, the connector MassaStationDiscovery will not be useful to you.\n * - If you want to work on this repo, you will probably be interested in this object\n *\n */\n\nimport { EventEmitter } from 'events';\nimport { getRequest } from './RequestHandler';\nimport { PluginManagerBody } from './types';\n\n/**\n * Url used for the MassaStation discovery and pinging the MassaStation server's index.html\n */\nexport const MASSA_STATION_DISCOVERY_URL =\n 'https://station.massa/plugin-manager';\n\n/**\n * A message emitted on successful MassaStation discovery\n */\nexport const ON_MASSA_STATION_DISCOVERED = 'ON_MASSA_STATION_DISCOVERED';\n\n/**\n * A message emitted on MassaStation disconnect\n */\nexport const ON_MASSA_STATION_DISCONNECTED = 'ON_MASSA_STATION_DISCONNECTED';\n\nconst MS_WALLET_PLUGIN_NAME = 'Massa Wallet';\nconst MS_WALLET_PLUGIN_AUTHOR = 'Massa Labs';\n/**\n * This file defines a TypeScript class named MassaStation.\n * The class is being used to recursively ping MassaStation's server\n * and if a response is received emit a message so MassaStation can be enlisted as\n * a wallet provider in the `Connector` class.\n */\nexport class MassaStationDiscovery extends EventEmitter {\n private isDiscovered = false;\n\n /**\n * MassaStation constructor\n *\n * @param pollIntervalMillis - Polling interval defined in milliseconds\n *\n * @remarks\n * - It creates a timeout using the given `pollIntervalMillis` argument on every trigger of which\n * the MassaStation pinging is triggered and if a successful response is fetched,\n * a message `ON_MASSA_STATION_DISCOVERED` is emitted that MassaStation has been discovered\n * as a wallet provider upon which the `Connector` class will enlist MassaStation as a wallet provider\n * - If once found, but then disconnected the following message `ON_MASSA_STATION_DISCONNECTED` is being emitted\n * so that the `Connector` class delists MassaStation as a wallet provider\n *\n * @returns An instance of the MassaStation class.\n *\n */\n public constructor() {\n super();\n\n this.startListening = this.startListening.bind(this);\n }\n\n /**\n * A method to start listening for a connection to MassaStation's server.\n *\n * @returns void\n */\n public async startListening(): Promise<void> {\n const resp = await getRequest<PluginManagerBody>(\n MASSA_STATION_DISCOVERY_URL,\n 2000,\n );\n\n if (!resp.isError) {\n const walletModule = resp.result.find(\n (module) =>\n module.name === MS_WALLET_PLUGIN_NAME &&\n module.author === MS_WALLET_PLUGIN_AUTHOR,\n );\n if (walletModule) {\n this.isDiscovered = true;\n this.emit(ON_MASSA_STATION_DISCOVERED, walletModule);\n }\n } else if (this.isDiscovered) {\n this.isDiscovered = false;\n this.emit(ON_MASSA_STATION_DISCONNECTED);\n }\n }\n}\n"]}
@@ -3,6 +3,7 @@ import { IAccountImportResponse } from '../provider/AccountImport';
3
3
  import { IProvider } from '../provider/IProvider';
4
4
  import { IAccount } from '../account/IAccount';
5
5
  import { IAccountDetails } from '../account';
6
+ import { PluginInfo } from './types';
6
7
  /**
7
8
  * MassaStation url
8
9
  */
@@ -38,6 +39,7 @@ export interface IMassaStationWallet {
38
39
  * This class is used as a proxy to the MassaStation server for exchanging message over https calls.
39
40
  */
40
41
  export declare class MassaStationProvider implements IProvider {
42
+ private infos;
41
43
  private providerName;
42
44
  /**
43
45
  * Provider constructor
@@ -45,7 +47,7 @@ export declare class MassaStationProvider implements IProvider {
45
47
  * @param providerName - The name of the provider.
46
48
  * @returns An instance of the Provider class.
47
49
  */
48
- constructor();
50
+ constructor(infos: PluginInfo);
49
51
  /**
50
52
  * This method returns the name of the provider.
51
53
  * @returns The name of the provider.
@@ -1 +1 @@
1
- {"version":3,"file":"MassaStationProvider.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,EAGvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AASlD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAoE,CAAC;AAE5G;;GAEG;AACH,eAAO,MAAM,iCAAiC,QAA0C,CAAC;AAEzF;;GAEG;AACH,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IACpD,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;OAKG;;IAKH;;;OAGG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;;OAKG;IACU,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA6B5C;;;;;;;;OAQG;IACU,aAAa,CACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IA2BlC;;;;;OAKG;IACU,aAAa,CACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC;IAgDpC;;;;;;OAMG;IACU,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB9C;;;;;;OAMG;IACU,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAkB1C;;;;OAIG;IACU,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAwBxE"}
1
+ {"version":3,"file":"MassaStationProvider.d.ts","sourceRoot":"","sources":["../../../src/massaStation/MassaStationProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,EAGvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AASlD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAoE,CAAC;AAE5G;;GAEG;AACH,eAAO,MAAM,iCAAiC,QAA0C,CAAC;AAEzF;;GAEG;AACH,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IASjC,OAAO,CAAC,KAAK;IARhC,OAAO,CAAC,YAAY,CAA+B;IAEnD;;;;;OAKG;gBACwB,KAAK,EAAE,UAAU;IAE5C;;;OAGG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;;OAKG;IACU,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA6B5C;;;;;;;;OAQG;IACU,aAAa,CACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IA2BlC;;;;;OAKG;IACU,aAAa,CACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC;IAgDpC;;;;;;OAMG;IACU,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB9C;;;;;;OAMG;IACU,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAkB1C;;;;OAIG;IACU,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAwBxE"}
@@ -33,7 +33,8 @@ class MassaStationProvider {
33
33
  * @param providerName - The name of the provider.
34
34
  * @returns An instance of the Provider class.
35
35
  */
36
- constructor() {
36
+ constructor(infos) {
37
+ this.infos = infos;
37
38
  this.providerName = exports.MASSA_STATION_PROVIDER_NAME;
38
39
  }
39
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MassaStationProvider.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EAccountDeletionResponse,\n IAccountDeletionResponse,\n} from '../provider/AccountDeletion';\nimport {\n IAccountImportResponse,\n EAccountImportResponse,\n IAccountImportRequest,\n} from '../provider/AccountImport';\nimport { IProvider } from '../provider/IProvider';\nimport {\n JsonRpcResponseData,\n deleteRequest,\n getRequest,\n postRequest,\n putRequest,\n} from './RequestHandler';\nimport { MassaStationAccount } from './MassaStationAccount';\nimport { IAccount } from '../account/IAccount';\nimport { IAccountDetails } from '../account';\n\n/**\n * MassaStation url\n */\nexport const MASSA_STATION_URL = 'https://station.massa/';\n\n/**\n * The MassaStation accounts url\n */\nexport const MASSA_STATION_ACCOUNTS_URL = `${MASSA_STATION_URL}plugin/massa-labs/massa-wallet/api/accounts`;\n\n/**\n * MassaStation's url for importing accounts\n */\nexport const MASSA_STATION_IMPORT_ACCOUNTS_URL = `${MASSA_STATION_ACCOUNTS_URL}/import/`;\n\n/**\n * MassaStation's wallet provider name\n */\nexport const MASSA_STATION_PROVIDER_NAME = 'MASSASTATION';\n\n/**\n * This interface represents the payload returned by making a call to MassaStation's accounts url.\n */\nexport interface IMassaStationWallet {\n address: string;\n nickname: string;\n keyPair: {\n nonce: string;\n privateKey: string;\n publicKey: string;\n salt: string;\n };\n}\n\n/**\n * This class provides an implementation for communicating with the MassaStation wallet provider.\n * @remarks\n * This class is used as a proxy to the MassaStation server for exchanging message over https calls.\n */\nexport class MassaStationProvider implements IProvider {\n private providerName: string;\n\n /**\n * Provider constructor\n *\n * @param providerName - The name of the provider.\n * @returns An instance of the Provider class.\n */\n public constructor() {\n this.providerName = MASSA_STATION_PROVIDER_NAME;\n }\n\n /**\n * This method returns the name of the provider.\n * @returns The name of the provider.\n */\n public name(): string {\n return this.providerName;\n }\n\n /**\n * This method sends a message to the MassaStation server to get the list of accounts for the provider.\n * It returns a Promise that resolves to an array of Account instances.\n *\n * @returns A promise that resolves to an array of Account instances.\n */\n public async accounts(): Promise<IAccount[]> {\n let massaStationAccountsResponse: JsonRpcResponseData<\n Array<IMassaStationWallet>\n > = null;\n try {\n massaStationAccountsResponse = await getRequest<\n Array<IMassaStationWallet>\n >(MASSA_STATION_ACCOUNTS_URL);\n } catch (ex) {\n console.error(`MassaStation accounts retrieval error`);\n throw ex;\n }\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n throw massaStationAccountsResponse.error.message;\n }\n return massaStationAccountsResponse.result.map((massaStationAccount) => {\n return new MassaStationAccount(\n {\n address: massaStationAccount.address,\n name: massaStationAccount.nickname,\n },\n this.providerName,\n );\n });\n }\n\n /**\n * This method makes an http call to the MassaStation server to import an account with\n * the given publicKey and privateKey.\n *\n * @param publicKey - The public key of the account.\n * @param privateKey - The private key of the account.\n *\n * @returns a Promise that resolves to an instance of IAccountImportResponse.\n */\n public async importAccount(\n publicKey: string,\n privateKey: string,\n ): Promise<IAccountImportResponse> {\n const accountImportRequest: IAccountImportRequest = {\n publicKey,\n privateKey,\n };\n let massaStationAccountsResponse: JsonRpcResponseData<unknown> = null;\n try {\n massaStationAccountsResponse = await putRequest<unknown>(\n MASSA_STATION_ACCOUNTS_URL,\n accountImportRequest,\n );\n } catch (ex) {\n console.log(`MassaStation accounts retrieval error: ${ex}`);\n throw ex;\n }\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n throw massaStationAccountsResponse.error.message;\n }\n return {\n response: EAccountImportResponse.OK,\n message: 'Account imported successfully',\n } as IAccountImportResponse;\n }\n\n /**\n * This method sends an http call to the MassaStation server to delete the account associated with the given address.\n *\n * @param address - The address of the account.\n * @returns a Promise that resolves to an instance of IAccountDeletionResponse.\n */\n public async deleteAccount(\n address: string,\n ): Promise<IAccountDeletionResponse> {\n // get all accounts\n let allAccounts: JsonRpcResponseData<Array<IMassaStationWallet>> = null;\n try {\n allAccounts = await getRequest<Array<IMassaStationWallet>>(\n MASSA_STATION_ACCOUNTS_URL,\n );\n } catch (ex) {\n console.log(`MassaStation accounts retrieval error: ${ex}`);\n throw ex;\n }\n if (allAccounts.isError || allAccounts.error) {\n throw allAccounts.error.message;\n }\n // find the account with the desired address\n const accountToDelete = allAccounts.result.find(\n (account) => account.address.toLowerCase() === address.toLowerCase(),\n );\n\n // delete the account in question\n let massaStationAccountsResponse: JsonRpcResponseData<unknown> = null;\n try {\n massaStationAccountsResponse = await deleteRequest<unknown>(\n `${MASSA_STATION_ACCOUNTS_URL}/${accountToDelete.nickname}`,\n );\n } catch (ex) {\n console.log(`MassaStation accounts deletion error`, ex);\n return {\n response: EAccountDeletionResponse.ERROR,\n } as IAccountDeletionResponse;\n }\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n console.log(\n `MassaStation accounts deletion error`,\n massaStationAccountsResponse.error.message,\n );\n return {\n response: EAccountDeletionResponse.ERROR,\n } as IAccountDeletionResponse;\n }\n return {\n response: EAccountDeletionResponse.OK,\n } as IAccountDeletionResponse;\n }\n\n /**\n * This method sends an http call to the MassaStation server to obtain node urls.\n *\n * @throws an error if the call fails.\n *\n * @returns a Promise that resolves to a list of node urls.\n */\n public async getNodesUrls(): Promise<string[]> {\n let nodesResponse: JsonRpcResponseData<unknown> = null;\n try {\n nodesResponse = await getRequest<unknown>(\n `${MASSA_STATION_URL}massa/node`,\n );\n if (nodesResponse.isError || nodesResponse.error) {\n throw nodesResponse.error.message;\n }\n // transform nodesResponse.result to a json and then get the \"url\" property\n const nodes = nodesResponse.result as { url: string };\n return Array(nodes.url);\n } catch (ex) {\n console.error(`MassaStation nodes retrieval error`, ex);\n throw ex;\n }\n }\n\n /**\n * Returns the name of the network MassaStation is connected to.\n *\n * @throws an error if the call fails.\n *\n * @returns a Promise that resolves to a network.\n */\n public async getNetwork(): Promise<string> {\n let nodesResponse: JsonRpcResponseData<unknown> = null;\n try {\n nodesResponse = await getRequest<unknown>(\n `${MASSA_STATION_URL}massa/node`,\n );\n if (nodesResponse.isError || nodesResponse.error) {\n throw nodesResponse.error.message;\n }\n const nodes = nodesResponse.result as { network: string };\n\n return nodes.network;\n } catch (ex) {\n console.error(`MassaStation nodes retrieval error`, ex);\n throw ex;\n }\n }\n\n /**\n * This method sends an http call to the MassaStation server to create a new random account.\n *\n * @returns a Promise that resolves to the details of the newly generated account.\n */\n public async generateNewAccount(name: string): Promise<IAccountDetails> {\n let massaStationAccountsResponse: JsonRpcResponseData<IMassaStationWallet> =\n null;\n console.log(MASSA_STATION_ACCOUNTS_URL + '/' + name);\n try {\n massaStationAccountsResponse = await postRequest<IMassaStationWallet>(\n MASSA_STATION_ACCOUNTS_URL + '/' + name,\n {},\n );\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n throw massaStationAccountsResponse.error.message;\n }\n return {\n address: massaStationAccountsResponse.result.address,\n name: massaStationAccountsResponse.result.nickname,\n } as IAccountDetails;\n } catch (ex) {\n console.error(`Error while generating account: ${ex}`);\n throw ex;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MassaStationProvider.js","sourceRoot":"","sources":["../../../src/massaStation/MassaStationProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EAccountDeletionResponse,\n IAccountDeletionResponse,\n} from '../provider/AccountDeletion';\nimport {\n IAccountImportResponse,\n EAccountImportResponse,\n IAccountImportRequest,\n} from '../provider/AccountImport';\nimport { IProvider } from '../provider/IProvider';\nimport {\n JsonRpcResponseData,\n deleteRequest,\n getRequest,\n postRequest,\n putRequest,\n} from './RequestHandler';\nimport { MassaStationAccount } from './MassaStationAccount';\nimport { IAccount } from '../account/IAccount';\nimport { IAccountDetails } from '../account';\nimport { PluginInfo } from './types';\n\n/**\n * MassaStation url\n */\nexport const MASSA_STATION_URL = 'https://station.massa/';\n\n/**\n * The MassaStation accounts url\n */\nexport const MASSA_STATION_ACCOUNTS_URL = `${MASSA_STATION_URL}plugin/massa-labs/massa-wallet/api/accounts`;\n\n/**\n * MassaStation's url for importing accounts\n */\nexport const MASSA_STATION_IMPORT_ACCOUNTS_URL = `${MASSA_STATION_ACCOUNTS_URL}/import/`;\n\n/**\n * MassaStation's wallet provider name\n */\nexport const MASSA_STATION_PROVIDER_NAME = 'MASSASTATION';\n\n/**\n * This interface represents the payload returned by making a call to MassaStation's accounts url.\n */\nexport interface IMassaStationWallet {\n address: string;\n nickname: string;\n keyPair: {\n nonce: string;\n privateKey: string;\n publicKey: string;\n salt: string;\n };\n}\n\n/**\n * This class provides an implementation for communicating with the MassaStation wallet provider.\n * @remarks\n * This class is used as a proxy to the MassaStation server for exchanging message over https calls.\n */\nexport class MassaStationProvider implements IProvider {\n private providerName = MASSA_STATION_PROVIDER_NAME;\n\n /**\n * Provider constructor\n *\n * @param providerName - The name of the provider.\n * @returns An instance of the Provider class.\n */\n public constructor(private infos: PluginInfo) {}\n\n /**\n * This method returns the name of the provider.\n * @returns The name of the provider.\n */\n public name(): string {\n return this.providerName;\n }\n\n /**\n * This method sends a message to the MassaStation server to get the list of accounts for the provider.\n * It returns a Promise that resolves to an array of Account instances.\n *\n * @returns A promise that resolves to an array of Account instances.\n */\n public async accounts(): Promise<IAccount[]> {\n let massaStationAccountsResponse: JsonRpcResponseData<\n Array<IMassaStationWallet>\n > = null;\n try {\n massaStationAccountsResponse = await getRequest<\n Array<IMassaStationWallet>\n >(MASSA_STATION_ACCOUNTS_URL);\n } catch (ex) {\n console.error(`MassaStation accounts retrieval error`);\n throw ex;\n }\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n throw massaStationAccountsResponse.error.message;\n }\n return massaStationAccountsResponse.result.map((massaStationAccount) => {\n return new MassaStationAccount(\n {\n address: massaStationAccount.address,\n name: massaStationAccount.nickname,\n },\n this.providerName,\n );\n });\n }\n\n /**\n * This method makes an http call to the MassaStation server to import an account with\n * the given publicKey and privateKey.\n *\n * @param publicKey - The public key of the account.\n * @param privateKey - The private key of the account.\n *\n * @returns a Promise that resolves to an instance of IAccountImportResponse.\n */\n public async importAccount(\n publicKey: string,\n privateKey: string,\n ): Promise<IAccountImportResponse> {\n const accountImportRequest: IAccountImportRequest = {\n publicKey,\n privateKey,\n };\n let massaStationAccountsResponse: JsonRpcResponseData<unknown> = null;\n try {\n massaStationAccountsResponse = await putRequest<unknown>(\n MASSA_STATION_ACCOUNTS_URL,\n accountImportRequest,\n );\n } catch (ex) {\n console.log(`MassaStation accounts retrieval error: ${ex}`);\n throw ex;\n }\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n throw massaStationAccountsResponse.error.message;\n }\n return {\n response: EAccountImportResponse.OK,\n message: 'Account imported successfully',\n } as IAccountImportResponse;\n }\n\n /**\n * This method sends an http call to the MassaStation server to delete the account associated with the given address.\n *\n * @param address - The address of the account.\n * @returns a Promise that resolves to an instance of IAccountDeletionResponse.\n */\n public async deleteAccount(\n address: string,\n ): Promise<IAccountDeletionResponse> {\n // get all accounts\n let allAccounts: JsonRpcResponseData<Array<IMassaStationWallet>> = null;\n try {\n allAccounts = await getRequest<Array<IMassaStationWallet>>(\n MASSA_STATION_ACCOUNTS_URL,\n );\n } catch (ex) {\n console.log(`MassaStation accounts retrieval error: ${ex}`);\n throw ex;\n }\n if (allAccounts.isError || allAccounts.error) {\n throw allAccounts.error.message;\n }\n // find the account with the desired address\n const accountToDelete = allAccounts.result.find(\n (account) => account.address.toLowerCase() === address.toLowerCase(),\n );\n\n // delete the account in question\n let massaStationAccountsResponse: JsonRpcResponseData<unknown> = null;\n try {\n massaStationAccountsResponse = await deleteRequest<unknown>(\n `${MASSA_STATION_ACCOUNTS_URL}/${accountToDelete.nickname}`,\n );\n } catch (ex) {\n console.log(`MassaStation accounts deletion error`, ex);\n return {\n response: EAccountDeletionResponse.ERROR,\n } as IAccountDeletionResponse;\n }\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n console.log(\n `MassaStation accounts deletion error`,\n massaStationAccountsResponse.error.message,\n );\n return {\n response: EAccountDeletionResponse.ERROR,\n } as IAccountDeletionResponse;\n }\n return {\n response: EAccountDeletionResponse.OK,\n } as IAccountDeletionResponse;\n }\n\n /**\n * This method sends an http call to the MassaStation server to obtain node urls.\n *\n * @throws an error if the call fails.\n *\n * @returns a Promise that resolves to a list of node urls.\n */\n public async getNodesUrls(): Promise<string[]> {\n let nodesResponse: JsonRpcResponseData<unknown> = null;\n try {\n nodesResponse = await getRequest<unknown>(\n `${MASSA_STATION_URL}massa/node`,\n );\n if (nodesResponse.isError || nodesResponse.error) {\n throw nodesResponse.error.message;\n }\n // transform nodesResponse.result to a json and then get the \"url\" property\n const nodes = nodesResponse.result as { url: string };\n return Array(nodes.url);\n } catch (ex) {\n console.error(`MassaStation nodes retrieval error`, ex);\n throw ex;\n }\n }\n\n /**\n * Returns the name of the network MassaStation is connected to.\n *\n * @throws an error if the call fails.\n *\n * @returns a Promise that resolves to a network.\n */\n public async getNetwork(): Promise<string> {\n let nodesResponse: JsonRpcResponseData<unknown> = null;\n try {\n nodesResponse = await getRequest<unknown>(\n `${MASSA_STATION_URL}massa/node`,\n );\n if (nodesResponse.isError || nodesResponse.error) {\n throw nodesResponse.error.message;\n }\n const nodes = nodesResponse.result as { network: string };\n\n return nodes.network;\n } catch (ex) {\n console.error(`MassaStation nodes retrieval error`, ex);\n throw ex;\n }\n }\n\n /**\n * This method sends an http call to the MassaStation server to create a new random account.\n *\n * @returns a Promise that resolves to the details of the newly generated account.\n */\n public async generateNewAccount(name: string): Promise<IAccountDetails> {\n let massaStationAccountsResponse: JsonRpcResponseData<IMassaStationWallet> =\n null;\n console.log(MASSA_STATION_ACCOUNTS_URL + '/' + name);\n try {\n massaStationAccountsResponse = await postRequest<IMassaStationWallet>(\n MASSA_STATION_ACCOUNTS_URL + '/' + name,\n {},\n );\n if (\n massaStationAccountsResponse.isError ||\n massaStationAccountsResponse.error\n ) {\n throw massaStationAccountsResponse.error.message;\n }\n return {\n address: massaStationAccountsResponse.result.address,\n name: massaStationAccountsResponse.result.nickname,\n } as IAccountDetails;\n } catch (ex) {\n console.error(`Error while generating account: ${ex}`);\n throw ex;\n }\n }\n}\n"]}
@@ -8,4 +8,13 @@ export type ExecuteFunctionBody = {
8
8
  coins?: number;
9
9
  async?: boolean;
10
10
  };
11
+ export type PluginInfo = {
12
+ author: string;
13
+ description: string;
14
+ home: string;
15
+ name: string;
16
+ status: string;
17
+ version: string;
18
+ };
19
+ export type PluginManagerBody = PluginInfo[];
11
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"","sourcesContent":["export type ExecuteFunctionBody = {\n nickname: string;\n name: string;\n at: string;\n args?: string;\n fee?: string;\n maxGas?: string;\n coins?: number; // number type keeped for backward compatibility\n async?: boolean;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/massaStation/types.ts"],"names":[],"mappings":"","sourcesContent":["export type ExecuteFunctionBody = {\n nickname: string;\n name: string;\n at: string;\n args?: string;\n fee?: string;\n maxGas?: string;\n coins?: number; // number type keeped for backward compatibility\n async?: boolean;\n};\n\nexport type PluginInfo = {\n author: string;\n description: string;\n home: string;\n name: string;\n status: string;\n version: string;\n};\n\nexport type PluginManagerBody = PluginInfo[];\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BearbyConnect.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAKrD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGtD"}
1
+ {"version":3,"file":"BearbyConnect.d.ts","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAErD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGtD"}
@@ -1,9 +1,6 @@
1
1
  import { web3 } from '@hicaru/bearby.js';
2
2
  export async function detectBearby() {
3
- if (globalThis.window && globalThis.window['bearby']) {
4
- return true;
5
- }
6
- return false;
3
+ return !!globalThis?.window?.bearby;
7
4
  }
8
5
  export async function connectBearby() {
9
6
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"BearbyConnect.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,UAAU,CAAC,MAAM,IAAK,UAAU,CAAC,MAAc,CAAC,QAAQ,CAAC,EAAE;QAC7D,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KAC7B;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACjB;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC","sourcesContent":["import { web3 } from '@hicaru/bearby.js';\n\nexport async function detectBearby(): Promise<boolean> {\n if (globalThis.window && (globalThis.window as any)['bearby']) {\n return true;\n }\n return false;\n}\n\nexport async function connectBearby(): Promise<void> {\n try {\n await web3.wallet.connect();\n } catch (ex) {\n console.log(ex);\n }\n}\n\nexport async function disconnectBearby(): Promise<void> {\n await web3.wallet.disconnect();\n console.log('Bearby disconnected');\n}\n"]}
1
+ {"version":3,"file":"BearbyConnect.js","sourceRoot":"","sources":["../../../src/bearbyWallet/BearbyConnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KAC7B;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACjB;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC","sourcesContent":["import { web3 } from '@hicaru/bearby.js';\n\nexport async function detectBearby(): Promise<boolean> {\n return !!globalThis?.window?.bearby;\n}\n\nexport async function connectBearby(): Promise<void> {\n try {\n await web3.wallet.connect();\n } catch (ex) {\n console.log(ex);\n }\n}\n\nexport async function disconnectBearby(): Promise<void> {\n await web3.wallet.disconnect();\n console.log('Bearby disconnected');\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { AvailableCommands, IAccountBalanceRequest, IAccountBalanceResponse, IAccountDeletionRequest, IAccountDeletionResponse, IAccountImportRequest, IAccountImportResponse, IAccountSignRequest, IAccountSignResponse } from '..';
2
2
  import { IAccount } from '../account/IAccount';
3
+ import { PluginInfo } from '../massaStation/types';
3
4
  /**
4
5
  * A constant string that is used to identify the HTML element that is used for
5
6
  * communication between the web page script and the content script.
@@ -19,6 +20,7 @@ declare class Connector {
19
20
  private registeredProviders;
20
21
  private pendingRequests;
21
22
  private massaStationListener;
23
+ private providersInfo;
22
24
  /**
23
25
  * Connector constructor
24
26
  *
@@ -69,9 +71,12 @@ declare class Connector {
69
71
  * @returns The registered provider associated with its unique key.
70
72
  *
71
73
  */
72
- getWalletProviders(): {
73
- [key: string]: string;
74
- };
74
+ getWalletProviders(): Record<string, string>;
75
+ /**
76
+ * This method returns the provider wallet info.
77
+ *
78
+ */
79
+ getProviderInfo(providerName: string): PluginInfo | undefined;
75
80
  /**
76
81
  * This method handles the response from the content script by
77
82
  * calling the response callback with the response and error objects.
@@ -1 +1 @@
1
- {"version":3,"file":"Connector.d.ts","sourceRoot":"","sources":["../../../src/connector/Connector.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,IAAI,CAAC;AAOZ,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,KAAK,gBAAgB,GAAG,CACtB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,KAAK,GAAG,IAAI,KAChB,OAAO,CAAC;AAEb,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,wBAAwB,GACxB,QAAQ,EAAE,GACV,MAAM,CAAC;AAEX;;;;;;GAMG;AACH,cAAM,SAAS;IACb,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,oBAAoB,CAAwB;IAEpD;;;;;;;;;;;OAWG;;IAkBH;;;;;;;;;;OAUG;IACH,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,wBAAwB;IAWnB,0BAA0B;IAQvC;;;;;;;;;;;;;;;OAeG;IAEI,0BAA0B,CAC/B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,gBAAgB;IAgCpC;;;;;OAKG;IACI,kBAAkB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAItD;;;;;;;OAOG;IACH,OAAO,CAAC,+BAA+B;CAuBxC;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"Connector.d.ts","sourceRoot":"","sources":["../../../src/connector/Connector.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,IAAI,CAAC;AAOZ,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,KAAK,gBAAgB,GAAG,CACtB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,KAAK,GAAG,IAAI,KAChB,OAAO,CAAC;AAEb,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,wBAAwB,GACxB,QAAQ,EAAE,GACV,MAAM,CAAC;AAEX;;;;;;GAMG;AACH,cAAM,SAAS;IACb,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,oBAAoB,CAAwB;IAEpD,OAAO,CAAC,aAAa,CAAkC;IAEvD;;;;;;;;;;;OAWG;;IAkBH;;;;;;;;;;OAUG;IACH,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,wBAAwB;IAgBnB,0BAA0B;IAQvC;;;;;;;;;;;;;;;OAeG;IAEI,0BAA0B,CAC/B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,gBAAgB;IAgCpC;;;;;OAKG;IACI,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAInD;;;OAGG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIpE;;;;;;;OAOG;IACH,OAAO,CAAC,+BAA+B;CAuBxC;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
@@ -27,6 +27,7 @@ class Connector {
27
27
  registeredProviders = {};
28
28
  pendingRequests;
29
29
  massaStationListener;
30
+ providersInfo = {};
30
31
  /**
31
32
  * Connector constructor
32
33
  *
@@ -85,8 +86,9 @@ class Connector {
85
86
  }
86
87
  }
87
88
  initMassaStationListener() {
88
- this.massaStationListener.on(ON_MASSA_STATION_DISCOVERED, () => {
89
+ this.massaStationListener.on(ON_MASSA_STATION_DISCOVERED, (walletModule) => {
89
90
  this.registeredProviders[MASSA_STATION_PROVIDER_NAME] = `${MASSA_WINDOW_OBJECT}_${MASSA_STATION_PROVIDER_NAME}`;
91
+ this.providersInfo[MASSA_STATION_PROVIDER_NAME] = walletModule;
90
92
  });
91
93
  this.massaStationListener.on(ON_MASSA_STATION_DISCONNECTED, () => {
92
94
  delete this.registeredProviders[MASSA_STATION_PROVIDER_NAME];
@@ -97,7 +99,7 @@ class Connector {
97
99
  await this.massaStationListener.startListening();
98
100
  }
99
101
  catch (e) {
100
- console.log('MassaStation is not detected');
102
+ console.log('get MassaStation provider error: ', e);
101
103
  }
102
104
  }
103
105
  /**
@@ -145,6 +147,13 @@ class Connector {
145
147
  getWalletProviders() {
146
148
  return this.registeredProviders;
147
149
  }
150
+ /**
151
+ * This method returns the provider wallet info.
152
+ *
153
+ */
154
+ getProviderInfo(providerName) {
155
+ return this.providersInfo[providerName];
156
+ }
148
157
  /**
149
158
  * This method handles the response from the content script by
150
159
  * calling the response callback with the response and error objects.