@ledgerhq/live-common 24.0.0 → 24.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/lib/__tests__/range.js +8 -0
  2. package/lib/__tests__/range.js.map +1 -1
  3. package/lib/api/Ethereum.d.ts +7 -0
  4. package/lib/api/Ethereum.d.ts.map +1 -1
  5. package/lib/api/Ethereum.js +29 -1
  6. package/lib/api/Ethereum.js.map +1 -1
  7. package/lib/bridge/jsHelpers.d.ts +2 -1
  8. package/lib/bridge/jsHelpers.d.ts.map +1 -1
  9. package/lib/bridge/jsHelpers.js +4 -2
  10. package/lib/bridge/jsHelpers.js.map +1 -1
  11. package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
  12. package/lib/families/bitcoin/js-synchronisation.js +2 -173
  13. package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
  14. package/lib/families/bitcoin/logic.d.ts +6 -1
  15. package/lib/families/bitcoin/logic.d.ts.map +1 -1
  16. package/lib/families/bitcoin/logic.js +186 -1
  17. package/lib/families/bitcoin/logic.js.map +1 -1
  18. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.d.ts +2 -0
  19. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.d.ts.map +1 -0
  20. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.js +72 -0
  21. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.js.map +1 -0
  22. package/lib/families/cosmos/api/Cosmos.d.ts.map +1 -1
  23. package/lib/families/cosmos/api/Cosmos.js +1 -0
  24. package/lib/families/cosmos/api/Cosmos.js.map +1 -1
  25. package/lib/families/cosmos/react.test.js +5 -4
  26. package/lib/families/cosmos/react.test.js.map +1 -1
  27. package/lib/families/ethereum/bridge/js.d.ts.map +1 -1
  28. package/lib/families/ethereum/bridge/js.js +5 -1
  29. package/lib/families/ethereum/bridge/js.js.map +1 -1
  30. package/lib/families/ethereum/datasets/ethereum2.d.ts +3 -0
  31. package/lib/families/ethereum/datasets/ethereum2.d.ts.map +1 -0
  32. package/lib/families/ethereum/datasets/ethereum2.js +22 -0
  33. package/lib/families/ethereum/datasets/ethereum2.js.map +1 -0
  34. package/lib/families/ethereum/synchronisation.d.ts.map +1 -1
  35. package/lib/families/ethereum/synchronisation.integration.test.js +68 -0
  36. package/lib/families/ethereum/synchronisation.integration.test.js.map +1 -1
  37. package/lib/families/ethereum/synchronisation.js +17 -11
  38. package/lib/families/ethereum/synchronisation.js.map +1 -1
  39. package/lib/hw/extractOnboardingState.d.ts +26 -0
  40. package/lib/hw/extractOnboardingState.d.ts.map +1 -0
  41. package/lib/hw/extractOnboardingState.js +69 -0
  42. package/lib/hw/extractOnboardingState.js.map +1 -0
  43. package/lib/hw/extractOnboardingState.test.d.ts +2 -0
  44. package/lib/hw/extractOnboardingState.test.d.ts.map +1 -0
  45. package/lib/hw/extractOnboardingState.test.js +182 -0
  46. package/lib/hw/extractOnboardingState.test.js.map +1 -0
  47. package/lib/hw/getOnboardingStatePolling.d.ts +20 -0
  48. package/lib/hw/getOnboardingStatePolling.d.ts.map +1 -0
  49. package/lib/hw/getOnboardingStatePolling.js +117 -0
  50. package/lib/hw/getOnboardingStatePolling.js.map +1 -0
  51. package/lib/hw/getOnboardingStatePolling.test.d.ts +2 -0
  52. package/lib/hw/getOnboardingStatePolling.test.d.ts.map +1 -0
  53. package/lib/hw/getOnboardingStatePolling.test.js +224 -0
  54. package/lib/hw/getOnboardingStatePolling.test.js.map +1 -0
  55. package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts +22 -0
  56. package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts.map +1 -0
  57. package/lib/onboarding/hooks/useOnboardingStatePolling.js +81 -0
  58. package/lib/onboarding/hooks/useOnboardingStatePolling.js.map +1 -0
  59. package/lib/onboarding/hooks/useOnboardingStatePolling.test.d.ts +2 -0
  60. package/lib/onboarding/hooks/useOnboardingStatePolling.test.d.ts.map +1 -0
  61. package/lib/onboarding/hooks/useOnboardingStatePolling.test.js +374 -0
  62. package/lib/onboarding/hooks/useOnboardingStatePolling.test.js.map +1 -0
  63. package/lib/operation.d.ts +7 -0
  64. package/lib/operation.d.ts.map +1 -1
  65. package/lib/operation.js +15 -1
  66. package/lib/operation.js.map +1 -1
  67. package/lib/types/manager.d.ts +5 -0
  68. package/lib/types/manager.d.ts.map +1 -1
  69. package/lib/types/manager.js +7 -1
  70. package/lib/types/manager.js.map +1 -1
  71. package/package.json +2 -2
  72. package/src/__tests__/range.ts +13 -0
  73. package/src/api/Ethereum.ts +31 -0
  74. package/src/bridge/jsHelpers.ts +7 -1
  75. package/src/families/bitcoin/js-synchronisation.ts +3 -172
  76. package/src/families/bitcoin/logic.ts +169 -0
  77. package/src/families/bitcoin/xpub.txs.txNoOutput.unit.test.ts +37 -0
  78. package/src/families/cosmos/api/Cosmos.ts +4 -0
  79. package/src/families/cosmos/react.test.ts +3 -0
  80. package/src/families/ethereum/bridge/js.ts +5 -1
  81. package/src/families/ethereum/datasets/ethereum2.ts +20 -0
  82. package/src/families/ethereum/synchronisation.integration.test.ts +63 -1
  83. package/src/families/ethereum/synchronisation.ts +15 -7
  84. package/src/hw/extractOnboardingState.test.ts +251 -0
  85. package/src/hw/extractOnboardingState.ts +97 -0
  86. package/src/hw/getOnboardingStatePolling.test.ts +247 -0
  87. package/src/hw/getOnboardingStatePolling.ts +153 -0
  88. package/src/onboarding/hooks/useOnboardingStatePolling.test.ts +304 -0
  89. package/src/onboarding/hooks/useOnboardingStatePolling.ts +86 -0
  90. package/src/operation.ts +24 -0
  91. package/src/types/manager.ts +5 -0
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __importDefault = (this && this.__importDefault) || function (mod) {
19
+ return (mod && mod.__esModule) ? mod : { "default": mod };
20
+ };
21
+ exports.__esModule = true;
22
+ exports.isAllowedOnboardingStatePollingError = exports.getOnboardingStatePolling = void 0;
23
+ var rxjs_1 = require("rxjs");
24
+ var operators_1 = require("rxjs/operators");
25
+ var getVersion_1 = __importDefault(require("./getVersion"));
26
+ var deviceAccess_1 = require("./deviceAccess");
27
+ var errors_1 = require("@ledgerhq/errors");
28
+ var extractOnboardingState_1 = require("./extractOnboardingState");
29
+ /**
30
+ * Polls the device onboarding state at a given frequency
31
+ * @param deviceId A device id
32
+ * @param pollingPeriodMs The period in ms after which the device onboarding state is fetched again
33
+ * @param fetchingTimeoutMs The time to wait while fetching for the device onboarding state before throwing an error, in ms
34
+ * @returns An Observable that polls the device onboarding state
35
+ */
36
+ var getOnboardingStatePolling = function (_a) {
37
+ var deviceId = _a.deviceId, pollingPeriodMs = _a.pollingPeriodMs, _b = _a.fetchingTimeoutMs, fetchingTimeoutMs = _b === void 0 ? pollingPeriodMs : _b;
38
+ var firstRun = true;
39
+ var delayedOnceOnboardingStateObservable = new rxjs_1.Observable(function (subscriber) {
40
+ var delayMs = firstRun ? 0 : pollingPeriodMs;
41
+ firstRun = false;
42
+ var getOnboardingStateOnce = function () {
43
+ var firmwareInfoOrAllowedErrorObservable = (0, deviceAccess_1.withDevice)(deviceId)(function (t) {
44
+ return (0, rxjs_1.from)((0, getVersion_1["default"])(t));
45
+ }).pipe((0, operators_1.timeout)(fetchingTimeoutMs), // Throws a TimeoutError
46
+ (0, operators_1.first)(), (0, operators_1.catchError)(function (error) {
47
+ if ((0, exports.isAllowedOnboardingStatePollingError)(error)) {
48
+ // Pushes the error to the next step to be processed (no retry from the beginning)
49
+ return (0, rxjs_1.of)(error);
50
+ }
51
+ return (0, rxjs_1.throwError)(error);
52
+ }));
53
+ // If an error is catched previously, and this error is "allowed",
54
+ // the value from the observable is not a FirmwareInfo but an Error
55
+ var _a = __read((0, rxjs_1.partition)(firmwareInfoOrAllowedErrorObservable,
56
+ // TS cannot infer correctly the value given to RxJS partition
57
+ function (value) { return Boolean(value === null || value === void 0 ? void 0 : value.flags); }), 2), firmwareInfoObservable = _a[0], allowedErrorObservable = _a[1];
58
+ var onboardingStateFromFirmwareInfoObservable = firmwareInfoObservable.pipe((0, operators_1.map)(function (firmwareInfo) {
59
+ var _a;
60
+ var onboardingState = null;
61
+ try {
62
+ onboardingState = (0, extractOnboardingState_1.extractOnboardingState)(firmwareInfo.flags);
63
+ }
64
+ catch (error) {
65
+ if (error instanceof errors_1.DeviceExtractOnboardingStateError) {
66
+ return {
67
+ onboardingState: null,
68
+ allowedError: error
69
+ };
70
+ }
71
+ else {
72
+ return {
73
+ onboardingState: null,
74
+ allowedError: new errors_1.DeviceOnboardingStatePollingError("SyncOnboarding: Unknown error while extracting the onboarding state ".concat((_a = error === null || error === void 0 ? void 0 : error.name) !== null && _a !== void 0 ? _a : error, " ").concat(error === null || error === void 0 ? void 0 : error.message))
75
+ };
76
+ }
77
+ }
78
+ return { onboardingState: onboardingState, allowedError: null };
79
+ }));
80
+ // Handles the case of an (allowed) Error value
81
+ var onboardingStateFromAllowedErrorObservable = allowedErrorObservable.pipe((0, operators_1.map)(function (allowedError) {
82
+ return {
83
+ onboardingState: null,
84
+ allowedError: allowedError
85
+ };
86
+ }));
87
+ return (0, rxjs_1.merge)(onboardingStateFromFirmwareInfoObservable, onboardingStateFromAllowedErrorObservable);
88
+ };
89
+ // Delays the fetch of the onboarding state
90
+ setTimeout(function () {
91
+ getOnboardingStateOnce().subscribe({
92
+ next: function (value) {
93
+ subscriber.next(value);
94
+ },
95
+ error: function (error) {
96
+ subscriber.error(error);
97
+ },
98
+ complete: function () { return subscriber.complete(); }
99
+ });
100
+ }, delayMs);
101
+ });
102
+ return delayedOnceOnboardingStateObservable.pipe((0, operators_1.repeat)());
103
+ };
104
+ exports.getOnboardingStatePolling = getOnboardingStatePolling;
105
+ var isAllowedOnboardingStatePollingError = function (error) {
106
+ if (error &&
107
+ // Timeout error is thrown by rxjs's timeout
108
+ (error instanceof rxjs_1.TimeoutError ||
109
+ error instanceof errors_1.DisconnectedDevice ||
110
+ error instanceof errors_1.CantOpenDevice ||
111
+ error instanceof errors_1.TransportStatusError)) {
112
+ return true;
113
+ }
114
+ return false;
115
+ };
116
+ exports.isAllowedOnboardingStatePollingError = isAllowedOnboardingStatePollingError;
117
+ //# sourceMappingURL=getOnboardingStatePolling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOnboardingStatePolling.js","sourceRoot":"","sources":["../../src/hw/getOnboardingStatePolling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getOnboardingStatePolling.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOnboardingStatePolling.test.d.ts","sourceRoot":"","sources":["../../src/hw/getOnboardingStatePolling.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ exports.__esModule = true;
29
+ var getOnboardingStatePolling_1 = require("./getOnboardingStatePolling");
30
+ var rxjs_1 = require("rxjs");
31
+ var rxjsOperators = __importStar(require("rxjs/operators"));
32
+ var devices_1 = require("@ledgerhq/devices");
33
+ var hw_transport_1 = __importDefault(require("@ledgerhq/hw-transport"));
34
+ var errors_1 = require("@ledgerhq/errors");
35
+ var deviceAccess_1 = require("./deviceAccess");
36
+ var getVersion_1 = __importDefault(require("./getVersion"));
37
+ var extractOnboardingState_1 = require("./extractOnboardingState");
38
+ var manager_1 = require("../types/manager");
39
+ jest.mock("./deviceAccess");
40
+ jest.mock("./getVersion");
41
+ jest.mock("./extractOnboardingState");
42
+ jest.mock("@ledgerhq/hw-transport");
43
+ jest.useFakeTimers();
44
+ var aDevice = {
45
+ deviceId: "DEVICE_ID_A",
46
+ deviceName: "DEVICE_NAME_A",
47
+ modelId: devices_1.DeviceModelId.nanoFTS,
48
+ wired: false
49
+ };
50
+ // As extractOnboardingState is mocked, the firmwareInfo
51
+ // returned by getVersion does not matter
52
+ var aFirmwareInfo = {
53
+ isBootloader: false,
54
+ rawVersion: "",
55
+ targetId: 0,
56
+ mcuVersion: "",
57
+ flags: Buffer.from([])
58
+ };
59
+ var pollingPeriodMs = 1000;
60
+ var mockedGetVersion = jest.mocked(getVersion_1["default"]);
61
+ var mockedWithDevice = jest.mocked(deviceAccess_1.withDevice);
62
+ mockedWithDevice.mockReturnValue(function (job) { return (0, rxjs_1.from)(job(new hw_transport_1["default"]())); });
63
+ var mockedExtractOnboardingState = jest.mocked(extractOnboardingState_1.extractOnboardingState);
64
+ describe("getOnboardingStatePolling", function () {
65
+ var anOnboardingState;
66
+ var onboardingStatePollingSubscription;
67
+ beforeEach(function () {
68
+ anOnboardingState = {
69
+ isOnboarded: false,
70
+ isInRecoveryMode: false,
71
+ seedPhraseType: manager_1.SeedPhraseType.TwentyFour,
72
+ currentSeedWordIndex: 0,
73
+ currentOnboardingStep: extractOnboardingState_1.OnboardingStep.NewDevice
74
+ };
75
+ });
76
+ afterEach(function () {
77
+ mockedGetVersion.mockClear();
78
+ mockedExtractOnboardingState.mockClear();
79
+ jest.clearAllTimers();
80
+ onboardingStatePollingSubscription === null || onboardingStatePollingSubscription === void 0 ? void 0 : onboardingStatePollingSubscription.unsubscribe();
81
+ });
82
+ describe("When a communication error occurs while fetching the device state", function () {
83
+ describe("and when the error is allowed and thrown before the defined timeout", function () {
84
+ it("should update the onboarding state to null and keep track of the allowed error", function (done) {
85
+ mockedGetVersion.mockRejectedValue(new errors_1.DisconnectedDevice("An allowed error"));
86
+ mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
87
+ var device = aDevice;
88
+ (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
89
+ deviceId: device.deviceId,
90
+ pollingPeriodMs: pollingPeriodMs
91
+ }).subscribe({
92
+ next: function (value) {
93
+ expect(value.onboardingState).toBeNull();
94
+ expect(value.allowedError).toBeInstanceOf(errors_1.DisconnectedDevice);
95
+ done();
96
+ }
97
+ });
98
+ // The timeout is equal to pollingPeriodMs by default
99
+ jest.advanceTimersByTime(pollingPeriodMs - 1);
100
+ });
101
+ });
102
+ describe("and when a timeout occurred before the error (or the fetch took too long)", function () {
103
+ it("should update the allowed error value to notify the consumer - default value for the timeout", function (done) {
104
+ mockedGetVersion.mockResolvedValue(aFirmwareInfo);
105
+ mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
106
+ var device = aDevice;
107
+ (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
108
+ deviceId: device.deviceId,
109
+ pollingPeriodMs: pollingPeriodMs
110
+ }).subscribe({
111
+ next: function (value) {
112
+ expect(value.onboardingState).toBeNull();
113
+ expect(value.allowedError).toBeInstanceOf(rxjs_1.TimeoutError);
114
+ done();
115
+ }
116
+ });
117
+ // Waits more than the timeout
118
+ jest.advanceTimersByTime(pollingPeriodMs + 1);
119
+ });
120
+ it("should update the allowed error value to notify the consumer - timeout value set by the consumer", function (done) {
121
+ var fetchingTimeoutMs = pollingPeriodMs + 500;
122
+ mockedGetVersion.mockResolvedValue(aFirmwareInfo);
123
+ mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
124
+ var device = aDevice;
125
+ (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
126
+ deviceId: device.deviceId,
127
+ pollingPeriodMs: pollingPeriodMs,
128
+ fetchingTimeoutMs: fetchingTimeoutMs
129
+ }).subscribe({
130
+ next: function (value) {
131
+ expect(value.onboardingState).toBeNull();
132
+ expect(value.allowedError).toBeInstanceOf(rxjs_1.TimeoutError);
133
+ done();
134
+ }
135
+ });
136
+ // Waits more than the timeout
137
+ jest.advanceTimersByTime(fetchingTimeoutMs + 1);
138
+ });
139
+ });
140
+ describe("and when the error is fatal and thrown before the defined timeout", function () {
141
+ it("should notify the consumer that a unallowed error occurred", function (done) {
142
+ mockedGetVersion.mockRejectedValue(new Error("Unknown error"));
143
+ var device = aDevice;
144
+ (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
145
+ deviceId: device.deviceId,
146
+ pollingPeriodMs: pollingPeriodMs
147
+ }).subscribe({
148
+ error: function (error) {
149
+ expect(error).toBeInstanceOf(Error);
150
+ expect(error === null || error === void 0 ? void 0 : error.message).toBe("Unknown error");
151
+ done();
152
+ }
153
+ });
154
+ jest.advanceTimersByTime(pollingPeriodMs - 1);
155
+ });
156
+ });
157
+ });
158
+ describe("When the fetched device state is incorrect", function () {
159
+ it("should return a null onboarding state, and keep track of the extract error", function (done) {
160
+ mockedGetVersion.mockResolvedValue(aFirmwareInfo);
161
+ mockedExtractOnboardingState.mockImplementation(function () {
162
+ throw new errors_1.DeviceExtractOnboardingStateError("Some incorrect device info");
163
+ });
164
+ var device = aDevice;
165
+ onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
166
+ deviceId: device.deviceId,
167
+ pollingPeriodMs: pollingPeriodMs
168
+ }).subscribe({
169
+ next: function (value) {
170
+ expect(value.onboardingState).toBeNull();
171
+ expect(value.allowedError).toBeInstanceOf(errors_1.DeviceExtractOnboardingStateError);
172
+ done();
173
+ }
174
+ });
175
+ jest.advanceTimersByTime(pollingPeriodMs - 1);
176
+ });
177
+ });
178
+ describe("When polling returns a correct device state", function () {
179
+ it("should return a correct onboarding state", function (done) {
180
+ mockedGetVersion.mockResolvedValue(aFirmwareInfo);
181
+ mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
182
+ var device = aDevice;
183
+ onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
184
+ deviceId: device.deviceId,
185
+ pollingPeriodMs: pollingPeriodMs
186
+ }).subscribe({
187
+ next: function (value) {
188
+ expect(value.allowedError).toBeNull();
189
+ expect(value.onboardingState).toEqual(anOnboardingState);
190
+ done();
191
+ },
192
+ error: function (error) {
193
+ done(error);
194
+ }
195
+ });
196
+ jest.advanceTimersByTime(pollingPeriodMs - 1);
197
+ });
198
+ it("should poll a new onboarding state after the defined period of time", function (done) {
199
+ mockedGetVersion.mockResolvedValue(aFirmwareInfo);
200
+ mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
201
+ var device = aDevice;
202
+ // Did not manage to test that the polling is repeated by using jest's fake timer
203
+ // and advanceTimersByTime method or equivalent.
204
+ // Hacky test: spy on the repeat operator to see if it has been called.
205
+ var spiedRepeat = jest.spyOn(rxjsOperators, "repeat");
206
+ onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
207
+ deviceId: device.deviceId,
208
+ pollingPeriodMs: pollingPeriodMs
209
+ }).subscribe({
210
+ next: function (value) {
211
+ expect(value.onboardingState).toEqual(anOnboardingState);
212
+ expect(value.allowedError).toBeNull();
213
+ expect(spiedRepeat).toHaveBeenCalledTimes(1);
214
+ done();
215
+ },
216
+ error: function (error) {
217
+ done(error);
218
+ }
219
+ });
220
+ jest.runOnlyPendingTimers();
221
+ });
222
+ });
223
+ });
224
+ //# sourceMappingURL=getOnboardingStatePolling.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOnboardingStatePolling.test.js","sourceRoot":"","sources":["../../src/hw/getOnboardingStatePolling.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Device } from "../../hw/actions/types";
2
+ import type { OnboardingStatePollingResult } from "../../hw/getOnboardingStatePolling";
3
+ export declare type UseOnboardingStatePollingResult = OnboardingStatePollingResult & {
4
+ fatalError: Error | null;
5
+ };
6
+ /**
7
+ * Polls the current device onboarding state, and notify the hook consumer of
8
+ * any allowed errors and fatal errors
9
+ * @param device A Device object
10
+ * @param pollingPeriodMs The period in ms after which the device onboarding state is fetched again
11
+ * @param stopPolling Flag to stop or continue the polling
12
+ * @returns An object containing:
13
+ * - onboardingState: the device state during the onboarding
14
+ * - allowedError: any error that is allowed and does not stop the polling
15
+ * - fatalError: any error that is fatal and stops the polling
16
+ */
17
+ export declare const useOnboardingStatePolling: ({ device, pollingPeriodMs, stopPolling, }: {
18
+ device: Device | null;
19
+ pollingPeriodMs: number;
20
+ stopPolling?: boolean | undefined;
21
+ }) => UseOnboardingStatePollingResult;
22
+ //# sourceMappingURL=useOnboardingStatePolling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOnboardingStatePolling.d.ts","sourceRoot":"","sources":["../../../src/onboarding/hooks/useOnboardingStatePolling.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAIvF,oBAAY,+BAA+B,GAAG,4BAA4B,GAAG;IAC3E,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB;YAK5B,MAAM,GAAG,IAAI;qBACJ,MAAM;;MAErB,+BAqDH,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ exports.__esModule = true;
19
+ exports.useOnboardingStatePolling = void 0;
20
+ var react_1 = require("react");
21
+ var errors_1 = require("@ledgerhq/errors");
22
+ var getOnboardingStatePolling_1 = require("../../hw/getOnboardingStatePolling");
23
+ /**
24
+ * Polls the current device onboarding state, and notify the hook consumer of
25
+ * any allowed errors and fatal errors
26
+ * @param device A Device object
27
+ * @param pollingPeriodMs The period in ms after which the device onboarding state is fetched again
28
+ * @param stopPolling Flag to stop or continue the polling
29
+ * @returns An object containing:
30
+ * - onboardingState: the device state during the onboarding
31
+ * - allowedError: any error that is allowed and does not stop the polling
32
+ * - fatalError: any error that is fatal and stops the polling
33
+ */
34
+ var useOnboardingStatePolling = function (_a) {
35
+ var device = _a.device, pollingPeriodMs = _a.pollingPeriodMs, _b = _a.stopPolling, stopPolling = _b === void 0 ? false : _b;
36
+ var _c = __read((0, react_1.useState)(null), 2), onboardingState = _c[0], setOnboardingState = _c[1];
37
+ var _d = __read((0, react_1.useState)(null), 2), allowedError = _d[0], setAllowedError = _d[1];
38
+ var _e = __read((0, react_1.useState)(null), 2), fatalError = _e[0], setFatalError = _e[1];
39
+ (0, react_1.useEffect)(function () {
40
+ var onboardingStatePollingSubscription;
41
+ // If stopPolling is updated and set to true, the useEffect hook will call its
42
+ // cleanup function (return) and the polling won't restart with the below condition
43
+ if (device && !stopPolling) {
44
+ onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
45
+ deviceId: device.deviceId,
46
+ pollingPeriodMs: pollingPeriodMs
47
+ }).subscribe({
48
+ next: function (onboardingStatePollingResult) {
49
+ if (onboardingStatePollingResult) {
50
+ setFatalError(null);
51
+ setAllowedError(onboardingStatePollingResult.allowedError);
52
+ // Does not update the onboarding state if an allowed error occurred
53
+ if (!onboardingStatePollingResult.allowedError) {
54
+ setOnboardingState(onboardingStatePollingResult.onboardingState);
55
+ }
56
+ }
57
+ },
58
+ error: function (error) {
59
+ var _a;
60
+ setAllowedError(null);
61
+ setFatalError(error instanceof Error
62
+ ? error
63
+ : new errors_1.DeviceOnboardingStatePollingError("Error from: ".concat((_a = error === null || error === void 0 ? void 0 : error.name) !== null && _a !== void 0 ? _a : error, " ").concat(error === null || error === void 0 ? void 0 : error.message)));
64
+ }
65
+ });
66
+ }
67
+ return function () {
68
+ onboardingStatePollingSubscription === null || onboardingStatePollingSubscription === void 0 ? void 0 : onboardingStatePollingSubscription.unsubscribe();
69
+ };
70
+ }, [
71
+ device,
72
+ pollingPeriodMs,
73
+ setOnboardingState,
74
+ setAllowedError,
75
+ setFatalError,
76
+ stopPolling,
77
+ ]);
78
+ return { onboardingState: onboardingState, allowedError: allowedError, fatalError: fatalError };
79
+ };
80
+ exports.useOnboardingStatePolling = useOnboardingStatePolling;
81
+ //# sourceMappingURL=useOnboardingStatePolling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOnboardingStatePolling.js","sourceRoot":"","sources":["../../../src/onboarding/hooks/useOnboardingStatePolling.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,+BAA4C;AAG5C,2CAAqE;AAGrE,gFAA+E;AAO/E;;;;;;;;;;GAUG;AACI,IAAM,yBAAyB,GAAG,UAAC,EAQzC;QAPC,MAAM,YAAA,EACN,eAAe,qBAAA,EACf,mBAAmB,EAAnB,WAAW,mBAAG,KAAK,KAAA;IAMb,IAAA,KAAA,OACJ,IAAA,gBAAQ,EAAyB,IAAI,CAAC,IAAA,EADjC,eAAe,QAAA,EAAE,kBAAkB,QACF,CAAC;IACnC,IAAA,KAAA,OAAkC,IAAA,gBAAQ,EAAe,IAAI,CAAC,IAAA,EAA7D,YAAY,QAAA,EAAE,eAAe,QAAgC,CAAC;IAC/D,IAAA,KAAA,OAA8B,IAAA,gBAAQ,EAAe,IAAI,CAAC,IAAA,EAAzD,UAAU,QAAA,EAAE,aAAa,QAAgC,CAAC;IAEjE,IAAA,iBAAS,EAAC;QACR,IAAI,kCAAgD,CAAC;QAErD,8EAA8E;QAC9E,mFAAmF;QACnF,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;YAC1B,kCAAkC,GAAG,IAAA,qDAAyB,EAAC;gBAC7D,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,eAAe,iBAAA;aAChB,CAAC,CAAC,SAAS,CAAC;gBACX,IAAI,EAAE,UAAC,4BAA0D;oBAC/D,IAAI,4BAA4B,EAAE;wBAChC,aAAa,CAAC,IAAI,CAAC,CAAC;wBACpB,eAAe,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;wBAE3D,oEAAoE;wBACpE,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE;4BAC9C,kBAAkB,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;yBAClE;qBACF;gBACH,CAAC;gBACD,KAAK,EAAE,UAAC,KAAK;;oBACX,eAAe,CAAC,IAAI,CAAC,CAAC;oBACtB,aAAa,CACX,KAAK,YAAY,KAAK;wBACpB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,0CAAiC,CACnC,sBAAe,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,mCAAI,KAAK,cAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAE,CACxD,CACN,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;SACJ;QAED,OAAO;YACL,kCAAkC,aAAlC,kCAAkC,uBAAlC,kCAAkC,CAAE,WAAW,EAAE,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,MAAM;QACN,eAAe;QACf,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,EAAE,eAAe,iBAAA,EAAE,YAAY,cAAA,EAAE,UAAU,YAAA,EAAE,CAAC;AACvD,CAAC,CAAC;AA7DW,QAAA,yBAAyB,6BA6DpC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useOnboardingStatePolling.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOnboardingStatePolling.test.d.ts","sourceRoot":"","sources":["../../../src/onboarding/hooks/useOnboardingStatePolling.test.ts"],"names":[],"mappings":""}