structure

2.0.1 • Public • Published

A simple schema/attributes library built on top of modern JavaScript

npm Build Status Coverage Status Code Climate JS.ORG

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'

Contributing

LICENSE

Readme

Keywords

Package Sidebar

Install

npm i structure

Weekly Downloads

1,298

Version

2.0.1

License

MIT

Unpacked Size

64.2 kB

Total Files

36

Last publish

Collaborators

  • talyssonoc