safe-access-check

    0.0.15 • Public • Published

    safe-access-check

    Build Status NPM version Dependency Status npm

    ⚠️ Experimental. Intended to be used by compilers and code checkers ⚠️

    Todos

    • Existential check of enumerable properties
    • Optional logging of values recieved
    • Clearer, more consistent error messages

    Installation

    npm install --save-dev safe-access-check

    Usage

    import { safeCoerce, safePropertyAccess } from 'safe-access-check';
     
    // ------------------------------------------------
    // 1. Usage as an expression
    // ------------------------------------------------
    let some = moo + '10' // 'moo10'
    some = safeCoerce('moo', '+', 10) // 'moo10'
     
    // ------------------------------------------------
    // 2. Usage for coercion safeguard
    // ------------------------------------------------
    [] + {} // "[object Object]"
     
    safeCoerce([], '+', {})
    // TypeError: 'Unexpected coercion of type "Object" and
    // type "Array" using "+" operator'
     
    NaN + undefined // NaN
     
    safeCoerce(NaN, '+', undefined);
    // TypeError: Unexpected coercion of type "NaN" and type
    // "undefined" using "+" operator
     
    safeCoerce(new String('12'), '>', 12);
    // TypeError: Unexpected comparison of type "String" and type
    // "number" using ">" operator
     
    // ------------------------------------------------
    // 3. Usage for better undefined propagation errors
    // ------------------------------------------------
    const obj = {
      foo: {
        bar: {
          baz: false
        }
      }
    }
     
    obj.foo.bar._MOO_.baz;
    // TypeError: 'Cannot read property 'baz' of undefined'
     
    safePropertyAccess(['foo', 'bar', '_MOO_', 'baz'], obj);
    // TypeError: Property "_MOO_" does not exist in "Object.foo._MOO_"
     
    // ------------------------------------------------
    // 4. Usage as out of bounds check
    // ------------------------------------------------
    const obj = {
      woo: ['']
    }
     
    obj.woo[1] // undefined
     
    safePropertyAccess(['woo', 1], obj)
    // TypeError: '"woo[1]" is out of bounds'

    Keywords

    none

    Install

    npm i safe-access-check

    DownloadsWeekly Downloads

    79

    Version

    0.0.15

    License

    MIT

    Last publish

    Collaborators

    • amilajack