@jbrowse/mobx-state-tree 5.4.4 → 5.4.6

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 (82) hide show
  1. package/README.md +1 -0
  2. package/dist/core/action.d.ts +87 -0
  3. package/dist/core/action.js.map +1 -0
  4. package/dist/core/actionContext.d.ts +27 -0
  5. package/dist/core/actionContext.js.map +1 -0
  6. package/dist/core/flow.d.ts +69 -0
  7. package/dist/core/flow.js.map +1 -0
  8. package/dist/core/json-patch.d.ts +46 -0
  9. package/dist/core/json-patch.js.map +1 -0
  10. package/dist/core/mst-operations.d.ts +459 -0
  11. package/dist/core/mst-operations.js.map +1 -0
  12. package/dist/core/node/BaseNode.d.ts +62 -0
  13. package/dist/core/node/BaseNode.js.map +1 -0
  14. package/dist/core/node/Hook.d.ts +17 -0
  15. package/dist/core/node/Hook.js.map +1 -0
  16. package/dist/core/node/create-node.d.ts +16 -0
  17. package/dist/core/node/create-node.js.map +1 -0
  18. package/dist/core/node/identifier-cache.d.ts +19 -0
  19. package/dist/core/node/identifier-cache.js.map +1 -0
  20. package/dist/core/node/livelinessChecking.d.ts +37 -0
  21. package/dist/core/node/livelinessChecking.js.map +1 -0
  22. package/dist/core/node/node-utils.d.ts +83 -0
  23. package/dist/core/node/node-utils.js.map +1 -0
  24. package/dist/core/node/object-node.d.ts +99 -0
  25. package/dist/core/node/object-node.js.map +1 -0
  26. package/dist/core/node/scalar-node.d.ts +19 -0
  27. package/dist/core/node/scalar-node.js.map +1 -0
  28. package/dist/core/process.d.ts +50 -0
  29. package/dist/core/process.js.map +1 -0
  30. package/dist/core/type/type-checker.d.ts +60 -0
  31. package/dist/core/type/type-checker.js.map +1 -0
  32. package/dist/core/type/type.d.ts +317 -0
  33. package/dist/core/type/type.js.map +1 -0
  34. package/dist/index.d.ts +2 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/internal.d.ts +38 -0
  37. package/dist/internal.js.map +1 -0
  38. package/dist/middlewares/create-action-tracking-middleware.d.ts +24 -0
  39. package/dist/middlewares/create-action-tracking-middleware.js.map +1 -0
  40. package/dist/middlewares/createActionTrackingMiddleware2.d.ts +34 -0
  41. package/dist/middlewares/createActionTrackingMiddleware2.js.map +1 -0
  42. package/dist/middlewares/on-action.d.ts +87 -0
  43. package/dist/middlewares/on-action.js.map +1 -0
  44. package/dist/types/complex-types/array.d.ts +80 -0
  45. package/dist/types/complex-types/array.js.map +1 -0
  46. package/dist/types/complex-types/map.d.ts +110 -0
  47. package/dist/types/complex-types/map.js.map +1 -0
  48. package/dist/types/complex-types/model.d.ts +192 -0
  49. package/dist/types/complex-types/model.js.map +1 -0
  50. package/dist/types/index.d.ts +32 -0
  51. package/dist/types/index.js.map +1 -0
  52. package/dist/types/primitives.d.ts +124 -0
  53. package/dist/types/primitives.js.map +1 -0
  54. package/dist/types/utility-types/custom.d.ts +74 -0
  55. package/dist/types/utility-types/custom.js.map +1 -0
  56. package/dist/types/utility-types/enumeration.d.ts +5 -0
  57. package/dist/types/utility-types/enumeration.js.map +1 -0
  58. package/dist/types/utility-types/frozen.d.ts +23 -0
  59. package/dist/types/utility-types/frozen.js.map +1 -0
  60. package/dist/types/utility-types/identifier.d.ts +86 -0
  61. package/dist/types/utility-types/identifier.js.map +1 -0
  62. package/dist/types/utility-types/late.d.ts +10 -0
  63. package/dist/types/utility-types/late.js.map +1 -0
  64. package/dist/types/utility-types/lazy.d.ts +22 -0
  65. package/dist/types/utility-types/lazy.js.map +1 -0
  66. package/dist/types/utility-types/literal.d.ts +37 -0
  67. package/dist/types/utility-types/literal.js.map +1 -0
  68. package/dist/types/utility-types/maybe.d.ts +26 -0
  69. package/dist/types/utility-types/maybe.js.map +1 -0
  70. package/dist/types/utility-types/optional.d.ts +41 -0
  71. package/dist/types/utility-types/optional.js.map +1 -0
  72. package/dist/types/utility-types/reference.d.ts +89 -0
  73. package/dist/types/utility-types/reference.js.map +1 -0
  74. package/dist/types/utility-types/refinement.d.ts +10 -0
  75. package/dist/types/utility-types/refinement.js.map +1 -0
  76. package/dist/types/utility-types/snapshotProcessor.d.ts +63 -0
  77. package/dist/types/utility-types/snapshotProcessor.js.map +1 -0
  78. package/dist/types/utility-types/union.d.ts +73 -0
  79. package/dist/types/utility-types/union.js.map +1 -0
  80. package/dist/utils.d.ts +230 -0
  81. package/dist/utils.js.map +1 -0
  82. package/package.json +6 -12
@@ -0,0 +1,459 @@
1
+ import type { IActionContext, IAnyComplexType, IAnyModelType, IAnyStateTreeNode, IAnyType, IDisposer, IJsonPatch, IStateTreeNode, IType, ReferenceIdentifier, TypeOfValue } from "../internal.ts";
2
+ /** @hidden */
3
+ export type TypeOrStateTreeNodeToStateTreeNode<T extends IAnyType | IAnyStateTreeNode> = T extends IType<any, any, infer TT> ? TT & IStateTreeNode<T> : T;
4
+ /**
5
+ * Returns the _actual_ type of the given tree node. (Or throws)
6
+ *
7
+ * @param object
8
+ * @returns
9
+ */
10
+ export declare function getType(object: IAnyStateTreeNode): IAnyComplexType;
11
+ /**
12
+ * Returns the _declared_ type of the given sub property of an object, array or map.
13
+ * In the case of arrays and maps the property name is optional and will be ignored.
14
+ *
15
+ * Example:
16
+ * ```ts
17
+ * const Box = types.model({ x: 0, y: 0 })
18
+ * const box = Box.create()
19
+ *
20
+ * console.log(getChildType(box, "x").name) // 'number'
21
+ * ```
22
+ *
23
+ * @param object
24
+ * @param propertyName
25
+ * @returns
26
+ */
27
+ export declare function getChildType(object: IAnyStateTreeNode, propertyName?: string): IAnyType;
28
+ /**
29
+ * Registers a function that will be invoked for each mutation that is applied to the provided model instance, or to any of its children.
30
+ * See [patches](https://github.com/mobxjs/mobx-state-tree#patches) for more details. onPatch events are emitted immediately and will not await the end of a transaction.
31
+ * Patches can be used to deeply observe a model tree.
32
+ *
33
+ * @param target the model instance from which to receive patches
34
+ * @param callback the callback that is invoked for each patch. The reversePatch is a patch that would actually undo the emitted patch
35
+ * @returns function to remove the listener
36
+ */
37
+ export declare function onPatch(target: IAnyStateTreeNode, callback: (patch: IJsonPatch, reversePatch: IJsonPatch) => void): IDisposer;
38
+ /**
39
+ * Registers a function that is invoked whenever a new snapshot for the given model instance is available.
40
+ * The listener will only be fire at the end of the current MobX (trans)action.
41
+ * See [snapshots](https://github.com/mobxjs/mobx-state-tree#snapshots) for more details.
42
+ *
43
+ * @param target
44
+ * @param callback
45
+ * @returns
46
+ */
47
+ export declare function onSnapshot<S>(target: IStateTreeNode<IType<any, S, any>>, callback: (snapshot: S) => void): IDisposer;
48
+ /**
49
+ * Applies a JSON-patch to the given model instance or bails out if the patch couldn't be applied
50
+ * See [patches](https://github.com/mobxjs/mobx-state-tree#patches) for more details.
51
+ *
52
+ * Can apply a single past, or an array of patches.
53
+ *
54
+ * @param target
55
+ * @param patch
56
+ * @returns
57
+ */
58
+ export declare function applyPatch(target: IAnyStateTreeNode, patch: IJsonPatch | ReadonlyArray<IJsonPatch>): void;
59
+ export interface IPatchRecorder {
60
+ patches: ReadonlyArray<IJsonPatch>;
61
+ inversePatches: ReadonlyArray<IJsonPatch>;
62
+ reversedInversePatches: ReadonlyArray<IJsonPatch>;
63
+ readonly recording: boolean;
64
+ stop(): void;
65
+ resume(): void;
66
+ replay(target?: IAnyStateTreeNode): void;
67
+ undo(target?: IAnyStateTreeNode): void;
68
+ }
69
+ /**
70
+ * Small abstraction around `onPatch` and `applyPatch`, attaches a patch listener to a tree and records all the patches.
71
+ * Returns a recorder object with the following signature:
72
+ *
73
+ * Example:
74
+ * ```ts
75
+ * export interface IPatchRecorder {
76
+ * // the recorded patches
77
+ * patches: IJsonPatch[]
78
+ * // the inverse of the recorded patches
79
+ * inversePatches: IJsonPatch[]
80
+ * // true if currently recording
81
+ * recording: boolean
82
+ * // stop recording patches
83
+ * stop(): void
84
+ * // resume recording patches
85
+ * resume(): void
86
+ * // apply all the recorded patches on the given target (the original subject if omitted)
87
+ * replay(target?: IAnyStateTreeNode): void
88
+ * // reverse apply the recorded patches on the given target (the original subject if omitted)
89
+ * // stops the recorder if not already stopped
90
+ * undo(): void
91
+ * }
92
+ * ```
93
+ *
94
+ * The optional filter function allows to skip recording certain patches.
95
+ *
96
+ * @param subject
97
+ * @param filter
98
+ * @returns
99
+ */
100
+ export declare function recordPatches(subject: IAnyStateTreeNode, filter?: (patch: IJsonPatch, inversePatch: IJsonPatch, actionContext: IActionContext | undefined) => boolean): IPatchRecorder;
101
+ /**
102
+ * The inverse of `unprotect`.
103
+ *
104
+ * @param target
105
+ */
106
+ export declare function protect(target: IAnyStateTreeNode): void;
107
+ /**
108
+ * By default it is not allowed to directly modify a model. Models can only be modified through actions.
109
+ * However, in some cases you don't care about the advantages (like replayability, traceability, etc) this yields.
110
+ * For example because you are building a PoC or don't have any middleware attached to your tree.
111
+ *
112
+ * In that case you can disable this protection by calling `unprotect` on the root of your tree.
113
+ *
114
+ * Example:
115
+ * ```ts
116
+ * const Todo = types.model({
117
+ * done: false
118
+ * }).actions(self => ({
119
+ * toggle() {
120
+ * self.done = !self.done
121
+ * }
122
+ * }))
123
+ *
124
+ * const todo = Todo.create()
125
+ * todo.done = true // throws!
126
+ * todo.toggle() // OK
127
+ * unprotect(todo)
128
+ * todo.done = false // OK
129
+ * ```
130
+ */
131
+ export declare function unprotect(target: IAnyStateTreeNode): void;
132
+ /**
133
+ * Returns true if the object is in protected mode, @see protect
134
+ */
135
+ export declare function isProtected(target: IAnyStateTreeNode): boolean;
136
+ /**
137
+ * Applies a snapshot to a given model instances. Patch and snapshot listeners will be invoked as usual.
138
+ *
139
+ * @param target
140
+ * @param snapshot
141
+ * @returns
142
+ */
143
+ export declare function applySnapshot<C>(target: IStateTreeNode<IType<C, any, any>>, snapshot: C): void;
144
+ /**
145
+ * Calculates a snapshot from the given model instance. The snapshot will always reflect the latest state but use
146
+ * structural sharing where possible. Doesn't require MobX transactions to be completed.
147
+ *
148
+ * @param target
149
+ * @param applyPostProcess If true (the default) then postProcessSnapshot gets applied.
150
+ * @returns
151
+ */
152
+ export declare function getSnapshot<S>(target: IStateTreeNode<IType<any, S, any>>, applyPostProcess?: boolean): S;
153
+ /**
154
+ * Given a model instance, returns `true` if the object has a parent, that is, is part of another object, map or array.
155
+ *
156
+ * @param target
157
+ * @param depth How far should we look upward? 1 by default.
158
+ * @returns
159
+ */
160
+ export declare function hasParent(target: IAnyStateTreeNode, depth?: number): boolean;
161
+ /**
162
+ * Returns the immediate parent of this object, or throws.
163
+ *
164
+ * Note that the immediate parent can be either an object, map or array, and
165
+ * doesn't necessarily refer to the parent model.
166
+ *
167
+ * Please note that in child nodes access to the root is only possible
168
+ * once the `afterAttach` hook has fired.
169
+ *
170
+ * @param target
171
+ * @param depth How far should we look upward? 1 by default.
172
+ * @returns
173
+ */
174
+ export declare function getParent<IT extends IAnyStateTreeNode | IAnyComplexType>(target: IAnyStateTreeNode, depth?: number): TypeOrStateTreeNodeToStateTreeNode<IT>;
175
+ /**
176
+ * Given a model instance, returns `true` if the object has a parent of given type, that is, is part of another object, map or array
177
+ *
178
+ * @param target
179
+ * @param type
180
+ * @returns
181
+ */
182
+ export declare function hasParentOfType(target: IAnyStateTreeNode, type: IAnyComplexType): boolean;
183
+ /**
184
+ * Returns the target's parent of a given type, or throws.
185
+ *
186
+ * @param target
187
+ * @param type
188
+ * @returns
189
+ */
190
+ export declare function getParentOfType<IT extends IAnyComplexType>(target: IAnyStateTreeNode, type: IT): IT["Type"];
191
+ /**
192
+ * Given an object in a model tree, returns the root object of that tree.
193
+ *
194
+ * Please note that in child nodes access to the root is only possible
195
+ * once the `afterAttach` hook has fired.
196
+ *
197
+ * @param target
198
+ * @returns
199
+ */
200
+ export declare function getRoot<IT extends IAnyComplexType | IAnyStateTreeNode>(target: IAnyStateTreeNode): TypeOrStateTreeNodeToStateTreeNode<IT>;
201
+ /**
202
+ * Returns the path of the given object in the model tree
203
+ *
204
+ * @param target
205
+ * @returns
206
+ */
207
+ export declare function getPath(target: IAnyStateTreeNode): string;
208
+ /**
209
+ * Returns the path of the given object as unescaped string array.
210
+ *
211
+ * @param target
212
+ * @returns
213
+ */
214
+ export declare function getPathParts(target: IAnyStateTreeNode): string[];
215
+ /**
216
+ * Returns true if the given object is the root of a model tree.
217
+ *
218
+ * @param target
219
+ * @returns
220
+ */
221
+ export declare function isRoot(target: IAnyStateTreeNode): boolean;
222
+ /**
223
+ * Resolves a path relatively to a given object.
224
+ * Returns undefined if no value can be found.
225
+ *
226
+ * @param target
227
+ * @param path escaped json path
228
+ * @returns
229
+ */
230
+ export declare function resolvePath(target: IAnyStateTreeNode, path: string): any;
231
+ /**
232
+ * Resolves a model instance given a root target, the type and the identifier you are searching for.
233
+ * Returns undefined if no value can be found.
234
+ *
235
+ * @param type
236
+ * @param target
237
+ * @param identifier
238
+ * @returns
239
+ */
240
+ export declare function resolveIdentifier<IT extends IAnyModelType>(type: IT, target: IAnyStateTreeNode, identifier: ReferenceIdentifier): IT["Type"] | undefined;
241
+ /**
242
+ * Returns the identifier of the target node.
243
+ * This is the *string normalized* identifier, which might not match the type of the identifier attribute
244
+ *
245
+ * @param target
246
+ * @returns
247
+ */
248
+ export declare function getIdentifier(target: IAnyStateTreeNode): string | null;
249
+ /**
250
+ * Tests if a reference is valid (pointing to an existing node and optionally if alive) and returns such reference if the check passes,
251
+ * else it returns undefined.
252
+ *
253
+ * @param getter Function to access the reference.
254
+ * @param checkIfAlive true to also make sure the referenced node is alive (default), false to skip this check.
255
+ * @returns
256
+ */
257
+ export declare function tryReference<N extends IAnyStateTreeNode>(getter: () => N | null | undefined, checkIfAlive?: boolean): N | undefined;
258
+ /**
259
+ * Tests if a reference is valid (pointing to an existing node and optionally if alive) and returns if the check passes or not.
260
+ *
261
+ * @param getter Function to access the reference.
262
+ * @param checkIfAlive true to also make sure the referenced node is alive (default), false to skip this check.
263
+ * @returns
264
+ */
265
+ export declare function isValidReference<N extends IAnyStateTreeNode>(getter: () => N | null | undefined, checkIfAlive?: boolean): boolean;
266
+ /**
267
+ * Try to resolve a given path relative to a given node.
268
+ *
269
+ * @param target
270
+ * @param path
271
+ * @returns
272
+ */
273
+ export declare function tryResolve(target: IAnyStateTreeNode, path: string): any;
274
+ /**
275
+ * Given two state tree nodes that are part of the same tree,
276
+ * returns the shortest jsonpath needed to navigate from the one to the other
277
+ *
278
+ * @param base
279
+ * @param target
280
+ * @returns
281
+ */
282
+ export declare function getRelativePath(base: IAnyStateTreeNode, target: IAnyStateTreeNode): string;
283
+ /**
284
+ * Returns a deep copy of the given state tree node as new tree.
285
+ * Shorthand for `snapshot(x) = getType(x).create(getSnapshot(x))`
286
+ *
287
+ * _Tip: clone will create a literal copy, including the same identifiers. To modify identifiers etc. during cloning, don't use clone but take a snapshot of the tree, modify it, and create new instance_
288
+ *
289
+ * @param source
290
+ * @param keepEnvironment indicates whether the clone should inherit the same environment (`true`, the default), or not have an environment (`false`). If an object is passed in as second argument, that will act as the environment for the cloned tree.
291
+ * @returns
292
+ */
293
+ export declare function clone<T extends IAnyStateTreeNode>(source: T, keepEnvironment?: boolean | any): T;
294
+ /**
295
+ * Removes a model element from the state tree, and let it live on as a new state tree
296
+ */
297
+ export declare function detach<T extends IAnyStateTreeNode>(target: T): T;
298
+ /**
299
+ * Removes a model element from the state tree, and mark it as end-of-life; the element should not be used anymore
300
+ */
301
+ export declare function destroy(target: IAnyStateTreeNode): void;
302
+ /**
303
+ * Returns true if the given state tree node is not killed yet.
304
+ * This means that the node is still a part of a tree, and that `destroy`
305
+ * has not been called. If a node is not alive anymore, the only thing one can do with it
306
+ * is requesting it's last path and snapshot
307
+ *
308
+ * @param target
309
+ * @returns
310
+ */
311
+ export declare function isAlive(target: IAnyStateTreeNode): boolean;
312
+ /**
313
+ * Use this utility to register a function that should be called whenever the
314
+ * targeted state tree node is destroyed. This is a useful alternative to managing
315
+ * cleanup methods yourself using the `beforeDestroy` hook.
316
+ *
317
+ * This methods returns the same disposer that was passed as argument.
318
+ *
319
+ * Example:
320
+ * ```ts
321
+ * const Todo = types.model({
322
+ * title: types.string
323
+ * }).actions(self => ({
324
+ * afterCreate() {
325
+ * const autoSaveDisposer = reaction(
326
+ * () => getSnapshot(self),
327
+ * snapshot => sendSnapshotToServerSomehow(snapshot)
328
+ * )
329
+ * // stop sending updates to server if this
330
+ * // instance is destroyed
331
+ * addDisposer(self, autoSaveDisposer)
332
+ * }
333
+ * }))
334
+ * ```
335
+ *
336
+ * @param target
337
+ * @param disposer
338
+ * @returns The same disposer that was passed as argument
339
+ */
340
+ export declare function addDisposer(target: IAnyStateTreeNode, disposer: IDisposer): IDisposer;
341
+ /**
342
+ * Returns the environment of the current state tree. For more info on environments,
343
+ * see [Dependency injection](https://github.com/mobxjs/mobx-state-tree#dependency-injection)
344
+ *
345
+ * Please note that in child nodes access to the root is only possible
346
+ * once the `afterAttach` hook has fired
347
+ *
348
+ * Returns an empty environment if the tree wasn't initialized with an environment
349
+ *
350
+ * @param target
351
+ * @returns
352
+ */
353
+ export declare function getEnv<T = any>(target: IAnyStateTreeNode): T;
354
+ /**
355
+ * Performs a depth first walk through a tree.
356
+ */
357
+ export declare function walk(target: IAnyStateTreeNode, processor: (item: IAnyStateTreeNode) => void): void;
358
+ export interface IModelReflectionPropertiesData {
359
+ name: string;
360
+ properties: {
361
+ [K: string]: IAnyType;
362
+ };
363
+ }
364
+ /**
365
+ * Returns a reflection of the model type properties and name for either a model type or model node.
366
+ *
367
+ * @param typeOrNode
368
+ * @returns
369
+ */
370
+ export declare function getPropertyMembers(typeOrNode: IAnyModelType | IAnyStateTreeNode): IModelReflectionPropertiesData;
371
+ export interface IModelReflectionData extends IModelReflectionPropertiesData {
372
+ actions: string[];
373
+ views: string[];
374
+ volatile: string[];
375
+ flowActions: string[];
376
+ }
377
+ /**
378
+ * Returns a reflection of the model node, including name, properties, views, volatile state,
379
+ * and actions. `flowActions` is also provided as a separate array of names for any action that
380
+ * came from a flow generator as well.
381
+ *
382
+ * In the case where a model has two actions: `doSomething` and `doSomethingWithFlow`, where
383
+ * `doSomethingWithFlow` is a flow generator, the `actions` array will contain both actions,
384
+ * i.e. ["doSomething", "doSomethingWithFlow"], and the `flowActions` array will contain only
385
+ * the flow action, i.e. ["doSomethingWithFlow"].
386
+ *
387
+ * @param target
388
+ * @returns
389
+ */
390
+ export declare function getMembers(target: IAnyStateTreeNode): IModelReflectionData;
391
+ export declare function cast<O extends string | number | boolean | null | undefined = never>(snapshotOrInstance: O): O;
392
+ export declare function cast<O = never>(snapshotOrInstance: TypeOfValue<O>["CreationType"] | TypeOfValue<O>["SnapshotType"] | TypeOfValue<O>["Type"]): O;
393
+ /**
394
+ * Casts a node instance type to a snapshot type so it can be assigned to a type snapshot (e.g. to be used inside a create call).
395
+ * Note that this is just a cast for the type system, this is, it won't actually convert an instance to a snapshot,
396
+ * but just fool typescript into thinking so.
397
+ *
398
+ * Example:
399
+ * ```ts
400
+ * const ModelA = types.model({
401
+ * n: types.number
402
+ * }).actions(self => ({
403
+ * setN(aNumber: number) {
404
+ * self.n = aNumber
405
+ * }
406
+ * }))
407
+ *
408
+ * const ModelB = types.model({
409
+ * innerModel: ModelA
410
+ * })
411
+ *
412
+ * const a = ModelA.create({ n: 5 });
413
+ * // this will allow the compiler to use a model as if it were a snapshot
414
+ * const b = ModelB.create({ innerModel: castToSnapshot(a)})
415
+ * ```
416
+ *
417
+ * @param snapshotOrInstance Snapshot or instance
418
+ * @returns The same object cast as an input (creation) snapshot
419
+ */
420
+ export declare function castToSnapshot<I>(snapshotOrInstance: I): Extract<I, IAnyStateTreeNode> extends never ? I : TypeOfValue<I>["CreationType"];
421
+ /**
422
+ * Casts a node instance type to a reference snapshot type so it can be assigned to a reference snapshot (e.g. to be used inside a create call).
423
+ * Note that this is just a cast for the type system, this is, it won't actually convert an instance to a reference snapshot,
424
+ * but just fool typescript into thinking so.
425
+ *
426
+ * Example:
427
+ * ```ts
428
+ * const ModelA = types.model({
429
+ * id: types.identifier,
430
+ * n: types.number
431
+ * }).actions(self => ({
432
+ * setN(aNumber: number) {
433
+ * self.n = aNumber
434
+ * }
435
+ * }))
436
+ *
437
+ * const ModelB = types.model({
438
+ * refA: types.reference(ModelA)
439
+ * })
440
+ *
441
+ * const a = ModelA.create({ id: 'someId', n: 5 });
442
+ * // this will allow the compiler to use a model as if it were a reference snapshot
443
+ * const b = ModelB.create({ refA: castToReferenceSnapshot(a)})
444
+ * ```
445
+ *
446
+ * @param instance Instance
447
+ * @returns The same object cast as a reference snapshot (string or number)
448
+ */
449
+ export declare function castToReferenceSnapshot<I>(instance: I): Extract<I, IAnyStateTreeNode> extends never ? I : ReferenceIdentifier;
450
+ /**
451
+ * Returns the unique node id (not to be confused with the instance identifier) for a
452
+ * given instance.
453
+ * This id is a number that is unique for each instance.
454
+ *
455
+ * @export
456
+ * @param target
457
+ * @returns
458
+ */
459
+ export declare function getNodeId(target: IAnyStateTreeNode): number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mst-operations.js","sourceRoot":"","sources":["../../src/core/mst-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { type AnyObjectNode, Hook, type IAnyType, type IDisposer, NodeLifeCycle } from "../../internal.ts";
2
+ type HookSubscribers = {
3
+ [Hook.afterAttach]: (node: AnyNode, hook: Hook) => void;
4
+ [Hook.afterCreate]: (node: AnyNode, hook: Hook) => void;
5
+ [Hook.afterCreationFinalization]: (node: AnyNode, hook: Hook) => void;
6
+ [Hook.beforeDestroy]: (node: AnyNode, hook: Hook) => void;
7
+ [Hook.beforeDetach]: (node: AnyNode, hook: Hook) => void;
8
+ };
9
+ /**
10
+ * @internal
11
+ * @hidden
12
+ */
13
+ export declare abstract class BaseNode<C, S, T> {
14
+ readonly type: IAnyType;
15
+ environment: any;
16
+ private _escapedSubpath?;
17
+ private _subpath;
18
+ get subpath(): string;
19
+ private _subpathUponDeath?;
20
+ get subpathUponDeath(): string | undefined;
21
+ private _pathUponDeath?;
22
+ protected get pathUponDeath(): string | undefined;
23
+ storedValue: any;
24
+ get value(): T;
25
+ private aliveAtom?;
26
+ private _state;
27
+ get state(): NodeLifeCycle;
28
+ set state(val: NodeLifeCycle);
29
+ private _hookSubscribers?;
30
+ protected abstract fireHook(name: Hook): void;
31
+ protected fireInternalHook(name: Hook): void;
32
+ registerHook<H extends Hook>(hook: H, hookHandler: HookSubscribers[H]): IDisposer;
33
+ private _parent;
34
+ get parent(): AnyObjectNode | null;
35
+ constructor(type: IAnyType, parent: AnyObjectNode | null, subpath: string, environment: any);
36
+ getReconciliationType(): IAnyType;
37
+ private pathAtom?;
38
+ protected baseSetParent(parent: AnyObjectNode | null, subpath: string): void;
39
+ get path(): string;
40
+ protected getEscapedPath(reportObserved: boolean): string;
41
+ get isRoot(): boolean;
42
+ abstract get root(): AnyObjectNode;
43
+ abstract setParent(newParent: AnyObjectNode | null, subpath: string | null): void;
44
+ abstract get snapshot(): S;
45
+ abstract getSnapshot(): S;
46
+ get isAlive(): boolean;
47
+ get isDetaching(): boolean;
48
+ get observableIsAlive(): boolean;
49
+ abstract die(): void;
50
+ abstract finalizeCreation(): void;
51
+ protected baseFinalizeCreation(whenFinalized?: () => void): void;
52
+ abstract finalizeDeath(): void;
53
+ protected baseFinalizeDeath(): void;
54
+ abstract aboutToDie(): void;
55
+ protected baseAboutToDie(): void;
56
+ }
57
+ /**
58
+ * @internal
59
+ * @hidden
60
+ */
61
+ export type AnyNode = BaseNode<any, any, any>;
62
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/core/node/BaseNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @hidden
3
+ */
4
+ export declare enum Hook {
5
+ afterCreate = "afterCreate",
6
+ afterAttach = "afterAttach",
7
+ afterCreationFinalization = "afterCreationFinalization",
8
+ beforeDetach = "beforeDetach",
9
+ beforeDestroy = "beforeDestroy"
10
+ }
11
+ export interface IHooks {
12
+ [Hook.afterCreate]?: () => void;
13
+ [Hook.afterAttach]?: () => void;
14
+ [Hook.beforeDetach]?: () => void;
15
+ [Hook.beforeDestroy]?: () => void;
16
+ }
17
+ export type IHooksGetter<T> = (self: T) => IHooks;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hook.js","sourceRoot":"","sources":["../../../src/core/node/Hook.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,IAMX;AAND,WAAY,IAAI;IACd,mCAA2B,CAAA;IAC3B,mCAA2B,CAAA;IAC3B,+DAAuD,CAAA;IACvD,qCAA6B,CAAA;IAC7B,uCAA+B,CAAA;AACjC,CAAC,EANW,IAAI,KAAJ,IAAI,QAMf"}
@@ -0,0 +1,16 @@
1
+ import { type AnyNode, type AnyObjectNode, ComplexType, ObjectNode, ScalarNode, SimpleType } from "../../internal.ts";
2
+ /**
3
+ * @internal
4
+ * @hidden
5
+ */
6
+ export declare function createObjectNode<C, S, T>(type: ComplexType<C, S, T>, parent: AnyObjectNode | null, subpath: string, environment: any, initialValue: C | T): ObjectNode<C, S, T>;
7
+ /**
8
+ * @internal
9
+ * @hidden
10
+ */
11
+ export declare function createScalarNode<C, S, T>(type: SimpleType<C, S, T>, parent: AnyObjectNode | null, subpath: string, environment: any, initialValue: C): ScalarNode<C, S, T>;
12
+ /**
13
+ * @internal
14
+ * @hidden
15
+ */
16
+ export declare function isNode(value: any): value is AnyNode;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-node.js","sourceRoot":"","sources":["../../../src/core/node/create-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACV,UAAU,EAEV,IAAI,EACJ,oBAAoB,EACrB,MAAM,mBAAmB,CAAA;AAE1B;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAA0B,EAC1B,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,YAAmB;IAEnB,MAAM,YAAY,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;IACvD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,uBAAuB;YACvB,MAAM,IAAI,CACR,+HACE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACzB,IAAI,OAAO,+BAA+B,YAAY,CAAC,IAAI,GAAG,CAC/D,CAAA;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;QACD,4DAA4D;QAE5D,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,yBAAyB;IACzB,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAiB,CAAC,CAAA;AAC9E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAyB,EACzB,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,YAAe;IAEf,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAU;IAC/B,OAAO,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,UAAU,CAAA;AACnE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type AnyObjectNode, type IAnyComplexType, ObjectNode } from "../../internal.ts";
2
+ /**
3
+ * @internal
4
+ * @hidden
5
+ */
6
+ export declare class IdentifierCache {
7
+ private cacheId;
8
+ private cache;
9
+ private lastCacheModificationPerId;
10
+ constructor();
11
+ private updateLastCacheModificationPerId;
12
+ getLastCacheModificationPerId(identifier: string): string;
13
+ addNodeToCache(node: AnyObjectNode, lastCacheUpdate?: boolean): void;
14
+ mergeCache(node: AnyObjectNode): void;
15
+ notifyDied(node: AnyObjectNode): void;
16
+ splitCache(splitNode: AnyObjectNode): IdentifierCache;
17
+ has(type: IAnyComplexType, identifier: string): boolean;
18
+ resolve<IT extends IAnyComplexType>(type: IT, identifier: string): ObjectNode<IT["CreationType"], IT["SnapshotType"], IT["TypeWithoutSTN"]> | null;
19
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifier-cache.js","sourceRoot":"","sources":["../../../src/core/node/identifier-cache.ts"],"names":[],"mappings":"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"}