0.0.6 • Published 5 years ago

own-property-proxy v0.0.6

Weekly downloads
11
License
MIT
Repository
github
Last release
5 years ago

own-property-proxy

A small utility to get/set object's own property, if object has no required property, it complains loudly

Installation

$ npm i own-property-proxy

Motivation

I've make the following errors again and again:

// config.js
function loadConfig() {
  return {
    OPTION_A: 1
  }
}

// api client
let options = loadConfig()
doSomethingWithOptionA(options.OPTIONN_A)  // A typo!!! OPTIONN_A should be OPTION_A

In the worst scenario, doSomethingWithOptionA accept OPTION_A with value void 0, when I found something wrong, I modify OPTION_A's value, but found nothing been changed. That is very confusing and waste of time.

I want options.OPTIONN_A complains loudly when there's no such thing OPTIONN_A in object options

Usage

common js

const { ownPropertyProxy as opp, origin } = require('own-property-proxy')

esm

import { ownPropertyProxy as opp, origin } from 'own-property-proxy'

An example

const { ownPropertyProxy as opp, origin } = require('own-property-proxy')
const assert = require('assert').strict

let obj = {
  a: 1,
  x: {
    y: 2
  }
}

obj = opp(obj)

assert.strictEqual(obj.a, 1)
assert.strictEqual(obj.x.y, 2)
assert.throws(() => obj.b, /no such/)
assert.throws(() => obj.x.z, /no such/)

// use Symbol opp.origin to access the original object
assert.strictEqual(obj[opp.origin].b, void 0)

check test.js to see the complete examples

FAQ

  • I don't want to throw exceptions, I just want a fallback value
let o = opp({...})
o.inexistentProperty // throws exception
o[opp.origin].inexistentProperty || defaultValue // get the default value

or using keep-try

import keepTry from 'keep-try'
let inexistentProperty = keepTry(() => opp({}).inexistentProperty, fallbackValue)

Development

$ git clone git@github.com:xiechao06/own-property-proxy.git
$ cd own-property-proxy
$ npm ci
$ npm dev # watch and test
0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago