@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,16 +1,10 @@
|
|
|
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 { dummyContext } from "../__mocks__/environment";
|
|
11
2
|
import { emptyState, genModuleState } from "../__mocks__";
|
|
12
3
|
import walletsync from "../index";
|
|
13
|
-
const oneAccountState =
|
|
4
|
+
const oneAccountState = {
|
|
5
|
+
...emptyState,
|
|
6
|
+
accounts: genModuleState("accounts", 0),
|
|
7
|
+
};
|
|
14
8
|
const distantEmptyState = walletsync.diffLocalToDistant(emptyState, null).nextState;
|
|
15
9
|
describe("the root WalletSyncDataManager can accept data that misses a new field handled by a new module (here accountNames)", () => {
|
|
16
10
|
const partialEmptyDistantData = { accounts: distantEmptyState.accounts };
|
|
@@ -25,25 +19,34 @@ describe("the root WalletSyncDataManager can accept data that misses a new field
|
|
|
25
19
|
const diff = walletsync.diffLocalToDistant(emptyState, partialEmptyDistantData);
|
|
26
20
|
expect(diff).toEqual({
|
|
27
21
|
hasChanges: false,
|
|
28
|
-
nextState:
|
|
22
|
+
nextState: {
|
|
23
|
+
...distantEmptyState, // verify that we indeed have the new fields in the nextState
|
|
24
|
+
accounts: partialEmptyDistantData.accounts,
|
|
25
|
+
},
|
|
29
26
|
});
|
|
30
27
|
});
|
|
31
28
|
test("on diffLocalToDistant with data (no changes)", () => {
|
|
32
29
|
const diff = walletsync.diffLocalToDistant(oneAccountState, partialOneAccountDistantData);
|
|
33
30
|
expect(diff).toEqual({
|
|
34
31
|
hasChanges: false,
|
|
35
|
-
nextState:
|
|
32
|
+
nextState: {
|
|
33
|
+
...distantEmptyState, // verify that we indeed have the new fields in the nextState
|
|
34
|
+
accounts: partialOneAccountDistantData.accounts,
|
|
35
|
+
},
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
38
|
test("on diffLocalToDistant with data (changes)", () => {
|
|
39
39
|
const diff = walletsync.diffLocalToDistant(emptyState, partialOneAccountDistantData);
|
|
40
40
|
expect(diff).toEqual({
|
|
41
41
|
hasChanges: true,
|
|
42
|
-
nextState:
|
|
42
|
+
nextState: {
|
|
43
|
+
...distantEmptyState, // verify that we indeed have the new fields in the nextState
|
|
44
|
+
accounts: [],
|
|
45
|
+
},
|
|
43
46
|
});
|
|
44
47
|
});
|
|
45
|
-
test("on resolveIncrementalUpdate (accept new accounts)", () =>
|
|
46
|
-
const diff =
|
|
48
|
+
test("on resolveIncrementalUpdate (accept new accounts)", async () => {
|
|
49
|
+
const diff = await walletsync.resolveIncrementalUpdate(dummyContext, emptyState, null, partialOneAccountDistantData);
|
|
47
50
|
if (diff.hasChanges) {
|
|
48
51
|
expect(diff.update.accountNames).toEqual({ hasChanges: false });
|
|
49
52
|
const firstaccount = diff.update.accounts.hasChanges
|
|
@@ -61,10 +64,13 @@ describe("the root WalletSyncDataManager can accept data that misses a new field
|
|
|
61
64
|
else {
|
|
62
65
|
expect(diff).toEqual({ hasChanges: true }); // we expected changes!
|
|
63
66
|
}
|
|
64
|
-
})
|
|
67
|
+
});
|
|
65
68
|
});
|
|
66
69
|
describe("the general module can accept data that are not yet understood and handled by an existing module", () => {
|
|
67
|
-
const emptyDistantDataWithExtra =
|
|
70
|
+
const emptyDistantDataWithExtra = {
|
|
71
|
+
...distantEmptyState,
|
|
72
|
+
fooBAR: true,
|
|
73
|
+
};
|
|
68
74
|
test("on the schema", () => {
|
|
69
75
|
const validated = walletsync.schema.parse(emptyDistantDataWithExtra);
|
|
70
76
|
expect(validated).toMatchObject(distantEmptyState);
|
|
@@ -79,21 +85,36 @@ describe("the general module can accept data that are not yet understood and han
|
|
|
79
85
|
});
|
|
80
86
|
});
|
|
81
87
|
test("on diffLocalToDistant with changes", () => {
|
|
82
|
-
const localData =
|
|
88
|
+
const localData = {
|
|
89
|
+
...emptyState,
|
|
90
|
+
accountNames: new Map([["foo", "bar"]]),
|
|
91
|
+
};
|
|
83
92
|
const latestState = emptyDistantDataWithExtra;
|
|
84
93
|
const diff = walletsync.diffLocalToDistant(localData, latestState);
|
|
85
94
|
expect(diff).toEqual({
|
|
86
95
|
hasChanges: true,
|
|
87
|
-
nextState:
|
|
96
|
+
nextState: { ...latestState, accountNames: { foo: "bar" } },
|
|
88
97
|
});
|
|
89
98
|
});
|
|
90
|
-
test("on resolveIncrementalUpdate with changes", () =>
|
|
91
|
-
const localData =
|
|
92
|
-
|
|
99
|
+
test("on resolveIncrementalUpdate with changes", async () => {
|
|
100
|
+
const localData = {
|
|
101
|
+
...emptyState,
|
|
102
|
+
accounts: genModuleState("accounts", 0),
|
|
103
|
+
};
|
|
104
|
+
const resolved = await walletsync.resolveIncrementalUpdate(dummyContext, localData,
|
|
93
105
|
// basically we verify the extra data are just going to be ignored
|
|
94
|
-
|
|
106
|
+
{
|
|
107
|
+
...distantEmptyState,
|
|
108
|
+
accountNames: { foo: "bar" },
|
|
109
|
+
fooBAR: true,
|
|
110
|
+
}, {
|
|
111
|
+
...distantEmptyState,
|
|
112
|
+
accountNames: { foo: "baz" },
|
|
113
|
+
fooBAR: false,
|
|
114
|
+
fooBAZ: { a: 42 },
|
|
115
|
+
});
|
|
95
116
|
expect(resolved).toMatchObject({ hasChanges: true });
|
|
96
|
-
})
|
|
117
|
+
});
|
|
97
118
|
});
|
|
98
119
|
function convertAccountToDescriptor(account) {
|
|
99
120
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.test.js","sourceRoot":"","sources":["../../../src/walletsync/__tests__/compatibility.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compatibility.test.js","sourceRoot":"","sources":["../../../src/walletsync/__tests__/compatibility.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,UAAwC,MAAM,UAAU,CAAC;AAGhE,MAAM,eAAe,GAAe;IAClC,GAAG,UAAU;IACb,QAAQ,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,iBAAiB,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;AAEpF,QAAQ,CAAC,oHAAoH,EAAE,GAAG,EAAE;IAClI,MAAM,uBAAuB,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzE,MAAM,4BAA4B,GAAG;QACnC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;KACxE,CAAC;IAEF,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;QACzB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE;gBACT,GAAG,iBAAiB,EAAE,6DAA6D;gBACnF,QAAQ,EAAE,uBAAuB,CAAC,QAAQ;aAC3C;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,eAAe,EAAE,4BAA4B,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE;gBACT,GAAG,iBAAiB,EAAE,6DAA6D;gBACnF,QAAQ,EAAE,4BAA4B,CAAC,QAAQ;aAChD;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE;gBACT,GAAG,iBAAiB,EAAE,6DAA6D;gBACnF,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,wBAAwB,CACpD,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,4BAA4B,CAC7B,CAAC;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU;gBAClD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBACnC,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC,YAAY,CAAC;oBACrB,OAAO,EAAE,EAAE;oBACX,uBAAuB,EAAE,EAAE;iBAC5B;aACF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,uBAAuB;QACrE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kGAAkG,EAAE,GAAG,EAAE;IAChH,MAAM,yBAAyB,GAAG;QAChC,GAAG,iBAAiB;QACpB,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;QACzB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG,UAAU,CAAC;QAC7B,MAAM,WAAW,GAAG,yBAAyB,CAAC;QAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,WAAW;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG;YAChB,GAAG,UAAU;YACb,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACxC,CAAC;QACF,MAAM,WAAW,GAAG,yBAAyB,CAAC;QAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACnB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,EAAE,GAAG,WAAW,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,SAAS,GAAG;YAChB,GAAG,UAAU;YACb,QAAQ,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;SACxC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,wBAAwB,CACxD,YAAY,EACZ,SAAS;QACT,kEAAkE;QAClE;YACE,GAAG,iBAAiB;YACpB,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;YAC5B,MAAM,EAAE,IAAI;SACG,EACjB;YACE,GAAG,iBAAiB;YACpB,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;YAC5B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;SACF,CAClB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAWH,SAAS,0BAA0B,CAAC,OAAgB;IAClD,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC/B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
// cover generic cases with generative mocks
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
import { dummyContext } from "../__mocks__/environment";
|
|
12
3
|
import { emptyState, genState, convertLocalToDistantState, similarLocalState } from "../__mocks__";
|
|
13
4
|
import walletsync from "..";
|
|
@@ -19,18 +10,18 @@ describe("canonical cases", () => {
|
|
|
19
10
|
nextState: convertLocalToDistantState(emptyState),
|
|
20
11
|
});
|
|
21
12
|
});
|
|
22
|
-
it("detects no changes on empty incoming", () =>
|
|
13
|
+
it("detects no changes on empty incoming", async () => {
|
|
23
14
|
const localState = genState(5);
|
|
24
15
|
const latestState = convertLocalToDistantState(localState);
|
|
25
|
-
const resolved =
|
|
16
|
+
const resolved = await walletsync.resolveIncrementalUpdate(dummyContext, localState, latestState, null);
|
|
26
17
|
expect(resolved).toEqual({ hasChanges: false });
|
|
27
|
-
})
|
|
28
|
-
it("detects no changes on same incoming from empty local state", () =>
|
|
18
|
+
});
|
|
19
|
+
it("detects no changes on same incoming from empty local state", async () => {
|
|
29
20
|
const localState = genState(9);
|
|
30
21
|
const latestState = convertLocalToDistantState(localState);
|
|
31
|
-
const resolved =
|
|
22
|
+
const resolved = await walletsync.resolveIncrementalUpdate(dummyContext, emptyState, latestState, latestState);
|
|
32
23
|
expect(resolved).toEqual({ hasChanges: false });
|
|
33
|
-
})
|
|
24
|
+
});
|
|
34
25
|
// test many cases with different data sets
|
|
35
26
|
const runs = 127;
|
|
36
27
|
for (let n = 0; n < runs; n++) {
|
|
@@ -58,12 +49,12 @@ describe("canonical cases", () => {
|
|
|
58
49
|
});
|
|
59
50
|
});
|
|
60
51
|
let update = null;
|
|
61
|
-
it("resolves the transition (distI->distJ) from stateI", () =>
|
|
62
|
-
const resolved =
|
|
52
|
+
it("resolves the transition (distI->distJ) from stateI", async () => {
|
|
53
|
+
const resolved = await walletsync.resolveIncrementalUpdate(dummyContext, stateI, distI, distJ);
|
|
63
54
|
expect(resolved).toMatchObject({ hasChanges: true });
|
|
64
55
|
if (resolved.hasChanges)
|
|
65
56
|
update = resolved.update;
|
|
66
|
-
})
|
|
57
|
+
});
|
|
67
58
|
let newState = null;
|
|
68
59
|
it("applies the transition (distI->distJ), assert that from stateI it gets you to stateJ", () => {
|
|
69
60
|
if (!update) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.test.js","sourceRoot":"","sources":["../../../src/walletsync/__tests__/generic.test.ts"],"names":[],"mappings":"AAAA,4CAA4C
|
|
1
|
+
{"version":3,"file":"generic.test.js","sourceRoot":"","sources":["../../../src/walletsync/__tests__/generic.test.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 manager from "../../modules/accountNames";
|
|
11
2
|
const dummyContext = {
|
|
12
3
|
getAccountBridge: () => {
|
|
@@ -90,7 +81,7 @@ describe("accountNames' WalletSyncDataManager", () => {
|
|
|
90
81
|
},
|
|
91
82
|
});
|
|
92
83
|
});
|
|
93
|
-
it("should resolve to no op if no changes", () =>
|
|
84
|
+
it("should resolve to no op if no changes", async () => {
|
|
94
85
|
const localData = new Map([["1", "a"]]);
|
|
95
86
|
const latestState = {
|
|
96
87
|
"1": "a",
|
|
@@ -98,12 +89,12 @@ describe("accountNames' WalletSyncDataManager", () => {
|
|
|
98
89
|
const incomingState = {
|
|
99
90
|
"1": "a",
|
|
100
91
|
};
|
|
101
|
-
const diff =
|
|
92
|
+
const diff = await manager.resolveIncrementalUpdate(dummyContext, localData, latestState, incomingState);
|
|
102
93
|
expect(diff).toEqual({
|
|
103
94
|
hasChanges: false,
|
|
104
95
|
});
|
|
105
|
-
})
|
|
106
|
-
it("should resolve to a new name addition with the full state", () =>
|
|
96
|
+
});
|
|
97
|
+
it("should resolve to a new name addition with the full state", async () => {
|
|
107
98
|
const localData = new Map([["1", "a"]]);
|
|
108
99
|
const latestState = {
|
|
109
100
|
"1": "a",
|
|
@@ -112,7 +103,7 @@ describe("accountNames' WalletSyncDataManager", () => {
|
|
|
112
103
|
"1": "a",
|
|
113
104
|
"2": "b",
|
|
114
105
|
};
|
|
115
|
-
const diff =
|
|
106
|
+
const diff = await manager.resolveIncrementalUpdate(dummyContext, localData, latestState, incomingState);
|
|
116
107
|
expect(diff).toEqual({
|
|
117
108
|
hasChanges: true,
|
|
118
109
|
update: {
|
|
@@ -122,8 +113,8 @@ describe("accountNames' WalletSyncDataManager", () => {
|
|
|
122
113
|
},
|
|
123
114
|
},
|
|
124
115
|
});
|
|
125
|
-
})
|
|
126
|
-
it("should resolve to a rename with the full state", () =>
|
|
116
|
+
});
|
|
117
|
+
it("should resolve to a rename with the full state", async () => {
|
|
127
118
|
const localData = new Map([
|
|
128
119
|
["1", "a"],
|
|
129
120
|
["2", "b"],
|
|
@@ -136,7 +127,7 @@ describe("accountNames' WalletSyncDataManager", () => {
|
|
|
136
127
|
"1": "a",
|
|
137
128
|
"2": "bbbb",
|
|
138
129
|
};
|
|
139
|
-
const diff =
|
|
130
|
+
const diff = await manager.resolveIncrementalUpdate(dummyContext, localData, latestState, incomingState);
|
|
140
131
|
expect(diff).toEqual({
|
|
141
132
|
hasChanges: true,
|
|
142
133
|
update: {
|
|
@@ -146,7 +137,7 @@ describe("accountNames' WalletSyncDataManager", () => {
|
|
|
146
137
|
},
|
|
147
138
|
},
|
|
148
139
|
});
|
|
149
|
-
})
|
|
140
|
+
});
|
|
150
141
|
it("applies an addition", () => {
|
|
151
142
|
const localData = new Map([["1", "a"]]);
|
|
152
143
|
const update = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountNames.test.js","sourceRoot":"","sources":["../../../../src/walletsync/__tests__/modules/accountNames.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accountNames.test.js","sourceRoot":"","sources":["../../../../src/walletsync/__tests__/modules/accountNames.test.ts"],"names":[],"mappings":"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"}
|