A MobX data store
npm install @datx/coreDatX is an opinionated JS/TS data store. It features support for simple property definition, references to other models and first-class TypeScript support.
By default, it uses the MobX state management library, but this is optional and can be used as a pure JS library.
---
``typescript
import { Collection, Model, Attribute } from '@datx/core';
import { computed } from 'mobx';
class Person extends Model {
public static type = 'person'; // Unique name of the model class
@Attribute()
public name!: string; // A normal property without a default value
@Attribute()
public surname!: string;
@Attribute({ toOne: Person })
public spouse?: Person; // A reference to a Person model
@computed
public get fullName() {
// Standard MobX computed props
return ${this.name} ${this.surname};
}
}
class AppData extends Collection {
public static types = [Person]; // A list of models available in the collection
}
const store = new AppData();
const john = store.add(new Person({ name: 'John', surname: 'Smith' })); // Add a model instance to the store
const jane = store.add({ name: 'Jane', surname: 'Smith', spouse: john }, Person); // Add a model to the store
`
`bash`
npm install --save @datx/core
- Installation
- Defining models
- References
- Configuring the collection
- Using the collection
- Persisting data locally
The lib makes use of the following features that are not yet available everywhere. Based on your browser support, you might want to polyfill them:
- Symbol.for
- Object.assign
- Array.prototype.find
The library contains two main classes - Model and Collection.
A collection contains models of any kind (they should however be listed in the types property), while a model can be in a single collection (but doesn't need to be in any).
Models also include some useful methods and properties, but if they're in collision with your data/logic, you can use a PureModel class.
Mixins are additional plugins that can enhance the regular models and collections. Available mixins:
- withActions (model) - Adds some helper methods to the model - already included in the Model class, but not in the PureModel classwithMeta
- (model) - Adds some helpful meta data to the model - already included in the Model class, but not in the PureModel classwithPatches
- (model, collection) - Adds patch support to models and collectionsdatx-jsonapi` (model, collection and view) - Adds the JSON API features to the model, collection and view
-
To check out what are the planed future mixins, check out the issues.
Want to make your own mixin? Check out the guide.
- Collection
- Model
- View
- prop
- PureModel
- CompatModel
- CompatCollection
- Model utils
- Lib utils
- TypeScript interfaces
Having issues with the library? Check out the troubleshooting page or open an issue.
---

The MIT License
datx is maintained and sponsored by
Infinum.