mutts 1.0.12 → 1.0.13
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/README.md +5 -2
- package/dist/browser.cjs +7 -3
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.ts +1407 -2
- package/dist/browser.dev.cjs +7 -3
- 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 +3 -3
- package/dist/chunks/{index-yK0HVxHv.cjs → index-CAdnMJev.cjs} +202 -79
- package/dist/chunks/index-CAdnMJev.cjs.map +1 -0
- package/dist/chunks/{index-BUop6B2U.esm.js → index-XsYTUhHx.esm.js} +200 -77
- package/dist/chunks/index-XsYTUhHx.esm.js.map +1 -0
- package/dist/chunks/{node-Dd0esp5F.cjs → node-DrrphEPf.cjs} +2 -2
- package/dist/chunks/{node-Dd0esp5F.cjs.map → node-DrrphEPf.cjs.map} +1 -1
- package/dist/chunks/{node-Bo7WU5S2.esm.js → node-NEZvVo4M.esm.js} +2 -2
- package/dist/chunks/{node-Bo7WU5S2.esm.js.map → node-NEZvVo4M.esm.js.map} +1 -1
- package/dist/chunks/{proxy-D2C49sXH.esm.js → proxy-BtmPFjSr.esm.js} +307 -66
- package/dist/chunks/proxy-BtmPFjSr.esm.js.map +1 -0
- package/dist/chunks/{proxy-BvM4yewA.cjs → proxy-DBHj3kGK.cjs} +313 -66
- package/dist/chunks/proxy-DBHj3kGK.cjs.map +1 -0
- package/dist/debug.cjs +537 -166
- package/dist/debug.cjs.map +1 -1
- package/dist/debug.d.ts +96 -80
- package/dist/debug.esm.js +533 -166
- package/dist/debug.esm.js.map +1 -1
- package/dist/devtools/panel.js.map +1 -1
- package/dist/mutts.umd.js +508 -140
- 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 +8 -4
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +2 -2
- package/dist/node.dev.cjs +8 -4
- 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-Bx2PhORg.d.ts → types.d.ts} +12 -0
- package/docs/ai/api-reference.md +102 -12
- package/docs/ai/manual.md +60 -24
- package/docs/debug-getReason.md +161 -0
- package/docs/flavored.md +98 -1
- package/docs/reactive/advanced.md +15 -2
- package/docs/reactive/attend.md +32 -0
- package/docs/reactive/core.md +40 -6
- package/docs/reactive/debugging.md +25 -2
- package/docs/reactive.md +2 -0
- package/package.json +2 -3
- package/dist/chunks/index-BUop6B2U.esm.js.map +0 -1
- package/dist/chunks/index-yK0HVxHv.cjs.map +0 -1
- package/dist/chunks/proxy-BvM4yewA.cjs.map +0 -1
- package/dist/chunks/proxy-D2C49sXH.esm.js.map +0 -1
- package/dist/index.d.ts +0 -1322
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@ Mutts is designed with a **Condensed Token Footprint**. It prioritizes high read
|
|
|
40
40
|
> [!IMPORTANT]
|
|
41
41
|
> **Are you an AI Agent?**
|
|
42
42
|
> Read the **[AI Agent Manual](./docs/ai/manual.md)** for structured protocols, introspection APIs, and error definitions designed for your reasoning loop. A comprehensive **[API Reference](./docs/ai/api-reference.md)** is also available.
|
|
43
|
+
> For documentation-aware MCP workflows, you can use **[`soup-chop`](https://www.npmjs.com/package/soup-chop)** as a documentation MCP for mutts.
|
|
43
44
|
|
|
44
45
|
---
|
|
45
46
|
|
|
@@ -240,18 +241,20 @@ A comprehensive resource management system that provides automatic cleanup for o
|
|
|
240
241
|
|
|
241
242
|
## [Flavored](./docs/flavored.md)
|
|
242
243
|
|
|
243
|
-
A utility for creating extensible functions with chainable property modifiers.
|
|
244
|
+
A utility for creating extensible functions with chainable property modifiers. The same docs section also covers `captioned`, the sibling helper for callback-first tagged-template calls.
|
|
244
245
|
|
|
245
246
|
**Key Features:**
|
|
246
247
|
- **Property-based Modifiers**: Add chainable properties to functions via getters or methods
|
|
247
248
|
- **Flavoring Robustness**: Automatic arity tracking and argument padding
|
|
248
249
|
- **Options Merging**: `flavorOptions` helper for automatic options object merging
|
|
249
250
|
- **Argument Transformation**: `createFlavor` helper for custom argument transformation
|
|
251
|
+
- **Tagged Callback Captions**: `captioned` helper for call-site naming like `` effect`name`(fn) ``
|
|
250
252
|
- **Hand-made Functions**: Return custom functions for complete control (the generic case)
|
|
251
253
|
- **Full TypeScript Support**: Proper type inference for chained modifiers
|
|
252
254
|
|
|
253
255
|
**Use Cases:**
|
|
254
|
-
- Creating functions with preset configurations (e.g., `effect.opaque
|
|
256
|
+
- Creating functions with preset configurations (e.g., `effect.opaque`)
|
|
257
|
+
- Naming callback-oriented calls like `effect`, `lift`, `watch`, `attend`, or `morph` without a separate flavor
|
|
255
258
|
- Fluent APIs for function variants
|
|
256
259
|
- Partial application with named parameters
|
|
257
260
|
- Building chainable configuration DSLs
|
package/dist/browser.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var proxy = require('./chunks/proxy-
|
|
4
|
-
var index = require('./chunks/index-
|
|
3
|
+
var proxy = require('./chunks/proxy-DBHj3kGK.cjs');
|
|
4
|
+
var index = require('./chunks/index-CAdnMJev.cjs');
|
|
5
5
|
|
|
6
6
|
const promiseContexts = new WeakMap();
|
|
7
7
|
// [HACK]: Sanitization
|
|
@@ -218,6 +218,7 @@ if (originals.queueMicrotask) {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
exports.AZone = proxy.AZone;
|
|
221
|
+
exports.CompareSymbol = proxy.CompareSymbol;
|
|
221
222
|
exports.DecoratorError = proxy.DecoratorError;
|
|
222
223
|
exports.IterableWeakMap = proxy.IterableWeakMap;
|
|
223
224
|
exports.IterableWeakSet = proxy.IterableWeakSet;
|
|
@@ -240,6 +241,7 @@ exports.asyncZone = proxy.asyncZone;
|
|
|
240
241
|
exports.atom = proxy.atom;
|
|
241
242
|
exports.atomic = proxy.atomic;
|
|
242
243
|
exports.biDi = proxy.biDi;
|
|
244
|
+
exports.captioned = proxy.captioned;
|
|
243
245
|
exports.captured = proxy.captured;
|
|
244
246
|
exports.caught = proxy.caught;
|
|
245
247
|
exports.createFlavor = proxy.createFlavor;
|
|
@@ -250,6 +252,7 @@ exports.defer = proxy.defer;
|
|
|
250
252
|
exports.devPreset = proxy.devPreset;
|
|
251
253
|
exports.effect = proxy.effect;
|
|
252
254
|
exports.effectAggregator = proxy.effectAggregator;
|
|
255
|
+
exports.effectContext = proxy.effectContext;
|
|
253
256
|
exports.flavorOptions = proxy.flavorOptions;
|
|
254
257
|
exports.flavored = proxy.flavored;
|
|
255
258
|
exports.formatCleanupReason = proxy.formatCleanupReason;
|
|
@@ -257,6 +260,7 @@ exports.getActivationLog = proxy.getActivationLog;
|
|
|
257
260
|
exports.getActiveEffect = proxy.getActiveEffect;
|
|
258
261
|
exports.getState = proxy.getState;
|
|
259
262
|
exports.hooks = proxy.hooks;
|
|
263
|
+
exports.inheritCaption = proxy.inheritCaption;
|
|
260
264
|
exports.isConstructor = proxy.isConstructor;
|
|
261
265
|
exports.isDev = proxy.isDev;
|
|
262
266
|
exports.isNonReactive = proxy.isNonReactive;
|
|
@@ -283,6 +287,7 @@ exports.touched1 = proxy.touched1;
|
|
|
283
287
|
exports.unlink = proxy.unlink;
|
|
284
288
|
exports.untracked = proxy.untracked;
|
|
285
289
|
exports.unwrap = proxy.unwrap;
|
|
290
|
+
exports.withEffectContext = proxy.withEffectContext;
|
|
286
291
|
exports.zip = proxy.zip;
|
|
287
292
|
exports.ArrayReadForward = index.ArrayReadForward;
|
|
288
293
|
exports.Destroyable = index.Destroyable;
|
|
@@ -311,7 +316,6 @@ exports.morph = index.morph;
|
|
|
311
316
|
exports.organize = index.organize;
|
|
312
317
|
exports.organized = index.organized;
|
|
313
318
|
exports.profileInfo = index.profileInfo;
|
|
314
|
-
exports.project = index.morph;
|
|
315
319
|
exports.resource = index.resource;
|
|
316
320
|
exports.setAt = index.setAt;
|
|
317
321
|
exports.throttle = index.throttle;
|
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 { 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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"}
|