astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
27 lines (24 loc) • 3.45 kB
JavaScript
import getBabelAutoBackend from './babel/getBabelAutoBackend.mjs'
import getBabelBackend from './babel/getBabelBackend.mjs'
import { Backend } from './backend/Backend.mjs'
import getRecastBackend from './recast/getRecastBackend.mjs'
export default function chooseGetBackend(parser) {
if (parser instanceof Backend) return async () => parser
if (!parser) return getBabelAutoBackend
if (parser.startsWith('recast/')) {
const getWrappedBackend = chooseGetBackend(
parser.substring('recast/'.length)
)
return getRecastBackend((file, options) =>
getWrappedBackend(file, { ...options, tokens: true })
)
}
switch (parser) {
case 'babel/auto':
return getBabelAutoBackend
case 'babel':
return getBabelBackend
default:
throw new Error(`unknown parser: ${parser}`)
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRCYWJlbEF1dG9CYWNrZW5kIiwiZ2V0QmFiZWxCYWNrZW5kIiwiQmFja2VuZCIsImdldFJlY2FzdEJhY2tlbmQiLCJjaG9vc2VHZXRCYWNrZW5kIiwicGFyc2VyIiwic3RhcnRzV2l0aCIsImdldFdyYXBwZWRCYWNrZW5kIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZmlsZSIsIm9wdGlvbnMiLCJ0b2tlbnMiLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jaG9vc2VHZXRCYWNrZW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRCYWJlbEF1dG9CYWNrZW5kIGZyb20gJy4vYmFiZWwvZ2V0QmFiZWxBdXRvQmFja2VuZCdcbmltcG9ydCBnZXRCYWJlbEJhY2tlbmQgZnJvbSAnLi9iYWJlbC9nZXRCYWJlbEJhY2tlbmQnXG5pbXBvcnQgeyBCYWNrZW5kLCBHZXRCYWNrZW5kIH0gZnJvbSAnLi9iYWNrZW5kL0JhY2tlbmQnXG5pbXBvcnQgZ2V0UmVjYXN0QmFja2VuZCBmcm9tICcuL3JlY2FzdC9nZXRSZWNhc3RCYWNrZW5kJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjaG9vc2VHZXRCYWNrZW5kKFxuICBwYXJzZXI6IHN0cmluZyB8IEJhY2tlbmQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBHZXRCYWNrZW5kIHtcbiAgaWYgKHBhcnNlciBpbnN0YW5jZW9mIEJhY2tlbmQpIHJldHVybiBhc3luYyAoKSA9PiBwYXJzZXJcbiAgaWYgKCFwYXJzZXIpIHJldHVybiBnZXRCYWJlbEF1dG9CYWNrZW5kXG4gIGlmIChwYXJzZXIuc3RhcnRzV2l0aCgncmVjYXN0LycpKSB7XG4gICAgY29uc3QgZ2V0V3JhcHBlZEJhY2tlbmQgPSBjaG9vc2VHZXRCYWNrZW5kKFxuICAgICAgcGFyc2VyLnN1YnN0cmluZygncmVjYXN0LycubGVuZ3RoKVxuICAgIClcbiAgICByZXR1cm4gZ2V0UmVjYXN0QmFja2VuZCgoZmlsZTogc3RyaW5nLCBvcHRpb25zPzogeyBbayBpbiBzdHJpbmddPzogYW55IH0pID0+XG4gICAgICBnZXRXcmFwcGVkQmFja2VuZChmaWxlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHRva2VuczogdHJ1ZSxcbiAgICAgIH0pXG4gICAgKVxuICB9XG4gIHN3aXRjaCAocGFyc2VyKSB7XG4gICAgY2FzZSAnYmFiZWwvYXV0byc6XG4gICAgICByZXR1cm4gZ2V0QmFiZWxBdXRvQmFja2VuZFxuICAgIGNhc2UgJ2JhYmVsJzpcbiAgICAgIHJldHVybiBnZXRCYWJlbEJhY2tlbmRcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHBhcnNlcjogJHtwYXJzZXJ9YClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxtQkFBUCxNQUFnQyw2QkFBaEM7QUFDQSxPQUFPQyxlQUFQLE1BQTRCLHlCQUE1QjtBQUNBLFNBQVNDLE9BQVQsUUFBb0MsbUJBQXBDO0FBQ0EsT0FBT0MsZ0JBQVAsTUFBNkIsMkJBQTdCOztBQUVBLGVBQWUsU0FBU0MsZ0JBQVQ7QUFDYkMsTUFEYTtBQUVEO0VBQ1osSUFBSUEsTUFBTSxZQUFZSCxPQUF0QixFQUErQixPQUFPLFlBQVlHLE1BQW5CO0VBQy9CLElBQUksQ0FBQ0EsTUFBTCxFQUFhLE9BQU9MLG1CQUFQO0VBQ2IsSUFBSUssTUFBTSxDQUFDQyxVQUFQLENBQWtCLFNBQWxCLENBQUosRUFBa0M7SUFDaEMsTUFBTUMsaUJBQWlCLEdBQUdILGdCQUFnQjtJQUN4Q0MsTUFBTSxDQUFDRyxTQUFQLENBQWlCLFVBQVVDLE1BQTNCLENBRHdDLENBQTFDOztJQUdBLE9BQU9OLGdCQUFnQixDQUFDLENBQUNPLElBQUQsRUFBZUMsT0FBZjtJQUN0QkosaUJBQWlCLENBQUNHLElBQUQsRUFBTztNQUN0QixHQUFHQyxPQURtQjtNQUV0QkMsTUFBTSxFQUFFLElBRmMsRUFBUCxDQURJLENBQXZCOzs7RUFNRDtFQUNELFFBQVFQLE1BQVI7SUFDRSxLQUFLLFlBQUw7TUFDRSxPQUFPTCxtQkFBUDtJQUNGLEtBQUssT0FBTDtNQUNFLE9BQU9DLGVBQVA7SUFDRjtNQUNFLE1BQU0sSUFBSVksS0FBSixDQUFXLG1CQUFrQlIsTUFBTyxFQUFwQyxDQUFOLENBTko7O0FBUUQifQ==