Package Exports
- fetch-normalize-data
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fetch-normalize-data) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
fetch-normalize-data
A library to obtain a state of normalized data. Special fetch and reducer helpers are also provided in the export.
Basic Usage
Merge
If you want to merge patched data into an already existing state:
import { getNormalizedMergedState } from 'fetch-normalize-data'
const state = {
authors: [{ id: 0, name: "John Marxou" }],
books: [{ authorId: 0, id: 0, text: "my foo" }]
}
const patch = {
books: [
{
author: { id: 1, name: "Edmond Frostan" },
id: 1,
text: "you foo"
}
]
}
const config = {
normalizer: {
books: {
normalizer: {
// short syntax here: <datumKey>: <stateKey>
author: "authors"
},
stateKey: "books"
}
}
}
const nextState = getNormalizedMergedState(state, patch, config)
console.log(nextState)
We have:
{
authors: [
{ id: 0, name: "John Marxou" },
{ id: 1, name: "Edmond Frostan" }
],
books: [
{ authorId: 0, id: 0, text: "my foo" },
{
authorId: 1,
id: 1,
text: "you foo"
}
]
}
Delete
import { getNormalizedDeletedState } from 'fetch-normalize-data'
const state = {
authors: [{ id: 0, name: "John Marxou" }],
books: [{ authorId: 0, id: 0, text: "my foo" }]
}
const patch = {
books: [{ id: 1 }]
}
const nextState = getNormalizedDeletedState(state, patch, config)
console.log(nextState)
We have:
{
authors: [
{ id: 0, name: "John Marxou" }
],
books: []
}
Usage with config
Merge
config of getNormalizedMergedState can have:
name | type | example | isRequired | default | description |
---|---|---|---|---|---|
isMergingArray | bool | See test | non | true |
decide if nextState. |
isMergingDatum | bool | See test | non | false |
decide if nextState.<arrayName>[...<datum>] will be a merge from previous and next datum or just a replace with next datum |
isMutatingArray | bool | See test | non | true |
decide if nextState. |
isMutatingDatum | bool | See test | non | false |
decide if nextState.<arrayName>[...<datum>] will be a clone or a merge into the previous datum |
normalizer | objet | See test | non | null |
a nested object giving relationships between datumKeys and entities to be store at stateKeys |