@dxos/async 0.8.3 → 0.8.4-main.1da679c
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/dist/lib/browser/index.mjs +432 -264
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +432 -264
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/callback.d.ts +2 -1
- package/dist/types/src/callback.d.ts.map +1 -1
- package/dist/types/src/chain.d.ts +1 -1
- package/dist/types/src/chain.d.ts.map +1 -1
- package/dist/types/src/cleanup.d.ts +1 -1
- package/dist/types/src/cleanup.d.ts.map +1 -1
- package/dist/types/src/debounce.d.ts +19 -1
- package/dist/types/src/debounce.d.ts.map +1 -1
- package/dist/types/src/debounce.test.d.ts +2 -0
- package/dist/types/src/debounce.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +0 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/task-scheduling.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +13 -0
- package/dist/types/src/testing.d.ts.map +1 -1
- package/dist/types/src/timeout.d.ts +1 -1
- package/dist/types/src/timeout.d.ts.map +1 -1
- package/dist/types/src/trigger.d.ts +11 -0
- package/dist/types/src/trigger.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/callback.ts +3 -3
- package/src/chain.ts +1 -1
- package/src/cleanup.ts +3 -3
- package/src/debounce.test.ts +115 -0
- package/src/debounce.ts +40 -4
- package/src/event-emitter.test.ts +2 -1
- package/src/events.test.ts +1 -1
- package/src/index.ts +0 -4
- package/src/observable-value.test.ts +1 -1
- package/src/persistent-lifecycle.test.ts +1 -1
- package/src/task-scheduling.ts +1 -1
- package/src/testing.test.ts +41 -1
- package/src/testing.ts +53 -0
- package/src/timeout.ts +23 -22
- package/src/trigger.ts +58 -1
- package/src/update-scheduler.ts +1 -1
- package/dist/lib/node/index.cjs +0 -1638
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/types/src/latch.d.ts +0 -11
- package/dist/types/src/latch.d.ts.map +0 -1
- package/dist/types/src/sink.d.ts +0 -6
- package/dist/types/src/sink.d.ts.map +0 -1
- package/dist/types/src/types.d.ts +0 -2
- package/dist/types/src/types.d.ts.map +0 -1
- package/dist/types/src/until.d.ts +0 -14
- package/dist/types/src/until.d.ts.map +0 -1
- package/dist/types/src/until.test.d.ts +0 -2
- package/dist/types/src/until.test.d.ts.map +0 -1
- package/src/latch.ts +0 -60
- package/src/sink.ts +0 -26
- package/src/types.ts +0 -5
- package/src/until.test.ts +0 -47
- package/src/until.ts +0 -58
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
var
|
|
1
|
+
// src/callback.ts
|
|
2
|
+
var promiseFromCallback = (run) => new Promise((resolve, reject) => {
|
|
3
3
|
run((error, value) => {
|
|
4
4
|
if (error) {
|
|
5
5
|
reject(error);
|
|
@@ -9,17 +9,30 @@ var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
|
|
|
9
9
|
});
|
|
10
10
|
});
|
|
11
11
|
|
|
12
|
-
//
|
|
13
|
-
var
|
|
12
|
+
// src/chain.ts
|
|
13
|
+
var chain = (chain2) => async (elements) => {
|
|
14
14
|
let result = await elements;
|
|
15
|
-
for (const part of
|
|
15
|
+
for (const part of chain2) {
|
|
16
16
|
result = await Promise.all(result.map(async (element) => await part(element)));
|
|
17
17
|
}
|
|
18
18
|
return result;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
//
|
|
21
|
+
// src/cleanup.ts
|
|
22
22
|
import { ComplexMap } from "@dxos/util";
|
|
23
|
+
function _define_property(obj, key, value) {
|
|
24
|
+
if (key in obj) {
|
|
25
|
+
Object.defineProperty(obj, key, {
|
|
26
|
+
value,
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true
|
|
30
|
+
});
|
|
31
|
+
} else {
|
|
32
|
+
obj[key] = value;
|
|
33
|
+
}
|
|
34
|
+
return obj;
|
|
35
|
+
}
|
|
23
36
|
var combine = (...cleanupFns) => {
|
|
24
37
|
return () => {
|
|
25
38
|
cleanupFns.flat().forEach((cleanupFn) => cleanupFn());
|
|
@@ -33,14 +46,11 @@ var interval = (cb, ms) => {
|
|
|
33
46
|
const t = setInterval(cb, ms);
|
|
34
47
|
return () => clearInterval(t);
|
|
35
48
|
};
|
|
36
|
-
|
|
49
|
+
var addEventListener = (target, type, listener, options) => {
|
|
37
50
|
target.addEventListener(type, listener, options);
|
|
38
51
|
return () => target.removeEventListener(type, listener, options);
|
|
39
|
-
}
|
|
52
|
+
};
|
|
40
53
|
var SubscriptionList = class {
|
|
41
|
-
constructor() {
|
|
42
|
-
this._cleanups = [];
|
|
43
|
-
}
|
|
44
54
|
add(cb) {
|
|
45
55
|
this._cleanups.push(cb);
|
|
46
56
|
return this;
|
|
@@ -49,11 +59,11 @@ var SubscriptionList = class {
|
|
|
49
59
|
this._cleanups.forEach((cb) => cb());
|
|
50
60
|
this._cleanups.length = 0;
|
|
51
61
|
}
|
|
62
|
+
constructor() {
|
|
63
|
+
_define_property(this, "_cleanups", []);
|
|
64
|
+
}
|
|
52
65
|
};
|
|
53
66
|
var SubscriptionSet = class {
|
|
54
|
-
constructor(keyProjection) {
|
|
55
|
-
this._cleanupMap = new ComplexMap(keyProjection);
|
|
56
|
-
}
|
|
57
67
|
set(key, cb) {
|
|
58
68
|
this._cleanupMap.set(key, cb);
|
|
59
69
|
return this;
|
|
@@ -62,18 +72,40 @@ var SubscriptionSet = class {
|
|
|
62
72
|
this._cleanupMap.forEach((cb) => cb());
|
|
63
73
|
this._cleanupMap.clear();
|
|
64
74
|
}
|
|
75
|
+
constructor(keyProjection) {
|
|
76
|
+
_define_property(this, "_cleanupMap", void 0);
|
|
77
|
+
this._cleanupMap = new ComplexMap(keyProjection);
|
|
78
|
+
}
|
|
65
79
|
};
|
|
66
80
|
|
|
67
|
-
//
|
|
68
|
-
var debounce = (cb,
|
|
81
|
+
// src/debounce.ts
|
|
82
|
+
var debounce = (cb, delay = 100) => {
|
|
69
83
|
let t;
|
|
70
84
|
return (...args) => {
|
|
71
85
|
clearTimeout(t);
|
|
72
|
-
t = setTimeout(() => cb(...args),
|
|
86
|
+
t = setTimeout(() => cb(...args), delay);
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
var throttle = (cb, delay = 100) => {
|
|
90
|
+
let lastCall = 0;
|
|
91
|
+
return (...args) => {
|
|
92
|
+
const now = Date.now();
|
|
93
|
+
if (now - lastCall >= delay) {
|
|
94
|
+
cb(...args);
|
|
95
|
+
lastCall = now;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
var debounceAndThrottle = (cb, delay = 100) => {
|
|
100
|
+
const debounced = debounce(cb, delay);
|
|
101
|
+
const throttled = throttle(cb, delay);
|
|
102
|
+
return (...args) => {
|
|
103
|
+
debounced(...args);
|
|
104
|
+
throttled(...args);
|
|
73
105
|
};
|
|
74
106
|
};
|
|
75
107
|
|
|
76
|
-
//
|
|
108
|
+
// src/errors.ts
|
|
77
109
|
var toError = (err) => err === void 0 || typeof err === "string" ? new Error(err) : err;
|
|
78
110
|
var TimeoutError = class extends Error {
|
|
79
111
|
constructor(timeout2, label) {
|
|
@@ -88,7 +120,7 @@ var observableError = (observable, err) => {
|
|
|
88
120
|
}
|
|
89
121
|
};
|
|
90
122
|
|
|
91
|
-
//
|
|
123
|
+
// src/timeout.ts
|
|
92
124
|
import { ContextDisposedError } from "@dxos/context";
|
|
93
125
|
var sleep = (ms) => {
|
|
94
126
|
return new Promise((resolve) => {
|
|
@@ -104,6 +136,23 @@ var sleep = (ms) => {
|
|
|
104
136
|
sleeper();
|
|
105
137
|
});
|
|
106
138
|
};
|
|
139
|
+
var sleepWithContext = (ctx, ms) => {
|
|
140
|
+
const error = new ContextDisposedError();
|
|
141
|
+
return new Promise((resolve, reject) => {
|
|
142
|
+
if (ctx.disposed) {
|
|
143
|
+
reject(error);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const timeout2 = setTimeout(() => {
|
|
147
|
+
clearDispose();
|
|
148
|
+
resolve();
|
|
149
|
+
}, ms);
|
|
150
|
+
const clearDispose = ctx.onDispose(() => {
|
|
151
|
+
clearTimeout(timeout2);
|
|
152
|
+
reject(error);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
};
|
|
107
156
|
var asyncReturn = () => sleep(0);
|
|
108
157
|
var asyncTimeout = async (promise, timeout2, err) => {
|
|
109
158
|
let timeoutId;
|
|
@@ -114,7 +163,7 @@ var asyncTimeout = async (promise, timeout2, err) => {
|
|
|
114
163
|
}, timeout2);
|
|
115
164
|
unrefTimeout(timeoutId);
|
|
116
165
|
});
|
|
117
|
-
const conditionTimeout = typeof promise === "function" ?
|
|
166
|
+
const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
|
|
118
167
|
return await Promise.race([
|
|
119
168
|
conditionTimeout,
|
|
120
169
|
timeoutPromise
|
|
@@ -127,25 +176,8 @@ var unrefTimeout = (timeoutId) => {
|
|
|
127
176
|
timeoutId.unref();
|
|
128
177
|
}
|
|
129
178
|
};
|
|
130
|
-
var sleepWithContext = (ctx, ms) => {
|
|
131
|
-
const error = new ContextDisposedError();
|
|
132
|
-
return new Promise((resolve, reject) => {
|
|
133
|
-
if (ctx.disposed) {
|
|
134
|
-
reject(error);
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
const timeout2 = setTimeout(() => {
|
|
138
|
-
clearDispose();
|
|
139
|
-
resolve();
|
|
140
|
-
}, ms);
|
|
141
|
-
const clearDispose = ctx.onDispose(() => {
|
|
142
|
-
clearTimeout(timeout2);
|
|
143
|
-
reject(error);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
179
|
|
|
148
|
-
//
|
|
180
|
+
// src/event-emitter.ts
|
|
149
181
|
var onEvent = (eventEmitter, eventName, callback) => {
|
|
150
182
|
eventEmitter.on(eventName, callback);
|
|
151
183
|
return () => eventEmitter.off(eventName, callback);
|
|
@@ -168,15 +200,24 @@ var waitForEvent = (eventEmitter, eventName, test, timeout2, error) => {
|
|
|
168
200
|
return timeout2 ? asyncTimeout(promise, timeout2, error ?? new Error()).finally(off) : promise.finally(off);
|
|
169
201
|
};
|
|
170
202
|
|
|
171
|
-
//
|
|
203
|
+
// src/events.ts
|
|
172
204
|
import { Context } from "@dxos/context";
|
|
173
|
-
|
|
205
|
+
function _define_property2(obj, key, value) {
|
|
206
|
+
if (key in obj) {
|
|
207
|
+
Object.defineProperty(obj, key, {
|
|
208
|
+
value,
|
|
209
|
+
enumerable: true,
|
|
210
|
+
configurable: true,
|
|
211
|
+
writable: true
|
|
212
|
+
});
|
|
213
|
+
} else {
|
|
214
|
+
obj[key] = value;
|
|
215
|
+
}
|
|
216
|
+
return obj;
|
|
217
|
+
}
|
|
218
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
|
|
174
219
|
var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
|
|
175
220
|
var Event = class _Event {
|
|
176
|
-
constructor() {
|
|
177
|
-
this._listeners = /* @__PURE__ */ new Set();
|
|
178
|
-
this._effects = /* @__PURE__ */ new Set();
|
|
179
|
-
}
|
|
180
221
|
/**
|
|
181
222
|
* Wrap objects that have on/off style event emitters.
|
|
182
223
|
*/
|
|
@@ -430,26 +471,12 @@ var Event = class _Event {
|
|
|
430
471
|
handle.cleanup = void 0;
|
|
431
472
|
}
|
|
432
473
|
}
|
|
474
|
+
constructor() {
|
|
475
|
+
_define_property2(this, "_listeners", /* @__PURE__ */ new Set());
|
|
476
|
+
_define_property2(this, "_effects", /* @__PURE__ */ new Set());
|
|
477
|
+
}
|
|
433
478
|
};
|
|
434
479
|
var EventListener = class {
|
|
435
|
-
constructor(event, listener, ctx, once, weak) {
|
|
436
|
-
this.ctx = ctx;
|
|
437
|
-
this.once = once;
|
|
438
|
-
this.weak = weak;
|
|
439
|
-
this._clearDispose = void 0;
|
|
440
|
-
this._clearDispose = ctx.onDispose(() => {
|
|
441
|
-
event._removeListener(this);
|
|
442
|
-
});
|
|
443
|
-
if (weak) {
|
|
444
|
-
this.callback = new WeakRef(listener);
|
|
445
|
-
weakListeners().registry?.register(listener, {
|
|
446
|
-
event: new WeakRef(event),
|
|
447
|
-
listener: this
|
|
448
|
-
}, this);
|
|
449
|
-
} else {
|
|
450
|
-
this.callback = listener;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
480
|
derefCallback() {
|
|
454
481
|
return this.weak ? this.callback.deref() : this.callback;
|
|
455
482
|
}
|
|
@@ -479,6 +506,29 @@ var EventListener = class {
|
|
|
479
506
|
this._clearDispose?.();
|
|
480
507
|
weakListeners().registry?.unregister(this);
|
|
481
508
|
}
|
|
509
|
+
constructor(event, listener, ctx, once, weak) {
|
|
510
|
+
_define_property2(this, "ctx", void 0);
|
|
511
|
+
_define_property2(this, "once", void 0);
|
|
512
|
+
_define_property2(this, "weak", void 0);
|
|
513
|
+
_define_property2(this, "callback", void 0);
|
|
514
|
+
_define_property2(this, "_clearDispose", void 0);
|
|
515
|
+
this.ctx = ctx;
|
|
516
|
+
this.once = once;
|
|
517
|
+
this.weak = weak;
|
|
518
|
+
this._clearDispose = void 0;
|
|
519
|
+
this._clearDispose = ctx.onDispose(() => {
|
|
520
|
+
event._removeListener(this);
|
|
521
|
+
});
|
|
522
|
+
if (weak) {
|
|
523
|
+
this.callback = new WeakRef(listener);
|
|
524
|
+
weakListeners().registry?.register(listener, {
|
|
525
|
+
event: new WeakRef(event),
|
|
526
|
+
listener: this
|
|
527
|
+
}, this);
|
|
528
|
+
} else {
|
|
529
|
+
this.callback = listener;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
482
532
|
};
|
|
483
533
|
var weakListenersState = null;
|
|
484
534
|
var FINALIZATION_REGISTRY_SUPPORTED = !!globalThis.FinalizationRegistry;
|
|
@@ -488,73 +538,31 @@ var weakListeners = () => {
|
|
|
488
538
|
registry: void 0
|
|
489
539
|
};
|
|
490
540
|
}
|
|
491
|
-
weakListenersState
|
|
541
|
+
weakListenersState ?? (weakListenersState = new FinalizationRegistry(({ event, listener }) => {
|
|
492
542
|
event.deref()?._removeListener(listener);
|
|
493
|
-
});
|
|
543
|
+
}));
|
|
494
544
|
return {
|
|
495
545
|
registry: weakListenersState
|
|
496
546
|
};
|
|
497
547
|
};
|
|
498
548
|
|
|
499
|
-
//
|
|
500
|
-
import
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
""
|
|
510
|
-
]
|
|
511
|
-
});
|
|
512
|
-
let t;
|
|
513
|
-
let doResolve;
|
|
514
|
-
let doReject;
|
|
515
|
-
const promise = new Promise((resolve, reject) => {
|
|
516
|
-
doResolve = (value) => {
|
|
517
|
-
clearTimeout(t);
|
|
518
|
-
resolve(value);
|
|
519
|
-
};
|
|
520
|
-
doReject = (err) => {
|
|
521
|
-
clearTimeout(t);
|
|
522
|
-
reject(err);
|
|
523
|
-
};
|
|
524
|
-
});
|
|
525
|
-
if (count === 0) {
|
|
526
|
-
setTimeout(() => {
|
|
527
|
-
doResolve(0);
|
|
549
|
+
// src/mutex.ts
|
|
550
|
+
import "@dxos/util";
|
|
551
|
+
import { warnAfterTimeout } from "@dxos/debug";
|
|
552
|
+
function _define_property3(obj, key, value) {
|
|
553
|
+
if (key in obj) {
|
|
554
|
+
Object.defineProperty(obj, key, {
|
|
555
|
+
value,
|
|
556
|
+
enumerable: true,
|
|
557
|
+
configurable: true,
|
|
558
|
+
writable: true
|
|
528
559
|
});
|
|
529
560
|
} else {
|
|
530
|
-
|
|
531
|
-
t = setTimeout(() => {
|
|
532
|
-
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
533
|
-
}, timeout2);
|
|
534
|
-
}
|
|
561
|
+
obj[key] = value;
|
|
535
562
|
}
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
async () => await promise,
|
|
539
|
-
() => {
|
|
540
|
-
if (++i === count) {
|
|
541
|
-
doResolve(i);
|
|
542
|
-
}
|
|
543
|
-
return i;
|
|
544
|
-
},
|
|
545
|
-
(err) => doReject(err)
|
|
546
|
-
];
|
|
547
|
-
};
|
|
548
|
-
|
|
549
|
-
// packages/common/async/src/mutex.ts
|
|
550
|
-
import "@dxos/util";
|
|
551
|
-
import { warnAfterTimeout } from "@dxos/debug";
|
|
563
|
+
return obj;
|
|
564
|
+
}
|
|
552
565
|
var Mutex = class {
|
|
553
|
-
constructor() {
|
|
554
|
-
this._queue = Promise.resolve();
|
|
555
|
-
this._queueLength = 0;
|
|
556
|
-
this._tag = null;
|
|
557
|
-
}
|
|
558
566
|
get tag() {
|
|
559
567
|
return this._tag;
|
|
560
568
|
}
|
|
@@ -598,11 +606,13 @@ var Mutex = class {
|
|
|
598
606
|
guard.release();
|
|
599
607
|
}
|
|
600
608
|
}
|
|
609
|
+
constructor() {
|
|
610
|
+
_define_property3(this, "_queue", Promise.resolve());
|
|
611
|
+
_define_property3(this, "_queueLength", 0);
|
|
612
|
+
_define_property3(this, "_tag", null);
|
|
613
|
+
}
|
|
601
614
|
};
|
|
602
615
|
var MutexGuard = class {
|
|
603
|
-
constructor(_release) {
|
|
604
|
-
this._release = _release;
|
|
605
|
-
}
|
|
606
616
|
/**
|
|
607
617
|
* Releases the lock.
|
|
608
618
|
*/
|
|
@@ -612,6 +622,10 @@ var MutexGuard = class {
|
|
|
612
622
|
[Symbol.dispose]() {
|
|
613
623
|
this.release();
|
|
614
624
|
}
|
|
625
|
+
constructor(_release) {
|
|
626
|
+
_define_property3(this, "_release", void 0);
|
|
627
|
+
this._release = _release;
|
|
628
|
+
}
|
|
615
629
|
};
|
|
616
630
|
var classMutexSymbol = Symbol("class-mutex");
|
|
617
631
|
var FORCE_DISABLE_WARNING = false;
|
|
@@ -619,7 +633,8 @@ var enableWarning = !FORCE_DISABLE_WARNING && globalThis.mochaExecutor;
|
|
|
619
633
|
var synchronized = (target, propertyName, descriptor) => {
|
|
620
634
|
const method = descriptor.value;
|
|
621
635
|
descriptor.value = async function synchronizedMethod(...args) {
|
|
622
|
-
|
|
636
|
+
var _classMutexSymbol;
|
|
637
|
+
const mutex = this[_classMutexSymbol = classMutexSymbol] ?? (this[_classMutexSymbol] = new Mutex());
|
|
623
638
|
const tag = `${target.constructor.name}.${propertyName}`;
|
|
624
639
|
let guard;
|
|
625
640
|
if (!enableWarning) {
|
|
@@ -638,11 +653,26 @@ var synchronized = (target, propertyName, descriptor) => {
|
|
|
638
653
|
});
|
|
639
654
|
};
|
|
640
655
|
|
|
641
|
-
//
|
|
656
|
+
// src/observable.ts
|
|
642
657
|
import Observable from "zen-observable";
|
|
643
658
|
import PushStream from "zen-push";
|
|
644
659
|
|
|
645
|
-
//
|
|
660
|
+
// src/trigger.ts
|
|
661
|
+
import { invariant } from "@dxos/invariant";
|
|
662
|
+
function _define_property4(obj, key, value) {
|
|
663
|
+
if (key in obj) {
|
|
664
|
+
Object.defineProperty(obj, key, {
|
|
665
|
+
value,
|
|
666
|
+
enumerable: true,
|
|
667
|
+
configurable: true,
|
|
668
|
+
writable: true
|
|
669
|
+
});
|
|
670
|
+
} else {
|
|
671
|
+
obj[key] = value;
|
|
672
|
+
}
|
|
673
|
+
return obj;
|
|
674
|
+
}
|
|
675
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
|
|
646
676
|
var trigger = (timeout2) => {
|
|
647
677
|
let callback;
|
|
648
678
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -658,20 +688,13 @@ var trigger = (timeout2) => {
|
|
|
658
688
|
resolver
|
|
659
689
|
];
|
|
660
690
|
};
|
|
661
|
-
var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
691
|
+
var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
|
|
662
692
|
TriggerState2["WAITING"] = "WAITING";
|
|
663
693
|
TriggerState2["RESOLVED"] = "RESOLVED";
|
|
664
694
|
TriggerState2["REJECTED"] = "REJECTED";
|
|
665
695
|
return TriggerState2;
|
|
666
|
-
}({});
|
|
696
|
+
})({});
|
|
667
697
|
var Trigger = class {
|
|
668
|
-
constructor(_options = {
|
|
669
|
-
autoReset: false
|
|
670
|
-
}) {
|
|
671
|
-
this._options = _options;
|
|
672
|
-
this._state = "WAITING";
|
|
673
|
-
this.reset();
|
|
674
|
-
}
|
|
675
698
|
get state() {
|
|
676
699
|
return this._state;
|
|
677
700
|
}
|
|
@@ -728,27 +751,81 @@ var Trigger = class {
|
|
|
728
751
|
}
|
|
729
752
|
return this;
|
|
730
753
|
}
|
|
754
|
+
constructor(_options = {
|
|
755
|
+
autoReset: false
|
|
756
|
+
}) {
|
|
757
|
+
_define_property4(this, "_options", void 0);
|
|
758
|
+
_define_property4(this, "_promise", void 0);
|
|
759
|
+
_define_property4(this, "_resolve", void 0);
|
|
760
|
+
_define_property4(this, "_reject", void 0);
|
|
761
|
+
_define_property4(this, "_state", void 0);
|
|
762
|
+
this._options = _options;
|
|
763
|
+
this._state = "WAITING";
|
|
764
|
+
this.reset();
|
|
765
|
+
}
|
|
731
766
|
};
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
767
|
+
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
768
|
+
invariant(count >= 0, void 0, {
|
|
769
|
+
F: __dxlog_file2,
|
|
770
|
+
L: 139,
|
|
771
|
+
S: void 0,
|
|
772
|
+
A: [
|
|
773
|
+
"count >= 0",
|
|
774
|
+
""
|
|
775
|
+
]
|
|
776
|
+
});
|
|
777
|
+
let t;
|
|
778
|
+
let doResolve;
|
|
779
|
+
let doReject;
|
|
780
|
+
const promise = new Promise((resolve, reject) => {
|
|
781
|
+
doResolve = (value) => {
|
|
782
|
+
clearTimeout(t);
|
|
783
|
+
resolve(value);
|
|
748
784
|
};
|
|
749
|
-
|
|
750
|
-
|
|
785
|
+
doReject = (err) => {
|
|
786
|
+
clearTimeout(t);
|
|
787
|
+
reject(err);
|
|
788
|
+
};
|
|
789
|
+
});
|
|
790
|
+
if (count === 0) {
|
|
791
|
+
setTimeout(() => {
|
|
792
|
+
doResolve(0);
|
|
793
|
+
});
|
|
794
|
+
} else {
|
|
795
|
+
if (timeout2) {
|
|
796
|
+
t = setTimeout(() => {
|
|
797
|
+
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
798
|
+
}, timeout2);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
let i = 0;
|
|
802
|
+
return [
|
|
803
|
+
async () => await promise,
|
|
804
|
+
() => {
|
|
805
|
+
if (++i === count) {
|
|
806
|
+
doResolve(i);
|
|
807
|
+
}
|
|
808
|
+
return i;
|
|
809
|
+
},
|
|
810
|
+
(err) => doReject(err)
|
|
811
|
+
];
|
|
812
|
+
};
|
|
813
|
+
|
|
814
|
+
// src/observable.ts
|
|
815
|
+
function _define_property5(obj, key, value) {
|
|
816
|
+
if (key in obj) {
|
|
817
|
+
Object.defineProperty(obj, key, {
|
|
818
|
+
value,
|
|
819
|
+
enumerable: true,
|
|
820
|
+
configurable: true,
|
|
821
|
+
writable: true
|
|
822
|
+
});
|
|
823
|
+
} else {
|
|
824
|
+
obj[key] = value;
|
|
751
825
|
}
|
|
826
|
+
return obj;
|
|
827
|
+
}
|
|
828
|
+
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
752
829
|
static from(value, initialValue) {
|
|
753
830
|
if ("emit" in value) {
|
|
754
831
|
return new _MulticastObservable((observer) => {
|
|
@@ -829,18 +906,42 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
829
906
|
this._observers.delete(observer);
|
|
830
907
|
};
|
|
831
908
|
}
|
|
909
|
+
constructor(subscriber, _value) {
|
|
910
|
+
super((observer) => this._subscribe(observer)), _define_property5(this, "_value", void 0), _define_property5(this, "_observers", void 0), _define_property5(this, "_observable", void 0), _define_property5(this, "_completed", void 0), _define_property5(this, "_handlers", void 0), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
|
|
911
|
+
next: (value) => {
|
|
912
|
+
this._value = value;
|
|
913
|
+
this._observers.forEach((observer) => observer.next?.(value));
|
|
914
|
+
},
|
|
915
|
+
error: (err) => {
|
|
916
|
+
this._observers.forEach((observer) => observer.error?.(err));
|
|
917
|
+
},
|
|
918
|
+
complete: () => {
|
|
919
|
+
this._completed.wake();
|
|
920
|
+
this._observers.forEach((observer) => observer.complete?.());
|
|
921
|
+
}
|
|
922
|
+
};
|
|
923
|
+
this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
|
|
924
|
+
this._observable.subscribe(this._handlers);
|
|
925
|
+
}
|
|
832
926
|
};
|
|
833
927
|
var EMPTY_OBSERVABLE = MulticastObservable.of(null);
|
|
834
928
|
|
|
835
|
-
//
|
|
929
|
+
// src/observable-value.ts
|
|
836
930
|
import { createSetDispatch } from "@dxos/util";
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
931
|
+
function _define_property6(obj, key, value) {
|
|
932
|
+
if (key in obj) {
|
|
933
|
+
Object.defineProperty(obj, key, {
|
|
934
|
+
value,
|
|
935
|
+
enumerable: true,
|
|
936
|
+
configurable: true,
|
|
937
|
+
writable: true
|
|
842
938
|
});
|
|
939
|
+
} else {
|
|
940
|
+
obj[key] = value;
|
|
843
941
|
}
|
|
942
|
+
return obj;
|
|
943
|
+
}
|
|
944
|
+
var ObservableProvider = class {
|
|
844
945
|
/**
|
|
845
946
|
* Proxy used to dispatch callbacks to each subscription.
|
|
846
947
|
*/
|
|
@@ -859,11 +960,15 @@ var ObservableProvider = class {
|
|
|
859
960
|
this._handlers.delete(handler);
|
|
860
961
|
};
|
|
861
962
|
}
|
|
963
|
+
constructor() {
|
|
964
|
+
_define_property6(this, "_handlers", /* @__PURE__ */ new Set());
|
|
965
|
+
_define_property6(this, "_proxy", createSetDispatch({
|
|
966
|
+
handlers: this._handlers
|
|
967
|
+
}));
|
|
968
|
+
_define_property6(this, "_value", void 0);
|
|
969
|
+
}
|
|
862
970
|
};
|
|
863
971
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
864
|
-
constructor(_handleCancel) {
|
|
865
|
-
super(), this._handleCancel = _handleCancel, this._cancelled = false;
|
|
866
|
-
}
|
|
867
972
|
get cancelled() {
|
|
868
973
|
return this._cancelled;
|
|
869
974
|
}
|
|
@@ -875,21 +980,24 @@ var CancellableObservableProvider = class extends ObservableProvider {
|
|
|
875
980
|
await this._handleCancel?.();
|
|
876
981
|
this.callback.onCancelled?.();
|
|
877
982
|
}
|
|
983
|
+
constructor(_handleCancel) {
|
|
984
|
+
super(), _define_property6(this, "_handleCancel", void 0), _define_property6(this, "_cancelled", void 0), this._handleCancel = _handleCancel, this._cancelled = false;
|
|
985
|
+
}
|
|
878
986
|
};
|
|
879
987
|
|
|
880
|
-
//
|
|
988
|
+
// src/persistent-lifecycle.ts
|
|
881
989
|
import { LifecycleState, Resource, cancelWithContext } from "@dxos/context";
|
|
882
990
|
import { warnAfterTimeout as warnAfterTimeout2 } from "@dxos/debug";
|
|
883
991
|
import { log as log2 } from "@dxos/log";
|
|
884
992
|
|
|
885
|
-
//
|
|
993
|
+
// src/task-scheduling.ts
|
|
886
994
|
import { ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
|
|
887
995
|
import { StackTrace as StackTrace2 } from "@dxos/debug";
|
|
888
996
|
|
|
889
|
-
//
|
|
997
|
+
// src/track-leaks.ts
|
|
890
998
|
import { StackTrace } from "@dxos/debug";
|
|
891
999
|
import { log } from "@dxos/log";
|
|
892
|
-
var __dxlog_file3 = "/
|
|
1000
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/common/async/src/track-leaks.ts";
|
|
893
1001
|
var enabled = typeof process !== "undefined" && !!process.env.DX_TRACK_LEAKS;
|
|
894
1002
|
var openResources = /* @__PURE__ */ new Set();
|
|
895
1003
|
var handleSymbol = Symbol("checkLeaksHandle");
|
|
@@ -970,15 +1078,21 @@ if (enabled) {
|
|
|
970
1078
|
global.dxDumpLeaks = dumpLeaks;
|
|
971
1079
|
}
|
|
972
1080
|
|
|
973
|
-
//
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1081
|
+
// src/task-scheduling.ts
|
|
1082
|
+
function _define_property7(obj, key, value) {
|
|
1083
|
+
if (key in obj) {
|
|
1084
|
+
Object.defineProperty(obj, key, {
|
|
1085
|
+
value,
|
|
1086
|
+
enumerable: true,
|
|
1087
|
+
configurable: true,
|
|
1088
|
+
writable: true
|
|
1089
|
+
});
|
|
1090
|
+
} else {
|
|
1091
|
+
obj[key] = value;
|
|
981
1092
|
}
|
|
1093
|
+
return obj;
|
|
1094
|
+
}
|
|
1095
|
+
var DeferredTask = class {
|
|
982
1096
|
get scheduled() {
|
|
983
1097
|
return this._scheduled;
|
|
984
1098
|
}
|
|
@@ -1017,6 +1131,18 @@ var DeferredTask = class {
|
|
|
1017
1131
|
async join() {
|
|
1018
1132
|
await this._currentTask;
|
|
1019
1133
|
}
|
|
1134
|
+
constructor(_ctx, _callback) {
|
|
1135
|
+
_define_property7(this, "_ctx", void 0);
|
|
1136
|
+
_define_property7(this, "_callback", void 0);
|
|
1137
|
+
_define_property7(this, "_scheduled", void 0);
|
|
1138
|
+
_define_property7(this, "_currentTask", void 0);
|
|
1139
|
+
_define_property7(this, "_nextTask", void 0);
|
|
1140
|
+
this._ctx = _ctx;
|
|
1141
|
+
this._callback = _callback;
|
|
1142
|
+
this._scheduled = false;
|
|
1143
|
+
this._currentTask = null;
|
|
1144
|
+
this._nextTask = new Trigger();
|
|
1145
|
+
}
|
|
1020
1146
|
};
|
|
1021
1147
|
var runInContext = (ctx, fn) => {
|
|
1022
1148
|
try {
|
|
@@ -1096,27 +1222,30 @@ var scheduleExponentialBackoffTaskInterval = (ctx, task, initialInterval) => {
|
|
|
1096
1222
|
});
|
|
1097
1223
|
};
|
|
1098
1224
|
|
|
1099
|
-
//
|
|
1225
|
+
// src/persistent-lifecycle.ts
|
|
1226
|
+
function _define_property8(obj, key, value) {
|
|
1227
|
+
if (key in obj) {
|
|
1228
|
+
Object.defineProperty(obj, key, {
|
|
1229
|
+
value,
|
|
1230
|
+
enumerable: true,
|
|
1231
|
+
configurable: true,
|
|
1232
|
+
writable: true
|
|
1233
|
+
});
|
|
1234
|
+
} else {
|
|
1235
|
+
obj[key] = value;
|
|
1236
|
+
}
|
|
1237
|
+
return obj;
|
|
1238
|
+
}
|
|
1100
1239
|
function _ts_decorate(decorators, target, key, desc) {
|
|
1101
1240
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1102
1241
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1103
1242
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1104
1243
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1105
1244
|
}
|
|
1106
|
-
var __dxlog_file4 = "/
|
|
1245
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecycle.ts";
|
|
1107
1246
|
var INIT_RESTART_DELAY = 100;
|
|
1108
1247
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1109
1248
|
var PersistentLifecycle = class extends Resource {
|
|
1110
|
-
constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
|
|
1111
|
-
super();
|
|
1112
|
-
this._currentState = void 0;
|
|
1113
|
-
this._restartTask = void 0;
|
|
1114
|
-
this._restartAfter = 0;
|
|
1115
|
-
this._start = start;
|
|
1116
|
-
this._stop = stop;
|
|
1117
|
-
this._onRestart = onRestart;
|
|
1118
|
-
this._maxRestartDelay = maxRestartDelay;
|
|
1119
|
-
}
|
|
1120
1249
|
get state() {
|
|
1121
1250
|
return this._currentState;
|
|
1122
1251
|
}
|
|
@@ -1199,6 +1328,13 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1199
1328
|
}
|
|
1200
1329
|
this._restartTask.schedule();
|
|
1201
1330
|
}
|
|
1331
|
+
constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
|
|
1332
|
+
super(), _define_property8(this, "_start", void 0), _define_property8(this, "_stop", void 0), _define_property8(this, "_onRestart", void 0), _define_property8(this, "_maxRestartDelay", void 0), _define_property8(this, "_currentState", void 0), _define_property8(this, "_restartTask", void 0), _define_property8(this, "_restartAfter", 0);
|
|
1333
|
+
this._start = start;
|
|
1334
|
+
this._stop = stop;
|
|
1335
|
+
this._onRestart = onRestart;
|
|
1336
|
+
this._maxRestartDelay = maxRestartDelay;
|
|
1337
|
+
}
|
|
1202
1338
|
};
|
|
1203
1339
|
_ts_decorate([
|
|
1204
1340
|
synchronized
|
|
@@ -1207,9 +1343,9 @@ _ts_decorate([
|
|
|
1207
1343
|
synchronized
|
|
1208
1344
|
], PersistentLifecycle.prototype, "scheduleRestart", null);
|
|
1209
1345
|
|
|
1210
|
-
//
|
|
1346
|
+
// src/push-iterable.ts
|
|
1211
1347
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
1212
|
-
var __dxlog_file5 = "/
|
|
1348
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/common/async/src/push-iterable.ts";
|
|
1213
1349
|
var makePushIterable = () => {
|
|
1214
1350
|
const buf = [];
|
|
1215
1351
|
const trigger2 = new Trigger({
|
|
@@ -1273,21 +1409,7 @@ var makePushIterable = () => {
|
|
|
1273
1409
|
};
|
|
1274
1410
|
};
|
|
1275
1411
|
|
|
1276
|
-
//
|
|
1277
|
-
var sink = (emitter, event, count = 1) => {
|
|
1278
|
-
const [getPromise, resolve] = trigger();
|
|
1279
|
-
let counter = 0;
|
|
1280
|
-
const listener = () => {
|
|
1281
|
-
if (++counter === count) {
|
|
1282
|
-
emitter.off(event, listener);
|
|
1283
|
-
resolve();
|
|
1284
|
-
}
|
|
1285
|
-
};
|
|
1286
|
-
emitter.on(event, listener);
|
|
1287
|
-
return getPromise();
|
|
1288
|
-
};
|
|
1289
|
-
|
|
1290
|
-
// packages/common/async/src/stream-to-array.ts
|
|
1412
|
+
// src/stream-to-array.ts
|
|
1291
1413
|
var streamToArray = (stream) => {
|
|
1292
1414
|
let deferred;
|
|
1293
1415
|
if (!stream.readable) {
|
|
@@ -1329,14 +1451,22 @@ var streamToArray = (stream) => {
|
|
|
1329
1451
|
return deferred;
|
|
1330
1452
|
};
|
|
1331
1453
|
|
|
1332
|
-
//
|
|
1454
|
+
// src/test-stream.ts
|
|
1333
1455
|
import { Duplex } from "@dxos/node-std/stream";
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1456
|
+
function _define_property9(obj, key, value) {
|
|
1457
|
+
if (key in obj) {
|
|
1458
|
+
Object.defineProperty(obj, key, {
|
|
1459
|
+
value,
|
|
1460
|
+
enumerable: true,
|
|
1461
|
+
configurable: true,
|
|
1462
|
+
writable: true
|
|
1463
|
+
});
|
|
1464
|
+
} else {
|
|
1465
|
+
obj[key] = value;
|
|
1339
1466
|
}
|
|
1467
|
+
return obj;
|
|
1468
|
+
}
|
|
1469
|
+
var TestStream = class extends Duplex {
|
|
1340
1470
|
static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
|
|
1341
1471
|
stream1.push("ping");
|
|
1342
1472
|
stream2.push("pong");
|
|
@@ -1363,9 +1493,12 @@ var TestStream = class extends Duplex {
|
|
|
1363
1493
|
const dataBuffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
1364
1494
|
return asyncTimeout(this._onWrite.waitForCondition(() => this._received.equals(dataBuffer)), timeout2);
|
|
1365
1495
|
}
|
|
1496
|
+
constructor(...args) {
|
|
1497
|
+
super(...args), _define_property9(this, "_received", Buffer.alloc(0)), _define_property9(this, "_onWrite", new Event());
|
|
1498
|
+
}
|
|
1366
1499
|
};
|
|
1367
1500
|
|
|
1368
|
-
//
|
|
1501
|
+
// src/testing.ts
|
|
1369
1502
|
var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2 = 10, error, breakOnError = false }) => {
|
|
1370
1503
|
const stopTime = timeout2 ? Date.now() + timeout2 : 0;
|
|
1371
1504
|
const trigger2 = new Trigger();
|
|
@@ -1390,14 +1523,55 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
|
|
|
1390
1523
|
timeout: timeout2
|
|
1391
1524
|
});
|
|
1392
1525
|
};
|
|
1526
|
+
var until = (cb, timeout2) => {
|
|
1527
|
+
return new Promise((resolve, reject) => {
|
|
1528
|
+
const t = timeout2 && setTimeout(() => {
|
|
1529
|
+
reject(new Error(`Timeout after ${t}ms`));
|
|
1530
|
+
}, timeout2);
|
|
1531
|
+
setTimeout(async () => {
|
|
1532
|
+
try {
|
|
1533
|
+
await cb((value) => {
|
|
1534
|
+
t && clearTimeout(t);
|
|
1535
|
+
resolve(value);
|
|
1536
|
+
}, (error) => {
|
|
1537
|
+
t && clearTimeout(t);
|
|
1538
|
+
reject(error);
|
|
1539
|
+
});
|
|
1540
|
+
} catch (err) {
|
|
1541
|
+
reject(err);
|
|
1542
|
+
}
|
|
1543
|
+
});
|
|
1544
|
+
});
|
|
1545
|
+
};
|
|
1546
|
+
var untilPromise = (cb) => cb();
|
|
1547
|
+
var untilError = (cb) => {
|
|
1548
|
+
return new Promise((resolve, reject) => {
|
|
1549
|
+
setTimeout(async () => {
|
|
1550
|
+
try {
|
|
1551
|
+
await cb();
|
|
1552
|
+
reject(new Error("No error was thrown."));
|
|
1553
|
+
} catch (err) {
|
|
1554
|
+
resolve(err);
|
|
1555
|
+
}
|
|
1556
|
+
});
|
|
1557
|
+
});
|
|
1558
|
+
};
|
|
1393
1559
|
|
|
1394
|
-
//
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1560
|
+
// src/timer.ts
|
|
1561
|
+
function _define_property10(obj, key, value) {
|
|
1562
|
+
if (key in obj) {
|
|
1563
|
+
Object.defineProperty(obj, key, {
|
|
1564
|
+
value,
|
|
1565
|
+
enumerable: true,
|
|
1566
|
+
configurable: true,
|
|
1567
|
+
writable: true
|
|
1568
|
+
});
|
|
1569
|
+
} else {
|
|
1570
|
+
obj[key] = value;
|
|
1400
1571
|
}
|
|
1572
|
+
return obj;
|
|
1573
|
+
}
|
|
1574
|
+
var Timer = class {
|
|
1401
1575
|
get state() {
|
|
1402
1576
|
return this._state;
|
|
1403
1577
|
}
|
|
@@ -1437,57 +1611,33 @@ var Timer = class {
|
|
|
1437
1611
|
this._state.emit(false);
|
|
1438
1612
|
return this;
|
|
1439
1613
|
}
|
|
1614
|
+
constructor(_callback) {
|
|
1615
|
+
_define_property10(this, "_callback", void 0);
|
|
1616
|
+
_define_property10(this, "_state", void 0);
|
|
1617
|
+
_define_property10(this, "_timer", void 0);
|
|
1618
|
+
_define_property10(this, "_count", void 0);
|
|
1619
|
+
this._callback = _callback;
|
|
1620
|
+
this._state = new Event();
|
|
1621
|
+
this._count = 0;
|
|
1622
|
+
}
|
|
1440
1623
|
};
|
|
1441
1624
|
|
|
1442
|
-
//
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
await cb((value) => {
|
|
1451
|
-
t && clearTimeout(t);
|
|
1452
|
-
resolve(value);
|
|
1453
|
-
}, (error) => {
|
|
1454
|
-
t && clearTimeout(t);
|
|
1455
|
-
reject(error);
|
|
1456
|
-
});
|
|
1457
|
-
} catch (err) {
|
|
1458
|
-
reject(err);
|
|
1459
|
-
}
|
|
1625
|
+
// src/update-scheduler.ts
|
|
1626
|
+
function _define_property11(obj, key, value) {
|
|
1627
|
+
if (key in obj) {
|
|
1628
|
+
Object.defineProperty(obj, key, {
|
|
1629
|
+
value,
|
|
1630
|
+
enumerable: true,
|
|
1631
|
+
configurable: true,
|
|
1632
|
+
writable: true
|
|
1460
1633
|
});
|
|
1461
|
-
}
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
setTimeout(async () => {
|
|
1467
|
-
try {
|
|
1468
|
-
await cb();
|
|
1469
|
-
reject(new Error("No error was thrown."));
|
|
1470
|
-
} catch (err) {
|
|
1471
|
-
resolve(err);
|
|
1472
|
-
}
|
|
1473
|
-
});
|
|
1474
|
-
});
|
|
1475
|
-
};
|
|
1476
|
-
|
|
1477
|
-
// packages/common/async/src/update-scheduler.ts
|
|
1634
|
+
} else {
|
|
1635
|
+
obj[key] = value;
|
|
1636
|
+
}
|
|
1637
|
+
return obj;
|
|
1638
|
+
}
|
|
1478
1639
|
var TIME_PERIOD = 1e3;
|
|
1479
1640
|
var UpdateScheduler = class {
|
|
1480
|
-
constructor(_ctx, _callback, _params = {}) {
|
|
1481
|
-
this._ctx = _ctx;
|
|
1482
|
-
this._callback = _callback;
|
|
1483
|
-
this._params = _params;
|
|
1484
|
-
this._promise = null;
|
|
1485
|
-
this._scheduled = false;
|
|
1486
|
-
this._lastUpdateTime = -TIME_PERIOD;
|
|
1487
|
-
_ctx.onDispose(async () => {
|
|
1488
|
-
await this._promise;
|
|
1489
|
-
});
|
|
1490
|
-
}
|
|
1491
1641
|
trigger() {
|
|
1492
1642
|
if (this._scheduled) {
|
|
1493
1643
|
return;
|
|
@@ -1544,6 +1694,23 @@ var UpdateScheduler = class {
|
|
|
1544
1694
|
this._promise = this._callback();
|
|
1545
1695
|
await this._promise;
|
|
1546
1696
|
}
|
|
1697
|
+
constructor(_ctx, _callback, _params = {}) {
|
|
1698
|
+
_define_property11(this, "_ctx", void 0);
|
|
1699
|
+
_define_property11(this, "_callback", void 0);
|
|
1700
|
+
_define_property11(this, "_params", void 0);
|
|
1701
|
+
_define_property11(this, "_promise", void 0);
|
|
1702
|
+
_define_property11(this, "_scheduled", void 0);
|
|
1703
|
+
_define_property11(this, "_lastUpdateTime", void 0);
|
|
1704
|
+
this._ctx = _ctx;
|
|
1705
|
+
this._callback = _callback;
|
|
1706
|
+
this._params = _params;
|
|
1707
|
+
this._promise = null;
|
|
1708
|
+
this._scheduled = false;
|
|
1709
|
+
this._lastUpdateTime = -TIME_PERIOD;
|
|
1710
|
+
_ctx.onDispose(async () => {
|
|
1711
|
+
await this._promise;
|
|
1712
|
+
});
|
|
1713
|
+
}
|
|
1547
1714
|
};
|
|
1548
1715
|
export {
|
|
1549
1716
|
CancellableObservableProvider,
|
|
@@ -1566,29 +1733,30 @@ export {
|
|
|
1566
1733
|
UpdateScheduler,
|
|
1567
1734
|
addEventListener,
|
|
1568
1735
|
addListener,
|
|
1569
|
-
asyncChain,
|
|
1570
1736
|
asyncReturn,
|
|
1571
1737
|
asyncTimeout,
|
|
1738
|
+
chain,
|
|
1572
1739
|
combine,
|
|
1573
|
-
createPromiseFromCallback,
|
|
1574
1740
|
debounce,
|
|
1741
|
+
debounceAndThrottle,
|
|
1575
1742
|
dumpLeaks,
|
|
1576
1743
|
interval,
|
|
1577
1744
|
latch,
|
|
1578
1745
|
makePushIterable,
|
|
1579
1746
|
observableError,
|
|
1580
1747
|
onEvent,
|
|
1748
|
+
promiseFromCallback,
|
|
1581
1749
|
runInContext,
|
|
1582
1750
|
runInContextAsync,
|
|
1583
1751
|
scheduleExponentialBackoffTaskInterval,
|
|
1584
1752
|
scheduleMicroTask,
|
|
1585
1753
|
scheduleTask,
|
|
1586
1754
|
scheduleTaskInterval,
|
|
1587
|
-
sink,
|
|
1588
1755
|
sleep,
|
|
1589
1756
|
sleepWithContext,
|
|
1590
1757
|
streamToArray,
|
|
1591
1758
|
synchronized,
|
|
1759
|
+
throttle,
|
|
1592
1760
|
timeout,
|
|
1593
1761
|
toError,
|
|
1594
1762
|
trackLeaks,
|