core-3nweb-client-lib 0.25.6 → 0.26.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/README.md +2 -2
- package/build/api-defs/files.d.ts +23 -20
- package/build/core/asmail/config/common.js +2 -2
- package/build/core/asmail/delivery/index.js +4 -3
- package/build/core/asmail/delivery/msg.js +5 -4
- package/build/core/asmail/delivery/per-recipient-wip.js +2 -2
- package/build/core/asmail/inbox/attachments/fs.js +6 -0
- package/build/core/asmail/inbox/cached-msgs.js +2 -2
- package/build/core/asmail/inbox/inbox-events.js +2 -1
- package/build/core/asmail/inbox/index.js +2 -2
- package/build/core/asmail/inbox/msg-downloader.js +2 -2
- package/build/core/asmail/inbox/msg-indexing.js +3 -3
- package/build/core/asmail/inbox/msg-on-disk.js +2 -2
- package/build/core/asmail/keyring/keyring-storage.js +2 -2
- package/build/core/asmail/sending-params/own-params.js +2 -2
- package/build/core/asmail/sending-params/params-from-others.js +2 -2
- package/build/core/id-manager.js +2 -2
- package/build/core/sign-in.d.ts +5 -4
- package/build/core/sign-in.js +9 -11
- package/build/core/sign-up.d.ts +1 -0
- package/build/core/sign-up.js +7 -3
- package/build/core/storage/common/json-saving.d.ts +21 -0
- package/build/core/storage/common/json-saving.js +82 -0
- package/build/core/storage/common/obj-info-file.d.ts +43 -0
- package/build/core/storage/common/obj-info-file.js +119 -3
- package/build/core/storage/index.js +1 -1
- package/build/core/storage/local/obj-files-gc.js +8 -6
- package/build/core/storage/local/obj-files.d.ts +3 -3
- package/build/core/storage/local/obj-files.js +9 -9
- package/build/core/storage/local/obj-status.d.ts +9 -25
- package/build/core/storage/local/obj-status.js +28 -110
- package/build/core/storage/local/storage.d.ts +8 -1
- package/build/core/storage/local/storage.js +10 -2
- package/build/core/storage/synced/downloader.js +6 -5
- package/build/core/storage/synced/obj-files-gc.d.ts +1 -0
- package/build/core/storage/synced/obj-files-gc.js +44 -5
- package/build/core/storage/synced/obj-files.d.ts +13 -20
- package/build/core/storage/synced/obj-files.js +70 -48
- package/build/core/storage/synced/obj-status.d.ts +74 -15
- package/build/core/storage/synced/obj-status.js +291 -107
- package/build/core/storage/synced/remote-events.js +32 -26
- package/build/core/storage/synced/storage.d.ts +11 -1
- package/build/core/storage/synced/storage.js +28 -3
- package/build/core/storage/synced/upsyncer.d.ts +8 -7
- package/build/core/storage/synced/upsyncer.js +211 -163
- package/build/ipc-via-protobuf/asmail-cap.js +15 -32
- package/build/ipc-via-protobuf/connector-clients-side.js +2 -2
- package/build/ipc-via-protobuf/file.js +22 -14
- package/build/ipc-via-protobuf/fs.js +31 -33
- package/build/ipc-via-protobuf/startup-cap.js +5 -5
- package/build/lib-client/3nstorage/exceptions.d.ts +9 -8
- package/build/lib-client/3nstorage/exceptions.js +18 -9
- package/build/lib-client/3nstorage/service.js +10 -6
- package/build/lib-client/3nstorage/xsp-fs/common.d.ts +18 -4
- package/build/lib-client/3nstorage/xsp-fs/common.js +6 -1
- package/build/lib-client/3nstorage/xsp-fs/file-node.js +3 -3
- package/build/lib-client/3nstorage/xsp-fs/file.js +4 -1
- package/build/lib-client/3nstorage/xsp-fs/folder-node.js +27 -13
- package/build/lib-client/3nstorage/xsp-fs/fs.d.ts +11 -6
- package/build/lib-client/3nstorage/xsp-fs/fs.js +189 -58
- package/build/lib-client/3nstorage/xsp-fs/node-in-fs.d.ts +4 -0
- package/build/lib-client/3nstorage/xsp-fs/node-in-fs.js +51 -24
- package/build/lib-client/3nstorage/xsp-fs/node-persistence.js +2 -2
- package/build/lib-client/3nstorage/xsp-fs/xsp-payload-v1.js +2 -2
- package/build/lib-client/3nstorage/xsp-fs/xsp-payload-v2.js +3 -3
- package/build/lib-client/cryptor/cryptor-in-worker.js +4 -4
- package/build/lib-client/cryptor/cryptor-wasm.js +1 -1
- package/build/lib-client/cryptor/cryptor.wasm +0 -0
- package/build/lib-client/cryptor/in-proc-wasm.js +2 -2
- package/build/lib-client/files.js +2 -0
- package/build/lib-client/fs-collection.js +3 -2
- package/build/lib-client/logging/log-to-file.js +4 -4
- package/build/lib-client/objs-on-disk/file-writing-proc.js +2 -2
- package/build/lib-client/objs-on-disk/obj-folders.js +2 -2
- package/build/lib-client/request-utils.js +2 -2
- package/build/lib-client/server-events.js +4 -3
- package/build/lib-client/ws-utils.js +2 -2
- package/build/lib-common/async-fs-node.js +4 -3
- package/build/lib-common/byte-streaming/wrapping.js +17 -17
- package/build/lib-common/exceptions/file.js +6 -1
- package/build/lib-common/ipc/generic-ipc.js +2 -2
- package/build/lib-common/json-utils.js +2 -1
- package/build/lib-common/objs-on-disk/obj-file.js +4 -3
- package/build/lib-common/objs-on-disk/utils.js +2 -2
- package/build/lib-common/processes/deferred.d.ts +6 -0
- package/build/lib-common/processes/deferred.js +30 -0
- package/build/lib-common/processes/labelled-exec-pools.d.ts +33 -0
- package/build/lib-common/processes/labelled-exec-pools.js +141 -0
- package/build/lib-common/processes/pressure.d.ts +7 -0
- package/build/lib-common/processes/pressure.js +56 -0
- package/build/lib-common/processes/sleep.d.ts +1 -0
- package/build/lib-common/processes/sleep.js +26 -0
- package/build/lib-common/{processes.d.ts → processes/synced.d.ts} +0 -40
- package/build/lib-common/{processes.js → processes/synced.js} +187 -204
- package/build/lib-common/processes/timeout.d.ts +1 -0
- package/build/lib-common/processes/timeout.js +51 -0
- package/build/lib-common/service-api/3nstorage/owner.d.ts +5 -4
- package/build/lib-common/service-api/3nstorage/owner.js +3 -2
- package/build/lib-common/utils-for-observables.d.ts +15 -1
- package/build/lib-common/utils-for-observables.js +68 -17
- package/build/protos/asmail.proto.js +404 -78
- package/build/protos/file.proto.js +370 -44
- package/build/protos/fs.proto.js +404 -78
- package/package.json +4 -4
- package/protos/file.proto +10 -2
- package/protos/fs.proto +2 -2
- package/build/core/storage/synced/upsync-status.d.ts +0 -41
- package/build/core/storage/synced/upsync-status.js +0 -158
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function sleep(millis: number): Promise<void>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright (C) 2015 3NSoft Inc.
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify it under
|
|
6
|
+
the terms of the GNU General Public License as published by the Free Software
|
|
7
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
|
8
|
+
version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful, but
|
|
11
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
13
|
+
See the GNU General Public License for more details.
|
|
14
|
+
|
|
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/>.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.sleep = void 0;
|
|
20
|
+
function sleep(millis) {
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
setTimeout(resolve, millis).unref();
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
exports.sleep = sleep;
|
|
26
|
+
Object.freeze(exports);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export declare function sleep(millis: number): Promise<void>;
|
|
2
1
|
/**
|
|
3
2
|
* This represents a function that will create a promise, potentially starting
|
|
4
3
|
* some background process, only when it is called. Such wrap of code is needed
|
|
@@ -68,46 +67,7 @@ export declare class SingleProc {
|
|
|
68
67
|
private runIfIdle;
|
|
69
68
|
startOrChain<T>(action: Action<T>): Promise<T>;
|
|
70
69
|
}
|
|
71
|
-
export declare class DeduppedRunner<T> {
|
|
72
|
-
private readonly action;
|
|
73
|
-
private proc;
|
|
74
|
-
private waiting;
|
|
75
|
-
constructor(action: Action<T>);
|
|
76
|
-
trigger(): Promise<T>;
|
|
77
|
-
private startAction;
|
|
78
|
-
}
|
|
79
70
|
/**
|
|
80
71
|
* This wraps given function/method into syncing wrap.
|
|
81
72
|
*/
|
|
82
73
|
export declare function makeSyncedFunc<T extends Function>(syncProc: SingleProc, thisArg: any, func: T): T;
|
|
83
|
-
export interface Deferred<T> {
|
|
84
|
-
promise: Promise<T>;
|
|
85
|
-
resolve: (result?: T | PromiseLike<T>) => void;
|
|
86
|
-
reject: (err: any) => void;
|
|
87
|
-
}
|
|
88
|
-
export declare function defer<T>(): Deferred<T>;
|
|
89
|
-
export declare class PressureValve {
|
|
90
|
-
private stopper;
|
|
91
|
-
constructor();
|
|
92
|
-
toggle(flag: boolean): void;
|
|
93
|
-
pressWithError(err: any): void;
|
|
94
|
-
readonly pressure: () => Promise<void>;
|
|
95
|
-
}
|
|
96
|
-
export declare function callWithTimeout<T>(f: () => Promise<T>, timeout: number, timeoutErr: () => any): Promise<T>;
|
|
97
|
-
export declare class Worker<T> {
|
|
98
|
-
private readonly process;
|
|
99
|
-
private readonly stopPendingIn;
|
|
100
|
-
private readonly queue;
|
|
101
|
-
private readonly set;
|
|
102
|
-
private isRunning;
|
|
103
|
-
private readonly procs;
|
|
104
|
-
private maxProcs;
|
|
105
|
-
constructor(process: (w: T) => Promise<void>, stopPendingIn: (queue: T[]) => Promise<void>);
|
|
106
|
-
add(w: T, queueIfNotRunning?: boolean): void;
|
|
107
|
-
private addToQueueOnce;
|
|
108
|
-
private getFromQueueHead;
|
|
109
|
-
private runQueued;
|
|
110
|
-
start(maxNumOfProcs: number): void;
|
|
111
|
-
pause(): void;
|
|
112
|
-
stop(): Promise<void>;
|
|
113
|
-
}
|
|
@@ -16,14 +16,8 @@
|
|
|
16
16
|
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.
|
|
20
|
-
const
|
|
21
|
-
function sleep(millis) {
|
|
22
|
-
return new Promise((resolve) => {
|
|
23
|
-
setTimeout(resolve, millis).unref();
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
exports.sleep = sleep;
|
|
19
|
+
exports.makeSyncedFunc = exports.SingleProc = exports.NamedProcs = void 0;
|
|
20
|
+
const deferred_1 = require("./deferred");
|
|
27
21
|
/**
|
|
28
22
|
* This is a container of processes, labeled by some ids. It allows to track if
|
|
29
23
|
* there is a process already in progress with a given id. And, it allows to
|
|
@@ -155,7 +149,7 @@ class SingleProc {
|
|
|
155
149
|
}
|
|
156
150
|
}
|
|
157
151
|
startOrChain(action) {
|
|
158
|
-
const deferred = defer();
|
|
152
|
+
const deferred = deferred_1.defer();
|
|
159
153
|
this.actions.push({ action, deferred });
|
|
160
154
|
this.runIfIdle();
|
|
161
155
|
return deferred.promise;
|
|
@@ -164,52 +158,49 @@ class SingleProc {
|
|
|
164
158
|
exports.SingleProc = SingleProc;
|
|
165
159
|
Object.freeze(SingleProc.prototype);
|
|
166
160
|
Object.freeze(SingleProc);
|
|
167
|
-
class DeduppedRunner {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
exports.DeduppedRunner = DeduppedRunner;
|
|
211
|
-
Object.freeze(DeduppedRunner.prototype);
|
|
212
|
-
Object.freeze(DeduppedRunner);
|
|
161
|
+
// export class DeduppedRunner<T> {
|
|
162
|
+
// private proc: Promise<T>|undefined = undefined;
|
|
163
|
+
// private waiting: Deferred<T>|undefined = undefined;
|
|
164
|
+
// constructor(
|
|
165
|
+
// private readonly action: Action<T>
|
|
166
|
+
// ) {
|
|
167
|
+
// Object.seal(this);
|
|
168
|
+
// }
|
|
169
|
+
// trigger(): Promise<T> {
|
|
170
|
+
// if (this.proc) {
|
|
171
|
+
// if (!this.waiting) {
|
|
172
|
+
// this.waiting = defer();
|
|
173
|
+
// }
|
|
174
|
+
// return this.waiting.promise;
|
|
175
|
+
// } else {
|
|
176
|
+
// this.proc = this.startAction();
|
|
177
|
+
// return this.proc;
|
|
178
|
+
// }
|
|
179
|
+
// }
|
|
180
|
+
// private async startAction(): Promise<T> {
|
|
181
|
+
// const deferredBeforeStart = this.waiting;
|
|
182
|
+
// this.waiting = undefined;
|
|
183
|
+
// try {
|
|
184
|
+
// const result = await this.action();
|
|
185
|
+
// if (deferredBeforeStart) {
|
|
186
|
+
// deferredBeforeStart.resolve(result);
|
|
187
|
+
// }
|
|
188
|
+
// return result;
|
|
189
|
+
// } catch (err) {
|
|
190
|
+
// if (deferredBeforeStart) {
|
|
191
|
+
// deferredBeforeStart.reject(err);
|
|
192
|
+
// }
|
|
193
|
+
// throw err;
|
|
194
|
+
// } finally {
|
|
195
|
+
// this.proc = undefined;
|
|
196
|
+
// if (this.waiting) {
|
|
197
|
+
// this.proc = this.startAction();
|
|
198
|
+
// }
|
|
199
|
+
// }
|
|
200
|
+
// }
|
|
201
|
+
// }
|
|
202
|
+
// Object.freeze(DeduppedRunner.prototype);
|
|
203
|
+
// Object.freeze(DeduppedRunner);
|
|
213
204
|
/**
|
|
214
205
|
* This wraps given function/method into syncing wrap.
|
|
215
206
|
*/
|
|
@@ -217,153 +208,145 @@ function makeSyncedFunc(syncProc, thisArg, func) {
|
|
|
217
208
|
return ((...args) => syncProc.startOrChain(() => func.apply(thisArg, args)));
|
|
218
209
|
}
|
|
219
210
|
exports.makeSyncedFunc = makeSyncedFunc;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
class
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
while (this.procs.length > 0) {
|
|
362
|
-
await this.procs.pop();
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
exports.Worker = Worker;
|
|
367
|
-
Object.freeze(Worker.prototype);
|
|
368
|
-
Object.freeze(Worker);
|
|
211
|
+
// export interface Deferred<T> {
|
|
212
|
+
// promise: Promise<T>;
|
|
213
|
+
// resolve: (result?: T|PromiseLike<T>) => void;
|
|
214
|
+
// reject: (err: any) => void;
|
|
215
|
+
// }
|
|
216
|
+
// export function defer<T>(): Deferred<T> {
|
|
217
|
+
// const d = <Deferred<T>> {};
|
|
218
|
+
// d.promise = new Promise<T>((resolve, reject) => {
|
|
219
|
+
// d.resolve = resolve;
|
|
220
|
+
// d.reject = reject;
|
|
221
|
+
// });
|
|
222
|
+
// Object.freeze(d);
|
|
223
|
+
// return d;
|
|
224
|
+
// }
|
|
225
|
+
// export class PressureValve {
|
|
226
|
+
// private stopper: Deferred<void>|undefined = undefined;
|
|
227
|
+
// constructor() {
|
|
228
|
+
// Object.seal(this);
|
|
229
|
+
// }
|
|
230
|
+
// toggle(flag: boolean): void {
|
|
231
|
+
// if (flag) {
|
|
232
|
+
// if (this.stopper) { return; }
|
|
233
|
+
// this.stopper = defer();
|
|
234
|
+
// } else {
|
|
235
|
+
// if (!this.stopper) { return; }
|
|
236
|
+
// this.stopper.resolve();
|
|
237
|
+
// this.stopper = undefined;
|
|
238
|
+
// }
|
|
239
|
+
// }
|
|
240
|
+
// pressWithError(err: any): void {
|
|
241
|
+
// this.toggle(true);
|
|
242
|
+
// this.stopper!.reject(errWithCause(err, `Backpressure error`));
|
|
243
|
+
// }
|
|
244
|
+
// readonly pressure = async (): Promise<void> => {
|
|
245
|
+
// if (!this.stopper) { return; }
|
|
246
|
+
// await this.stopper.promise;
|
|
247
|
+
// }
|
|
248
|
+
// }
|
|
249
|
+
// Object.freeze(PressureValve.prototype);
|
|
250
|
+
// Object.freeze(PressureValve);
|
|
251
|
+
// export function callWithTimeout<T>(
|
|
252
|
+
// f: () => Promise<T>, timeout: number, timeoutErr: () => any
|
|
253
|
+
// ): Promise<T> {
|
|
254
|
+
// let isDone = false;
|
|
255
|
+
// const deferred = defer<T>();
|
|
256
|
+
// f().then(res => {
|
|
257
|
+
// if (isDone) { return; }
|
|
258
|
+
// isDone = true;
|
|
259
|
+
// deferred.resolve(res);
|
|
260
|
+
// }, err => {
|
|
261
|
+
// if (isDone) { return; }
|
|
262
|
+
// isDone = true;
|
|
263
|
+
// deferred.reject(err);
|
|
264
|
+
// });
|
|
265
|
+
// sleep(timeout).then(() => {
|
|
266
|
+
// if (isDone) { return; }
|
|
267
|
+
// isDone = true;
|
|
268
|
+
// const err = timeoutErr();
|
|
269
|
+
// if (err) {
|
|
270
|
+
// deferred.reject(err);
|
|
271
|
+
// }
|
|
272
|
+
// });
|
|
273
|
+
// return deferred.promise;
|
|
274
|
+
// }
|
|
275
|
+
// export interface WorkerTask<WorkerLabel extends string> {
|
|
276
|
+
// neededWorker(): WorkerLabel|undefined;
|
|
277
|
+
// process(): Promise<void>;
|
|
278
|
+
// cancel(): Promise<void>;
|
|
279
|
+
// }
|
|
280
|
+
// interface Worker {
|
|
281
|
+
// readonly procs: Promise<void>[];
|
|
282
|
+
// readonly maxProcs: number;
|
|
283
|
+
// }
|
|
284
|
+
// export class QueueAndWorkers<WorkerLabel extends string> {
|
|
285
|
+
// private readonly queue: WorkerTask<WorkerLabel>[] = [];
|
|
286
|
+
// private readonly workers = new Map<WorkerLabel, Worker>();
|
|
287
|
+
// // private readonly set = new Set<WorkerTask>();
|
|
288
|
+
// private isRunning = false;
|
|
289
|
+
// // private readonly procs: Promise<void>[] = [];
|
|
290
|
+
// // private maxProcs = 1;
|
|
291
|
+
// constructor() {
|
|
292
|
+
// Object.seal(this);
|
|
293
|
+
// }
|
|
294
|
+
// add(w: WorkerTask<WorkerLabel>, queueIfNotRunning = false): void {
|
|
295
|
+
// if (this.isRunning) {
|
|
296
|
+
// this.queue.push();
|
|
297
|
+
// this.processNextQueued();
|
|
298
|
+
// } else if (queueIfNotRunning) {
|
|
299
|
+
// this.addToQueueOnce(w);
|
|
300
|
+
// }
|
|
301
|
+
// }
|
|
302
|
+
// private addToQueueOnce(w: WorkerTask<WorkerLabel>): void {
|
|
303
|
+
// if (!this.set.has(w)) {
|
|
304
|
+
// this.queue.push(w);
|
|
305
|
+
// this.set.add(w);
|
|
306
|
+
// }
|
|
307
|
+
// }
|
|
308
|
+
// private getFromQueueHead(): WorkerTask<WorkerLabel>|undefined {
|
|
309
|
+
// const w = this.queue.shift();
|
|
310
|
+
// if (!w) { return; }
|
|
311
|
+
// this.set.delete(w);
|
|
312
|
+
// return w;
|
|
313
|
+
// }
|
|
314
|
+
// private async processNextQueued(): Promise<void> {
|
|
315
|
+
// if (!this.isRunning || (this.procs.length >= this.maxProcs)) { return; }
|
|
316
|
+
// const w = this.getFromQueueHead();
|
|
317
|
+
// if (!w) { return; }
|
|
318
|
+
// const proc = w.process();
|
|
319
|
+
// this.procs.push(proc);
|
|
320
|
+
// try {
|
|
321
|
+
// await proc;
|
|
322
|
+
// } finally {
|
|
323
|
+
// const i = this.procs.indexOf(proc);
|
|
324
|
+
// if (i >= 0) {
|
|
325
|
+
// this.procs.splice(i, 1);
|
|
326
|
+
// }
|
|
327
|
+
// this.processNextQueued();
|
|
328
|
+
// }
|
|
329
|
+
// }
|
|
330
|
+
// start(maxNumOfProcs = 1): void {
|
|
331
|
+
// this.maxProcs = maxNumOfProcs;
|
|
332
|
+
// this.isRunning = true;
|
|
333
|
+
// this.processNextQueued();
|
|
334
|
+
// }
|
|
335
|
+
// pause(): void {
|
|
336
|
+
// this.isRunning = false;
|
|
337
|
+
// }
|
|
338
|
+
// async stop(): Promise<void> {
|
|
339
|
+
// this.isRunning = false;
|
|
340
|
+
// const queue = this.queue.splice(0, this.queue.length);
|
|
341
|
+
// this.set.clear();
|
|
342
|
+
// for (const w of queue) {
|
|
343
|
+
// await w.cancel();
|
|
344
|
+
// }
|
|
345
|
+
// while (this.procs.length > 0) {
|
|
346
|
+
// await this.procs.pop();
|
|
347
|
+
// }
|
|
348
|
+
// }
|
|
349
|
+
// }
|
|
350
|
+
// Object.freeze(Worker.prototype);
|
|
351
|
+
// Object.freeze(Worker);
|
|
369
352
|
Object.freeze(exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function callWithTimeout<T>(f: () => Promise<T>, timeout: number, timeoutErr: () => any): Promise<T>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright (C) 2015, 2017, 2019 - 2022 3NSoft Inc.
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify it under
|
|
6
|
+
the terms of the GNU General Public License as published by the Free Software
|
|
7
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
|
8
|
+
version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful, but
|
|
11
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
13
|
+
See the GNU General Public License for more details.
|
|
14
|
+
|
|
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/>.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.callWithTimeout = void 0;
|
|
20
|
+
const deferred_1 = require("./deferred");
|
|
21
|
+
const sleep_1 = require("./sleep");
|
|
22
|
+
function callWithTimeout(f, timeout, timeoutErr) {
|
|
23
|
+
let isDone = false;
|
|
24
|
+
const deferred = deferred_1.defer();
|
|
25
|
+
f().then(res => {
|
|
26
|
+
if (isDone) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
isDone = true;
|
|
30
|
+
deferred.resolve(res);
|
|
31
|
+
}, err => {
|
|
32
|
+
if (isDone) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
isDone = true;
|
|
36
|
+
deferred.reject(err);
|
|
37
|
+
});
|
|
38
|
+
sleep_1.sleep(timeout).then(() => {
|
|
39
|
+
if (isDone) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
isDone = true;
|
|
43
|
+
const err = timeoutErr();
|
|
44
|
+
if (err) {
|
|
45
|
+
deferred.reject(err);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return deferred.promise;
|
|
49
|
+
}
|
|
50
|
+
exports.callWithTimeout = callWithTimeout;
|
|
51
|
+
Object.freeze(exports);
|
|
@@ -67,10 +67,11 @@ export interface GetObjQueryOpts {
|
|
|
67
67
|
}
|
|
68
68
|
export interface PutObjFirstQueryOpts {
|
|
69
69
|
/**
|
|
70
|
-
* This is a
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
* This is a flag to indicate that new object should be created.
|
|
71
|
+
*/
|
|
72
|
+
create?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* This parameter is object's new version.
|
|
74
75
|
*/
|
|
75
76
|
ver: number;
|
|
76
77
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2015 - 2017, 2019 3NSoft Inc.
|
|
3
|
+
Copyright (C) 2015 - 2017, 2019, 2022 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,7 +13,8 @@
|
|
|
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.objRemoved = exports.objChanged = exports.wsEventChannel = exports.archiveRoot = exports.archiveObj = exports.cancelRootTransaction = exports.cancelTransaction = exports.addDiffSectionTo = exports.sanitizedDiff = exports.archivedRootVersion = exports.archivedObjVersion = exports.currentRootObj = exports.currentObj = exports.keyDerivParams = exports.PARAM_SC = exports.sessionParams = exports.closeSession = exports.midLogin = exports.BIN_TYPE = exports.HTTP_HEADER = exports.ERR_SC = void 0;
|
|
19
20
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
1
|
+
import { Observable, PartialObserver } from 'rxjs';
|
|
2
2
|
/**
|
|
3
3
|
* This is a pipeable operator that runs given async process on completion and
|
|
4
4
|
* sends result downstream, followed by complete signal.
|
|
@@ -22,3 +22,17 @@ export declare function allowOnlySingleStart<T>(): (src: Observable<T>) => Obser
|
|
|
22
22
|
* @param onComplete
|
|
23
23
|
*/
|
|
24
24
|
export declare function flatTap<T>(onNext: ((x: T) => Promise<void>) | undefined | null, onError?: ((err: any) => Promise<void>) | undefined | null, onComplete?: (() => Promise<void>) | undefined | null): (src: Observable<T>) => Observable<T>;
|
|
25
|
+
/**
|
|
26
|
+
* @param obs
|
|
27
|
+
* @return given observer, or one with noop's in place of missing functions
|
|
28
|
+
*/
|
|
29
|
+
export declare function toRxObserver<T>(obs: web3n.Observer<T>): PartialObserver<T>;
|
|
30
|
+
export declare class Broadcast<T> {
|
|
31
|
+
private readonly src;
|
|
32
|
+
readonly event$: Observable<T>;
|
|
33
|
+
private sub;
|
|
34
|
+
constructor();
|
|
35
|
+
next(ev: T): void;
|
|
36
|
+
done(err?: any): void;
|
|
37
|
+
isON(): boolean;
|
|
38
|
+
}
|