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