astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
349 lines (303 loc) • 9.42 kB
JavaScript
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault')
Object.defineProperty(exports, '__esModule', {
value: true,
})
exports['default'] = void 0
var _taggedTemplateLiteral2 = _interopRequireDefault(
require('@babel/runtime/helpers/taggedTemplateLiteral')
)
var _classCallCheck2 = _interopRequireDefault(
require('@babel/runtime/helpers/classCallCheck')
)
var _createClass2 = _interopRequireDefault(
require('@babel/runtime/helpers/createClass')
)
var _assertThisInitialized2 = _interopRequireDefault(
require('@babel/runtime/helpers/assertThisInitialized')
)
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 _defineProperty2 = _interopRequireDefault(
require('@babel/runtime/helpers/defineProperty')
)
var _CompilePathError = _interopRequireDefault(require('./CompilePathError'))
var _generator = _interopRequireDefault(require('@babel/generator'))
var _codeFrame = require('@babel/code-frame')
var _chalk = _interopRequireDefault(require('chalk'))
var _dedentJs = _interopRequireDefault(require('dedent-js'))
var _templateObject
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object)
enumerableOnly &&
(symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable
})),
keys.push.apply(keys, symbols)
}
return keys
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {}
i % 2
? ownKeys(Object(source), !0).forEach(function (key) {
;(0, _defineProperty2['default'])(target, key, source[key])
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
target,
Object.getOwnPropertyDescriptors(source)
)
: ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(
target,
key,
Object.getOwnPropertyDescriptor(source, key)
)
})
}
return target
}
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 formatSource(path) {
var _path3, _generate
while ((_path = path) !== null && _path !== void 0 && _path.parentPath) {
var _path, _path2
path =
(_path2 = path) === null || _path2 === void 0 ? void 0 : _path2.parentPath
}
var node =
(_path3 = path) === null || _path3 === void 0 ? void 0 : _path3.node
if (!node) return undefined
return (_generate = (0, _generator['default'])(node, {
retainLines: true,
})) === null || _generate === void 0
? void 0
: _generate.code
}
var CodeFrameError = /*#__PURE__*/ (function (_Error) {
;(0, _inherits2['default'])(CodeFrameError, _Error)
var _super = _createSuper(CodeFrameError)
function CodeFrameError(message, _ref) {
var _path$node
var _this
var filename = _ref.filename,
source = _ref.source,
path = _ref.path,
loc = _ref.loc
;(0, _classCallCheck2['default'])(this, CodeFrameError)
_this = _super.call(this, message)
;(0, _defineProperty2['default'])(
(0, _assertThisInitialized2['default'])(_this),
'filename',
void 0
)
;(0, _defineProperty2['default'])(
(0, _assertThisInitialized2['default'])(_this),
'source',
void 0
)
;(0, _defineProperty2['default'])(
(0, _assertThisInitialized2['default'])(_this),
'path',
void 0
)
;(0, _defineProperty2['default'])(
(0, _assertThisInitialized2['default'])(_this),
'loc',
void 0
)
_this.filename = filename
_this.path = path
_this.source =
source !== null && source !== void 0 ? source : formatSource(path)
if (
loc == null &&
path !== null &&
path !== void 0 &&
(_path$node = path.node) !== null &&
_path$node !== void 0 &&
_path$node.loc
) {
var _loc = (path === null || path === void 0 ? void 0 : path.node).loc,
start = _loc.start,
end = _loc.end
loc = {
start: {
line: start.line,
column: start.column,
},
end: {
line: end.line,
column: end.column,
},
}
}
_this.loc = loc
return _this
}
;(0, _createClass2['default'])(
CodeFrameError,
[
{
key: 'format',
value: function format(options) {
var red =
options.highlightCode || options.forceColor
? _chalk['default'].red
: function (s) {
return s
}
var loc = this.loc,
source = this.source,
stack = this.stack,
message = this.message,
filename = this.filename
if (!loc || !source)
return red(options.stack && stack ? stack : message)
var start = {
line: loc.start.line,
column: loc.start.column + 1,
}
var end = loc.end
? {
line: loc.end.line,
column: loc.end.column + 1,
}
: undefined
return (0, _dedentJs['default'])(
_templateObject ||
(_templateObject = (0, _taggedTemplateLiteral2['default'])([
'\n ',
'\n ',
'',
'\n ',
])),
red(
'Error in '
.concat(filename, ' (')
.concat(start.line, ':')
.concat(start.column, ')')
),
(0, _codeFrame.codeFrameColumns)(
source,
{
start: start,
end: end,
},
_objectSpread(
{
message: message,
},
options
)
),
options.stack && stack
? '\n' +
red(
stack === null || stack === void 0
? void 0
: stack.replace(/^.*?(\r\n?|\n)/, '')
)
: ''
)
},
},
],
[
{
key: 'rethrow',
value: function rethrow(error, _ref2) {
var filename = _ref2.filename,
source = _ref2.source
if (error instanceof CodeFrameError) {
if (filename) error.filename = filename
if (source) error.source = source
throw error
}
if (error instanceof _CompilePathError['default']) {
throw new CodeFrameError(error.message, {
filename: filename,
source: source,
path: error.path,
})
}
if (error instanceof SyntaxError) {
var _ref3 = error,
lineNumber = _ref3.lineNumber,
columnNumber = _ref3.columnNumber,
loc = _ref3.loc
throw new CodeFrameError(
error.message.replace(/\s*\(\d+:\d+\)$/, ''),
{
filename: filename,
source: source,
loc:
typeof (loc === null || loc === void 0
? void 0
: loc.line) === 'number' &&
typeof (loc === null || loc === void 0
? void 0
: loc.column) === 'number'
? {
start: loc,
}
: typeof lineNumber === 'number' &&
typeof columnNumber === 'number'
? {
start: {
line: lineNumber,
column: columnNumber,
},
}
: undefined,
}
)
}
throw error
},
},
]
)
return CodeFrameError
})(/*#__PURE__*/ (0, _wrapNativeSuper2['default'])(Error))
exports['default'] = CodeFrameError