mobx-keystone 1.20.0 → 1.22.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 +864 -853
- package/README.md +61 -61
- package/dist/mobx-keystone.esm.js +11336 -11148
- package/dist/mobx-keystone.esm.mjs +11336 -11148
- package/dist/mobx-keystone.umd.js +12229 -11738
- package/dist/types/actionMiddlewares/undoMiddleware.d.ts +1 -1
- package/dist/types/modelShared/prop.d.ts +5 -0
- package/dist/types/redux/connectReduxDevTools.d.ts +17 -4
- package/dist/types/ref/Ref.d.ts +1 -1
- package/dist/types/treeUtils/sandbox.d.ts +1 -1
- package/dist/types/types/TypeChecker.d.ts +1 -1
- package/dist/types/types/arrayBased/typesArray.d.ts +1 -1
- package/dist/types/types/arrayBased/typesTuple.d.ts +1 -1
- package/dist/types/types/objectBased/typesArraySet.d.ts +1 -1
- package/dist/types/types/objectBased/typesDataModelData.d.ts +1 -1
- package/dist/types/types/objectBased/typesModel.d.ts +1 -1
- package/dist/types/types/objectBased/typesObject.d.ts +3 -3
- package/dist/types/types/objectBased/typesObjectMap.d.ts +1 -1
- package/dist/types/types/objectBased/typesRecord.d.ts +1 -1
- package/dist/types/types/primitiveBased/typesPrimitive.d.ts +1 -1
- package/dist/types/types/types.d.ts +3 -3
- package/dist/types/types/utility/typesCodec.d.ts +1 -6
- package/dist/types/types/utility/typesCodecCore.d.ts +1 -1
- package/dist/types/types/utility/typesOr.d.ts +1 -1
- package/dist/types/types/utility/typesRefinement.d.ts +1 -1
- package/dist/types/types/utility/typesSkipCheck.d.ts +1 -1
- package/dist/types/types/utility/typesTag.d.ts +1 -1
- package/dist/types/wrappers/ObjectMap.d.ts +2 -0
- package/dist/types/wrappers/asMap.d.ts +10 -6
- package/package.json +14 -12
- package/src/action/applyAction.ts +125 -114
- package/src/action/applyMethodCall.ts +37 -37
- package/src/action/isModelAction.ts +16 -16
- package/src/action/middleware.ts +137 -137
- package/src/action/modelFlow.ts +240 -240
- package/src/action/modelFlowPromiseGenerator.ts +127 -125
- package/src/action/pendingActions.ts +42 -42
- package/src/action/wrapInAction.ts +156 -156
- package/src/actionMiddlewares/actionSerialization/actionSerialization.ts +1 -1
- package/src/actionMiddlewares/actionSerialization/applySerializedAction.ts +172 -172
- package/src/actionMiddlewares/actionSerialization/arraySerializer.ts +20 -20
- package/src/actionMiddlewares/actionSerialization/dateSerializer.ts +17 -17
- package/src/actionMiddlewares/actionSerialization/mapSerializer.ts +42 -42
- package/src/actionMiddlewares/actionSerialization/objectPathSerializer.ts +50 -50
- package/src/actionMiddlewares/actionSerialization/objectSnapshotSerializer.ts +21 -21
- package/src/actionMiddlewares/actionSerialization/plainObjectSerializer.ts +24 -32
- package/src/actionMiddlewares/actionSerialization/primitiveSerializer.ts +51 -51
- package/src/actionMiddlewares/actionSerialization/setSerializer.ts +37 -37
- package/src/actionMiddlewares/actionTrackingMiddleware.ts +3 -3
- package/src/actionMiddlewares/onActionMiddleware.ts +2 -2
- package/src/actionMiddlewares/readonlyMiddleware.ts +2 -2
- package/src/actionMiddlewares/transactionMiddleware.ts +4 -4
- package/src/actionMiddlewares/undoMiddleware.ts +804 -796
- package/src/actionMiddlewares/utils.ts +2 -2
- package/src/computedTree/computedTree.ts +143 -143
- package/src/context/context.ts +1 -1
- package/src/dataModel/BaseDataModel.ts +194 -192
- package/src/dataModel/actions.ts +1 -1
- package/src/dataModel/newDataModel.ts +57 -57
- package/src/deepChange/index.ts +1 -1
- package/src/deepChange/onDeepChange.ts +244 -244
- package/src/frozen/Frozen.ts +146 -146
- package/src/globalConfig/globalConfig.ts +107 -107
- package/src/index.ts +24 -24
- package/src/model/BaseModel.ts +275 -273
- package/src/model/ModelConstructorOptions.ts +15 -15
- package/src/model/getModelMetadata.ts +51 -51
- package/src/model/index.ts +6 -6
- package/src/model/mixins.ts +288 -288
- package/src/model/newModel.ts +301 -301
- package/src/model/utils.ts +249 -249
- package/src/modelShared/modelDecorator.ts +260 -253
- package/src/modelShared/modelInfo.ts +50 -50
- package/src/modelShared/modelSymbols.ts +3 -3
- package/src/modelShared/newModel.ts +25 -25
- package/src/modelShared/prop.ts +713 -684
- package/src/modelShared/sharedInternalModel.ts +427 -417
- package/src/modelShared/utils.ts +24 -24
- package/src/parent/core.ts +65 -65
- package/src/parent/coreObjectChildren.ts +180 -180
- package/src/parent/detach.ts +47 -47
- package/src/parent/findParent.ts +1 -1
- package/src/parent/getChildrenObjects.ts +25 -25
- package/src/parent/path.ts +386 -381
- package/src/parent/setParent.ts +149 -149
- package/src/parent/walkTree.ts +1 -1
- package/src/patch/applyPatches.ts +187 -187
- package/src/patch/jsonPatch.ts +108 -108
- package/src/patch/patchRecorder.ts +6 -1
- package/src/redux/connectReduxDevTools.ts +39 -7
- package/src/redux/redux.ts +6 -2
- package/src/ref/Ref.ts +1 -1
- package/src/ref/core.ts +339 -345
- package/src/ref/customRef.ts +3 -3
- package/src/ref/rootRef.ts +100 -100
- package/src/rootStore/attachDetach.ts +89 -89
- package/src/rootStore/rootStore.ts +1 -1
- package/src/snapshot/SnapshotOf.ts +104 -104
- package/src/snapshot/SnapshotProcessingError.ts +45 -45
- package/src/snapshot/applySnapshot.ts +177 -181
- package/src/snapshot/cloneTreeValue.ts +30 -30
- package/src/snapshot/fromArraySnapshot.ts +27 -33
- package/src/snapshot/fromModelSnapshot.ts +70 -70
- package/src/snapshot/fromPlainObjectSnapshot.ts +47 -42
- package/src/snapshot/fromSnapshot.ts +198 -198
- package/src/snapshot/getSnapshot.ts +80 -79
- package/src/snapshot/index.ts +8 -8
- package/src/snapshot/internal.ts +230 -230
- package/src/snapshot/reconcileArraySnapshot.ts +70 -70
- package/src/snapshot/reconcileModelSnapshot.ts +155 -150
- package/src/snapshot/reconcilePlainObjectSnapshot.ts +72 -72
- package/src/snapshot/reconcileSnapshot.ts +88 -88
- package/src/standardActions/actions.ts +64 -64
- package/src/standardActions/objectActions.ts +60 -60
- package/src/transforms/ImmutableDate.ts +93 -93
- package/src/transforms/asMap.ts +50 -50
- package/src/transforms/asSet.ts +22 -22
- package/src/transforms/bigint.ts +20 -20
- package/src/transforms/date.ts +40 -40
- package/src/treeUtils/deepEquals.ts +55 -55
- package/src/treeUtils/sandbox.ts +6 -3
- package/src/tweaker/TweakerPriority.ts +9 -9
- package/src/tweaker/tweak.ts +4 -3
- package/src/tweaker/tweakArray.ts +530 -475
- package/src/tweaker/tweakFrozen.ts +42 -42
- package/src/tweaker/tweakModel.ts +1 -1
- package/src/tweaker/tweakPlainObject.ts +355 -355
- package/src/tweaker/typeChecking.ts +101 -101
- package/src/types/SnapshotTypeMismatchError.ts +46 -46
- package/src/types/TypeCheckError.ts +183 -184
- package/src/types/TypeChecker.ts +202 -185
- package/src/types/arrayBased/typesArray.ts +136 -137
- package/src/types/arrayBased/typesTuple.ts +138 -139
- package/src/types/createPerEntryCachedCheck.ts +166 -160
- package/src/types/index.ts +6 -6
- package/src/types/objectBased/typesArraySet.ts +133 -134
- package/src/types/objectBased/typesDataModelData.ts +203 -204
- package/src/types/objectBased/typesModel.ts +220 -221
- package/src/types/objectBased/typesObject.ts +308 -310
- package/src/types/objectBased/typesObjectMap.ts +142 -143
- package/src/types/objectBased/typesRecord.ts +156 -157
- package/src/types/objectBased/typesRef.ts +89 -89
- package/src/types/primitiveBased/typesEnum.ts +63 -63
- package/src/types/primitiveBased/typesPrimitive.ts +219 -220
- package/src/types/registerDefaultStandardTypeResolvers.ts +21 -21
- package/src/types/resolveTypeChecker.ts +78 -78
- package/src/types/schemas.ts +208 -208
- package/src/types/tProp.ts +277 -268
- package/src/types/typeCheck.ts +21 -21
- package/src/types/typeCheckErrorUtils.ts +23 -23
- package/src/types/types.ts +142 -142
- package/src/types/utility/typeToStoredData.ts +37 -37
- package/src/types/utility/typesBigInt.ts +15 -15
- package/src/types/utility/typesCodec.ts +41 -38
- package/src/types/utility/typesCodecCore.ts +178 -178
- package/src/types/utility/typesCodecSupport.ts +806 -806
- package/src/types/utility/typesDate.ts +27 -27
- package/src/types/utility/typesMap.ts +253 -222
- package/src/types/utility/typesOr.ts +263 -259
- package/src/types/utility/typesRefinement.ts +131 -125
- package/src/types/utility/typesSet.ts +110 -110
- package/src/types/utility/typesSkipCheck.ts +69 -70
- package/src/types/utility/typesTag.ts +88 -82
- package/src/types/utility/typesUnchecked.ts +40 -40
- package/src/utils/AnyFunction.ts +4 -4
- package/src/utils/ModelPool.ts +59 -59
- package/src/utils/chainFns.ts +18 -18
- package/src/utils/decorators.ts +274 -274
- package/src/utils/errorDiagnostics.ts +204 -204
- package/src/utils/index.ts +443 -372
- package/src/wrappers/ArraySet.ts +156 -156
- package/src/wrappers/ObjectMap.ts +155 -136
- package/src/wrappers/asMap.ts +65 -30
- package/src/wrappers/asSet.ts +3 -3
package/src/patch/jsonPatch.ts
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
import type { Path } from "../parent/pathTypes"
|
|
2
|
-
import { failure } from "../utils"
|
|
3
|
-
import type { Patch } from "./Patch"
|
|
4
|
-
|
|
5
|
-
export type JsonPatch =
|
|
6
|
-
| JsonPatchAddOperation<any>
|
|
7
|
-
| JsonPatchRemoveOperation
|
|
8
|
-
| JsonPatchReplaceOperation<any>
|
|
9
|
-
|
|
10
|
-
export interface JsonPatchBaseOperation {
|
|
11
|
-
path: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface JsonPatchAddOperation<T> extends JsonPatchBaseOperation {
|
|
15
|
-
op: "add"
|
|
16
|
-
value: T
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface JsonPatchRemoveOperation extends JsonPatchBaseOperation {
|
|
20
|
-
op: "remove"
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface JsonPatchReplaceOperation<T> extends JsonPatchBaseOperation {
|
|
24
|
-
op: "replace"
|
|
25
|
-
value: T
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Escapes a json pointer path.
|
|
30
|
-
*
|
|
31
|
-
* @param path The raw pointer
|
|
32
|
-
* @return the Escaped path
|
|
33
|
-
*/
|
|
34
|
-
function escapePathComponent(path: string | number): string {
|
|
35
|
-
if (typeof path === "number") {
|
|
36
|
-
return String(path)
|
|
37
|
-
}
|
|
38
|
-
if (!(path.includes("/") || path.includes("~"))) {
|
|
39
|
-
return path
|
|
40
|
-
}
|
|
41
|
-
return path.replace(/~/g, "~0").replace(/\//g, "~1")
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Unescapes a json pointer path.
|
|
46
|
-
*
|
|
47
|
-
* @param path The escaped pointer
|
|
48
|
-
* @return The unescaped path
|
|
49
|
-
*/
|
|
50
|
-
function unescapePathComponent(path: string): string {
|
|
51
|
-
return path.replace(/~1/g, "/").replace(/~0/g, "~")
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Converts a path into a JSON pointer.
|
|
56
|
-
*
|
|
57
|
-
* @param path Path to convert.
|
|
58
|
-
* @returns Converted JSON pointer.
|
|
59
|
-
*/
|
|
60
|
-
export function pathToJsonPointer(path: Path): string {
|
|
61
|
-
if (path.length <= 0) {
|
|
62
|
-
return ""
|
|
63
|
-
}
|
|
64
|
-
return "/" + path.map(escapePathComponent).join("/")
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Converts a JSON pointer into a path.
|
|
69
|
-
*
|
|
70
|
-
* @param jsonPointer JSON pointer to convert.
|
|
71
|
-
* @returns Converted path.
|
|
72
|
-
*/
|
|
73
|
-
export function jsonPointerToPath(jsonPointer: string): Path {
|
|
74
|
-
if (jsonPointer === "") {
|
|
75
|
-
return []
|
|
76
|
-
}
|
|
77
|
-
if (!jsonPointer.startsWith("/")) {
|
|
78
|
-
throw failure("a JSON pointer must start with '/' or be empty")
|
|
79
|
-
}
|
|
80
|
-
jsonPointer = jsonPointer.slice(1)
|
|
81
|
-
return jsonPointer.split("/").map(unescapePathComponent)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Convert a patch into a JSON patch.
|
|
86
|
-
*
|
|
87
|
-
* @param patch A patch.
|
|
88
|
-
* @returns A JSON patch.
|
|
89
|
-
*/
|
|
90
|
-
export function patchToJsonPatch(patch: Patch): JsonPatch {
|
|
91
|
-
return {
|
|
92
|
-
...patch,
|
|
93
|
-
path: pathToJsonPointer(patch.path),
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Converts a JSON patch into a patch.
|
|
99
|
-
*
|
|
100
|
-
* @param jsonPatch A JSON patch.
|
|
101
|
-
* @returns A patch.
|
|
102
|
-
*/
|
|
103
|
-
export function jsonPatchToPatch(jsonPatch: JsonPatch): Patch {
|
|
104
|
-
return {
|
|
105
|
-
...jsonPatch,
|
|
106
|
-
path: jsonPointerToPath(jsonPatch.path),
|
|
107
|
-
}
|
|
108
|
-
}
|
|
1
|
+
import type { Path } from "../parent/pathTypes"
|
|
2
|
+
import { failure } from "../utils"
|
|
3
|
+
import type { Patch } from "./Patch"
|
|
4
|
+
|
|
5
|
+
export type JsonPatch =
|
|
6
|
+
| JsonPatchAddOperation<any>
|
|
7
|
+
| JsonPatchRemoveOperation
|
|
8
|
+
| JsonPatchReplaceOperation<any>
|
|
9
|
+
|
|
10
|
+
export interface JsonPatchBaseOperation {
|
|
11
|
+
path: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface JsonPatchAddOperation<T> extends JsonPatchBaseOperation {
|
|
15
|
+
op: "add"
|
|
16
|
+
value: T
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface JsonPatchRemoveOperation extends JsonPatchBaseOperation {
|
|
20
|
+
op: "remove"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface JsonPatchReplaceOperation<T> extends JsonPatchBaseOperation {
|
|
24
|
+
op: "replace"
|
|
25
|
+
value: T
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Escapes a json pointer path.
|
|
30
|
+
*
|
|
31
|
+
* @param path The raw pointer
|
|
32
|
+
* @return the Escaped path
|
|
33
|
+
*/
|
|
34
|
+
function escapePathComponent(path: string | number): string {
|
|
35
|
+
if (typeof path === "number") {
|
|
36
|
+
return String(path)
|
|
37
|
+
}
|
|
38
|
+
if (!(path.includes("/") || path.includes("~"))) {
|
|
39
|
+
return path
|
|
40
|
+
}
|
|
41
|
+
return path.replace(/~/g, "~0").replace(/\//g, "~1")
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Unescapes a json pointer path.
|
|
46
|
+
*
|
|
47
|
+
* @param path The escaped pointer
|
|
48
|
+
* @return The unescaped path
|
|
49
|
+
*/
|
|
50
|
+
function unescapePathComponent(path: string): string {
|
|
51
|
+
return path.replace(/~1/g, "/").replace(/~0/g, "~")
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Converts a path into a JSON pointer.
|
|
56
|
+
*
|
|
57
|
+
* @param path Path to convert.
|
|
58
|
+
* @returns Converted JSON pointer.
|
|
59
|
+
*/
|
|
60
|
+
export function pathToJsonPointer(path: Path): string {
|
|
61
|
+
if (path.length <= 0) {
|
|
62
|
+
return ""
|
|
63
|
+
}
|
|
64
|
+
return "/" + path.map(escapePathComponent).join("/")
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Converts a JSON pointer into a path.
|
|
69
|
+
*
|
|
70
|
+
* @param jsonPointer JSON pointer to convert.
|
|
71
|
+
* @returns Converted path.
|
|
72
|
+
*/
|
|
73
|
+
export function jsonPointerToPath(jsonPointer: string): Path {
|
|
74
|
+
if (jsonPointer === "") {
|
|
75
|
+
return []
|
|
76
|
+
}
|
|
77
|
+
if (!jsonPointer.startsWith("/")) {
|
|
78
|
+
throw failure("a JSON pointer must start with '/' or be empty")
|
|
79
|
+
}
|
|
80
|
+
jsonPointer = jsonPointer.slice(1)
|
|
81
|
+
return jsonPointer.split("/").map(unescapePathComponent)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Convert a patch into a JSON patch.
|
|
86
|
+
*
|
|
87
|
+
* @param patch A patch.
|
|
88
|
+
* @returns A JSON patch.
|
|
89
|
+
*/
|
|
90
|
+
export function patchToJsonPatch(patch: Patch): JsonPatch {
|
|
91
|
+
return {
|
|
92
|
+
...patch,
|
|
93
|
+
path: pathToJsonPointer(patch.path),
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Converts a JSON patch into a patch.
|
|
99
|
+
*
|
|
100
|
+
* @param jsonPatch A JSON patch.
|
|
101
|
+
* @returns A patch.
|
|
102
|
+
*/
|
|
103
|
+
export function jsonPatchToPatch(jsonPatch: JsonPatch): Patch {
|
|
104
|
+
return {
|
|
105
|
+
...jsonPatch,
|
|
106
|
+
path: jsonPointerToPath(jsonPatch.path),
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { observable } from "mobx"
|
|
2
2
|
import { assertTweakedObject } from "../tweaker/core"
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type OnPatchesDisposer,
|
|
5
|
+
type OnPatchesListener,
|
|
6
|
+
onGlobalPatches,
|
|
7
|
+
onPatches,
|
|
8
|
+
} from "./emitPatch"
|
|
4
9
|
import type { Patch } from "./Patch"
|
|
5
10
|
|
|
6
11
|
/**
|
|
@@ -2,33 +2,49 @@ import { ActionContextActionType } from "../action"
|
|
|
2
2
|
import {
|
|
3
3
|
ActionTrackingResult,
|
|
4
4
|
actionTrackingMiddleware,
|
|
5
|
-
SimpleActionContext,
|
|
5
|
+
type SimpleActionContext,
|
|
6
6
|
} from "../actionMiddlewares"
|
|
7
|
-
import { fastGetRootPath, RootPath } from "../parent/path"
|
|
7
|
+
import { fastGetRootPath, type RootPath } from "../parent/path"
|
|
8
8
|
import { applySnapshot } from "../snapshot/applySnapshot"
|
|
9
9
|
import { getSnapshot } from "../snapshot/getSnapshot"
|
|
10
10
|
import { assertTweakedObject } from "../tweaker/core"
|
|
11
11
|
|
|
12
|
+
export interface ConnectReduxDevToolsOptions {
|
|
13
|
+
/**
|
|
14
|
+
* If it should show the arguments near the action name.
|
|
15
|
+
*
|
|
16
|
+
* @default true
|
|
17
|
+
*/
|
|
18
|
+
logArgsNearName?: boolean
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* If it should log child actions when they run inside another action tracked
|
|
22
|
+
* by the same target tree.
|
|
23
|
+
*
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
26
|
+
logChildActions?: boolean
|
|
27
|
+
}
|
|
28
|
+
|
|
12
29
|
/**
|
|
13
30
|
* Connects a tree node to a redux dev tools instance.
|
|
14
31
|
*
|
|
15
32
|
* @param remotedevPackage The remotedev package (usually the result of `require("remoteDev")`) (https://www.npmjs.com/package/remotedev).
|
|
16
33
|
* @param remotedevConnection The result of a connect method from the remotedev package (usually the result of `remoteDev.connectViaExtension(...)`).
|
|
17
34
|
* @param target Object to use as root.
|
|
18
|
-
* @param [options] Optional options object.
|
|
35
|
+
* @param [options] Optional options object.
|
|
19
36
|
*/
|
|
20
37
|
export function connectReduxDevTools(
|
|
21
38
|
remotedevPackage: any,
|
|
22
39
|
remotedevConnection: any,
|
|
23
40
|
target: object,
|
|
24
|
-
options?:
|
|
25
|
-
logArgsNearName?: boolean
|
|
26
|
-
}
|
|
41
|
+
options?: ConnectReduxDevToolsOptions
|
|
27
42
|
) {
|
|
28
43
|
assertTweakedObject(target, "target")
|
|
29
44
|
|
|
30
45
|
const opts = {
|
|
31
46
|
logArgsNearName: true,
|
|
47
|
+
logChildActions: true,
|
|
32
48
|
...options,
|
|
33
49
|
}
|
|
34
50
|
|
|
@@ -48,12 +64,15 @@ export function connectReduxDevTools(
|
|
|
48
64
|
const actionIdSymbol = Symbol("actionId")
|
|
49
65
|
|
|
50
66
|
actionTrackingMiddleware(target, {
|
|
67
|
+
filter(ctx) {
|
|
68
|
+
return opts.logChildActions || !hasDevToolsTrackedParentContext(ctx)
|
|
69
|
+
},
|
|
51
70
|
onStart(ctx) {
|
|
52
71
|
ctx.data[actionIdSymbol] = currentActionId++
|
|
53
72
|
},
|
|
54
73
|
onResume(ctx) {
|
|
55
74
|
// give a chance to the parent to log its own changes before the child starts
|
|
56
|
-
if (ctx.parentContext) {
|
|
75
|
+
if (opts.logChildActions && ctx.parentContext) {
|
|
57
76
|
log(ctx.parentContext, undefined)
|
|
58
77
|
}
|
|
59
78
|
log(ctx, undefined)
|
|
@@ -184,4 +203,17 @@ export function connectReduxDevTools(
|
|
|
184
203
|
|
|
185
204
|
return name
|
|
186
205
|
}
|
|
206
|
+
|
|
207
|
+
function hasDevToolsTrackedParentContext(ctx: SimpleActionContext) {
|
|
208
|
+
let parentContext = ctx.parentContext
|
|
209
|
+
|
|
210
|
+
while (parentContext) {
|
|
211
|
+
if (parentContext.data[actionIdSymbol] !== undefined) {
|
|
212
|
+
return true
|
|
213
|
+
}
|
|
214
|
+
parentContext = parentContext.parentContext
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return false
|
|
218
|
+
}
|
|
187
219
|
}
|
package/src/redux/redux.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { ActionCall, applyAction } from "../action"
|
|
1
|
+
import { type ActionCall, applyAction } from "../action"
|
|
2
2
|
import { getSnapshot } from "../snapshot/getSnapshot"
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type OnSnapshotDisposer,
|
|
5
|
+
type OnSnapshotListener,
|
|
6
|
+
onSnapshot,
|
|
7
|
+
} from "../snapshot/onSnapshot"
|
|
4
8
|
import type { SnapshotOutOf } from "../snapshot/SnapshotOf"
|
|
5
9
|
import { assertTweakedObject } from "../tweaker/core"
|
|
6
10
|
import { failure } from "../utils"
|
package/src/ref/Ref.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed } from "mobx"
|
|
2
|
-
import { modelTypeKey } from "../model/metadata"
|
|
3
2
|
import { Model } from "../model/Model"
|
|
3
|
+
import { modelTypeKey } from "../model/metadata"
|
|
4
4
|
import type { ModelClass } from "../modelShared/BaseModelShared"
|
|
5
5
|
import { typesString } from "../types/primitiveBased/typesPrimitive"
|
|
6
6
|
import { tProp } from "../types/tProp"
|