UNPKG

astx

Version:

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

810 lines (679 loc) 24.8 kB
'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