jshiki
TypeScript icon, indicating that this package has built-in type declarations

3.4.0 • Public • Published

j式 — jshiki

Safe and Easy Expression Evaluation for Node.js

Build Status Codecov Coverage Status npm Version

Documentation | Change Log


jshiki provides a safe and simple way to evaluate expressions without worrying about external data being overwritten or accessed in unexpected ways. jshiki only has one lightweight dependency, acorn, which it uses parse expressions.

Basic Usage

const jshiki = require('jshiki')

let result = jshiki.evaluate('(5 + 7) / 3') // result => 4
// or
let expression = jshiki.parse('(5 + 7) / 3')
result = expression() // result => 4

Accessing data

const code = "`Hello! My name's ${name.trim()}`"

expression = jshiki.parse(code)
result = expression({ name: ' Azumi ' })
// result => "Hello! My name's Azumi"

// or
result = jshiki.evaluate(code, {
  scope: { name: ' Azumi ' },
})
// result => "Hello! My name's Azumi"

Asynchronous evaluation

const asyncCode = "`I'm ${await status()}...`"

expression = jshiki.parseAsync(asyncCode)
result = await expression({
  status: async () => 'waiting',
})
// result => "I'm waiting..."

// or
result = await jshiki.evaluateAsync(asyncCode, {
  scope: { status: async () => 'waiting' },
})
// result => "I'm waiting..."

For more examples, features, and information on how to use jshiki, see the documentation.

Discussion

Discuss jshiki on GitHub discussions. Make sure to follow the code of conduct.

Contributing

If you're looking for a way to contribute to jshiki, see the contribution guide.

Licence

MIT

Package Sidebar

Install

npm i jshiki

Homepage

jshiki.io

Weekly Downloads

9

Version

3.4.0

License

MIT

Unpacked Size

79.1 kB

Total Files

17

Last publish

Collaborators

  • adalinesimonian