@locational/unity
v0.1.5
Published
Declarative data management system
Downloads
4
Readme
Unity
Unity is a declarative data management library intended to be used with some rendering framework like React or Vue.
It has its own immutable data store, type checking, virtual components ('units') and a set of transforms for data manipulation.
Unity allows you to describe your application functionality in a JSON configuration file, verify its validity and run it.
Your rendering framework will only need to worry about UI components and how they map onto Unity virtual components.
For discussion:
Ideally Unity should come with Vue app that has implementation for all virtual components and can render any Unity app.
Values
All values in Unity are statically typed and immutable.
Empty
Analog to Unit type in functional languages.
Number, String, Boolean
Same as JavaScript basic types
List
Typed array. All elements of a list should be of the same type.
Record
An object with schema.
Enum
An array that must hold one of the variants.
Computed
A value contains an expression. May depend on other values and has an expected type.
Store
Data store is an immutable bucket of named values. It can register, replace or lookup values by name.
Components
Components group functionality into logical units.
Each component has a pipeline full of Runnables that transform input data from the store and should output data with type compatible with componet.
Components also hold controls that can trigger actions. UI layer should query component for its controls and render their representation.
Actions
Actions are predefined side effects that can be triggered by components. They can be used to send HTTP requests, update the Store, etc.
Runnables
Runnables are predefined operations on Values that output other Values.
There are two types of runnables:
- Filter - output value type is always the same as input
- Transform - may change output value type
Some Runnables can be customized with expressions.