own-property-proxy
A small utility to get/set object's own property, if object has no required property, it complains loudly
Last updated a year ago by xiechao06 .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install own-property-proxy 
SYNC missed versions from official npm registry.

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

Current Tags

  • 0.0.6                                ...           latest (a year ago)

6 Versions

  • 0.0.6                                ...           a year ago
  • 0.0.5                                ...           a year ago
  • 0.0.4                                ...           a year ago
  • 0.0.3                                ...           a year ago
  • 0.0.2                                ...           a year ago
  • 0.0.1                                ...           a year ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 7
Dependencies (2)
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |