Skip to main content
Home

A blazingly fast, single-file, zero dependency JavaScript expression parser.

This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers
This package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
This package works with Bun
This package works with Browsers
JSR Score
100%
Published
a year ago (1.0.2)

fastexpr.js

A blazingly fast, single-file, zero dependency JavaScript expression parser.

Features

  • Fast. Hand-coded lexer and top-down operator precedence parser. Twice as fast as esprima.
  • Small. Less than 10KB minified and gzipped.
  • Compatible. Parses all valid JavaScript expressions. Produces an esprima style AST.

Usage:

import {parse} from '@anpete/fastexpr';

const expr = (s: string) => `hello from ${s}!`;

const ast = parse(expr.toString());

console.log(ast);

which produces:

{
  type: "ArrowFunctionExpression",
  params: [ { type: "IdentifierExpression", name: "s" } ],
  body: {
    type: "TemplateLiteralExpression",
    quasis: [
      {
        type: "TemplateExpression",
        value: { cooked: "hello from " },
        tail: false
      },
      {
        type: "TemplateExpression",
        value: { cooked: "!" },
        tail: true
      }
    ],
    expressions: [ { type: "IdentifierExpression", name: "s" } ]
  }
}

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@anpete/fastexpr

Import symbol

import * as fastexpr from "@anpete/fastexpr";
or

Import directly with a jsr specifier

import * as fastexpr from "jsr:@anpete/fastexpr";

Add Package

pnpm i jsr:@anpete/fastexpr
or (using pnpm 10.8 or older)
pnpm dlx jsr add @anpete/fastexpr

Import symbol

import * as fastexpr from "@anpete/fastexpr";

Add Package

yarn add jsr:@anpete/fastexpr
or (using Yarn 4.8 or older)
yarn dlx jsr add @anpete/fastexpr

Import symbol

import * as fastexpr from "@anpete/fastexpr";

Add Package

vlt install jsr:@anpete/fastexpr

Import symbol

import * as fastexpr from "@anpete/fastexpr";

Add Package

npx jsr add @anpete/fastexpr

Import symbol

import * as fastexpr from "@anpete/fastexpr";

Add Package

bunx jsr add @anpete/fastexpr

Import symbol

import * as fastexpr from "@anpete/fastexpr";