UNPKG

mobx-keystone

Version:

A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more

799 lines (450 loc) 30.1 kB
# Change Log ## 1.11.5 - Fix: Some retrocompatibility issues with MobX 4/5. ## 1.11.4 - Fix: redux devtools revert was not working correctly. ## 1.11.3 - Fix: observable data will now be turned into plain data when frozen, which also fixes an issue when undoing/redoing changes to frozen objects. ## 1.11.2 - Fix: in some cases, when reconciliating a model that was being moved to the end of an array it could complain that the node was duplicated. - Wrapped `onChildAttachedTo` actions in MobX actions. - Make `ObjectMap` and `ArraySet` use proper iterators. - `asSet` and `asMap` are no longer actions. ## 1.11.1 - Fix for `onChildAttachedTo` firing for current children even when `fireForCurrentChildren` was set to false. ## 1.11.0 - Fixed some types so they are compatible with TypeScript 5.6. ## 1.10.2 - Fixed some types so set transformations are compatible with TypeScript 5.5 once more. ## 1.10.1 - Some more minor optimizations, for example creating models should be around 10% faster now. ## 1.10.0 - Some optimizations, for example reading values should be around 2x faster now. ## 1.9.0 - Adds support for `YjsTextModel` from `mobx-keystone-yjs`. ## 1.8.3 - Data model classes can now be passed as types directly, like model classes can. ## 1.8.2 - New! Y.js bindings for `mobx-keystone` are now available in the `mobx-keystone-yjs` package as well as a working example in the examples section of the online docs. - Added missing `nanoid` dependency to the list of dependencies. ## 1.8.1 - Fix so `onGlobalPatches` only generates the patches for new models when they are generated via `fromSnapshot`. - Fix so new `onGlobalPatches` paths won't include '$' in their paths. ## 1.8.0 - `onGlobalPatches` will now get called for new models whenever the initial snapshot values where overridden by defaults or missing IDs. ## 1.7.1 - Performance improvements when using the "new" non-experimental standard decorators: do not use class proxies. ## 1.7.0 - Added support for "new" non-experimental standard decorators. The old ones are still supported. ## 1.6.5 - Some small optimizations. ## 1.6.4 - Fixed an error about finding types when using TS in bundler mode. ## 1.6.3 - Fixed a bug where an object was sometimes being detached and then again retached when using applySnapshot. ## 1.6.2 - Fixed a bug where the `onAttachedToRootStore` disposer was not being called for models inside arrays. ## 1.6.1 - Fixed a bug where extra `attachToRootStore` calls and patches were being made when using `applySnapshot` to reconcile models with the same ID. - Speed up a bit Typescript types. ## 1.6.0 - It is now possible to override default values when extending a model, but it is now on the user side to ensure that the base and extended types are compatible. ## 1.5.0 - Added `maxUndoLevels` and `maxRedoLevels` to `undoMiddleware` options to limit the number of undo/redo levels. ## 1.4.1 - Optimizations yielding around 10-15% less CPU time for some operations. ## 1.4.0 - Use a proxy to decorate model classes to reduce the inheritance level of models by one. - Create object children cache only when there are actually children to save some memory in objects/arrays that don't have children of type object. - Cache props/tProps to save some memory in model definitions. ## 1.3.0 - Big memory optimizations for model definitions with many properties (very little changes for model instances though). This change now makes Proxy support a requirement. - Minor speed optimizations. ## 1.2.0 - TypeCheckError now includes a new `message` field, a new `typeCheckedValue` field and no longer requires a parameter for the `throw()` method. - Type checking error messages will now include the actual value that failed validation in the error message. ## 1.1.1 - Fixed an issue related to computed trees. ## 1.1.0 - Added `idProp.typedAs<T>()` to be able to type an ID prop with a string template. ## 1.0.0 - Since the API has been quite stable for a while I think it is time for a v1.0.0 release. :) No other changes. ## 0.69.9 - Fix for `applySnapshot` throwing an exception when removing a property which was not declared in the model. ## 0.69.8 - Fix for `standaloneFlow` typing. ## 0.69.7 - Attempt to fix react native bundling issues. ## 0.69.6 - Fix for a possible infinite recursive call when using `types.tag`. ## 0.69.5 - Fix `applySnapshot` so it respects default initializers. - Setting a prop that has a default value to `undefined` or `null` will set it to its default value (same as if it was done in `new` or `fromSnapshot`). ## 0.69.4 - Fixed an issue that prevent model actions/flows from being used when destructured. ## 0.69.3 - `ModelData` and `ModelCreationData` now take into account any possible transformations. If you want to use the old ones (without transformations) then use `ModelUntransformedData` and `ModelUntransformedCreationData`. ## 0.69.2 - Fixed an issue related to modelActions and modelFlows in derived classes giving an error on instantiation. ## 0.69.1 - Fixed an issue where value-types would always generate patches when `applySnapshot` was being used (even if the contents of the value-type did not really change). ## 0.69.0 - Added `types.tag` to be able to annotate types. ## 0.68.6 - Fixed `applySnapshot` generating no-op patches sometimes. ## 0.68.5 - Fixed `fromSnapshotProcessor` not accepting null or undefined when a `tProp` with a default value was used. ## 0.68.4 - Fixed react-native not picking up the right bundle. ## 0.68.3 - Fixed a bug related to sorting arrays producing patches that end up in a same node being temporarily twice in the tree. ## 0.68.2 - Reverted ESM splitting. ## 0.68.1 - Split the ESM version in several files to improve the tree-shakeability of the library. ## 0.68.0 - Removed side effects to improve the tree-shakeability of the library. ## 0.67.5 - Fixed a bug so `$modelType` should no longer be needed when it is defined with `tProp`. ## 0.67.4 - Fixed an issue introduced in 0.67.0 related to the use of tProp and getting stale snapshots. ## 0.67.3 - Fixed an issue related wrong validation of tProps of nullable/undefinable arrays. ## 0.67.2 - Small optimization to some of the walk tree methods. - Fixed a typing issue where statics would not be picked up by ExtendedModel. ## 0.67.1 - Improved model creation time by around 25% when using mobx 6 for models without mobx decorators. ## 0.67.0 - Big speedup in certain cases (when many mutations are done between `getSnapshot` calls) by delaying the immutable object creation to the point when `getSnapshot` is called. - Fixed typing issue related to generics with optional props. ## 0.66.1 - Fixed typing issue related to generics. ## 0.66.0 - Restored compatibility with mobx 4/5 and added CI tests to ensure it never gets broken again. - Added `@computedTree` decorator for reactively deriving an alternative view of an original tree that is attached as a property to the original tree to support tree traversal functions, contexts, references, etc. (see "Computed Trees" section in the docs). ## 0.65.0 - Fixed a `Maximum call stack size exceeded` getting triggered when `onAttachedToRootStore` was defined and many nodes were added at once. - Added property transform `stringToBigIntTransform`. - Added action serialization for non-JSON primitive values `undefined`, `bigint` and special `number` values `NaN`/`+Infinity`/`-Infinity`. ## 0.64.1 - Fixed a typing issue related to models that use generics at multiple levels. ## 0.64.0 - [BREAKING CHANGE] `types.ref` now takes as an argument the reference constructor it needs to check for. - When `tProp` is used instead of `prop` then `$modelType` won't be needed in input model snapshot for that particular property. As a side effect, `$modelType` is now marked as optional in types. Note that for this to work for a root model instead of a sub-property you will need to use the new `fromSnapshot` overload that takes a type as first argument. For untyped compatibility reasons, `getSnapshot` will still return `$modelType` even for typed models. - Added `withSnapshotProcessor` to class model properties. - Model classes can now be directly used as types instead of having to wrap them inside `types.model(...)` (except in recursive / self-recursive cases). - Simplified some typings to make them faster. ## 0.63.2 - Fixed a typing issue that would type `$modelId` as `string | undefined`. Now it will be typed as `string` when there is an `idProp` and `never` when there is not. ## 0.63.1 - Added `FromSnapshotDefaultType<typeof props>` and `ToSnapshotDefaultType<typeof props>` so the default type does not need to be repeated when using `fromSnapshotProcessor` / `toSnapshotProcessor`. ## 0.63.0 - [BREAKING CHANGE] The model override `fromSnapshot` has been removed in favor of `fromSnapshotProcessor` / `toSnapshotProcessor` options of `Model` / `ExtendedModel`. These allow you to set up pre/post snapshot processors for models. ## 0.62.0 - [BREAKING CHANGE] `$modelId` is no longer a requirement and will be no longer automatically added to models. If you want your models to keep using the old behavior (having a `$modelId` property) then add a `[modelIdKey]: idProp` or a `$modelId: idProp` property to them. Note that `$modelId` can still be used in instances to get/set the current ID property, just that it might be undefined (get) / throw (set) when there is none. ## 0.61.3 - Fix to avoid calling `onAttachedToRootStore` more more often than it should. ## 0.61.2 - Fixed a typing issue related to extending a class model with an `idProp`. ## 0.61.1 - Fixed `types.model` sometimes picking any as the model type. - Fixed type checking sometimes giving false errors upon reconciliation. ## 0.61.0 - Added `withTransform()`, a new way to do property transforms, as well as the pre-made transforms `timestampToDateTransform`, `isoStringToDateTransform`, `objectToMapTransform`, `arrayToMapTransform` and `arrayToSetTransform`. See the docs `Maps, Sets, Dates` section for more info. - Data models can now use default property initializers. - Added `apply` and `applyComputed` to contexts so that they can be used to share information with models on creation time (kind of like `envs` in Mobx-state-tree). See the context docs for more details. - Fixed an issue with `asMap` where the map would not get updated when the backing array/object changed. - Fixed an issue with `asSet` where the set would not get updated when the backing array changed. ## 0.60.7 - `idProp` now correctly handles `withSetter`. ## 0.60.3 - Switched bundler from microbundle to vite. - Deprecated prop modifier variant `withSetter("assign")`, use `withSetter()` instead. - Changed to nanoid from uuid for model id generation. ## 0.60.2 - Added `swap` to array actions. ## 0.60.1 - Added `package.json` to the exports list to avoid issues with metro bundler from react native. ## 0.60.0 - Added `createGroup` to `undoMiddleware`, which allows to group several actions perform in separate code blocks. - Added an overload to `toTreeNode` that accepts a type checker as first argument. - Added standalone actions. See the relevant section of the docs for more info. ## 0.59.0 - Added `attachedState` to the `undoMiddleware`. Useful to save/restore state related to actions but that shouldn't be part of the undo/redo event queue (e.g. selection, text editor cursor position, etc.). - Added `findChildren` to be able to find all children of a subtree root node for which a predicate matches. - Improved support for generics when using references. ## 0.58.2 - Generic types are now inferable from the constructor parameters ## 0.58.1 - Fixed an issue where `idProp` on the base was not being picked up by `ExtendedModel`. ## 0.58.0 - Added a simpler pattern for generic models when using `prop`. - Added `resolveId` to be able to resolve a model given its ID. ## 0.57.1 - Fixed an issue when importing the package with expo. ## 0.57.0 - Made `getRefsResolvingTo` able to get updated results when called inside an action (as long as the reference being back-traced and the target are children of the same root). ## 0.56.2 - Fixed an issue with typings not working properly for model properties (probably introduced in v0.55.0). ## 0.56.1 - Fixed webpack import section in `package.json`. - Made `onInit`, `onAttachedToRootStore` and `onLazyInit` protected. ## 0.56.0 - `types.model` and `types.dataModelData` no longer require the type as a generic argument in TypeScript for non-recursive cases. ## 0.55.1 - Changed build tooling. ## 0.55.0 - [BREAKING CHANGE] `setterAction: true` prop option is now `prop().withSetter()` - [BREAKING CHANGE] `setterAction: "assign"` prop option is now `prop().withSetter("assign")` - [BREAKING CHANGE] Functional models have now been removed in favor of Data models, which serve a similar function while having a syntax closer to standard class models. See the relevant new section in the docs for more info. - [BREAKING CHANGE] Property transforms have been removed (including 'prop_mapArray', 'prop_setArray', ...). Consider switching to 'objectMap', 'asMap', etc. or a getter/setter with a transform inside pattern. - [BREAKING CHANGE] Property transform decorators have been removed. - [BREAKING CHANGE - types] Some type helpers have been renamed: `ModelPropsData` / `ModelInstanceData` -> `ModelData`, `ModelPropsCreationData` / `ModelInstanceCreationData` -> `ModelCreationData`. - `onSnapshot` now also takes a function that returns a node. - Added `valueType` option to `Model`/`ExtendedModel` so that class models of that kind automatically get auto-cloned when assigned to a property/array/etc., useful for example for primitive data structures such as points, colors, etc. Check the relevant section of the docs for more info ## 0.54.0 - Added `withGroupFlow` to `UndoManager` so that several async actions can be undone/redone as a single step. ## 0.53.0 - [BREAKING CHANGE] Now requires TypeScript 4.2.0. - [BREAKING CHANGE] Class model `setterAction: true` prop option will now generate a setter like `setX` automatically instead of making the property assignable. To get the old behaviour use `setterAction: "assign"` instead. - [BREAKING CHANGE] Functional model `setterActions` now just take the field names rather than an object with the setter mapping. - Fixed an issue when using `ExtendedModel` with abstract classes in TypeScript 4.2.0. - Fixed committing non-idempotent sandbox changes to the original subtree. ## 0.52.0 - Added `withGroup` to `UndoManager` so that several sync actions can be undone/redone as a single step. ## 0.51.1 - Fix for broken library build. ## 0.51.0 - Added `withoutUndo` and `isUndoRecordingDisabled` to `UndoManager`. Consider using those instead of the global `withoutUndo` if more precision over which `UndoManager` to skip recording to is needed. ## 0.50.0 - It is now possible to use a custom property as model id instead of `$modelId` by assigning to a property the new `idProp` value. In any case, model instances can still use `model.$modelId` to read/write this custom property if desired. ## 0.49.0 - [BREAKING CHANGE] The sandbox manager's `withSandbox` method now requires an array of nodes from the original tree and the corresponding sandbox nodes are now positional arguments of the callback function. - Fix for a possible issue when using `applySnapshot` with hot reloading. ## 0.48.5 - Fixed incompatibility with MobX >= 6.1 (in order to fix it `$modelId` is now an enumerable property though). - Fixed the sandbox to group commit patches so that the undo manager will undo the commit in a single step. - Added `assign` to `fnObject`. ## 0.48.4 - Fixed TypeError path for refinement types. - Fix for the undo manager so it will correctly group reference invalidations inside the action that caused it. - `ExtendedModel` will now throw when the `baseModel` argument is not a model class. ## 0.48.3 - Remove `require` usage from esm modules to fix snowpack compatibility. ## 0.48.2 - Added `showDuplicateModelNameWarnings` to the global config. ## 0.48.1 - Fixed compatibility with MobX v5 and v4 when using ESM build. ## 0.48.0 - Made it compatible with MobX v6 while keeping it compatible with v5 and v4 still. ## 0.47.1 - Make the typing of some functions not rely on mobx internal typings. ## 0.47.0 - Added `onPatches` callback option to the `patchRecorder`. - The `events` list in the `patchRecorder` is now an observable array. - `types.enum` no longer requires the generic type in typescript, the enum object as parameter is enough. ## 0.46.0 - [BREAKING CHANGE] Runtime type-checking of objects will no longer complain about excess properties, they will just be ignored. ## 0.45.5 - Fixed an issue related to typing changes of the generated types optimization for extended models. ## 0.45.4 - Fix: The type of data inside frozen is no longer forced to be `DeepReadonly`. This fixes a possible issue where the type might no longer be assignable with itself. ## 0.45.3 - Fix: `onAttachedToRootStore` will still be invoked after all model actions are finished (as it was before), but now before other user reactions are triggered. ## 0.45.2 - Fix: `allowUndefinedArrayElements` now also applies to frozen data. - Optimized a bit the generated typings for extended models. ## 0.45.1 - Fixed a bug when calling an undo-able model action from a non undo-able parent model. ## 0.45.0 - Added `allowUndefinedArrayElements` global config option to allow arrays to take `undefined` elements. ## 0.44.0 - Added `assertIsTreeNode`, which asserts if an object is a tree node or throws otherwise. ## 0.43.1 - Fixed an issue with automatic setter actions not working when the model included computed properties. ## 0.43.0 - [BREAKING CHANGES] - `applyCall` has been renamed to `applyMethodCall` - consider using `fnObject.call` though. - `arrayAsMap`, `ArrayAsMap` were removed (see `asMap` for a replacement). - `arrayAsSet`, `ArrayAsSet` were removed (see `asSet` for a replacement). - `objectAsMap`, `ObjectAsMap` were removed (see `asMap` for a replacement). - Added `asMap` and `asSet`, which are similar to the old `arrayAsMap`, etc. except that they take the data object directly. - Added `fnModel` as a functional alternative to models that do not require `$modelId` or `$modelType` (see the relevant section on the docs for more info). - Added `tag` to be able to tag objects with extra data (useful for functional models for example). - Added `fnObject` and `fnArray` to be able to directly manipulate objects/arrays without the need of predefined model actions. ## 0.42.1 - Fixed issue with updated uuid dependency. ## 0.42.0 - Added the model property option `setterAction` so that it automatically implenents model prop setters wrapped in actions. - Added `applySet`, `applyDelete`, `applyCall` to be able manipulate data without the need to use `modelAction`. ## 0.41.0 - When using date transforms, mutation made by methods (`setTime`, etc.) are reflected in the backed property (string / timestamp), so it is no longer required to treat dates as immutable objects. - Performance improvements for implicit property transform collections. ## 0.40.0 - [BREAKING CHANGE - types] Some type helpers have been renamed: `ModelData` -> `ModelPropsData` / `ModelInstanceData`, `ModelCreationData` -> `ModelPropsCreationData` / `ModelInstanceCreationData`. - New feature: "Implicit property transforms", which are sometimes preferred over the old decorator based property transforms, collection wrappers (`arrayAsSet`, `arrayAsMap`, `objectAsMap`) and collection models (`ArraySet`, `ObjectMap`). Check the "Maps, Sets, Dates" section in the docs for more info. - Added `types.tuple`. - Property transforms decorators can now also be used standalone. ## 0.39.0 - Added `decoratedModel` so the library can be used without decorators. ## 0.38.0 - Fixes for `undoMiddleware`, where it wouldn't properly record changes outside a subaction after a subaction is performed. - `applyPatches` now supports arrays of arrays of patches. - Improved reconciliation - now `applyPatches` and `applySnapshot` are more likely to reuse instantiated model objects whenever possible rather than recreating them anew (as long as their model types and ids match). - Added `isSandboxedNode` and `getNodeSandboxManager` to be able to tell when a node is sandboxed / which is its sandbox manager (if any). ## 0.37.0 - Deprecated `abstractModelClass`, which should not be needed anymore. - Added `modelClass` to better support base models with generics. - A few type optimizations. - Fixed undo middleware regression (not properly undoing) that happened in v0.33.0. ## 0.36.1 - Made `applySnapshot` not check by model instance in reconciliation for better compatibility with hot-reloading. - Fixed `ObjectMap.forEach` and `ArraySet.forEach` typings. ## 0.36.0 - Added new way / guide to use the factory pattern when `declaration` option is set to `true` in `tsconfig.json`. ## 0.35.0 - [BREAKING CHANGE] `onAttachedToRootStore` and its disposer will be called after all actions are finished. - Improvements to ensure `onAttachedToRootStore` and its disposers are called in a more reliable manner. - `getRootPath`, `getRoot`, `getRootStore` are now internally computed, so they should be faster when being observed. - Warnings about duplicate model names will now only show once per model. ## 0.34.0 - Optimized the patches generated for array operations. - Added support for obtaining multiple sandbox nodes at the same time. - Added `$modelType` as static property to model classes, as well as a better `toString()` to model classes and instances for logging purposes. - Static properties now will be preserved in classes that use the model decorator. ## 0.33.0 - Fixed an issue with wrong patch order being generated for actions triggered inside `onAttachedToRootStore`. - Added support to `applyPatches` for applying patches in reverse order. - Fixed applying inverse patches in reverse order. ## 0.32.0 - Added `sandbox` to create a sandbox copy of the state for testing "what-if" scenarios; changes can be either committed to the original state or rejected (see Sandboxes section in the docs). ## 0.31.0 - Added `deepEquals` to deeply check for equality standard values, observable values, and tree nodes. - Added `draft` to create drafts of parts of the state that can be later committed to it (see Drafts section on the docs). ## 0.30.1 - Fixed an issue with the readonly middleware where sometimes it was possible to write to a protected node when the write was being done from an unprotected parent node action. ## 0.30.0 - It is now possible to use `ExtendedModel` over classes that use the `@model` decorator. ## 0.29.0 - Made `isRootStore` reactive. ## 0.28.4 - `onAttachedToRootStore` and its disposer will be called right after a change is made rather than after a whole action is finished (restores behaviour of version &lt;= 0.28.1). ## 0.28.3 - Improve a bit the atomicity of `modelAction` / `runUnprotected`. ## 0.28.2 - Fix: modifying a node inside `onAttachedToRootStore` or its returned disposer no longer results in broken snapshots. ## 0.28.1 - Updated min TypeScript version to 3.7. ## 0.28.0 - [BREAKING CHANGE] If you want to use `ExtendedModel` over an abstract class now it must be done like `ExtendedModel(abstractModelClass(SomeAbstractClass), { ... })`. ## 0.27.0 - Added `getTypeInfo(type: AnyType): TypeInfo` to get runtime reflection info about types. ## 0.26.7 - Simplified types.or typing. ## 0.26.6 - Switched an error to be a warning instead when using hot reloading. ## 0.26.5 - Added a ponyfill fallback for btoa for React Native. ## 0.26.4 - Fix compatibility with babel decorators. ## 0.26.3 - Fixed type generation. ## 0.26.1 - Optimized types a bit. ## 0.26.0 - Made it impossible in TypeScript to give a default value for an object type without using a default value generator function to avoid possible mistakes. ## 0.25.3 - Fixed `applySerializedActionAndTrackNewModelIds` so it won't track `$modelId` changes for plain objects. - Added `Path` and `PathElement` types. ## 0.25.2 - Fixed an issue with back-references and `onResolvedValueChange` not working when references were being restored from a snapshot. ## 0.25.1 - Small optimization for `applySerializedActionAndTrackNewModelIds` so it doesn't traverse frozen values. ## 0.25.0 - Added `applySerializedActionAndTrackNewModelIds` and `applySerializedActionAndSyncNewModelIds`. Prefer those over `deserializeActionCall` plus `applyAction` when applying serialized (over the wire) actions in order to avoid `$modelId` desynchronization. - Added a default implementation of `getRefId()` which returns `$modelId`. ## 0.24.1 - Fixed wrong patches being generated for array splices sometimes. ## 0.24.0 - [BREAKING CHANGE] Allow to pass `$modelId` to model creation data to override it rather than using a special symbol. - [BREAKING CHANGE] Removed `overrideRootModelId` to `fromSnapshot` and `clone`, but made `$modelId` in models editable instead. ## 0.23.2 - Added `overrideRootModelId` to `fromSnapshot` and `clone`. ## 0.23.1 - Added options parameter to `clone`. ## 0.23.0 - [BREAKING CHANGE] Added a `$modelId` extra property to models and their snapshots in order to be able to properly validate targets of serialized actions in scenarions with concurrent clients. Also allows the automatic optimization of the serialized version of models in action parameters by substituting them to just their paths + path of ids whenever possible. - [BREAKING CHANGE] Default values for properties will now also apply when the initial data is `null`. - `serializeActionCall`, `serializeActionCallArgument`, `deserializeActionCall` and `deserializeActionCallArgument` now can take a second parameter with the root node of the model where actions are going to be performed to optimize the serialization of arguments that are already in the store. - Added `registerActionCallArgumentSerializer` for serialization of custom action argument types. - `ActionContext` now includes `targetPathIds`. - Added `pathObjects` to `getRootPath`. - Improved a bit the typing for `fromSnapshot` model methods. - Added property transforms via `propTransform`. - Improved action argument serialization so it supports dates, maps, sets, arrays of models, etc. - `arrayAsMap` now supports arbitrary key types. ## 0.22.0 - Added `tProp` syntactic sugar for optional primitives with a default value. - Added `String`, `Number`, `Boolean`, `null`, `undefined` as aliases for primitive types. - Added `findParentPath`. ## 0.21.0 - [BREAKING CHANGE] Paths to model properties will no longer report interim data objects (`$`). This means that properties are now direct children of model objects, which should be cleaner and more understandable. ## 0.20.2 - Fixed a possible memory leak with refs. ## 0.20.1 - Optimizations for `rootRef` resolution when the node cannot be resolved. ## 0.20.0 - Added `isRefOfType(ref, refType)` to check if a ref is of a given ref type. - Added `getRefsResolvingTo(node, refType?)` to be able to get back references that are currently pointing to a node. ## 0.19.0 - Added `setDefaultComputed` and `getProviderNode` to contexts. - [BREAKING CHANGE] `getChildrenObjects` will now never report interim data objects (`$`). - Optimizations to `getChildrenObjects` and `onChildAttachedTo`. - Added `rootRef`s. ## 0.18.0 - Added contexts to share information between parents and children and to make isolated unit testing easier. - Models can now optionally offer a `getRefId()` method that can be automatically used by custom references to get their ids, thus making `getId` for custom references optional now. ## 0.17.4 - Fix path for ESM module. ## 0.17.3 - Added UMD modules and specify proper module for react-native, add tslib to dependencies. ## 0.17.2 - Fix issue with babel transpilation that would end up in some runtime errors. ## 0.17.1 - Fixed `onChildAttachedTo` disposer typing. ## 0.17.0 - Better support for array / object spreading, reassign to filter/map, etc. Objects and arrays will be automatically unconverted from tree nodes when detached. ## 0.16.0 - [BREAKING CHANGE] Again changes to flows so typings are better. Check the updated flow section of the documentation to see how to work with them now (should be much easier). ## 0.15.0 - [BREAKING CHANGE] Using flows in TypeScript should result in improved typings, but it requires TypeScript >= 3.6.2. Check the updated flow section of the documentation to see how to work with them now. ## 0.14.2 - Fixed `getChildrenObjects` and `onChildAttachedTo` so they don't report the model data objects (`$`). Set the option `includeModelDataObjects` to true to get the old behaviour back in `getChildrenObjects`. ## 0.14.1 - Fixed an issue with a workaround for abstract classes setting values on the constructor when using babel. ## 0.14.0 - Added `getParentToChildPath`, `getChildrenObjects` and `onChildAttachedTo`, and some performance improvements. ## 0.13.1 - Fixed an issue with ExtendedModel when user library was compiled using ES6 classes. ## 0.13.0 - Improved support for abstract base models. ## 0.12.4 - Renamed error class to MobxKeystoneError from MobxDataModelError. ## 0.12.3 - Updated dep with proper fixed version. ## 0.12.2 - Revert dep update that broke some types. ## 0.12.1 - Slight performance improvements. Basic benchmarks. ## 0.12.0 - Added `ExtendedModel` and a doc section about subclassing. ## 0.11.4 - Slight performance bump by moving decorators to the prototype. ## 0.11.0 - Fixed compatibility with mobx4. ## 0.10.0 - Added a second parameter to `getParent` to skip model interim data objects. - Added `isModelDataObject` function. ## 0.9.14 - First public release.