Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

babel-plugin-chevrotain-serialize

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-chevrotain-serialize

This plugin finds class declarations which inherit from `chevrotain.Parser`, serializes them, and passes this serialization into their constructor `super` calls, allowing your code to bypass parser grammar construction at runtime. This is especially usefu

  • 0.3.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3
increased by50%
Maintainers
1
Weekly downloads
 
Created
Source

babel-plugin-chevrotain-serialize

This plugin finds class declarations which inherit from chevrotain.Parser, serializes them, and passes this serialization into their constructor super calls, allowing your code to bypass parser grammar construction at runtime. This is especially useful if you run your code through a minifier, as you’ll no longer have to avoid mangling token names.

Installation

npm install --save-dev babel-plugin-chevrotain-serialize

or

yarn add --dev babel-plugin-chevrotain-serialize

Usage

Add the plugin to your .babelrc.

{
  "plugins": ["babel-plugin-chevrotain-serialize"]
}

How it works

  1. It finds Parser imports which are imported using any of the methods shown below
  2. It finds any class that inherits from the Parser class
  3. If no classes inherit from Parser, no transform is done - this allows modules to import or require chevrotain without being transformed
  4. If a module contains a class which contains a class that inherits from Parser, the module is loaded using require-from-string and each Parser class is used to generate a serialized grammar
  5. The serialized grammar is then added as a config property named serializedGrammar

Import/Require methods

The plugin will find Parser references which are imported and referenced in any of the following ways:

// method 1
import { Parser } from "chevrotain";
// method 2
const { Parser } = require("chevrotain");
// method 1 & 2 reference
class MyParser extends Parser {}

// method 3
import * as chevrotain from "chevrotain";
// method 4
import chevrotain from "chevrotain";
// method 5
const chevrotain = require("chevrotain");
// method 3, 4 & 5 reference
class MyParser extends chevrotain.Parser {}

// will not work
const Parser1 = Parser;
// this will not be detected
class MyParser extends Parser1 {}

Limitations

Since any modules with Parser class must be loaded using require-from-string, it must be valid javascript loadable in node. This might require your babel config to contain a module plugin, such as @babel/plugin-transform-modules-commonjs to transform unsupported syntax like:

import { Parser } from 'chevrotain';

FAQs

Package last updated on 18 Jan 2019

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc