happy-dom 14.11.2 → 14.11.4
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.
Potentially problematic release.
This version of happy-dom might be problematic. Click here for more details.
- package/cjs/async-task-manager/AsyncTaskManager.cjs +10 -7
- package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
- package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.js +10 -7
- package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
- package/package.json +1 -1
- package/src/async-task-manager/AsyncTaskManager.ts +10 -7
@@ -2,9 +2,9 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
// We need to set this as a global constant, so that using fake timers in Jest and Vitest won't override this on the global object.
|
4
4
|
const TIMER = {
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
setTimeout: globalThis.setTimeout.bind(globalThis),
|
6
|
+
clearTimeout: globalThis.clearTimeout.bind(globalThis),
|
7
|
+
clearImmediate: globalThis.clearImmediate.bind(globalThis)
|
8
8
|
};
|
9
9
|
/**
|
10
10
|
* Handles async tasks.
|
@@ -107,17 +107,20 @@ class AsyncTaskManager {
|
|
107
107
|
delete this.runningTasks[taskID];
|
108
108
|
this.runningTaskCount--;
|
109
109
|
if (this.waitUntilCompleteTimer) {
|
110
|
-
TIMER.
|
110
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
111
111
|
}
|
112
112
|
if (!this.runningTaskCount && !this.runningTimers.length && !this.runningImmediates.length) {
|
113
|
-
|
113
|
+
// In some cases, microtasks are used by transformed code and waitUntilComplete() is then resolved too early.
|
114
|
+
// To cater for this we use setTimeout() which has the lowest priority and will be executed last.
|
115
|
+
// "10ms" is an arbitrary value, but it seem to be enough when performing many manual tests.
|
116
|
+
this.waitUntilCompleteTimer = TIMER.setTimeout(() => {
|
114
117
|
this.waitUntilCompleteTimer = null;
|
115
118
|
if (!this.runningTaskCount &&
|
116
119
|
!this.runningTimers.length &&
|
117
120
|
!this.runningImmediates.length) {
|
118
121
|
this.resolveWhenComplete();
|
119
122
|
}
|
120
|
-
});
|
123
|
+
}, 10);
|
121
124
|
}
|
122
125
|
}
|
123
126
|
}
|
@@ -162,7 +165,7 @@ class AsyncTaskManager {
|
|
162
165
|
this.runningImmediates = [];
|
163
166
|
this.runningTimers = [];
|
164
167
|
if (this.waitUntilCompleteTimer) {
|
165
|
-
TIMER.
|
168
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
166
169
|
this.waitUntilCompleteTimer = null;
|
167
170
|
}
|
168
171
|
for (const immediate of runningImmediates) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AsyncTaskManager.cjs","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":";;AAAA,mIAAmI;AACnI,MAAM,KAAK,GAAG;IACb,
|
1
|
+
{"version":3,"file":"AsyncTaskManager.cjs","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":";;AAAA,mIAAmI;AACnI,MAAM,KAAK,GAAG;IACb,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;IAClD,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;IACtD,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;CAC1D,CAAC;AAEF;;GAEG;AACH,MAAqB,gBAAgB;IAArC;QAES,iBAAY,GAAgE,EAAE,CAAC;QAC/E,qBAAgB,GAAG,CAAC,CAAC;QACrB,kBAAa,GAAqB,EAAE,CAAC;QACrC,sBAAiB,GAAuB,EAAE,CAAC;QAC3C,2BAAsB,GAA4B,IAAI,CAAC;QACvD,+BAA0B,GAAsB,EAAE,CAAC;IAuM5D,CAAC;IArMA;;;;OAIG;IACI,iBAAiB;QACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,OAAO;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,OAAuB;QACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,OAAuB;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC5F,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5B,CAAC;QACF,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,WAA6B;QAClD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,WAA6B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC5F,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5B,CAAC;QACF,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACI,SAAS,CAAC,YAAyB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;QACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,MAAc;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACjC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC5F,6GAA6G;gBAC7G,iGAAiG;gBACjG,4FAA4F;gBAC5F,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;oBACnD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;oBACnC,IACC,CAAC,IAAI,CAAC,gBAAgB;wBACtB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;wBAC1B,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAC7B,CAAC;wBACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC5B,CAAC;gBACF,CAAC,EAAE,EAAE,CAAC,CAAC;YACR,CAAC;QACF,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,YAAY;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACK,SAAS;QACU,IAAI,CAAC,WAAY,CAAC,MAAM,EAAE,CAAC;QACrD,OAAiC,IAAI,CAAC,WAAY,CAAC,MAAM,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,mBAAmB;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC;QAClD,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;QACrC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,QAAQ,EAAE,CAAC;QACZ,CAAC;IACF,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,OAAgB;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAEvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAChD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACpC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC3C,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YACnC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,WAAW,YAAY,OAAO,EAAE,CAAC;gBACpC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;iBAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;iBACpC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,yCAAyC;gBACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,KAAK,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;QAED,+DAA+D;QAC/D,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACjC,CAAC;;AA5Mc,uBAAM,GAAG,CAAC,AAAJ,CAAK;kBADN,gBAAgB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AsyncTaskManager.d.ts","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":";AAOA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,sBAAsB,CAAiC;IAC/D,OAAO,CAAC,0BAA0B,CAAyB;IAE3D;;;;OAIG;IACI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOzC;;OAEG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAIhD;;;;OAIG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAU9C;;;;OAIG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAI1D;;;;OAIG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAUxD;;;;;OAKG;IACI,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM;IAOnD;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;
|
1
|
+
{"version":3,"file":"AsyncTaskManager.d.ts","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":";AAOA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,sBAAsB,CAAiC;IAC/D,OAAO,CAAC,0BAA0B,CAAyB;IAE3D;;;;OAIG;IACI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOzC;;OAEG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAIhD;;;;OAIG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAU9C;;;;OAIG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAI1D;;;;OAIG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAUxD;;;;;OAKG;IACI,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM;IAOnD;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAyBpC;;;;OAIG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CA6ChB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AsyncTaskManager.d.ts","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":";AAOA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,sBAAsB,CAAiC;IAC/D,OAAO,CAAC,0BAA0B,CAAyB;IAE3D;;;;OAIG;IACI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOzC;;OAEG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAIhD;;;;OAIG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAU9C;;;;OAIG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAI1D;;;;OAIG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAUxD;;;;;OAKG;IACI,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM;IAOnD;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;
|
1
|
+
{"version":3,"file":"AsyncTaskManager.d.ts","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":";AAOA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,sBAAsB,CAAiC;IAC/D,OAAO,CAAC,0BAA0B,CAAyB;IAE3D;;;;OAIG;IACI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOzC;;OAEG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAIhD;;;;OAIG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAU9C;;;;OAIG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAI1D;;;;OAIG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,IAAI;IAUxD;;;;;OAKG;IACI,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM;IAOnD;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAyBpC;;;;OAIG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CA6ChB"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
// We need to set this as a global constant, so that using fake timers in Jest and Vitest won't override this on the global object.
|
2
2
|
const TIMER = {
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
setTimeout: globalThis.setTimeout.bind(globalThis),
|
4
|
+
clearTimeout: globalThis.clearTimeout.bind(globalThis),
|
5
|
+
clearImmediate: globalThis.clearImmediate.bind(globalThis)
|
6
6
|
};
|
7
7
|
/**
|
8
8
|
* Handles async tasks.
|
@@ -105,17 +105,20 @@ class AsyncTaskManager {
|
|
105
105
|
delete this.runningTasks[taskID];
|
106
106
|
this.runningTaskCount--;
|
107
107
|
if (this.waitUntilCompleteTimer) {
|
108
|
-
TIMER.
|
108
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
109
109
|
}
|
110
110
|
if (!this.runningTaskCount && !this.runningTimers.length && !this.runningImmediates.length) {
|
111
|
-
|
111
|
+
// In some cases, microtasks are used by transformed code and waitUntilComplete() is then resolved too early.
|
112
|
+
// To cater for this we use setTimeout() which has the lowest priority and will be executed last.
|
113
|
+
// "10ms" is an arbitrary value, but it seem to be enough when performing many manual tests.
|
114
|
+
this.waitUntilCompleteTimer = TIMER.setTimeout(() => {
|
112
115
|
this.waitUntilCompleteTimer = null;
|
113
116
|
if (!this.runningTaskCount &&
|
114
117
|
!this.runningTimers.length &&
|
115
118
|
!this.runningImmediates.length) {
|
116
119
|
this.resolveWhenComplete();
|
117
120
|
}
|
118
|
-
});
|
121
|
+
}, 10);
|
119
122
|
}
|
120
123
|
}
|
121
124
|
}
|
@@ -160,7 +163,7 @@ class AsyncTaskManager {
|
|
160
163
|
this.runningImmediates = [];
|
161
164
|
this.runningTimers = [];
|
162
165
|
if (this.waitUntilCompleteTimer) {
|
163
|
-
TIMER.
|
166
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
164
167
|
this.waitUntilCompleteTimer = null;
|
165
168
|
}
|
166
169
|
for (const immediate of runningImmediates) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AsyncTaskManager.js","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":"AAAA,mIAAmI;AACnI,MAAM,KAAK,GAAG;IACb,
|
1
|
+
{"version":3,"file":"AsyncTaskManager.js","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
// We need to set this as a global constant, so that using fake timers in Jest and Vitest won't override this on the global object.
|
2
2
|
const TIMER = {
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
setTimeout: globalThis.setTimeout.bind(globalThis),
|
4
|
+
clearTimeout: globalThis.clearTimeout.bind(globalThis),
|
5
|
+
clearImmediate: globalThis.clearImmediate.bind(globalThis)
|
6
6
|
};
|
7
7
|
|
8
8
|
/**
|
@@ -114,10 +114,13 @@ export default class AsyncTaskManager {
|
|
114
114
|
delete this.runningTasks[taskID];
|
115
115
|
this.runningTaskCount--;
|
116
116
|
if (this.waitUntilCompleteTimer) {
|
117
|
-
TIMER.
|
117
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
118
118
|
}
|
119
119
|
if (!this.runningTaskCount && !this.runningTimers.length && !this.runningImmediates.length) {
|
120
|
-
|
120
|
+
// In some cases, microtasks are used by transformed code and waitUntilComplete() is then resolved too early.
|
121
|
+
// To cater for this we use setTimeout() which has the lowest priority and will be executed last.
|
122
|
+
// "10ms" is an arbitrary value, but it seem to be enough when performing many manual tests.
|
123
|
+
this.waitUntilCompleteTimer = TIMER.setTimeout(() => {
|
121
124
|
this.waitUntilCompleteTimer = null;
|
122
125
|
if (
|
123
126
|
!this.runningTaskCount &&
|
@@ -126,7 +129,7 @@ export default class AsyncTaskManager {
|
|
126
129
|
) {
|
127
130
|
this.resolveWhenComplete();
|
128
131
|
}
|
129
|
-
});
|
132
|
+
}, 10);
|
130
133
|
}
|
131
134
|
}
|
132
135
|
}
|
@@ -177,7 +180,7 @@ export default class AsyncTaskManager {
|
|
177
180
|
this.runningTimers = [];
|
178
181
|
|
179
182
|
if (this.waitUntilCompleteTimer) {
|
180
|
-
TIMER.
|
183
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
181
184
|
this.waitUntilCompleteTimer = null;
|
182
185
|
}
|
183
186
|
|