core-3nweb-client-lib 0.42.8 → 0.42.10
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/build/core/asmail/delivery/index.js +2 -1
- package/build/core/asmail/index.js +2 -1
- package/build/core/asmail/sending-params/invitations-anon.js +3 -2
- package/build/core/index.d.ts +6 -0
- package/build/core/index.js +14 -0
- package/build/core/storage/index.d.ts +3 -0
- package/build/core/storage/index.js +27 -0
- package/package.json +1 -1
|
@@ -60,7 +60,8 @@ class Delivery {
|
|
|
60
60
|
}
|
|
61
61
|
static async makeAndStart(fs, r) {
|
|
62
62
|
const delivery = new Delivery(fs, r);
|
|
63
|
-
|
|
63
|
+
delivery.restartDeliveryOfMsgsAtStartup()
|
|
64
|
+
.catch(err => delivery.r.logError(err));
|
|
64
65
|
return delivery;
|
|
65
66
|
}
|
|
66
67
|
makeCAP() {
|
|
@@ -42,7 +42,8 @@ class ASMail {
|
|
|
42
42
|
async init(address, getSigner, syncedFS, localFS, getStorages, makeResolver, config, keyring) {
|
|
43
43
|
try {
|
|
44
44
|
this.address = address;
|
|
45
|
-
|
|
45
|
+
// XXX this should be part of proper syncing logic
|
|
46
|
+
// await getRemoteFolderChanges(syncedFS);
|
|
46
47
|
this.config = config;
|
|
47
48
|
this.keyring = keyring;
|
|
48
49
|
await this.setupSendingParams(syncedFS);
|
|
@@ -31,8 +31,9 @@ class AnonymousInvites {
|
|
|
31
31
|
static async makeAndInit(file, anonInvitesOnServer) {
|
|
32
32
|
const anonInvites = new AnonymousInvites(anonInvitesOnServer);
|
|
33
33
|
await anonInvites.fileProc.start(file, () => anonInvites.toFileJSON());
|
|
34
|
-
|
|
35
|
-
await anonInvites.
|
|
34
|
+
// XXX these are part of proper syncing logic
|
|
35
|
+
// await anonInvites.absorbRemoteChanges();
|
|
36
|
+
// await anonInvites.syncServiceSetting();
|
|
36
37
|
return anonInvites;
|
|
37
38
|
}
|
|
38
39
|
async onFileEvent(ev) {
|
package/build/core/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { NetClient } from '../lib-client/request-utils';
|
|
|
4
4
|
import { ServiceLocatorMaker } from '../lib-client/service-locator';
|
|
5
5
|
type RequestedCAPs = web3n.caps.common.RequestedCAPs;
|
|
6
6
|
type W3N = web3n.caps.common.W3N;
|
|
7
|
+
type ProgressCB = web3n.startup.ProgressCB;
|
|
7
8
|
export interface CoreConf {
|
|
8
9
|
dataDir: string;
|
|
9
10
|
signUpUrl: string;
|
|
@@ -29,6 +30,11 @@ export declare class Core {
|
|
|
29
30
|
coreInit: Promise<string>;
|
|
30
31
|
coreAppsInit: Promise<void>;
|
|
31
32
|
};
|
|
33
|
+
startDirectlyFromCache(userId: string, storageKey: Uint8Array): Promise<{
|
|
34
|
+
watchBoot: (obs: web3n.startup.BootProcessObserver) => (() => void);
|
|
35
|
+
coreInit: Promise<void>;
|
|
36
|
+
} | undefined>;
|
|
37
|
+
getRootKey(user: string, pass: string, progressCB: ProgressCB): Promise<Uint8Array | undefined>;
|
|
32
38
|
private initForNewUser;
|
|
33
39
|
private initForExistingUserWithoutCache;
|
|
34
40
|
private initForExistingUserWithCache;
|
package/build/core/index.js
CHANGED
|
@@ -76,6 +76,20 @@ class Core {
|
|
|
76
76
|
return { coreInit, coreAppsInit, capsForStartup };
|
|
77
77
|
}
|
|
78
78
|
;
|
|
79
|
+
async startDirectlyFromCache(userId, storageKey) {
|
|
80
|
+
const { promise: midPromise, resolve: midDone } = (0, deferred_1.defer)();
|
|
81
|
+
const { watchBoot, emitBootEvent } = makeForBootEvents();
|
|
82
|
+
const keyOpened = await this.initForExistingUserWithCache(userId, async () => storageKey, midDone, emitBootEvent);
|
|
83
|
+
if (keyOpened) {
|
|
84
|
+
const coreInit = midPromise.then(idManager => {
|
|
85
|
+
this.idManager = idManager;
|
|
86
|
+
});
|
|
87
|
+
return { coreInit, watchBoot };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
getRootKey(user, pass, progressCB) {
|
|
91
|
+
return this.storages.getRootKey(user, pass, progressCB, this.cryptor.cryptor);
|
|
92
|
+
}
|
|
79
93
|
async initForNewUser(u, done, emitBootEvent) {
|
|
80
94
|
var _a;
|
|
81
95
|
emitBootEvent({
|
|
@@ -7,9 +7,11 @@ import { AsyncSBoxCryptor } from 'xsp-files';
|
|
|
7
7
|
import { StoragePathForUser } from '../app-files';
|
|
8
8
|
import { LogError } from '../../lib-client/logging/log-to-file';
|
|
9
9
|
import { MakeNet } from '..';
|
|
10
|
+
import { Cryptor } from '../../cryptors';
|
|
10
11
|
type WritableFS = web3n.files.WritableFS;
|
|
11
12
|
type StorageType = web3n.storage.StorageType;
|
|
12
13
|
type FSItem = web3n.files.FSItem;
|
|
14
|
+
type ProgressCB = web3n.startup.ProgressCB;
|
|
13
15
|
export declare class Storages implements FactoryOfFSs {
|
|
14
16
|
private cryptor;
|
|
15
17
|
private storageDirForUser;
|
|
@@ -31,6 +33,7 @@ export declare class Storages implements FactoryOfFSs {
|
|
|
31
33
|
* This is a storage getter for links and linking in synced storage.
|
|
32
34
|
*/
|
|
33
35
|
private storageGetterForSyncedStorage;
|
|
36
|
+
getRootKey(user: string, pass: string, progressCB: ProgressCB, cryptor: Cryptor): Promise<Uint8Array | undefined>;
|
|
34
37
|
startInitFromCache(user: string, keyGen: GenerateKey, makeNet: MakeNet, resolver: ServiceLocator, logError: LogError): Promise<((getSigner: GetSigner) => void) | undefined>;
|
|
35
38
|
initFromRemote(user: string, getSigner: GetSigner, generateKey: GenerateKey, makeNet: MakeNet, resolver: ServiceLocator, logError: LogError): Promise<boolean>;
|
|
36
39
|
initFreshForNewUser(user: string, getSigner: GetSigner, params: ScryptGenParams, key: Uint8Array, makeNet: MakeNet, resolver: ServiceLocator, logError: LogError): Promise<boolean>;
|
|
@@ -18,9 +18,11 @@
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.Storages = void 0;
|
|
20
20
|
exports.reverseDomain = reverseDomain;
|
|
21
|
+
const sign_in_1 = require("../startup/sign-in");
|
|
21
22
|
const fs_1 = require("../../lib-client/xsp-fs/fs");
|
|
22
23
|
const storage_1 = require("./synced/storage");
|
|
23
24
|
const storage_2 = require("./local/storage");
|
|
25
|
+
const key_derivation_1 = require("../../lib-client/key-derivation");
|
|
24
26
|
const file_1 = require("../../lib-common/exceptions/file");
|
|
25
27
|
const fs_collection_1 = require("../../lib-client/fs-utils/fs-collection");
|
|
26
28
|
const async_iter_1 = require("../../lib-common/async-iter");
|
|
@@ -131,6 +133,20 @@ class StorageAndFS {
|
|
|
131
133
|
}
|
|
132
134
|
return s;
|
|
133
135
|
}
|
|
136
|
+
async canKeyOpenRootObj(key) {
|
|
137
|
+
try {
|
|
138
|
+
await fs_1.XspFS.fromExistingRoot(this.storage, key);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
if (err.failedCipherVerification) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
throw err;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
134
150
|
/**
|
|
135
151
|
* This creates app data folder.
|
|
136
152
|
* Folder objects are uploaded, if this is a synced storage.
|
|
@@ -262,6 +278,17 @@ class Storages {
|
|
|
262
278
|
}
|
|
263
279
|
};
|
|
264
280
|
}
|
|
281
|
+
async getRootKey(user, pass, progressCB, cryptor) {
|
|
282
|
+
var _a;
|
|
283
|
+
const storeKeyProgressCB = (0, sign_in_1.makeKeyGenProgressCB)(0, 99, progressCB);
|
|
284
|
+
const storageDir = this.storageDirForUser(user);
|
|
285
|
+
const params = await readRootKeyDerivParamsFromCache(storageDir);
|
|
286
|
+
if (!params) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
const key = await (0, key_derivation_1.deriveStorageSKey)(cryptor, pass, params, storeKeyProgressCB);
|
|
290
|
+
return (((_a = this.local) === null || _a === void 0 ? void 0 : _a.canKeyOpenRootObj(key)) ? key : undefined);
|
|
291
|
+
}
|
|
265
292
|
async startInitFromCache(user, keyGen, makeNet, resolver, logError) {
|
|
266
293
|
const storageDir = this.storageDirForUser(user);
|
|
267
294
|
const params = await readRootKeyDerivParamsFromCache(storageDir);
|