Mystique
Things are not always as they seem!
This library is a thin abstraction to allow you to map your domain logic results to something suitable for your API output. While not anywhere near as complete or powerful, Mystique is influenced by the ideals behind Fractal.
Installation
Via NPM
npm install mystique
Defining Transformers
To define a transformer, only two things are needed:
- A resource name
- A tranformation mapping function
var Mystique = ; var Post = MystiqueTransformer; moduleexports = Post;
Storing Transformers
To have Mystique remember a named transformer use the registerTransformer
function.
Then transformers can be recalled using getTransformer
.
This prevents having to use relative paths to look up transformers in your app.
The registerTransformer
function takes two arguments:
- A Transformer name
- A Transformer Definition
var Post = MystiqueTransformer; mystique;
The getTransformer
function takes a single argument:
- The Transformer name to look up
var Mystique = PostTransformer = Mystique;
This returns a new instance of the looked up transformer using the new
keyword.
Transforming Results
Mystique transformers support transforming either single items or collections of items. For instance to transform the results from Mongoose in a route you could do something like this:
var mongoose = Post = mongoose;var Mystique = PostTransformer = Mystique; router; router;
TODO
- More error handling
- Sideloaded Relations
- Create Result Objects
- Create Serializers
- Meta Data Story
- Tests
License
The MIT License (MIT). Please see License File for more information.