@ledgerhq/live-common 24.0.0 → 24.1.0-next.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 (60) hide show
  1. package/lib/__tests__/range.js +8 -0
  2. package/lib/__tests__/range.js.map +1 -1
  3. package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
  4. package/lib/families/bitcoin/js-synchronisation.js +2 -173
  5. package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
  6. package/lib/families/bitcoin/logic.d.ts +6 -1
  7. package/lib/families/bitcoin/logic.d.ts.map +1 -1
  8. package/lib/families/bitcoin/logic.js +186 -1
  9. package/lib/families/bitcoin/logic.js.map +1 -1
  10. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.d.ts +2 -0
  11. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.d.ts.map +1 -0
  12. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.js +72 -0
  13. package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.js.map +1 -0
  14. package/lib/families/cosmos/api/Cosmos.d.ts.map +1 -1
  15. package/lib/families/cosmos/api/Cosmos.js +1 -0
  16. package/lib/families/cosmos/api/Cosmos.js.map +1 -1
  17. package/lib/families/cosmos/react.test.js +5 -4
  18. package/lib/families/cosmos/react.test.js.map +1 -1
  19. package/lib/hw/extractOnboardingState.d.ts +26 -0
  20. package/lib/hw/extractOnboardingState.d.ts.map +1 -0
  21. package/lib/hw/extractOnboardingState.js +69 -0
  22. package/lib/hw/extractOnboardingState.js.map +1 -0
  23. package/lib/hw/extractOnboardingState.test.d.ts +2 -0
  24. package/lib/hw/extractOnboardingState.test.d.ts.map +1 -0
  25. package/lib/hw/extractOnboardingState.test.js +182 -0
  26. package/lib/hw/extractOnboardingState.test.js.map +1 -0
  27. package/lib/hw/getOnboardingStatePolling.d.ts +20 -0
  28. package/lib/hw/getOnboardingStatePolling.d.ts.map +1 -0
  29. package/lib/hw/getOnboardingStatePolling.js +117 -0
  30. package/lib/hw/getOnboardingStatePolling.js.map +1 -0
  31. package/lib/hw/getOnboardingStatePolling.test.d.ts +2 -0
  32. package/lib/hw/getOnboardingStatePolling.test.d.ts.map +1 -0
  33. package/lib/hw/getOnboardingStatePolling.test.js +224 -0
  34. package/lib/hw/getOnboardingStatePolling.test.js.map +1 -0
  35. package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts +22 -0
  36. package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts.map +1 -0
  37. package/lib/onboarding/hooks/useOnboardingStatePolling.js +81 -0
  38. package/lib/onboarding/hooks/useOnboardingStatePolling.js.map +1 -0
  39. package/lib/onboarding/hooks/useOnboardingStatePolling.test.d.ts +2 -0
  40. package/lib/onboarding/hooks/useOnboardingStatePolling.test.d.ts.map +1 -0
  41. package/lib/onboarding/hooks/useOnboardingStatePolling.test.js +374 -0
  42. package/lib/onboarding/hooks/useOnboardingStatePolling.test.js.map +1 -0
  43. package/lib/types/manager.d.ts +5 -0
  44. package/lib/types/manager.d.ts.map +1 -1
  45. package/lib/types/manager.js +7 -1
  46. package/lib/types/manager.js.map +1 -1
  47. package/package.json +2 -2
  48. package/src/__tests__/range.ts +13 -0
  49. package/src/families/bitcoin/js-synchronisation.ts +3 -172
  50. package/src/families/bitcoin/logic.ts +169 -0
  51. package/src/families/bitcoin/xpub.txs.txNoOutput.unit.test.ts +37 -0
  52. package/src/families/cosmos/api/Cosmos.ts +4 -0
  53. package/src/families/cosmos/react.test.ts +3 -0
  54. package/src/hw/extractOnboardingState.test.ts +251 -0
  55. package/src/hw/extractOnboardingState.ts +97 -0
  56. package/src/hw/getOnboardingStatePolling.test.ts +247 -0
  57. package/src/hw/getOnboardingStatePolling.ts +153 -0
  58. package/src/onboarding/hooks/useOnboardingStatePolling.test.ts +304 -0
  59. package/src/onboarding/hooks/useOnboardingStatePolling.ts +86 -0
  60. package/src/types/manager.ts +5 -0
@@ -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":""}