DatX 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.
Basic usage
import { Collection, Model, Attribute } from'@datx/core';
import { computed } from'mobx';
classPersonextendsModel {
publicstatictype = '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@computedpublicgetfullName() {
// Standard MobX computed propsreturn`${this.name}${this.surname}`;
}
}
classAppDataextendsCollection {
publicstatic types = [Person]; // A list of models available in the collection
}
const store = newAppData();
const john = store.add(newPerson({ name: 'John', surname: 'Smith' })); // Add a model instance to the storeconst jane = store.add({ name: 'Jane', surname: 'Smith', spouse: john }, Person); // Add a model to the store
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
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 class
withMeta (model) - Adds some helpful meta data to the model - already included in the Model class, but not in the PureModel class
withPatches (model, collection) - Adds patch support to models and collections
datx-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.
We found that @datx/core demonstrated a not healthy version release cadence and project activity because the last version was released a year ago.It has 7 open source maintainers collaborating on the project.
Package last updated on 05 Sep 2023
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.
NIST's new password guidelines remove periodic changes and special character requirements, focusing on longer, more secure passwords for better authentication practices.