UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

46 lines (42 loc) 5.61 kB
import path from 'path' import _resolve from 'resolve' import BabelBackend from './BabelBackend.mjs' import * as defaultBabelTypes from '@babel/types' import * as defaultBabelGenerator from '@babel/generator' import { getParserAsync } from 'babel-parse-wild-code' import { promisify } from 'util' const resolve = promisify(_resolve) async function importLocal(pkg, basedir) { const resolved = await resolve(pkg, { basedir, }) // eslint-disable-next-line @typescript-eslint/no-var-requires return await import( /* webpackIgnore: true */ resolved ) } export default async function getBabelAutoBackend( file, { preserveFormat, ...options } = {} ) { const basedir = path.dirname(file) const [_parser, types, generator] = await Promise.all([ getParserAsync(file, options), importLocal('@babel/types', basedir).catch(() => defaultBabelTypes), importLocal('@babel/generator', basedir).catch(() => defaultBabelGenerator), ]) const parser = ( _parser.parserOpts.sourceType ? _parser : _parser.bindParserOpts({ sourceType: 'unambiguous', }) ).forExtension(file) return new BabelBackend({ parser: parser, parserOptions: options, preserveFormat, generator, types, }) } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX3Jlc29sdmUiLCJCYWJlbEJhY2tlbmQiLCJkZWZhdWx0QmFiZWxUeXBlcyIsImRlZmF1bHRCYWJlbEdlbmVyYXRvciIsImdldFBhcnNlckFzeW5jIiwicHJvbWlzaWZ5IiwicmVzb2x2ZSIsImltcG9ydExvY2FsIiwicGtnIiwiYmFzZWRpciIsInJlc29sdmVkIiwiZ2V0QmFiZWxBdXRvQmFja2VuZCIsImZpbGUiLCJwcmVzZXJ2ZUZvcm1hdCIsIm9wdGlvbnMiLCJkaXJuYW1lIiwiX3BhcnNlciIsInR5cGVzIiwiZ2VuZXJhdG9yIiwiUHJvbWlzZSIsImFsbCIsImNhdGNoIiwicGFyc2VyIiwicGFyc2VyT3B0cyIsInNvdXJjZVR5cGUiLCJiaW5kUGFyc2VyT3B0cyIsImZvckV4dGVuc2lvbiIsInBhcnNlck9wdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFiZWwvZ2V0QmFiZWxBdXRvQmFja2VuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IF9yZXNvbHZlIGZyb20gJ3Jlc29sdmUnXG5pbXBvcnQgQmFiZWxCYWNrZW5kIGZyb20gJy4vQmFiZWxCYWNrZW5kJ1xuaW1wb3J0ICogYXMgZGVmYXVsdEJhYmVsVHlwZXMgZnJvbSAnQGJhYmVsL3R5cGVzJ1xuaW1wb3J0ICogYXMgZGVmYXVsdEJhYmVsR2VuZXJhdG9yIGZyb20gJ0BiYWJlbC9nZW5lcmF0b3InXG5pbXBvcnQgeyBnZXRQYXJzZXJBc3luYyB9IGZyb20gJ2JhYmVsLXBhcnNlLXdpbGQtY29kZSdcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnXG5cbmNvbnN0IHJlc29sdmU6IChcbiAgaWQ6IHN0cmluZyxcbiAgb3B0czogX3Jlc29sdmUuQXN5bmNPcHRzXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pID0+IFByb21pc2U8c3RyaW5nPiA9IHByb21pc2lmeShfcmVzb2x2ZSBhcyBhbnkpXG5cbmFzeW5jIGZ1bmN0aW9uIGltcG9ydExvY2FsPFQ+KHBrZzogc3RyaW5nLCBiYXNlZGlyOiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCByZXNvbHZlKHBrZywge1xuICAgIGJhc2VkaXIsXG4gIH0pXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gIHJldHVybiBhd2FpdCBpbXBvcnQoLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqLyByZXNvbHZlZClcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ2V0QmFiZWxBdXRvQmFja2VuZChcbiAgZmlsZTogc3RyaW5nLFxuICB7IHByZXNlcnZlRm9ybWF0LCAuLi5vcHRpb25zIH06IHsgW2sgaW4gc3RyaW5nXT86IGFueSB9ID0ge31cbik6IFByb21pc2U8QmFiZWxCYWNrZW5kPiB7XG4gIGNvbnN0IGJhc2VkaXIgPSBwYXRoLmRpcm5hbWUoZmlsZSlcbiAgY29uc3QgW19wYXJzZXIsIHR5cGVzLCBnZW5lcmF0b3JdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGdldFBhcnNlckFzeW5jKGZpbGUsIG9wdGlvbnMpLFxuICAgIGltcG9ydExvY2FsPHR5cGVvZiBkZWZhdWx0QmFiZWxUeXBlcz4oJ0BiYWJlbC90eXBlcycsIGJhc2VkaXIpLmNhdGNoKFxuICAgICAgKCkgPT4gZGVmYXVsdEJhYmVsVHlwZXNcbiAgICApLFxuICAgIGltcG9ydExvY2FsPHR5cGVvZiBkZWZhdWx0QmFiZWxHZW5lcmF0b3I+KFxuICAgICAgJ0BiYWJlbC9nZW5lcmF0b3InLFxuICAgICAgYmFzZWRpclxuICAgICkuY2F0Y2goKCkgPT4gZGVmYXVsdEJhYmVsR2VuZXJhdG9yKSxcbiAgXSlcbiAgY29uc3QgcGFyc2VyID0gKFxuICAgIF9wYXJzZXIucGFyc2VyT3B0cy5zb3VyY2VUeXBlXG4gICAgICA/IF9wYXJzZXJcbiAgICAgIDogX3BhcnNlci5iaW5kUGFyc2VyT3B0cyh7IHNvdXJjZVR5cGU6ICd1bmFtYmlndW91cycgfSlcbiAgKS5mb3JFeHRlbnNpb24oZmlsZSlcbiAgcmV0dXJuIG5ldyBCYWJlbEJhY2tlbmQoe1xuICAgIHBhcnNlcjogcGFyc2VyIGFzIGFueSxcbiAgICBwYXJzZXJPcHRpb25zOiBvcHRpb25zLFxuICAgIHByZXNlcnZlRm9ybWF0LFxuICAgIGdlbmVyYXRvcixcbiAgICB0eXBlcyxcbiAgfSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsSUFBUCxNQUFpQixNQUFqQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsU0FBckI7QUFDQSxPQUFPQyxZQUFQLE1BQXlCLGdCQUF6QjtBQUNBLE9BQU8sS0FBS0MsaUJBQVosTUFBbUMsY0FBbkM7QUFDQSxPQUFPLEtBQUtDLHFCQUFaLE1BQXVDLGtCQUF2QztBQUNBLFNBQVNDLGNBQVQsUUFBK0IsdUJBQS9CO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQixNQUExQjs7QUFFQSxNQUFNQyxPQUljOzs7O0FBQUdELFNBQVMsQ0FBQ0wsUUFBRCxDQUpoQzs7QUFNQSxlQUFlTyxXQUFmLENBQThCQyxHQUE5QixFQUEyQ0MsT0FBM0MsRUFBd0U7RUFDdEUsTUFBTUMsUUFBUSxHQUFHLE1BQU1KLE9BQU8sQ0FBQ0UsR0FBRCxFQUFNO0lBQ2xDQyxPQURrQyxFQUFOLENBQTlCOztFQUdBO0VBQ0EsT0FBTyxNQUFNLFFBQU8seUJBQTBCQyxRQUFqQyxDQUFiO0FBQ0Q7O0FBRUQsZUFBZSxlQUFlQyxtQkFBZjtBQUNiQyxJQURhO0FBRWIsRUFBRUMsY0FBRixFQUFrQixHQUFHQyxPQUFyQixLQUEwRCxFQUY3QztBQUdVO0VBQ3ZCLE1BQU1MLE9BQU8sR0FBR1YsSUFBSSxDQUFDZ0IsT0FBTCxDQUFhSCxJQUFiLENBQWhCO0VBQ0EsTUFBTSxDQUFDSSxPQUFELEVBQVVDLEtBQVYsRUFBaUJDLFNBQWpCLElBQThCLE1BQU1DLE9BQU8sQ0FBQ0MsR0FBUixDQUFZO0VBQ3BEaEIsY0FBYyxDQUFDUSxJQUFELEVBQU9FLE9BQVAsQ0FEc0M7RUFFcERQLFdBQVcsQ0FBMkIsY0FBM0IsRUFBMkNFLE9BQTNDLENBQVgsQ0FBK0RZLEtBQS9EO0VBQ0UsTUFBTW5CLGlCQURSLENBRm9EOztFQUtwREssV0FBVztFQUNULGtCQURTO0VBRVRFLE9BRlMsQ0FBWDtFQUdFWSxLQUhGLENBR1EsTUFBTWxCLHFCQUhkLENBTG9ELENBQVosQ0FBMUM7O0VBVUEsTUFBTW1CLE1BQU0sR0FBRztFQUNiTixPQUFPLENBQUNPLFVBQVIsQ0FBbUJDLFVBQW5CO0VBQ0lSLE9BREo7RUFFSUEsT0FBTyxDQUFDUyxjQUFSLENBQXVCLEVBQUVELFVBQVUsRUFBRSxhQUFkLEVBQXZCLENBSFM7RUFJYkUsWUFKYSxDQUlBZCxJQUpBLENBQWY7RUFLQSxPQUFPLElBQUlYLFlBQUosQ0FBaUI7SUFDdEJxQixNQUFNLEVBQUVBLE1BRGM7SUFFdEJLLGFBQWEsRUFBRWIsT0FGTztJQUd0QkQsY0FIc0I7SUFJdEJLLFNBSnNCO0lBS3RCRCxLQUxzQixFQUFqQixDQUFQOztBQU9EIn0=