@ledgerhq/live-common 26.0.0 → 26.1.0-next.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 (163) hide show
  1. package/README.md +1 -1
  2. package/lib/__tests__/hw/getDeviceInfo.js +152 -0
  3. package/lib/__tests__/hw/getDeviceInfo.js.map +1 -1
  4. package/lib/api/Manager.d.ts +2 -1
  5. package/lib/api/Manager.d.ts.map +1 -1
  6. package/lib/api/Manager.js +37 -2
  7. package/lib/api/Manager.js.map +1 -1
  8. package/lib/ble/hooks/useBleDevicePairing.d.ts +18 -0
  9. package/lib/ble/hooks/useBleDevicePairing.d.ts.map +1 -0
  10. package/lib/ble/hooks/useBleDevicePairing.js +57 -0
  11. package/lib/ble/hooks/useBleDevicePairing.js.map +1 -0
  12. package/lib/ble/hooks/useBleDevicePairing.test.d.ts +2 -0
  13. package/lib/ble/hooks/useBleDevicePairing.test.d.ts.map +1 -0
  14. package/lib/ble/hooks/useBleDevicePairing.test.js +159 -0
  15. package/lib/ble/hooks/useBleDevicePairing.test.js.map +1 -0
  16. package/lib/ble/hooks/useBleDevicesScanning.d.ts +25 -0
  17. package/lib/ble/hooks/useBleDevicesScanning.d.ts.map +1 -0
  18. package/lib/ble/hooks/useBleDevicesScanning.js +117 -0
  19. package/lib/ble/hooks/useBleDevicesScanning.js.map +1 -0
  20. package/lib/ble/hooks/useBleDevicesScanning.test.d.ts +2 -0
  21. package/lib/ble/hooks/useBleDevicesScanning.test.d.ts.map +1 -0
  22. package/lib/ble/hooks/useBleDevicesScanning.test.js +281 -0
  23. package/lib/ble/hooks/useBleDevicesScanning.test.js.map +1 -0
  24. package/lib/ble/types.d.ts +21 -0
  25. package/lib/ble/types.d.ts.map +1 -0
  26. package/lib/ble/types.js +3 -0
  27. package/lib/ble/types.js.map +1 -0
  28. package/lib/errors.d.ts +2 -0
  29. package/lib/errors.d.ts.map +1 -1
  30. package/lib/errors.js +4 -2
  31. package/lib/errors.js.map +1 -1
  32. package/lib/families/cardano/js-estimateMaxSpendable.d.ts.map +1 -1
  33. package/lib/families/cardano/js-estimateMaxSpendable.js +2 -0
  34. package/lib/families/cardano/js-estimateMaxSpendable.js.map +1 -1
  35. package/lib/families/cosmos/specs.js +2 -2
  36. package/lib/families/cosmos/specs.js.map +1 -1
  37. package/lib/families/elrond/specs.js +1 -1
  38. package/lib/families/elrond/specs.js.map +1 -1
  39. package/lib/families/polkadot/bridge.integration.test.js +3 -3
  40. package/lib/families/polkadot/bridge.integration.test.js.map +1 -1
  41. package/lib/families/polkadot/specs.d.ts.map +1 -1
  42. package/lib/families/polkadot/specs.js +4 -3
  43. package/lib/families/polkadot/specs.js.map +1 -1
  44. package/lib/featureFlags/provider.d.ts +5 -1
  45. package/lib/featureFlags/provider.d.ts.map +1 -1
  46. package/lib/featureFlags/provider.js +6 -4
  47. package/lib/featureFlags/provider.js.map +1 -1
  48. package/lib/featureFlags/useFeature.d.ts.map +1 -1
  49. package/lib/featureFlags/useFeature.js +3 -1
  50. package/lib/featureFlags/useFeature.js.map +1 -1
  51. package/lib/generated/account.d.ts.map +1 -1
  52. package/lib/generated/account.js.map +1 -1
  53. package/lib/generated/bridge/js.d.ts.map +1 -1
  54. package/lib/generated/bridge/js.js.map +1 -1
  55. package/lib/generated/bridge/mock.d.ts.map +1 -1
  56. package/lib/generated/bridge/mock.js.map +1 -1
  57. package/lib/generated/cli-transaction.d.ts.map +1 -1
  58. package/lib/generated/cli-transaction.js.map +1 -1
  59. package/lib/generated/deviceTransactionConfig.d.ts.map +1 -1
  60. package/lib/generated/deviceTransactionConfig.js.map +1 -1
  61. package/lib/generated/exchange.d.ts.map +1 -1
  62. package/lib/generated/exchange.js.map +1 -1
  63. package/lib/generated/hw-getAddress.d.ts.map +1 -1
  64. package/lib/generated/hw-getAddress.js.map +1 -1
  65. package/lib/generated/hw-signMessage.d.ts.map +1 -1
  66. package/lib/generated/hw-signMessage.js.map +1 -1
  67. package/lib/generated/mock.d.ts.map +1 -1
  68. package/lib/generated/mock.js.map +1 -1
  69. package/lib/generated/platformAdapter.d.ts.map +1 -1
  70. package/lib/generated/platformAdapter.js.map +1 -1
  71. package/lib/generated/presync.d.ts.map +1 -1
  72. package/lib/generated/presync.js.map +1 -1
  73. package/lib/generated/specs.d.ts.map +1 -1
  74. package/lib/generated/specs.js.map +1 -1
  75. package/lib/generated/speculos-deviceActions.d.ts.map +1 -1
  76. package/lib/generated/speculos-deviceActions.js.map +1 -1
  77. package/lib/generated/transaction.d.ts.map +1 -1
  78. package/lib/generated/transaction.js.map +1 -1
  79. package/lib/generated/types.d.ts.map +1 -1
  80. package/lib/hw/actions/installLanguage.d.ts +21 -0
  81. package/lib/hw/actions/installLanguage.d.ts.map +1 -0
  82. package/lib/hw/actions/installLanguage.js +260 -0
  83. package/lib/hw/actions/installLanguage.js.map +1 -0
  84. package/lib/hw/attemptToQuitApp.d.ts +10 -0
  85. package/lib/hw/attemptToQuitApp.d.ts.map +1 -0
  86. package/lib/hw/attemptToQuitApp.js +22 -0
  87. package/lib/hw/attemptToQuitApp.js.map +1 -0
  88. package/lib/hw/connectManager.d.ts +2 -5
  89. package/lib/hw/connectManager.d.ts.map +1 -1
  90. package/lib/hw/connectManager.js +2 -14
  91. package/lib/hw/connectManager.js.map +1 -1
  92. package/lib/hw/getDeviceInfo.d.ts.map +1 -1
  93. package/lib/hw/getDeviceInfo.js +6 -3
  94. package/lib/hw/getDeviceInfo.js.map +1 -1
  95. package/lib/hw/getVersion.d.ts +3 -3
  96. package/lib/hw/getVersion.d.ts.map +1 -1
  97. package/lib/hw/getVersion.js +53 -5
  98. package/lib/hw/getVersion.js.map +1 -1
  99. package/lib/hw/installLanguage.d.ts +17 -0
  100. package/lib/hw/installLanguage.d.ts.map +1 -0
  101. package/lib/hw/installLanguage.js +173 -0
  102. package/lib/hw/installLanguage.js.map +1 -0
  103. package/lib/hw/uninstallLanguage.d.ts +15 -0
  104. package/lib/hw/uninstallLanguage.d.ts.map +1 -0
  105. package/lib/hw/uninstallLanguage.js +121 -0
  106. package/lib/hw/uninstallLanguage.js.map +1 -0
  107. package/lib/manager/hooks.d.ts +2 -1
  108. package/lib/manager/hooks.d.ts.map +1 -1
  109. package/lib/manager/hooks.js +13 -1
  110. package/lib/manager/hooks.js.map +1 -1
  111. package/lib/manager/index.d.ts +2 -1
  112. package/lib/manager/index.d.ts.map +1 -1
  113. package/lib/manager/index.js +16 -0
  114. package/lib/manager/index.js.map +1 -1
  115. package/lib/manager/localization.d.ts +3 -0
  116. package/lib/manager/localization.d.ts.map +1 -0
  117. package/lib/manager/localization.js +15 -0
  118. package/lib/manager/localization.js.map +1 -0
  119. package/lib/platform/react.d.ts.map +1 -1
  120. package/lib/platform/react.js +6 -3
  121. package/lib/platform/react.js.map +1 -1
  122. package/package.json +18 -18
  123. package/src/__tests__/hw/getDeviceInfo.ts +137 -0
  124. package/src/api/Manager.ts +50 -2
  125. package/src/ble/hooks/useBleDevicePairing.test.ts +91 -0
  126. package/src/ble/hooks/useBleDevicePairing.ts +51 -0
  127. package/src/ble/hooks/useBleDevicesScanning.test.ts +252 -0
  128. package/src/ble/hooks/useBleDevicesScanning.ts +147 -0
  129. package/src/ble/types.ts +42 -0
  130. package/src/errors.ts +9 -0
  131. package/src/families/cardano/js-estimateMaxSpendable.ts +2 -0
  132. package/src/families/cosmos/specs.ts +2 -2
  133. package/src/families/elrond/specs.ts +1 -1
  134. package/src/families/polkadot/bridge.integration.test.ts +3 -3
  135. package/src/families/polkadot/specs.ts +4 -3
  136. package/src/featureFlags/provider.tsx +11 -1
  137. package/src/featureFlags/useFeature.ts +6 -2
  138. package/src/generated/account.ts +0 -8
  139. package/src/generated/bridge/js.ts +0 -18
  140. package/src/generated/bridge/mock.ts +0 -8
  141. package/src/generated/cli-transaction.ts +0 -17
  142. package/src/generated/deviceTransactionConfig.ts +15 -31
  143. package/src/generated/exchange.ts +0 -5
  144. package/src/generated/hw-getAddress.ts +0 -18
  145. package/src/generated/hw-signMessage.ts +0 -3
  146. package/src/generated/mock.ts +0 -3
  147. package/src/generated/platformAdapter.ts +0 -4
  148. package/src/generated/presync.ts +0 -1
  149. package/src/generated/specs.ts +0 -17
  150. package/src/generated/speculos-deviceActions.ts +0 -17
  151. package/src/generated/transaction.ts +0 -18
  152. package/src/generated/types.ts +7 -4
  153. package/src/hw/actions/installLanguage.ts +343 -0
  154. package/src/hw/attemptToQuitApp.ts +32 -0
  155. package/src/hw/connectManager.ts +5 -26
  156. package/src/hw/getDeviceInfo.ts +6 -0
  157. package/src/hw/getVersion.ts +77 -3
  158. package/src/hw/installLanguage.ts +172 -0
  159. package/src/hw/uninstallLanguage.ts +127 -0
  160. package/src/manager/hooks.ts +21 -1
  161. package/src/manager/index.ts +16 -0
  162. package/src/manager/localization.ts +19 -0
  163. package/src/platform/react.ts +7 -3
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
32
+ exports.__esModule = true;
33
+ exports.createAction = void 0;
34
+ var rxjs_1 = require("rxjs");
35
+ var operators_1 = require("rxjs/operators");
36
+ var react_1 = require("react");
37
+ var logs_1 = require("@ledgerhq/logs");
38
+ var observable_1 = require("../../observable");
39
+ var isEqual_1 = __importDefault(require("lodash/isEqual"));
40
+ var errors_1 = require("../../errors");
41
+ var app_1 = require("./app");
42
+ var errors_2 = require("@ledgerhq/errors");
43
+ var devices_1 = require("@ledgerhq/devices");
44
+ var mapResult = function (_a) {
45
+ var languageInstalled = _a.languageInstalled;
46
+ return languageInstalled;
47
+ };
48
+ var getInitialState = function (device) { return ({
49
+ isLoading: !!device,
50
+ requestQuitApp: false,
51
+ unresponsive: false,
52
+ device: device,
53
+ deviceInfo: null,
54
+ error: null
55
+ }); };
56
+ var reducer = function (state, e) {
57
+ switch (e.type) {
58
+ case "unresponsiveDevice":
59
+ return __assign(__assign({}, state), { unresponsive: true, isLoading: false });
60
+ case "deviceChange":
61
+ return getInitialState(e.device);
62
+ case "error":
63
+ return __assign(__assign({}, getInitialState(state.device)), { error: e.error, isLoading: false });
64
+ case "appDetected":
65
+ return __assign(__assign({}, state), { unresponsive: false, requestQuitApp: true, isLoading: false });
66
+ case "devicePermissionRequested":
67
+ return __assign(__assign({}, state), { unresponsive: false, languageInstallationRequested: true, isLoading: false });
68
+ case "languageInstalled":
69
+ return __assign(__assign({}, state), { unresponsive: false, languageInstallationRequested: false, isLoading: false, installingLanguage: false, languageInstalled: true });
70
+ case "progress":
71
+ return __assign(__assign({}, state), { unresponsive: false, languageInstallationRequested: false, isLoading: false, installingLanguage: true, progress: e.progress });
72
+ }
73
+ };
74
+ var implementations = {
75
+ // in this paradigm, we know that deviceSubject is reflecting the device events
76
+ // so we just trust deviceSubject to reflect the device context (switch between apps, dashboard,...)
77
+ event: function (_a) {
78
+ var deviceSubject = _a.deviceSubject, installLanguage = _a.installLanguage, language = _a.language;
79
+ return deviceSubject.pipe((0, operators_1.debounceTime)(1000), (0, operators_1.switchMap)(function (d) { return installLanguage(d, language); }));
80
+ },
81
+ // in this paradigm, we can't observe directly the device, so we have to poll it
82
+ polling: function (_a) {
83
+ var deviceSubject = _a.deviceSubject, installLanguage = _a.installLanguage, language = _a.language;
84
+ return new rxjs_1.Observable(function (o) {
85
+ var POLLING = 2000;
86
+ var INIT_DEBOUNCE = 5000;
87
+ var DISCONNECT_DEBOUNCE = 5000;
88
+ var DEVICE_POLLING_TIMEOUT = 20000;
89
+ // this pattern allows to actually support events based (like if deviceSubject emits new device changes) but inside polling paradigm
90
+ var pollingOnDevice;
91
+ var sub = deviceSubject.subscribe(function (d) {
92
+ if (d) {
93
+ pollingOnDevice = d;
94
+ }
95
+ });
96
+ var initT = setTimeout(function () {
97
+ // initial timeout to unset the device if it's still not connected
98
+ o.next({
99
+ type: "deviceChange",
100
+ device: null
101
+ });
102
+ device = null;
103
+ (0, logs_1.log)("actions-install-language-event/polling", "device init timeout");
104
+ }, INIT_DEBOUNCE);
105
+ var connectSub;
106
+ var loopT;
107
+ var disconnectT;
108
+ var device = null; // used as internal state for polling
109
+ var stopDevicePollingError = null;
110
+ function loop() {
111
+ stopDevicePollingError = null;
112
+ if (!pollingOnDevice) {
113
+ loopT = setTimeout(loop, POLLING);
114
+ return;
115
+ }
116
+ (0, logs_1.log)("actions-install-language-event/polling", "polling loop");
117
+ connectSub = installLanguage(pollingOnDevice, language)
118
+ .pipe((0, operators_1.timeout)(DEVICE_POLLING_TIMEOUT), (0, operators_1.catchError)(function (err) {
119
+ var productName = (0, devices_1.getDeviceModel)(pollingOnDevice.modelId).productName;
120
+ return err instanceof rxjs_1.TimeoutError
121
+ ? (0, rxjs_1.of)({
122
+ type: "error",
123
+ error: new errors_1.ConnectManagerTimeout(undefined, {
124
+ productName: productName
125
+ })
126
+ })
127
+ : (0, rxjs_1.throwError)(err);
128
+ }))
129
+ .subscribe({
130
+ next: function (event) {
131
+ if (initT && device) {
132
+ clearTimeout(initT);
133
+ initT = null;
134
+ }
135
+ if (disconnectT) {
136
+ // any connect app event unschedule the disconnect debounced event
137
+ clearTimeout(disconnectT);
138
+ disconnectT = null;
139
+ }
140
+ if (event.type === "error" && event.error) {
141
+ if (event.error instanceof errors_2.DisconnectedDevice ||
142
+ event.error instanceof errors_2.DisconnectedDeviceDuringOperation) {
143
+ // disconnect on manager actions seems to trigger a type "error" instead of "disconnect"
144
+ // the disconnect event is delayed to debounce the reconnection that happens when switching apps
145
+ disconnectT = setTimeout(function () {
146
+ disconnectT = null;
147
+ // a disconnect will locally be remembered via locally setting device to null...
148
+ device = null;
149
+ o.next(event);
150
+ (0, logs_1.log)("actions-install-language-event/polling", "device disconnect timeout");
151
+ }, DISCONNECT_DEBOUNCE);
152
+ }
153
+ else {
154
+ // These error events should stop polling
155
+ stopDevicePollingError = event.error;
156
+ // clear all potential polling loops
157
+ if (loopT) {
158
+ clearTimeout(loopT);
159
+ loopT = null;
160
+ }
161
+ // send in the event for the UI immediately
162
+ o.next(event);
163
+ }
164
+ }
165
+ else if (event.type === "unresponsiveDevice") {
166
+ return; // ignore unresponsive case which happens for polling
167
+ }
168
+ else {
169
+ if (device !== pollingOnDevice) {
170
+ // ...but any time an event comes back, it means our device was responding and need to be set back on in polling context
171
+ device = pollingOnDevice;
172
+ o.next({
173
+ type: "deviceChange",
174
+ device: device
175
+ });
176
+ }
177
+ o.next(event);
178
+ }
179
+ },
180
+ complete: function () {
181
+ // start a new polling if available
182
+ if (!stopDevicePollingError)
183
+ loopT = setTimeout(loop, POLLING);
184
+ },
185
+ error: function (e) {
186
+ o.error(e);
187
+ }
188
+ });
189
+ }
190
+ // delay a bit the first loop run in order to be async and wait pollingOnDevice
191
+ loopT = setTimeout(loop, 0);
192
+ return function () {
193
+ if (initT)
194
+ clearTimeout(initT);
195
+ if (disconnectT)
196
+ clearTimeout(disconnectT);
197
+ if (connectSub)
198
+ connectSub.unsubscribe();
199
+ sub.unsubscribe();
200
+ clearTimeout(loopT);
201
+ };
202
+ }).pipe((0, operators_1.distinctUntilChanged)(isEqual_1["default"]));
203
+ }
204
+ };
205
+ var createAction = function (installLanuageExec) {
206
+ var installLanguage = function (device, language) {
207
+ return (0, rxjs_1.concat)((0, rxjs_1.of)({
208
+ type: "deviceChange",
209
+ device: device
210
+ }), !device
211
+ ? rxjs_1.EMPTY
212
+ : installLanuageExec({
213
+ deviceId: device.deviceId,
214
+ language: language
215
+ }).pipe((0, operators_1.catchError)(function (error) {
216
+ return (0, rxjs_1.of)({
217
+ type: "error",
218
+ error: error
219
+ });
220
+ })));
221
+ };
222
+ var useHook = function (device, language) {
223
+ var _a = __read((0, react_1.useState)(function () { return getInitialState(device); }), 2), state = _a[0], setState = _a[1];
224
+ var deviceSubject = (0, observable_1.useReplaySubject)(device);
225
+ (0, react_1.useEffect)(function () {
226
+ if (state.languageInstalled)
227
+ return;
228
+ var impl = implementations[app_1.currentMode]({
229
+ deviceSubject: deviceSubject,
230
+ installLanguage: installLanguage,
231
+ language: language
232
+ });
233
+ var sub = impl
234
+ .pipe(
235
+ // debounce a bit the connect/disconnect event that we don't need
236
+ (0, operators_1.tap)(function (e) { return (0, logs_1.log)("actions-install-language-event", e.type, e); }),
237
+ // we gather all events with a reducer into the UI state
238
+ (0, operators_1.scan)(reducer, getInitialState()),
239
+ // we debounce the UI state to not blink on the UI
240
+ (0, operators_1.debounce)(function (s) {
241
+ if (s.installingLanguage || s.languageInstallationRequested) {
242
+ return rxjs_1.EMPTY;
243
+ }
244
+ // default debounce (to be tweak)
245
+ return (0, rxjs_1.interval)(1500);
246
+ })) // the state simply goes into a React state
247
+ .subscribe(setState);
248
+ return function () {
249
+ sub.unsubscribe();
250
+ };
251
+ }, [deviceSubject, language, state.languageInstalled]);
252
+ return __assign({}, state);
253
+ };
254
+ return {
255
+ useHook: useHook,
256
+ mapResult: mapResult
257
+ };
258
+ };
259
+ exports.createAction = createAction;
260
+ //# sourceMappingURL=installLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installLanguage.js","sourceRoot":"","sources":["../../../src/hw/actions/installLanguage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAQc;AACd,4CASwB;AACxB,+BAA4C;AAC5C,uCAAqC;AAErC,+CAAoD;AAMpD,2DAAqC;AACrC,uCAAqD;AACrD,6BAAoC;AACpC,2CAG0B;AAC1B,6CAAmD;AAkBnD,IAAM,SAAS,GAAG,UAAC,EAA4B;QAA1B,iBAAiB,uBAAA;IAAc,OAAA,iBAAiB;AAAjB,CAAiB,CAAC;AAatE,IAAM,eAAe,GAAG,UAAC,MAAkC,IAAY,OAAA,CAAC;IACtE,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,KAAK;IACnB,MAAM,QAAA;IACN,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;CACZ,CAAC,EAPqE,CAOrE,CAAC;AAEH,IAAM,OAAO,GAAG,UAAC,KAAY,EAAE,CAAQ;IACrC,QAAQ,CAAC,CAAC,IAAI,EAAE;QACd,KAAK,oBAAoB;YACvB,6BAAY,KAAK,KAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,IAAG;QAE5D,KAAK,cAAc;YACjB,OAAO,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEnC,KAAK,OAAO;YACV,6BACK,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAChC,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,SAAS,EAAE,KAAK,IAChB;QACJ,KAAK,aAAa;YAChB,6BACK,KAAK,KACR,YAAY,EAAE,KAAK,EACnB,cAAc,EAAE,IAAI,EACpB,SAAS,EAAE,KAAK,IAChB;QACJ,KAAK,2BAA2B;YAC9B,6BACK,KAAK,KACR,YAAY,EAAE,KAAK,EACnB,6BAA6B,EAAE,IAAI,EACnC,SAAS,EAAE,KAAK,IAChB;QACJ,KAAK,mBAAmB;YACtB,6BACK,KAAK,KACR,YAAY,EAAE,KAAK,EACnB,6BAA6B,EAAE,KAAK,EACpC,SAAS,EAAE,KAAK,EAChB,kBAAkB,EAAE,KAAK,EACzB,iBAAiB,EAAE,IAAI,IACvB;QAEJ,KAAK,UAAU;YACb,6BACK,KAAK,KACR,YAAY,EAAE,KAAK,EACnB,6BAA6B,EAAE,KAAK,EACpC,SAAS,EAAE,KAAK,EAChB,kBAAkB,EAAE,IAAI,EACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IACpB;KACL;AACH,CAAC,CAAC;AAEF,IAAM,eAAe,GAAG;IACtB,+EAA+E;IAC/E,oGAAoG;IACpG,KAAK,EAAE,UAAC,EAA4C;YAA1C,aAAa,mBAAA,EAAE,eAAe,qBAAA,EAAE,QAAQ,cAAA;QAChD,OAAA,aAAa,CAAC,IAAI,CAChB,IAAA,wBAAY,EAAC,IAAI,CAAC,EAClB,IAAA,qBAAS,EAAC,UAAC,CAAC,IAAK,OAAA,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,EAA5B,CAA4B,CAAC,CAC/C;IAHD,CAGC;IACH,gFAAgF;IAChF,OAAO,EAAE,UAAC,EAA4C;YAA1C,aAAa,mBAAA,EAAE,eAAe,qBAAA,EAAE,QAAQ,cAAA;QAClD,OAAA,IAAI,iBAAU,CAAC,UAAC,CAAC;YACf,IAAM,OAAO,GAAG,IAAI,CAAC;YACrB,IAAM,aAAa,GAAG,IAAI,CAAC;YAC3B,IAAM,mBAAmB,GAAG,IAAI,CAAC;YACjC,IAAM,sBAAsB,GAAG,KAAK,CAAC;YACrC,oIAAoI;YACpI,IAAI,eAAe,CAAC;YACpB,IAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,UAAC,CAAC;gBACpC,IAAI,CAAC,EAAE;oBACL,eAAe,GAAG,CAAC,CAAC;iBACrB;YACH,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,GAA0B,UAAU,CAAC;gBAC5C,kEAAkE;gBAClE,CAAC,CAAC,IAAI,CAAC;oBACL,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC;gBACd,IAAA,UAAG,EAAC,wCAAwC,EAAE,qBAAqB,CAAC,CAAC;YACvE,CAAC,EAAE,aAAa,CAAC,CAAC;YAClB,IAAI,UAAU,CAAC;YACf,IAAI,KAAK,CAAC;YACV,IAAI,WAAW,CAAC;YAChB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,qCAAqC;YAExD,IAAI,sBAAsB,GAAG,IAAI,CAAC;YAElC,SAAS,IAAI;gBACX,sBAAsB,GAAG,IAAI,CAAC;gBAE9B,IAAI,CAAC,eAAe,EAAE;oBACpB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAClC,OAAO;iBACR;gBAED,IAAA,UAAG,EAAC,wCAAwC,EAAE,cAAc,CAAC,CAAC;gBAC9D,UAAU,GAAG,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC;qBACpD,IAAI,CACH,IAAA,mBAAO,EAAC,sBAAsB,CAAC,EAC/B,IAAA,sBAAU,EAAC,UAAC,GAAG;oBACb,IAAM,WAAW,GAAG,IAAA,wBAAc,EAChC,eAAe,CAAC,OAAO,CACxB,CAAC,WAAW,CAAC;oBACd,OAAO,GAAG,YAAY,mBAAY;wBAChC,CAAC,CAAC,IAAA,SAAE,EAAC;4BACD,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,IAAI,8BAAqB,CAAC,SAAS,EAAE;gCAC1C,WAAW,aAAA;6BACZ,CAAU;yBACZ,CAAC;wBACJ,CAAC,CAAC,IAAA,iBAAU,EAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,CAAC,CACH;qBACA,SAAS,CAAC;oBACT,IAAI,EAAE,UAAC,KAAK;wBACV,IAAI,KAAK,IAAI,MAAM,EAAE;4BACnB,YAAY,CAAC,KAAK,CAAC,CAAC;4BACpB,KAAK,GAAG,IAAI,CAAC;yBACd;wBAED,IAAI,WAAW,EAAE;4BACf,kEAAkE;4BAClE,YAAY,CAAC,WAAW,CAAC,CAAC;4BAC1B,WAAW,GAAG,IAAI,CAAC;yBACpB;wBAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;4BACzC,IACE,KAAK,CAAC,KAAK,YAAY,2BAAkB;gCACzC,KAAK,CAAC,KAAK,YAAY,0CAAiC,EACxD;gCACA,wFAAwF;gCACxF,gGAAgG;gCAChG,WAAW,GAAG,UAAU,CAAC;oCACvB,WAAW,GAAG,IAAI,CAAC;oCACnB,gFAAgF;oCAChF,MAAM,GAAG,IAAI,CAAC;oCACd,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oCACd,IAAA,UAAG,EACD,wCAAwC,EACxC,2BAA2B,CAC5B,CAAC;gCACJ,CAAC,EAAE,mBAAmB,CAAC,CAAC;6BACzB;iCAAM;gCACL,yCAAyC;gCACzC,sBAAsB,GAAG,KAAK,CAAC,KAAK,CAAC;gCAErC,oCAAoC;gCACpC,IAAI,KAAK,EAAE;oCACT,YAAY,CAAC,KAAK,CAAC,CAAC;oCACpB,KAAK,GAAG,IAAI,CAAC;iCACd;gCAED,2CAA2C;gCAC3C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BACf;yBACF;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE;4BAC9C,OAAO,CAAC,qDAAqD;yBAC9D;6BAAM;4BACL,IAAI,MAAM,KAAK,eAAe,EAAE;gCAC9B,wHAAwH;gCACxH,MAAM,GAAG,eAAe,CAAC;gCACzB,CAAC,CAAC,IAAI,CAAC;oCACL,IAAI,EAAE,cAAc;oCACpB,MAAM,QAAA;iCACP,CAAC,CAAC;6BACJ;4BAED,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACf;oBACH,CAAC;oBACD,QAAQ,EAAE;wBACR,mCAAmC;wBACnC,IAAI,CAAC,sBAAsB;4BAAE,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACjE,CAAC;oBACD,KAAK,EAAE,UAAC,CAAC;wBACP,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACb,CAAC;iBACF,CAAC,CAAC;YACP,CAAC;YAED,+EAA+E;YAC/E,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO;gBACL,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,WAAW;oBAAE,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC3C,IAAI,UAAU;oBAAE,UAAU,CAAC,WAAW,EAAE,CAAC;gBACzC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAClB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,gCAAoB,EAAC,oBAAO,CAAC,CAAC;IAnItC,CAmIsC;CACzC,CAAC;AACK,IAAM,YAAY,GAAG,UAC1B,kBAEqC;IAErC,IAAM,eAAe,GAAG,UAAC,MAAM,EAAE,QAAkB;QACjD,OAAO,IAAA,aAAM,EACX,IAAA,SAAE,EAAC;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,QAAA;SACP,CAAC,EACF,CAAC,MAAM;YACL,CAAC,CAAC,YAAK;YACP,CAAC,CAAC,kBAAkB,CAAC;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC,IAAI,CACL,IAAA,sBAAU,EAAC,UAAC,KAAY;gBACtB,OAAA,IAAA,SAAE,EAAC;oBACD,IAAI,EAAE,OAAO;oBACb,KAAK,OAAA;iBACN,CAAC;YAHF,CAGE,CACH,CACF,CACN,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UACd,MAAiC,EACjC,QAAkB;QAEZ,IAAA,KAAA,OAAoB,IAAA,gBAAQ,EAAC,cAAM,OAAA,eAAe,CAAC,MAAM,CAAC,EAAvB,CAAuB,CAAC,IAAA,EAA1D,KAAK,QAAA,EAAE,QAAQ,QAA2C,CAAC;QAClE,IAAM,aAAa,GAAG,IAAA,6BAAgB,EAAC,MAAM,CAAC,CAAC;QAE/C,IAAA,iBAAS,EAAC;YACR,IAAI,KAAK,CAAC,iBAAiB;gBAAE,OAAO;YAEpC,IAAM,IAAI,GAAG,eAAe,CAAC,iBAAW,CAAC,CAAC;gBACxC,aAAa,eAAA;gBACb,eAAe,iBAAA;gBACf,QAAQ,UAAA;aACT,CAAC,CAAC;YAEH,IAAM,GAAG,GAAG,IAAI;iBACb,IAAI;YACH,iEAAiE;YACjE,IAAA,eAAG,EAAC,UAAC,CAAQ,IAAK,OAAA,IAAA,UAAG,EAAC,gCAAgC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAhD,CAAgD,CAAC;YACnE,wDAAwD;YACxD,IAAA,gBAAI,EAAC,OAAO,EAAE,eAAe,EAAE,CAAC;YAChC,kDAAkD;YAClD,IAAA,oBAAQ,EAAC,UAAC,CAAQ;gBAChB,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,6BAA6B,EAAE;oBAC3D,OAAO,YAAK,CAAC;iBACd;gBAED,iCAAiC;gBACjC,OAAO,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CACH,CAAC,2CAA2C;iBAC5C,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO;gBACL,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEvD,oBACK,KAAK,EACR;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,OAAO,SAAA;QACP,SAAS,WAAA;KACV,CAAC;AACJ,CAAC,CAAC;AA1EW,QAAA,YAAY,gBA0EvB"}
@@ -0,0 +1,10 @@
1
+ import { Observable } from "rxjs";
2
+ import type { AppAndVersion } from "./connectApp";
3
+ export declare type AttemptToQuitAppEvent = {
4
+ type: "unresponsiveDevice";
5
+ } | {
6
+ type: "appDetected";
7
+ };
8
+ declare const attemptToQuitApp: (transport: any, appAndVersion?: AppAndVersion | undefined) => Observable<AttemptToQuitAppEvent>;
9
+ export default attemptToQuitApp;
10
+ //# sourceMappingURL=attemptToQuitApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attemptToQuitApp.d.ts","sourceRoot":"","sources":["../../src/hw/attemptToQuitApp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAkB,MAAM,MAAM,CAAC;AAGxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,oBAAY,qBAAqB,GAC7B;IACE,IAAI,EAAE,oBAAoB,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,aAAa,CAAC;CACrB,CAAC;AAEN,QAAA,MAAM,gBAAgB,iEAGnB,WAAW,qBAAqB,CAY3B,CAAC;AAET,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,22 @@
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
+ var rxjs_1 = require("rxjs");
7
+ var operators_1 = require("rxjs/operators");
8
+ var appSupportsQuitApp_1 = __importDefault(require("../appSupportsQuitApp"));
9
+ var quitApp_1 = __importDefault(require("./quitApp"));
10
+ var attemptToQuitApp = function (transport, appAndVersion) {
11
+ return appAndVersion && (0, appSupportsQuitApp_1["default"])(appAndVersion)
12
+ ? (0, rxjs_1.from)((0, quitApp_1["default"])(transport)).pipe((0, operators_1.concatMap)(function () {
13
+ return (0, rxjs_1.of)({
14
+ type: "unresponsiveDevice"
15
+ });
16
+ }), (0, operators_1.catchError)(function (e) { return (0, rxjs_1.throwError)(e); }))
17
+ : (0, rxjs_1.of)({
18
+ type: "appDetected"
19
+ });
20
+ };
21
+ exports["default"] = attemptToQuitApp;
22
+ //# sourceMappingURL=attemptToQuitApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attemptToQuitApp.js","sourceRoot":"","sources":["../../src/hw/attemptToQuitApp.ts"],"names":[],"mappings":";;;;;AAAA,6BAAwD;AACxD,4CAAuD;AACvD,6EAAuD;AAEvD,sDAAgC;AAUhC,IAAM,gBAAgB,GAAG,UACvB,SAAS,EACT,aAA6B;IAE7B,OAAA,aAAa,IAAI,IAAA,+BAAkB,EAAC,aAAa,CAAC;QAChD,CAAC,CAAC,IAAA,WAAI,EAAC,IAAA,oBAAO,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC3B,IAAA,qBAAS,EAAC;YACR,OAAA,IAAA,SAAE,EAAwB;gBACxB,IAAI,EAAE,oBAAoB;aAC3B,CAAC;QAFF,CAEE,CACH,EACD,IAAA,sBAAU,EAAC,UAAC,CAAC,IAAK,OAAA,IAAA,iBAAU,EAAC,CAAC,CAAC,EAAb,CAAa,CAAC,CACjC;QACH,CAAC,CAAC,IAAA,SAAE,EAAC;YACD,IAAI,EAAE,aAAa;SACpB,CAAC;AAXN,CAWM,CAAC;AAET,qBAAe,gBAAgB,CAAC"}
@@ -1,17 +1,14 @@
1
1
  import { Observable } from "rxjs";
2
2
  import type { ListAppsEvent } from "../apps";
3
3
  import { DeviceInfo } from "@ledgerhq/types-live";
4
+ import { AttemptToQuitAppEvent } from "./attemptToQuitApp";
4
5
  export declare type Input = {
5
6
  devicePath: string;
6
7
  managerRequest: {
7
8
  autoQuitAppDisabled?: boolean;
8
9
  } | null | undefined;
9
10
  };
10
- export declare type ConnectManagerEvent = {
11
- type: "appDetected";
12
- } | {
13
- type: "unresponsiveDevice";
14
- } | {
11
+ export declare type ConnectManagerEvent = AttemptToQuitAppEvent | {
15
12
  type: "osu";
16
13
  deviceInfo: DeviceInfo;
17
14
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"connectManager.d.ts","sourceRoot":"","sources":["../../src/hw/connectManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgC,MAAM,MAAM,CAAC;AAMhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,oBAAY,KAAK,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EACV;QACE,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,GACD,IAAI,GACJ,SAAS,CAAC;CACf,CAAC;AACF,oBAAY,mBAAmB,GAC3B;IACE,IAAI,EAAE,aAAa,CAAC;CACrB,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,UAAU,EAAE,UAAU,CAAC;CACxB,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CACxB,GACD,aAAa,CAAC;AAmBlB,QAAA,MAAM,GAAG,oCAGN,KAAK,KAAG,WAAW,mBAAmB,CAoEtC,CAAC;AAEJ,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"connectManager.d.ts","sourceRoot":"","sources":["../../src/hw/connectManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgC,MAAM,MAAM,CAAC;AAMhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAyB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,oBAAY,KAAK,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EACV;QACE,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,GACD,IAAI,GACJ,SAAS,CAAC;CACf,CAAC;AAEF,oBAAY,mBAAmB,GAC3B,qBAAqB,GACrB;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,UAAU,EAAE,UAAU,CAAC;CACxB,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CACxB,GACD,aAAa,CAAC;AAElB,QAAA,MAAM,GAAG,oCAGN,KAAK,KAAG,WAAW,mBAAmB,CAoEtC,CAAC;AAEJ,eAAe,GAAG,CAAC"}
@@ -10,21 +10,9 @@ var hw_1 = require("../apps/hw");
10
10
  var deviceAccess_1 = require("./deviceAccess");
11
11
  var getDeviceInfo_1 = __importDefault(require("./getDeviceInfo"));
12
12
  var getAppAndVersion_1 = __importDefault(require("./getAppAndVersion"));
13
- var appSupportsQuitApp_1 = __importDefault(require("../appSupportsQuitApp"));
14
13
  var isDashboardName_1 = require("./isDashboardName");
15
14
  var errors_2 = require("../errors");
16
- var quitApp_1 = __importDefault(require("./quitApp"));
17
- var attemptToQuitApp = function (transport, appAndVersion) {
18
- return appAndVersion && (0, appSupportsQuitApp_1["default"])(appAndVersion)
19
- ? (0, rxjs_1.from)((0, quitApp_1["default"])(transport)).pipe((0, operators_1.concatMap)(function () {
20
- return (0, rxjs_1.of)({
21
- type: "unresponsiveDevice"
22
- });
23
- }), (0, operators_1.catchError)(function (e) { return (0, rxjs_1.throwError)(e); }))
24
- : (0, rxjs_1.of)({
25
- type: "appDetected"
26
- });
27
- };
15
+ var attemptToQuitApp_1 = __importDefault(require("./attemptToQuitApp"));
28
16
  var cmd = function (_a) {
29
17
  var devicePath = _a.devicePath, managerRequest = _a.managerRequest;
30
18
  return (0, deviceAccess_1.withDevice)(devicePath)(function (transport) {
@@ -65,7 +53,7 @@ var cmd = function (_a) {
65
53
  return (0, rxjs_1.from)((0, getAppAndVersion_1["default"])(transport)).pipe((0, operators_1.concatMap)(function (appAndVersion) {
66
54
  return !(managerRequest === null || managerRequest === void 0 ? void 0 : managerRequest.autoQuitAppDisabled) &&
67
55
  !(0, isDashboardName_1.isDashboardName)(appAndVersion.name)
68
- ? attemptToQuitApp(transport, appAndVersion)
56
+ ? (0, attemptToQuitApp_1["default"])(transport, appAndVersion)
69
57
  : (0, rxjs_1.of)({
70
58
  type: "appDetected"
71
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"connectManager.js","sourceRoot":"","sources":["../../src/hw/connectManager.ts"],"names":[],"mappings":";;;;;AAAA,6BAAgE;AAChE,4CAA8D;AAC9D,2CAG0B;AAE1B,iCAAsC;AACtC,+CAA4C;AAC5C,kEAA4C;AAC5C,wEAAkD;AAClD,6EAAuD;AACvD,qDAAoD;AACpD,oCAA+C;AAE/C,sDAAgC;AAgChC,IAAM,gBAAgB,GAAG,UACvB,SAAS,EACT,aAA6B;IAE7B,OAAA,aAAa,IAAI,IAAA,+BAAkB,EAAC,aAAa,CAAC;QAChD,CAAC,CAAC,IAAA,WAAI,EAAC,IAAA,oBAAO,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC3B,IAAA,qBAAS,EAAC;YACR,OAAA,IAAA,SAAE,EAAsB;gBACtB,IAAI,EAAE,oBAAoB;aAC3B,CAAC;QAFF,CAEE,CACH,EACD,IAAA,sBAAU,EAAC,UAAC,CAAC,IAAK,OAAA,IAAA,iBAAU,EAAC,CAAC,CAAC,EAAb,CAAa,CAAC,CACjC;QACH,CAAC,CAAC,IAAA,SAAE,EAAC;YACD,IAAI,EAAE,aAAa;SACpB,CAAC;AAXN,CAWM,CAAC;AAET,IAAM,GAAG,GAAG,UAAC,EAGL;QAFN,UAAU,gBAAA,EACV,cAAc,oBAAA;IAEd,OAAA,IAAA,yBAAU,EAAC,UAAU,CAAC,CAAC,UAAC,SAAS;QAC/B,OAAA,iBAAU,CAAC,MAAM,CAAC,UAAC,CAAC;YAClB,IAAM,UAAU,GAAG,IAAA,SAAE,EAAC;gBACpB,IAAI,EAAE,oBAAoB;aAC3B,CAAC;iBACC,IAAI,CAAC,IAAA,iBAAK,EAAC,IAAI,CAAC,CAAC;iBACjB,SAAS,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAT,CAAS,CAAC,CAAC;YAC/B,IAAM,GAAG,GAAG,IAAA,WAAI,EAAC,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;iBACvC,IAAI,CACH,IAAA,qBAAS,EAAC,UAAC,UAAU;gBACnB,UAAU,CAAC,WAAW,EAAE,CAAC;gBAEzB,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;oBACvD,MAAM,IAAI,2BAAkB,EAAE,CAAC;iBAChC;gBAED,IAAI,UAAU,CAAC,YAAY,EAAE;oBAC3B,OAAO,IAAA,SAAE,EAAC;wBACR,IAAI,EAAE,YAAY;wBAClB,UAAU,YAAA;qBACX,CAAC,CAAC;iBACJ;gBAED,IAAI,UAAU,CAAC,KAAK,EAAE;oBACpB,OAAO,IAAA,SAAE,EAAC;wBACR,IAAI,EAAE,KAAK;wBACX,UAAU,YAAA;qBACX,CAAC,CAAC;iBACJ;gBAED,OAAO,IAAA,aAAM,EACX,IAAA,SAAE,EAAC;oBACD,IAAI,EAAE,aAAa;oBACnB,UAAU,YAAA;iBACX,CAAC,EACF,IAAA,aAAQ,EAAC,SAAS,EAAE,UAAU,CAAC,CAChC,CAAC;YACJ,CAAC,CAAC,EACF,IAAA,sBAAU,EAAC,UAAC,CAAQ;gBAClB,IACE,CAAC,YAAY,kCAAyB;oBACtC,CAAC,CAAC;wBACA,CAAC,YAAY,6BAAoB;wBACjC,iEAAiE;wBACjE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAClE;oBACA,OAAO,IAAA,WAAI,EAAC,IAAA,6BAAgB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC3C,IAAA,qBAAS,EAAC,UAAC,aAAa;wBACtB,OAAO,CAAC,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,mBAAmB,CAAA;4BACzC,CAAC,IAAA,iCAAe,EAAC,aAAa,CAAC,IAAI,CAAC;4BACpC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;4BAC5C,CAAC,CAAC,IAAA,SAAE,EAAC;gCACD,IAAI,EAAE,aAAa;6BACpB,CAAC,CAAC;oBACT,CAAC,CAAC,CACH,CAAC;iBACH;gBAED,OAAO,IAAA,iBAAU,EAAC,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,CACH;iBACA,SAAS,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;gBACL,UAAU,CAAC,WAAW,EAAE,CAAC;gBACzB,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC,CAAC;IAjEF,CAiEE,CACH;AAnED,CAmEC,CAAC;AAEJ,qBAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"connectManager.js","sourceRoot":"","sources":["../../src/hw/connectManager.ts"],"names":[],"mappings":";;;;;AAAA,6BAAgE;AAChE,4CAA8D;AAC9D,2CAG0B;AAE1B,iCAAsC;AACtC,+CAA4C;AAC5C,kEAA4C;AAC5C,wEAAkD;AAClD,qDAAoD;AACpD,oCAA+C;AAG/C,wEAA6E;AA4B7E,IAAM,GAAG,GAAG,UAAC,EAGL;QAFN,UAAU,gBAAA,EACV,cAAc,oBAAA;IAEd,OAAA,IAAA,yBAAU,EAAC,UAAU,CAAC,CAAC,UAAC,SAAS;QAC/B,OAAA,iBAAU,CAAC,MAAM,CAAC,UAAC,CAAC;YAClB,IAAM,UAAU,GAAG,IAAA,SAAE,EAAC;gBACpB,IAAI,EAAE,oBAAoB;aAC3B,CAAC;iBACC,IAAI,CAAC,IAAA,iBAAK,EAAC,IAAI,CAAC,CAAC;iBACjB,SAAS,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAT,CAAS,CAAC,CAAC;YAC/B,IAAM,GAAG,GAAG,IAAA,WAAI,EAAC,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;iBACvC,IAAI,CACH,IAAA,qBAAS,EAAC,UAAC,UAAU;gBACnB,UAAU,CAAC,WAAW,EAAE,CAAC;gBAEzB,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;oBACvD,MAAM,IAAI,2BAAkB,EAAE,CAAC;iBAChC;gBAED,IAAI,UAAU,CAAC,YAAY,EAAE;oBAC3B,OAAO,IAAA,SAAE,EAAC;wBACR,IAAI,EAAE,YAAY;wBAClB,UAAU,YAAA;qBACX,CAAC,CAAC;iBACJ;gBAED,IAAI,UAAU,CAAC,KAAK,EAAE;oBACpB,OAAO,IAAA,SAAE,EAAC;wBACR,IAAI,EAAE,KAAK;wBACX,UAAU,YAAA;qBACX,CAAC,CAAC;iBACJ;gBAED,OAAO,IAAA,aAAM,EACX,IAAA,SAAE,EAAC;oBACD,IAAI,EAAE,aAAa;oBACnB,UAAU,YAAA;iBACX,CAAC,EACF,IAAA,aAAQ,EAAC,SAAS,EAAE,UAAU,CAAC,CAChC,CAAC;YACJ,CAAC,CAAC,EACF,IAAA,sBAAU,EAAC,UAAC,CAAQ;gBAClB,IACE,CAAC,YAAY,kCAAyB;oBACtC,CAAC,CAAC;wBACA,CAAC,YAAY,6BAAoB;wBACjC,iEAAiE;wBACjE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAClE;oBACA,OAAO,IAAA,WAAI,EAAC,IAAA,6BAAgB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC3C,IAAA,qBAAS,EAAC,UAAC,aAAa;wBACtB,OAAO,CAAC,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,mBAAmB,CAAA;4BACzC,CAAC,IAAA,iCAAe,EAAC,aAAa,CAAC,IAAI,CAAC;4BACpC,CAAC,CAAC,IAAA,6BAAgB,EAAC,SAAS,EAAE,aAAa,CAAC;4BAC5C,CAAC,CAAC,IAAA,SAAE,EAAC;gCACD,IAAI,EAAE,aAAa;6BACpB,CAAC,CAAC;oBACT,CAAC,CAAC,CACH,CAAC;iBACH;gBAED,OAAO,IAAA,iBAAU,EAAC,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,CACH;iBACA,SAAS,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;gBACL,UAAU,CAAC,WAAW,EAAE,CAAC;gBACzB,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC,CAAC;IAjEF,CAiEE,CACH;AAnED,CAmEC,CAAC;AAEJ,qBAAe,GAAG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDeviceInfo.d.ts","sourceRoot":"","sources":["../../src/hw/getDeviceInfo.ts"],"names":[],"mappings":"AAMA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAO/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,wBAA8B,aAAa,CACzC,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,UAAU,CAAC,CA0FrB"}
1
+ {"version":3,"file":"getDeviceInfo.d.ts","sourceRoot":"","sources":["../../src/hw/getDeviceInfo.ts"],"names":[],"mappings":"AAMA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAO/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,wBAA8B,aAAa,CACzC,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,UAAU,CAAC,CAgGrB"}
@@ -68,7 +68,7 @@ var ManagerAllowedFlag = 0x08;
68
68
  var PinValidatedFlag = 0x80;
69
69
  function getDeviceInfo(transport) {
70
70
  return __awaiter(this, void 0, void 0, function () {
71
- var probablyOnDashboard, res, isBootloader, rawVersion, targetId, seVersion, seTargetId, mcuBlVersion, mcuVersion, mcuTargetId, flags, isOSU, version, m, _a, majMin, postDash, providerName, flag, managerAllowed, pinValidated, isRecoveryMode, onboarded, hasDevFirmware;
71
+ var probablyOnDashboard, res, isBootloader, rawVersion, targetId, seVersion, seTargetId, mcuBlVersion, mcuVersion, mcuTargetId, flags, bootloaderVersion, hardwareVersion, languageId, isOSU, version, m, _a, majMin, postDash, providerName, flag, managerAllowed, pinValidated, isRecoveryMode, onboarded, hasDevFirmware;
72
72
  return __generator(this, function (_b) {
73
73
  switch (_b.label) {
74
74
  case 0: return [4 /*yield*/, (0, getAppAndVersion_1["default"])(transport)
@@ -104,7 +104,7 @@ function getDeviceInfo(transport) {
104
104
  })];
105
105
  case 2:
106
106
  res = _b.sent();
107
- isBootloader = res.isBootloader, rawVersion = res.rawVersion, targetId = res.targetId, seVersion = res.seVersion, seTargetId = res.seTargetId, mcuBlVersion = res.mcuBlVersion, mcuVersion = res.mcuVersion, mcuTargetId = res.mcuTargetId, flags = res.flags;
107
+ isBootloader = res.isBootloader, rawVersion = res.rawVersion, targetId = res.targetId, seVersion = res.seVersion, seTargetId = res.seTargetId, mcuBlVersion = res.mcuBlVersion, mcuVersion = res.mcuVersion, mcuTargetId = res.mcuTargetId, flags = res.flags, bootloaderVersion = res.bootloaderVersion, hardwareVersion = res.hardwareVersion, languageId = res.languageId;
108
108
  isOSU = rawVersion.includes("-osu");
109
109
  version = rawVersion.replace("-osu", "");
110
110
  m = rawVersion.match(/([0-9]+.[0-9]+)(.[0-9]+)?(-(.*))?/);
@@ -142,7 +142,10 @@ function getDeviceInfo(transport) {
142
142
  isRecoveryMode: isRecoveryMode,
143
143
  managerAllowed: managerAllowed,
144
144
  pinValidated: pinValidated,
145
- onboarded: onboarded
145
+ onboarded: onboarded,
146
+ bootloaderVersion: bootloaderVersion,
147
+ hardwareVersion: hardwareVersion,
148
+ languageId: languageId
146
149
  }];
147
150
  }
148
151
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getDeviceInfo.js","sourceRoot":"","sources":["../../src/hw/getDeviceInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getDeviceInfo.js","sourceRoot":"","sources":["../../src/hw/getDeviceInfo.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
+ import { DeviceModelId } from "@ledgerhq/devices";
1
2
  import Transport from "@ledgerhq/hw-transport";
2
3
  import type { FirmwareInfo } from "@ledgerhq/types-live";
3
- /**
4
- * Retrieve targetId and firmware version from device
5
- */
4
+ export declare const isBootloaderVersionSupported: (seVersion: string, modelId?: DeviceModelId | undefined) => any;
5
+ export declare const isHardwareVersionSupported: (seVersion: string, modelId?: DeviceModelId | undefined) => any;
6
6
  export default function getVersion(transport: Transport): Promise<FirmwareInfo>;
7
7
  //# sourceMappingURL=getVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getVersion.d.ts","sourceRoot":"","sources":["../../src/hw/getVersion.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AAEH,wBAA8B,UAAU,CACtC,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,YAAY,CAAC,CAmFvB"}
1
+ {"version":3,"file":"getVersion.d.ts","sourceRoot":"","sources":["../../src/hw/getVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AACpE,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAWzD,eAAO,MAAM,4BAA4B,cAC5B,MAAM,6CAQhB,CAAC;AAOJ,eAAO,MAAM,0BAA0B,cAC1B,MAAM,6CAQhB,CAAC;AAEJ,wBAA8B,UAAU,CACtC,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,YAAY,CAAC,CA4HvB"}
@@ -36,12 +36,33 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  exports.__esModule = true;
39
- /**
40
- * Retrieve targetId and firmware version from device
41
- */
39
+ exports.isHardwareVersionSupported = exports.isBootloaderVersionSupported = void 0;
40
+ var devices_1 = require("@ledgerhq/devices");
41
+ var semver_1 = require("semver");
42
+ var localization_1 = require("../manager/localization");
43
+ var deviceVersionRangesForBootloaderVersion = {
44
+ nanoS: ">=2.0.0",
45
+ nanoX: ">=2.0.0 || =2.1.0-lo2 || =2.1.0-lo4 || =2.1.0-lo5",
46
+ nanoSP: ">=1.0.0"
47
+ };
48
+ var isBootloaderVersionSupported = function (seVersion, modelId) {
49
+ return modelId &&
50
+ deviceVersionRangesForBootloaderVersion[modelId] &&
51
+ (0, semver_1.satisfies)(seVersion, deviceVersionRangesForBootloaderVersion[modelId]);
52
+ };
53
+ exports.isBootloaderVersionSupported = isBootloaderVersionSupported;
54
+ var deviceVersionRangesForHardwareVersion = {
55
+ nanoX: ">=2.0.0 || =2.1.0-lo2 || =2.1.0-lo4 || =2.1.0-lo5"
56
+ };
57
+ var isHardwareVersionSupported = function (seVersion, modelId) {
58
+ return modelId &&
59
+ deviceVersionRangesForHardwareVersion[modelId] &&
60
+ (0, semver_1.satisfies)(seVersion, deviceVersionRangesForHardwareVersion[modelId]);
61
+ };
62
+ exports.isHardwareVersionSupported = isHardwareVersionSupported;
42
63
  function getVersion(transport) {
43
64
  return __awaiter(this, void 0, void 0, function () {
44
- var res, data, i, targetId, rawVersionLength, rawVersion, flagsLength, flags, mcuVersion, mcuBlVersion, seVersion, mcuTargetId, seTargetId, isBootloader, part1Length, part1, part2Length, part2, mcuVersionLength, mcuVersionBuf;
65
+ var res, data, i, targetId, rawVersionLength, rawVersion, flagsLength, flags, mcuVersion, mcuBlVersion, seVersion, bootloaderVersion, hardwareVersion, mcuTargetId, seTargetId, languageId, isBootloader, part1Length, part1, part2Length, part2, mcuVersionLength, mcuVersionBuf, isOSU, deviceModel, bootloaderVersionLength, bootloaderVersionBuf, hardwareVersionLength, languageIdLength;
45
66
  return __generator(this, function (_a) {
46
67
  switch (_a.label) {
47
68
  case 0: return [4 /*yield*/, transport.send(0xe0, 0x01, 0x00, 0x00)];
@@ -94,6 +115,30 @@ function getVersion(transport) {
94
115
  mcuVersionBuf = mcuVersionBuf.slice(0, mcuVersionBuf.length - 1);
95
116
  }
96
117
  mcuVersion = mcuVersionBuf.toString();
118
+ isOSU = rawVersion.includes("-osu");
119
+ if (!isOSU) {
120
+ deviceModel = (0, devices_1.identifyTargetId)(targetId);
121
+ if ((0, exports.isBootloaderVersionSupported)(seVersion, deviceModel === null || deviceModel === void 0 ? void 0 : deviceModel.id)) {
122
+ bootloaderVersionLength = data[i++];
123
+ bootloaderVersionBuf = Buffer.from(data.slice(i, i + bootloaderVersionLength));
124
+ i += bootloaderVersionLength;
125
+ if (bootloaderVersionBuf[bootloaderVersionBuf.length - 1] === 0) {
126
+ bootloaderVersionBuf = bootloaderVersionBuf.slice(0, bootloaderVersionBuf.length - 1);
127
+ }
128
+ bootloaderVersion = bootloaderVersionBuf.toString();
129
+ }
130
+ if ((0, exports.isHardwareVersionSupported)(seVersion, deviceModel === null || deviceModel === void 0 ? void 0 : deviceModel.id)) {
131
+ hardwareVersionLength = data[i++];
132
+ hardwareVersion = data
133
+ .slice(i, i + hardwareVersionLength)
134
+ .readUIntBE(0, 1); // ?? string? number?
135
+ i += hardwareVersionLength;
136
+ }
137
+ if ((0, localization_1.isDeviceLocalizationSupported)(seVersion, deviceModel === null || deviceModel === void 0 ? void 0 : deviceModel.id)) {
138
+ languageIdLength = data[i++];
139
+ languageId = data.slice(i, i + languageIdLength).readUIntBE(0, 1);
140
+ }
141
+ }
97
142
  }
98
143
  return [2 /*return*/, {
99
144
  isBootloader: isBootloader,
@@ -104,7 +149,10 @@ function getVersion(transport) {
104
149
  mcuBlVersion: mcuBlVersion,
105
150
  mcuTargetId: mcuTargetId,
106
151
  seTargetId: seTargetId,
107
- flags: flags
152
+ flags: flags,
153
+ bootloaderVersion: bootloaderVersion,
154
+ hardwareVersion: hardwareVersion,
155
+ languageId: languageId
108
156
  }];
109
157
  }
110
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getVersion.js","sourceRoot":"","sources":["../../src/hw/getVersion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getVersion.js","sourceRoot":"","sources":["../../src/hw/getVersion.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAoE;AAGpE,iCAAuD;AACvD,wDAAwE;AAExE,IAAM,uCAAuC,GAEzC;IACF,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,mDAAmD;IAC1D,MAAM,EAAE,SAAS;CAClB,CAAC;AACK,IAAM,4BAA4B,GAAG,UAC1C,SAAiB,EACjB,OAAuB;IAEvB,OAAA,OAAO;QACP,uCAAuC,CAAC,OAAO,CAAC;QAChD,IAAA,kBAAgB,EACd,SAAS,EACT,uCAAuC,CAAC,OAAO,CAAW,CAC3D;AALD,CAKC,CAAC;AATS,QAAA,4BAA4B,gCASrC;AAEJ,IAAM,qCAAqC,GAEvC;IACF,KAAK,EAAE,mDAAmD;CAC3D,CAAC;AACK,IAAM,0BAA0B,GAAG,UACxC,SAAiB,EACjB,OAAuB;IAEvB,OAAA,OAAO;QACP,qCAAqC,CAAC,OAAO,CAAC;QAC9C,IAAA,kBAAgB,EACd,SAAS,EACT,qCAAqC,CAAC,OAAO,CAAW,CACzD;AALD,CAKC,CAAC;AATS,QAAA,0BAA0B,8BASnC;AAEJ,SAA8B,UAAU,CACtC,SAAoB;;;;;wBAER,qBAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAA;;oBAAlD,GAAG,GAAG,SAA4C;oBAClD,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACtC,CAAC,GAAG,CAAC,CAAC;oBAGJ,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACvC,CAAC,IAAI,CAAC,CAAC;oBAGD,gBAAgB,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC/B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAChE,CAAC,IAAI,gBAAgB,CAAC;oBAGhB,WAAW,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC1B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;oBAC3C,CAAC,IAAI,WAAW,CAAC;oBAEjB,IAAI,CAAC,gBAAgB,EAAE;wBACrB,mDAAmD;wBACnD,UAAU,GAAG,OAAO,CAAC;wBACrB,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;qBACnC;oBAEG,UAAU,GAAG,EAAE,CAAC;oBASd,YAAY,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,UAAU,CAAC;oBAE5D,IAAI,YAAY,EAAE;wBAChB,YAAY,GAAG,UAAU,CAAC;wBAC1B,WAAW,GAAG,QAAQ,CAAC;wBAEvB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;4BAEb,WAAW,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;4BACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;4BAC7C,CAAC,IAAI,WAAW,CAAC;4BAEjB,uDAAuD;4BACvD,IAAI,WAAW,IAAI,CAAC,EAAE;gCACpB,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gCAEvB,WAAW,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gCACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;gCAC7C,CAAC,IAAI,WAAW,CAAC;gCACjB,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BACrC;iCAAM;gCACL,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BACrC;yBACF;qBACF;yBAAM;wBACL,SAAS,GAAG,UAAU,CAAC;wBACvB,UAAU,GAAG,QAAQ,CAAC;wBAGhB,gBAAgB,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC/B,aAAa,GAAW,MAAM,CAAC,IAAI,CACrC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CACpC,CAAC;wBACF,CAAC,IAAI,gBAAgB,CAAC;wBAEtB,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;4BACjD,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;yBAClE;wBACD,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;wBAEhC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAE1C,IAAI,CAAC,KAAK,EAAE;4BACJ,WAAW,GAAG,IAAA,0BAAgB,EAAC,QAAQ,CAAC,CAAC;4BAE/C,IAAI,IAAA,oCAA4B,EAAC,SAAS,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE,CAAC,EAAE;gCACtD,uBAAuB,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gCACtC,oBAAoB,GAAW,MAAM,CAAC,IAAI,CAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAC3C,CAAC;gCACF,CAAC,IAAI,uBAAuB,CAAC;gCAE7B,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;oCAC/D,oBAAoB,GAAG,oBAAoB,CAAC,KAAK,CAC/C,CAAC,EACD,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAChC,CAAC;iCACH;gCACD,iBAAiB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC;6BACrD;4BAED,IAAI,IAAA,kCAA0B,EAAC,SAAS,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE,CAAC,EAAE;gCACpD,qBAAqB,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gCACxC,eAAe,GAAG,IAAI;qCACnB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC;qCACnC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB;gCAC1C,CAAC,IAAI,qBAAqB,CAAC;6BAC5B;4BAED,IAAI,IAAA,4CAA6B,EAAC,SAAS,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE,CAAC,EAAE;gCACvD,gBAAgB,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gCACnC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BACnE;yBACF;qBACF;oBAED,sBAAO;4BACL,YAAY,cAAA;4BACZ,UAAU,YAAA;4BACV,QAAQ,UAAA;4BACR,SAAS,WAAA;4BACT,UAAU,YAAA;4BACV,YAAY,cAAA;4BACZ,WAAW,aAAA;4BACX,UAAU,YAAA;4BACV,KAAK,OAAA;4BACL,iBAAiB,mBAAA;4BACjB,eAAe,iBAAA;4BACf,UAAU,YAAA;yBACX,EAAC;;;;CACH;AA9HD,gCA8HC"}
@@ -0,0 +1,17 @@
1
+ import { Observable } from "rxjs";
2
+ import { Language } from "@ledgerhq/types-live";
3
+ import { AttemptToQuitAppEvent } from "./attemptToQuitApp";
4
+ export declare type InstallLanguageEvent = AttemptToQuitAppEvent | {
5
+ type: "progress";
6
+ progress: number;
7
+ } | {
8
+ type: "devicePermissionRequested";
9
+ } | {
10
+ type: "languageInstalled";
11
+ };
12
+ export declare type InstallLanguageRequest = {
13
+ deviceId: string;
14
+ language: Language;
15
+ };
16
+ export default function installLanguage({ deviceId, language, }: InstallLanguageRequest): Observable<InstallLanguageEvent>;
17
+ //# sourceMappingURL=installLanguage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installLanguage.d.ts","sourceRoot":"","sources":["../../src/hw/installLanguage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwB,MAAM,MAAM,CAAC;AAYxD,OAAO,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAMjE,OAAyB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,oBAAY,oBAAoB,GAC5B,qBAAqB,GACrB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,2BAA2B,CAAC;CACnC,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEN,oBAAY,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,QAAQ,EACR,QAAQ,GACT,EAAE,sBAAsB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAuH3D"}