@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,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
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
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.shouldRetryImportAccount = exports.resolveWalletSyncDiffIntoSyncUpdate = exports.integrateNewAccountDescriptor = exports.diffWalletSyncState = void 0;
|
|
13
4
|
const zod_1 = require("zod");
|
|
@@ -29,7 +20,7 @@ const manager = {
|
|
|
29
20
|
let hasChanges = false;
|
|
30
21
|
// let's figure out the new local accounts
|
|
31
22
|
const added = [];
|
|
32
|
-
const distantServerAccountIds = new Set(
|
|
23
|
+
const distantServerAccountIds = new Set(latestState?.map(a => a.id) || []);
|
|
33
24
|
for (const account of localData.list) {
|
|
34
25
|
const id = account.id;
|
|
35
26
|
if (!distantServerAccountIds.has(id)) {
|
|
@@ -75,78 +66,76 @@ const manager = {
|
|
|
75
66
|
nextState,
|
|
76
67
|
};
|
|
77
68
|
},
|
|
78
|
-
resolveIncrementalUpdate(ctx, localData, latestState, incomingState) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
continue; // we actually have the account. ignore.
|
|
95
|
-
}
|
|
96
|
-
const accountDescriptor = incomingState.find(a => a.id === id);
|
|
97
|
-
if (!accountDescriptor) {
|
|
98
|
-
hasChanges = true; // at least we need to save the deletion
|
|
99
|
-
// we don't have the account anymore in the distant state. ignore.
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
const now = Date.now();
|
|
103
|
-
const shouldRetry = shouldRetryImportAccount(now - attemptsLastTimestamp, attempts);
|
|
104
|
-
if (shouldRetry) {
|
|
105
|
-
diff.added.push(accountDescriptor);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
// we don't retry so we preserve the non imported account for the future
|
|
109
|
-
nextNonImportedById.set(id, nonImported);
|
|
110
|
-
}
|
|
69
|
+
async resolveIncrementalUpdate(ctx, localData, latestState, incomingState) {
|
|
70
|
+
if (!incomingState) {
|
|
71
|
+
return { hasChanges: false }; // nothing to do, the data is no longer available
|
|
72
|
+
}
|
|
73
|
+
const diff = diffWalletSyncState(latestState, incomingState);
|
|
74
|
+
const existingIds = new Set(localData.list.map(a => a.id));
|
|
75
|
+
let hasChanges = false;
|
|
76
|
+
// non imported accounts are considered as "added" so we have opportunity to recheck them
|
|
77
|
+
const nonImportedById = new Map();
|
|
78
|
+
const nextNonImportedById = new Map();
|
|
79
|
+
for (const nonImported of localData.nonImportedAccountInfos) {
|
|
80
|
+
nonImportedById.set(nonImported.id, nonImported);
|
|
81
|
+
const { id, attempts, attemptsLastTimestamp } = nonImported;
|
|
82
|
+
if (existingIds.has(id) || diff.added.some(a => a.id === id)) {
|
|
83
|
+
hasChanges = true; // at least we need to save the deletion
|
|
84
|
+
continue; // we actually have the account. ignore.
|
|
111
85
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const { error } = resolved.failures[failedId];
|
|
118
|
-
hasChanges = true;
|
|
119
|
-
nextNonImportedById.set(failedId, {
|
|
120
|
-
id: failedId,
|
|
121
|
-
attempts: ((nonImported === null || nonImported === void 0 ? void 0 : nonImported.attempts) || 0) + 1,
|
|
122
|
-
attemptsLastTimestamp: Date.now(),
|
|
123
|
-
error: {
|
|
124
|
-
name: error.name,
|
|
125
|
-
message: error.message,
|
|
126
|
-
},
|
|
127
|
-
});
|
|
86
|
+
const accountDescriptor = incomingState.find(a => a.id === id);
|
|
87
|
+
if (!accountDescriptor) {
|
|
88
|
+
hasChanges = true; // at least we need to save the deletion
|
|
89
|
+
// we don't have the account anymore in the distant state. ignore.
|
|
90
|
+
continue;
|
|
128
91
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
else if (resolved.removed.length > 0) {
|
|
134
|
-
hasChanges = true;
|
|
135
|
-
}
|
|
92
|
+
const now = Date.now();
|
|
93
|
+
const shouldRetry = shouldRetryImportAccount(now - attemptsLastTimestamp, attempts);
|
|
94
|
+
if (shouldRetry) {
|
|
95
|
+
diff.added.push(accountDescriptor);
|
|
136
96
|
}
|
|
137
|
-
|
|
138
|
-
//
|
|
139
|
-
|
|
97
|
+
else {
|
|
98
|
+
// we don't retry so we preserve the non imported account for the future
|
|
99
|
+
nextNonImportedById.set(id, nonImported);
|
|
140
100
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
101
|
+
}
|
|
102
|
+
// filter out accounts we may already have
|
|
103
|
+
diff.added = diff.added.filter(a => !existingIds.has(a.id));
|
|
104
|
+
const resolved = await resolveWalletSyncDiffIntoSyncUpdate(existingIds, diff, ctx);
|
|
105
|
+
for (const failedId in resolved.failures) {
|
|
106
|
+
const nonImported = nonImportedById.get(failedId);
|
|
107
|
+
const { error } = resolved.failures[failedId];
|
|
108
|
+
hasChanges = true;
|
|
109
|
+
nextNonImportedById.set(failedId, {
|
|
110
|
+
id: failedId,
|
|
111
|
+
attempts: (nonImported?.attempts || 0) + 1,
|
|
112
|
+
attemptsLastTimestamp: Date.now(),
|
|
113
|
+
error: {
|
|
114
|
+
name: error.name,
|
|
115
|
+
message: error.message,
|
|
147
116
|
},
|
|
148
|
-
};
|
|
149
|
-
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (!hasChanges) {
|
|
120
|
+
if (resolved.added.length > 0) {
|
|
121
|
+
hasChanges = true;
|
|
122
|
+
}
|
|
123
|
+
else if (resolved.removed.length > 0) {
|
|
124
|
+
hasChanges = true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (!hasChanges) {
|
|
128
|
+
// nothing to do
|
|
129
|
+
return { hasChanges };
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
hasChanges: true,
|
|
133
|
+
update: {
|
|
134
|
+
removed: resolved.removed,
|
|
135
|
+
added: resolved.added,
|
|
136
|
+
nonImportedAccountInfos: Array.from(nextNonImportedById.values()),
|
|
137
|
+
},
|
|
138
|
+
};
|
|
150
139
|
},
|
|
151
140
|
applyUpdate(localData, update) {
|
|
152
141
|
const existingIds = new Set(localData.list.map(a => a.id));
|
|
@@ -197,48 +186,44 @@ exports.diffWalletSyncState = diffWalletSyncState;
|
|
|
197
186
|
* @param getAccountBridge: implementation of live-common's getAccountBridge (since this lib don't depends on live-common)
|
|
198
187
|
*
|
|
199
188
|
*/
|
|
200
|
-
function integrateNewAccountDescriptor(accountDescriptor, getAccountBridge, bridgeCache, blacklistedTokenIds) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
return synced;
|
|
214
|
-
});
|
|
189
|
+
async function integrateNewAccountDescriptor(accountDescriptor, getAccountBridge, bridgeCache, blacklistedTokenIds) {
|
|
190
|
+
// FIXME: in future, it should be part of the bridge to accept an AccountDescriptor. today we rely on accountDataToAccount to not duplicates its internal hacks to not break coin implementations but eventually this logic will have to be simplified/unified.
|
|
191
|
+
const [accountShaped] = (0, cross_1.accountDataToAccount)({ ...accountDescriptor, balance: "0", name: "" });
|
|
192
|
+
const bridge = getAccountBridge(accountShaped);
|
|
193
|
+
await bridgeCache.prepareCurrency(accountShaped.currency);
|
|
194
|
+
const syncConfig = {
|
|
195
|
+
paginationConfig: {},
|
|
196
|
+
blacklistedTokenIds,
|
|
197
|
+
};
|
|
198
|
+
const observable = bridge.sync(accountShaped, syncConfig);
|
|
199
|
+
const reduced = observable.pipe((0, rxjs_1.reduce)((a, f) => f(a), accountShaped));
|
|
200
|
+
const synced = await (0, rxjs_1.firstValueFrom)(reduced);
|
|
201
|
+
return synced;
|
|
215
202
|
}
|
|
216
203
|
exports.integrateNewAccountDescriptor = integrateNewAccountDescriptor;
|
|
217
204
|
/**
|
|
218
205
|
* logic related to {wallet sync data update -> local state} management
|
|
219
206
|
*/
|
|
220
|
-
function resolveWalletSyncDiffIntoSyncUpdate(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
return { removed, added, failures };
|
|
241
|
-
});
|
|
207
|
+
async function resolveWalletSyncDiffIntoSyncUpdate(existingIds, diff, { getAccountBridge, bridgeCache, blacklistedTokenIds }) {
|
|
208
|
+
const failures = {};
|
|
209
|
+
let added = (await (0, live_promise_1.promiseAllBatched)(3, diff.added, async (descriptor) => {
|
|
210
|
+
try {
|
|
211
|
+
const account = await integrateNewAccountDescriptor(descriptor, getAccountBridge, bridgeCache, blacklistedTokenIds);
|
|
212
|
+
return account;
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
failures[descriptor.id] = {
|
|
216
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
217
|
+
timestamp: Date.now(),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
})).filter(Boolean);
|
|
221
|
+
const addedIds = new Set(added.map(a => a.id));
|
|
222
|
+
// if some of the account ends up resolving one of the removed, we need to clean it up, this is the case if there were an implicit migration of account ids
|
|
223
|
+
const removed = diff.removed.filter(id => !addedIds.has(id));
|
|
224
|
+
// if some of the resolved are converging to the same account.id, we also remove them out
|
|
225
|
+
added = added.filter(a => !existingIds.has(a.id));
|
|
226
|
+
return { removed, added, failures };
|
|
242
227
|
}
|
|
243
228
|
exports.resolveWalletSyncDiffIntoSyncUpdate = resolveWalletSyncDiffIntoSyncUpdate;
|
|
244
229
|
const MINUTE = 60 * 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/walletsync/modules/accounts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/walletsync/modules/accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
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
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -21,22 +12,22 @@ exports.liveSlug = "live";
|
|
|
21
12
|
*/
|
|
22
13
|
function trustchainLifecycle({ cloudSyncApiBaseUrl, getCurrentWSState, }) {
|
|
23
14
|
return {
|
|
24
|
-
onTrustchainRotation: (trustchainSdk, oldTrustchain, memberCredentials) =>
|
|
25
|
-
const oldJwt =
|
|
26
|
-
return (newTrustchain) =>
|
|
15
|
+
onTrustchainRotation: async (trustchainSdk, oldTrustchain, memberCredentials) => {
|
|
16
|
+
const oldJwt = await trustchainSdk.withAuth(oldTrustchain, memberCredentials, jwt => Promise.resolve(jwt), "refresh");
|
|
17
|
+
return async (newTrustchain) => {
|
|
27
18
|
const api = (0, api_1.default)(cloudSyncApiBaseUrl);
|
|
28
19
|
// when trustchain rotates, we need to delete old data to inform members still on the old id
|
|
29
|
-
|
|
30
|
-
const newJwt =
|
|
20
|
+
await api.deleteData(oldJwt, exports.liveSlug, oldTrustchain);
|
|
21
|
+
const newJwt = await trustchainSdk.withAuth(newTrustchain, memberCredentials, jwt => Promise.resolve(jwt), "refresh");
|
|
31
22
|
// we then need to push back data to a new CloudSync id with the new encryption key
|
|
32
23
|
const { version, data } = getCurrentWSState();
|
|
33
24
|
if (!data)
|
|
34
25
|
return;
|
|
35
26
|
const cipher = (0, cipher_1.makeCipher)(trustchainSdk);
|
|
36
|
-
const payload =
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
}
|
|
27
|
+
const payload = await cipher.encrypt(newTrustchain, data);
|
|
28
|
+
await api.uploadData(newJwt, exports.liveSlug, version, payload, newTrustchain);
|
|
29
|
+
};
|
|
30
|
+
},
|
|
40
31
|
};
|
|
41
32
|
}
|
|
42
33
|
exports.trustchainLifecycle = trustchainLifecycle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trustchainLifecyle.js","sourceRoot":"","sources":["../../src/walletsync/trustchainLifecyle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trustchainLifecyle.js","sourceRoot":"","sources":["../../src/walletsync/trustchainLifecyle.ts"],"names":[],"mappings":";;;;;;AACA,2DAA+C;AAE/C,gDAAiD;AAEpC,QAAA,QAAQ,GAAG,MAAM,CAAC;AAE/B;;GAEG;AACH,SAAgB,mBAAmB,CAAC,EAClC,mBAAmB,EACnB,iBAAiB,GAIlB;IACC,OAAO;QACL,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE;YAC9E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CACzC,aAAa,EACb,iBAAiB,EACjB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAC3B,SAAS,CACV,CAAC;YACF,OAAO,KAAK,EAAC,aAAa,EAAC,EAAE;gBAC3B,MAAM,GAAG,GAAG,IAAA,aAAe,EAAC,mBAAmB,CAAC,CAAC;gBACjD,4FAA4F;gBAC5F,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAQ,EAAE,aAAa,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CACzC,aAAa,EACb,iBAAiB,EACjB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAC3B,SAAS,CACV,CAAC;gBACF,mFAAmF;gBACnF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,iBAAiB,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI;oBAAE,OAAO;gBAClB,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBAC1D,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YAC1E,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAlCD,kDAkCC"}
|
|
@@ -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 { getEnv } from "@ledgerhq/live-env";
|
|
11
2
|
import { makeCipher } from "../cipher";
|
|
12
3
|
import { MockSDK } from "@ledgerhq/ledger-key-ring-protocol/mockSdk";
|
|
@@ -32,19 +23,19 @@ describe("makeCipher on static data set", () => {
|
|
|
32
23
|
emojis: "🚀🌕🦄",
|
|
33
24
|
number: 42,
|
|
34
25
|
};
|
|
35
|
-
it("encrypt/decrypt works together", () =>
|
|
36
|
-
const encrypted =
|
|
37
|
-
const decrypted =
|
|
26
|
+
it("encrypt/decrypt works together", async () => {
|
|
27
|
+
const encrypted = await cipher.encrypt(trustchain, data);
|
|
28
|
+
const decrypted = await cipher.decrypt(trustchain, encrypted);
|
|
38
29
|
expect(decrypted).toMatchObject(data);
|
|
39
|
-
})
|
|
40
|
-
it("encrypt is stable (non regression on encrypted data)", () =>
|
|
41
|
-
const encrypted =
|
|
30
|
+
});
|
|
31
|
+
it("encrypt is stable (non regression on encrypted data)", async () => {
|
|
32
|
+
const encrypted = await cipher.encrypt(trustchain, data);
|
|
42
33
|
expect(encrypted).toBe("h2NUqbU0MKhNdVGptbXTrU39baq1SsXZTsW1VkYGpmY6v17wDJjKg2cgzAo8A5rStcW1hlpGtla/Wtm5Sv9ZJOjg");
|
|
43
|
-
})
|
|
44
|
-
it("decrypt is stable (non regression on decrypted data)", () =>
|
|
34
|
+
});
|
|
35
|
+
it("decrypt is stable (non regression on decrypted data)", async () => {
|
|
45
36
|
const encrypted = "h2NUqbU0MKhNdVGptbXTrU39baq1SsXZTsW1VkYGpmY6v17wDJjKg2cgzAo8A5rStcW1hlpGtla/Wtm5Sv9ZJOjg";
|
|
46
|
-
const decrypted =
|
|
37
|
+
const decrypted = await cipher.decrypt(trustchain, encrypted);
|
|
47
38
|
expect(decrypted).toEqual(data);
|
|
48
|
-
})
|
|
39
|
+
});
|
|
49
40
|
});
|
|
50
41
|
//# sourceMappingURL=cipher.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cipher.test.js","sourceRoot":"","sources":["../../../src/cloudsync/__tests__/cipher.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cipher.test.js","sourceRoot":"","sources":["../../../src/cloudsync/__tests__/cipher.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAErE,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC;QAChC,UAAU,EAAE,MAAM,CAAC,wBAAwB,CAAC;QAC5C,aAAa,EAAE,EAAE;QACjB,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE,cAAc;QACtB,uBAAuB,EAAE,qBAAqB;QAC9C,eAAe,EAAE,WAAW;KAC7B,CAAC;IACF,MAAM,IAAI,GAAG;QACX,GAAG,EAAE;YACH;gBACE,GAAG,EAAE,KAAK;aACX;YACD,CAAC;SACF;QACD,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACpB,0FAA0F,CAC3F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,SAAS,GACb,0FAA0F,CAAC;QAC7F,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|