🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

meval

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

meval

Mimic eval in given context

latest
Source
npmnpm
Version
1.1.0
Version published
Maintainers
1
Created
Source

meval - m(imic) eval

Build Status Current Release License: ISC

Info

  • This is not a "safe JavaScript eval"!
  • This library only mimics eval() functionality to some point.
  • It always returns the value of given expression. You always need to provide context in which it will be executed (context must be an Object).
  • Pure JavaScript! No dependencies! ^^,
  • Minified version is only ~16KB

What's working

  • one-argument operators:
    • ! ...
    • ~ ...
    • + ...
    • - ...
    • typeof ...
  • two-argument operators:
    • ... . ... (member accessor)
    • ... * ...
    • ... / ...
    • ... % ...
    • ... + ...
    • ... - ...
    • ... >= ...
    • ... <= ...
    • ... > ...
    • ... < ...
    • ... instanceof ...
    • ... in ...
    • ... === ...
    • ... !== ...
    • ... == ...
    • ... != ...
    • ... && ...
    • ... || ...
  • three-argument operator:
    • ... ? ... : ...
  • Strings, Numbers (both Integers and Floats) and Booleans
    • Node: Interpolation in Strings is not planned for now to be implemented
  • properties:
    • undefined
    • null
    • NaN
    • Infinity
  • grouping (paranthesis)
  • calling methods
    • support nested methods (e.g. foo(1, bar(item.a, item.b)))
  • accessing allowed global Object:
    • Date
    • Math
    • Number
    • String
    • Array
    • Object
  • mixing above

TODO

  • one-argument operators:
    • new (I don't know if it's good idea?)

Usage

Install

It's UMD package, so you can use it both: client-side (browser) and server-side (node.js). Probably you want to just intall it with npm:

npm install --save meval

And then just require it:

const meval = require('meval');

But if you don't want to use npm, you can always simply download eg. minified version right from Releases.

Run

/**
 * @param {String} expression Expression to be parsed
 * @param {Object} context Context for expression
 */
meval(expression, context)

Example

<< meval('item.a + item.b * 5', { item: { a: 2, b: 3 } })
>> 17

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the ISC License - see the LICENSE file for details.

Keywords

javascript

FAQs

Package last updated on 25 Mar 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts