mutts 1.0.13 → 1.0.15
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/BROWSER_ASYNC_POLYFILL.md +79 -0
- package/README.md +2 -2
- package/dist/browser.cjs +216 -97
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.ts +42 -9
- package/dist/browser.dev.cjs +81 -71
- package/dist/browser.dev.cjs.map +1 -1
- package/dist/browser.dev.d.ts +2 -2
- package/dist/browser.dev.esm.js +2 -2
- package/dist/browser.esm.js +137 -28
- package/dist/browser.esm.js.map +1 -1
- package/dist/chunks/{proxy-BtmPFjSr.esm.js → effects-CPjf6gNA.esm.js} +2605 -2155
- package/dist/chunks/effects-CPjf6gNA.esm.js.map +1 -0
- package/dist/chunks/{proxy-DBHj3kGK.cjs → effects-oUauWxxl.cjs} +2615 -2156
- package/dist/chunks/effects-oUauWxxl.cjs.map +1 -0
- package/dist/chunks/{index-CAdnMJev.cjs → index-Dtj2qZ0d.cjs} +418 -350
- package/dist/chunks/index-Dtj2qZ0d.cjs.map +1 -0
- package/dist/chunks/{index-XsYTUhHx.esm.js → index-YGpb1te7.esm.js} +156 -88
- package/dist/chunks/index-YGpb1te7.esm.js.map +1 -0
- package/dist/chunks/node-CKuro-Uk.cjs +187 -0
- package/dist/chunks/node-CKuro-Uk.cjs.map +1 -0
- package/dist/chunks/node-sQtns7M-.esm.js +185 -0
- package/dist/chunks/node-sQtns7M-.esm.js.map +1 -0
- package/dist/debug.cjs +76 -49
- package/dist/debug.cjs.map +1 -1
- package/dist/debug.esm.js +37 -10
- package/dist/debug.esm.js.map +1 -1
- package/dist/mutts.umd.js +4169 -3532
- package/dist/mutts.umd.js.map +1 -1
- package/dist/mutts.umd.min.js +1 -1
- package/dist/mutts.umd.min.js.map +1 -1
- package/dist/node.cjs +82 -72
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +2 -2
- package/dist/node.dev.cjs +82 -72
- package/dist/node.dev.cjs.map +1 -1
- package/dist/node.dev.d.ts +2 -2
- package/dist/node.dev.esm.js +3 -3
- package/dist/node.esm.js +3 -3
- package/dist/types.d.ts +30 -15
- package/docs/ai/api-reference.md +3 -1
- package/docs/ai/manual.md +17 -5
- package/docs/reactive/advanced.md +169 -10
- package/docs/reactive/debugging.md +15 -13
- package/docs/reactive.md +2 -1
- package/package.json +12 -7
- package/dist/chunks/index-CAdnMJev.cjs.map +0 -1
- package/dist/chunks/index-XsYTUhHx.esm.js.map +0 -1
- package/dist/chunks/node-DrrphEPf.cjs +0 -98
- package/dist/chunks/node-DrrphEPf.cjs.map +0 -1
- package/dist/chunks/node-NEZvVo4M.esm.js +0 -96
- package/dist/chunks/node-NEZvVo4M.esm.js.map +0 -1
- package/dist/chunks/proxy-BtmPFjSr.esm.js.map +0 -1
- package/dist/chunks/proxy-DBHj3kGK.cjs.map +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Browser Async Polyfill
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
In the browser, JavaScript's `Promise` implementation carries "sticky" context through its prototype chain. When a Promise is created inside a zone (e.g., with `asyncZone`), it inherits the zone's context. If this Promise is then returned to an outer scope, the zone context "leaks" - it remains attached to the Promise even after execution has left the zone.
|
|
6
|
+
|
|
7
|
+
## Solution
|
|
8
|
+
|
|
9
|
+
To prevent context leakage, mutts implements a **sanitization** mechanism for the browser environment:
|
|
10
|
+
|
|
11
|
+
### 1. Promise Sanitization
|
|
12
|
+
|
|
13
|
+
The `asyncHooks.sanitizePromise` function wraps any Promise returned from a zone in a new Promise created in the outer scope:
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
asyncHooks.sanitizePromise = (res: any) => {
|
|
17
|
+
if (res && typeof (res as any).then === 'function') {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
setTimeout(() => {
|
|
20
|
+
(res as any).then(resolve, reject)
|
|
21
|
+
}, 0)
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
return res
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
This breaks the sticky context chain by:
|
|
29
|
+
1. Creating a new Promise in the current (outer) scope
|
|
30
|
+
2. Using `setTimeout` to defer the resolution
|
|
31
|
+
3. The new Promise has no zone context from the inner scope
|
|
32
|
+
|
|
33
|
+
### 2. Promise Patching
|
|
34
|
+
|
|
35
|
+
The browser polyfill patches the global `Promise` constructor and its prototype methods (`then`, `catch`, `finally`) to capture and propagate zone context correctly through the Promise chain.
|
|
36
|
+
|
|
37
|
+
### 3. Scheduler Freezing
|
|
38
|
+
|
|
39
|
+
When the reactive system enters a broken state (unrecoverable error), all async schedulers are frozen to prevent further execution:
|
|
40
|
+
|
|
41
|
+
- `setTimeout` / `clearTimeout`
|
|
42
|
+
- `setInterval` / `clearInterval`
|
|
43
|
+
- `setImmediate` / `clearImmediate` (if available)
|
|
44
|
+
- `requestAnimationFrame` / `cancelAnimationFrame` (if available)
|
|
45
|
+
- `queueMicrotask` (if available)
|
|
46
|
+
|
|
47
|
+
This is a safety mechanism to prevent cascading errors while still allowing DOM event inspection.
|
|
48
|
+
|
|
49
|
+
## Why This is Necessary
|
|
50
|
+
|
|
51
|
+
### Node.js vs Browser
|
|
52
|
+
|
|
53
|
+
- **Node.js**: Uses `async_hooks` API which provides proper async context tracking without sticky Promise issues
|
|
54
|
+
- **Browser**: No native async context API, so mutts must implement its own mechanism using Promise prototype patching
|
|
55
|
+
|
|
56
|
+
### The "Sticky" Problem
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// Without sanitization:
|
|
60
|
+
asyncZone.with('inner-zone', async () => {
|
|
61
|
+
const promise = Promise.resolve('data')
|
|
62
|
+
return promise // This promise carries 'inner-zone' context
|
|
63
|
+
})
|
|
64
|
+
// In outer scope, the promise still thinks it's in 'inner-zone'
|
|
65
|
+
|
|
66
|
+
// With sanitization:
|
|
67
|
+
asyncZone.with('inner-zone', async () => {
|
|
68
|
+
const promise = Promise.resolve('data')
|
|
69
|
+
return sanitizePromise(promise) // Returns new promise without 'inner-zone' context
|
|
70
|
+
})
|
|
71
|
+
// In outer scope, the promise has no zone context
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Implementation Notes
|
|
75
|
+
|
|
76
|
+
- The polyfill is only applied in the browser environment
|
|
77
|
+
- Original functions are stored and can be restored
|
|
78
|
+
- The polyfill is idempotent - applying it multiple times is safe
|
|
79
|
+
- Symbol.species is overridden to return the patched Promise constructor
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ In a world of "magic" and implicit state, Mutts chooses **Affirmative Logic**: y
|
|
|
14
14
|
A surgical, proxy-based reactivity system that eliminates lifecycle choreography.
|
|
15
15
|
- **Identity-Stable**: `morph()` transforms collections lazily with element-level precision.
|
|
16
16
|
- **Dependency Tracking**: Automatic tracking through objects, arrays, maps, and prototype chains.
|
|
17
|
-
- **Robust Batching**: Nested batch support with deterministic cleanup cycles.
|
|
17
|
+
- **Robust Batching**: Nested batch support with deterministic cleanup cycles and explicit phase-token ordering.
|
|
18
18
|
- **[Read more: Reactive Core](./docs/reactive/core.md)**
|
|
19
19
|
|
|
20
20
|
### 2. Universal Async Context (Zones)
|
|
@@ -88,6 +88,7 @@ A comprehensive reactivity system. See the **[Introduction](./docs/reactive/core
|
|
|
88
88
|
- **Class Reactivity**: `@reactive` decorator and `ReactiveBase` for class-based reactivity
|
|
89
89
|
- **Reactive Mixin**: Always-reactive classes with mixin support (`Reactive`)
|
|
90
90
|
- **Back-Reference System**: Efficient change propagation through object hierarchies
|
|
91
|
+
- **Effect Ordering**: Model render phases with ordinary reactive tokens so dependent effects can run after the work they rely on
|
|
91
92
|
- **Type Safety**: Full TypeScript support with proper type inference
|
|
92
93
|
- **Performance Optimized**: Lazy back-reference creation and efficient dependency tracking
|
|
93
94
|
- **Debugging & Development**: Built-in tools like cycle detection, memoization discrepancy check and effects lineages (logical/virtual stack-trace)
|
|
@@ -261,4 +262,3 @@ A utility for creating extensible functions with chainable property modifiers. T
|
|
|
261
262
|
|
|
262
263
|
## [Utilities](./docs/utils.md)
|
|
263
264
|
Documented helper functions for collections, type checks, and debugging (zip, deepCompare, tag, etc.).
|
|
264
|
-
|
package/dist/browser.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var index = require('./chunks/index-
|
|
3
|
+
var effects = require('./chunks/effects-oUauWxxl.cjs');
|
|
4
|
+
var index = require('./chunks/index-Dtj2qZ0d.cjs');
|
|
5
5
|
|
|
6
6
|
const promiseContexts = new WeakMap();
|
|
7
7
|
// [HACK]: Sanitization
|
|
@@ -9,7 +9,7 @@ const promiseContexts = new WeakMap();
|
|
|
9
9
|
// If returned to the outer scope, that context leaks. We wrap it in a new Promise
|
|
10
10
|
// created here (in the outer scope) to break the chain and sanitize the return value.
|
|
11
11
|
// See BROWSER_ASYNC_POLYFILL.md for full details.
|
|
12
|
-
|
|
12
|
+
effects.asyncHooks.sanitizePromise = (res) => {
|
|
13
13
|
if (res && typeof res.then === 'function') {
|
|
14
14
|
return new Promise((resolve, reject) => {
|
|
15
15
|
setTimeout(() => {
|
|
@@ -21,7 +21,7 @@ proxy.asyncHooks.sanitizePromise = (res) => {
|
|
|
21
21
|
};
|
|
22
22
|
function captureRestorers() {
|
|
23
23
|
const restorers = new Set();
|
|
24
|
-
for (const hook of
|
|
24
|
+
for (const hook of effects.hooks) {
|
|
25
25
|
const restorer = hook();
|
|
26
26
|
if (restorer)
|
|
27
27
|
restorers.add(restorer);
|
|
@@ -40,28 +40,14 @@ function wrap(fn, capturedRestorers) {
|
|
|
40
40
|
return fn.apply(this, args);
|
|
41
41
|
}
|
|
42
42
|
finally {
|
|
43
|
-
|
|
44
|
-
//
|
|
45
|
-
// We might be in the middle of another promise hook trying to setup the zone
|
|
46
|
-
// TODO We might wish to have a flag :asyncZone.acquired - like a semaphore - that we falsify here and set back when we setup the zone
|
|
47
|
-
// - but this might perhaps be an overkill creating more problems than it solves
|
|
48
|
-
if (originals.queueMicrotask) {
|
|
49
|
-
// Double microtask ensures we run after the first await resumption microtask
|
|
50
|
-
originals.queueMicrotask.call(globalThis, () => {
|
|
51
|
-
originals.queueMicrotask.call(globalThis, () => {
|
|
52
|
-
originals.queueMicrotask.call(globalThis, () => {
|
|
53
|
-
for (let i = undoers.length - 1; i >= 0; i--) undoers[i]()
|
|
54
|
-
})
|
|
55
|
-
})
|
|
56
|
-
})
|
|
57
|
-
} else {
|
|
58
|
-
for (let i = undoers.length - 1; i >= 0; i--) undoers[i]()
|
|
59
|
-
}*/
|
|
43
|
+
// Browser async context is backed by sticky Promise metadata. Running undoers here
|
|
44
|
+
// breaks await propagation and can orphan reactive resource observers.
|
|
60
45
|
}
|
|
61
46
|
};
|
|
62
47
|
}
|
|
63
48
|
const GLOBAL_ORIGINALS = Symbol.for('mutts.originals');
|
|
64
49
|
const GLOBAL_PROMISE = Symbol.for('mutts.OriginalPromise');
|
|
50
|
+
const schedulerGlobal = globalThis;
|
|
65
51
|
let originals;
|
|
66
52
|
let OriginalPromise;
|
|
67
53
|
if (globalThis[GLOBAL_ORIGINALS]) {
|
|
@@ -82,9 +68,13 @@ else {
|
|
|
82
68
|
race: OriginalPromise.race,
|
|
83
69
|
any: OriginalPromise.any,
|
|
84
70
|
setTimeout: globalThis.setTimeout,
|
|
71
|
+
clearTimeout: globalThis.clearTimeout,
|
|
85
72
|
setInterval: globalThis.setInterval,
|
|
86
|
-
|
|
87
|
-
|
|
73
|
+
clearInterval: globalThis.clearInterval,
|
|
74
|
+
setImmediate: schedulerGlobal.setImmediate,
|
|
75
|
+
clearImmediate: schedulerGlobal.clearImmediate,
|
|
76
|
+
requestAnimationFrame: schedulerGlobal.requestAnimationFrame,
|
|
77
|
+
cancelAnimationFrame: schedulerGlobal.cancelAnimationFrame,
|
|
88
78
|
queueMicrotask: globalThis.queueMicrotask,
|
|
89
79
|
};
|
|
90
80
|
globalThis[GLOBAL_ORIGINALS] = originals;
|
|
@@ -97,6 +87,74 @@ if (!originals.any)
|
|
|
97
87
|
originals.any = OriginalPromise.any;
|
|
98
88
|
if (!originals.race)
|
|
99
89
|
originals.race = OriginalPromise.race;
|
|
90
|
+
if (!originals.clearTimeout)
|
|
91
|
+
originals.clearTimeout = globalThis.clearTimeout;
|
|
92
|
+
if (!originals.clearInterval)
|
|
93
|
+
originals.clearInterval = globalThis.clearInterval;
|
|
94
|
+
if (!originals.clearImmediate)
|
|
95
|
+
originals.clearImmediate = schedulerGlobal.clearImmediate;
|
|
96
|
+
if (!originals.cancelAnimationFrame)
|
|
97
|
+
originals.cancelAnimationFrame = schedulerGlobal.cancelAnimationFrame;
|
|
98
|
+
const pendingTimeouts = new Set();
|
|
99
|
+
const pendingIntervals = new Set();
|
|
100
|
+
const pendingImmediates = new Set();
|
|
101
|
+
const pendingAnimationFrames = new Set();
|
|
102
|
+
let asyncSchedulersFrozen = false;
|
|
103
|
+
function clearPendingSchedulers() {
|
|
104
|
+
for (const handle of Array.from(pendingTimeouts))
|
|
105
|
+
originals.clearTimeout.call(globalThis, handle);
|
|
106
|
+
for (const handle of Array.from(pendingIntervals))
|
|
107
|
+
originals.clearInterval.call(globalThis, handle);
|
|
108
|
+
if (originals.clearImmediate) {
|
|
109
|
+
for (const handle of Array.from(pendingImmediates)) {
|
|
110
|
+
originals.clearImmediate.call(globalThis, handle);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (originals.cancelAnimationFrame) {
|
|
114
|
+
for (const handle of Array.from(pendingAnimationFrames)) {
|
|
115
|
+
originals.cancelAnimationFrame.call(globalThis, handle);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
pendingTimeouts.clear();
|
|
119
|
+
pendingIntervals.clear();
|
|
120
|
+
pendingImmediates.clear();
|
|
121
|
+
pendingAnimationFrames.clear();
|
|
122
|
+
}
|
|
123
|
+
function freezeAsyncSchedulers() {
|
|
124
|
+
if (asyncSchedulersFrozen)
|
|
125
|
+
return;
|
|
126
|
+
asyncSchedulersFrozen = true;
|
|
127
|
+
clearPendingSchedulers();
|
|
128
|
+
}
|
|
129
|
+
function resumeAsyncSchedulers() {
|
|
130
|
+
asyncSchedulersFrozen = false;
|
|
131
|
+
}
|
|
132
|
+
function canceledTimeoutHandle() {
|
|
133
|
+
const handle = originals.setTimeout.call(globalThis, () => { }, 0);
|
|
134
|
+
originals.clearTimeout.call(globalThis, handle);
|
|
135
|
+
return handle;
|
|
136
|
+
}
|
|
137
|
+
function canceledIntervalHandle() {
|
|
138
|
+
const handle = originals.setInterval.call(globalThis, () => { }, 0);
|
|
139
|
+
originals.clearInterval.call(globalThis, handle);
|
|
140
|
+
return handle;
|
|
141
|
+
}
|
|
142
|
+
function canceledImmediateHandle() {
|
|
143
|
+
if (!originals.setImmediate || !originals.clearImmediate)
|
|
144
|
+
return undefined;
|
|
145
|
+
const handle = originals.setImmediate.call(globalThis, () => { });
|
|
146
|
+
originals.clearImmediate.call(globalThis, handle);
|
|
147
|
+
return handle;
|
|
148
|
+
}
|
|
149
|
+
function canceledAnimationFrameHandle() {
|
|
150
|
+
if (!originals.requestAnimationFrame || !originals.cancelAnimationFrame)
|
|
151
|
+
return 0;
|
|
152
|
+
const handle = originals.requestAnimationFrame.call(globalThis, () => { });
|
|
153
|
+
originals.cancelAnimationFrame.call(globalThis, handle);
|
|
154
|
+
return handle;
|
|
155
|
+
}
|
|
156
|
+
effects.onReactiveBroken(freezeAsyncSchedulers);
|
|
157
|
+
effects.onReactiveReset(resumeAsyncSchedulers);
|
|
100
158
|
function patchedThen(onFulfilled, onRejected) {
|
|
101
159
|
const context = promiseContexts.get(this) || captureRestorers();
|
|
102
160
|
const nextPromise = originals.then.call(this, wrap(onFulfilled, context), wrap(onRejected, context));
|
|
@@ -196,19 +254,70 @@ try {
|
|
|
196
254
|
catch (_e) { }
|
|
197
255
|
globalThis.Promise = PatchedPromise;
|
|
198
256
|
globalThis.setTimeout = ((callback, ...args) => {
|
|
199
|
-
|
|
257
|
+
if (asyncSchedulersFrozen)
|
|
258
|
+
return canceledTimeoutHandle();
|
|
259
|
+
const wrapped = wrap(callback);
|
|
260
|
+
const handle = originals.setTimeout.call(globalThis, (...callbackArgs) => {
|
|
261
|
+
pendingTimeouts.delete(handle);
|
|
262
|
+
wrapped(...callbackArgs);
|
|
263
|
+
}, ...args);
|
|
264
|
+
pendingTimeouts.add(handle);
|
|
265
|
+
return handle;
|
|
266
|
+
});
|
|
267
|
+
globalThis.clearTimeout = ((handle) => {
|
|
268
|
+
pendingTimeouts.delete(handle);
|
|
269
|
+
return originals.clearTimeout.call(globalThis, handle);
|
|
200
270
|
});
|
|
201
271
|
globalThis.setInterval = ((callback, ...args) => {
|
|
202
|
-
|
|
272
|
+
if (asyncSchedulersFrozen)
|
|
273
|
+
return canceledIntervalHandle();
|
|
274
|
+
const wrapped = wrap(callback);
|
|
275
|
+
const handle = originals.setInterval.call(globalThis, (...callbackArgs) => {
|
|
276
|
+
wrapped(...callbackArgs);
|
|
277
|
+
}, ...args);
|
|
278
|
+
pendingIntervals.add(handle);
|
|
279
|
+
return handle;
|
|
280
|
+
});
|
|
281
|
+
globalThis.clearInterval = ((handle) => {
|
|
282
|
+
pendingIntervals.delete(handle);
|
|
283
|
+
return originals.clearInterval.call(globalThis, handle);
|
|
203
284
|
});
|
|
204
285
|
if (originals.setImmediate) {
|
|
205
|
-
|
|
206
|
-
|
|
286
|
+
schedulerGlobal.setImmediate = ((callback, ...args) => {
|
|
287
|
+
if (asyncSchedulersFrozen)
|
|
288
|
+
return canceledImmediateHandle();
|
|
289
|
+
const wrapped = wrap(callback);
|
|
290
|
+
const handle = originals.setImmediate.call(globalThis, (...callbackArgs) => {
|
|
291
|
+
pendingImmediates.delete(handle);
|
|
292
|
+
wrapped(...callbackArgs);
|
|
293
|
+
}, ...args);
|
|
294
|
+
pendingImmediates.add(handle);
|
|
295
|
+
return handle;
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
if (originals.clearImmediate) {
|
|
299
|
+
schedulerGlobal.clearImmediate = ((handle) => {
|
|
300
|
+
pendingImmediates.delete(handle);
|
|
301
|
+
return originals.clearImmediate.call(globalThis, handle);
|
|
207
302
|
});
|
|
208
303
|
}
|
|
209
304
|
if (originals.requestAnimationFrame) {
|
|
210
305
|
globalThis.requestAnimationFrame = (callback) => {
|
|
211
|
-
|
|
306
|
+
if (asyncSchedulersFrozen)
|
|
307
|
+
return canceledAnimationFrameHandle();
|
|
308
|
+
const wrapped = wrap(callback);
|
|
309
|
+
const handle = originals.requestAnimationFrame.call(globalThis, (time) => {
|
|
310
|
+
pendingAnimationFrames.delete(handle);
|
|
311
|
+
wrapped(time);
|
|
312
|
+
});
|
|
313
|
+
pendingAnimationFrames.add(handle);
|
|
314
|
+
return handle;
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
if (originals.cancelAnimationFrame) {
|
|
318
|
+
globalThis.cancelAnimationFrame = (handle) => {
|
|
319
|
+
pendingAnimationFrames.delete(handle);
|
|
320
|
+
return originals.cancelAnimationFrame.call(globalThis, handle);
|
|
212
321
|
};
|
|
213
322
|
}
|
|
214
323
|
if (originals.queueMicrotask) {
|
|
@@ -217,78 +326,88 @@ if (originals.queueMicrotask) {
|
|
|
217
326
|
};
|
|
218
327
|
}
|
|
219
328
|
|
|
220
|
-
exports.AZone =
|
|
221
|
-
exports.CompareSymbol =
|
|
222
|
-
exports.DecoratorError =
|
|
223
|
-
exports.IterableWeakMap =
|
|
224
|
-
exports.IterableWeakSet =
|
|
225
|
-
exports.ReactiveBase =
|
|
226
|
-
exports.ReactiveError =
|
|
329
|
+
exports.AZone = effects.AZone;
|
|
330
|
+
exports.CompareSymbol = effects.CompareSymbol;
|
|
331
|
+
exports.DecoratorError = effects.DecoratorError;
|
|
332
|
+
exports.IterableWeakMap = effects.IterableWeakMap;
|
|
333
|
+
exports.IterableWeakSet = effects.IterableWeakSet;
|
|
334
|
+
exports.ReactiveBase = effects.ReactiveBase;
|
|
335
|
+
exports.ReactiveError = effects.ReactiveError;
|
|
227
336
|
Object.defineProperty(exports, "ReactiveErrorCode", {
|
|
228
337
|
enumerable: true,
|
|
229
|
-
get: function () { return
|
|
338
|
+
get: function () { return effects.ReactiveErrorCode; }
|
|
230
339
|
});
|
|
231
|
-
exports.Zone =
|
|
232
|
-
exports.ZoneAggregator =
|
|
233
|
-
exports.ZoneHistory =
|
|
234
|
-
exports.addBatchCleanup =
|
|
235
|
-
exports.addUnreactiveProps =
|
|
236
|
-
exports.arrayEquals =
|
|
237
|
-
exports.assertUntracked =
|
|
238
|
-
exports.asyncHook =
|
|
239
|
-
exports.asyncHooks =
|
|
240
|
-
exports.asyncZone =
|
|
241
|
-
exports.atom =
|
|
242
|
-
exports.atomic =
|
|
243
|
-
exports.biDi =
|
|
244
|
-
exports.captioned =
|
|
245
|
-
exports.captured =
|
|
246
|
-
exports.caught =
|
|
247
|
-
exports.createFlavor =
|
|
248
|
-
exports.debugPreset =
|
|
249
|
-
exports.decorator =
|
|
250
|
-
exports.deepCompare =
|
|
251
|
-
exports.defer =
|
|
252
|
-
exports.devPreset =
|
|
253
|
-
exports.effect =
|
|
254
|
-
exports.effectAggregator =
|
|
255
|
-
exports.effectContext =
|
|
256
|
-
exports.flavorOptions =
|
|
257
|
-
exports.flavored =
|
|
258
|
-
exports.formatCleanupReason =
|
|
259
|
-
exports.getActivationLog =
|
|
260
|
-
exports.getActiveEffect =
|
|
261
|
-
exports.getState =
|
|
262
|
-
exports.hooks =
|
|
263
|
-
exports.
|
|
264
|
-
exports.
|
|
265
|
-
exports.
|
|
266
|
-
exports.
|
|
267
|
-
exports.
|
|
268
|
-
exports.
|
|
269
|
-
exports.
|
|
270
|
-
exports.
|
|
271
|
-
exports.
|
|
272
|
-
exports.
|
|
273
|
-
exports.
|
|
274
|
-
exports.
|
|
275
|
-
exports.
|
|
276
|
-
exports.
|
|
277
|
-
exports.
|
|
278
|
-
exports.
|
|
279
|
-
exports.
|
|
280
|
-
exports.
|
|
281
|
-
exports.
|
|
282
|
-
exports.
|
|
283
|
-
exports.
|
|
284
|
-
exports.
|
|
285
|
-
exports.
|
|
286
|
-
exports.
|
|
287
|
-
exports.
|
|
288
|
-
exports.
|
|
289
|
-
exports.
|
|
290
|
-
exports.
|
|
291
|
-
exports.
|
|
340
|
+
exports.Zone = effects.Zone;
|
|
341
|
+
exports.ZoneAggregator = effects.ZoneAggregator;
|
|
342
|
+
exports.ZoneHistory = effects.ZoneHistory;
|
|
343
|
+
exports.addBatchCleanup = effects.addBatchCleanup;
|
|
344
|
+
exports.addUnreactiveProps = effects.addUnreactiveProps;
|
|
345
|
+
exports.arrayEquals = effects.arrayEquals;
|
|
346
|
+
exports.assertUntracked = effects.assertUntracked;
|
|
347
|
+
exports.asyncHook = effects.asyncHook;
|
|
348
|
+
exports.asyncHooks = effects.asyncHooks;
|
|
349
|
+
exports.asyncZone = effects.asyncZone;
|
|
350
|
+
exports.atom = effects.atom;
|
|
351
|
+
exports.atomic = effects.atomic;
|
|
352
|
+
exports.biDi = effects.biDi;
|
|
353
|
+
exports.captioned = effects.captioned;
|
|
354
|
+
exports.captured = effects.captured;
|
|
355
|
+
exports.caught = effects.caught;
|
|
356
|
+
exports.createFlavor = effects.createFlavor;
|
|
357
|
+
exports.debugPreset = effects.debugPreset;
|
|
358
|
+
exports.decorator = effects.decorator;
|
|
359
|
+
exports.deepCompare = effects.deepCompare;
|
|
360
|
+
exports.defer = effects.defer;
|
|
361
|
+
exports.devPreset = effects.devPreset;
|
|
362
|
+
exports.effect = effects.effect;
|
|
363
|
+
exports.effectAggregator = effects.effectAggregator;
|
|
364
|
+
exports.effectContext = effects.effectContext;
|
|
365
|
+
exports.flavorOptions = effects.flavorOptions;
|
|
366
|
+
exports.flavored = effects.flavored;
|
|
367
|
+
exports.formatCleanupReason = effects.formatCleanupReason;
|
|
368
|
+
exports.getActivationLog = effects.getActivationLog;
|
|
369
|
+
exports.getActiveEffect = effects.getActiveEffect;
|
|
370
|
+
exports.getState = effects.getState;
|
|
371
|
+
exports.hooks = effects.hooks;
|
|
372
|
+
exports.inert = effects.inert;
|
|
373
|
+
exports.inheritCaption = effects.inheritCaption;
|
|
374
|
+
exports.isConstructor = effects.isConstructor;
|
|
375
|
+
exports.isDev = effects.isDev;
|
|
376
|
+
exports.isNonReactive = effects.isNonReactive;
|
|
377
|
+
exports.isObject = effects.isObject;
|
|
378
|
+
exports.isProd = effects.isProd;
|
|
379
|
+
exports.isReactive = effects.isReactive;
|
|
380
|
+
exports.isReactiveBroken = effects.isReactiveBroken;
|
|
381
|
+
exports.isTest = effects.isTest;
|
|
382
|
+
exports.legacyDecorator = effects.legacyDecorator;
|
|
383
|
+
exports.link = effects.link;
|
|
384
|
+
exports.markRaw = effects.markRaw;
|
|
385
|
+
exports.markRawProps = effects.markRawProps;
|
|
386
|
+
exports.mixin = effects.mixin;
|
|
387
|
+
exports.modernDecorator = effects.modernDecorator;
|
|
388
|
+
exports.named = effects.named;
|
|
389
|
+
exports.objectToProxy = effects.objectToProxy;
|
|
390
|
+
exports.onEffectThrow = effects.onEffectThrow;
|
|
391
|
+
exports.onReactiveBroken = effects.onReactiveBroken;
|
|
392
|
+
exports.onReactiveReset = effects.onReactiveReset;
|
|
393
|
+
exports.prodPreset = effects.prodPreset;
|
|
394
|
+
exports.proxyToObject = effects.proxyToObject;
|
|
395
|
+
exports.reactive = effects.reactive;
|
|
396
|
+
exports.reactiveOptions = effects.options;
|
|
397
|
+
exports.readonlyReactive = effects.readonlyReactive;
|
|
398
|
+
exports.reset = effects.reset;
|
|
399
|
+
exports.root = effects.root;
|
|
400
|
+
exports.shallowReactive = effects.shallowReactive;
|
|
401
|
+
exports.tag = effects.tag;
|
|
402
|
+
exports.toRaw = effects.toRaw;
|
|
403
|
+
exports.touched = effects.touched;
|
|
404
|
+
exports.touched1 = effects.touched1;
|
|
405
|
+
exports.unlink = effects.unlink;
|
|
406
|
+
exports.untracked = effects.untracked;
|
|
407
|
+
exports.unwrap = effects.unwrap;
|
|
408
|
+
exports.withEffectContext = effects.withEffectContext;
|
|
409
|
+
exports.wrapInert = effects.wrapInert;
|
|
410
|
+
exports.zip = effects.zip;
|
|
292
411
|
exports.ArrayReadForward = index.ArrayReadForward;
|
|
293
412
|
exports.Destroyable = index.Destroyable;
|
|
294
413
|
exports.DestructionError = index.DestructionError;
|
package/dist/browser.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.cjs","sources":["../src/async/browser.ts"],"sourcesContent":["import { asyncHooks, hooks, type Restorer } from '.'\n\nconst promiseContexts = new WeakMap<Promise<any>, Set<Restorer>>()\n\n// [HACK]: Sanitization\n// If a Promise is created inside the zone, it carries the \"Sticky\" zone context.\n// If returned to the outer scope, that context leaks. We wrap it in a new Promise\n// created here (in the outer scope) to break the chain and sanitize the return value.\n// See BROWSER_ASYNC_POLYFILL.md for full details.\nasyncHooks.sanitizePromise = (res: any) => {\n\tif (res && typeof (res as any).then === 'function') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\t;(res as any).then(resolve, reject)\n\t\t\t}, 0)\n\t\t})\n\t}\n\treturn res\n}\n\nfunction captureRestorers() {\n\tconst restorers = new Set<Restorer>()\n\tfor (const hook of hooks) {\n\t\tconst restorer = hook()\n\t\tif (restorer) restorers.add(restorer)\n\t}\n\treturn restorers\n}\n\nfunction wrap<Args extends any[], R>(\n\tfn: ((...args: Args) => R) | null | undefined,\n\tcapturedRestorers?: Set<Restorer>\n) {\n\tif (typeof fn !== 'function') return fn\n\tconst restorers = capturedRestorers || captureRestorers()\n\treturn function (this: any, ...args: Args) {\n\t\tconst undoers: (() => void)[] = []\n\t\tfor (const restore of restorers) undoers.push(restore())\n\t\ttry {\n\t\t\treturn fn.apply(this, args)\n\t\t} finally {\n\t\t\t/* cf BROWSER_ASYNC_POLYFILL.md\n\t\t\t// Note: my fear about this code: in between 2~3~4 microtask waits, some other microtasks might have started, stopped, ...\n\t\t\t// We might be in the middle of another promise hook trying to setup the zone\n\t\t\t// TODO We might wish to have a flag :asyncZone.acquired - like a semaphore - that we falsify here and set back when we setup the zone\n\t\t\t// - but this might perhaps be an overkill creating more problems than it solves\n\t\t\tif (originals.queueMicrotask) {\n\t\t\t\t// Double microtask ensures we run after the first await resumption microtask\n\t\t\t\toriginals.queueMicrotask.call(globalThis, () => {\n\t\t\t\t\toriginals.queueMicrotask.call(globalThis, () => {\n\t\t\t\t\t\toriginals.queueMicrotask.call(globalThis, () => {\n\t\t\t\t\t\t\tfor (let i = undoers.length - 1; i >= 0; i--) undoers[i]()\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tfor (let i = undoers.length - 1; i >= 0; i--) undoers[i]()\n\t\t\t}*/\n\t\t}\n\t}\n}\n\nconst GLOBAL_ORIGINALS = Symbol.for('mutts.originals')\nconst GLOBAL_PROMISE = Symbol.for('mutts.OriginalPromise')\n\nlet originals: any\nlet OriginalPromise: any\n\nif ((globalThis as any)[GLOBAL_ORIGINALS]) {\n\toriginals = (globalThis as any)[GLOBAL_ORIGINALS]\n\tOriginalPromise = (globalThis as any)[GLOBAL_PROMISE]\n} else {\n\tOriginalPromise = globalThis.Promise\n\toriginals = {\n\t\t// biome-ignore lint/suspicious/noThenProperty: Intentional Promise.prototype patching\n\t\tthen: OriginalPromise.prototype.then,\n\t\tcatch: OriginalPromise.prototype.catch,\n\t\tfinally: OriginalPromise.prototype.finally,\n\t\tresolve: OriginalPromise.resolve,\n\t\treject: OriginalPromise.reject,\n\t\tall: OriginalPromise.all,\n\t\tallSettled: (OriginalPromise as any).allSettled,\n\t\trace: OriginalPromise.race,\n\t\tany: (OriginalPromise as any).any,\n\t\tsetTimeout: globalThis.setTimeout,\n\t\tsetInterval: globalThis.setInterval,\n\t\tsetImmediate: (globalThis as any).setImmediate,\n\t\trequestAnimationFrame: (globalThis as any).requestAnimationFrame,\n\t\tqueueMicrotask: globalThis.queueMicrotask,\n\t}\n\t;(globalThis as any)[GLOBAL_ORIGINALS] = originals\n\t;(globalThis as any)[GLOBAL_PROMISE] = OriginalPromise\n}\n\n// Ensure modern statics are captured even if originals was cached from an older version\nif (!originals.allSettled) originals.allSettled = (OriginalPromise as any).allSettled\nif (!originals.any) originals.any = (OriginalPromise as any).any\nif (!originals.race) originals.race = OriginalPromise.race\n\nfunction patchedThen(this: any, onFulfilled: any, onRejected: any) {\n\tconst context = promiseContexts.get(this) || captureRestorers()\n\tconst nextPromise = originals.then.call(\n\t\tthis,\n\t\twrap(onFulfilled, context),\n\t\twrap(onRejected, context)\n\t)\n\tif (context.size > 0) promiseContexts.set(nextPromise, context)\n\treturn nextPromise\n}\n\nfunction patchedCatch(this: any, onRejected: any) {\n\tconst context = promiseContexts.get(this) || captureRestorers()\n\tconst nextPromise = originals.catch.call(this, wrap(onRejected, context))\n\tif (context.size > 0) promiseContexts.set(nextPromise, context)\n\treturn nextPromise\n}\n\nfunction patchedFinally(this: any, onFinally: any) {\n\tconst context = promiseContexts.get(this) || captureRestorers()\n\tconst nextPromise = originals.finally.call(this, wrap(onFinally, context))\n\tif (context.size > 0) promiseContexts.set(nextPromise, context)\n\treturn nextPromise\n}\n\nfunction PatchedPromise<T>(\n\tthis: any,\n\texecutor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void\n) {\n\tif (typeof executor === 'function') {\n\t\tconst p = new OriginalPromise((resolve, reject) => {\n\t\t\tconst wrappedResolve = wrap(resolve)\n\t\t\tconst wrappedReject = wrap(reject)\n\t\t\texecutor(wrappedResolve, wrappedReject)\n\t\t})\n\t\tconst context = captureRestorers()\n\t\tpromiseContexts.set(p, context) // Always set, even if empty (Sticky Root)\n\t\treturn p\n\t}\n\treturn new OriginalPromise(executor)\n}\n\n// Copy statics\nObject.assign(PatchedPromise, OriginalPromise as any)\n\n// Inherit prototype for instanceof checks\nPatchedPromise.prototype = OriginalPromise.prototype\n\nPatchedPromise.resolve = (<T>(value?: T | PromiseLike<T>): Promise<T> => {\n\tconst p = originals.resolve.call(OriginalPromise, value) as Promise<T>\n\tconst context = captureRestorers()\n\t// Ensure we don't overwrite if it already has context (e.g. from constructor)\n\tif (context.size > 0 && !promiseContexts.has(p)) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.reject = (<T = never>(reason?: any): Promise<T> => {\n\tconst p = originals.reject.call(OriginalPromise, reason) as Promise<T>\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.all = (<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]> => {\n\tconst p = originals.all.call(OriginalPromise, values) as Promise<Awaited<T>[]>\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.allSettled = (<T>(\n\tvalues: Iterable<T | PromiseLike<T>>\n): Promise<PromiseSettledResult<Awaited<T>>[]> => {\n\tconst p = (originals.allSettled as any).call(OriginalPromise, values)\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.race = (<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>> => {\n\tconst p = originals.race.call(OriginalPromise, values) as Promise<Awaited<T>>\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.any = (<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>> => {\n\tconst p = (originals.any as any).call(OriginalPromise, values)\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\n// Only apply patches if not already applied (or re-apply safely)\n// Note: OriginalPromise.prototype might be shared if we used the global one.\n// We must ensure we don't patch it twice if it's the SAME object.\nif (OriginalPromise.prototype.then !== patchedThen) {\n\t// biome-ignore lint/suspicious/noThenProperty: Intentional Promise.prototype patching\n\tOriginalPromise.prototype.then = patchedThen as any\n\tOriginalPromise.prototype.catch = patchedCatch as any\n\tOriginalPromise.prototype.finally = patchedFinally as any\n}\n\ntry {\n\tObject.defineProperty(OriginalPromise, Symbol.species, {\n\t\tget: () => PatchedPromise,\n\t\tconfigurable: true,\n\t})\n} catch (_e) {}\n\n;(globalThis as any).Promise = PatchedPromise\n\nglobalThis.setTimeout = ((callback: Function, ...args: any[]) => {\n\treturn originals.setTimeout.call(globalThis, wrap(callback as any), ...args)\n}) as any\n\nglobalThis.setInterval = ((callback: Function, ...args: any[]) => {\n\treturn originals.setInterval.call(globalThis, wrap(callback as any), ...args)\n}) as any\n\nif (originals.setImmediate) {\n\t;(globalThis as any).setImmediate = ((callback: Function, ...args: any[]) => {\n\t\treturn originals.setImmediate.call(globalThis, wrap(callback as any), ...args)\n\t}) as any\n}\n\nif (originals.requestAnimationFrame) {\n\tglobalThis.requestAnimationFrame = (callback: FrameRequestCallback) => {\n\t\treturn originals.requestAnimationFrame.call(globalThis, wrap(callback))\n\t}\n}\n\nif (originals.queueMicrotask) {\n\tglobalThis.queueMicrotask = (callback: VoidFunction): void => {\n\t\toriginals.queueMicrotask.call(globalThis, wrap(callback))\n\t}\n}\n"],"names":["asyncHooks","hooks"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.cjs","sources":["../src/async/browser.ts"],"sourcesContent":["import { onReactiveBroken, onReactiveReset } from '../reactive/effects'\nimport { asyncHooks, hooks, type Restorer } from '.'\n\nconst promiseContexts = new WeakMap<Promise<any>, Set<Restorer>>()\n\n// [HACK]: Sanitization\n// If a Promise is created inside the zone, it carries the \"Sticky\" zone context.\n// If returned to the outer scope, that context leaks. We wrap it in a new Promise\n// created here (in the outer scope) to break the chain and sanitize the return value.\n// See BROWSER_ASYNC_POLYFILL.md for full details.\nasyncHooks.sanitizePromise = (res: any) => {\n\tif (res && typeof (res as any).then === 'function') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\t;(res as any).then(resolve, reject)\n\t\t\t}, 0)\n\t\t})\n\t}\n\treturn res\n}\n\nfunction captureRestorers() {\n\tconst restorers = new Set<Restorer>()\n\tfor (const hook of hooks) {\n\t\tconst restorer = hook()\n\t\tif (restorer) restorers.add(restorer)\n\t}\n\treturn restorers\n}\n\nfunction wrap<Args extends any[], R>(\n\tfn: ((...args: Args) => R) | null | undefined,\n\tcapturedRestorers?: Set<Restorer>\n) {\n\tif (typeof fn !== 'function') return fn\n\tconst restorers = capturedRestorers || captureRestorers()\n\treturn function (this: any, ...args: Args) {\n\t\tconst undoers: (() => void)[] = []\n\t\tfor (const restore of restorers) undoers.push(restore())\n\t\ttry {\n\t\t\treturn fn.apply(this, args)\n\t\t} finally {\n\t\t\t// Browser async context is backed by sticky Promise metadata. Running undoers here\n\t\t\t// breaks await propagation and can orphan reactive resource observers.\n\t\t}\n\t}\n}\n\nconst GLOBAL_ORIGINALS = Symbol.for('mutts.originals')\nconst GLOBAL_PROMISE = Symbol.for('mutts.OriginalPromise')\n\ntype SchedulerGlobal = typeof globalThis & {\n\tsetImmediate?: typeof setImmediate\n\tclearImmediate?: typeof clearImmediate\n\trequestAnimationFrame?: typeof requestAnimationFrame\n\tcancelAnimationFrame?: typeof cancelAnimationFrame\n}\n\nconst schedulerGlobal = globalThis as SchedulerGlobal\n\nlet originals: any\nlet OriginalPromise: any\n\nif ((globalThis as any)[GLOBAL_ORIGINALS]) {\n\toriginals = (globalThis as any)[GLOBAL_ORIGINALS]\n\tOriginalPromise = (globalThis as any)[GLOBAL_PROMISE]\n} else {\n\tOriginalPromise = globalThis.Promise\n\toriginals = {\n\t\t// biome-ignore lint/suspicious/noThenProperty: Intentional Promise.prototype patching\n\t\tthen: OriginalPromise.prototype.then,\n\t\tcatch: OriginalPromise.prototype.catch,\n\t\tfinally: OriginalPromise.prototype.finally,\n\t\tresolve: OriginalPromise.resolve,\n\t\treject: OriginalPromise.reject,\n\t\tall: OriginalPromise.all,\n\t\tallSettled: (OriginalPromise as any).allSettled,\n\t\trace: OriginalPromise.race,\n\t\tany: (OriginalPromise as any).any,\n\t\tsetTimeout: globalThis.setTimeout,\n\t\tclearTimeout: globalThis.clearTimeout,\n\t\tsetInterval: globalThis.setInterval,\n\t\tclearInterval: globalThis.clearInterval,\n\t\tsetImmediate: schedulerGlobal.setImmediate,\n\t\tclearImmediate: schedulerGlobal.clearImmediate,\n\t\trequestAnimationFrame: schedulerGlobal.requestAnimationFrame,\n\t\tcancelAnimationFrame: schedulerGlobal.cancelAnimationFrame,\n\t\tqueueMicrotask: globalThis.queueMicrotask,\n\t}\n\t;(globalThis as any)[GLOBAL_ORIGINALS] = originals\n\t;(globalThis as any)[GLOBAL_PROMISE] = OriginalPromise\n}\n\n// Ensure modern statics are captured even if originals was cached from an older version\nif (!originals.allSettled) originals.allSettled = (OriginalPromise as any).allSettled\nif (!originals.any) originals.any = (OriginalPromise as any).any\nif (!originals.race) originals.race = OriginalPromise.race\nif (!originals.clearTimeout) originals.clearTimeout = globalThis.clearTimeout\nif (!originals.clearInterval) originals.clearInterval = globalThis.clearInterval\nif (!originals.clearImmediate) originals.clearImmediate = schedulerGlobal.clearImmediate\nif (!originals.cancelAnimationFrame)\n\toriginals.cancelAnimationFrame = schedulerGlobal.cancelAnimationFrame\n\nconst pendingTimeouts = new Set<unknown>()\nconst pendingIntervals = new Set<unknown>()\nconst pendingImmediates = new Set<unknown>()\nconst pendingAnimationFrames = new Set<unknown>()\nlet asyncSchedulersFrozen = false\n\nfunction clearPendingSchedulers() {\n\tfor (const handle of Array.from(pendingTimeouts)) originals.clearTimeout.call(globalThis, handle)\n\tfor (const handle of Array.from(pendingIntervals))\n\t\toriginals.clearInterval.call(globalThis, handle)\n\tif (originals.clearImmediate) {\n\t\tfor (const handle of Array.from(pendingImmediates)) {\n\t\t\toriginals.clearImmediate.call(globalThis, handle)\n\t\t}\n\t}\n\tif (originals.cancelAnimationFrame) {\n\t\tfor (const handle of Array.from(pendingAnimationFrames)) {\n\t\t\toriginals.cancelAnimationFrame.call(globalThis, handle)\n\t\t}\n\t}\n\tpendingTimeouts.clear()\n\tpendingIntervals.clear()\n\tpendingImmediates.clear()\n\tpendingAnimationFrames.clear()\n}\n\nfunction freezeAsyncSchedulers() {\n\tif (asyncSchedulersFrozen) return\n\tasyncSchedulersFrozen = true\n\tclearPendingSchedulers()\n}\n\nfunction resumeAsyncSchedulers() {\n\tasyncSchedulersFrozen = false\n}\n\nfunction canceledTimeoutHandle() {\n\tconst handle = originals.setTimeout.call(globalThis, () => {}, 0)\n\toriginals.clearTimeout.call(globalThis, handle)\n\treturn handle\n}\n\nfunction canceledIntervalHandle() {\n\tconst handle = originals.setInterval.call(globalThis, () => {}, 0)\n\toriginals.clearInterval.call(globalThis, handle)\n\treturn handle\n}\n\nfunction canceledImmediateHandle() {\n\tif (!originals.setImmediate || !originals.clearImmediate) return undefined\n\tconst handle = originals.setImmediate.call(globalThis, () => {})\n\toriginals.clearImmediate.call(globalThis, handle)\n\treturn handle\n}\n\nfunction canceledAnimationFrameHandle() {\n\tif (!originals.requestAnimationFrame || !originals.cancelAnimationFrame) return 0\n\tconst handle = originals.requestAnimationFrame.call(globalThis, () => {})\n\toriginals.cancelAnimationFrame.call(globalThis, handle)\n\treturn handle\n}\n\nonReactiveBroken(freezeAsyncSchedulers)\nonReactiveReset(resumeAsyncSchedulers)\n\nfunction patchedThen(this: any, onFulfilled: any, onRejected: any) {\n\tconst context = promiseContexts.get(this) || captureRestorers()\n\tconst nextPromise = originals.then.call(\n\t\tthis,\n\t\twrap(onFulfilled, context),\n\t\twrap(onRejected, context)\n\t)\n\tif (context.size > 0) promiseContexts.set(nextPromise, context)\n\treturn nextPromise\n}\n\nfunction patchedCatch(this: any, onRejected: any) {\n\tconst context = promiseContexts.get(this) || captureRestorers()\n\tconst nextPromise = originals.catch.call(this, wrap(onRejected, context))\n\tif (context.size > 0) promiseContexts.set(nextPromise, context)\n\treturn nextPromise\n}\n\nfunction patchedFinally(this: any, onFinally: any) {\n\tconst context = promiseContexts.get(this) || captureRestorers()\n\tconst nextPromise = originals.finally.call(this, wrap(onFinally, context))\n\tif (context.size > 0) promiseContexts.set(nextPromise, context)\n\treturn nextPromise\n}\n\nfunction PatchedPromise<T>(\n\tthis: any,\n\texecutor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void\n) {\n\tif (typeof executor === 'function') {\n\t\tconst p = new OriginalPromise((resolve, reject) => {\n\t\t\tconst wrappedResolve = wrap(resolve)\n\t\t\tconst wrappedReject = wrap(reject)\n\t\t\texecutor(wrappedResolve, wrappedReject)\n\t\t})\n\t\tconst context = captureRestorers()\n\t\tpromiseContexts.set(p, context) // Always set, even if empty (Sticky Root)\n\t\treturn p\n\t}\n\treturn new OriginalPromise(executor)\n}\n\n// Copy statics\nObject.assign(PatchedPromise, OriginalPromise as any)\n\n// Inherit prototype for instanceof checks\nPatchedPromise.prototype = OriginalPromise.prototype\n\nPatchedPromise.resolve = (<T>(value?: T | PromiseLike<T>): Promise<T> => {\n\tconst p = originals.resolve.call(OriginalPromise, value) as Promise<T>\n\tconst context = captureRestorers()\n\t// Ensure we don't overwrite if it already has context (e.g. from constructor)\n\tif (context.size > 0 && !promiseContexts.has(p)) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.reject = (<T = never>(reason?: any): Promise<T> => {\n\tconst p = originals.reject.call(OriginalPromise, reason) as Promise<T>\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.all = (<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]> => {\n\tconst p = originals.all.call(OriginalPromise, values) as Promise<Awaited<T>[]>\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.allSettled = (<T>(\n\tvalues: Iterable<T | PromiseLike<T>>\n): Promise<PromiseSettledResult<Awaited<T>>[]> => {\n\tconst p = (originals.allSettled as any).call(OriginalPromise, values)\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.race = (<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>> => {\n\tconst p = originals.race.call(OriginalPromise, values) as Promise<Awaited<T>>\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\nPatchedPromise.any = (<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>> => {\n\tconst p = (originals.any as any).call(OriginalPromise, values)\n\tconst context = captureRestorers()\n\tif (context.size > 0) promiseContexts.set(p, context)\n\treturn p\n}) as any\n\n// Only apply patches if not already applied (or re-apply safely)\n// Note: OriginalPromise.prototype might be shared if we used the global one.\n// We must ensure we don't patch it twice if it's the SAME object.\nif (OriginalPromise.prototype.then !== patchedThen) {\n\t// biome-ignore lint/suspicious/noThenProperty: Intentional Promise.prototype patching\n\tOriginalPromise.prototype.then = patchedThen as any\n\tOriginalPromise.prototype.catch = patchedCatch as any\n\tOriginalPromise.prototype.finally = patchedFinally as any\n}\n\ntry {\n\tObject.defineProperty(OriginalPromise, Symbol.species, {\n\t\tget: () => PatchedPromise,\n\t\tconfigurable: true,\n\t})\n} catch (_e) {}\n\n;(globalThis as any).Promise = PatchedPromise\n\nglobalThis.setTimeout = ((callback: Function, ...args: any[]) => {\n\tif (asyncSchedulersFrozen) return canceledTimeoutHandle()\n\tconst wrapped = wrap(callback as any)\n\tconst handle = originals.setTimeout.call(\n\t\tglobalThis,\n\t\t(...callbackArgs: any[]) => {\n\t\t\tpendingTimeouts.delete(handle)\n\t\t\twrapped(...callbackArgs)\n\t\t},\n\t\t...args\n\t)\n\tpendingTimeouts.add(handle)\n\treturn handle\n}) as typeof globalThis.setTimeout\n\nglobalThis.clearTimeout = ((handle?: unknown) => {\n\tpendingTimeouts.delete(handle)\n\treturn originals.clearTimeout.call(globalThis, handle)\n}) as typeof globalThis.clearTimeout\n\nglobalThis.setInterval = ((callback: Function, ...args: any[]) => {\n\tif (asyncSchedulersFrozen) return canceledIntervalHandle()\n\tconst wrapped = wrap(callback as any)\n\tconst handle = originals.setInterval.call(\n\t\tglobalThis,\n\t\t(...callbackArgs: any[]) => {\n\t\t\twrapped(...callbackArgs)\n\t\t},\n\t\t...args\n\t)\n\tpendingIntervals.add(handle)\n\treturn handle\n}) as typeof globalThis.setInterval\n\nglobalThis.clearInterval = ((handle?: unknown) => {\n\tpendingIntervals.delete(handle)\n\treturn originals.clearInterval.call(globalThis, handle)\n}) as typeof globalThis.clearInterval\n\nif (originals.setImmediate) {\n\tschedulerGlobal.setImmediate = ((callback: Function, ...args: any[]) => {\n\t\tif (asyncSchedulersFrozen) return canceledImmediateHandle()\n\t\tconst wrapped = wrap(callback as any)\n\t\tconst handle = originals.setImmediate.call(\n\t\t\tglobalThis,\n\t\t\t(...callbackArgs: any[]) => {\n\t\t\t\tpendingImmediates.delete(handle)\n\t\t\t\twrapped(...callbackArgs)\n\t\t\t},\n\t\t\t...args\n\t\t)\n\t\tpendingImmediates.add(handle)\n\t\treturn handle\n\t}) as typeof setImmediate\n}\n\nif (originals.clearImmediate) {\n\tschedulerGlobal.clearImmediate = ((handle?: unknown) => {\n\t\tpendingImmediates.delete(handle)\n\t\treturn originals.clearImmediate.call(globalThis, handle)\n\t}) as typeof clearImmediate\n}\n\nif (originals.requestAnimationFrame) {\n\tglobalThis.requestAnimationFrame = (callback: FrameRequestCallback) => {\n\t\tif (asyncSchedulersFrozen) return canceledAnimationFrameHandle()\n\t\tconst wrapped = wrap(callback)\n\t\tconst handle = originals.requestAnimationFrame.call(globalThis, (time: DOMHighResTimeStamp) => {\n\t\t\tpendingAnimationFrames.delete(handle)\n\t\t\twrapped(time)\n\t\t})\n\t\tpendingAnimationFrames.add(handle)\n\t\treturn handle\n\t}\n}\n\nif (originals.cancelAnimationFrame) {\n\tglobalThis.cancelAnimationFrame = (handle: number) => {\n\t\tpendingAnimationFrames.delete(handle)\n\t\treturn originals.cancelAnimationFrame.call(globalThis, handle)\n\t}\n}\n\nif (originals.queueMicrotask) {\n\tglobalThis.queueMicrotask = (callback: VoidFunction): void => {\n\t\toriginals.queueMicrotask.call(globalThis, wrap(callback))\n\t}\n}\n"],"names":["asyncHooks","hooks","onReactiveBroken","onReactiveReset"],"mappings":"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"}
|