astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
89 lines (83 loc) • 8.83 kB
JavaScript
import runTransformOnFile from './runTransformOnFile.mjs'
import { clearCache } from 'babel-parse-wild-code'
import astxGlob from './astxGlob.mjs'
import { astxCosmiconfig } from './astxCosmiconfig.mjs'
export default async function* runTransform({
gitignore,
transform: _transform,
transformFile,
paths: _paths,
exclude,
fs,
cwd = process.cwd(),
config,
signal,
}) {
var _transform$finish
clearCache()
astxCosmiconfig.clearSearchCache()
const transform = transformFile ? await import(transformFile) : _transform
if (signal !== null && signal !== void 0 && signal.aborted) return
if (!transform) throw new Error(`transform or transformFile is required`)
let completed = 0,
total = 0,
globDone = false
const progress = () => ({
type: 'progress',
completed,
total,
globDone,
})
yield progress()
if (signal !== null && signal !== void 0 && signal.aborted) return
const paths =
_paths !== null && _paths !== void 0 && _paths.length ? _paths : [cwd]
for (const include of paths) {
for await (const file of astxGlob({
include,
exclude,
cwd,
gitignore,
fs,
})) {
if (signal !== null && signal !== void 0 && signal.aborted) return
total++
yield progress()
if (signal !== null && signal !== void 0 && signal.aborted) return
let transformed
try {
transformed = await runTransformOnFile({
file,
transform,
config,
signal,
fs,
})
completed++
yield progress()
} catch (error) {
if (
error.message === 'aborted' &&
signal !== null &&
signal !== void 0 &&
signal.aborted
)
return
throw error
}
if (signal !== null && signal !== void 0 && signal.aborted) return
yield {
type: 'result',
result: transformed,
}
}
}
if (signal !== null && signal !== void 0 && signal.aborted) return
globDone = true
yield progress()
if (signal !== null && signal !== void 0 && signal.aborted) return
await ((_transform$finish = transform.finish) === null ||
_transform$finish === void 0
? void 0
: _transform$finish.call(transform))
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJydW5UcmFuc2Zvcm1PbkZpbGUiLCJjbGVhckNhY2hlIiwiYXN0eEdsb2IiLCJhc3R4Q29zbWljb25maWciLCJydW5UcmFuc2Zvcm0iLCJnaXRpZ25vcmUiLCJ0cmFuc2Zvcm0iLCJfdHJhbnNmb3JtIiwidHJhbnNmb3JtRmlsZSIsInBhdGhzIiwiX3BhdGhzIiwiZXhjbHVkZSIsImZzIiwiY3dkIiwicHJvY2VzcyIsImNvbmZpZyIsInNpZ25hbCIsImNsZWFyU2VhcmNoQ2FjaGUiLCJhYm9ydGVkIiwiRXJyb3IiLCJjb21wbGV0ZWQiLCJ0b3RhbCIsImdsb2JEb25lIiwicHJvZ3Jlc3MiLCJ0eXBlIiwibGVuZ3RoIiwiaW5jbHVkZSIsImZpbGUiLCJ0cmFuc2Zvcm1lZCIsImVycm9yIiwibWVzc2FnZSIsInJlc3VsdCIsImZpbmlzaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL3J1blRyYW5zZm9ybS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVuVHJhbnNmb3JtT25GaWxlLCB7XG4gIEZzIGFzIFJ1blRyYW5zZm9ybU9uRmlsZUZzLFxufSBmcm9tICcuL3J1blRyYW5zZm9ybU9uRmlsZSdcbmltcG9ydCB7IGNsZWFyQ2FjaGUgfSBmcm9tICdiYWJlbC1wYXJzZS13aWxkLWNvZGUnXG5pbXBvcnQgeyBBc3R4Q29uZmlnIH0gZnJvbSAnLi4vQXN0eENvbmZpZydcbmltcG9ydCBhc3R4R2xvYiBmcm9tICcuL2FzdHhHbG9iJ1xuaW1wb3J0IHsgRnMgYXMgR2xvYkZzIH0gZnJvbSAnLi9nbG9iJ1xuaW1wb3J0IHsgYXN0eENvc21pY29uZmlnIH0gZnJvbSAnLi9hc3R4Q29zbWljb25maWcnXG5pbXBvcnQgeyBUcmFuc2Zvcm0sIFRyYW5zZm9ybVJlc3VsdCB9IGZyb20gJy4uL0FzdHgnXG5pbXBvcnQgR2l0aWdub3JlIGZyb20gJ2dpdGlnbm9yZS1mcydcblxudHlwZSBGcyA9IEdsb2JGcyAmIFJ1blRyYW5zZm9ybU9uRmlsZUZzXG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzID0ge1xuICB0eXBlOiAncHJvZ3Jlc3MnXG4gIGNvbXBsZXRlZDogbnVtYmVyXG4gIHRvdGFsOiBudW1iZXJcbiAgZ2xvYkRvbmU6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgUnVuVHJhbnNmb3JtT3B0aW9ucyA9IHtcbiAgZ2l0aWdub3JlPzogR2l0aWdub3JlIHwgbnVsbFxuICB0cmFuc2Zvcm0/OiBUcmFuc2Zvcm1cbiAgdHJhbnNmb3JtRmlsZT86IHN0cmluZ1xuICBwYXRocz86IHJlYWRvbmx5IHN0cmluZ1tdXG4gIGV4Y2x1ZGU/OiBzdHJpbmdcbiAgY3dkPzogc3RyaW5nXG4gIGNvbmZpZz86IFBhcnRpYWw8QXN0eENvbmZpZz5cbiAgc2lnbmFsPzogQWJvcnRTaWduYWxcbiAgZnM/OiBGc1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiogcnVuVHJhbnNmb3JtKHtcbiAgZ2l0aWdub3JlLFxuICB0cmFuc2Zvcm06IF90cmFuc2Zvcm0sXG4gIHRyYW5zZm9ybUZpbGUsXG4gIHBhdGhzOiBfcGF0aHMsXG4gIGV4Y2x1ZGUsXG4gIGZzLFxuICBjd2QgPSBwcm9jZXNzLmN3ZCgpLFxuICBjb25maWcsXG4gIHNpZ25hbCxcbn06IFJ1blRyYW5zZm9ybU9wdGlvbnMpOiBBc3luY0l0ZXJhYmxlPFxuICB7IHR5cGU6ICdyZXN1bHQnOyByZXN1bHQ6IFRyYW5zZm9ybVJlc3VsdCB9IHwgUHJvZ3Jlc3Ncbj4ge1xuICBjbGVhckNhY2hlKClcbiAgYXN0eENvc21pY29uZmlnLmNsZWFyU2VhcmNoQ2FjaGUoKVxuXG4gIGNvbnN0IHRyYW5zZm9ybSA9IHRyYW5zZm9ybUZpbGUgPyBhd2FpdCBpbXBvcnQodHJhbnNmb3JtRmlsZSkgOiBfdHJhbnNmb3JtXG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIHJldHVyblxuICBpZiAoIXRyYW5zZm9ybSkgdGhyb3cgbmV3IEVycm9yKGB0cmFuc2Zvcm0gb3IgdHJhbnNmb3JtRmlsZSBpcyByZXF1aXJlZGApXG5cbiAgbGV0IGNvbXBsZXRlZCA9IDAsXG4gICAgdG90YWwgPSAwLFxuICAgIGdsb2JEb25lID0gZmFsc2VcblxuICBjb25zdCBwcm9ncmVzcyA9ICgpOiBQcm9ncmVzcyA9PiAoe1xuICAgIHR5cGU6ICdwcm9ncmVzcycsXG4gICAgY29tcGxldGVkLFxuICAgIHRvdGFsLFxuICAgIGdsb2JEb25lLFxuICB9KVxuXG4gIHlpZWxkIHByb2dyZXNzKClcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgcmV0dXJuXG5cbiAgY29uc3QgcGF0aHMgPSBfcGF0aHM/Lmxlbmd0aCA/IF9wYXRocyA6IFtjd2RdXG4gIGZvciAoY29uc3QgaW5jbHVkZSBvZiBwYXRocykge1xuICAgIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBhc3R4R2xvYih7XG4gICAgICBpbmNsdWRlLFxuICAgICAgZXhjbHVkZSxcbiAgICAgIGN3ZCxcbiAgICAgIGdpdGlnbm9yZSxcbiAgICAgIGZzLFxuICAgIH0pKSB7XG4gICAgICBpZiAoc2lnbmFsPy5hYm9ydGVkKSByZXR1cm5cbiAgICAgIHRvdGFsKytcbiAgICAgIHlpZWxkIHByb2dyZXNzKClcbiAgICAgIGlmIChzaWduYWw/LmFib3J0ZWQpIHJldHVyblxuICAgICAgbGV0IHRyYW5zZm9ybWVkXG4gICAgICB0cnkge1xuICAgICAgICB0cmFuc2Zvcm1lZCA9IGF3YWl0IHJ1blRyYW5zZm9ybU9uRmlsZSh7XG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgICB0cmFuc2Zvcm0sXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHNpZ25hbCxcbiAgICAgICAgICBmcyxcbiAgICAgICAgfSlcbiAgICAgICAgY29tcGxldGVkKytcbiAgICAgICAgeWllbGQgcHJvZ3Jlc3MoKVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2Fib3J0ZWQnICYmIHNpZ25hbD8uYWJvcnRlZCkgcmV0dXJuXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgICBpZiAoc2lnbmFsPy5hYm9ydGVkKSByZXR1cm5cbiAgICAgIHlpZWxkIHsgdHlwZTogJ3Jlc3VsdCcsIHJlc3VsdDogdHJhbnNmb3JtZWQgfVxuICAgIH1cbiAgfVxuICBpZiAoc2lnbmFsPy5hYm9ydGVkKSByZXR1cm5cblxuICBnbG9iRG9uZSA9IHRydWVcbiAgeWllbGQgcHJvZ3Jlc3MoKVxuICBpZiAoc2lnbmFsPy5hYm9ydGVkKSByZXR1cm5cblxuICBhd2FpdCB0cmFuc2Zvcm0uZmluaXNoPy4oKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxrQkFBUDs7QUFFTyxzQkFGUDtBQUdBLFNBQVNDLFVBQVQsUUFBMkIsdUJBQTNCOztBQUVBLE9BQU9DLFFBQVAsTUFBcUIsWUFBckI7O0FBRUEsU0FBU0MsZUFBVCxRQUFnQyxtQkFBaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsZUFBZSxnQkFBZ0JDLFlBQWhCLENBQTZCO0VBQzFDQyxTQUQwQztFQUUxQ0MsU0FBUyxFQUFFQyxVQUYrQjtFQUcxQ0MsYUFIMEM7RUFJMUNDLEtBQUssRUFBRUMsTUFKbUM7RUFLMUNDLE9BTDBDO0VBTTFDQyxFQU4wQztFQU8xQ0MsR0FBRyxHQUFHQyxPQUFPLENBQUNELEdBQVIsRUFQb0M7RUFRMUNFLE1BUjBDO0VBUzFDQyxNQVQwQyxFQUE3Qjs7O0FBWWI7RUFDQWYsVUFBVTtFQUNWRSxlQUFlLENBQUNjLGdCQUFoQjs7RUFFQSxNQUFNWCxTQUFTLEdBQUdFLGFBQWEsR0FBRyxNQUFNLE9BQU9BLGFBQVAsQ0FBVCxHQUFpQ0QsVUFBaEU7RUFDQSxJQUFJUyxNQUFKLGFBQUlBLE1BQUosZUFBSUEsTUFBTSxDQUFFRSxPQUFaLEVBQXFCO0VBQ3JCLElBQUksQ0FBQ1osU0FBTCxFQUFnQixNQUFNLElBQUlhLEtBQUosQ0FBVyx3Q0FBWCxDQUFOOztFQUVoQixJQUFJQyxTQUFTLEdBQUcsQ0FBaEI7RUFDRUMsS0FBSyxHQUFHLENBRFY7RUFFRUMsUUFBUSxHQUFHLEtBRmI7O0VBSUEsTUFBTUMsUUFBUSxHQUFHLE9BQWlCO0lBQ2hDQyxJQUFJLEVBQUUsVUFEMEI7SUFFaENKLFNBRmdDO0lBR2hDQyxLQUhnQztJQUloQ0MsUUFKZ0MsRUFBakIsQ0FBakI7OztFQU9BLE1BQU1DLFFBQVEsRUFBZDtFQUNBLElBQUlQLE1BQUosYUFBSUEsTUFBSixlQUFJQSxNQUFNLENBQUVFLE9BQVosRUFBcUI7O0VBRXJCLE1BQU1ULEtBQUssR0FBR0MsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixJQUFBQSxNQUFNLENBQUVlLE1BQVIsR0FBaUJmLE1BQWpCLEdBQTBCLENBQUNHLEdBQUQsQ0FBeEM7RUFDQSxLQUFLLE1BQU1hLE9BQVgsSUFBc0JqQixLQUF0QixFQUE2QjtJQUMzQixXQUFXLE1BQU1rQixJQUFqQixJQUF5QnpCLFFBQVEsQ0FBQztNQUNoQ3dCLE9BRGdDO01BRWhDZixPQUZnQztNQUdoQ0UsR0FIZ0M7TUFJaENSLFNBSmdDO01BS2hDTyxFQUxnQyxFQUFELENBQWpDO0lBTUk7TUFDRixJQUFJSSxNQUFKLGFBQUlBLE1BQUosZUFBSUEsTUFBTSxDQUFFRSxPQUFaLEVBQXFCO01BQ3JCRyxLQUFLO01BQ0wsTUFBTUUsUUFBUSxFQUFkO01BQ0EsSUFBSVAsTUFBSixhQUFJQSxNQUFKLGVBQUlBLE1BQU0sQ0FBRUUsT0FBWixFQUFxQjtNQUNyQixJQUFJVSxXQUFKO01BQ0EsSUFBSTtRQUNGQSxXQUFXLEdBQUcsTUFBTTVCLGtCQUFrQixDQUFDO1VBQ3JDMkIsSUFEcUM7VUFFckNyQixTQUZxQztVQUdyQ1MsTUFIcUM7VUFJckNDLE1BSnFDO1VBS3JDSixFQUxxQyxFQUFELENBQXRDOztRQU9BUSxTQUFTO1FBQ1QsTUFBTUcsUUFBUSxFQUFkO01BQ0QsQ0FWRCxDQVVFLE9BQU9NLEtBQVAsRUFBbUI7UUFDbkIsSUFBSUEsS0FBSyxDQUFDQyxPQUFOLEtBQWtCLFNBQWxCLElBQStCZCxNQUEvQixhQUErQkEsTUFBL0IsZUFBK0JBLE1BQU0sQ0FBRUUsT0FBM0MsRUFBb0Q7UUFDcEQsTUFBTVcsS0FBTjtNQUNEO01BQ0QsSUFBSWIsTUFBSixhQUFJQSxNQUFKLGVBQUlBLE1BQU0sQ0FBRUUsT0FBWixFQUFxQjtNQUNyQixNQUFNLEVBQUVNLElBQUksRUFBRSxRQUFSLEVBQWtCTyxNQUFNLEVBQUVILFdBQTFCLEVBQU47SUFDRDtFQUNGO0VBQ0QsSUFBSVosTUFBSixhQUFJQSxNQUFKLGVBQUlBLE1BQU0sQ0FBRUUsT0FBWixFQUFxQjs7RUFFckJJLFFBQVEsR0FBRyxJQUFYO0VBQ0EsTUFBTUMsUUFBUSxFQUFkO0VBQ0EsSUFBSVAsTUFBSixhQUFJQSxNQUFKLGVBQUlBLE1BQU0sQ0FBRUUsT0FBWixFQUFxQjs7RUFFckIsNEJBQU1aLFNBQVMsQ0FBQzBCLE1BQWhCLHNEQUFNLHVCQUFBMUIsU0FBUyxDQUFmO0FBQ0QifQ==