@dxos/async 0.8.4-main.fbb7a13 → 0.8.4-main.fcc0d83b33
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 +24 -88
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +24 -88
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/callback.d.ts.map +1 -1
- package/dist/types/src/chain.d.ts.map +1 -1
- package/dist/types/src/cleanup.d.ts +2 -3
- package/dist/types/src/cleanup.d.ts.map +1 -1
- package/dist/types/src/debounce.d.ts +15 -10
- package/dist/types/src/debounce.d.ts.map +1 -1
- package/dist/types/src/errors.d.ts.map +1 -1
- package/dist/types/src/event-emitter.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/mutex.d.ts.map +1 -1
- package/dist/types/src/observable-value.d.ts.map +1 -1
- package/dist/types/src/observable.d.ts.map +1 -1
- package/dist/types/src/persistent-lifecycle.d.ts.map +1 -1
- package/dist/types/src/stream-to-array.d.ts.map +1 -1
- package/dist/types/src/task-scheduling.d.ts +2 -2
- package/dist/types/src/task-scheduling.d.ts.map +1 -1
- package/dist/types/src/test-stream.d.ts.map +1 -1
- 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/timer.d.ts.map +1 -1
- package/dist/types/src/track-leaks.d.ts.map +1 -1
- package/dist/types/src/trigger.d.ts.map +1 -1
- package/dist/types/src/update-scheduler.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -10
- package/src/cleanup.ts +7 -5
- package/src/debounce.ts +19 -14
- package/src/event-emitter.test.ts +0 -1
- package/src/observable-value.ts +4 -2
- package/src/task-scheduling.ts +6 -5
- package/src/timeout.ts +6 -9
|
@@ -22,7 +22,7 @@ var chain = (chain2) => async (elements) => {
|
|
|
22
22
|
import { ComplexMap } from "@dxos/util";
|
|
23
23
|
var combine = (...cleanupFns) => {
|
|
24
24
|
return () => {
|
|
25
|
-
cleanupFns.flat().forEach((cleanupFn) => cleanupFn());
|
|
25
|
+
cleanupFns.flat().filter((f) => typeof f === "function").forEach((cleanupFn) => cleanupFn());
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
28
|
var timeout = (cb, ms = 0) => {
|
|
@@ -39,8 +39,8 @@ var addEventListener = (target, type, listener, options) => {
|
|
|
39
39
|
};
|
|
40
40
|
var SubscriptionList = class {
|
|
41
41
|
_cleanups = [];
|
|
42
|
-
add(cb) {
|
|
43
|
-
this._cleanups.push(cb);
|
|
42
|
+
add(...cb) {
|
|
43
|
+
this._cleanups.push(...cb);
|
|
44
44
|
return this;
|
|
45
45
|
}
|
|
46
46
|
clear() {
|
|
@@ -166,6 +166,9 @@ var sleepWithContext = (ctx, ms) => {
|
|
|
166
166
|
};
|
|
167
167
|
var asyncReturn = () => sleep(0);
|
|
168
168
|
var asyncTimeout = async (promise, timeout2, err) => {
|
|
169
|
+
if (typeof promise === "function") {
|
|
170
|
+
throw new Error("First argument must be a promise.");
|
|
171
|
+
}
|
|
169
172
|
let timeoutId;
|
|
170
173
|
const throwable = err === void 0 || typeof err === "string" ? new TimeoutError(timeout2, err) : err;
|
|
171
174
|
const timeoutPromise = new Promise((resolve, reject) => {
|
|
@@ -174,9 +177,8 @@ var asyncTimeout = async (promise, timeout2, err) => {
|
|
|
174
177
|
}, timeout2);
|
|
175
178
|
unrefTimeout(timeoutId);
|
|
176
179
|
});
|
|
177
|
-
const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
|
|
178
180
|
return await Promise.race([
|
|
179
|
-
|
|
181
|
+
promise,
|
|
180
182
|
timeoutPromise
|
|
181
183
|
]).finally(() => {
|
|
182
184
|
clearTimeout(timeoutId);
|
|
@@ -213,7 +215,6 @@ var waitForEvent = (eventEmitter, eventName, test, timeout2, error) => {
|
|
|
213
215
|
|
|
214
216
|
// src/events.ts
|
|
215
217
|
import { Context } from "@dxos/context";
|
|
216
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
|
|
217
218
|
var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
|
|
218
219
|
var Event = class _Event {
|
|
219
220
|
/**
|
|
@@ -268,10 +269,7 @@ var Event = class _Event {
|
|
|
268
269
|
_ctx,
|
|
269
270
|
_callback
|
|
270
271
|
] : [
|
|
271
|
-
new Context(
|
|
272
|
-
F: __dxlog_file,
|
|
273
|
-
L: 132
|
|
274
|
-
}),
|
|
272
|
+
new Context(),
|
|
275
273
|
_ctx
|
|
276
274
|
];
|
|
277
275
|
const weak = !!options?.weak;
|
|
@@ -301,10 +299,7 @@ var Event = class _Event {
|
|
|
301
299
|
_ctx,
|
|
302
300
|
_callback
|
|
303
301
|
] : [
|
|
304
|
-
new Context(
|
|
305
|
-
F: __dxlog_file,
|
|
306
|
-
L: 169
|
|
307
|
-
}),
|
|
302
|
+
new Context(),
|
|
308
303
|
_ctx
|
|
309
304
|
];
|
|
310
305
|
const listener = new EventListener(this, callback, ctx, true, false);
|
|
@@ -607,7 +602,7 @@ var MutexGuard = class {
|
|
|
607
602
|
this.release();
|
|
608
603
|
}
|
|
609
604
|
};
|
|
610
|
-
var classMutexSymbol = Symbol("class-mutex");
|
|
605
|
+
var classMutexSymbol = /* @__PURE__ */ Symbol("class-mutex");
|
|
611
606
|
var FORCE_DISABLE_WARNING = false;
|
|
612
607
|
var enableWarning = !FORCE_DISABLE_WARNING && globalThis.mochaExecutor;
|
|
613
608
|
var synchronized = (target, propertyName, descriptor) => {
|
|
@@ -638,7 +633,6 @@ import PushStream from "zen-push";
|
|
|
638
633
|
|
|
639
634
|
// src/trigger.ts
|
|
640
635
|
import { invariant } from "@dxos/invariant";
|
|
641
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
|
|
642
636
|
var trigger = (timeout2) => {
|
|
643
637
|
let callback;
|
|
644
638
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -730,15 +724,7 @@ var Trigger = class {
|
|
|
730
724
|
}
|
|
731
725
|
};
|
|
732
726
|
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
733
|
-
invariant(count >= 0
|
|
734
|
-
F: __dxlog_file2,
|
|
735
|
-
L: 139,
|
|
736
|
-
S: void 0,
|
|
737
|
-
A: [
|
|
738
|
-
"count >= 0",
|
|
739
|
-
""
|
|
740
|
-
]
|
|
741
|
-
});
|
|
727
|
+
invariant(count >= 0);
|
|
742
728
|
let t;
|
|
743
729
|
let doResolve;
|
|
744
730
|
let doReject;
|
|
@@ -935,16 +921,15 @@ import { warnAfterTimeout as warnAfterTimeout2 } from "@dxos/debug";
|
|
|
935
921
|
import { log as log2 } from "@dxos/log";
|
|
936
922
|
|
|
937
923
|
// src/task-scheduling.ts
|
|
938
|
-
import { ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
|
|
924
|
+
import { Context as Context2, ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
|
|
939
925
|
import { StackTrace as StackTrace2 } from "@dxos/debug";
|
|
940
926
|
|
|
941
927
|
// src/track-leaks.ts
|
|
942
928
|
import { StackTrace } from "@dxos/debug";
|
|
943
929
|
import { log } from "@dxos/log";
|
|
944
|
-
var __dxlog_file3 = "/__w/dxos/dxos/packages/common/async/src/track-leaks.ts";
|
|
945
930
|
var enabled = typeof process !== "undefined" && !!process.env.DX_TRACK_LEAKS;
|
|
946
931
|
var openResources = /* @__PURE__ */ new Set();
|
|
947
|
-
var handleSymbol = Symbol("checkLeaksHandle");
|
|
932
|
+
var handleSymbol = /* @__PURE__ */ Symbol("checkLeaksHandle");
|
|
948
933
|
var trackResource = (resourceProvider) => {
|
|
949
934
|
if (!enabled) {
|
|
950
935
|
return () => {
|
|
@@ -991,31 +976,11 @@ var dumpLeaks = () => {
|
|
|
991
976
|
if (!enabled) {
|
|
992
977
|
return;
|
|
993
978
|
}
|
|
994
|
-
log.info(`Leaked resources ${openResources.size}
|
|
995
|
-
F: __dxlog_file3,
|
|
996
|
-
L: 82,
|
|
997
|
-
S: void 0,
|
|
998
|
-
C: (f, a) => f(...a)
|
|
999
|
-
});
|
|
979
|
+
log.info(`Leaked resources ${openResources.size}:`);
|
|
1000
980
|
for (const resource of openResources) {
|
|
1001
|
-
log.info(`- ${resource.name} at
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
S: void 0,
|
|
1005
|
-
C: (f, a) => f(...a)
|
|
1006
|
-
});
|
|
1007
|
-
log.info(resource.openStack.getStack(1), void 0, {
|
|
1008
|
-
F: __dxlog_file3,
|
|
1009
|
-
L: 85,
|
|
1010
|
-
S: void 0,
|
|
1011
|
-
C: (f, a) => f(...a)
|
|
1012
|
-
});
|
|
1013
|
-
log.info("\n", void 0, {
|
|
1014
|
-
F: __dxlog_file3,
|
|
1015
|
-
L: 86,
|
|
1016
|
-
S: void 0,
|
|
1017
|
-
C: (f, a) => f(...a)
|
|
1018
|
-
});
|
|
981
|
+
log.info(`- ${resource.name} at`);
|
|
982
|
+
log.info(resource.openStack.getStack(1));
|
|
983
|
+
log.info("\n");
|
|
1019
984
|
}
|
|
1020
985
|
};
|
|
1021
986
|
if (enabled) {
|
|
@@ -1088,16 +1053,16 @@ var AsyncTask = class {
|
|
|
1088
1053
|
* Context of the resource that owns the task.
|
|
1089
1054
|
* When the context is disposed, the task is cancelled and cannot be scheduled again.
|
|
1090
1055
|
*/
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
this.#ctx = ctx;
|
|
1056
|
+
open() {
|
|
1057
|
+
this.#ctx = new Context2();
|
|
1094
1058
|
}
|
|
1095
1059
|
/**
|
|
1096
1060
|
* Closes the task and waits for it to finish if it is running.
|
|
1097
1061
|
*/
|
|
1098
1062
|
async close() {
|
|
1099
|
-
this.#ctx
|
|
1063
|
+
await this.#ctx?.dispose();
|
|
1100
1064
|
await this.join();
|
|
1065
|
+
this.#ctx = void 0;
|
|
1101
1066
|
}
|
|
1102
1067
|
[Symbol.asyncDispose]() {
|
|
1103
1068
|
return this.close();
|
|
@@ -1105,6 +1070,7 @@ var AsyncTask = class {
|
|
|
1105
1070
|
/**
|
|
1106
1071
|
* Schedule the task to run asynchronously.
|
|
1107
1072
|
*/
|
|
1073
|
+
// TODO(dmaretskyi): Add scheduleAt. Where the earlier time will override the later one.
|
|
1108
1074
|
schedule() {
|
|
1109
1075
|
if (!this.#ctx || this.#ctx.disposed) {
|
|
1110
1076
|
throw new Error("AsyncTask not open");
|
|
@@ -1229,7 +1195,6 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
1229
1195
|
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;
|
|
1230
1196
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1231
1197
|
}
|
|
1232
|
-
var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecycle.ts";
|
|
1233
1198
|
var INIT_RESTART_DELAY = 100;
|
|
1234
1199
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1235
1200
|
var PersistentLifecycle = class extends Resource {
|
|
@@ -1257,11 +1222,6 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1257
1222
|
} catch (err) {
|
|
1258
1223
|
log2.warn("Restart failed", {
|
|
1259
1224
|
err
|
|
1260
|
-
}, {
|
|
1261
|
-
F: __dxlog_file4,
|
|
1262
|
-
L: 72,
|
|
1263
|
-
S: this,
|
|
1264
|
-
C: (f, a) => f(...a)
|
|
1265
1225
|
});
|
|
1266
1226
|
this._restartTask?.schedule();
|
|
1267
1227
|
}
|
|
@@ -1269,11 +1229,6 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1269
1229
|
this._currentState = await this._start().catch((err) => {
|
|
1270
1230
|
log2.warn("Start failed", {
|
|
1271
1231
|
err
|
|
1272
|
-
}, {
|
|
1273
|
-
F: __dxlog_file4,
|
|
1274
|
-
L: 78,
|
|
1275
|
-
S: this,
|
|
1276
|
-
C: (f, a) => f(...a)
|
|
1277
1232
|
});
|
|
1278
1233
|
this._restartTask?.schedule();
|
|
1279
1234
|
return void 0;
|
|
@@ -1287,11 +1242,6 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1287
1242
|
async _restart() {
|
|
1288
1243
|
log2(`restarting in ${this._restartAfter}ms`, {
|
|
1289
1244
|
state: this._lifecycleState
|
|
1290
|
-
}, {
|
|
1291
|
-
F: __dxlog_file4,
|
|
1292
|
-
L: 91,
|
|
1293
|
-
S: this,
|
|
1294
|
-
C: (f, a) => f(...a)
|
|
1295
1245
|
});
|
|
1296
1246
|
await this._stopCurrentState();
|
|
1297
1247
|
if (this._lifecycleState !== LifecycleState.OPEN) {
|
|
@@ -1310,12 +1260,7 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1310
1260
|
try {
|
|
1311
1261
|
await this._stop(this._currentState);
|
|
1312
1262
|
} catch (err) {
|
|
1313
|
-
log2.catch(err
|
|
1314
|
-
F: __dxlog_file4,
|
|
1315
|
-
L: 113,
|
|
1316
|
-
S: this,
|
|
1317
|
-
C: (f, a) => f(...a)
|
|
1318
|
-
});
|
|
1263
|
+
log2.catch(err);
|
|
1319
1264
|
}
|
|
1320
1265
|
this._currentState = void 0;
|
|
1321
1266
|
}
|
|
@@ -1339,7 +1284,6 @@ _ts_decorate([
|
|
|
1339
1284
|
|
|
1340
1285
|
// src/push-iterable.ts
|
|
1341
1286
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
1342
|
-
var __dxlog_file5 = "/__w/dxos/dxos/packages/common/async/src/push-iterable.ts";
|
|
1343
1287
|
var makePushIterable = () => {
|
|
1344
1288
|
const buf = [];
|
|
1345
1289
|
const trigger2 = new Trigger({
|
|
@@ -1353,15 +1297,7 @@ var makePushIterable = () => {
|
|
|
1353
1297
|
await trigger2.wait();
|
|
1354
1298
|
}
|
|
1355
1299
|
const item = buf.shift();
|
|
1356
|
-
invariant2(item
|
|
1357
|
-
F: __dxlog_file5,
|
|
1358
|
-
L: 42,
|
|
1359
|
-
S: this,
|
|
1360
|
-
A: [
|
|
1361
|
-
"item",
|
|
1362
|
-
""
|
|
1363
|
-
]
|
|
1364
|
-
});
|
|
1300
|
+
invariant2(item);
|
|
1365
1301
|
switch (item.kind) {
|
|
1366
1302
|
case "next":
|
|
1367
1303
|
return {
|