Socket
Book a DemoInstallSign in
Socket

realloc

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

realloc

Observable and Immutable State Manager Base On JSONPath For Javascript Applications

0.0.12
latest
Source
npmnpm
Version published
Maintainers
1
Created
Source

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
//   }]

Keywords

realloc

FAQs

Package last updated on 15 Dec 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.