Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export default function patch() {
let Parser;
let tt;
try {
Parser = require('babylon/lib/parser').default;
tt = require('babylon/lib/tokenizer/types').types;
} catch(e) {
console.error('Install `babylon` as a top-level package.');
throw e;
}
// HACK: Monkey patching to parse parameter decorators.
// Based on the compiled output of babel-core 6.0.14.
Parser.prototype.parseBindingList = function (close, allowEmpty, allowTrailingComma) {
let elts = [];
let first = true;
while (!this.eat(close)) {
if (first) {
first = false;
} else {
this.expect(tt.comma);
var Parser = require('babylon/lib/parser').default;
var _tokenizerTypes = require('babylon/lib/tokenizer/types');
var Tokenizer = require('babylon/lib/tokenizer').default;
// Add tokenizer type.
_tokenizerTypes.types.questionDot = new _tokenizerTypes.TokenType("?.", { beforeExpr: true });
_tokenizerTypes.types.questionParenL = new _tokenizerTypes.TokenType("?(", { beforeExpr: true, startsExpr: true });
// Tokenize "?(" and "?.".
const originalGetTokenFromCode = Tokenizer.prototype.getTokenFromCode;
Tokenizer.prototype.getTokenFromCode = function getTokenFromCode(code) {
if (code === 63) {
var next = this.input.charCodeAt(this.state.pos + 1);
switch (next) {
case 40:
this.state.pos += 2;
return this.finishToken(_tokenizerTypes.types.questionParenL);
#!/usr/bin/env node
require("babylon");
var Parser = require("babylon/lib/parser").default;
var expect = require("chai").expect;
var functionHash = require("./_function-hash");
var pp = Parser.prototype;
expect(functionHash(pp.skipSpace)).to.equal('0aae7bd722190ba61b58881b6858e0cb');
expect(functionHash(pp.parseNew)).to.equal('db164cd9ab726f774a46f68cca32ecc1');
console.log("OK");