@ledgerhq/live-cli 21.32.1

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 (235) hide show
  1. package/README.md +520 -0
  2. package/bin/index.js +2 -0
  3. package/lib/cli.d.ts +2 -0
  4. package/lib/cli.d.ts.map +1 -0
  5. package/lib/cli.js +137 -0
  6. package/lib/cli.js.map +1 -0
  7. package/lib/commands/app.d.ts +45 -0
  8. package/lib/commands/app.d.ts.map +1 -0
  9. package/lib/commands/app.js +131 -0
  10. package/lib/commands/app.js.map +1 -0
  11. package/lib/commands/appUninstallAll.d.ts +15 -0
  12. package/lib/commands/appUninstallAll.d.ts.map +1 -0
  13. package/lib/commands/appUninstallAll.js +31 -0
  14. package/lib/commands/appUninstallAll.js.map +1 -0
  15. package/lib/commands/appsCheckAllAppVersions.d.ts +20 -0
  16. package/lib/commands/appsCheckAllAppVersions.d.ts.map +1 -0
  17. package/lib/commands/appsCheckAllAppVersions.js +484 -0
  18. package/lib/commands/appsCheckAllAppVersions.js.map +1 -0
  19. package/lib/commands/appsInstallAll.d.ts +15 -0
  20. package/lib/commands/appsInstallAll.d.ts.map +1 -0
  21. package/lib/commands/appsInstallAll.js +34 -0
  22. package/lib/commands/appsInstallAll.js.map +1 -0
  23. package/lib/commands/appsUpdateTestAll.d.ts +20 -0
  24. package/lib/commands/appsUpdateTestAll.d.ts.map +1 -0
  25. package/lib/commands/appsUpdateTestAll.js +101 -0
  26. package/lib/commands/appsUpdateTestAll.js.map +1 -0
  27. package/lib/commands/balanceHistory.d.ts +50 -0
  28. package/lib/commands/balanceHistory.d.ts.map +1 -0
  29. package/lib/commands/balanceHistory.js +110 -0
  30. package/lib/commands/balanceHistory.js.map +1 -0
  31. package/lib/commands/bot.d.ts +12 -0
  32. package/lib/commands/bot.d.ts.map +1 -0
  33. package/lib/commands/bot.js +33 -0
  34. package/lib/commands/bot.js.map +1 -0
  35. package/lib/commands/botPortfolio.d.ts +15 -0
  36. package/lib/commands/botPortfolio.d.ts.map +1 -0
  37. package/lib/commands/botPortfolio.js +41 -0
  38. package/lib/commands/botPortfolio.js.map +1 -0
  39. package/lib/commands/botTransfer.d.ts +7 -0
  40. package/lib/commands/botTransfer.d.ts.map +1 -0
  41. package/lib/commands/botTransfer.js +376 -0
  42. package/lib/commands/botTransfer.js.map +1 -0
  43. package/lib/commands/broadcast.d.ts +42 -0
  44. package/lib/commands/broadcast.d.ts.map +1 -0
  45. package/lib/commands/broadcast.js +48 -0
  46. package/lib/commands/broadcast.js.map +1 -0
  47. package/lib/commands/cleanSpeculos.d.ts +7 -0
  48. package/lib/commands/cleanSpeculos.d.ts.map +1 -0
  49. package/lib/commands/cleanSpeculos.js +20 -0
  50. package/lib/commands/cleanSpeculos.js.map +1 -0
  51. package/lib/commands/countervalues.d.ts +84 -0
  52. package/lib/commands/countervalues.d.ts.map +1 -0
  53. package/lib/commands/countervalues.js +302 -0
  54. package/lib/commands/countervalues.js.map +1 -0
  55. package/lib/commands/derivation.d.ts +6 -0
  56. package/lib/commands/derivation.d.ts.map +1 -0
  57. package/lib/commands/derivation.js +44 -0
  58. package/lib/commands/derivation.js.map +1 -0
  59. package/lib/commands/devDeviceAppsScenario.d.ts +24 -0
  60. package/lib/commands/devDeviceAppsScenario.d.ts.map +1 -0
  61. package/lib/commands/devDeviceAppsScenario.js +97 -0
  62. package/lib/commands/devDeviceAppsScenario.js.map +1 -0
  63. package/lib/commands/deviceAppVersion.d.ts +19 -0
  64. package/lib/commands/deviceAppVersion.d.ts.map +1 -0
  65. package/lib/commands/deviceAppVersion.js +17 -0
  66. package/lib/commands/deviceAppVersion.js.map +1 -0
  67. package/lib/commands/deviceInfo.d.ts +14 -0
  68. package/lib/commands/deviceInfo.d.ts.map +1 -0
  69. package/lib/commands/deviceInfo.js +17 -0
  70. package/lib/commands/deviceInfo.js.map +1 -0
  71. package/lib/commands/deviceVersion.d.ts +14 -0
  72. package/lib/commands/deviceVersion.d.ts.map +1 -0
  73. package/lib/commands/deviceVersion.js +17 -0
  74. package/lib/commands/deviceVersion.js.map +1 -0
  75. package/lib/commands/discoverDevices.d.ts +23 -0
  76. package/lib/commands/discoverDevices.d.ts.map +1 -0
  77. package/lib/commands/discoverDevices.js +86 -0
  78. package/lib/commands/discoverDevices.js.map +1 -0
  79. package/lib/commands/envs.d.ts +7 -0
  80. package/lib/commands/envs.d.ts.map +1 -0
  81. package/lib/commands/envs.js +15 -0
  82. package/lib/commands/envs.js.map +1 -0
  83. package/lib/commands/estimateMaxSpendable.d.ts +41 -0
  84. package/lib/commands/estimateMaxSpendable.d.ts.map +1 -0
  85. package/lib/commands/estimateMaxSpendable.js +65 -0
  86. package/lib/commands/estimateMaxSpendable.js.map +1 -0
  87. package/lib/commands/exportAccounts.d.ts +48 -0
  88. package/lib/commands/exportAccounts.d.ts.map +1 -0
  89. package/lib/commands/exportAccounts.js +69 -0
  90. package/lib/commands/exportAccounts.js.map +1 -0
  91. package/lib/commands/firmwareRepair.d.ts +22 -0
  92. package/lib/commands/firmwareRepair.d.ts.map +1 -0
  93. package/lib/commands/firmwareRepair.js +23 -0
  94. package/lib/commands/firmwareRepair.js.map +1 -0
  95. package/lib/commands/firmwareUpdate.d.ts +26 -0
  96. package/lib/commands/firmwareUpdate.d.ts.map +1 -0
  97. package/lib/commands/firmwareUpdate.js +154 -0
  98. package/lib/commands/firmwareUpdate.js.map +1 -0
  99. package/lib/commands/generateAppJsonFromDataset.d.ts +7 -0
  100. package/lib/commands/generateAppJsonFromDataset.d.ts.map +1 -0
  101. package/lib/commands/generateAppJsonFromDataset.js +212 -0
  102. package/lib/commands/generateAppJsonFromDataset.js.map +1 -0
  103. package/lib/commands/generateTestScanAccounts.d.ts +49 -0
  104. package/lib/commands/generateTestScanAccounts.d.ts.map +1 -0
  105. package/lib/commands/generateTestScanAccounts.js +60 -0
  106. package/lib/commands/generateTestScanAccounts.js.map +1 -0
  107. package/lib/commands/generateTestTransaction.d.ts +44 -0
  108. package/lib/commands/generateTestTransaction.d.ts.map +1 -0
  109. package/lib/commands/generateTestTransaction.js +118 -0
  110. package/lib/commands/generateTestTransaction.js.map +1 -0
  111. package/lib/commands/genuineCheck.d.ts +15 -0
  112. package/lib/commands/genuineCheck.d.ts.map +1 -0
  113. package/lib/commands/genuineCheck.js +22 -0
  114. package/lib/commands/genuineCheck.js.map +1 -0
  115. package/lib/commands/getAddress.d.ts +28 -0
  116. package/lib/commands/getAddress.d.ts.map +1 -0
  117. package/lib/commands/getAddress.js +53 -0
  118. package/lib/commands/getAddress.js.map +1 -0
  119. package/lib/commands/getTransactionStatus.d.ts +52 -0
  120. package/lib/commands/getTransactionStatus.d.ts.map +1 -0
  121. package/lib/commands/getTransactionStatus.js +86 -0
  122. package/lib/commands/getTransactionStatus.js.map +1 -0
  123. package/lib/commands/liveData.d.ts +49 -0
  124. package/lib/commands/liveData.d.ts.map +1 -0
  125. package/lib/commands/liveData.js +82 -0
  126. package/lib/commands/liveData.js.map +1 -0
  127. package/lib/commands/makeCompoundSummary.d.ts +54 -0
  128. package/lib/commands/makeCompoundSummary.d.ts.map +1 -0
  129. package/lib/commands/makeCompoundSummary.js +190 -0
  130. package/lib/commands/makeCompoundSummary.js.map +1 -0
  131. package/lib/commands/managerListApps.d.ts +21 -0
  132. package/lib/commands/managerListApps.d.ts.map +1 -0
  133. package/lib/commands/managerListApps.js +47 -0
  134. package/lib/commands/managerListApps.js.map +1 -0
  135. package/lib/commands/portfolio.d.ts +66 -0
  136. package/lib/commands/portfolio.d.ts.map +1 -0
  137. package/lib/commands/portfolio.js +138 -0
  138. package/lib/commands/portfolio.js.map +1 -0
  139. package/lib/commands/proxy.d.ts +36 -0
  140. package/lib/commands/proxy.d.ts.map +1 -0
  141. package/lib/commands/proxy.js +413 -0
  142. package/lib/commands/proxy.js.map +1 -0
  143. package/lib/commands/receive.d.ts +48 -0
  144. package/lib/commands/receive.d.ts.map +1 -0
  145. package/lib/commands/receive.js +68 -0
  146. package/lib/commands/receive.js.map +1 -0
  147. package/lib/commands/repl.d.ts +22 -0
  148. package/lib/commands/repl.d.ts.map +1 -0
  149. package/lib/commands/repl.js +26 -0
  150. package/lib/commands/repl.js.map +1 -0
  151. package/lib/commands/satstack.d.ts +37 -0
  152. package/lib/commands/satstack.d.ts.map +1 -0
  153. package/lib/commands/satstack.js +110 -0
  154. package/lib/commands/satstack.js.map +1 -0
  155. package/lib/commands/satstackStatus.d.ts +13 -0
  156. package/lib/commands/satstackStatus.d.ts.map +1 -0
  157. package/lib/commands/satstackStatus.js +24 -0
  158. package/lib/commands/satstackStatus.js.map +1 -0
  159. package/lib/commands/scanDescriptors.d.ts +15 -0
  160. package/lib/commands/scanDescriptors.d.ts.map +1 -0
  161. package/lib/commands/scanDescriptors.js +18 -0
  162. package/lib/commands/scanDescriptors.js.map +1 -0
  163. package/lib/commands/send.d.ts +48 -0
  164. package/lib/commands/send.d.ts.map +1 -0
  165. package/lib/commands/send.js +116 -0
  166. package/lib/commands/send.js.map +1 -0
  167. package/lib/commands/signMessage.d.ts +16 -0
  168. package/lib/commands/signMessage.d.ts.map +1 -0
  169. package/lib/commands/signMessage.js +58 -0
  170. package/lib/commands/signMessage.js.map +1 -0
  171. package/lib/commands/speculosList.d.ts +7 -0
  172. package/lib/commands/speculosList.d.ts.map +1 -0
  173. package/lib/commands/speculosList.js +71 -0
  174. package/lib/commands/speculosList.js.map +1 -0
  175. package/lib/commands/swap.d.ts +55 -0
  176. package/lib/commands/swap.d.ts.map +1 -0
  177. package/lib/commands/swap.js +341 -0
  178. package/lib/commands/swap.js.map +1 -0
  179. package/lib/commands/sync.d.ts +49 -0
  180. package/lib/commands/sync.d.ts.map +1 -0
  181. package/lib/commands/sync.js +135 -0
  182. package/lib/commands/sync.js.map +1 -0
  183. package/lib/commands/testDetectOpCollision.d.ts +41 -0
  184. package/lib/commands/testDetectOpCollision.d.ts.map +1 -0
  185. package/lib/commands/testDetectOpCollision.js +57 -0
  186. package/lib/commands/testDetectOpCollision.js.map +1 -0
  187. package/lib/commands/testGetTrustedInputFromTxHash.d.ts +23 -0
  188. package/lib/commands/testGetTrustedInputFromTxHash.d.ts.map +1 -0
  189. package/lib/commands/testGetTrustedInputFromTxHash.js +114 -0
  190. package/lib/commands/testGetTrustedInputFromTxHash.js.map +1 -0
  191. package/lib/commands/user.d.ts +6 -0
  192. package/lib/commands/user.d.ts.map +1 -0
  193. package/lib/commands/user.js +9 -0
  194. package/lib/commands/user.js.map +1 -0
  195. package/lib/commands/version.d.ts +7 -0
  196. package/lib/commands/version.d.ts.map +1 -0
  197. package/lib/commands/version.js +12 -0
  198. package/lib/commands/version.js.map +1 -0
  199. package/lib/commands/walletconnect.d.ts +62 -0
  200. package/lib/commands/walletconnect.d.ts.map +1 -0
  201. package/lib/commands/walletconnect.js +272 -0
  202. package/lib/commands/walletconnect.js.map +1 -0
  203. package/lib/commands-index.d.ts +1511 -0
  204. package/lib/commands-index.d.ts.map +1 -0
  205. package/lib/commands-index.js +106 -0
  206. package/lib/commands-index.js.map +1 -0
  207. package/lib/live-common-setup-base.d.ts +2 -0
  208. package/lib/live-common-setup-base.d.ts.map +1 -0
  209. package/lib/live-common-setup-base.js +131 -0
  210. package/lib/live-common-setup-base.js.map +1 -0
  211. package/lib/live-common-setup.d.ts +5 -0
  212. package/lib/live-common-setup.d.ts.map +1 -0
  213. package/lib/live-common-setup.js +318 -0
  214. package/lib/live-common-setup.js.map +1 -0
  215. package/lib/qr.d.ts +3 -0
  216. package/lib/qr.d.ts.map +1 -0
  217. package/lib/qr.js +18 -0
  218. package/lib/qr.js.map +1 -0
  219. package/lib/scan.d.ts +71 -0
  220. package/lib/scan.d.ts.map +1 -0
  221. package/lib/scan.js +299 -0
  222. package/lib/scan.js.map +1 -0
  223. package/lib/signedOperation.d.ts +13 -0
  224. package/lib/signedOperation.d.ts.map +1 -0
  225. package/lib/signedOperation.js +31 -0
  226. package/lib/signedOperation.js.map +1 -0
  227. package/lib/stream.d.ts +7 -0
  228. package/lib/stream.d.ts.map +1 -0
  229. package/lib/stream.js +82 -0
  230. package/lib/stream.js.map +1 -0
  231. package/lib/transaction.d.ts +31 -0
  232. package/lib/transaction.d.ts.map +1 -0
  233. package/lib/transaction.js +202 -0
  234. package/lib/transaction.js.map +1 -0
  235. package/package.json +63 -0
package/lib/scan.d.ts ADDED
@@ -0,0 +1,71 @@
1
+ import { Observable } from "rxjs";
2
+ import type { Account, CryptoCurrency } from "@ledgerhq/live-common/lib/types";
3
+ export declare const deviceOpt: {
4
+ name: string;
5
+ alias: string;
6
+ type: StringConstructor;
7
+ descOpt: string;
8
+ desc: string;
9
+ };
10
+ export declare const currencyOpt: {
11
+ name: string;
12
+ alias: string;
13
+ type: StringConstructor;
14
+ desc: string;
15
+ };
16
+ export declare type ScanCommonOpts = Partial<{
17
+ device: string;
18
+ id: string[];
19
+ xpub: string[];
20
+ file: string;
21
+ appjsonFile: string;
22
+ currency: string;
23
+ scheme: string;
24
+ index: number;
25
+ length: number;
26
+ paginateOperations: number;
27
+ }>;
28
+ export declare const scanCommonOpts: ({
29
+ name: string;
30
+ alias: string;
31
+ type: StringConstructor;
32
+ desc: string;
33
+ } | {
34
+ name: string;
35
+ type: StringConstructor;
36
+ desc: string;
37
+ multiple: boolean;
38
+ typeDesc?: undefined;
39
+ alias?: undefined;
40
+ } | {
41
+ name: string;
42
+ type: StringConstructor;
43
+ typeDesc: string;
44
+ desc: string;
45
+ multiple?: undefined;
46
+ alias?: undefined;
47
+ } | {
48
+ name: string;
49
+ alias: string;
50
+ type: NumberConstructor;
51
+ desc: string;
52
+ multiple?: undefined;
53
+ typeDesc?: undefined;
54
+ } | {
55
+ name: string;
56
+ type: NumberConstructor;
57
+ desc: string;
58
+ multiple?: undefined;
59
+ typeDesc?: undefined;
60
+ alias?: undefined;
61
+ })[];
62
+ export declare const inferManagerApp: (keyword: string) => string;
63
+ export declare const inferCurrency: <T extends {
64
+ device: string;
65
+ currency: string;
66
+ file: string;
67
+ xpub: string[];
68
+ id: string[];
69
+ }>({ device, currency, file, xpub, id, }: Partial<T>) => Observable<CryptoCurrency | null | undefined>;
70
+ export declare function scan(arg: ScanCommonOpts): Observable<Account>;
71
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAuC,MAAM,MAAM,CAAC;AAUvE,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EAEf,MAAM,iCAAiC,CAAC;AA4BzC,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC;AACF,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAYF,oBAAY,cAAc,GAAG,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkD1B,CAAC;AACF,eAAO,MAAM,eAAe,YAAa,MAAM,KAAG,MAQjD,CAAC;AAYF,eAAO,MAAM,aAAa;YAEd,MAAM;cACJ,MAAM;UACV,MAAM;UACN,MAAM,EAAE;QACV,MAAM,EAAE;sGA2Bf,CAAC;AAiBF,wBAAgB,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAkN7D"}
package/lib/scan.js ADDED
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.scan = exports.inferCurrency = exports.inferManagerApp = exports.scanCommonOpts = exports.currencyOpt = exports.deviceOpt = void 0;
7
+ var bignumber_js_1 = require("bignumber.js");
8
+ var rxjs_1 = require("rxjs");
9
+ var operators_1 = require("rxjs/operators");
10
+ var account_1 = require("@ledgerhq/live-common/lib/account");
11
+ var derivation_1 = require("@ledgerhq/live-common/lib/derivation");
12
+ var bridge_1 = require("@ledgerhq/live-common/lib/bridge");
13
+ var currencies_1 = require("@ledgerhq/live-common/lib/currencies");
14
+ var derivation_2 = require("@ledgerhq/live-common/lib/derivation");
15
+ var cache_1 = require("@ledgerhq/live-common/lib/bridge/cache");
16
+ var getAppAndVersion_1 = __importDefault(require("@ledgerhq/live-common/lib/hw/getAppAndVersion"));
17
+ var deviceAccess_1 = require("@ledgerhq/live-common/lib/hw/deviceAccess");
18
+ var promise_1 = require("@ledgerhq/live-common/lib/promise");
19
+ var stream_1 = require("./stream");
20
+ var helpers_1 = require("@ledgerhq/live-common/lib/account/helpers");
21
+ var fs_1 = __importDefault(require("fs"));
22
+ exports.deviceOpt = {
23
+ name: "device",
24
+ alias: "d",
25
+ type: String,
26
+ descOpt: "usb path",
27
+ desc: "provide a specific HID path of a device"
28
+ };
29
+ exports.currencyOpt = {
30
+ name: "currency",
31
+ alias: "c",
32
+ type: String,
33
+ desc: "Currency name or ticker. If not provided, it will be inferred from the device."
34
+ };
35
+ var localCache = {};
36
+ var cache = (0, cache_1.makeBridgeCacheSystem)({
37
+ saveData: function (c, d) {
38
+ localCache[c.id] = d;
39
+ return Promise.resolve();
40
+ },
41
+ getData: function (c) {
42
+ return Promise.resolve(localCache[c.id]);
43
+ }
44
+ });
45
+ exports.scanCommonOpts = [
46
+ exports.deviceOpt,
47
+ {
48
+ name: "xpub",
49
+ type: String,
50
+ desc: "use an xpub (alternatively to --device) [DEPRECATED: prefer use of id]",
51
+ multiple: true
52
+ },
53
+ {
54
+ name: "id",
55
+ type: String,
56
+ desc: "restore an account id (or a partial version of an id) (alternatively to --device)",
57
+ multiple: true
58
+ },
59
+ {
60
+ name: "file",
61
+ type: String,
62
+ typeDesc: "filename",
63
+ desc: "use a JSON account file or '-' for stdin (alternatively to --device)"
64
+ },
65
+ {
66
+ name: "appjsonFile",
67
+ type: String,
68
+ typeDesc: "filename",
69
+ desc: "use a desktop app.json (alternatively to --device)"
70
+ },
71
+ exports.currencyOpt,
72
+ {
73
+ name: "scheme",
74
+ alias: "s",
75
+ type: String,
76
+ desc: "if provided, filter the derivation path that are scanned by a given sceme. Providing '' empty string will only use the default standard derivation scheme."
77
+ },
78
+ {
79
+ name: "index",
80
+ alias: "i",
81
+ type: Number,
82
+ desc: "select the account by index"
83
+ },
84
+ {
85
+ name: "length",
86
+ alias: "l",
87
+ type: Number,
88
+ desc: "set the number of accounts after the index. Defaults to 1 if index was provided, Infinity otherwise."
89
+ },
90
+ {
91
+ name: "paginateOperations",
92
+ type: Number,
93
+ desc: "if defined, will paginate operations"
94
+ },
95
+ ];
96
+ var inferManagerApp = function (keyword) {
97
+ try {
98
+ var currency = (0, currencies_1.findCryptoCurrencyByKeyword)(keyword);
99
+ if (!currency || !currency.managerAppName)
100
+ return keyword;
101
+ return currency.managerAppName;
102
+ }
103
+ catch (e) {
104
+ return keyword;
105
+ }
106
+ };
107
+ exports.inferManagerApp = inferManagerApp;
108
+ var implTypePerFamily = {
109
+ tron: "js",
110
+ ripple: "js",
111
+ ethereum: "js",
112
+ polkadot: "js",
113
+ bitcoin: "js"
114
+ };
115
+ var possibleImpls = {
116
+ js: 1,
117
+ mock: 1
118
+ };
119
+ var inferCurrency = function (_a) {
120
+ var device = _a.device, currency = _a.currency, file = _a.file, xpub = _a.xpub, id = _a.id;
121
+ if (currency) {
122
+ return (0, rxjs_1.defer)(function () { return (0, rxjs_1.of)((0, currencies_1.findCryptoCurrencyByKeyword)(currency)); });
123
+ }
124
+ if (file || xpub || id) {
125
+ return (0, rxjs_1.of)(undefined);
126
+ }
127
+ return (0, deviceAccess_1.withDevice)(device || "")(function (t) {
128
+ return (0, rxjs_1.from)((0, getAppAndVersion_1["default"])(t)
129
+ .then(function (r) { return (0, currencies_1.findCryptoCurrencyByKeyword)(r.name); }, function () { return undefined; })
130
+ .then(function (r) { return (0, promise_1.delay)(500).then(function () { return r; }); }));
131
+ });
132
+ };
133
+ exports.inferCurrency = inferCurrency;
134
+ function requiredCurrency(cur) {
135
+ if (!cur)
136
+ throw new Error("--currency is required");
137
+ return cur;
138
+ }
139
+ var prepareCurrency = function (fn) { return function (observable) {
140
+ return observable.pipe((0, operators_1.concatMap)(function (item) {
141
+ var maybeCurrency = fn(item);
142
+ return maybeCurrency
143
+ ? (0, rxjs_1.from)(cache.prepareCurrency(maybeCurrency).then(function () { return item; }))
144
+ : (0, rxjs_1.of)(item);
145
+ }));
146
+ }; };
147
+ function scan(arg) {
148
+ var device = arg.device, idArray = arg.id, xpubArray = arg.xpub, file = arg.file, appjsonFile = arg.appjsonFile, scheme = arg.scheme, index = arg.index, length = arg.length, paginateOperations = arg.paginateOperations;
149
+ var syncConfig = {
150
+ paginationConfig: {
151
+ operations: undefined
152
+ }
153
+ };
154
+ if (typeof paginateOperations === "number") {
155
+ syncConfig.paginationConfig.operations = paginateOperations;
156
+ }
157
+ if (typeof appjsonFile === "string") {
158
+ var appjsondata = appjsonFile
159
+ ? JSON.parse(fs_1["default"].readFileSync(appjsonFile, "utf-8"))
160
+ : {
161
+ data: {
162
+ accounts: []
163
+ }
164
+ };
165
+ if (typeof appjsondata.data.accounts === "string") {
166
+ return (0, rxjs_1.throwError)(new Error("encrypted ledger live data is not supported"));
167
+ }
168
+ return (0, rxjs_1.from)(appjsondata.data.accounts.map(function (a) { return (0, account_1.fromAccountRaw)(a.data); })).pipe((0, operators_1.skip)(index || 0), (0, operators_1.take)(length === undefined ? (index !== undefined ? 1 : Infinity) : length));
169
+ }
170
+ if (typeof file === "string") {
171
+ return (0, stream_1.jsonFromFile)(file).pipe((0, operators_1.map)(account_1.fromAccountRaw), prepareCurrency(function (a) { return a.currency; }), (0, operators_1.concatMap)(function (account) {
172
+ return (0, bridge_1.getAccountBridge)(account, null)
173
+ .sync(account, syncConfig)
174
+ .pipe((0, operators_1.reduce)(function (a, f) { return f(a); }, account));
175
+ }));
176
+ }
177
+ return (0, exports.inferCurrency)(arg).pipe((0, operators_1.mergeMap)(function (cur) {
178
+ var ids = idArray;
179
+ if (xpubArray) {
180
+ console.warn("Usage of --xpub is deprecated. Prefer usage of `--id`");
181
+ ids = (ids || []).concat(xpubArray);
182
+ }
183
+ // TODO this should be a "inferAccountId" that needs to look at available impl and do same logic as in bridge.. + we should accept full id as param
184
+ // we kill the --xpub to something else too (--id)
185
+ // Restore from ids
186
+ if (ids) {
187
+ // Infer the full ids
188
+ var fullIds = ids.map(function (id) {
189
+ var _a, _b;
190
+ try {
191
+ // preserve if decodeAccountId don't fail
192
+ (0, account_1.decodeAccountId)(id);
193
+ return id;
194
+ }
195
+ catch (e) {
196
+ var splitted_1 = id.split(":");
197
+ var findAndEat = function (predicate) {
198
+ var res = splitted_1.find(predicate);
199
+ if (typeof res === "string") {
200
+ splitted_1.splice(splitted_1.indexOf(res), 1);
201
+ return res;
202
+ }
203
+ };
204
+ var currencyId = findAndEat(function (s) { return (0, currencies_1.findCryptoCurrencyById)(s); }) ||
205
+ requiredCurrency(cur).id;
206
+ var currency_1 = (0, currencies_1.getCryptoCurrencyById)(currencyId);
207
+ var type = findAndEat(function (s) { return possibleImpls[s]; }) ||
208
+ implTypePerFamily[currency_1.family] ||
209
+ "js";
210
+ var version = findAndEat(function (s) { return s.match(/^\d+$/); }) || "1";
211
+ var derivationMode = (0, derivation_1.asDerivationMode)((_b = (_a = findAndEat(function (s) {
212
+ try {
213
+ return (0, derivation_1.asDerivationMode)(s);
214
+ }
215
+ catch (e) {
216
+ // this is therefore not a derivation mode
217
+ }
218
+ })) !== null && _a !== void 0 ? _a : scheme) !== null && _b !== void 0 ? _b : "");
219
+ if (splitted_1.length === 0) {
220
+ throw new Error("invalid id='" + id + "': missing xpub or address part");
221
+ }
222
+ if (splitted_1.length > 1) {
223
+ throw new Error("invalid id='" +
224
+ id +
225
+ "': couldn't understand which of these are the xpub or address part: " +
226
+ splitted_1.join(" | "));
227
+ }
228
+ var xpubOrAddress = splitted_1[0];
229
+ return (0, account_1.encodeAccountId)({
230
+ type: type,
231
+ version: version,
232
+ currencyId: currencyId,
233
+ xpubOrAddress: xpubOrAddress,
234
+ derivationMode: derivationMode
235
+ });
236
+ }
237
+ });
238
+ return (0, rxjs_1.from)(fullIds.map(function (id) {
239
+ var _a = (0, account_1.decodeAccountId)(id), derivationMode = _a.derivationMode, xpubOrAddress = _a.xpubOrAddress, currencyId = _a.currencyId;
240
+ var currency = (0, currencies_1.getCryptoCurrencyById)(currencyId);
241
+ var scheme = (0, derivation_2.getDerivationScheme)({
242
+ derivationMode: derivationMode,
243
+ currency: currency
244
+ });
245
+ var index = 0;
246
+ var freshAddressPath = (0, derivation_2.runDerivationScheme)(scheme, currency, {
247
+ account: index,
248
+ node: 0,
249
+ address: 0
250
+ });
251
+ var account = {
252
+ type: "Account",
253
+ name: currency.name +
254
+ " " +
255
+ (derivationMode || "legacy") +
256
+ " " +
257
+ (0, helpers_1.shortAddressPreview)(xpubOrAddress),
258
+ xpub: xpubOrAddress,
259
+ seedIdentifier: xpubOrAddress,
260
+ starred: true,
261
+ used: true,
262
+ swapHistory: [],
263
+ id: id,
264
+ derivationMode: derivationMode,
265
+ currency: currency,
266
+ unit: currency.units[0],
267
+ index: index,
268
+ freshAddress: xpubOrAddress,
269
+ freshAddressPath: freshAddressPath,
270
+ freshAddresses: [],
271
+ creationDate: new Date(),
272
+ lastSyncDate: new Date(0),
273
+ blockHeight: 0,
274
+ balance: new bignumber_js_1.BigNumber(0),
275
+ spendableBalance: new bignumber_js_1.BigNumber(0),
276
+ operationsCount: 0,
277
+ operations: [],
278
+ pendingOperations: [],
279
+ balanceHistoryCache: account_1.emptyHistoryCache
280
+ };
281
+ return account;
282
+ })).pipe(prepareCurrency(function (a) { return a.currency; }), (0, operators_1.concatMap)(function (account) {
283
+ return (0, bridge_1.getAccountBridge)(account, null)
284
+ .sync(account, syncConfig)
285
+ .pipe((0, operators_1.reduce)(function (a, f) { return f(a); }, account));
286
+ }));
287
+ }
288
+ var currency = requiredCurrency(cur);
289
+ // otherwise we just scan for accounts
290
+ return (0, rxjs_1.concat)((0, rxjs_1.of)(currency).pipe(prepareCurrency(function (a) { return a; })), (0, bridge_1.getCurrencyBridge)(currency).scanAccounts({
291
+ currency: currency,
292
+ deviceId: device || "",
293
+ scheme: scheme && (0, derivation_1.asDerivationMode)(scheme),
294
+ syncConfig: syncConfig
295
+ })).pipe((0, operators_1.filter)(function (e) { return e.type === "discovered"; }), (0, operators_1.map)(function (e) { return e.account; }));
296
+ }), (0, operators_1.skip)(index || 0), (0, operators_1.take)(length === undefined ? (index !== undefined ? 1 : Infinity) : length));
297
+ }
298
+ exports.scan = scan;
299
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Observable } from "rxjs";
2
+ import type { SignedOperation, Account } from "@ledgerhq/live-common/lib/types";
3
+ export declare type InferSignedOperationsOpts = Partial<{
4
+ "signed-operation": string;
5
+ }>;
6
+ export declare const inferSignedOperationsOpts: {
7
+ name: string;
8
+ alias: string;
9
+ type: StringConstructor;
10
+ desc: string;
11
+ }[];
12
+ export declare function inferSignedOperations(mainAccount: Account, opts: InferSignedOperationsOpts): Observable<SignedOperation>;
13
+ //# sourceMappingURL=signedOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signedOperation.d.ts","sourceRoot":"","sources":["../src/signedOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAGhF,oBAAY,yBAAyB,GAAG,OAAO,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AACH,eAAO,MAAM,yBAAyB;;;;;GAOrC,CAAC;AACF,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,yBAAyB,GAC9B,UAAU,CAAC,eAAe,CAAC,CAe7B"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.inferSignedOperations = exports.inferSignedOperationsOpts = void 0;
7
+ var operators_1 = require("rxjs/operators");
8
+ var invariant_1 = __importDefault(require("invariant"));
9
+ var transaction_1 = require("@ledgerhq/live-common/lib/transaction");
10
+ var stream_1 = require("./stream");
11
+ exports.inferSignedOperationsOpts = [
12
+ {
13
+ name: "signed-operation",
14
+ alias: "t",
15
+ type: String,
16
+ desc: "JSON file of a signed operation (- for stdin)"
17
+ },
18
+ ];
19
+ function inferSignedOperations(mainAccount, opts) {
20
+ var file = opts["signed-operation"];
21
+ (0, invariant_1["default"])(file, "--signed-operation file is required");
22
+ return (0, stream_1.jsonFromFile)(file).pipe((0, operators_1.map)(function (json) {
23
+ (0, invariant_1["default"])(typeof json === "object", "not an object JSON");
24
+ (0, invariant_1["default"])(typeof json.signature === "string", "missing signature");
25
+ (0, invariant_1["default"])(typeof json.operation === "object", "missing operation object");
26
+ (0, invariant_1["default"])(json.operation.accountId === mainAccount.id, "the operation does not match the specified account");
27
+ return (0, transaction_1.fromSignedOperationRaw)(json, mainAccount.id);
28
+ }));
29
+ }
30
+ exports.inferSignedOperations = inferSignedOperations;
31
+ //# sourceMappingURL=signedOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signedOperation.js","sourceRoot":"","sources":["../src/signedOperation.ts"],"names":[],"mappings":";;;;;;AACA,4CAAqC;AACrC,wDAAkC;AAElC,qEAA+E;AAC/E,mCAAwC;AAI3B,QAAA,yBAAyB,GAAG;IACvC;QACE,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,+CAA+C;KACtD;CACF,CAAC;AACF,SAAgB,qBAAqB,CACnC,WAAoB,EACpB,IAA+B;IAE/B,IAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtC,IAAA,sBAAS,EAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;IACvD,OAAO,IAAA,qBAAY,EAAC,IAAc,CAAC,CAAC,IAAI,CACtC,IAAA,eAAG,EAAC,UAAC,IAAI;QACP,IAAA,sBAAS,EAAC,OAAO,IAAI,KAAK,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC1D,IAAA,sBAAS,EAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACnE,IAAA,sBAAS,EAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,0BAA0B,CAAC,CAAC;QAC1E,IAAA,sBAAS,EACP,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,WAAW,CAAC,EAAE,EAC3C,oDAAoD,CACrD,CAAC;QACF,OAAO,IAAA,oCAAsB,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAlBD,sDAkBC"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import { Observable } from "rxjs";
3
+ export declare const fromNodeStream: (stream: any) => Observable<Buffer>;
4
+ export declare const fromFile: (file: string) => Observable<Buffer>;
5
+ export declare const apdusFromFile: (file: string) => Observable<Buffer>;
6
+ export declare const jsonFromFile: (file: string, rawValue?: boolean) => Observable<any>;
7
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,eAAO,MAAM,cAAc,WAAY,GAAG,KAAG,WAAW,MAAM,CAgB1D,CAAC;AACL,eAAO,MAAM,QAAQ,SAAU,MAAM,uBACqC,CAAC;AAC3E,eAAO,MAAM,aAAa,SAAU,MAAM,uBAYvC,CAAC;AACJ,eAAO,MAAM,YAAY,SAAU,MAAM,yBAAqB,WAAW,GAAG,CA4CxE,CAAC"}
package/lib/stream.js ADDED
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.jsonFromFile = exports.apdusFromFile = exports.fromFile = exports.fromNodeStream = void 0;
7
+ var fs_1 = __importDefault(require("fs"));
8
+ var rxjs_1 = require("rxjs");
9
+ var operators_1 = require("rxjs/operators");
10
+ var fromNodeStream = function (stream) {
11
+ return rxjs_1.Observable.create(function (o) {
12
+ var endHandler = function () { return o.complete(); };
13
+ var errorHandler = function (e) { return o.error(e); };
14
+ var dataHandler = function (data) { return o.next(data); };
15
+ stream.addListener("end", endHandler);
16
+ stream.addListener("error", errorHandler);
17
+ stream.addListener("data", dataHandler);
18
+ return function () {
19
+ stream.removeListener("end", endHandler);
20
+ stream.removeListener("error", errorHandler);
21
+ stream.removeListener("data", dataHandler);
22
+ };
23
+ });
24
+ };
25
+ exports.fromNodeStream = fromNodeStream;
26
+ var fromFile = function (file) {
27
+ return (0, exports.fromNodeStream)(file === "-" ? process.stdin : fs_1["default"].createReadStream(file));
28
+ };
29
+ exports.fromFile = fromFile;
30
+ var apdusFromFile = function (file) {
31
+ return (0, exports.fromFile)(file).pipe((0, operators_1.map)(function (b) { return b.toString(); }), (0, operators_1.concatMap)(function (str) {
32
+ return str
33
+ .replace(/ /g, "")
34
+ .split("\n") // we supports => <= recorded files but will just clear out the <= and =>
35
+ .filter(function (line) { return !line.startsWith("<="); }) // we remove the responses
36
+ .map(function (line) { return (line.startsWith("=>") ? line.slice(2) : line); }) // we just keep the sending
37
+ .filter(Boolean);
38
+ }), (0, operators_1.map)(function (line) { return Buffer.from(line, "hex"); }));
39
+ };
40
+ exports.apdusFromFile = apdusFromFile;
41
+ var jsonFromFile = function (file, rawValue) {
42
+ if (rawValue === void 0) { rawValue = false; }
43
+ return rxjs_1.Observable.create(function (o) {
44
+ var acc = "";
45
+ var count = 0;
46
+ return (0, exports.fromFile)(file).subscribe({
47
+ error: function (e) { return o.error(e); },
48
+ complete: function () { return o.complete(); },
49
+ next: function (chunk) {
50
+ var lastIndex = 0;
51
+ var str = chunk.toString();
52
+ for (var i = 0; i < str.length; i++) {
53
+ switch (str[i]) {
54
+ case "[":
55
+ case "{":
56
+ count++;
57
+ break;
58
+ case "]":
59
+ case "}":
60
+ count--;
61
+ if (count === 0) {
62
+ acc += str.slice(lastIndex, i + 1);
63
+ lastIndex = i + 1;
64
+ try {
65
+ o.next(rawValue ? acc : JSON.parse(acc));
66
+ }
67
+ catch (e) {
68
+ o.error(e);
69
+ }
70
+ acc = "";
71
+ }
72
+ break;
73
+ default:
74
+ }
75
+ }
76
+ acc += str.slice(lastIndex);
77
+ }
78
+ });
79
+ });
80
+ };
81
+ exports.jsonFromFile = jsonFromFile;
82
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import "lodash.product";
2
+ import type { TransactionStatus, Transaction, Account } from "@ledgerhq/live-common/lib/types";
3
+ export declare type InferTransactionsOpts = Partial<{
4
+ "self-transaction": boolean;
5
+ "use-all-amount": boolean;
6
+ recipient: string[];
7
+ amount: string;
8
+ shuffle: boolean;
9
+ "fees-strategy": string;
10
+ collection: string;
11
+ tokenIds: string;
12
+ quantities: string;
13
+ }>;
14
+ export declare const inferTransactionsOpts: ({
15
+ name: string;
16
+ type: BooleanConstructor;
17
+ desc: string;
18
+ multiple?: undefined;
19
+ } | {
20
+ name: string;
21
+ type: StringConstructor;
22
+ desc: string;
23
+ multiple: boolean;
24
+ } | {
25
+ name: string;
26
+ type: StringConstructor;
27
+ desc: string;
28
+ multiple?: undefined;
29
+ })[];
30
+ export declare function inferTransactions(mainAccount: Account, opts: InferTransactionsOpts): Promise<[Transaction, TransactionStatus][]>;
31
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EAEX,OAAO,EACR,MAAM,iCAAiC,CAAC;AA4BzC,oBAAY,qBAAqB,GAAG,OAAO,CAAC;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;IA+CjC,CAAC;AACF,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,CAAC,CA+D7C"}