symbolic-link

1.0.1 • Public • Published

symbolic-link

Build status Test coverage NPM version NPM Downloads Prettier Conventional Commits

Make the property links to other target like the symbolic link and it works well in mobx.

Installation

npm install symbolic-link
# or use yarn 
yarn add symbolic-link

Usage

Simple Case

const { symbolicLink } = require('symbolic-link')
 
const obj = {}
const dest = { name: 'foo' }
const rm = symbolicLink(obj, 'name', dest, 'foo')
 
obj.name === 'foo'
obj.name = 'bar'
dest.name = 'bar'
 
rm()
 
obj.name === undefined
dest.name === 'bar'

Use in mobx

const { observable } = require('mobx')
const { defineSymbolic } = require('symbolic-link')
 
class Src {
  @observable name
}
 
class Combine {
  @observable obj = {
    name: 'objName'
  }
 
  @observable src = defineSymbolic(new Src(), {
    name: [this.obj, 'name']
  })
 
  srcX = define(new Src(), {
    name: [this.obj, 'name']
  })
}
 
const comb = new Combine()
comb.src.name === comb.obj.name
comb.srcX.name === comb.obj.name

API

symbolicLink

index.js:86-120

Parameters

  • srcTarget {any}
  • srcPropName {String|Symbol|Number}
  • destTarget {any}
  • destPropName {String|Symbol|Number}
  • descriptor {object}

Examples

const obj = {}
const dest = { name: 'foo' }
const rm = symbolicLink(obj, 'name', dest, 'foo')
 
obj.name === 'foo'
obj.name = 'bar'
dest.name = 'bar'
 
rm()
 
obj.name === undefined
dest.name === 'bar'

Returns any dispose {Function}

symbolicTarget

index.js:142-152

Parameters

  • target {any}
  • config {{name: [destTarget, destPropName, descriptor]}}

Examples

const obj = {}
const dest = { name: 'foo' }
const rm = symbolicTarget(obj, {
  name: [dest, 'name']
})
 
obj.name === 'foo'
obj.name = 'bar'
dest.name === 'bar'
rm()
 
obj.name === undefined
dest.name === 'bar'

Returns any dispose {Function}

defineSymbolic

index.js:160-163

Parameters

  • target {any}
  • config {{name: [destTarget, destPropName, descriptor]}}

Returns any target {any}

Contributing

  • Fork it!
  • Create your new branch:
    git checkout -b feature-new or git checkout -b fix-which-bug
  • Start your magic work now
  • Make sure npm test passes
  • Commit your changes:
    git commit -am 'feat: some description (close #123)' or git commit -am 'fix: some description (fix #123)'
  • Push to the branch: git push
  • Submit a pull request :)

Authors

This library is written and maintained by imcuttle, moyuyc95@gmail.com.

License

MIT - imcuttle 🐟

/symbolic-link/

    Package Sidebar

    Install

    npm i symbolic-link

    Weekly Downloads

    9

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    29.7 kB

    Total Files

    21

    Last publish

    Collaborators

    • moyuyc