@jbrowse/mobx-state-tree 5.7.1 → 5.8.7

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.
Files changed (253) hide show
  1. package/README.md +0 -10
  2. package/dist/index.d.ts +2135 -2
  3. package/dist/mobx-state-tree.cjs +6894 -0
  4. package/dist/mobx-state-tree.cjs.map +1 -0
  5. package/dist/mobx-state-tree.mjs +6814 -0
  6. package/dist/mobx-state-tree.mjs.map +1 -0
  7. package/package.json +30 -26
  8. package/dist/core/action.d.ts +0 -87
  9. package/dist/core/action.js +0 -228
  10. package/dist/core/action.js.map +0 -1
  11. package/dist/core/actionContext.d.ts +0 -27
  12. package/dist/core/actionContext.js +0 -42
  13. package/dist/core/actionContext.js.map +0 -1
  14. package/dist/core/flow.d.ts +0 -69
  15. package/dist/core/flow.js +0 -180
  16. package/dist/core/flow.js.map +0 -1
  17. package/dist/core/json-patch.d.ts +0 -46
  18. package/dist/core/json-patch.js +0 -133
  19. package/dist/core/json-patch.js.map +0 -1
  20. package/dist/core/mst-operations.d.ts +0 -459
  21. package/dist/core/mst-operations.js +0 -885
  22. package/dist/core/mst-operations.js.map +0 -1
  23. package/dist/core/node/BaseNode.d.ts +0 -62
  24. package/dist/core/node/BaseNode.js +0 -152
  25. package/dist/core/node/BaseNode.js.map +0 -1
  26. package/dist/core/node/Hook.d.ts +0 -17
  27. package/dist/core/node/Hook.js +0 -15
  28. package/dist/core/node/Hook.js.map +0 -1
  29. package/dist/core/node/create-node.d.ts +0 -16
  30. package/dist/core/node/create-node.js +0 -41
  31. package/dist/core/node/create-node.js.map +0 -1
  32. package/dist/core/node/identifier-cache.d.ts +0 -19
  33. package/dist/core/node/identifier-cache.js +0 -115
  34. package/dist/core/node/identifier-cache.js.map +0 -1
  35. package/dist/core/node/livelinessChecking.d.ts +0 -37
  36. package/dist/core/node/livelinessChecking.js +0 -38
  37. package/dist/core/node/livelinessChecking.js.map +0 -1
  38. package/dist/core/node/node-utils.d.ts +0 -83
  39. package/dist/core/node/node-utils.js +0 -165
  40. package/dist/core/node/node-utils.js.map +0 -1
  41. package/dist/core/node/object-node.d.ts +0 -101
  42. package/dist/core/node/object-node.js +0 -546
  43. package/dist/core/node/object-node.js.map +0 -1
  44. package/dist/core/node/scalar-node.d.ts +0 -21
  45. package/dist/core/node/scalar-node.js +0 -90
  46. package/dist/core/node/scalar-node.js.map +0 -1
  47. package/dist/core/process.d.ts +0 -50
  48. package/dist/core/process.js +0 -39
  49. package/dist/core/process.js.map +0 -1
  50. package/dist/core/type/type-checker.d.ts +0 -69
  51. package/dist/core/type/type-checker.js +0 -154
  52. package/dist/core/type/type-checker.js.map +0 -1
  53. package/dist/core/type/type.d.ts +0 -317
  54. package/dist/core/type/type.js +0 -251
  55. package/dist/core/type/type.js.map +0 -1
  56. package/dist/index.js +0 -85
  57. package/dist/index.js.map +0 -1
  58. package/dist/internal.d.ts +0 -39
  59. package/dist/internal.js +0 -60
  60. package/dist/internal.js.map +0 -1
  61. package/dist/middlewares/create-action-tracking-middleware.d.ts +0 -24
  62. package/dist/middlewares/create-action-tracking-middleware.js +0 -81
  63. package/dist/middlewares/create-action-tracking-middleware.js.map +0 -1
  64. package/dist/middlewares/createActionTrackingMiddleware2.d.ts +0 -34
  65. package/dist/middlewares/createActionTrackingMiddleware2.js +0 -133
  66. package/dist/middlewares/createActionTrackingMiddleware2.js.map +0 -1
  67. package/dist/middlewares/on-action.d.ts +0 -87
  68. package/dist/middlewares/on-action.js +0 -215
  69. package/dist/middlewares/on-action.js.map +0 -1
  70. package/dist/package.json +0 -1
  71. package/dist/types/complex-types/array.d.ts +0 -81
  72. package/dist/types/complex-types/array.js +0 -353
  73. package/dist/types/complex-types/array.js.map +0 -1
  74. package/dist/types/complex-types/map.d.ts +0 -111
  75. package/dist/types/complex-types/map.js +0 -362
  76. package/dist/types/complex-types/map.js.map +0 -1
  77. package/dist/types/complex-types/model.d.ts +0 -193
  78. package/dist/types/complex-types/model.js +0 -478
  79. package/dist/types/complex-types/model.js.map +0 -1
  80. package/dist/types/index.d.ts +0 -33
  81. package/dist/types/index.js +0 -38
  82. package/dist/types/index.js.map +0 -1
  83. package/dist/types/primitives.d.ts +0 -125
  84. package/dist/types/primitives.js +0 -183
  85. package/dist/types/primitives.js.map +0 -1
  86. package/dist/types/utility-types/custom.d.ts +0 -75
  87. package/dist/types/utility-types/custom.js +0 -111
  88. package/dist/types/utility-types/custom.js.map +0 -1
  89. package/dist/types/utility-types/enumeration.d.ts +0 -5
  90. package/dist/types/utility-types/enumeration.js +0 -34
  91. package/dist/types/utility-types/enumeration.js.map +0 -1
  92. package/dist/types/utility-types/frozen.d.ts +0 -24
  93. package/dist/types/utility-types/frozen.js +0 -98
  94. package/dist/types/utility-types/frozen.js.map +0 -1
  95. package/dist/types/utility-types/identifier.d.ts +0 -87
  96. package/dist/types/utility-types/identifier.js +0 -130
  97. package/dist/types/utility-types/identifier.js.map +0 -1
  98. package/dist/types/utility-types/late.d.ts +0 -10
  99. package/dist/types/utility-types/late.js +0 -110
  100. package/dist/types/utility-types/late.js.map +0 -1
  101. package/dist/types/utility-types/lazy.d.ts +0 -23
  102. package/dist/types/utility-types/lazy.js +0 -77
  103. package/dist/types/utility-types/lazy.js.map +0 -1
  104. package/dist/types/utility-types/literal.d.ts +0 -38
  105. package/dist/types/utility-types/literal.js +0 -64
  106. package/dist/types/utility-types/literal.js.map +0 -1
  107. package/dist/types/utility-types/maybe.d.ts +0 -26
  108. package/dist/types/utility-types/maybe.js +0 -30
  109. package/dist/types/utility-types/maybe.js.map +0 -1
  110. package/dist/types/utility-types/optional.d.ts +0 -42
  111. package/dist/types/utility-types/optional.js +0 -141
  112. package/dist/types/utility-types/optional.js.map +0 -1
  113. package/dist/types/utility-types/reference.d.ts +0 -90
  114. package/dist/types/utility-types/reference.js +0 -393
  115. package/dist/types/utility-types/reference.js.map +0 -1
  116. package/dist/types/utility-types/refinement.d.ts +0 -10
  117. package/dist/types/utility-types/refinement.js +0 -86
  118. package/dist/types/utility-types/refinement.js.map +0 -1
  119. package/dist/types/utility-types/resilient.d.ts +0 -18
  120. package/dist/types/utility-types/resilient.js +0 -121
  121. package/dist/types/utility-types/resilient.js.map +0 -1
  122. package/dist/types/utility-types/snapshotProcessor.d.ts +0 -63
  123. package/dist/types/utility-types/snapshotProcessor.js +0 -162
  124. package/dist/types/utility-types/snapshotProcessor.js.map +0 -1
  125. package/dist/types/utility-types/union.d.ts +0 -78
  126. package/dist/types/utility-types/union.js +0 -246
  127. package/dist/types/utility-types/union.js.map +0 -1
  128. package/dist/utils.d.ts +0 -230
  129. package/dist/utils.js +0 -483
  130. package/dist/utils.js.map +0 -1
  131. package/esm/core/action.d.ts +0 -87
  132. package/esm/core/action.js +0 -219
  133. package/esm/core/action.js.map +0 -1
  134. package/esm/core/actionContext.d.ts +0 -27
  135. package/esm/core/actionContext.js +0 -37
  136. package/esm/core/actionContext.js.map +0 -1
  137. package/esm/core/flow.d.ts +0 -69
  138. package/esm/core/flow.js +0 -173
  139. package/esm/core/flow.js.map +0 -1
  140. package/esm/core/json-patch.d.ts +0 -46
  141. package/esm/core/json-patch.js +0 -125
  142. package/esm/core/json-patch.js.map +0 -1
  143. package/esm/core/mst-operations.d.ts +0 -459
  144. package/esm/core/mst-operations.js +0 -844
  145. package/esm/core/mst-operations.js.map +0 -1
  146. package/esm/core/node/BaseNode.d.ts +0 -62
  147. package/esm/core/node/BaseNode.js +0 -148
  148. package/esm/core/node/BaseNode.js.map +0 -1
  149. package/esm/core/node/Hook.d.ts +0 -17
  150. package/esm/core/node/Hook.js +0 -12
  151. package/esm/core/node/Hook.js.map +0 -1
  152. package/esm/core/node/create-node.d.ts +0 -16
  153. package/esm/core/node/create-node.js +0 -36
  154. package/esm/core/node/create-node.js.map +0 -1
  155. package/esm/core/node/identifier-cache.d.ts +0 -19
  156. package/esm/core/node/identifier-cache.js +0 -111
  157. package/esm/core/node/identifier-cache.js.map +0 -1
  158. package/esm/core/node/livelinessChecking.d.ts +0 -37
  159. package/esm/core/node/livelinessChecking.js +0 -33
  160. package/esm/core/node/livelinessChecking.js.map +0 -1
  161. package/esm/core/node/node-utils.d.ts +0 -83
  162. package/esm/core/node/node-utils.js +0 -153
  163. package/esm/core/node/node-utils.js.map +0 -1
  164. package/esm/core/node/object-node.d.ts +0 -101
  165. package/esm/core/node/object-node.js +0 -542
  166. package/esm/core/node/object-node.js.map +0 -1
  167. package/esm/core/node/scalar-node.d.ts +0 -21
  168. package/esm/core/node/scalar-node.js +0 -86
  169. package/esm/core/node/scalar-node.js.map +0 -1
  170. package/esm/core/process.d.ts +0 -50
  171. package/esm/core/process.js +0 -35
  172. package/esm/core/process.js.map +0 -1
  173. package/esm/core/type/type-checker.d.ts +0 -69
  174. package/esm/core/type/type-checker.js +0 -144
  175. package/esm/core/type/type-checker.js.map +0 -1
  176. package/esm/core/type/type.d.ts +0 -317
  177. package/esm/core/type/type.js +0 -243
  178. package/esm/core/type/type.js.map +0 -1
  179. package/esm/index.d.ts +0 -2
  180. package/esm/index.js +0 -2
  181. package/esm/index.js.map +0 -1
  182. package/esm/internal.d.ts +0 -39
  183. package/esm/internal.js +0 -44
  184. package/esm/internal.js.map +0 -1
  185. package/esm/middlewares/create-action-tracking-middleware.d.ts +0 -24
  186. package/esm/middlewares/create-action-tracking-middleware.js +0 -78
  187. package/esm/middlewares/create-action-tracking-middleware.js.map +0 -1
  188. package/esm/middlewares/createActionTrackingMiddleware2.d.ts +0 -34
  189. package/esm/middlewares/createActionTrackingMiddleware2.js +0 -130
  190. package/esm/middlewares/createActionTrackingMiddleware2.js.map +0 -1
  191. package/esm/middlewares/on-action.d.ts +0 -87
  192. package/esm/middlewares/on-action.js +0 -210
  193. package/esm/middlewares/on-action.js.map +0 -1
  194. package/esm/types/complex-types/array.d.ts +0 -81
  195. package/esm/types/complex-types/array.js +0 -347
  196. package/esm/types/complex-types/array.js.map +0 -1
  197. package/esm/types/complex-types/map.d.ts +0 -111
  198. package/esm/types/complex-types/map.js +0 -356
  199. package/esm/types/complex-types/map.js.map +0 -1
  200. package/esm/types/complex-types/model.d.ts +0 -193
  201. package/esm/types/complex-types/model.js +0 -471
  202. package/esm/types/complex-types/model.js.map +0 -1
  203. package/esm/types/index.d.ts +0 -33
  204. package/esm/types/index.js +0 -35
  205. package/esm/types/index.js.map +0 -1
  206. package/esm/types/primitives.d.ts +0 -125
  207. package/esm/types/primitives.js +0 -177
  208. package/esm/types/primitives.js.map +0 -1
  209. package/esm/types/utility-types/custom.d.ts +0 -75
  210. package/esm/types/utility-types/custom.js +0 -106
  211. package/esm/types/utility-types/custom.js.map +0 -1
  212. package/esm/types/utility-types/enumeration.d.ts +0 -5
  213. package/esm/types/utility-types/enumeration.js +0 -31
  214. package/esm/types/utility-types/enumeration.js.map +0 -1
  215. package/esm/types/utility-types/frozen.d.ts +0 -24
  216. package/esm/types/utility-types/frozen.js +0 -92
  217. package/esm/types/utility-types/frozen.js.map +0 -1
  218. package/esm/types/utility-types/identifier.d.ts +0 -87
  219. package/esm/types/utility-types/identifier.js +0 -121
  220. package/esm/types/utility-types/identifier.js.map +0 -1
  221. package/esm/types/utility-types/late.d.ts +0 -10
  222. package/esm/types/utility-types/late.js +0 -106
  223. package/esm/types/utility-types/late.js.map +0 -1
  224. package/esm/types/utility-types/lazy.d.ts +0 -23
  225. package/esm/types/utility-types/lazy.js +0 -72
  226. package/esm/types/utility-types/lazy.js.map +0 -1
  227. package/esm/types/utility-types/literal.d.ts +0 -38
  228. package/esm/types/utility-types/literal.js +0 -58
  229. package/esm/types/utility-types/literal.js.map +0 -1
  230. package/esm/types/utility-types/maybe.d.ts +0 -26
  231. package/esm/types/utility-types/maybe.js +0 -26
  232. package/esm/types/utility-types/maybe.js.map +0 -1
  233. package/esm/types/utility-types/optional.d.ts +0 -42
  234. package/esm/types/utility-types/optional.js +0 -135
  235. package/esm/types/utility-types/optional.js.map +0 -1
  236. package/esm/types/utility-types/reference.d.ts +0 -90
  237. package/esm/types/utility-types/reference.js +0 -383
  238. package/esm/types/utility-types/reference.js.map +0 -1
  239. package/esm/types/utility-types/refinement.d.ts +0 -10
  240. package/esm/types/utility-types/refinement.js +0 -82
  241. package/esm/types/utility-types/refinement.js.map +0 -1
  242. package/esm/types/utility-types/resilient.d.ts +0 -18
  243. package/esm/types/utility-types/resilient.js +0 -118
  244. package/esm/types/utility-types/resilient.js.map +0 -1
  245. package/esm/types/utility-types/snapshotProcessor.d.ts +0 -63
  246. package/esm/types/utility-types/snapshotProcessor.js +0 -159
  247. package/esm/types/utility-types/snapshotProcessor.js.map +0 -1
  248. package/esm/types/utility-types/union.d.ts +0 -78
  249. package/esm/types/utility-types/union.js +0 -240
  250. package/esm/types/utility-types/union.js.map +0 -1
  251. package/esm/utils.d.ts +0 -230
  252. package/esm/utils.js +0 -449
  253. package/esm/utils.js.map +0 -1
@@ -1,546 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectNode = void 0;
4
- const mobx_1 = require("mobx");
5
- const BaseNode_ts_1 = require("./BaseNode.js");
6
- const internal_ts_1 = require("../../internal.js");
7
- let nextNodeId = 1;
8
- const snapshotReactionOptions = {
9
- onError(e) {
10
- throw e;
11
- }
12
- };
13
- /**
14
- * @internal
15
- * @hidden
16
- */
17
- class ObjectNode extends BaseNode_ts_1.BaseNode {
18
- nodeId = ++nextNodeId;
19
- identifierAttribute;
20
- identifier; // Identifier is always normalized to string, even if the identifier property isn't
21
- unnormalizedIdentifier;
22
- identifierCache;
23
- isProtectionEnabled = true;
24
- middlewares;
25
- hasSnapshotPostProcessor = false;
26
- _applyPatches;
27
- applyPatches(patches) {
28
- this.createObservableInstanceIfNeeded();
29
- this._applyPatches(patches);
30
- }
31
- _applySnapshot;
32
- applySnapshot(snapshot) {
33
- this.createObservableInstanceIfNeeded();
34
- this._applySnapshot(snapshot);
35
- }
36
- _autoUnbox = true; // unboxing is disabled when reading child nodes
37
- _isRunningAction = false; // only relevant for root
38
- _hasSnapshotReaction = false;
39
- _observableInstanceState = 0 /* ObservableInstanceLifecycle.UNINITIALIZED */;
40
- _childNodes;
41
- _initialSnapshot;
42
- _cachedInitialSnapshot;
43
- _cachedInitialSnapshotCreated = false;
44
- _snapshotComputed;
45
- constructor(complexType, parent, subpath, environment, initialValue) {
46
- super(complexType, parent, subpath, environment);
47
- this._snapshotComputed = (0, mobx_1.computed)(() => (0, internal_ts_1.freeze)(this.getSnapshot()));
48
- this.unbox = this.unbox.bind(this);
49
- this._initialSnapshot = (0, internal_ts_1.freeze)(initialValue);
50
- this.identifierAttribute = complexType.identifierAttribute;
51
- if (!parent) {
52
- this.identifierCache = new internal_ts_1.IdentifierCache();
53
- }
54
- this._childNodes = complexType.initializeChildNodes(this, this._initialSnapshot);
55
- // identifier can not be changed during lifecycle of a node
56
- // so we safely can read it from initial snapshot
57
- this.identifier = null;
58
- this.unnormalizedIdentifier = null;
59
- if (this.identifierAttribute && this._initialSnapshot) {
60
- let id = this._initialSnapshot[this.identifierAttribute];
61
- if (id === undefined) {
62
- // try with the actual node if not (for optional identifiers)
63
- const childNode = this._childNodes[this.identifierAttribute];
64
- if (childNode) {
65
- id = childNode.value;
66
- }
67
- }
68
- if (typeof id !== "string" && typeof id !== "number") {
69
- throw (0, internal_ts_1.fail)(`Instance identifier '${this.identifierAttribute}' for type '${this.type.name}' must be a string or a number`);
70
- }
71
- // normalize internal identifier to string
72
- this.identifier = (0, internal_ts_1.normalizeIdentifier)(id);
73
- this.unnormalizedIdentifier = id;
74
- }
75
- if (!parent) {
76
- this.identifierCache.addNodeToCache(this);
77
- }
78
- else {
79
- parent.root.identifierCache.addNodeToCache(this);
80
- }
81
- }
82
- createObservableInstanceIfNeeded(fireHooks = true) {
83
- if (this._observableInstanceState ===
84
- 0 /* ObservableInstanceLifecycle.UNINITIALIZED */) {
85
- this.createObservableInstance(fireHooks);
86
- }
87
- }
88
- createObservableInstance(fireHooks = true) {
89
- if ((0, internal_ts_1.devMode)()) {
90
- if (this.state !== internal_ts_1.NodeLifeCycle.INITIALIZING) {
91
- // istanbul ignore next
92
- throw (0, internal_ts_1.fail)("assertion failed: the creation of the observable instance must be done on the initializing phase");
93
- }
94
- }
95
- this._observableInstanceState = 1 /* ObservableInstanceLifecycle.CREATING */;
96
- // make sure the parent chain is created as well
97
- // array with parent chain from parent to child
98
- const parentChain = [];
99
- let parent = this.parent;
100
- // for performance reasons we never go back further than the most direct
101
- // uninitialized parent
102
- // this is done to avoid traversing the whole tree to the root when using
103
- // the same reference again
104
- while (parent &&
105
- parent._observableInstanceState ===
106
- 0 /* ObservableInstanceLifecycle.UNINITIALIZED */) {
107
- parentChain.unshift(parent);
108
- parent = parent.parent;
109
- }
110
- // initialize the uninitialized parent chain from parent to child
111
- for (const p of parentChain) {
112
- // delay firing hooks until after all parents have been created
113
- p.createObservableInstanceIfNeeded(false);
114
- }
115
- const type = this.type;
116
- try {
117
- // @ts-expect-error storedValue type mismatch during initialization
118
- this.storedValue = type.createNewInstance(this._childNodes);
119
- this.preboot();
120
- this._isRunningAction = true;
121
- type.finalizeNewInstance(this, this.storedValue);
122
- }
123
- catch (e) {
124
- // short-cut to die the instance, to avoid the snapshot computed starting to throw...
125
- this.state = internal_ts_1.NodeLifeCycle.DEAD;
126
- throw e;
127
- }
128
- finally {
129
- this._isRunningAction = false;
130
- }
131
- this._observableInstanceState = 2 /* ObservableInstanceLifecycle.CREATED */;
132
- this._snapshotComputed.trackAndCompute();
133
- if (this.isRoot) {
134
- this._addSnapshotReaction();
135
- }
136
- this._childNodes = internal_ts_1.EMPTY_OBJECT;
137
- this.state = internal_ts_1.NodeLifeCycle.CREATED;
138
- if (fireHooks) {
139
- this.fireHook(internal_ts_1.Hook.afterCreate);
140
- // Note that the parent might not be finalized at this point
141
- // so afterAttach won't be called until later in that case
142
- this.finalizeCreation();
143
- // fire the hooks of the parents that we created
144
- for (const p of parentChain.reverse()) {
145
- p.fireHook(internal_ts_1.Hook.afterCreate);
146
- // This will call afterAttach on the child if necessary
147
- p.finalizeCreation();
148
- }
149
- }
150
- }
151
- get root() {
152
- const parent = this.parent;
153
- return parent ? parent.root : this;
154
- }
155
- clearParent() {
156
- if (!this.parent) {
157
- return;
158
- }
159
- // detach if attached
160
- this.fireHook(internal_ts_1.Hook.beforeDetach);
161
- const previousState = this.state;
162
- this.state = internal_ts_1.NodeLifeCycle.DETACHING;
163
- const root = this.root;
164
- const newEnv = root.environment;
165
- const newIdCache = root.identifierCache.splitCache(this);
166
- try {
167
- this.parent.removeChild(this.subpath);
168
- this.baseSetParent(null, "");
169
- this.environment = newEnv;
170
- this.identifierCache = newIdCache;
171
- }
172
- finally {
173
- this.state = previousState;
174
- }
175
- }
176
- setParent(newParent, subpath) {
177
- const parentChanged = newParent !== this.parent;
178
- const subpathChanged = subpath !== this.subpath;
179
- if (!parentChanged && !subpathChanged) {
180
- return;
181
- }
182
- if ((0, internal_ts_1.devMode)()) {
183
- if (!subpath) {
184
- // istanbul ignore next
185
- throw (0, internal_ts_1.fail)("assertion failed: subpath expected");
186
- }
187
- if (!newParent) {
188
- // istanbul ignore next
189
- throw (0, internal_ts_1.fail)("assertion failed: new parent expected");
190
- }
191
- if (this.parent && parentChanged) {
192
- throw (0, internal_ts_1.fail)(`A node cannot exists twice in the state tree. Failed to add ${this} to path '${newParent.path}/${subpath}'.`);
193
- }
194
- if (!this.parent && newParent.root === this) {
195
- throw (0, internal_ts_1.fail)(`A state tree is not allowed to contain itself. Cannot assign ${this} to path '${newParent.path}/${subpath}'`);
196
- }
197
- if (!this.parent &&
198
- !!this.environment &&
199
- this.environment !== newParent.root.environment) {
200
- throw (0, internal_ts_1.fail)(`A state tree cannot be made part of another state tree as long as their environments are different.`);
201
- }
202
- }
203
- if (parentChanged) {
204
- // attach to new parent
205
- this.environment = undefined; // will use root's
206
- newParent.root.identifierCache.mergeCache(this);
207
- this.baseSetParent(newParent, subpath);
208
- this.fireHook(internal_ts_1.Hook.afterAttach);
209
- }
210
- else if (subpathChanged) {
211
- // moving to a new subpath on the same parent
212
- this.baseSetParent(this.parent, subpath);
213
- }
214
- }
215
- fireHook(name) {
216
- this.fireInternalHook(name);
217
- const fn = this.storedValue &&
218
- typeof this.storedValue === "object" &&
219
- this.storedValue[name];
220
- if (typeof fn === "function") {
221
- // we check for it to allow old mobx peer dependencies that don't have the method to work (even when still bugged)
222
- if (mobx_1._allowStateChangesInsideComputed) {
223
- (0, mobx_1._allowStateChangesInsideComputed)(() => {
224
- fn.apply(this.storedValue);
225
- });
226
- }
227
- else {
228
- fn.apply(this.storedValue);
229
- }
230
- }
231
- }
232
- _snapshotUponDeath;
233
- // advantage of using computed for a snapshot is that nicely respects transactions etc.
234
- get snapshot() {
235
- if (this.hasSnapshotPostProcessor) {
236
- this.createObservableInstanceIfNeeded();
237
- }
238
- return this._snapshotComputed.get();
239
- }
240
- // NOTE: we use this method to get snapshot without creating @computed overhead
241
- getSnapshot() {
242
- if (!this.isAlive) {
243
- return this._snapshotUponDeath;
244
- }
245
- return this._observableInstanceState === 2 /* ObservableInstanceLifecycle.CREATED */
246
- ? this._getActualSnapshot()
247
- : this._getCachedInitialSnapshot();
248
- }
249
- _getActualSnapshot() {
250
- return this.type.getSnapshot(this);
251
- }
252
- _getCachedInitialSnapshot() {
253
- if (!this._cachedInitialSnapshotCreated) {
254
- const type = this.type;
255
- const childNodes = this._childNodes;
256
- const snapshot = this._initialSnapshot;
257
- this._cachedInitialSnapshot = type.processInitialSnapshot(childNodes, snapshot);
258
- this._cachedInitialSnapshotCreated = true;
259
- }
260
- return this._cachedInitialSnapshot;
261
- }
262
- isRunningAction() {
263
- if (this._isRunningAction) {
264
- return true;
265
- }
266
- if (this.isRoot) {
267
- return false;
268
- }
269
- return this.parent.isRunningAction();
270
- }
271
- assertAlive(context) {
272
- const livelinessChecking = (0, internal_ts_1.getLivelinessChecking)();
273
- if (!this.isAlive && livelinessChecking !== "ignore") {
274
- const error = this._getAssertAliveError(context);
275
- switch (livelinessChecking) {
276
- case "error":
277
- throw (0, internal_ts_1.fail)(error);
278
- case "warn":
279
- (0, internal_ts_1.warnError)(error);
280
- }
281
- }
282
- }
283
- _getAssertAliveError(context) {
284
- const escapedPath = this.getEscapedPath(false) || this.pathUponDeath || "";
285
- const subpath = (context.subpath && (0, internal_ts_1.escapeJsonPath)(context.subpath)) || "";
286
- let actionContext = context.actionContext || (0, internal_ts_1.getCurrentActionContext)();
287
- // try to use a real action context if possible since it includes the action name
288
- if (actionContext &&
289
- actionContext.type !== "action" &&
290
- actionContext.parentActionEvent) {
291
- actionContext = actionContext.parentActionEvent;
292
- }
293
- let actionFullPath = "";
294
- if (actionContext && actionContext.name != null) {
295
- // try to use the context, and if it not available use the node one
296
- const actionPath = (actionContext &&
297
- actionContext.context &&
298
- (0, internal_ts_1.getPath)(actionContext.context)) ||
299
- escapedPath;
300
- actionFullPath = `${actionPath}.${actionContext.name}()`;
301
- }
302
- return `You are trying to read or write to an object that is no longer part of a state tree. (Object type: '${this.type.name}', Path upon death: '${escapedPath}', Subpath: '${subpath}', Action: '${actionFullPath}'). Either detach nodes first, or don't use objects after removing / replacing them in the tree.`;
303
- }
304
- getChildNode(subpath) {
305
- this.assertAlive({
306
- subpath
307
- });
308
- this._autoUnbox = false;
309
- try {
310
- return this._observableInstanceState ===
311
- 2 /* ObservableInstanceLifecycle.CREATED */
312
- ? this.type.getChildNode(this, subpath)
313
- : this._childNodes[subpath];
314
- }
315
- finally {
316
- this._autoUnbox = true;
317
- }
318
- }
319
- getChildren() {
320
- this.assertAlive(internal_ts_1.EMPTY_OBJECT);
321
- this._autoUnbox = false;
322
- try {
323
- return this._observableInstanceState ===
324
- 2 /* ObservableInstanceLifecycle.CREATED */
325
- ? this.type.getChildren(this)
326
- : (0, internal_ts_1.convertChildNodesToArray)(this._childNodes);
327
- }
328
- finally {
329
- this._autoUnbox = true;
330
- }
331
- }
332
- getChildType(propertyName) {
333
- return this.type.getChildType(propertyName);
334
- }
335
- get isProtected() {
336
- return this.root.isProtectionEnabled;
337
- }
338
- assertWritable(context) {
339
- this.assertAlive(context);
340
- if (!this.isRunningAction() && this.isProtected) {
341
- throw (0, internal_ts_1.fail)(`Cannot modify '${this}', the object is protected and can only be modified by using an action.`);
342
- }
343
- }
344
- removeChild(subpath) {
345
- this.type.removeChild(this, subpath);
346
- }
347
- // bound on the constructor
348
- unbox(childNode) {
349
- if (!childNode) {
350
- return childNode;
351
- }
352
- this.assertAlive({
353
- subpath: childNode.subpath || childNode.subpathUponDeath
354
- });
355
- return this._autoUnbox ? childNode.value : childNode;
356
- }
357
- toString() {
358
- const path = (this.isAlive ? this.path : this.pathUponDeath) || "<root>";
359
- const identifier = this.identifier ? `(id: ${this.identifier})` : "";
360
- return `${this.type.name}@${path}${identifier}${this.isAlive ? "" : " [dead]"}`;
361
- }
362
- finalizeCreation() {
363
- this.baseFinalizeCreation(() => {
364
- for (const child of this.getChildren()) {
365
- child.finalizeCreation();
366
- }
367
- this.fireInternalHook(internal_ts_1.Hook.afterCreationFinalization);
368
- });
369
- }
370
- detach() {
371
- if (!this.isAlive) {
372
- throw (0, internal_ts_1.fail)(`Error while detaching, node is not alive.`);
373
- }
374
- this.clearParent();
375
- }
376
- preboot() {
377
- // eslint-disable-next-line @typescript-eslint/no-this-alias
378
- const self = this;
379
- this._applyPatches = (0, internal_ts_1.createActionInvoker)(this.storedValue, "@APPLY_PATCHES", (patches) => {
380
- patches.forEach(patch => {
381
- if (!patch.path) {
382
- self.type.applySnapshot(self, patch.value);
383
- return;
384
- }
385
- const parts = (0, internal_ts_1.splitJsonPath)(patch.path);
386
- const node = (0, internal_ts_1.resolveNodeByPathParts)(self, parts.slice(0, -1));
387
- node.applyPatchLocally(parts[parts.length - 1], patch);
388
- });
389
- });
390
- this._applySnapshot = (0, internal_ts_1.createActionInvoker)(this.storedValue, "@APPLY_SNAPSHOT", (snapshot) => {
391
- // if the snapshot is the same as the current one, avoid performing a reconcile
392
- if (snapshot === self.snapshot) {
393
- return;
394
- }
395
- // else, apply it by calling the type logic
396
- return self.type.applySnapshot(self, snapshot);
397
- });
398
- (0, internal_ts_1.addHiddenFinalProp)(this.storedValue, "$treenode", this);
399
- (0, internal_ts_1.addHiddenFinalProp)(this.storedValue, "toJSON", internal_ts_1.toJSON);
400
- }
401
- die() {
402
- if (!this.isAlive || this.state === internal_ts_1.NodeLifeCycle.DETACHING) {
403
- return;
404
- }
405
- this.aboutToDie();
406
- this.finalizeDeath();
407
- }
408
- aboutToDie() {
409
- if (this._observableInstanceState ===
410
- 0 /* ObservableInstanceLifecycle.UNINITIALIZED */) {
411
- return;
412
- }
413
- this.getChildren().forEach(node => {
414
- node.aboutToDie();
415
- });
416
- // beforeDestroy should run before the disposers since else we could end up in a situation where
417
- // a disposer added with addDisposer at this stage (beforeDestroy) is actually never released
418
- this.baseAboutToDie();
419
- this._internalEventsEmit("dispose" /* InternalEvents.Dispose */);
420
- this._internalEventsClear("dispose" /* InternalEvents.Dispose */);
421
- }
422
- finalizeDeath() {
423
- // invariant: not called directly but from "die"
424
- this.getChildren().forEach(node => {
425
- node.finalizeDeath();
426
- });
427
- this.root.identifierCache.notifyDied(this);
428
- // "kill" the computed prop and just store the last snapshot
429
- const snapshot = this.snapshot;
430
- this._snapshotUponDeath = snapshot;
431
- this._internalEventsClearAll();
432
- this.baseFinalizeDeath();
433
- }
434
- onSnapshot(onChange) {
435
- this._addSnapshotReaction();
436
- return this._internalEventsRegister("snapshot" /* InternalEvents.Snapshot */, onChange);
437
- }
438
- emitSnapshot(snapshot) {
439
- this._internalEventsEmit("snapshot" /* InternalEvents.Snapshot */, snapshot);
440
- }
441
- onPatch(handler) {
442
- return this._internalEventsRegister("patch" /* InternalEvents.Patch */, handler);
443
- }
444
- emitPatch(basePatch, source) {
445
- if (this._internalEventsHasSubscribers("patch" /* InternalEvents.Patch */)) {
446
- const localizedPatch = (0, internal_ts_1.extend)({}, basePatch, {
447
- path: source.path.substr(this.path.length) + "/" + basePatch.path // calculate the relative path of the patch
448
- });
449
- const [patch, reversePatch] = (0, internal_ts_1.splitPatch)(localizedPatch);
450
- this._internalEventsEmit("patch" /* InternalEvents.Patch */, patch, reversePatch);
451
- }
452
- if (this.parent) {
453
- this.parent.emitPatch(basePatch, source);
454
- }
455
- }
456
- hasDisposer(disposer) {
457
- return this._internalEventsHas("dispose" /* InternalEvents.Dispose */, disposer);
458
- }
459
- addDisposer(disposer) {
460
- if (!this.hasDisposer(disposer)) {
461
- this._internalEventsRegister("dispose" /* InternalEvents.Dispose */, disposer, true);
462
- return;
463
- }
464
- throw (0, internal_ts_1.fail)("cannot add a disposer when it is already registered for execution");
465
- }
466
- removeDisposer(disposer) {
467
- if (!this._internalEventsHas("dispose" /* InternalEvents.Dispose */, disposer)) {
468
- throw (0, internal_ts_1.fail)("cannot remove a disposer which was never registered for execution");
469
- }
470
- this._internalEventsUnregister("dispose" /* InternalEvents.Dispose */, disposer);
471
- }
472
- removeMiddleware(middleware) {
473
- if (this.middlewares) {
474
- const index = this.middlewares.indexOf(middleware);
475
- if (index >= 0) {
476
- this.middlewares.splice(index, 1);
477
- }
478
- }
479
- }
480
- addMiddleWare(handler, includeHooks = true) {
481
- const middleware = { handler, includeHooks };
482
- if (!this.middlewares) {
483
- this.middlewares = [middleware];
484
- }
485
- else {
486
- this.middlewares.push(middleware);
487
- }
488
- return () => {
489
- this.removeMiddleware(middleware);
490
- };
491
- }
492
- applyPatchLocally(subpath, patch) {
493
- this.assertWritable({
494
- subpath
495
- });
496
- this.createObservableInstanceIfNeeded();
497
- this.type.applyPatchLocally(this, subpath, patch);
498
- }
499
- _addSnapshotReaction() {
500
- if (!this._hasSnapshotReaction) {
501
- const snapshotDisposer = (0, mobx_1.reaction)(() => this.snapshot, snapshot => this.emitSnapshot(snapshot), snapshotReactionOptions);
502
- this.addDisposer(snapshotDisposer);
503
- this._hasSnapshotReaction = true;
504
- }
505
- }
506
- // #region internal event handling
507
- _internalEvents;
508
- // we proxy the methods to avoid creating an EventHandlers instance when it is not needed
509
- _internalEventsHasSubscribers(event) {
510
- return !!this._internalEvents && this._internalEvents.hasSubscribers(event);
511
- }
512
- _internalEventsRegister(event, eventHandler, atTheBeginning = false) {
513
- if (!this._internalEvents) {
514
- this._internalEvents = new internal_ts_1.EventHandlers();
515
- }
516
- return this._internalEvents.register(event, eventHandler, atTheBeginning);
517
- }
518
- _internalEventsHas(event, eventHandler) {
519
- return (!!this._internalEvents && this._internalEvents.has(event, eventHandler));
520
- }
521
- _internalEventsUnregister(event, eventHandler) {
522
- if (this._internalEvents) {
523
- this._internalEvents.unregister(event, eventHandler);
524
- }
525
- }
526
- _internalEventsEmit(event, ...args) {
527
- if (this._internalEvents) {
528
- this._internalEvents.emit(event, ...args);
529
- }
530
- }
531
- _internalEventsClear(event) {
532
- if (this._internalEvents) {
533
- this._internalEvents.clear(event);
534
- }
535
- }
536
- _internalEventsClearAll() {
537
- if (this._internalEvents) {
538
- this._internalEvents.clearAll();
539
- }
540
- }
541
- }
542
- exports.ObjectNode = ObjectNode;
543
- ObjectNode.prototype.createObservableInstance = (0, mobx_1.action)(ObjectNode.prototype.createObservableInstance);
544
- ObjectNode.prototype.detach = (0, mobx_1.action)(ObjectNode.prototype.detach);
545
- ObjectNode.prototype.die = (0, mobx_1.action)(ObjectNode.prototype.die);
546
- //# sourceMappingURL=object-node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-node.js","sourceRoot":"","sources":["../../../src/core/node/object-node.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type IComputedValue,\n _allowStateChangesInsideComputed,\n action,\n computed,\n reaction\n} from \"mobx\"\n\nimport { BaseNode } from \"./BaseNode.ts\"\nimport { ComplexType } from \"../type/type.ts\"\nimport {\n EMPTY_OBJECT,\n EventHandlers,\n Hook,\n IdentifierCache,\n NodeLifeCycle,\n addHiddenFinalProp,\n convertChildNodesToArray,\n createActionInvoker,\n devMode,\n escapeJsonPath,\n extend,\n fail,\n freeze,\n getCurrentActionContext,\n getLivelinessChecking,\n getPath,\n normalizeIdentifier,\n resolveNodeByPathParts,\n splitJsonPath,\n splitPatch,\n toJSON,\n warnError\n} from \"../../internal.ts\"\n\nimport type {\n AnyNode,\n ArgumentTypes,\n IAnyType,\n IDisposer,\n IJsonPatch,\n IMiddleware,\n IMiddlewareEvent,\n IMiddlewareHandler,\n IReversibleJsonPatch,\n IStateTreeNode,\n IType,\n ReferenceIdentifier\n} from \"../../internal.ts\"\n\nlet nextNodeId = 1\n\nconst enum ObservableInstanceLifecycle {\n // the actual observable instance has not been created yet\n UNINITIALIZED,\n // the actual observable instance is being created\n CREATING,\n // the actual observable instance has been created\n CREATED\n}\n\nconst enum InternalEvents {\n Dispose = \"dispose\",\n Patch = \"patch\",\n Snapshot = \"snapshot\"\n}\n\n/**\n * @internal\n * @hidden\n */\nexport interface IChildNodesMap {\n [key: string]: AnyNode\n}\n\nconst snapshotReactionOptions = {\n onError(e: any) {\n throw e\n }\n}\n\ntype InternalEventHandlers<S> = {\n [InternalEvents.Dispose]: IDisposer\n [InternalEvents.Patch]: (patch: IJsonPatch, reversePatch: IJsonPatch) => void\n [InternalEvents.Snapshot]: (snapshot: S) => void\n}\n\n/**\n * @internal\n * @hidden\n */\nexport class ObjectNode<C, S, T> extends BaseNode<C, S, T> {\n declare readonly type: ComplexType<C, S, T>\n declare storedValue: T & IStateTreeNode<IType<C, S, T>>\n\n readonly nodeId = ++nextNodeId\n readonly identifierAttribute?: string\n readonly identifier: string | null // Identifier is always normalized to string, even if the identifier property isn't\n readonly unnormalizedIdentifier: ReferenceIdentifier | null\n\n identifierCache?: IdentifierCache\n isProtectionEnabled = true\n middlewares?: IMiddleware[]\n hasSnapshotPostProcessor = false\n\n private _applyPatches?: (patches: IJsonPatch[]) => void\n\n applyPatches(patches: IJsonPatch[]): void {\n this.createObservableInstanceIfNeeded()\n this._applyPatches!(patches)\n }\n\n private _applySnapshot?: (snapshot: C) => void\n\n applySnapshot(snapshot: C): void {\n this.createObservableInstanceIfNeeded()\n this._applySnapshot!(snapshot)\n }\n\n private _autoUnbox = true // unboxing is disabled when reading child nodes\n _isRunningAction = false // only relevant for root\n private _hasSnapshotReaction = false\n\n private _observableInstanceState = ObservableInstanceLifecycle.UNINITIALIZED\n private _childNodes: IChildNodesMap\n private _initialSnapshot: C\n private _cachedInitialSnapshot?: S\n private _cachedInitialSnapshotCreated = false\n private _snapshotComputed: IComputedValue<S>\n\n constructor(\n complexType: ComplexType<C, S, T>,\n parent: AnyObjectNode | null,\n subpath: string,\n environment: any,\n initialValue: C\n ) {\n super(complexType, parent, subpath, environment)\n this._snapshotComputed = computed<S>(() => freeze(this.getSnapshot()))\n\n this.unbox = this.unbox.bind(this)\n\n this._initialSnapshot = freeze(initialValue)\n this.identifierAttribute = complexType.identifierAttribute\n\n if (!parent) {\n this.identifierCache = new IdentifierCache()\n }\n\n this._childNodes = complexType.initializeChildNodes(\n this,\n this._initialSnapshot\n )\n\n // identifier can not be changed during lifecycle of a node\n // so we safely can read it from initial snapshot\n this.identifier = null\n this.unnormalizedIdentifier = null\n if (this.identifierAttribute && this._initialSnapshot) {\n let id = (this._initialSnapshot as any)[this.identifierAttribute]\n if (id === undefined) {\n // try with the actual node if not (for optional identifiers)\n const childNode = this._childNodes[this.identifierAttribute]\n if (childNode) {\n id = childNode.value\n }\n }\n\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n throw fail(\n `Instance identifier '${this.identifierAttribute}' for type '${this.type.name}' must be a string or a number`\n )\n }\n\n // normalize internal identifier to string\n this.identifier = normalizeIdentifier(id)\n this.unnormalizedIdentifier = id\n }\n\n if (!parent) {\n this.identifierCache!.addNodeToCache(this)\n } else {\n parent.root.identifierCache!.addNodeToCache(this)\n }\n }\n\n createObservableInstanceIfNeeded(fireHooks = true): void {\n if (\n this._observableInstanceState ===\n ObservableInstanceLifecycle.UNINITIALIZED\n ) {\n this.createObservableInstance(fireHooks)\n }\n }\n\n createObservableInstance(fireHooks = true): void {\n if (devMode()) {\n if (this.state !== NodeLifeCycle.INITIALIZING) {\n // istanbul ignore next\n throw fail(\n \"assertion failed: the creation of the observable instance must be done on the initializing phase\"\n )\n }\n }\n this._observableInstanceState = ObservableInstanceLifecycle.CREATING\n\n // make sure the parent chain is created as well\n\n // array with parent chain from parent to child\n const parentChain = []\n\n let parent = this.parent\n // for performance reasons we never go back further than the most direct\n // uninitialized parent\n // this is done to avoid traversing the whole tree to the root when using\n // the same reference again\n while (\n parent &&\n parent._observableInstanceState ===\n ObservableInstanceLifecycle.UNINITIALIZED\n ) {\n parentChain.unshift(parent)\n parent = parent.parent\n }\n\n // initialize the uninitialized parent chain from parent to child\n for (const p of parentChain) {\n // delay firing hooks until after all parents have been created\n p.createObservableInstanceIfNeeded(false)\n }\n\n const type = this.type\n\n try {\n // @ts-expect-error storedValue type mismatch during initialization\n this.storedValue = type.createNewInstance(this._childNodes)\n this.preboot()\n\n this._isRunningAction = true\n type.finalizeNewInstance(this, this.storedValue)\n } catch (e) {\n // short-cut to die the instance, to avoid the snapshot computed starting to throw...\n this.state = NodeLifeCycle.DEAD\n throw e\n } finally {\n this._isRunningAction = false\n }\n\n this._observableInstanceState = ObservableInstanceLifecycle.CREATED\n\n // NOTE: we need to touch snapshot, because non-observable\n // \"_observableInstanceState\" field was touched\n ;(this._snapshotComputed as any).trackAndCompute()\n\n if (this.isRoot) {\n this._addSnapshotReaction()\n }\n\n this._childNodes = EMPTY_OBJECT\n\n this.state = NodeLifeCycle.CREATED\n\n if (fireHooks) {\n this.fireHook(Hook.afterCreate)\n // Note that the parent might not be finalized at this point\n // so afterAttach won't be called until later in that case\n this.finalizeCreation()\n\n // fire the hooks of the parents that we created\n for (const p of parentChain.reverse()) {\n p.fireHook(Hook.afterCreate)\n // This will call afterAttach on the child if necessary\n p.finalizeCreation()\n }\n }\n }\n\n get root(): AnyObjectNode {\n const parent = this.parent\n return parent ? parent.root : this\n }\n\n clearParent(): void {\n if (!this.parent) {\n return\n }\n\n // detach if attached\n this.fireHook(Hook.beforeDetach)\n const previousState = this.state\n this.state = NodeLifeCycle.DETACHING\n\n const root = this.root\n const newEnv = root.environment\n const newIdCache = root.identifierCache!.splitCache(this)\n\n try {\n this.parent.removeChild(this.subpath)\n this.baseSetParent(null, \"\")\n this.environment = newEnv\n this.identifierCache = newIdCache\n } finally {\n this.state = previousState\n }\n }\n\n setParent(newParent: AnyObjectNode, subpath: string): void {\n const parentChanged = newParent !== this.parent\n const subpathChanged = subpath !== this.subpath\n\n if (!parentChanged && !subpathChanged) {\n return\n }\n\n if (devMode()) {\n if (!subpath) {\n // istanbul ignore next\n throw fail(\"assertion failed: subpath expected\")\n }\n if (!newParent) {\n // istanbul ignore next\n throw fail(\"assertion failed: new parent expected\")\n }\n\n if (this.parent && parentChanged) {\n throw fail(\n `A node cannot exists twice in the state tree. Failed to add ${this} to path '${newParent.path}/${subpath}'.`\n )\n }\n if (!this.parent && newParent.root === this) {\n throw fail(\n `A state tree is not allowed to contain itself. Cannot assign ${this} to path '${newParent.path}/${subpath}'`\n )\n }\n if (\n !this.parent &&\n !!this.environment &&\n this.environment !== newParent.root.environment\n ) {\n throw fail(\n `A state tree cannot be made part of another state tree as long as their environments are different.`\n )\n }\n }\n\n if (parentChanged) {\n // attach to new parent\n this.environment = undefined // will use root's\n newParent.root.identifierCache!.mergeCache(this)\n this.baseSetParent(newParent, subpath)\n this.fireHook(Hook.afterAttach)\n } else if (subpathChanged) {\n // moving to a new subpath on the same parent\n this.baseSetParent(this.parent, subpath)\n }\n }\n\n protected fireHook(name: Hook): void {\n this.fireInternalHook(name)\n\n const fn =\n this.storedValue &&\n typeof this.storedValue === \"object\" &&\n (this.storedValue as any)[name]\n if (typeof fn === \"function\") {\n // we check for it to allow old mobx peer dependencies that don't have the method to work (even when still bugged)\n if (_allowStateChangesInsideComputed) {\n _allowStateChangesInsideComputed(() => {\n fn.apply(this.storedValue)\n })\n } else {\n fn.apply(this.storedValue)\n }\n }\n }\n\n private _snapshotUponDeath?: S\n\n // advantage of using computed for a snapshot is that nicely respects transactions etc.\n get snapshot(): S {\n if (this.hasSnapshotPostProcessor) {\n this.createObservableInstanceIfNeeded()\n }\n return this._snapshotComputed.get()\n }\n\n // NOTE: we use this method to get snapshot without creating @computed overhead\n getSnapshot(): S {\n if (!this.isAlive) {\n return this._snapshotUponDeath!\n }\n return this._observableInstanceState === ObservableInstanceLifecycle.CREATED\n ? this._getActualSnapshot()\n : this._getCachedInitialSnapshot()\n }\n\n private _getActualSnapshot(): S {\n return this.type.getSnapshot(this)\n }\n\n private _getCachedInitialSnapshot(): S {\n if (!this._cachedInitialSnapshotCreated) {\n const type = this.type\n const childNodes = this._childNodes\n const snapshot = this._initialSnapshot\n\n this._cachedInitialSnapshot = type.processInitialSnapshot(\n childNodes,\n snapshot\n )\n this._cachedInitialSnapshotCreated = true\n }\n\n return this._cachedInitialSnapshot!\n }\n\n private isRunningAction(): boolean {\n if (this._isRunningAction) {\n return true\n }\n if (this.isRoot) {\n return false\n }\n return this.parent!.isRunningAction()\n }\n\n assertAlive(context: AssertAliveContext): void {\n const livelinessChecking = getLivelinessChecking()\n if (!this.isAlive && livelinessChecking !== \"ignore\") {\n const error = this._getAssertAliveError(context)\n switch (livelinessChecking) {\n case \"error\":\n throw fail(error)\n case \"warn\":\n warnError(error)\n }\n }\n }\n\n private _getAssertAliveError(context: AssertAliveContext): string {\n const escapedPath = this.getEscapedPath(false) || this.pathUponDeath || \"\"\n const subpath = (context.subpath && escapeJsonPath(context.subpath)) || \"\"\n\n let actionContext = context.actionContext || getCurrentActionContext()\n\n // try to use a real action context if possible since it includes the action name\n if (\n actionContext &&\n actionContext.type !== \"action\" &&\n actionContext.parentActionEvent\n ) {\n actionContext = actionContext.parentActionEvent\n }\n\n let actionFullPath = \"\"\n if (actionContext && actionContext.name != null) {\n // try to use the context, and if it not available use the node one\n const actionPath =\n (actionContext &&\n actionContext.context &&\n getPath(actionContext.context)) ||\n escapedPath\n actionFullPath = `${actionPath}.${actionContext.name}()`\n }\n\n return `You are trying to read or write to an object that is no longer part of a state tree. (Object type: '${this.type.name}', Path upon death: '${escapedPath}', Subpath: '${subpath}', Action: '${actionFullPath}'). Either detach nodes first, or don't use objects after removing / replacing them in the tree.`\n }\n\n getChildNode(subpath: string): AnyNode {\n this.assertAlive({\n subpath\n })\n this._autoUnbox = false\n try {\n return this._observableInstanceState ===\n ObservableInstanceLifecycle.CREATED\n ? this.type.getChildNode(this, subpath)\n : this._childNodes![subpath]\n } finally {\n this._autoUnbox = true\n }\n }\n\n getChildren(): ReadonlyArray<AnyNode> {\n this.assertAlive(EMPTY_OBJECT)\n this._autoUnbox = false\n try {\n return this._observableInstanceState ===\n ObservableInstanceLifecycle.CREATED\n ? this.type.getChildren(this)\n : convertChildNodesToArray(this._childNodes)\n } finally {\n this._autoUnbox = true\n }\n }\n\n getChildType(propertyName?: string): IAnyType {\n return this.type.getChildType(propertyName)\n }\n\n get isProtected(): boolean {\n return this.root.isProtectionEnabled\n }\n\n assertWritable(context: AssertAliveContext): void {\n this.assertAlive(context)\n if (!this.isRunningAction() && this.isProtected) {\n throw fail(\n `Cannot modify '${this}', the object is protected and can only be modified by using an action.`\n )\n }\n }\n\n removeChild(subpath: string): void {\n this.type.removeChild(this, subpath)\n }\n\n // bound on the constructor\n unbox(childNode: AnyNode | undefined): AnyNode | undefined {\n if (!childNode) {\n return childNode\n }\n\n this.assertAlive({\n subpath: childNode.subpath || childNode.subpathUponDeath\n })\n return this._autoUnbox ? childNode.value : childNode\n }\n\n toString(): string {\n const path = (this.isAlive ? this.path : this.pathUponDeath) || \"<root>\"\n const identifier = this.identifier ? `(id: ${this.identifier})` : \"\"\n return `${this.type.name}@${path}${identifier}${this.isAlive ? \"\" : \" [dead]\"}`\n }\n\n finalizeCreation(): void {\n this.baseFinalizeCreation(() => {\n for (const child of this.getChildren()) {\n child.finalizeCreation()\n }\n\n this.fireInternalHook(Hook.afterCreationFinalization)\n })\n }\n\n detach(): void {\n if (!this.isAlive) {\n throw fail(`Error while detaching, node is not alive.`)\n }\n\n this.clearParent()\n }\n\n private preboot(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n this._applyPatches = createActionInvoker(\n this.storedValue,\n \"@APPLY_PATCHES\",\n (patches: IJsonPatch[]) => {\n patches.forEach(patch => {\n if (!patch.path) {\n self.type.applySnapshot(self, patch.value)\n return\n }\n const parts = splitJsonPath(patch.path)\n const node = resolveNodeByPathParts(\n self,\n parts.slice(0, -1)\n ) as AnyObjectNode\n node.applyPatchLocally(parts[parts.length - 1], patch)\n })\n }\n )\n this._applySnapshot = createActionInvoker(\n this.storedValue,\n \"@APPLY_SNAPSHOT\",\n (snapshot: C) => {\n // if the snapshot is the same as the current one, avoid performing a reconcile\n if (snapshot === (self.snapshot as any)) {\n return\n }\n // else, apply it by calling the type logic\n return self.type.applySnapshot(self, snapshot as any)\n }\n )\n\n addHiddenFinalProp(this.storedValue, \"$treenode\", this)\n addHiddenFinalProp(this.storedValue, \"toJSON\", toJSON)\n }\n\n die(): void {\n if (!this.isAlive || this.state === NodeLifeCycle.DETACHING) {\n return\n }\n this.aboutToDie()\n this.finalizeDeath()\n }\n\n aboutToDie(): void {\n if (\n this._observableInstanceState ===\n ObservableInstanceLifecycle.UNINITIALIZED\n ) {\n return\n }\n\n this.getChildren().forEach(node => {\n node.aboutToDie()\n })\n\n // beforeDestroy should run before the disposers since else we could end up in a situation where\n // a disposer added with addDisposer at this stage (beforeDestroy) is actually never released\n this.baseAboutToDie()\n\n this._internalEventsEmit(InternalEvents.Dispose)\n this._internalEventsClear(InternalEvents.Dispose)\n }\n\n finalizeDeath(): void {\n // invariant: not called directly but from \"die\"\n this.getChildren().forEach(node => {\n node.finalizeDeath()\n })\n this.root.identifierCache!.notifyDied(this)\n\n // \"kill\" the computed prop and just store the last snapshot\n const snapshot = this.snapshot\n this._snapshotUponDeath = snapshot\n\n this._internalEventsClearAll()\n\n this.baseFinalizeDeath()\n }\n\n onSnapshot(onChange: (snapshot: S) => void): IDisposer {\n this._addSnapshotReaction()\n return this._internalEventsRegister(InternalEvents.Snapshot, onChange)\n }\n\n protected emitSnapshot(snapshot: S): void {\n this._internalEventsEmit(InternalEvents.Snapshot, snapshot)\n }\n\n onPatch(\n handler: (patch: IJsonPatch, reversePatch: IJsonPatch) => void\n ): IDisposer {\n return this._internalEventsRegister(InternalEvents.Patch, handler)\n }\n\n emitPatch(basePatch: IReversibleJsonPatch, source: AnyNode): void {\n if (this._internalEventsHasSubscribers(InternalEvents.Patch)) {\n const localizedPatch: IReversibleJsonPatch = extend({}, basePatch, {\n path: source.path.substr(this.path.length) + \"/\" + basePatch.path // calculate the relative path of the patch\n })\n const [patch, reversePatch] = splitPatch(localizedPatch)\n this._internalEventsEmit(InternalEvents.Patch, patch, reversePatch)\n }\n if (this.parent) {\n this.parent.emitPatch(basePatch, source)\n }\n }\n\n hasDisposer(disposer: () => void): boolean {\n return this._internalEventsHas(InternalEvents.Dispose, disposer)\n }\n\n addDisposer(disposer: () => void): void {\n if (!this.hasDisposer(disposer)) {\n this._internalEventsRegister(InternalEvents.Dispose, disposer, true)\n return\n }\n throw fail(\n \"cannot add a disposer when it is already registered for execution\"\n )\n }\n\n removeDisposer(disposer: () => void): void {\n if (!this._internalEventsHas(InternalEvents.Dispose, disposer)) {\n throw fail(\n \"cannot remove a disposer which was never registered for execution\"\n )\n }\n this._internalEventsUnregister(InternalEvents.Dispose, disposer)\n }\n\n private removeMiddleware(middleware: IMiddleware): void {\n if (this.middlewares) {\n const index = this.middlewares.indexOf(middleware)\n if (index >= 0) {\n this.middlewares.splice(index, 1)\n }\n }\n }\n\n addMiddleWare(\n handler: IMiddlewareHandler,\n includeHooks: boolean = true\n ): IDisposer {\n const middleware = { handler, includeHooks }\n if (!this.middlewares) {\n this.middlewares = [middleware]\n } else {\n this.middlewares.push(middleware)\n }\n\n return () => {\n this.removeMiddleware(middleware)\n }\n }\n\n applyPatchLocally(subpath: string, patch: IJsonPatch): void {\n this.assertWritable({\n subpath\n })\n this.createObservableInstanceIfNeeded()\n this.type.applyPatchLocally(this, subpath, patch)\n }\n\n private _addSnapshotReaction(): void {\n if (!this._hasSnapshotReaction) {\n const snapshotDisposer = reaction(\n () => this.snapshot,\n snapshot => this.emitSnapshot(snapshot),\n snapshotReactionOptions\n )\n this.addDisposer(snapshotDisposer)\n this._hasSnapshotReaction = true\n }\n }\n\n // #region internal event handling\n\n private _internalEvents?: EventHandlers<InternalEventHandlers<S>>\n\n // we proxy the methods to avoid creating an EventHandlers instance when it is not needed\n\n private _internalEventsHasSubscribers(event: InternalEvents): boolean {\n return !!this._internalEvents && this._internalEvents.hasSubscribers(event)\n }\n\n private _internalEventsRegister<IE extends InternalEvents>(\n event: IE,\n eventHandler: InternalEventHandlers<S>[IE],\n atTheBeginning = false\n ): IDisposer {\n if (!this._internalEvents) {\n this._internalEvents = new EventHandlers()\n }\n return this._internalEvents.register(event, eventHandler, atTheBeginning)\n }\n\n private _internalEventsHas<IE extends InternalEvents>(\n event: IE,\n eventHandler: InternalEventHandlers<S>[IE]\n ): boolean {\n return (\n !!this._internalEvents && this._internalEvents.has(event, eventHandler)\n )\n }\n\n private _internalEventsUnregister<IE extends InternalEvents>(\n event: IE,\n eventHandler: InternalEventHandlers<S>[IE]\n ): void {\n if (this._internalEvents) {\n this._internalEvents.unregister(event, eventHandler)\n }\n }\n\n private _internalEventsEmit<IE extends InternalEvents>(\n event: IE,\n ...args: ArgumentTypes<InternalEventHandlers<S>[IE]>\n ): void {\n if (this._internalEvents) {\n this._internalEvents.emit(event, ...args)\n }\n }\n\n private _internalEventsClear(event: InternalEvents): void {\n if (this._internalEvents) {\n this._internalEvents.clear(event)\n }\n }\n\n private _internalEventsClearAll(): void {\n if (this._internalEvents) {\n this._internalEvents.clearAll()\n }\n }\n\n // #endregion\n}\nObjectNode.prototype.createObservableInstance = action(\n ObjectNode.prototype.createObservableInstance\n)\nObjectNode.prototype.detach = action(ObjectNode.prototype.detach)\nObjectNode.prototype.die = action(ObjectNode.prototype.die)\n\n/**\n * @internal\n * @hidden\n */\nexport type AnyObjectNode = ObjectNode<any, any, any>\n\n/**\n * @internal\n * @hidden\n */\nexport interface AssertAliveContext {\n subpath?: string\n actionContext?: IMiddlewareEvent\n}\n"]}
@@ -1,21 +0,0 @@
1
- import { BaseNode } from "./BaseNode.ts";
2
- import { SimpleType } from "../type/type.ts";
3
- import { type AnyObjectNode, Hook } from "../../internal.ts";
4
- /**
5
- * @internal
6
- * @hidden
7
- */
8
- export declare class ScalarNode<C, S, T> extends BaseNode<C, S, T> {
9
- readonly type: SimpleType<C, S, T>;
10
- constructor(simpleType: SimpleType<C, S, T>, parent: AnyObjectNode | null, subpath: string, environment: any, initialSnapshot: C);
11
- get root(): AnyObjectNode;
12
- setParent(newParent: AnyObjectNode, subpath: string): void;
13
- get snapshot(): S;
14
- getSnapshot(): S;
15
- toString(): string;
16
- die(): void;
17
- finalizeCreation(): void;
18
- aboutToDie(): void;
19
- finalizeDeath(): void;
20
- protected fireHook(name: Hook): void;
21
- }