happy-dom 14.11.2 → 14.11.3
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 +8 -6
- 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 +8 -6
- package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
- package/package.json +1 -1
- package/src/async-task-manager/AsyncTaskManager.ts +8 -6
@@ -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,10 +107,12 @@ 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
|
+
this.waitUntilCompleteTimer = TIMER.setTimeout(() => {
|
114
116
|
this.waitUntilCompleteTimer = null;
|
115
117
|
if (!this.runningTaskCount &&
|
116
118
|
!this.runningTimers.length &&
|
@@ -162,7 +164,7 @@ class AsyncTaskManager {
|
|
162
164
|
this.runningImmediates = [];
|
163
165
|
this.runningTimers = [];
|
164
166
|
if (this.waitUntilCompleteTimer) {
|
165
|
-
TIMER.
|
167
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
166
168
|
this.waitUntilCompleteTimer = null;
|
167
169
|
}
|
168
170
|
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;IAsM5D,CAAC;IApMA;;;;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,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,CAAC,CAAC;YACJ,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;;AA3Mc,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;IAwBpC;;;;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;IAwBpC;;;;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,10 +105,12 @@ 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
|
+
this.waitUntilCompleteTimer = TIMER.setTimeout(() => {
|
112
114
|
this.waitUntilCompleteTimer = null;
|
113
115
|
if (!this.runningTaskCount &&
|
114
116
|
!this.runningTimers.length &&
|
@@ -160,7 +162,7 @@ class AsyncTaskManager {
|
|
160
162
|
this.runningImmediates = [];
|
161
163
|
this.runningTimers = [];
|
162
164
|
if (this.waitUntilCompleteTimer) {
|
163
|
-
TIMER.
|
165
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
164
166
|
this.waitUntilCompleteTimer = null;
|
165
167
|
}
|
166
168
|
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,12 @@ 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
|
+
this.waitUntilCompleteTimer = TIMER.setTimeout(() => {
|
121
123
|
this.waitUntilCompleteTimer = null;
|
122
124
|
if (
|
123
125
|
!this.runningTaskCount &&
|
@@ -177,7 +179,7 @@ export default class AsyncTaskManager {
|
|
177
179
|
this.runningTimers = [];
|
178
180
|
|
179
181
|
if (this.waitUntilCompleteTimer) {
|
180
|
-
TIMER.
|
182
|
+
TIMER.clearTimeout(this.waitUntilCompleteTimer);
|
181
183
|
this.waitUntilCompleteTimer = null;
|
182
184
|
}
|
183
185
|
|