astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
810 lines (679 loc) • 24.8 kB
JavaScript
'use strict'
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault')
Object.defineProperty(exports, '__esModule', {
value: true,
})
exports['default'] = void 0
var _regenerator = _interopRequireDefault(require('@babel/runtime/regenerator'))
var _asyncToGenerator2 = _interopRequireDefault(
require('@babel/runtime/helpers/asyncToGenerator')
)
var _defineProperty2 = _interopRequireDefault(
require('@babel/runtime/helpers/defineProperty')
)
var _createClass2 = _interopRequireDefault(
require('@babel/runtime/helpers/createClass')
)
var _classCallCheck2 = _interopRequireDefault(
require('@babel/runtime/helpers/classCallCheck')
)
var _inherits2 = _interopRequireDefault(
require('@babel/runtime/helpers/inherits')
)
var _possibleConstructorReturn2 = _interopRequireDefault(
require('@babel/runtime/helpers/possibleConstructorReturn')
)
var _getPrototypeOf2 = _interopRequireDefault(
require('@babel/runtime/helpers/getPrototypeOf')
)
var _wrapNativeSuper2 = _interopRequireDefault(
require('@babel/runtime/helpers/wrapNativeSuper')
)
var _babelParseWildCode = require('babel-parse-wild-code')
var _lodash = require('lodash')
var _os = require('os')
var _astxGlob = _interopRequireDefault(require('./astxGlob'))
var _AstxWorker = _interopRequireDefault(require('./AstxWorker'))
var _AsyncPool = _interopRequireDefault(require('./AsyncPool'))
var _astxCosmiconfig = require('./astxCosmiconfig')
var _PushPullIterable = _interopRequireDefault(
require('../util/PushPullIterable')
)
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 _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct()
return function _createSuperInternal() {
var Super = (0, _getPrototypeOf2['default'])(Derived),
result
if (hasNativeReflectConstruct) {
var NewTarget = (0, _getPrototypeOf2['default'])(this).constructor
result = Reflect.construct(Super, arguments, NewTarget)
} else {
result = Super.apply(this, arguments)
}
return (0, _possibleConstructorReturn2['default'])(this, result)
}
}
function _isNativeReflectConstruct() {
if (typeof Reflect === 'undefined' || !Reflect.construct) return false
if (Reflect.construct.sham) return false
if (typeof Proxy === 'function') return true
try {
Boolean.prototype.valueOf.call(
Reflect.construct(Boolean, [], function () {})
)
return true
} catch (e) {
return false
}
}
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)
)
}
var AbortedError = /*#__PURE__*/ (function (_Error) {
;(0, _inherits2['default'])(AbortedError, _Error)
var _super = _createSuper(AbortedError)
function AbortedError() {
;(0, _classCallCheck2['default'])(this, AbortedError)
return _super.apply(this, arguments)
}
return (0, _createClass2['default'])(AbortedError)
})(/*#__PURE__*/ (0, _wrapNativeSuper2['default'])(Error))
var AstxWorkerPool = /*#__PURE__*/ (function () {
function AstxWorkerPool() {
var _ref =
arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$capacity = _ref.capacity,
capacity =
_ref$capacity === void 0 ? (0, _os.cpus)().length : _ref$capacity
;(0, _classCallCheck2['default'])(this, AstxWorkerPool)
;(0, _defineProperty2['default'])(this, 'pool', void 0)
this.pool = new _AsyncPool['default'](
(0, _lodash.range)(capacity).map(function () {
return new _AstxWorker['default']()
})
)
}
;(0, _createClass2['default'])(AstxWorkerPool, [
{
key: 'end',
value: (function () {
var _end = (0, _asyncToGenerator2['default'])(
/*#__PURE__*/ _regenerator['default'].mark(function _callee() {
return _regenerator['default'].wrap(
function _callee$(_context) {
while (1) {
switch ((_context.prev = _context.next)) {
case 0:
_context.next = 2
return Promise.all(
this.pool.elements.map(function (e) {
return e.end()
})
)
case 2:
case 'end':
return _context.stop()
}
}
},
_callee,
this
)
})
)
function end() {
return _end.apply(this, arguments)
}
return end
})(),
},
{
key: 'runTransformOnFile',
value: function runTransformOnFile(options) {
return this.pool.run(function (worker) {
return worker.runTransformOnFile(options)
})
},
},
{
key: 'runTransform',
value: function runTransform(_ref2) {
var _this = this
var gitignore = _ref2.gitignore,
transform = _ref2.transform,
transformFile = _ref2.transformFile,
paths = _ref2.paths,
exclude = _ref2.exclude,
fs = _ref2.fs,
_ref2$cwd = _ref2.cwd,
cwd = _ref2$cwd === void 0 ? process.cwd() : _ref2$cwd,
config = _ref2.config,
signal = _ref2.signal,
queueCapacity = _ref2.queueCapacity
;(0, _babelParseWildCode.clearCache)()
_astxCosmiconfig.astxCosmiconfig.clearSearchCache()
var events = new _PushPullIterable['default'](queueCapacity || 1000)
function emit(_x) {
return _emit.apply(this, arguments)
}
function _emit() {
_emit = (0, _asyncToGenerator2['default'])(
/*#__PURE__*/ _regenerator['default'].mark(function _callee4(
event
) {
return _regenerator['default'].wrap(function _callee4$(
_context4
) {
while (1) {
switch ((_context4.prev = _context4.next)) {
case 0:
_context4.next = 2
return events.push(event)
case 2:
_context4.t0 = !_context4.sent
if (_context4.t0) {
_context4.next = 5
break
}
_context4.t0 =
signal !== null && signal !== void 0 && signal.aborted
case 5:
if (!_context4.t0) {
_context4.next = 7
break
}
throw new AbortedError()
case 7:
case 'end':
return _context4.stop()
}
}
},
_callee4)
})
)
return _emit.apply(this, arguments)
}
var completed = 0,
total = 0,
globDone = false
var progress = function progress() {
return {
type: 'progress',
completed: completed,
total: total,
globDone: globDone,
}
}
function checkDone() {
return _checkDone.apply(this, arguments)
}
function _checkDone() {
_checkDone = (0, _asyncToGenerator2['default'])(
/*#__PURE__*/ _regenerator['default'].mark(function _callee5() {
var _transform$finish
return _regenerator['default'].wrap(function _callee5$(
_context5
) {
while (1) {
switch ((_context5.prev = _context5.next)) {
case 0:
if (!(globDone && completed === total)) {
_context5.next = 4
break
}
_context5.next = 3
return transform === null || transform === void 0
? void 0
: (_transform$finish = transform.finish) === null ||
_transform$finish === void 0
? void 0
: _transform$finish.call(transform)
case 3:
events['return']()
case 4:
case 'end':
return _context5.stop()
}
}
},
_callee5)
})
)
return _checkDone.apply(this, arguments)
}
;(0, _asyncToGenerator2['default'])(
/*#__PURE__*/ _regenerator['default'].mark(function _callee3() {
var _iterator2,
_step2,
include,
_iteratorAbruptCompletion,
_didIteratorError,
_iteratorError,
_iterator,
_step,
file
return _regenerator['default'].wrap(
function _callee3$(_context3) {
while (1) {
switch ((_context3.prev = _context3.next)) {
case 0:
_context3.prev = 0
_context3.next = 3
return emit(progress())
case 3:
_iterator2 = _createForOfIteratorHelper(
paths !== null && paths !== void 0 && paths.length
? paths
: [cwd]
)
_context3.prev = 4
_iterator2.s()
case 6:
if ((_step2 = _iterator2.n()).done) {
_context3.next = 58
break
}
include = _step2.value
_iteratorAbruptCompletion = false
_didIteratorError = false
_context3.prev = 10
_iterator = _asyncIterator(
(0, _astxGlob['default'])({
include: include,
exclude: exclude,
cwd: cwd,
gitignore: gitignore,
fs: fs,
})
)
case 12:
_context3.next = 14
return _iterator.next()
case 14:
if (
!(_iteratorAbruptCompletion = !(_step = _context3.sent)
.done)
) {
_context3.next = 40
break
}
file = _step.value
if (
!(
signal !== null &&
signal !== void 0 &&
signal.aborted
)
) {
_context3.next = 18
break
}
return _context3.abrupt('return')
case 18:
total++
_context3.next = 21
return emit(progress())
case 21:
_context3.t0 = _this
_context3.t1 = file
if (!fs) {
_context3.next = 29
break
}
_context3.next = 26
return fs.readFile(file, 'utf8')
case 26:
_context3.t2 = _context3.sent
_context3.next = 30
break
case 29:
_context3.t2 = undefined
case 30:
_context3.t3 = _context3.t2
_context3.t4 = transform
_context3.t5 = transformFile
_context3.t6 = config
_context3.t7 = signal
_context3.t8 = {
file: _context3.t1,
source: _context3.t3,
transform: _context3.t4,
transformFile: _context3.t5,
config: _context3.t6,
signal: _context3.t7,
}
_context3.t0.runTransformOnFile
.call(_context3.t0, _context3.t8)
.then(
/*#__PURE__*/ (function () {
var _ref4 = (0, _asyncToGenerator2['default'])(
/*#__PURE__*/ _regenerator['default'].mark(
function _callee2(result) {
return _regenerator['default'].wrap(
function _callee2$(_context2) {
while (1) {
switch (
(_context2.prev = _context2.next)
) {
case 0:
if (
!(
signal !== null &&
signal !== void 0 &&
signal.aborted
)
) {
_context2.next = 2
break
}
return _context2.abrupt('return')
case 2:
completed++
_context2.next = 5
return emit({
type: 'result',
result: result,
})
case 5:
if (
!(
signal !== null &&
signal !== void 0 &&
signal.aborted
)
) {
_context2.next = 7
break
}
return _context2.abrupt('return')
case 7:
_context2.next = 9
return emit(progress())
case 9:
if (
!(
signal !== null &&
signal !== void 0 &&
signal.aborted
)
) {
_context2.next = 11
break
}
return _context2.abrupt('return')
case 11:
_context2.next = 13
return checkDone()
case 13:
case 'end':
return _context2.stop()
}
}
},
_callee2
)
}
)
)
return function (_x2) {
return _ref4.apply(this, arguments)
}
})()
)
['catch'](function (error) {
if (error instanceof AbortedError) return
events['throw'](error)
})
case 37:
_iteratorAbruptCompletion = false
_context3.next = 12
break
case 40:
_context3.next = 46
break
case 42:
_context3.prev = 42
_context3.t9 = _context3['catch'](10)
_didIteratorError = true
_iteratorError = _context3.t9
case 46:
_context3.prev = 46
_context3.prev = 47
if (
!(
_iteratorAbruptCompletion &&
_iterator['return'] != null
)
) {
_context3.next = 51
break
}
_context3.next = 51
return _iterator['return']()
case 51:
_context3.prev = 51
if (!_didIteratorError) {
_context3.next = 54
break
}
throw _iteratorError
case 54:
return _context3.finish(51)
case 55:
return _context3.finish(46)
case 56:
_context3.next = 6
break
case 58:
_context3.next = 63
break
case 60:
_context3.prev = 60
_context3.t10 = _context3['catch'](4)
_iterator2.e(_context3.t10)
case 63:
_context3.prev = 63
_iterator2.f()
return _context3.finish(63)
case 66:
if (
!(
signal !== null &&
signal !== void 0 &&
signal.aborted
)
) {
_context3.next = 68
break
}
return _context3.abrupt('return')
case 68:
globDone = true
_context3.next = 71
return emit(progress())
case 71:
if (
!(
signal !== null &&
signal !== void 0 &&
signal.aborted
)
) {
_context3.next = 73
break
}
return _context3.abrupt('return')
case 73:
_context3.next = 75
return checkDone()
case 75:
_context3.next = 82
break
case 77:
_context3.prev = 77
_context3.t11 = _context3['catch'](0)
if (!(_context3.t11 instanceof AbortedError)) {
_context3.next = 81
break
}
return _context3.abrupt('return')
case 81:
events['throw'](_context3.t11)
case 82:
case 'end':
return _context3.stop()
}
}
},
_callee3,
null,
[
[0, 77],
[4, 60, 63, 66],
[10, 42, 46, 56],
[47, , 51, 55],
]
)
})
)()
return events
},
},
])
return AstxWorkerPool
})()
exports['default'] = AstxWorkerPool