mutts 1.0.8 → 1.0.9
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 +19 -2
- package/dist/browser.cjs +1030 -4406
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.ts +310 -573
- package/dist/browser.esm.js +18 -24
- package/dist/browser.esm.js.map +1 -1
- package/dist/chunks/{async-browser-CA0jPWIi.cjs → async-browser-lvzLOCgk.cjs} +17 -24
- package/dist/chunks/async-browser-lvzLOCgk.cjs.map +1 -0
- package/dist/chunks/{async-core-UqHzvJ-S.cjs → async-core-CRLKP3l-.cjs} +8 -4
- package/dist/chunks/async-core-CRLKP3l-.cjs.map +1 -0
- package/dist/chunks/{async-node-BYHuGTni.cjs → async-node-C3DeIb0y.cjs} +5 -12
- package/dist/chunks/async-node-C3DeIb0y.cjs.map +1 -0
- package/dist/chunks/index-2vea86wD.esm.js +3011 -0
- package/dist/chunks/index-2vea86wD.esm.js.map +1 -0
- package/dist/chunks/index-CtA2AWl3.esm.js +4376 -0
- package/dist/chunks/index-CtA2AWl3.esm.js.map +1 -0
- package/dist/chunks/index-VTO-b2vR.cjs +4461 -0
- package/dist/chunks/index-VTO-b2vR.cjs.map +1 -0
- package/dist/{reactive → debug}/debug.d.ts +19 -8
- package/dist/debug/debug.d.ts.map +1 -0
- package/dist/debug/index.d.ts +4 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/lineage-panel.d.ts +5 -0
- package/dist/debug/lineage-panel.d.ts.map +1 -0
- package/dist/debug/lineage.d.ts +79 -0
- package/dist/debug/lineage.d.ts.map +1 -0
- package/dist/debug.cjs +35 -0
- package/dist/debug.cjs.map +1 -0
- package/dist/debug.d.ts +209 -0
- package/dist/debug.esm.js +2 -0
- package/dist/debug.esm.js.map +1 -0
- package/dist/index.d.ts +1 -13
- package/dist/mutts.umd.js +1 -1
- 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 +65 -63
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +2 -1
- package/dist/node.esm.js +5 -11
- package/dist/node.esm.js.map +1 -1
- package/dist/{async → src/async}/browser.d.ts.map +1 -1
- package/dist/{async → src/async}/index.d.ts +2 -1
- package/dist/src/async/index.d.ts.map +1 -0
- package/dist/{async → src/async}/node.d.ts.map +1 -1
- package/dist/src/decorator.d.ts.map +1 -0
- package/dist/src/destroyable.d.ts.map +1 -0
- package/dist/src/entry-browser.d.ts.map +1 -0
- package/dist/src/entry-node.d.ts.map +1 -0
- package/dist/src/eventful.d.ts +20 -0
- package/dist/src/eventful.d.ts.map +1 -0
- package/dist/src/flavored.d.ts +33 -0
- package/dist/src/flavored.d.ts.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/indexable.d.ts.map +1 -0
- package/dist/{introspection.d.ts → src/introspection.d.ts} +1 -1
- package/dist/src/introspection.d.ts.map +1 -0
- package/dist/src/iterableWeak.d.ts.map +1 -0
- package/dist/src/mixins.d.ts.map +1 -0
- package/dist/src/promiseChain.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/array.d.ts +9 -10
- package/dist/src/reactive/array.d.ts.map +1 -0
- package/dist/src/reactive/buffer.d.ts +120 -0
- package/dist/src/reactive/buffer.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/change.d.ts +2 -2
- package/dist/src/reactive/change.d.ts.map +1 -0
- package/dist/src/reactive/deep-touch.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/deep-watch-state.d.ts +3 -3
- package/dist/src/reactive/deep-watch-state.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/deep-watch.d.ts +2 -1
- package/dist/src/reactive/deep-watch.d.ts.map +1 -0
- package/dist/src/reactive/describe.d.ts +12 -0
- package/dist/src/reactive/describe.d.ts.map +1 -0
- package/dist/src/reactive/effect-context.d.ts +34 -0
- package/dist/src/reactive/effect-context.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/effects.d.ts +31 -18
- package/dist/src/reactive/effects.d.ts.map +1 -0
- package/dist/src/reactive/index.d.ts +19 -0
- package/dist/src/reactive/index.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/map.d.ts +0 -2
- package/dist/src/reactive/map.d.ts.map +1 -0
- package/dist/src/reactive/memoize.d.ts +28 -0
- package/dist/src/reactive/memoize.d.ts.map +1 -0
- package/dist/src/reactive/non-reactive-state.d.ts.map +1 -0
- package/dist/src/reactive/non-reactive.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/project.d.ts +1 -2
- package/dist/src/reactive/project.d.ts.map +1 -0
- package/dist/src/reactive/proxy-state.d.ts.map +1 -0
- package/dist/src/reactive/proxy.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/record.d.ts +2 -3
- package/dist/src/reactive/record.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/register.d.ts +61 -0
- package/dist/src/reactive/register.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/registry.d.ts +6 -5
- package/dist/src/reactive/registry.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/set.d.ts +0 -2
- package/dist/src/reactive/set.d.ts.map +1 -0
- package/dist/src/reactive/tracking.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/types.d.ts +69 -21
- package/dist/src/reactive/types.d.ts.map +1 -0
- package/dist/{reactive/interface.d.ts → src/reactive/watch.d.ts} +7 -23
- package/dist/src/reactive/watch.d.ts.map +1 -0
- package/dist/{std-decorators.d.ts → src/std-decorators.d.ts} +1 -6
- package/dist/src/std-decorators.d.ts.map +1 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/{zone.d.ts → src/zone.d.ts} +2 -2
- package/dist/src/zone.d.ts.map +1 -0
- package/dist/types-DaHFfhlN.d.ts +414 -0
- package/docs/ai/api-reference.md +1 -1
- package/docs/ai/manual.md +443 -17
- package/docs/events.md +57 -2
- package/docs/flavored.md +210 -0
- package/docs/reactive/advanced.md +2 -3
- package/docs/reactive/attend.md +143 -0
- package/docs/reactive/collections.md +55 -0
- package/docs/reactive/core.md +120 -4
- package/docs/reactive/debugging.md +8 -10
- package/docs/reactive/describe.md +85 -0
- package/docs/reactive/error-handling.md +121 -0
- package/docs/reactive/project.md +1 -1
- package/docs/reactive/scan.md +215 -0
- package/docs/reactive.md +2 -0
- package/docs/std-decorators.md +102 -51
- package/docs/zone.md +3 -7
- package/package.json +6 -1
- package/src/async/browser.ts +110 -106
- package/src/async/index.ts +15 -11
- package/src/async/node.ts +5 -17
- package/src/eventful.ts +82 -49
- package/src/flavored.ts +106 -0
- package/src/index.d.ts +12 -12
- package/src/index.ts +2 -2
- package/src/introspection.ts +1 -1
- package/src/reactive/array.ts +29 -36
- package/src/reactive/buffer.ts +187 -27
- package/src/reactive/change.ts +16 -23
- package/src/reactive/deep-touch.ts +19 -14
- package/src/reactive/deep-watch-state.ts +3 -3
- package/src/reactive/deep-watch.ts +7 -4
- package/src/reactive/describe.ts +39 -0
- package/src/reactive/effect-context.ts +69 -4
- package/src/reactive/effects.ts +445 -393
- package/src/reactive/index.ts +12 -15
- package/src/reactive/map.ts +9 -25
- package/src/reactive/memoize.ts +26 -3
- package/src/reactive/project.md +107 -0
- package/src/reactive/project.ts +48 -71
- package/src/reactive/proxy.ts +21 -3
- package/src/reactive/record.ts +30 -45
- package/src/reactive/register.ts +138 -19
- package/src/reactive/registry.ts +22 -9
- package/src/reactive/set.ts +8 -21
- package/src/reactive/tracking.ts +9 -12
- package/src/reactive/types.ts +104 -24
- package/src/reactive/{interface.ts → watch.ts} +29 -59
- package/src/std-decorators.ts +56 -17
- package/src/utils.ts +2 -3
- package/src/zone.ts +28 -24
- package/dist/async/index.d.ts.map +0 -1
- package/dist/chunks/async-browser-CA0jPWIi.cjs.map +0 -1
- package/dist/chunks/async-core-UqHzvJ-S.cjs.map +0 -1
- package/dist/chunks/async-node-BYHuGTni.cjs.map +0 -1
- package/dist/chunks/index-DhaOVusv.esm.js +0 -6411
- package/dist/chunks/index-DhaOVusv.esm.js.map +0 -1
- package/dist/decorator.d.ts.map +0 -1
- package/dist/destroyable.d.ts.map +0 -1
- package/dist/entry-browser.d.ts.map +0 -1
- package/dist/entry-node.d.ts.map +0 -1
- package/dist/eventful.d.ts +0 -18
- package/dist/eventful.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/indexable.d.ts.map +0 -1
- package/dist/introspection.d.ts.map +0 -1
- package/dist/iterableWeak.d.ts.map +0 -1
- package/dist/mixins.d.ts.map +0 -1
- package/dist/promiseChain.d.ts.map +0 -1
- package/dist/reactive/array.d.ts.map +0 -1
- package/dist/reactive/buffer.d.ts +0 -44
- package/dist/reactive/buffer.d.ts.map +0 -1
- package/dist/reactive/change.d.ts.map +0 -1
- package/dist/reactive/debug.d.ts.map +0 -1
- package/dist/reactive/deep-touch.d.ts.map +0 -1
- package/dist/reactive/deep-watch-state.d.ts.map +0 -1
- package/dist/reactive/deep-watch.d.ts.map +0 -1
- package/dist/reactive/effect-context.d.ts +0 -7
- package/dist/reactive/effect-context.d.ts.map +0 -1
- package/dist/reactive/effects.d.ts.map +0 -1
- package/dist/reactive/index.d.ts +0 -20
- package/dist/reactive/index.d.ts.map +0 -1
- package/dist/reactive/interface.d.ts.map +0 -1
- package/dist/reactive/map.d.ts.map +0 -1
- package/dist/reactive/memoize.d.ts +0 -5
- package/dist/reactive/memoize.d.ts.map +0 -1
- package/dist/reactive/non-reactive-state.d.ts.map +0 -1
- package/dist/reactive/non-reactive.d.ts.map +0 -1
- package/dist/reactive/project.d.ts.map +0 -1
- package/dist/reactive/proxy-state.d.ts.map +0 -1
- package/dist/reactive/proxy.d.ts.map +0 -1
- package/dist/reactive/record.d.ts.map +0 -1
- package/dist/reactive/register.d.ts.map +0 -1
- package/dist/reactive/registry.d.ts.map +0 -1
- package/dist/reactive/set.d.ts.map +0 -1
- package/dist/reactive/tracking.d.ts.map +0 -1
- package/dist/reactive/types.d.ts.map +0 -1
- package/dist/std-decorators.d.ts.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/zone.d.ts.map +0 -1
- package/src/reactive/debug.ts +0 -517
- /package/dist/{async → src/async}/browser.d.ts +0 -0
- /package/dist/{async → src/async}/node.d.ts +0 -0
- /package/dist/{decorator.d.ts → src/decorator.d.ts} +0 -0
- /package/dist/{destroyable.d.ts → src/destroyable.d.ts} +0 -0
- /package/dist/{entry-browser.d.ts → src/entry-browser.d.ts} +0 -0
- /package/dist/{entry-node.d.ts → src/entry-node.d.ts} +0 -0
- /package/dist/{indexable.d.ts → src/indexable.d.ts} +0 -0
- /package/dist/{iterableWeak.d.ts → src/iterableWeak.d.ts} +0 -0
- /package/dist/{mixins.d.ts → src/mixins.d.ts} +0 -0
- /package/dist/{promiseChain.d.ts → src/promiseChain.d.ts} +0 -0
- /package/dist/{reactive → src/reactive}/deep-touch.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/non-reactive-state.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/non-reactive.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/proxy-state.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/proxy.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/tracking.d.ts +0 -0
- /package/dist/{utils.d.ts → src/utils.d.ts} +0 -0
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import { decorator, type GenericClassDecorator } from '../decorator'
|
|
2
2
|
import { deepWatch } from './deep-watch'
|
|
3
|
-
import { effect
|
|
3
|
+
import { effect } from './effects'
|
|
4
4
|
import { isNonReactive, nonReactiveClass, nonReactiveObjects } from './non-reactive-state'
|
|
5
5
|
import { unwrap } from './proxy-state'
|
|
6
6
|
import { markWithRoot } from './registry'
|
|
7
7
|
import { dependant } from './tracking'
|
|
8
8
|
import {
|
|
9
|
-
type
|
|
9
|
+
type EffectAccess,
|
|
10
|
+
type EffectCleanup,
|
|
10
11
|
nonReactiveMark,
|
|
11
|
-
|
|
12
|
+
stopped,
|
|
12
13
|
unreactiveProperties,
|
|
13
14
|
} from './types'
|
|
14
15
|
|
|
15
|
-
/**
|
|
16
|
-
* Symbol for accessing the cleanup function on cleaned objects
|
|
17
|
-
*/
|
|
18
|
-
export const cleanup = Symbol('cleanup')
|
|
19
|
-
|
|
20
16
|
//#region watch
|
|
21
17
|
|
|
22
18
|
const unsetYet = Symbol('unset-yet')
|
|
@@ -38,10 +34,10 @@ export interface WatchOptions {
|
|
|
38
34
|
* @returns Cleanup function to stop watching
|
|
39
35
|
*/
|
|
40
36
|
export function watch<T>(
|
|
41
|
-
value: (dep:
|
|
37
|
+
value: (dep: EffectAccess) => T,
|
|
42
38
|
changed: (value: T, oldValue?: T) => void,
|
|
43
39
|
options?: Omit<WatchOptions, 'deep'> & { deep?: false }
|
|
44
|
-
):
|
|
40
|
+
): EffectCleanup
|
|
45
41
|
/**
|
|
46
42
|
* Watches a reactive value with deep watching enabled
|
|
47
43
|
* @param value - Function that returns the value to watch
|
|
@@ -50,10 +46,10 @@ export function watch<T>(
|
|
|
50
46
|
* @returns Cleanup function to stop watching
|
|
51
47
|
*/
|
|
52
48
|
export function watch<T extends object | any[]>(
|
|
53
|
-
value: (dep:
|
|
49
|
+
value: (dep: EffectAccess) => T,
|
|
54
50
|
changed: (value: T, oldValue?: T) => void,
|
|
55
51
|
options?: Omit<WatchOptions, 'deep'> & { deep: true }
|
|
56
|
-
):
|
|
52
|
+
): EffectCleanup
|
|
57
53
|
/**
|
|
58
54
|
* Watches a reactive object directly
|
|
59
55
|
* @param value - The reactive object to watch
|
|
@@ -65,7 +61,7 @@ export function watch<T extends object | any[]>(
|
|
|
65
61
|
value: T,
|
|
66
62
|
changed: (value: T) => void,
|
|
67
63
|
options?: WatchOptions
|
|
68
|
-
):
|
|
64
|
+
): EffectCleanup
|
|
69
65
|
|
|
70
66
|
export function watch(
|
|
71
67
|
value: any, //object | ((dep: DependencyAccess) => object),
|
|
@@ -85,7 +81,7 @@ function watchObject(
|
|
|
85
81
|
value: object,
|
|
86
82
|
changed: (value: object) => void,
|
|
87
83
|
{ immediate = false, deep = false } = {}
|
|
88
|
-
):
|
|
84
|
+
): EffectCleanup {
|
|
89
85
|
if (deep) return deepWatch(value, changed, { immediate })!
|
|
90
86
|
return effect(function watchObjectEffect() {
|
|
91
87
|
dependant(value)
|
|
@@ -95,12 +91,12 @@ function watchObject(
|
|
|
95
91
|
}
|
|
96
92
|
|
|
97
93
|
function watchCallBack<T>(
|
|
98
|
-
value: (dep:
|
|
94
|
+
value: (dep: EffectAccess) => T,
|
|
99
95
|
changed: (value: T, oldValue?: T) => void,
|
|
100
96
|
{ immediate = false, deep = false } = {}
|
|
101
|
-
):
|
|
97
|
+
): EffectCleanup {
|
|
102
98
|
let oldValue: T | typeof unsetYet = unsetYet
|
|
103
|
-
let deepCleanup:
|
|
99
|
+
let deepCleanup: EffectCleanup | undefined
|
|
104
100
|
const cbCleanup = effect(
|
|
105
101
|
markWithRoot(function watchCallBackEffect(access) {
|
|
106
102
|
const newValue = value(access)
|
|
@@ -108,17 +104,22 @@ function watchCallBack<T>(
|
|
|
108
104
|
if (oldValue === unsetYet) {
|
|
109
105
|
if (immediate) changed(newValue)
|
|
110
106
|
} else changed(newValue, oldValue)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
107
|
+
oldValue = newValue
|
|
108
|
+
if (deep) {
|
|
109
|
+
if (deepCleanup) deepCleanup()
|
|
110
|
+
deepCleanup = deepWatch(newValue as object, (value) => changed(value as T, value as T))
|
|
111
|
+
}
|
|
116
112
|
}, value)
|
|
117
113
|
)
|
|
118
|
-
return (
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
114
|
+
return Object.defineProperties(
|
|
115
|
+
() => {
|
|
116
|
+
cbCleanup()
|
|
117
|
+
if (deepCleanup) deepCleanup()
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
[stopped]: { get: () => cbCleanup[stopped] },
|
|
121
|
+
}
|
|
122
|
+
) as EffectCleanup
|
|
122
123
|
}
|
|
123
124
|
|
|
124
125
|
//#endregion
|
|
@@ -129,7 +130,7 @@ function watchCallBack<T>(
|
|
|
129
130
|
* Mark an object as non-reactive. This object and all its properties will never be made reactive.
|
|
130
131
|
* @param obj - The object to mark as non-reactive
|
|
131
132
|
*/
|
|
132
|
-
function
|
|
133
|
+
function shallowNonReactive<T>(obj: T): T {
|
|
133
134
|
obj = unwrap(obj)
|
|
134
135
|
if (isNonReactive(obj)) return obj
|
|
135
136
|
try {
|
|
@@ -152,7 +153,7 @@ function unreactiveApplication<T extends object>(
|
|
|
152
153
|
...args: (keyof T)[]
|
|
153
154
|
): GenericClassDecorator<T> | T {
|
|
154
155
|
return typeof arg1 === 'object'
|
|
155
|
-
?
|
|
156
|
+
? shallowNonReactive(arg1)
|
|
156
157
|
: (((original) => {
|
|
157
158
|
// Copy the parent's unreactive properties if they exist
|
|
158
159
|
original.prototype[unreactiveProperties] = new Set<PropertyKey>(
|
|
@@ -177,34 +178,3 @@ export const unreactive = decorator({
|
|
|
177
178
|
})
|
|
178
179
|
|
|
179
180
|
//#endregion
|
|
180
|
-
|
|
181
|
-
export function cleanedBy<T extends object>(obj: T, cleanupFn: ScopedCallback) {
|
|
182
|
-
return Object.defineProperty(obj, cleanup, {
|
|
183
|
-
value: cleanupFn,
|
|
184
|
-
writable: false,
|
|
185
|
-
enumerable: false,
|
|
186
|
-
configurable: true,
|
|
187
|
-
}) as T & { [cleanup]: ScopedCallback }
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
//#region greedy caching
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Creates a derived value that automatically recomputes when dependencies change
|
|
194
|
-
* @param compute - Function that computes the derived value
|
|
195
|
-
* @returns Object with value and cleanup function
|
|
196
|
-
*/
|
|
197
|
-
export function derived<T>(compute: (dep: DependencyAccess) => T): {
|
|
198
|
-
value: T
|
|
199
|
-
[cleanup]: ScopedCallback
|
|
200
|
-
} {
|
|
201
|
-
const rv = { value: undefined as unknown as T }
|
|
202
|
-
return cleanedBy(
|
|
203
|
-
rv,
|
|
204
|
-
untracked(() =>
|
|
205
|
-
effect(function derivedEffect(access) {
|
|
206
|
-
rv.value = compute(access)
|
|
207
|
-
})
|
|
208
|
-
)
|
|
209
|
-
)
|
|
210
|
-
}
|
package/src/std-decorators.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { decorator, type GenericClassDecorator } from './decorator'
|
|
2
|
+
import { flavored } from './flavored'
|
|
2
3
|
|
|
3
4
|
// In order to avoid async re-entrance, we could use zone.js or something like that.
|
|
4
5
|
const syncCalculating: { object: object; prop: PropertyKey }[] = []
|
|
@@ -56,26 +57,64 @@ export function cache(object: Object, propertyKey: PropertyKey, value: any) {
|
|
|
56
57
|
* @param descriptor - The descriptor properties to apply
|
|
57
58
|
* @returns A class decorator that applies the descriptor to specified properties
|
|
58
59
|
*/
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
60
|
+
export const descriptor = flavored(
|
|
61
|
+
function descriptor(descriptor: {
|
|
62
|
+
enumerable?: boolean
|
|
63
|
+
configurable?: boolean // Not modifiable once the property has been defined
|
|
64
|
+
writable?: boolean
|
|
65
|
+
}) {
|
|
66
|
+
return <T>(...properties: (keyof T)[]): GenericClassDecorator<T> =>
|
|
67
|
+
(Base) => {
|
|
68
|
+
return class extends Base {
|
|
69
|
+
constructor(...args: any[]) {
|
|
70
|
+
super(...args)
|
|
71
|
+
for (const key of properties) {
|
|
72
|
+
const existing = Object.getOwnPropertyDescriptor(this, key)
|
|
73
|
+
Object.defineProperty(this, key, Object.assign(existing || {}, descriptor))
|
|
74
|
+
}
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
/**
|
|
81
|
+
* enumerable: true
|
|
82
|
+
*/
|
|
83
|
+
get enumerable() {
|
|
84
|
+
return descriptor({ enumerable: true })
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* enumerable: false
|
|
88
|
+
*/
|
|
89
|
+
get hidden() {
|
|
90
|
+
return descriptor({ enumerable: false })
|
|
91
|
+
},
|
|
92
|
+
/**
|
|
93
|
+
* configurable: true
|
|
94
|
+
*/
|
|
95
|
+
get configurable() {
|
|
96
|
+
return descriptor({ configurable: true })
|
|
97
|
+
},
|
|
98
|
+
/**
|
|
99
|
+
* configurable: false
|
|
100
|
+
*/
|
|
101
|
+
get frozen() {
|
|
102
|
+
return descriptor({ configurable: false })
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* writable: true
|
|
106
|
+
*/
|
|
107
|
+
get writable() {
|
|
108
|
+
return descriptor({ writable: true })
|
|
109
|
+
},
|
|
110
|
+
/**
|
|
111
|
+
* writable: false
|
|
112
|
+
*/
|
|
113
|
+
get readonly() {
|
|
114
|
+
return descriptor({ writable: false })
|
|
115
|
+
},
|
|
116
|
+
}
|
|
117
|
+
)
|
|
79
118
|
|
|
80
119
|
/**
|
|
81
120
|
* Decorator that marks methods, properties, or classes as deprecated
|
package/src/utils.ts
CHANGED
|
@@ -260,7 +260,6 @@ export function deepCompare(a: any, b: any, cache = new Map<object, Set<object>>
|
|
|
260
260
|
return true
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
-
|
|
264
263
|
const contentRefs = new WeakMap<object, any>()
|
|
265
264
|
export function contentRef(container: object) {
|
|
266
265
|
if (!contentRefs.has(container))
|
|
@@ -295,7 +294,7 @@ export function named<T extends Function>(name: string, fn: T): T {
|
|
|
295
294
|
Object.defineProperty(fn, 'name', {
|
|
296
295
|
value: fn.name ? `${fn.name}::${name}` : name,
|
|
297
296
|
writable: false,
|
|
298
|
-
configurable:
|
|
297
|
+
configurable: true,
|
|
299
298
|
})
|
|
300
299
|
return fn
|
|
301
|
-
}
|
|
300
|
+
}
|
package/src/zone.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { asyncHooks } from
|
|
2
|
-
import { named, tag } from
|
|
1
|
+
import { asyncHooks } from './async'
|
|
2
|
+
import { named, tag } from './utils'
|
|
3
3
|
|
|
4
4
|
interface InternalZoneUse<T> {
|
|
5
5
|
enter(value?: T): unknown
|
|
@@ -18,20 +18,20 @@ export abstract class AZone<T> {
|
|
|
18
18
|
protected leave(entered: unknown): void {
|
|
19
19
|
this.active = entered as T | undefined
|
|
20
20
|
}
|
|
21
|
-
with<R>(value: T, fn: () => R): R {
|
|
21
|
+
with<R>(value: T | undefined, fn: () => R): R {
|
|
22
22
|
const entered = this.enter(value)
|
|
23
|
-
|
|
23
|
+
let res: R
|
|
24
24
|
try {
|
|
25
25
|
res = fn()
|
|
26
26
|
} finally {
|
|
27
27
|
this.leave(entered)
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
// [HACK]: Sanitization
|
|
30
|
+
// See BROWSER_ASYNC_POLYFILL.md
|
|
31
|
+
return asyncHooks.sanitizePromise(res) as R
|
|
32
32
|
}
|
|
33
33
|
root<R>(fn: () => R): R {
|
|
34
|
-
|
|
34
|
+
const prev = this.enter()
|
|
35
35
|
try {
|
|
36
36
|
return fn()
|
|
37
37
|
} finally {
|
|
@@ -44,48 +44,53 @@ export abstract class AZone<T> {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export type FunctionWrapper = <R>(fn
|
|
47
|
+
export type FunctionWrapper = <R>(fn: () => R) => R
|
|
48
48
|
|
|
49
49
|
export class Zone<T> extends AZone<T> {
|
|
50
50
|
active: T | undefined
|
|
51
51
|
}
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
type HistoryValue<T> = { present: T | undefined; history: Set<T> }
|
|
53
54
|
export class ZoneHistory<T> extends AZone<HistoryValue<T>> {
|
|
54
|
-
private
|
|
55
|
+
private history = new Set<T>()
|
|
55
56
|
public readonly present: AZone<T>
|
|
56
57
|
public has(value: T): boolean {
|
|
57
58
|
return this.history.has(value)
|
|
58
59
|
}
|
|
59
60
|
public some(predicate: (value: T) => boolean): boolean {
|
|
60
|
-
for(const value of this.history) if(predicate(value)) return true
|
|
61
|
+
for (const value of this.history) if (predicate(value)) return true
|
|
61
62
|
return false
|
|
62
63
|
}
|
|
63
64
|
constructor(private controlled: AZone<T> = new Zone<T>()) {
|
|
64
65
|
super()
|
|
65
66
|
const self = this
|
|
66
|
-
this.present = Object.create(
|
|
67
|
+
this.present = Object.create(
|
|
68
|
+
controlled,
|
|
67
69
|
Object.getOwnPropertyDescriptors({
|
|
68
|
-
get active() {
|
|
70
|
+
get active() {
|
|
71
|
+
return controlled.active
|
|
72
|
+
},
|
|
69
73
|
set active(value: T | undefined) {
|
|
70
74
|
controlled.active = value
|
|
71
75
|
},
|
|
72
76
|
enter(value?: T) {
|
|
73
|
-
if(value && self.history.has(value))
|
|
74
|
-
|
|
77
|
+
if (value && self.history.has(value))
|
|
78
|
+
throw new Error('ZoneHistory: re-entering historical zone')
|
|
79
|
+
if (value !== undefined) self.history.add(value)
|
|
75
80
|
return { added: value, entered: isu(controlled).enter(value) }
|
|
76
81
|
},
|
|
77
|
-
leave(entered: { added: T | undefined
|
|
78
|
-
if(entered.added !== undefined) self.history.delete(entered.added)
|
|
82
|
+
leave(entered: { added: T | undefined; entered: unknown }) {
|
|
83
|
+
if (entered.added !== undefined) self.history.delete(entered.added)
|
|
79
84
|
return isu(controlled).leave(entered.entered)
|
|
80
|
-
}
|
|
85
|
+
},
|
|
81
86
|
})
|
|
82
87
|
)
|
|
83
88
|
}
|
|
84
89
|
get active() {
|
|
85
|
-
return {present: this.controlled.active, history: new Set(this.history)}
|
|
90
|
+
return { present: this.controlled.active, history: new Set(this.history) }
|
|
86
91
|
}
|
|
87
92
|
set active(value: HistoryValue<T> | undefined) {
|
|
88
|
-
this.history =
|
|
93
|
+
this.history = value?.history ? new Set(value.history) : new Set()
|
|
89
94
|
this.controlled.active = value?.present
|
|
90
95
|
}
|
|
91
96
|
}
|
|
@@ -98,8 +103,7 @@ export class ZoneAggregator extends AZone<Map<AZone<unknown>, unknown>> {
|
|
|
98
103
|
}
|
|
99
104
|
get active(): Map<AZone<unknown>, unknown> | undefined {
|
|
100
105
|
const rv = new Map<AZone<unknown>, unknown>()
|
|
101
|
-
for (const z of this.#zones)
|
|
102
|
-
if (z.active !== undefined) rv.set(z, z.active)
|
|
106
|
+
for (const z of this.#zones) if (z.active !== undefined) rv.set(z, z.active)
|
|
103
107
|
return rv
|
|
104
108
|
}
|
|
105
109
|
set active(value: Map<AZone<unknown>, unknown> | undefined) {
|
|
@@ -133,6 +137,6 @@ asyncHooks.addHook(() => {
|
|
|
133
137
|
return () => {
|
|
134
138
|
const prev = asyncZone.active
|
|
135
139
|
asyncZone.active = zone
|
|
136
|
-
return () => asyncZone.active = prev
|
|
140
|
+
return () => (asyncZone.active = prev)
|
|
137
141
|
}
|
|
138
142
|
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,MAAM,IAAI,CAAA;AACvC,MAAM,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAA;AAEjC,eAAO,MAAM,UAAU;mBACP,IAAI,GAAG,MAAM,IAAI;IAG7B;;;;OAIG;uBACgB,GAAG,GAAG,GAAG;CAG/B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,WAlBP,IAkBoC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async-browser-CA0jPWIi.cjs","sources":["../../src/async/browser.ts"],"sourcesContent":["import { Hook, Restorer, asyncHooks } from '.'\n\nconst hooks = new Set<Hook>()\nconst promiseContexts = new WeakMap<Promise<any>, Set<Restorer>>()\n\nasyncHooks.addHook = function (hook: Hook) {\n\thooks.add(hook)\n\treturn () => {\n\t\thooks.delete(hook)\n\t}\n}\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 if (res && typeof (res as any).then === 'function') {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n (res as any).then(resolve, reject)\n }, 0)\n })\n }\n return 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>(fn: ((...args: Args) => R) | null | undefined, capturedRestorers?: Set<Restorer>) {\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\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 targetWrappers = new WeakMap<any, Map<string, WeakMap<Function, Function>>>()\n\nfunction patchEventTarget(proto: any) {\n\tif (!proto || !proto.addEventListener || !proto.removeEventListener) return\n\tconst nativeAdd = proto.addEventListener\n\tconst nativeRemove = proto.removeEventListener\n\n\tproto.addEventListener = function (this: any, type: string, listener: any, options: any) {\n\t\tif (typeof listener !== 'function') {\n\t\t\treturn nativeAdd.call(this, type, listener, options)\n\t\t}\n\n\t\tlet types = targetWrappers.get(this)\n\t\tif (!types) {\n\t\t\ttypes = new Map()\n\t\t\ttargetWrappers.set(this, types)\n\t\t}\n\t\tlet listeners = types.get(type)\n\t\tif (!listeners) {\n\t\t\tlisteners = new WeakMap()\n\t\t\ttypes.set(type, listeners)\n\t\t}\n\n\t\tlet wrapped = listeners.get(listener)\n\t\tif (!wrapped) {\n\t\t\twrapped = wrap(listener)\n\t\t\tlisteners.set(listener, wrapped)\n\t\t}\n\t\t\n\t\treturn nativeAdd.call(this, type, wrapped, options)\n\t}\n\n\tproto.removeEventListener = function (this: any, type: string, listener: any, options: any) {\n\t\tif (typeof listener !== 'function') {\n\t\t\treturn nativeRemove.call(this, type, listener, options)\n\t\t}\n\n\t\tconst types = targetWrappers.get(this)\n\t\tif (types) {\n\t\t\tconst listeners = types.get(type)\n\t\t\tif (listeners) {\n\t\t\t\tconst wrapped = listeners.get(listener)\n\t\t\t\tif (wrapped) {\n\t\t\t\t\treturn nativeRemove.call(this, type, wrapped, options)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn nativeRemove.call(this, type, listener, options)\n\t}\n}\n\nfunction patchOnProperties(proto: any) {\n\tif (!proto) return\n\tfor (const prop of Object.getOwnPropertyNames(proto)) {\n\t\tif (prop.startsWith('on')) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\t\tif (desc && desc.set && desc.configurable) {\n\t\t\t\tconst nativeSet = desc.set\n\t\t\t\tObject.defineProperty(proto, prop, {\n\t\t\t\t\t...desc,\n\t\t\t\t\tset: function (this: any, fn: any) {\n\t\t\t\t\t\tnativeSet.call(this, wrap(fn))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n}\n\nif (typeof EventTarget !== 'undefined') {\n\tpatchEventTarget(EventTarget.prototype)\n}\n\nconst prototypesToPatch = [\n\ttypeof EventTarget !== 'undefined' && EventTarget.prototype,\n\ttypeof HTMLElement !== 'undefined' && HTMLElement.prototype,\n\ttypeof Window !== 'undefined' && Window.prototype,\n\ttypeof Document !== 'undefined' && Document.prototype,\n\ttypeof MessagePort !== 'undefined' && MessagePort.prototype,\n\ttypeof XMLHttpRequest !== 'undefined' && XMLHttpRequest.prototype,\n\ttypeof IDBRequest !== 'undefined' && IDBRequest.prototype,\n\ttypeof IDBTransaction !== 'undefined' && IDBTransaction.prototype,\n\ttypeof IDBDatabase !== 'undefined' && IDBDatabase.prototype,\n\ttypeof FileReader !== 'undefined' && FileReader.prototype,\n\ttypeof AbortSignal !== 'undefined' && AbortSignal.prototype,\n]\n\nfor (const proto of prototypesToPatch) {\n\tif (proto) {\n\t\tpatchOnProperties(proto)\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 originals = (globalThis as any)[GLOBAL_ORIGINALS];\n OriginalPromise = (globalThis as any)[GLOBAL_PROMISE];\n} else {\n OriginalPromise = globalThis.Promise;\n originals = {\n then: OriginalPromise.prototype.then,\n catch: OriginalPromise.prototype.catch,\n finally: OriginalPromise.prototype.finally,\n resolve: OriginalPromise.resolve,\n reject: OriginalPromise.reject,\n all: OriginalPromise.all,\n allSettled: (OriginalPromise as any).allSettled,\n race: OriginalPromise.race,\n any: (OriginalPromise as any).any,\n setTimeout: globalThis.setTimeout,\n setInterval: globalThis.setInterval,\n setImmediate: (globalThis as any).setImmediate,\n requestAnimationFrame: (globalThis as any).requestAnimationFrame,\n queueMicrotask: globalThis.queueMicrotask,\n };\n (globalThis as any)[GLOBAL_ORIGINALS] = originals;\n (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(this, wrap(onFulfilled, context), wrap(onRejected, context))\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>(this: any, executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void) {\n if (typeof executor === 'function') {\n const p = new OriginalPromise((resolve, reject) => {\n const wrappedResolve = wrap(resolve)\n const wrappedReject = wrap(reject)\n executor(wrappedResolve, wrappedReject)\n })\n const context = captureRestorers()\n promiseContexts.set(p, context) // Always set, even if empty (Sticky Root)\n return p\n }\n return 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 = function<T>(value?: T | PromiseLike<T>): Promise<T> {\n const p = originals.resolve.call(OriginalPromise, value) as Promise<T>\n const context = captureRestorers()\n // Ensure we don't overwrite if it already has context (e.g. from constructor)\n if (context.size > 0 && !promiseContexts.has(p)) promiseContexts.set(p, context)\n return p\n} as any\n\nPatchedPromise.reject = function<T = never>(reason?: any): Promise<T> {\n const p = originals.reject.call(OriginalPromise, reason) as Promise<T>\n const context = captureRestorers()\n if (context.size > 0) promiseContexts.set(p, context)\n return p\n} as any\n\nPatchedPromise.all = function<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]> {\n const p = originals.all.call(OriginalPromise, values) as Promise<Awaited<T>[]>\n const context = captureRestorers()\n if (context.size > 0) promiseContexts.set(p, context)\n return p\n} as any\n\nPatchedPromise.allSettled = function<T>(values: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<Awaited<T>>[]> {\n const p = (originals.allSettled as any).call(OriginalPromise, values)\n const context = captureRestorers()\n if (context.size > 0) promiseContexts.set(p, context)\n return p\n} as any\n\nPatchedPromise.race = function<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>> {\n const p = originals.race.call(OriginalPromise, values) as Promise<Awaited<T>>\n const context = captureRestorers()\n if (context.size > 0) promiseContexts.set(p, context)\n return p\n} as any\n\nPatchedPromise.any = function<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>> {\n const p = (originals.any as any).call(OriginalPromise, values)\n const context = captureRestorers()\n if (context.size > 0) promiseContexts.set(p, context)\n return 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 OriginalPromise.prototype.then = patchedThen as any\n OriginalPromise.prototype.catch = patchedCatch as any\n OriginalPromise.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"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async-core-UqHzvJ-S.cjs","sources":["../../src/async/index.ts"],"sourcesContent":["export type Restorer = () => () => void\nexport type Hook = () => Restorer\n\nexport const asyncHooks = {\n\taddHook(_hook: Hook): () => void {\n\t\tthrow 'One must import the library from the server or the client side'\n\t},\n /** \n * [Hack] Sanitize a promise (or value) to prevent context leaks. \n * Default: Identity function.\n * Browser: Uses Macrotask wrapping to break microtask chains.\n */\n sanitizePromise(p: any): any {\n return p\n }\n}\n\n/**\n * Register a hook that will be called whenever an asynchronous operation is initiated.\n * The hook should return a restorer function which will be called just before the async callback runs.\n * That restorer should in turn return an undoer function which will be called just after the async callback finishes.\n */\nexport const asyncHook = (hook: Hook) => asyncHooks.addHook(hook)"],"names":[],"mappings":";;AAGO,MAAM,UAAU,GAAG;AACzB,IAAA,OAAO,CAAC,KAAW,EAAA;AAClB,QAAA,MAAM,gEAAgE;IACvE,CAAC;AACE;;;;AAIG;AACH,IAAA,eAAe,CAAC,CAAM,EAAA;AAClB,QAAA,OAAO,CAAC;IACZ;;AAGJ;;;;AAIG;AACI,MAAM,SAAS,GAAG,CAAC,IAAU,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async-node-BYHuGTni.cjs","sources":["../../src/async/node.ts"],"sourcesContent":["import { createHook } from 'node:async_hooks'\nimport { Hook, Restorer, asyncHooks } from '.'\n\n// 1. Generic async_hooks implementation for Hooks\n// This maintains support for 'asyncHooks.addHook' for generic use cases.\n\nconst hooks = new Set<Hook>()\nasyncHooks.addHook = function (hook: Hook) {\n\thooks.add(hook)\n\treturn () => {\n\t\thooks.delete(hook)\n\t}\n}\n\nconst contexts = new Map<number, Restorer[]>()\nconst activeUndoers = new Map<number, (() => void)[]>()\n\n// Helper to capture current hooks state\nfunction captureRestorers() {\n\tif (hooks.size === 0) return []\n\tconst restorers: Restorer[] = []\n\tfor (const h of hooks) {\n\t\tconst r = h()\n\t\tif (r) restorers.push(r)\n\t}\n\treturn restorers\n}\n\n// Manual Wrap function to handle Promise callbacks\nfunction wrap<Args extends any[], R>(fn: ((...args: Args) => R) | null | undefined) {\n\tif (typeof fn !== 'function') return fn\n\tconst restorers = captureRestorers()\n\tif (restorers.length === 0) return fn\n\n\treturn function (this: any, ...args: Args) {\n\t\tconst undoers: (() => void)[] = []\n\t\tfor (const restore of restorers) {\n\t\t\tconst u = restore()\n\t\t\tif (u) undoers.push(u)\n\t\t}\n\t\ttry {\n\t\t\treturn fn.apply(this, args)\n\t\t} finally {\n\t\t\tfor (let i = undoers.length - 1; i >= 0; i--) undoers[i]()\n\t\t}\n\t}\n}\n\nconst hook = createHook({\n\tinit(asyncId, type, triggerId, resource) {\n\t\t// Used for native resources like Timers\n\t\tconst restorers = captureRestorers()\n\t\tif (restorers.length > 0) contexts.set(asyncId, restorers)\n\t},\n\tbefore(asyncId) {\n\t\tconst restorers = contexts.get(asyncId)\n\t\tif (!restorers) return\n\t\tconst undoers: (() => void)[] = []\n\t\tfor (const restore of restorers) {\n\t\t\tconst u = restore()\n\t\t\tif (u) undoers.push(u)\n\t\t}\n\t\tif (undoers.length > 0) activeUndoers.set(asyncId, undoers)\n\t},\n\tafter(asyncId) {\n\t\tconst undoers = activeUndoers.get(asyncId)\n\t\tif (!undoers) return\n\t\tfor (let i = undoers.length - 1; i >= 0; i--) undoers[i]()\n\t\tactiveUndoers.delete(asyncId)\n\t},\n\tdestroy(asyncId) {\n\t\tcontexts.delete(asyncId)\n\t\tactiveUndoers.delete(asyncId)\n\t},\n})\nhook.enable()\n\n// 2. Shadow Promise Implementation\n// Ensures V8 await resumptions are visible as .then callbacks, wrapping them to restore context.\n\nconst OriginalPromise = globalThis.Promise\nconst originalMethods = {\n\tthen: OriginalPromise.prototype.then,\n\tcatch: OriginalPromise.prototype.catch,\n\tfinally: OriginalPromise.prototype.finally,\n\tresolve: OriginalPromise.resolve,\n\treject: OriginalPromise.reject,\n\tall: OriginalPromise.all,\n}\n\n\n\n// Patch prototype\nOriginalPromise.prototype.then = function(onFulfilled, onRejected) {\n\treturn originalMethods.then.call(this, wrap(onFulfilled), wrap(onRejected))\n} as any\nOriginalPromise.prototype.catch = function(onRejected) {\n\treturn originalMethods.catch.call(this, wrap(onRejected))\n} as any\nOriginalPromise.prototype.finally = function(onFinally) {\n\treturn originalMethods.finally.call(this, wrap(onFinally))\n} as any\n\n\n"],"names":["asyncHooks","createHook"],"mappings":"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"}
|