punyexpr
v1.2.0
Published
A minimalist expression compiler and evaluator
Readme
punyexpr 🦴
🍁 Overview
A minimalist (5085 bytes) and safe expression compiler and evaluator.
🖥️ Demo
You can experiment with expressions here.
💿 How to install
npm install punyexprwith ESM:
import { punyexpor } from 'punyexpr'with CommonJS:
const { punyexpr } = require('punyexpr')Types are included in the package
📚 Documentation
Compile an expression
const incValue = punyexpr('value + 1')Evaluate the compiled expression
incValue({ value: 1 }) // 2Use with punybind@>=1.2.0
const safebind = punybind.use({
compiler: punyexpr
})
// Use safebind to bind HTML📚 Implementation notes
Regular expressions
Regular expressions are not secure and are not allowed by default,
Set the option
{ regex: true }to enable regular expressions using the default JavaScript implementation:
const unsecure = punyexpr('value.match(/a+b/)', { regex: true })- Or plug any custom regular expression builder:
const unsecure = punyexpr('value.match(/a+b/)', { regex: (pattern, flags) => new RegExp(pattern, flags) })More details
- Check the source for the implemented grammar, in particular the following are not supported :
- Bitwise, async and coalesce operations
newandthis- Object literals
- See the types definitions for complete API,
- See the tests for supported expressions,
- The implementation is compliant with Content Security Policy.
