structure
v2.0.1
Published
A simple schema/attributes library built on top of modern JavaScript
Downloads
6,873
Readme
A simple schema/attributes library built on top of modern JavaScript
Structure provides a simple interface which allows you to add attributes to your ES6 classes based on a schema, with validations and type coercion.
Use cases
You can use Structure for a lot of different cases, including:
- Domain entities and value objects
- Model business rules
- Validation and coercion of request data
- Map pure objects and JSON to your application classes
- Add attributes to classes that you can't change the class hierarchy
What Structure is not:
- It's not a database abstraction
- It's not a Model of a MVC framework
- It's not an attempt to simulate classic inheritance in JavaScript
Documentation
Example usage
For each attribute on your schema, a getter and a setter will be created into the given class. It'll also auto-assign those attributes passed to the constructor.
const { attributes } = require('structure');
const User = attributes({
name: String,
age: {
type: Number,
default: 18,
},
birthday: Date,
})(
class User {
greet() {
return `Hello ${this.name}`;
}
}
);
/* The attributes "wraps" the Class, still providing access to its methods: */
const user = new User({
name: 'John Foo',
});
user.name; // 'John Foo'
user.greet(); // 'Hello John Foo'