1.0.0 • Published 5 years ago

@playframe/evolve v1.0.0

Weekly downloads
1
License
AGPL-3.0-or-later
Repository
github
Last release
5 years ago

PlayFrame

Evolve

0.16 kB Deep calling assign

Installation

npm install --save @playframe/evolve

Usage

import evolve from '@playframe/evolve'

const props = {onclick: (event)=> fetch()}

const clickLogger = { onclick: (handler)=>(e)=>
  console.log(e)
  handler && handler(e);
}

const loggedClicksProps = evolve(props, clickLogger);

Annotated Source

Caching Array.isArray for perf

{isArray} = Array

Exporting a deep assign that passes old values to functions

module.exports = evolve = (base, upgrade)=>
  evolved = {base...}

  for k, v of upgrade
    type = typeof v
    evolved[k] = if type is 'function'
        v base[k]

      else if type is 'object' and not isArray v
        evolve base[k], v

      else
        v

  evolved