@ledgerhq/live-wallet 0.9.2 → 0.9.3
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.
- package/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +14 -0
- package/lib/cloudsync/__tests__/cipher.test.js +10 -19
- package/lib/cloudsync/__tests__/cipher.test.js.map +1 -1
- package/lib/cloudsync/__tests__/sdk.test.js +55 -58
- package/lib/cloudsync/__tests__/sdk.test.js.map +1 -1
- package/lib/cloudsync/api.js +46 -63
- package/lib/cloudsync/api.js.map +1 -1
- package/lib/cloudsync/cipher.js +6 -15
- package/lib/cloudsync/cipher.js.map +1 -1
- package/lib/cloudsync/sdk.js +51 -59
- package/lib/cloudsync/sdk.js.map +1 -1
- package/lib/liveqr/cross.test.js +5 -2
- package/lib/liveqr/cross.test.js.map +1 -1
- package/lib/liveqr/importAccounts.js +6 -15
- package/lib/liveqr/importAccounts.js.map +1 -1
- package/lib/ordering.js +1 -1
- package/lib/ordering.js.map +1 -1
- package/lib/store.js +16 -10
- package/lib/store.js.map +1 -1
- package/lib/store.test.js +4 -1
- package/lib/store.test.js.map +1 -1
- package/lib/walletsync/__mocks__/modules/accounts.js +1 -1
- package/lib/walletsync/__mocks__/modules/accounts.js.map +1 -1
- package/lib/walletsync/__mocks__/watchLoop.js +14 -27
- package/lib/walletsync/__mocks__/watchLoop.js.map +1 -1
- package/lib/walletsync/__tests__/compatibility.test.js +45 -24
- package/lib/walletsync/__tests__/compatibility.test.js.map +1 -1
- package/lib/walletsync/__tests__/generic.test.js +9 -18
- package/lib/walletsync/__tests__/generic.test.js.map +1 -1
- package/lib/walletsync/__tests__/modules/accountNames.test.js +9 -18
- package/lib/walletsync/__tests__/modules/accountNames.test.js.map +1 -1
- package/lib/walletsync/__tests__/modules/accounts.test.js +88 -82
- package/lib/walletsync/__tests__/modules/accounts.test.js.map +1 -1
- package/lib/walletsync/__tests__/specific.test.js +10 -4
- package/lib/walletsync/__tests__/specific.test.js.map +1 -1
- package/lib/walletsync/__tests__/trustchainLifecyle.test.js +8 -17
- package/lib/walletsync/__tests__/trustchainLifecyle.test.js.map +1 -1
- package/lib/walletsync/aggregator.js +15 -23
- package/lib/walletsync/aggregator.js.map +1 -1
- package/lib/walletsync/createWalletSyncWatchLoop.js +49 -60
- package/lib/walletsync/createWalletSyncWatchLoop.js.map +1 -1
- package/lib/walletsync/createWalletSyncWatchLoop.test.js +37 -46
- package/lib/walletsync/createWalletSyncWatchLoop.test.js.map +1 -1
- package/lib/walletsync/incrementalUpdates.js +11 -20
- package/lib/walletsync/incrementalUpdates.js.map +1 -1
- package/lib/walletsync/modules/accountNames.js +13 -24
- package/lib/walletsync/modules/accountNames.js.map +1 -1
- package/lib/walletsync/modules/accounts.js +99 -114
- package/lib/walletsync/modules/accounts.js.map +1 -1
- package/lib/walletsync/trustchainLifecyle.js +9 -18
- package/lib/walletsync/trustchainLifecyle.js.map +1 -1
- package/lib-es/cloudsync/__tests__/cipher.test.js +10 -19
- package/lib-es/cloudsync/__tests__/cipher.test.js.map +1 -1
- package/lib-es/cloudsync/__tests__/sdk.test.js +55 -58
- package/lib-es/cloudsync/__tests__/sdk.test.js.map +1 -1
- package/lib-es/cloudsync/api.js +46 -63
- package/lib-es/cloudsync/api.js.map +1 -1
- package/lib-es/cloudsync/cipher.js +6 -15
- package/lib-es/cloudsync/cipher.js.map +1 -1
- package/lib-es/cloudsync/sdk.js +51 -59
- package/lib-es/cloudsync/sdk.js.map +1 -1
- package/lib-es/liveqr/cross.test.js +5 -2
- package/lib-es/liveqr/cross.test.js.map +1 -1
- package/lib-es/liveqr/importAccounts.js +6 -15
- package/lib-es/liveqr/importAccounts.js.map +1 -1
- package/lib-es/ordering.js +1 -1
- package/lib-es/ordering.js.map +1 -1
- package/lib-es/store.js +16 -10
- package/lib-es/store.js.map +1 -1
- package/lib-es/store.test.js +4 -1
- package/lib-es/store.test.js.map +1 -1
- package/lib-es/walletsync/__mocks__/modules/accounts.js +1 -1
- package/lib-es/walletsync/__mocks__/modules/accounts.js.map +1 -1
- package/lib-es/walletsync/__mocks__/watchLoop.js +14 -27
- package/lib-es/walletsync/__mocks__/watchLoop.js.map +1 -1
- package/lib-es/walletsync/__tests__/compatibility.test.js +45 -24
- package/lib-es/walletsync/__tests__/compatibility.test.js.map +1 -1
- package/lib-es/walletsync/__tests__/generic.test.js +9 -18
- package/lib-es/walletsync/__tests__/generic.test.js.map +1 -1
- package/lib-es/walletsync/__tests__/modules/accountNames.test.js +9 -18
- package/lib-es/walletsync/__tests__/modules/accountNames.test.js.map +1 -1
- package/lib-es/walletsync/__tests__/modules/accounts.test.js +88 -82
- package/lib-es/walletsync/__tests__/modules/accounts.test.js.map +1 -1
- package/lib-es/walletsync/__tests__/specific.test.js +10 -4
- package/lib-es/walletsync/__tests__/specific.test.js.map +1 -1
- package/lib-es/walletsync/__tests__/trustchainLifecyle.test.js +8 -17
- package/lib-es/walletsync/__tests__/trustchainLifecyle.test.js.map +1 -1
- package/lib-es/walletsync/aggregator.js +15 -23
- package/lib-es/walletsync/aggregator.js.map +1 -1
- package/lib-es/walletsync/createWalletSyncWatchLoop.js +49 -60
- package/lib-es/walletsync/createWalletSyncWatchLoop.js.map +1 -1
- package/lib-es/walletsync/createWalletSyncWatchLoop.test.js +37 -46
- package/lib-es/walletsync/createWalletSyncWatchLoop.test.js.map +1 -1
- package/lib-es/walletsync/incrementalUpdates.js +11 -20
- package/lib-es/walletsync/incrementalUpdates.js.map +1 -1
- package/lib-es/walletsync/modules/accountNames.js +13 -24
- package/lib-es/walletsync/modules/accountNames.js.map +1 -1
- package/lib-es/walletsync/modules/accounts.js +99 -114
- package/lib-es/walletsync/modules/accounts.js.map +1 -1
- package/lib-es/walletsync/trustchainLifecyle.js +9 -18
- package/lib-es/walletsync/trustchainLifecyle.js.map +1 -1
- package/package.json +4 -4
- package/tsconfig.json +0 -1
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { z } from "zod";
|
|
11
2
|
/**
|
|
12
3
|
* an aggregator takes a bunch of WalletSyncDataManager modules and make a top-level WalletSyncDataManager one.
|
|
@@ -20,7 +11,7 @@ export function createAggregator(modules) {
|
|
|
20
11
|
diffLocalToDistant(localData, latestState) {
|
|
21
12
|
let hasChanges = false;
|
|
22
13
|
// to be forward compatible, we must also preserve the fields we don't know yet.
|
|
23
|
-
const unknownRest =
|
|
14
|
+
const unknownRest = { ...latestState };
|
|
24
15
|
// Aggregate all diffs from each module
|
|
25
16
|
const nextState = mapValues(modules, (m, k) => {
|
|
26
17
|
const diff = m.diffLocalToDistant(localData[k], latestState && latestState[k] ? latestState[k] : null);
|
|
@@ -32,21 +23,22 @@ export function createAggregator(modules) {
|
|
|
32
23
|
});
|
|
33
24
|
return {
|
|
34
25
|
hasChanges,
|
|
35
|
-
nextState:
|
|
26
|
+
nextState: {
|
|
27
|
+
...nextState,
|
|
28
|
+
...unknownRest,
|
|
29
|
+
},
|
|
36
30
|
};
|
|
37
31
|
},
|
|
38
|
-
resolveIncrementalUpdate(ctx, localData, latestState, incomingState) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return !hasChanges ? { hasChanges: false } : { hasChanges: true, update };
|
|
49
|
-
});
|
|
32
|
+
async resolveIncrementalUpdate(ctx, localData, latestState, incomingState) {
|
|
33
|
+
// Aggregate all promises resulting of each module resolveIncrementalUpdate
|
|
34
|
+
const resolved = mapValues(modules, (m, k) => m.resolveIncrementalUpdate(ctx, localData[k], latestState && latestState[k] ? latestState[k] : null, (incomingState && incomingState[k]) || null));
|
|
35
|
+
// wait for all promises
|
|
36
|
+
const results = await Promise.all(Object.values(resolved));
|
|
37
|
+
const hasChanges = results.some(r => r.hasChanges);
|
|
38
|
+
let index = 0;
|
|
39
|
+
const update = mapValues(modules, () => results[index++]);
|
|
40
|
+
// returns the partial updates
|
|
41
|
+
return !hasChanges ? { hasChanges: false } : { hasChanges: true, update };
|
|
50
42
|
},
|
|
51
43
|
applyUpdate(localData, update) {
|
|
52
44
|
// apply all updates to each module and aggregate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../src/walletsync/aggregator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../src/walletsync/aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { log } from "@ledgerhq/logs";
|
|
11
2
|
import { TrustchainEjected, TrustchainOutdated } from "@ledgerhq/ledger-key-ring-protocol/errors";
|
|
12
3
|
/**
|
|
@@ -14,64 +5,62 @@ import { TrustchainEjected, TrustchainOutdated } from "@ledgerhq/ledger-key-ring
|
|
|
14
5
|
* make sure to unsubscribe if you need to rerun a new watch loop. notably if one of the input changes.
|
|
15
6
|
*/
|
|
16
7
|
export function createWalletSyncWatchLoop({ watchConfig, visualConfig, walletsync, walletSyncSdk, trustchain, memberCredentials, setVisualPending, onStartPolling, onTrustchainRefreshNeeded, onError, getState, localStateSelector, latestDistantStateSelector, localIncrementUpdate, }) {
|
|
17
|
-
const visualPendingTimeout =
|
|
8
|
+
const visualPendingTimeout = visualConfig?.visualPendingTimeout || 1000;
|
|
18
9
|
let unsubscribed = false;
|
|
19
10
|
let pending = false;
|
|
20
|
-
function loop() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
async function loop() {
|
|
12
|
+
// skip if there is something already pending
|
|
13
|
+
if (pending || unsubscribed)
|
|
14
|
+
return;
|
|
15
|
+
pending = true;
|
|
16
|
+
// when it's taking longer than expected, we will visualize the loading
|
|
17
|
+
const visualTimeout = setVisualPending && setTimeout(() => setVisualPending(true), visualPendingTimeout);
|
|
18
|
+
try {
|
|
19
|
+
log("walletsync", "loop");
|
|
20
|
+
if (onStartPolling)
|
|
21
|
+
onStartPolling();
|
|
22
|
+
// check if there is a pull to do
|
|
23
|
+
await walletSyncSdk.pull(trustchain, memberCredentials);
|
|
24
|
+
if (unsubscribed)
|
|
25
|
+
return;
|
|
26
|
+
await localIncrementUpdate();
|
|
27
|
+
if (unsubscribed)
|
|
24
28
|
return;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
log("walletsync", "
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// check if there is a pull to do
|
|
33
|
-
yield walletSyncSdk.pull(trustchain, memberCredentials);
|
|
34
|
-
if (unsubscribed)
|
|
35
|
-
return;
|
|
36
|
-
yield localIncrementUpdate();
|
|
37
|
-
if (unsubscribed)
|
|
38
|
-
return;
|
|
39
|
-
// is there new changes to push?
|
|
40
|
-
const state = getState();
|
|
41
|
-
const diff = walletsync.diffLocalToDistant(localStateSelector(state), latestDistantStateSelector(state));
|
|
42
|
-
if (diff.hasChanges) {
|
|
43
|
-
log("walletsync", "local->dist diff to push", diff);
|
|
44
|
-
// push the new changes
|
|
45
|
-
yield walletSyncSdk.push(trustchain, memberCredentials, diff.nextState);
|
|
46
|
-
}
|
|
29
|
+
// is there new changes to push?
|
|
30
|
+
const state = getState();
|
|
31
|
+
const diff = walletsync.diffLocalToDistant(localStateSelector(state), latestDistantStateSelector(state));
|
|
32
|
+
if (diff.hasChanges) {
|
|
33
|
+
log("walletsync", "local->dist diff to push", diff);
|
|
34
|
+
// push the new changes
|
|
35
|
+
await walletSyncSdk.push(trustchain, memberCredentials, diff.nextState);
|
|
47
36
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (unsubscribed)
|
|
55
|
-
return;
|
|
56
|
-
if (onError)
|
|
57
|
-
onError(e);
|
|
58
|
-
else {
|
|
59
|
-
console.error(e);
|
|
60
|
-
}
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
const shouldRefresh = e instanceof TrustchainEjected || e instanceof TrustchainOutdated;
|
|
40
|
+
if (shouldRefresh) {
|
|
41
|
+
await onTrustchainRefreshNeeded(trustchain);
|
|
42
|
+
return;
|
|
61
43
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
44
|
+
if (unsubscribed)
|
|
45
|
+
return;
|
|
46
|
+
if (onError)
|
|
47
|
+
onError(e);
|
|
48
|
+
else {
|
|
49
|
+
console.error(e);
|
|
68
50
|
}
|
|
69
|
-
}
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
pending = false;
|
|
54
|
+
if (visualTimeout)
|
|
55
|
+
clearTimeout(visualTimeout);
|
|
56
|
+
if (setVisualPending)
|
|
57
|
+
setVisualPending(false);
|
|
58
|
+
}
|
|
70
59
|
}
|
|
71
|
-
const notificationsEnabled =
|
|
72
|
-
const pollingInterval =
|
|
73
|
-
const initialTimeout =
|
|
74
|
-
const userIntentDebounce =
|
|
60
|
+
const notificationsEnabled = watchConfig?.notificationsEnabled || false;
|
|
61
|
+
const pollingInterval = watchConfig?.pollingInterval || 10000;
|
|
62
|
+
const initialTimeout = watchConfig?.initialTimeout || 1000;
|
|
63
|
+
const userIntentDebounce = watchConfig?.userIntentDebounce || 1000;
|
|
75
64
|
// main loop
|
|
76
65
|
const callback = () => {
|
|
77
66
|
timeout = setTimeout(callback, pollingInterval);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletSyncWatchLoop.js","sourceRoot":"","sources":["../../src/walletsync/createWalletSyncWatchLoop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createWalletSyncWatchLoop.js","sourceRoot":"","sources":["../../src/walletsync/createWalletSyncWatchLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { createWalletSyncWatchLoop } from "./createWalletSyncWatchLoop";
|
|
11
2
|
import { advanceTimersByTimeAsync, getWalletSyncWatchLoopConfig } from "./__mocks__/watchLoop";
|
|
12
3
|
import { Subject } from "rxjs";
|
|
13
4
|
import { TrustchainEjected, TrustchainOutdated } from "@ledgerhq/ledger-key-ring-protocol/errors";
|
|
14
5
|
jest.useFakeTimers();
|
|
15
6
|
describe("createWalletSyncWatchLoop", () => {
|
|
16
|
-
it("should pull but not push when there is no changes", () =>
|
|
7
|
+
it("should pull but not push when there is no changes", async () => {
|
|
17
8
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
18
9
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
19
|
-
|
|
10
|
+
await advanceTimersByTimeAsync(10);
|
|
20
11
|
watchLoop.unsubscribe();
|
|
21
12
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(1);
|
|
22
13
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.push).toHaveBeenCalledTimes(0);
|
|
23
|
-
})
|
|
24
|
-
it("should pull and push when there are changes", () =>
|
|
14
|
+
});
|
|
15
|
+
it("should pull and push when there are changes", async () => {
|
|
25
16
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
26
17
|
walletSyncWatchLoopConfig.latestDistantStateSelector = jest
|
|
27
18
|
.fn()
|
|
@@ -29,14 +20,14 @@ describe("createWalletSyncWatchLoop", () => {
|
|
|
29
20
|
.mockReturnValue(1);
|
|
30
21
|
walletSyncWatchLoopConfig.localStateSelector = jest.fn().mockReturnValue(1);
|
|
31
22
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
32
|
-
|
|
23
|
+
await advanceTimersByTimeAsync(20);
|
|
33
24
|
watchLoop.unsubscribe();
|
|
34
25
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
35
26
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledWith(walletSyncWatchLoopConfig.trustchain, walletSyncWatchLoopConfig.memberCredentials);
|
|
36
27
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.push).toHaveBeenCalledTimes(1);
|
|
37
28
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.push).toHaveBeenCalledWith(walletSyncWatchLoopConfig.trustchain, walletSyncWatchLoopConfig.memberCredentials, 1);
|
|
38
|
-
})
|
|
39
|
-
it("notifications triggers the watch loop", () =>
|
|
29
|
+
});
|
|
30
|
+
it("notifications triggers the watch loop", async () => {
|
|
40
31
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
41
32
|
const notifications = new Subject();
|
|
42
33
|
walletSyncWatchLoopConfig.walletSyncSdk.listenNotifications = (t, m) => {
|
|
@@ -50,14 +41,14 @@ describe("createWalletSyncWatchLoop", () => {
|
|
|
50
41
|
pollingInterval: 10000,
|
|
51
42
|
};
|
|
52
43
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
53
|
-
|
|
44
|
+
await advanceTimersByTimeAsync(15);
|
|
54
45
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
55
46
|
notifications.next(2);
|
|
56
|
-
|
|
47
|
+
await advanceTimersByTimeAsync(1);
|
|
57
48
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(3);
|
|
58
49
|
watchLoop.unsubscribe();
|
|
59
|
-
})
|
|
60
|
-
it("notifications disabled does not triggers the watch loop", () =>
|
|
50
|
+
});
|
|
51
|
+
it("notifications disabled does not triggers the watch loop", async () => {
|
|
61
52
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
62
53
|
const notifications = new Subject();
|
|
63
54
|
walletSyncWatchLoopConfig.walletSyncSdk.listenNotifications = () => notifications;
|
|
@@ -67,14 +58,14 @@ describe("createWalletSyncWatchLoop", () => {
|
|
|
67
58
|
pollingInterval: 10000,
|
|
68
59
|
};
|
|
69
60
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
70
|
-
|
|
61
|
+
await advanceTimersByTimeAsync(15);
|
|
71
62
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
72
63
|
notifications.next(2);
|
|
73
|
-
|
|
64
|
+
await advanceTimersByTimeAsync(1);
|
|
74
65
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
75
66
|
watchLoop.unsubscribe();
|
|
76
|
-
})
|
|
77
|
-
it("should execute the loop on user refresh intent", () =>
|
|
67
|
+
});
|
|
68
|
+
it("should execute the loop on user refresh intent", async () => {
|
|
78
69
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
79
70
|
walletSyncWatchLoopConfig.watchConfig = {
|
|
80
71
|
initialTimeout: 5000,
|
|
@@ -82,71 +73,71 @@ describe("createWalletSyncWatchLoop", () => {
|
|
|
82
73
|
userIntentDebounce: 1000,
|
|
83
74
|
};
|
|
84
75
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
85
|
-
|
|
76
|
+
await advanceTimersByTimeAsync(15);
|
|
86
77
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
87
|
-
|
|
78
|
+
await advanceTimersByTimeAsync(1);
|
|
88
79
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
89
80
|
watchLoop.onUserRefreshIntent();
|
|
90
81
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
91
|
-
|
|
82
|
+
await advanceTimersByTimeAsync(1);
|
|
92
83
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(3);
|
|
93
84
|
watchLoop.unsubscribe();
|
|
94
|
-
})
|
|
95
|
-
it("should stop running the loop when unsubscribed", () =>
|
|
85
|
+
});
|
|
86
|
+
it("should stop running the loop when unsubscribed", async () => {
|
|
96
87
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
97
88
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
98
|
-
|
|
89
|
+
await advanceTimersByTimeAsync(15);
|
|
99
90
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
100
91
|
watchLoop.unsubscribe();
|
|
101
|
-
|
|
92
|
+
await advanceTimersByTimeAsync(30);
|
|
102
93
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(2);
|
|
103
|
-
})
|
|
104
|
-
it("should wait for the initial timeout before running the loop", () =>
|
|
94
|
+
});
|
|
95
|
+
it("should wait for the initial timeout before running the loop", async () => {
|
|
105
96
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
106
97
|
walletSyncWatchLoopConfig.watchConfig = {
|
|
107
98
|
initialTimeout: 5000,
|
|
108
99
|
};
|
|
109
100
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
110
|
-
|
|
101
|
+
await advanceTimersByTimeAsync(3);
|
|
111
102
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(0);
|
|
112
|
-
|
|
103
|
+
await advanceTimersByTimeAsync(2);
|
|
113
104
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(1);
|
|
114
105
|
watchLoop.unsubscribe();
|
|
115
|
-
})
|
|
116
|
-
it("should call the onError function on error", () =>
|
|
106
|
+
});
|
|
107
|
+
it("should call the onError function on error", async () => {
|
|
117
108
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
118
109
|
walletSyncWatchLoopConfig.onStartPolling = () => {
|
|
119
110
|
throw new Error("error");
|
|
120
111
|
};
|
|
121
112
|
walletSyncWatchLoopConfig.onError = jest.fn();
|
|
122
113
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
123
|
-
|
|
114
|
+
await advanceTimersByTimeAsync(5);
|
|
124
115
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(0);
|
|
125
116
|
expect(walletSyncWatchLoopConfig.onError).toHaveBeenCalledTimes(1);
|
|
126
117
|
expect(walletSyncWatchLoopConfig.onError).toHaveBeenCalledWith(new Error("error"));
|
|
127
118
|
expect(walletSyncWatchLoopConfig.onTrustchainRefreshNeeded).toHaveBeenCalledTimes(0);
|
|
128
119
|
watchLoop.unsubscribe();
|
|
129
|
-
})
|
|
130
|
-
it("should log the error if no onError function is given", () =>
|
|
120
|
+
});
|
|
121
|
+
it("should log the error if no onError function is given", async () => {
|
|
131
122
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
132
123
|
walletSyncWatchLoopConfig.onStartPolling = () => {
|
|
133
124
|
throw new Error("error");
|
|
134
125
|
};
|
|
135
126
|
jest.spyOn(console, "error");
|
|
136
127
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
137
|
-
|
|
128
|
+
await advanceTimersByTimeAsync(5);
|
|
138
129
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(0);
|
|
139
130
|
expect(console.error).toHaveBeenCalledTimes(1);
|
|
140
131
|
expect(console.error).toHaveBeenCalledWith(new Error("error"));
|
|
141
132
|
watchLoop.unsubscribe();
|
|
142
|
-
})
|
|
143
|
-
it("should refresh the trustchain in case of a TrustchainEjectedError or a TrustchainOutdated", () =>
|
|
133
|
+
});
|
|
134
|
+
it("should refresh the trustchain in case of a TrustchainEjectedError or a TrustchainOutdated", async () => {
|
|
144
135
|
const walletSyncWatchLoopConfig = getWalletSyncWatchLoopConfig();
|
|
145
136
|
walletSyncWatchLoopConfig.onStartPolling = () => {
|
|
146
137
|
throw new TrustchainEjected("error");
|
|
147
138
|
};
|
|
148
139
|
const watchLoop = createWalletSyncWatchLoop(walletSyncWatchLoopConfig);
|
|
149
|
-
|
|
140
|
+
await advanceTimersByTimeAsync(5);
|
|
150
141
|
expect(walletSyncWatchLoopConfig.walletSyncSdk.pull).toHaveBeenCalledTimes(0);
|
|
151
142
|
expect(walletSyncWatchLoopConfig.onTrustchainRefreshNeeded).toHaveBeenCalledTimes(1);
|
|
152
143
|
watchLoop.unsubscribe();
|
|
@@ -155,10 +146,10 @@ describe("createWalletSyncWatchLoop", () => {
|
|
|
155
146
|
throw new TrustchainOutdated("error");
|
|
156
147
|
};
|
|
157
148
|
const watchLoop2 = createWalletSyncWatchLoop(walletSyncWatchLoopConfig2);
|
|
158
|
-
|
|
149
|
+
await advanceTimersByTimeAsync(5);
|
|
159
150
|
expect(walletSyncWatchLoopConfig2.walletSyncSdk.pull).toHaveBeenCalledTimes(0);
|
|
160
151
|
expect(walletSyncWatchLoopConfig2.onTrustchainRefreshNeeded).toHaveBeenCalledTimes(1);
|
|
161
152
|
watchLoop2.unsubscribe();
|
|
162
|
-
})
|
|
153
|
+
});
|
|
163
154
|
});
|
|
164
155
|
//# sourceMappingURL=createWalletSyncWatchLoop.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletSyncWatchLoop.test.js","sourceRoot":"","sources":["../../src/walletsync/createWalletSyncWatchLoop.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createWalletSyncWatchLoop.test.js","sourceRoot":"","sources":["../../src/walletsync/createWalletSyncWatchLoop.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { log } from "@ledgerhq/logs";
|
|
11
2
|
import walletsync from "./root";
|
|
12
3
|
export function makeSaveNewUpdate({ ctx, getState, latestDistantStateSelector, latestDistantVersionSelector, localStateSelector, saveUpdate, }) {
|
|
13
|
-
return (event) =>
|
|
4
|
+
return async (event) => {
|
|
14
5
|
log("walletsync", "saveNewUpdate", { event });
|
|
15
6
|
switch (event.type) {
|
|
16
7
|
case "new-data": {
|
|
@@ -20,46 +11,46 @@ export function makeSaveNewUpdate({ ctx, getState, latestDistantStateSelector, l
|
|
|
20
11
|
const latest = latestDistantStateSelector(state);
|
|
21
12
|
const local = localStateSelector(state);
|
|
22
13
|
const data = event.data;
|
|
23
|
-
const resolved =
|
|
14
|
+
const resolved = await walletsync.resolveIncrementalUpdate(ctx, local, latest, data);
|
|
24
15
|
if (resolved.hasChanges) {
|
|
25
16
|
const version = event.version;
|
|
26
17
|
const localState = localStateSelector(getState()); // fetch again latest state because it might have changed
|
|
27
18
|
const newLocalState = walletsync.applyUpdate(localState, resolved.update); // we resolve in sync the new local state to save
|
|
28
|
-
|
|
19
|
+
await saveUpdate(data, version, newLocalState);
|
|
29
20
|
log("walletsync", "resolved. changes applied.");
|
|
30
21
|
}
|
|
31
22
|
else {
|
|
32
23
|
log("walletsync", "resolved. no changes to apply.");
|
|
33
24
|
}
|
|
34
25
|
if (event.version !== latestVersion) {
|
|
35
|
-
|
|
26
|
+
await saveUpdate(data, event.version, null);
|
|
36
27
|
}
|
|
37
28
|
break;
|
|
38
29
|
}
|
|
39
30
|
case "pushed-data": {
|
|
40
|
-
|
|
31
|
+
await saveUpdate(event.data, event.version, null);
|
|
41
32
|
break;
|
|
42
33
|
}
|
|
43
34
|
case "deleted-data": {
|
|
44
|
-
|
|
35
|
+
await saveUpdate(null, 0, null);
|
|
45
36
|
break;
|
|
46
37
|
}
|
|
47
38
|
}
|
|
48
|
-
}
|
|
39
|
+
};
|
|
49
40
|
}
|
|
50
41
|
export function makeLocalIncrementalUpdate({ ctx, getState, latestWalletStateSelector, localStateSelector, saveUpdate, }) {
|
|
51
|
-
return () =>
|
|
42
|
+
return async () => {
|
|
52
43
|
// we resolve possible local incremental update
|
|
53
44
|
const state = getState();
|
|
54
45
|
const { data, version } = latestWalletStateSelector(state);
|
|
55
46
|
const local = localStateSelector(state);
|
|
56
|
-
const resolved =
|
|
47
|
+
const resolved = await walletsync.resolveIncrementalUpdate(ctx, local, data, data);
|
|
57
48
|
if (resolved.hasChanges) {
|
|
58
49
|
const localState = localStateSelector(getState()); // fetch again latest state because it might have changed
|
|
59
50
|
const newLocalState = walletsync.applyUpdate(localState, resolved.update); // we resolve in sync the new local state to save
|
|
60
|
-
|
|
51
|
+
await saveUpdate(data, version, newLocalState);
|
|
61
52
|
log("walletsync", "localIncrementalUpdate done.");
|
|
62
53
|
}
|
|
63
|
-
}
|
|
54
|
+
};
|
|
64
55
|
}
|
|
65
56
|
//# sourceMappingURL=incrementalUpdates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incrementalUpdates.js","sourceRoot":"","sources":["../../src/walletsync/incrementalUpdates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"incrementalUpdates.js","sourceRoot":"","sources":["../../src/walletsync/incrementalUpdates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { z } from "zod";
|
|
11
2
|
const schema = z.record(z.string());
|
|
12
3
|
const manager = {
|
|
@@ -20,21 +11,19 @@ const manager = {
|
|
|
20
11
|
};
|
|
21
12
|
},
|
|
22
13
|
// NB: current implementation will take any incoming state changes and replace it all. the risk of conflict is limited but possible.
|
|
23
|
-
resolveIncrementalUpdate(_ctx, localData, latestState, incomingState) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
update,
|
|
37
|
-
});
|
|
14
|
+
async resolveIncrementalUpdate(_ctx, localData, latestState, incomingState) {
|
|
15
|
+
if (!incomingState) {
|
|
16
|
+
return { hasChanges: false }; // nothing to do, the data is no longer available
|
|
17
|
+
}
|
|
18
|
+
const hasChanges = latestState !== incomingState && // bail out from "local" increment update
|
|
19
|
+
!sameDistantState(Object.fromEntries(localData.entries()), incomingState);
|
|
20
|
+
if (!hasChanges) {
|
|
21
|
+
return { hasChanges: false };
|
|
22
|
+
}
|
|
23
|
+
const update = { replaceAllNames: incomingState };
|
|
24
|
+
return Promise.resolve({
|
|
25
|
+
hasChanges: true,
|
|
26
|
+
update,
|
|
38
27
|
});
|
|
39
28
|
},
|
|
40
29
|
applyUpdate(_localData, update) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountNames.js","sourceRoot":"","sources":["../../../src/walletsync/modules/accountNames.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accountNames.js","sourceRoot":"","sources":["../../../src/walletsync/modules/accountNames.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpC,MAAM,OAAO,GAMT;IACF,MAAM;IAEN,kBAAkB,CAAC,SAAS,EAAE,WAAW;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;QACnE,OAAO;YACL,UAAU;YACV,SAAS;SACV,CAAC;IACJ,CAAC;IAED,oIAAoI;IACpI,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa;QACxE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,iDAAiD;QACjF,CAAC;QAED,MAAM,UAAU,GACd,WAAW,KAAK,aAAa,IAAI,yCAAyC;YAC1E,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAE5E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,UAAU,EAAE,IAAI;YAChB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,UAAU,EAAE,MAAM;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,CAAyB,EAAE,CAAyB;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,eAAe,OAAO,CAAC"}
|