-
Notifications
You must be signed in to change notification settings - Fork 747
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Add
estree-toolkit
as a JS transformer, upgrade meriyah
- Loading branch information
1 parent
a477e48
commit fccfb54
Showing
3 changed files
with
80 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
website/src/parsers/js/transformers/estree-toolkit/codeExample.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
59
website/src/parsers/js/transformers/estree-toolkit/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
}, | ||
}; |