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 🐟

Package Sidebar

Install

npm i symbolic-link

Weekly Downloads

3

Version

1.0.1

License

MIT

Unpacked Size

29.7 kB

Total Files

21

Last publish

Collaborators

  • moyuyc