astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
599 lines (495 loc) • 15.7 kB
JavaScript
'use strict'
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault')
Object.defineProperty(exports, '__esModule', {
value: true,
})
exports['default'] = runTransform
var _regenerator = _interopRequireDefault(require('@babel/runtime/regenerator'))
var _typeof2 = _interopRequireDefault(require('@babel/runtime/helpers/typeof'))
var _awaitAsyncGenerator2 = _interopRequireDefault(
require('@babel/runtime/helpers/awaitAsyncGenerator')
)
var _wrapAsyncGenerator2 = _interopRequireDefault(
require('@babel/runtime/helpers/wrapAsyncGenerator')
)
var _runTransformOnFile = _interopRequireDefault(
require('./runTransformOnFile')
)
var _babelParseWildCode = require('babel-parse-wild-code')
var _astxGlob = _interopRequireDefault(require('./astxGlob'))
var _astxCosmiconfig = require('./astxCosmiconfig')
function _createForOfIteratorHelper(o, allowArrayLike) {
var it =
(typeof Symbol !== 'undefined' && o[Symbol.iterator]) || o['@@iterator']
if (!it) {
if (
Array.isArray(o) ||
(it = _unsupportedIterableToArray(o)) ||
(allowArrayLike && o && typeof o.length === 'number')
) {
if (it) o = it
var i = 0
var F = function F() {}
return {
s: F,
n: function n() {
if (i >= o.length)
return {
done: true,
}
return {
done: false,
value: o[i++],
}
},
e: function e(_e) {
throw _e
},
f: F,
}
}
throw new TypeError(
'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
)
}
var normalCompletion = true,
didErr = false,
err
return {
s: function s() {
it = it.call(o)
},
n: function n() {
var step = it.next()
normalCompletion = step.done
return step
},
e: function e(_e2) {
didErr = true
err = _e2
},
f: function f() {
try {
if (!normalCompletion && it['return'] != null) it['return']()
} finally {
if (didErr) throw err
}
},
}
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return
if (typeof o === 'string') return _arrayLikeToArray(o, minLen)
var n = Object.prototype.toString.call(o).slice(8, -1)
if (n === 'Object' && o.constructor) n = o.constructor.name
if (n === 'Map' || n === 'Set') return Array.from(o)
if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
return _arrayLikeToArray(o, minLen)
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i]
}
return arr2
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== 'function') return null
var cacheBabelInterop = new WeakMap()
var cacheNodeInterop = new WeakMap()
return (_getRequireWildcardCache = function _getRequireWildcardCache(
nodeInterop
) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop
})(nodeInterop)
}
function _interopRequireWildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj
}
if (
obj === null ||
((0, _typeof2['default'])(obj) !== 'object' && typeof obj !== 'function')
) {
return {
default: obj,
}
}
var cache = _getRequireWildcardCache(nodeInterop)
if (cache && cache.has(obj)) {
return cache.get(obj)
}
var newObj = {}
var hasPropertyDescriptor =
Object.defineProperty && Object.getOwnPropertyDescriptor
for (var key in obj) {
if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor
? Object.getOwnPropertyDescriptor(obj, key)
: null
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc)
} else {
newObj[key] = obj[key]
}
}
}
newObj['default'] = obj
if (cache) {
cache.set(obj, newObj)
}
return newObj
}
function _asyncIterator(iterable) {
var method,
async,
sync,
retry = 2
for (
'undefined' != typeof Symbol &&
((async = Symbol.asyncIterator), (sync = Symbol.iterator));
retry--;
) {
if (async && null != (method = iterable[async]))
return method.call(iterable)
if (sync && null != (method = iterable[sync]))
return new AsyncFromSyncIterator(method.call(iterable))
;(async = '@@asyncIterator'), (sync = '@@iterator')
}
throw new TypeError('Object is not async iterable')
}
function AsyncFromSyncIterator(s) {
function AsyncFromSyncIteratorContinuation(r) {
if (Object(r) !== r)
return Promise.reject(new TypeError(r + ' is not an object.'))
var done = r.done
return Promise.resolve(r.value).then(function (value) {
return {
value: value,
done: done,
}
})
}
return (
(AsyncFromSyncIterator = function AsyncFromSyncIterator(s) {
;(this.s = s), (this.n = s.next)
}),
(AsyncFromSyncIterator.prototype = {
s: null,
n: null,
next: function next() {
return AsyncFromSyncIteratorContinuation(
this.n.apply(this.s, arguments)
)
},
return: function _return(value) {
var ret = this.s['return']
return void 0 === ret
? Promise.resolve({
value: value,
done: !0,
})
: AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments))
},
throw: function _throw(value) {
var thr = this.s['return']
return void 0 === thr
? Promise.reject(value)
: AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments))
},
}),
new AsyncFromSyncIterator(s)
)
}
function runTransform(_x) {
return _runTransform.apply(this, arguments)
}
function _runTransform() {
_runTransform = (0, _wrapAsyncGenerator2['default'])(
/*#__PURE__*/ _regenerator['default'].mark(function _callee(_ref) {
var _transform$finish
var gitignore,
_transform,
transformFile,
_paths,
exclude,
fs,
_ref$cwd,
cwd,
config,
signal,
transform,
completed,
total,
globDone,
progress,
paths,
_iterator2,
_step2,
include,
_iteratorAbruptCompletion,
_didIteratorError,
_iteratorError,
_iterator,
_step,
file,
transformed
return _regenerator['default'].wrap(
function _callee$(_context) {
while (1) {
switch ((_context.prev = _context.next)) {
case 0:
;(gitignore = _ref.gitignore),
(_transform = _ref.transform),
(transformFile = _ref.transformFile),
(_paths = _ref.paths),
(exclude = _ref.exclude),
(fs = _ref.fs),
(_ref$cwd = _ref.cwd),
(cwd = _ref$cwd === void 0 ? process.cwd() : _ref$cwd),
(config = _ref.config),
(signal = _ref.signal)
;(0, _babelParseWildCode.clearCache)()
_astxCosmiconfig.astxCosmiconfig.clearSearchCache()
if (!transformFile) {
_context.next = 9
break
}
_context.next = 6
return (0, _awaitAsyncGenerator2['default'])(
Promise.resolve(''.concat(transformFile)).then(function (s) {
return _interopRequireWildcard(require(s))
})
)
case 6:
_context.t0 = _context.sent
_context.next = 10
break
case 9:
_context.t0 = _transform
case 10:
transform = _context.t0
if (!(signal !== null && signal !== void 0 && signal.aborted)) {
_context.next = 13
break
}
return _context.abrupt('return')
case 13:
if (transform) {
_context.next = 15
break
}
throw new Error('transform or transformFile is required')
case 15:
;(completed = 0), (total = 0), (globDone = false)
progress = function progress() {
return {
type: 'progress',
completed: completed,
total: total,
globDone: globDone,
}
}
_context.next = 19
return progress()
case 19:
if (!(signal !== null && signal !== void 0 && signal.aborted)) {
_context.next = 21
break
}
return _context.abrupt('return')
case 21:
paths =
_paths !== null && _paths !== void 0 && _paths.length
? _paths
: [cwd]
_iterator2 = _createForOfIteratorHelper(paths)
_context.prev = 23
_iterator2.s()
case 25:
if ((_step2 = _iterator2.n()).done) {
_context.next = 82
break
}
include = _step2.value
_iteratorAbruptCompletion = false
_didIteratorError = false
_context.prev = 29
_iterator = _asyncIterator(
(0, _astxGlob['default'])({
include: include,
exclude: exclude,
cwd: cwd,
gitignore: gitignore,
fs: fs,
})
)
case 31:
_context.next = 33
return (0, _awaitAsyncGenerator2['default'])(_iterator.next())
case 33:
if (
!(_iteratorAbruptCompletion = !(_step = _context.sent).done)
) {
_context.next = 64
break
}
file = _step.value
if (!(signal !== null && signal !== void 0 && signal.aborted)) {
_context.next = 37
break
}
return _context.abrupt('return')
case 37:
total++
_context.next = 40
return progress()
case 40:
if (!(signal !== null && signal !== void 0 && signal.aborted)) {
_context.next = 42
break
}
return _context.abrupt('return')
case 42:
transformed = void 0
_context.prev = 43
_context.next = 46
return (0, _awaitAsyncGenerator2['default'])(
(0, _runTransformOnFile['default'])({
file: file,
transform: transform,
config: config,
signal: signal,
fs: fs,
})
)
case 46:
transformed = _context.sent
completed++
_context.next = 50
return progress()
case 50:
_context.next = 57
break
case 52:
_context.prev = 52
_context.t1 = _context['catch'](43)
if (
!(
_context.t1.message === 'aborted' &&
signal !== null &&
signal !== void 0 &&
signal.aborted
)
) {
_context.next = 56
break
}
return _context.abrupt('return')
case 56:
throw _context.t1
case 57:
if (!(signal !== null && signal !== void 0 && signal.aborted)) {
_context.next = 59
break
}
return _context.abrupt('return')
case 59:
_context.next = 61
return {
type: 'result',
result: transformed,
}
case 61:
_iteratorAbruptCompletion = false
_context.next = 31
break
case 64:
_context.next = 70
break
case 66:
_context.prev = 66
_context.t2 = _context['catch'](29)
_didIteratorError = true
_iteratorError = _context.t2
case 70:
_context.prev = 70
_context.prev = 71
if (
!(_iteratorAbruptCompletion && _iterator['return'] != null)
) {
_context.next = 75
break
}
_context.next = 75
return (0, _awaitAsyncGenerator2['default'])(
_iterator['return']()
)
case 75:
_context.prev = 75
if (!_didIteratorError) {
_context.next = 78
break
}
throw _iteratorError
case 78:
return _context.finish(75)
case 79:
return _context.finish(70)
case 80:
_context.next = 25
break
case 82:
_context.next = 87
break
case 84:
_context.prev = 84
_context.t3 = _context['catch'](23)
_iterator2.e(_context.t3)
case 87:
_context.prev = 87
_iterator2.f()
return _context.finish(87)
case 90:
if (!(signal !== null && signal !== void 0 && signal.aborted)) {
_context.next = 92
break
}
return _context.abrupt('return')
case 92:
globDone = true
_context.next = 95
return progress()
case 95:
if (!(signal !== null && signal !== void 0 && signal.aborted)) {
_context.next = 97
break
}
return _context.abrupt('return')
case 97:
_context.next = 99
return (0, _awaitAsyncGenerator2['default'])(
(_transform$finish = transform.finish) === null ||
_transform$finish === void 0
? void 0
: _transform$finish.call(transform)
)
case 99:
case 'end':
return _context.stop()
}
}
},
_callee,
null,
[
[23, 84, 87, 90],
[29, 66, 70, 80],
[43, 52],
[71, , 75, 79],
]
)
})
)
return _runTransform.apply(this, arguments)
}