0.1.1 • Published 6 years ago

@ganuz/define-property-with v0.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

@ganuz/define-property-with

Source Code Version MIT License Bundle Size TypeScript

Define Property With is package from Ganuz library

Install

$ yarn add @ganuz/define-property-with

Or

$ npm install --save @ganuz/define-property-with

Use

Module

import {
  IDefinePropertyWithCallback,
  default as definePropertyWith
} from '@ganuz/define-property-with';

Browser

<script src="https://unpkg.com/@ganuz/define-property-with/bundle.umd.min.js"></script>
let {
  definePropertyWith
} = G;

Examples

 definePropertyWith(null, 'prop', {}, v => v); // throw TypeError
 definePropertyWith({}, 'prop', {}, () => {}); // => false
 definePropertyWith({}, 'prop', 'data', () => {}); // => false
 definePropertyWith({}, 'num', 77, (o, n) => n); // => false
 definePropertyWith({}, 'cup', {value: 'tea'}, o => o); // => false
 definePropertyWith(Object.freeze({}), 'num', {value: 55}, (o, n) => n); // => false
 definePropertyWith(Object.create({}, {str: {value: 'cool'}}), 'str', {value: 'fun'}, (o, n) => n); // => false

 let object = {};
 definePropertyWith(object, 'prop', {}, (old, n) => n); // => true
 console.log(object); // => {prop: undefined}

 let object2 = {};
 definePropertyWith(object2, 'foo', {value: 'bar'}, (old, n) => n); // => true
 console.log(object2); // => {foo: 'bar'}

 let object3 = {};
 definePropertyWith(object3, 'foo', 'bar', (old, value) => ({value})); // => true
 console.log(object3); // => {foo: 'bar'}

 let object4 = {color: 'pink'};
 definePropertyWith(object4, 'color', {value: 'green'}, old => old); // => true
 console.log(object4); // => {color: 'pink'}

 let object5 = {color: 'red'};
 definePropertyWith(object5, 'color', {value: 'blue'}, () => {}); // => true
 console.log(object5); // => {color: 'blue'}

 let object6 = {color: 'yellow', _default: 'black'};
 definePropertyWith(object6, 'color', 'pink', (o, n, p, t) => {value: n === 'pink' ? t['_default']: n}); // => true
 console.log(object6); // => {color: 'black'}

 let object7 = {numbers: [0, 2]};
 definePropertyWith(object7, 'numbers', {value: [4, 6]}, ({value: o}, {value: n}) => Array.isArray(n) && o.push(...n)); // => true
 console.log(object7); // => {numbers: [0, 2, 4, 6]}

License

Copyright © Yisrael Eliev, Licensed under the MIT license.