mobx 6.9.1 → 6.10.0
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/CHANGELOG.md +10 -0
- package/dist/api/autorun.d.ts +2 -1
- package/dist/api/makeObservable.d.ts +3 -2
- package/dist/api/when.d.ts +1 -8
- package/dist/core/reaction.d.ts +2 -2
- package/dist/internal.d.ts +1 -0
- package/dist/mobx.cjs.development.js +19 -10
- package/dist/mobx.cjs.development.js.map +1 -1
- package/dist/mobx.cjs.production.min.js +1 -1
- package/dist/mobx.cjs.production.min.js.map +1 -1
- package/dist/mobx.esm.development.js +19 -10
- package/dist/mobx.esm.development.js.map +1 -1
- package/dist/mobx.esm.js +19 -10
- package/dist/mobx.esm.js.map +1 -1
- package/dist/mobx.esm.production.min.js +1 -1
- package/dist/mobx.esm.production.min.js.map +1 -1
- package/dist/mobx.umd.development.js +19 -10
- package/dist/mobx.umd.development.js.map +1 -1
- package/dist/mobx.umd.production.min.js +1 -1
- package/dist/mobx.umd.production.min.js.map +1 -1
- package/dist/types/generic-abort-signal.d.ts +6 -0
- package/package.json +1 -1
- package/src/api/autorun.ts +11 -5
- package/src/api/makeObservable.ts +4 -2
- package/src/api/when.ts +2 -9
- package/src/core/reaction.ts +10 -5
- package/src/internal.ts +1 -0
- package/src/types/generic-abort-signal.ts +7 -0
package/package.json
CHANGED
package/src/api/autorun.ts
CHANGED
|
@@ -12,7 +12,8 @@ import {
|
|
|
12
12
|
isFunction,
|
|
13
13
|
isPlainObject,
|
|
14
14
|
die,
|
|
15
|
-
allowStateChanges
|
|
15
|
+
allowStateChanges,
|
|
16
|
+
GenericAbortSignal
|
|
16
17
|
} from "../internal"
|
|
17
18
|
|
|
18
19
|
export interface IAutorunOptions {
|
|
@@ -25,6 +26,7 @@ export interface IAutorunOptions {
|
|
|
25
26
|
requiresObservable?: boolean
|
|
26
27
|
scheduler?: (callback: () => void) => any
|
|
27
28
|
onError?: (error: any) => void
|
|
29
|
+
signal?: GenericAbortSignal
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
/**
|
|
@@ -88,8 +90,10 @@ export function autorun(
|
|
|
88
90
|
view(reaction)
|
|
89
91
|
}
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
+
if(!opts?.signal?.aborted) {
|
|
94
|
+
reaction.schedule_()
|
|
95
|
+
}
|
|
96
|
+
return reaction.getDisposer_(opts?.signal)
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
export type IReactionOptions<T, FireImmediately extends boolean> = IAutorunOptions & {
|
|
@@ -178,8 +182,10 @@ export function reaction<T, FireImmediately extends boolean = false>(
|
|
|
178
182
|
firstTime = false
|
|
179
183
|
}
|
|
180
184
|
|
|
181
|
-
|
|
182
|
-
|
|
185
|
+
if(!opts?.signal?.aborted) {
|
|
186
|
+
r.schedule_()
|
|
187
|
+
}
|
|
188
|
+
return r.getDisposer_(opts?.signal)
|
|
183
189
|
}
|
|
184
190
|
|
|
185
191
|
function wrapErrorHandler(errorHandler, baseFn) {
|
|
@@ -23,10 +23,12 @@ import {
|
|
|
23
23
|
// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022
|
|
24
24
|
type NoInfer<T> = [T][T extends any ? 0 : never]
|
|
25
25
|
|
|
26
|
+
type MakeObservableOptions = Omit<CreateObservableOptions, "proxy">
|
|
27
|
+
|
|
26
28
|
export function makeObservable<T extends object, AdditionalKeys extends PropertyKey = never>(
|
|
27
29
|
target: T,
|
|
28
30
|
annotations?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,
|
|
29
|
-
options?:
|
|
31
|
+
options?: MakeObservableOptions
|
|
30
32
|
): T {
|
|
31
33
|
const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]
|
|
32
34
|
startBatch()
|
|
@@ -53,7 +55,7 @@ const keysSymbol = Symbol("mobx-keys")
|
|
|
53
55
|
export function makeAutoObservable<T extends object, AdditionalKeys extends PropertyKey = never>(
|
|
54
56
|
target: T,
|
|
55
57
|
overrides?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,
|
|
56
|
-
options?:
|
|
58
|
+
options?: MakeObservableOptions
|
|
57
59
|
): T {
|
|
58
60
|
if (__DEV__) {
|
|
59
61
|
if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {
|
package/src/api/when.ts
CHANGED
|
@@ -6,17 +6,10 @@ import {
|
|
|
6
6
|
createAction,
|
|
7
7
|
getNextId,
|
|
8
8
|
die,
|
|
9
|
-
allowStateChanges
|
|
9
|
+
allowStateChanges,
|
|
10
|
+
GenericAbortSignal
|
|
10
11
|
} from "../internal"
|
|
11
12
|
|
|
12
|
-
// https://github.com/mobxjs/mobx/issues/3582
|
|
13
|
-
interface GenericAbortSignal {
|
|
14
|
-
readonly aborted: boolean
|
|
15
|
-
onabort?: ((...args: any) => any) | null
|
|
16
|
-
addEventListener?: (...args: any) => any
|
|
17
|
-
removeEventListener?: (...args: any) => any
|
|
18
|
-
}
|
|
19
|
-
|
|
20
13
|
export interface IWhenOptions {
|
|
21
14
|
name?: string
|
|
22
15
|
timeout?: number
|
package/src/core/reaction.ts
CHANGED
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
spyReportStart,
|
|
19
19
|
startBatch,
|
|
20
20
|
trace,
|
|
21
|
-
trackDerivedFunction
|
|
21
|
+
trackDerivedFunction, GenericAbortSignal
|
|
22
22
|
} from "../internal"
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -195,10 +195,15 @@ export class Reaction implements IDerivation, IReactionPublic {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
getDisposer_(): IReactionDisposer {
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
198
|
+
getDisposer_(abortSignal?: GenericAbortSignal): IReactionDisposer {
|
|
199
|
+
const dispose = (() => {
|
|
200
|
+
this.dispose()
|
|
201
|
+
abortSignal?.removeEventListener?.("abort", dispose)
|
|
202
|
+
}) as IReactionDisposer
|
|
203
|
+
abortSignal?.addEventListener?.("abort", dispose)
|
|
204
|
+
dispose[$mobx] = this
|
|
205
|
+
|
|
206
|
+
return dispose
|
|
202
207
|
}
|
|
203
208
|
|
|
204
209
|
toString() {
|
package/src/internal.ts
CHANGED
|
@@ -18,6 +18,7 @@ export * from "./types/flowannotation"
|
|
|
18
18
|
export * from "./types/computedannotation"
|
|
19
19
|
export * from "./types/observableannotation"
|
|
20
20
|
export * from "./types/autoannotation"
|
|
21
|
+
export * from "./types/generic-abort-signal"
|
|
21
22
|
export * from "./api/observable"
|
|
22
23
|
export * from "./api/computed"
|
|
23
24
|
export * from "./core/action"
|