core-3nweb-client-lib 0.41.13 → 0.42.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.
- package/build/core/asmail/inbox/inbox-events.d.ts +16 -2
- package/build/core/asmail/inbox/inbox-events.js +91 -17
- package/build/core/asmail/inbox/index.d.ts +2 -0
- package/build/core/asmail/inbox/index.js +9 -2
- package/build/core/asmail/index.d.ts +2 -0
- package/build/core/asmail/index.js +6 -0
- package/build/core/index.d.ts +2 -0
- package/build/core/index.js +8 -0
- package/build/core/storage/index.d.ts +2 -19
- package/build/core/storage/index.js +10 -3
- package/build/core/storage/synced/remote-events.d.ts +2 -0
- package/build/core/storage/synced/remote-events.js +19 -3
- package/build/core/storage/synced/storage.d.ts +2 -0
- package/build/core/storage/synced/storage.js +7 -1
- package/build/lib-client/cryptor/cryptor-wasm.js +1 -1
- package/build/lib-client/cryptor/cryptor.wasm +0 -0
- package/build/lib-client/server-events.d.ts +1 -3
- package/build/lib-client/server-events.js +6 -34
- package/build/lib-client/xsp-fs/common.d.ts +2 -0
- package/build/lib-client/xsp-fs/common.js +3 -1
- package/build/lib-common/ipc/ws-ipc.js +2 -2
- package/build/lib-index.d.ts +1 -1
- package/build/lib-index.js +1 -2
- package/package.json +1 -1
- package/{test-data-10-1759442625007/util/logs/2025-10-02.log.txt → test-data-1-1759545630658/util/logs/2025-10-04.log.txt} +10 -7
- package/test-data-10-1759545670471/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-11-1759545670472/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-12-1759545674484/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-13-1759545675527/util/logs/2025-10-04.log.txt +28 -0
- package/test-data-2-1759545630661/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-3-1759545636022/util/logs/2025-10-04.log.txt +28 -0
- package/test-data-4-1759545642255/util/logs/2025-10-04.log.txt +28 -0
- package/test-data-5-1759545652091/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-6-1759545654150/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-7-1759545656281/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-8-1759545665798/util/logs/2025-10-04.log.txt +14 -0
- package/test-data-9-1759545666746/util/logs/2025-10-04.log.txt +28 -0
- package/test-data-1-1759442588983/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-11-1759442625008/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-12-1759442628713/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-13-1759442629512/util/logs/2025-10-02.log.txt +0 -11
- package/test-data-2-1759442588985/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-3-1759442593521/util/logs/2025-10-02.log.txt +0 -11
- package/test-data-4-1759442599428/util/logs/2025-10-02.log.txt +0 -11
- package/test-data-5-1759442608549/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-6-1759442610426/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-7-1759442612369/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-8-1759442620927/util/logs/2025-10-02.log.txt +0 -6
- package/test-data-9-1759442621732/util/logs/2025-10-02.log.txt +0 -11
|
@@ -14,8 +14,22 @@ type Observer<T> = web3n.Observer<T>;
|
|
|
14
14
|
* Hence, this should do restarts to server around wakeup events.
|
|
15
15
|
*/
|
|
16
16
|
export declare class InboxEvents {
|
|
17
|
-
|
|
18
|
-
private
|
|
17
|
+
private readonly getMsg;
|
|
18
|
+
private readonly rmMsg;
|
|
19
|
+
private readonly logError;
|
|
20
|
+
private readonly newMsgs;
|
|
21
|
+
private readonly newMsg$;
|
|
22
|
+
private listeningProc;
|
|
23
|
+
private readonly makeServerEvents;
|
|
24
|
+
private networkActive;
|
|
25
|
+
constructor(msgReceiver: MailRecipient, getMsg: (msgId: string) => Promise<IncomingMessage>, rmMsg: (msgId: string) => Promise<void>, logError: LogError);
|
|
26
|
+
private startListening;
|
|
19
27
|
subscribe<T>(event: InboxEventType, observer: Observer<T>): () => void;
|
|
28
|
+
close(): void;
|
|
29
|
+
get isListening(): boolean;
|
|
30
|
+
private shouldRestartAfterErr;
|
|
31
|
+
private stopListening;
|
|
32
|
+
suspendNetworkActivity(): void;
|
|
33
|
+
resumeNetworkActivity(): void;
|
|
20
34
|
}
|
|
21
35
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2017, 2019, 2022, 2024 3NSoft Inc.
|
|
3
|
+
Copyright (C) 2017, 2019, 2022, 2024 - 2025 3NSoft Inc.
|
|
4
4
|
|
|
5
5
|
This program is free software: you can redistribute it and/or modify it under
|
|
6
6
|
the terms of the GNU General Public License as published by the Free Software
|
|
@@ -13,13 +13,16 @@
|
|
|
13
13
|
See the GNU General Public License for more details.
|
|
14
14
|
|
|
15
15
|
You should have received a copy of the GNU General Public License along with
|
|
16
|
-
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
17
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
19
|
exports.InboxEvents = void 0;
|
|
20
|
+
const rxjs_1 = require("rxjs");
|
|
19
21
|
const retrieval_1 = require("../../../lib-common/service-api/asmail/retrieval");
|
|
20
22
|
const server_events_1 = require("../../../lib-client/server-events");
|
|
21
23
|
const operators_1 = require("rxjs/operators");
|
|
22
24
|
const utils_for_observables_1 = require("../../../lib-common/utils-for-observables");
|
|
25
|
+
const sleep_1 = require("../../../lib-common/processes/sleep");
|
|
23
26
|
const SERVER_EVENTS_RESTART_WAIT_SECS = 5;
|
|
24
27
|
/**
|
|
25
28
|
* Instance of this class handles event subscription from UI side. It observes
|
|
@@ -32,25 +35,56 @@ const SERVER_EVENTS_RESTART_WAIT_SECS = 5;
|
|
|
32
35
|
* Hence, this should do restarts to server around wakeup events.
|
|
33
36
|
*/
|
|
34
37
|
class InboxEvents {
|
|
35
|
-
constructor(msgReceiver, getMsg, logError) {
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
(0, operators_1.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
constructor(msgReceiver, getMsg, rmMsg, logError) {
|
|
39
|
+
this.getMsg = getMsg;
|
|
40
|
+
this.rmMsg = rmMsg;
|
|
41
|
+
this.logError = logError;
|
|
42
|
+
this.newMsgs = new rxjs_1.Subject();
|
|
43
|
+
this.newMsg$ = this.newMsgs.asObservable().pipe((0, operators_1.share)());
|
|
44
|
+
this.listeningProc = undefined;
|
|
45
|
+
this.networkActive = true;
|
|
46
|
+
this.makeServerEvents = () => new server_events_1.ServerEvents(() => msgReceiver.openEventSource(this.logError), this.logError);
|
|
47
|
+
this.startListening();
|
|
48
|
+
Object.seal(this);
|
|
49
|
+
}
|
|
50
|
+
startListening() {
|
|
51
|
+
if (this.listeningProc || !this.networkActive) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
function clearListeningProc() {
|
|
55
|
+
if (this.listeningProc === sub) {
|
|
56
|
+
this.listeningProc = undefined;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const sub = this.makeServerEvents()
|
|
60
|
+
.observe(retrieval_1.msgRecievedCompletely.EVENT_NAME)
|
|
61
|
+
.pipe((0, operators_1.mergeMap)(async (ev) => {
|
|
44
62
|
try {
|
|
45
|
-
|
|
46
|
-
return msg;
|
|
63
|
+
return await this.getMsg(ev.msgId);
|
|
47
64
|
}
|
|
48
65
|
catch (err) {
|
|
49
|
-
|
|
50
|
-
await logError(err, `Cannot get message ${ev.msgId}`);
|
|
66
|
+
await this.rmMsg(ev.msgId);
|
|
67
|
+
await this.logError(err, `Cannot get message ${ev.msgId}, and removing it as a result`);
|
|
51
68
|
}
|
|
52
|
-
}
|
|
53
|
-
|
|
69
|
+
}, 5))
|
|
70
|
+
.subscribe({
|
|
71
|
+
next: msg => {
|
|
72
|
+
if (msg) {
|
|
73
|
+
this.newMsgs.next(msg);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
complete: () => {
|
|
77
|
+
clearListeningProc();
|
|
78
|
+
},
|
|
79
|
+
error: async (exc) => {
|
|
80
|
+
clearListeningProc();
|
|
81
|
+
if (this.shouldRestartAfterErr(exc)) {
|
|
82
|
+
await (0, sleep_1.sleep)(SERVER_EVENTS_RESTART_WAIT_SECS);
|
|
83
|
+
this.startListening();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
this.listeningProc = sub;
|
|
54
88
|
}
|
|
55
89
|
subscribe(event, observer) {
|
|
56
90
|
if (event === 'message') {
|
|
@@ -61,6 +95,46 @@ class InboxEvents {
|
|
|
61
95
|
throw new Error(`Event type ${event} is unknown to inbox`);
|
|
62
96
|
}
|
|
63
97
|
}
|
|
98
|
+
close() {
|
|
99
|
+
this.newMsgs.complete();
|
|
100
|
+
}
|
|
101
|
+
get isListening() {
|
|
102
|
+
return !!this.listeningProc;
|
|
103
|
+
}
|
|
104
|
+
shouldRestartAfterErr(exc) {
|
|
105
|
+
if (!exc.runtimeException) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
if (exc.type === 'connect') {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
else if (exc.type === 'http-request') {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
else if (exc.type === 'websocket') {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
stopListening() {
|
|
122
|
+
var _a;
|
|
123
|
+
(_a = this.listeningProc) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
124
|
+
this.listeningProc = undefined;
|
|
125
|
+
}
|
|
126
|
+
suspendNetworkActivity() {
|
|
127
|
+
this.networkActive = false;
|
|
128
|
+
if (this.isListening) {
|
|
129
|
+
this.stopListening();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
resumeNetworkActivity() {
|
|
133
|
+
this.networkActive = true;
|
|
134
|
+
if (!this.isListening) {
|
|
135
|
+
this.startListening();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
64
138
|
}
|
|
65
139
|
exports.InboxEvents = InboxEvents;
|
|
66
140
|
Object.freeze(InboxEvents.prototype);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2015 - 2020, 2022 3NSoft Inc.
|
|
3
|
+
Copyright (C) 2015 - 2020, 2022, 2025 3NSoft Inc.
|
|
4
4
|
|
|
5
5
|
This program is free software: you can redistribute it and/or modify it under
|
|
6
6
|
the terms of the GNU General Public License as published by the Free Software
|
|
@@ -51,7 +51,7 @@ class InboxOnServer {
|
|
|
51
51
|
this.logError = logError;
|
|
52
52
|
this.procs = new synced_1.NamedProcs();
|
|
53
53
|
this.recentlyOpenedMsgs = (0, timed_cache_1.makeTimedCache)(60 * 1000);
|
|
54
|
-
this.inboxEvents = new inbox_events_1.InboxEvents(this.msgReceiver, this.getMsg.bind(this), this.logError);
|
|
54
|
+
this.inboxEvents = new inbox_events_1.InboxEvents(this.msgReceiver, this.getMsg.bind(this), this.removeMsg.bind(this), this.logError);
|
|
55
55
|
Object.seal(this);
|
|
56
56
|
}
|
|
57
57
|
static async makeAndStart(cachePath, syncedFS, r) {
|
|
@@ -71,6 +71,7 @@ class InboxOnServer {
|
|
|
71
71
|
}
|
|
72
72
|
async close() {
|
|
73
73
|
this.index.stopSyncing();
|
|
74
|
+
this.inboxEvents.close();
|
|
74
75
|
}
|
|
75
76
|
makeCAP() {
|
|
76
77
|
const service = {
|
|
@@ -309,6 +310,12 @@ class InboxOnServer {
|
|
|
309
310
|
}
|
|
310
311
|
return m;
|
|
311
312
|
}
|
|
313
|
+
suspendNetworkActivity() {
|
|
314
|
+
this.inboxEvents.suspendNetworkActivity();
|
|
315
|
+
}
|
|
316
|
+
resumeNetworkActivity() {
|
|
317
|
+
this.inboxEvents.resumeNetworkActivity();
|
|
318
|
+
}
|
|
312
319
|
}
|
|
313
320
|
exports.InboxOnServer = InboxOnServer;
|
|
314
321
|
Object.freeze(InboxOnServer.prototype);
|
|
@@ -129,6 +129,12 @@ class ASMail {
|
|
|
129
129
|
await this.keyring.close();
|
|
130
130
|
await this.sendingParams.close();
|
|
131
131
|
}
|
|
132
|
+
suspendNetworkActivity() {
|
|
133
|
+
this.inbox.suspendNetworkActivity();
|
|
134
|
+
}
|
|
135
|
+
resumeNetworkActivity() {
|
|
136
|
+
this.inbox.resumeNetworkActivity();
|
|
137
|
+
}
|
|
132
138
|
}
|
|
133
139
|
exports.ASMail = ASMail;
|
|
134
140
|
Object.freeze(ASMail.prototype);
|
package/build/core/index.d.ts
CHANGED
package/build/core/index.js
CHANGED
|
@@ -326,6 +326,14 @@ class Core {
|
|
|
326
326
|
getStorages() {
|
|
327
327
|
return this.storages.wrap();
|
|
328
328
|
}
|
|
329
|
+
async onDeviceSystemSuspend() {
|
|
330
|
+
this.asmail.suspendNetworkActivity();
|
|
331
|
+
this.storages.suspendNetworkActivity();
|
|
332
|
+
}
|
|
333
|
+
async onDeviceSystemResume() {
|
|
334
|
+
this.storages.resumeNetworkActivity();
|
|
335
|
+
this.asmail.resumeNetworkActivity();
|
|
336
|
+
}
|
|
329
337
|
}
|
|
330
338
|
exports.Core = Core;
|
|
331
339
|
Object.freeze(Core.prototype);
|
|
@@ -46,6 +46,8 @@ export declare class Storages implements FactoryOfFSs {
|
|
|
46
46
|
* @param dst is a path starting with core app folder name
|
|
47
47
|
*/
|
|
48
48
|
migrateCoreAppDataOnFirstRun(type: StorageType, src: string, dst: string): Promise<void>;
|
|
49
|
+
suspendNetworkActivity(): void;
|
|
50
|
+
resumeNetworkActivity(): void;
|
|
49
51
|
}
|
|
50
52
|
export interface FactoryOfFSs {
|
|
51
53
|
makeSyncedFSForApp(appFolder: string): Promise<WritableFS>;
|
|
@@ -57,23 +59,4 @@ export interface FactoryOfFSs {
|
|
|
57
59
|
export declare function reverseDomain(domain: string): string;
|
|
58
60
|
type Service = web3n.storage.Service;
|
|
59
61
|
type StoragePolicy = web3n.caps.common.StoragePolicy;
|
|
60
|
-
export declare class PerAppStorage {
|
|
61
|
-
private readonly appFSsFactory;
|
|
62
|
-
private readonly policy;
|
|
63
|
-
private readonly appFSs;
|
|
64
|
-
private readonly revAppDomain;
|
|
65
|
-
constructor(appFSsFactory: FactoryOfFSs, appDomain: string, policy: StoragePolicy);
|
|
66
|
-
wrap(): ReturnType<Storages['makeStorageCAP']>;
|
|
67
|
-
private getAppSyncedFS;
|
|
68
|
-
private getAppLocalFS;
|
|
69
|
-
/**
|
|
70
|
-
* This throws up, if given file system is not allowed to be opened.
|
|
71
|
-
* @param appFolder
|
|
72
|
-
* @param type
|
|
73
|
-
*/
|
|
74
|
-
private ensureAppFSAllowed;
|
|
75
|
-
private getUserFS;
|
|
76
|
-
private getSysFS;
|
|
77
|
-
private close;
|
|
78
|
-
}
|
|
79
62
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2015 - 2017, 2019 - 2022 3NSoft Inc.
|
|
3
|
+
Copyright (C) 2015 - 2017, 2019 - 2022, 2025 3NSoft Inc.
|
|
4
4
|
|
|
5
5
|
This program is free software: you can redistribute it and/or modify it under
|
|
6
6
|
the terms of the GNU General Public License as published by the Free Software
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.
|
|
19
|
+
exports.Storages = void 0;
|
|
20
20
|
exports.reverseDomain = reverseDomain;
|
|
21
21
|
const fs_1 = require("../../lib-client/xsp-fs/fs");
|
|
22
22
|
const storage_1 = require("./synced/storage");
|
|
@@ -386,6 +386,14 @@ class Storages {
|
|
|
386
386
|
await this.local.migrateCoreAppDataOnFirstRun(src, dst);
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
|
+
suspendNetworkActivity() {
|
|
390
|
+
var _a;
|
|
391
|
+
(_a = this.synced) === null || _a === void 0 ? void 0 : _a.storage.suspendNetworkActivity();
|
|
392
|
+
}
|
|
393
|
+
resumeNetworkActivity() {
|
|
394
|
+
var _a;
|
|
395
|
+
(_a = this.synced) === null || _a === void 0 ? void 0 : _a.storage.resumeNetworkActivity();
|
|
396
|
+
}
|
|
389
397
|
}
|
|
390
398
|
exports.Storages = Storages;
|
|
391
399
|
Object.freeze(Storages.prototype);
|
|
@@ -482,7 +490,6 @@ class PerAppStorage {
|
|
|
482
490
|
this.appFSs.clear();
|
|
483
491
|
}
|
|
484
492
|
}
|
|
485
|
-
exports.PerAppStorage = PerAppStorage;
|
|
486
493
|
Object.freeze(PerAppStorage.prototype);
|
|
487
494
|
Object.freeze(PerAppStorage);
|
|
488
495
|
async function applyPolicyToFSItem(fsi, policy, path) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2019 - 2020, 2022 3NSoft Inc.
|
|
3
|
+
Copyright (C) 2019 - 2020, 2022, 2025 3NSoft Inc.
|
|
4
4
|
|
|
5
5
|
This program is free software: you can redistribute it and/or modify it under
|
|
6
6
|
the terms of the GNU General Public License as published by the Free Software
|
|
@@ -36,8 +36,14 @@ class RemoteEvents {
|
|
|
36
36
|
Object.seal(this);
|
|
37
37
|
}
|
|
38
38
|
startAbsorbingRemoteEvents() {
|
|
39
|
-
const serverEvents = new server_events_1.ServerEvents(() => this.remoteStorage.openEventSource(this.logError),
|
|
40
|
-
|
|
39
|
+
const serverEvents = new server_events_1.ServerEvents(() => this.remoteStorage.openEventSource(this.logError),
|
|
40
|
+
// SERVER_EVENTS_RESTART_WAIT_SECS,
|
|
41
|
+
this.logError);
|
|
42
|
+
this.absorbingRemoteEventsProc = (0, rxjs_1.merge)(this.absorbObjChange(serverEvents), this.absorbObjRemoval(serverEvents),
|
|
43
|
+
// XXX commenting out to see if unknownEvent exception goes away
|
|
44
|
+
// Is server doesn't know it?
|
|
45
|
+
// this.absorbObjVersionArchival(serverEvents),
|
|
46
|
+
this.absorbArchVersionRemoval(serverEvents))
|
|
41
47
|
.subscribe({
|
|
42
48
|
next: noop,
|
|
43
49
|
error: async (err) => {
|
|
@@ -117,6 +123,16 @@ class RemoteEvents {
|
|
|
117
123
|
});
|
|
118
124
|
}, 1));
|
|
119
125
|
}
|
|
126
|
+
suspendNetworkActivity() {
|
|
127
|
+
// XXX
|
|
128
|
+
// - set haveNetwork flag to false
|
|
129
|
+
// - press breaks on events from server
|
|
130
|
+
}
|
|
131
|
+
resumeNetworkActivity() {
|
|
132
|
+
// XXX
|
|
133
|
+
// - set haveNetwork flag to true
|
|
134
|
+
// - restart watching events from server
|
|
135
|
+
}
|
|
120
136
|
}
|
|
121
137
|
exports.RemoteEvents = RemoteEvents;
|
|
122
138
|
Object.freeze(RemoteEvents.prototype);
|
|
@@ -53,5 +53,7 @@ export declare class SyncedStore implements ISyncedStorage {
|
|
|
53
53
|
saveObj(objId: ObjId, version: number, encSub: Subscribe): Promise<void>;
|
|
54
54
|
removeObj(objId: string): Promise<void>;
|
|
55
55
|
close(): Promise<void>;
|
|
56
|
+
suspendNetworkActivity(): void;
|
|
57
|
+
resumeNetworkActivity(): void;
|
|
56
58
|
}
|
|
57
59
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2015 - 2020, 2022 3NSoft Inc.
|
|
3
|
+
Copyright (C) 2015 - 2020, 2022, 2025 3NSoft Inc.
|
|
4
4
|
|
|
5
5
|
This program is free software: you can redistribute it and/or modify it under
|
|
6
6
|
the terms of the GNU General Public License as published by the Free Software
|
|
@@ -248,6 +248,12 @@ class SyncedStore {
|
|
|
248
248
|
await this.logError(err);
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
+
suspendNetworkActivity() {
|
|
252
|
+
this.remoteEvents.suspendNetworkActivity();
|
|
253
|
+
}
|
|
254
|
+
resumeNetworkActivity() {
|
|
255
|
+
this.remoteEvents.resumeNetworkActivity();
|
|
256
|
+
}
|
|
251
257
|
}
|
|
252
258
|
exports.SyncedStore = SyncedStore;
|
|
253
259
|
Object.freeze(SyncedStore.prototype);
|