A Combination of normalizr, fakerjs and GraphQL that allows you to define multipurpose models that can generate GraphQL queries, mock deeply nested data and normalize
$ yarn add modelizr
Read my medium post on why I wrote modelizr.
import { Modelizr } from 'modelizr'
const ModelData = {
Person: {
normalizeAs: "People",
fields: {
id: Number,
firstName: String,
Books: ["Book"]
}
},
Book: {
normalizeAs: "Books",
fields: {
id: Number,
title: String,
Author: "Person"
}
}
}
const {query, models: {Person, Book}} = new Modelizr({
models: ModelData,
config: {
endpoint: "http:// ..."
}
})
query(
Person({id: 1}
Book("Books")
),
Book("Books", {ids: [4, 5]})
).then((res, normalize) => {
normalize(res.body) // -> normalized response.
})
This will generate the following query and make a request using it.
{
Person(id: 1) {
id,
firstName,
Books {
id,
title
}
},
Books(ids: [4, 5]) {
id,
title,
Author {
id,
firstName
}
}
}
NOTE: Documentation for pre-v1.0.0
can be found Here
All documentation is located at julienvincent.github.io/modelizr
$ yarn
$ yarn start
navigate to http://localhost:8000
in your browser