0.0.12 • Published 10 years ago

realloc v0.0.12

Weekly downloads
15
License
MIT
Repository
github
Last release
10 years ago

Realloc

build status Coverage Status npm version npm downloads

Installation

npm i -S realloc

Getting Started

Tutorial

import { createState } from 'realloc'
//create a counter store
const {
  getState,
  createAction,
  subscribe
} = createState({
  count:0
})
// create a increment action for the store
const incrementAction = createAction('$.count', (currentCount) => currentCount + 1)
// create a decrement action for the store
const decrementAction = createAction('$.count', (currentCount) => currentCount - 1)
// set a subscriber for the store
const unsubscribe = subscribe((nextState, prevState) => {
	console.log("log: ", nextState, prevState)
})
// call the increment action
incrementAction()
// state of the store will change,
// => log: {count:1} {count:0}

// call the increment action again
incrementAction()
// state of the store will change again
// => log: {count:2} {count:1}
getState() // {count:2}

// call the decrement action
decrementAction()
// => log: {count:1} {count:2}

// create a action that increment with params
const incrementNumAction = createAction('$.count', (num, currentCount) => currentCount + num)

incrementNumAction(5)
// => log: {count:6} {count:1}

Using JSONPath

import { createState } from 'realloc'
const initialState = {
  "store": {
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      {
        "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}
const {
  getState,
  createAction,
  createGetter,
  subscribe
} = createState(initialState)
const unsubscribe = subscribe((nextState, prevState) => {
	console.log("log: ", nextState, prevState)
})
const getBookTitlesByPriceGTTen = createGetter('$.store.book[?(@.price > 10)].title')
getBookByPriceGTTen()
// => ["Sword of Honour", "The Lord of the Rings"]

const updateBookCategoryWithPrice = createAction('$.store.book[?(@.price > {price})].category', (payload, currentCategory) => payload.text + currentCategory )
updateBookCategoryWithPrice({
  price:10,
  text:'famous '
})
getState().store.book

// => [{
//     "category": "reference",
//     "author": "Nigel Rees",
//     "title": "Sayings of the Century",
//     "price": 8.95
//   },
//   {
//     "category": "famous fiction",
//     "author": "Evelyn Waugh",
//     "title": "Sword of Honour",
//     "price": 12.99
//   },
//   {
//     "category": "fiction",
//     "author": "Herman Melville",
//     "title": "Moby Dick",
//     "isbn": "0-553-21311-3",
//     "price": 8.99
//   },
//   {
//     "category": "famous fiction",
//     "author": "J. R. R. Tolkien",
//     "title": "The Lord of the Rings",
//     "isbn": "0-395-19395-8",
//     "price": 22.99
//   }]
0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago