Skip to content

Commit

Permalink
feat: Add estree-toolkit as a JS transformer, upgrade meriyah
Browse files Browse the repository at this point in the history
  • Loading branch information
sarsamurmu committed Sep 26, 2021
1 parent a477e48 commit 71cc041
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 1 deletion.
3 changes: 2 additions & 1 deletion website/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
"eslint4": "npm:eslint@^4",
"espree": "^6.2.1",
"esprima": "^4.0.1",
"estree-toolkit": "^1.2.5",
"filbert": "^0.1.20",
"flow-parser": "^0.144.0",
"font-awesome": "^4.5.0",
Expand All @@ -112,7 +113,7 @@
"lodash.isequal": "^4.5.0",
"luaparse": "^0.3.0",
"lucene": "^2.1.1",
"meriyah": "^1.9.12",
"meriyah": "^4.2.0",
"parse5": "^6.0.0",
"parse5-htmlparser2-tree-adapter": "^6.0.0",
"pbkit": "^0.0.12",
Expand Down
19 changes: 19 additions & 0 deletions website/src/parsers/js/transformers/estree-toolkit/codeExample.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
export default function transform(code, { estreeToolkit, parsers }) {
const {
builders: b,
is,
traverse,
utils
} = estreeToolkit;

// There are many parsers, use any of them to generate an AST
const ast = parsers.meriyah.parseModule(code);

traverse(ast, {
Identifier(path) {
path.node.name = path.node.name.split('').reverse().join('');
}
});

return ast;
}
59 changes: 59 additions & 0 deletions website/src/parsers/js/transformers/estree-toolkit/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import compileModule from '../../../utils/compileModule';
import pkg from 'estree-toolkit/package.json';

const ID = 'estree-toolkit';

export default {
id: ID,
displayName: ID,
version: pkg.version,
homepage: pkg.homepage || 'https://github.com/sarsamurmu/estree-toolkit',

defaultParserID: 'meriyah',

loadTransformer(callback) {
require(
[
'../../../transpilers/babel',
'estree-toolkit',
'recast',
'acorn',
'espree',
'esprima',
'meriyah',
'seafox',
'tenko',
],
(transpile, estreeToolkit, recast, acorn, espree, esprima, meriyah, seafox, tenko) => {
callback({
transpile: transpile.default,
estreeToolkit,
recast,
parsers: { acorn, espree, esprima, meriyah, seafox, tenko },
});
},
);
},

transform(
{ transpile, estreeToolkit, recast, parsers },
transformCode,
code,
) {
transformCode = transpile(transformCode);
const transformModule = compileModule( // eslint-disable-line no-shadow
transformCode,
);
const transform = transformModule.__esModule ?
transformModule.default :
transformModule;

const ast = transform(code, { estreeToolkit, parsers });

if (ast == null) {
throw new Error('`transform` function must return an AST object');
}

return recast.print(ast);
},
};

0 comments on commit 71cc041

Please sign in to comment.