UNPKG

astx

Version:

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

191 lines (146 loc) 6.02 kB
'use strict' var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault') Object.defineProperty(exports, '__esModule', { value: true, }) exports['default'] = compileReplacement var _defineProperty2 = _interopRequireDefault( require('@babel/runtime/helpers/defineProperty') ) var _debug2 = _interopRequireDefault(require('debug')) var _GenericNodeReplacement = _interopRequireDefault( require('./GenericNodeReplacement') ) var _GenericArrayReplacement = _interopRequireDefault( require('./GenericArrayReplacement') ) var _ClassImplements = _interopRequireDefault(require('./ClassImplements')) var _ClassProperty = _interopRequireDefault(require('./ClassProperty')) var _ExportNamedDeclaration = _interopRequireDefault( require('./ExportNamedDeclaration') ) var _ExportDefaultSpecifier = _interopRequireDefault( require('./ExportDefaultSpecifier') ) var _ExportSpecifier = _interopRequireDefault(require('./ExportSpecifier')) var _ExpressionStatement = _interopRequireDefault( require('./ExpressionStatement') ) var _FunctionTypeParam = _interopRequireDefault(require('./FunctionTypeParam')) var _GenericTypeAnnotation = _interopRequireDefault( require('./GenericTypeAnnotation') ) var _Identifier = _interopRequireDefault(require('./Identifier')) var _ImportDeclaration = _interopRequireDefault(require('./ImportDeclaration')) var _ImportDefaultSpecifier = _interopRequireDefault( require('./ImportDefaultSpecifier') ) var _ImportSpecifier = _interopRequireDefault(require('./ImportSpecifier')) var _JSXAttribute = _interopRequireDefault(require('./JSXAttribute')) var _JSXExpressionContainer = _interopRequireDefault( require('./JSXExpressionContainer') ) var _JSXIdentifier = _interopRequireDefault(require('./JSXIdentifier')) var _ObjectProperty = _interopRequireDefault(require('./ObjectProperty')) var _ObjectTypeProperty = _interopRequireDefault( require('./ObjectTypeProperty') ) var _Property = _interopRequireDefault(require('./Property')) var _SpreadElement = _interopRequireDefault(require('./SpreadElement')) var _StringLiteral = _interopRequireDefault(require('./StringLiteral')) var _TemplateLiteral = _interopRequireDefault(require('./TemplateLiteral')) var _TSExpressionWithTypeArguments = _interopRequireDefault( require('./TSExpressionWithTypeArguments') ) var _TSPropertySignature = _interopRequireDefault( require('./TSPropertySignature') ) var _TSTypeParameter = _interopRequireDefault(require('./TSTypeParameter')) var _TSTypeReference = _interopRequireDefault(require('./TSTypeReference')) var _TypeParameter = _interopRequireDefault(require('./TypeParameter')) var _VariableDeclarator = _interopRequireDefault( require('./VariableDeclarator') ) 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 } var _debug = (0, _debug2['default'])('astx:compileReplacement') var nodeCompilers = { ClassImplements: _ClassImplements['default'], ClassProperty: _ClassProperty['default'], ExportNamedDeclaration: _ExportNamedDeclaration['default'], ExportDefaultSpecifier: _ExportDefaultSpecifier['default'], ExportSpecifier: _ExportSpecifier['default'], ExpressionStatement: _ExpressionStatement['default'], FunctionTypeParam: _FunctionTypeParam['default'], GenericTypeAnnotation: _GenericTypeAnnotation['default'], Identifier: _Identifier['default'], ImportDeclaration: _ImportDeclaration['default'], ImportDefaultSpecifier: _ImportDefaultSpecifier['default'], ImportSpecifier: _ImportSpecifier['default'], JSXAttribute: _JSXAttribute['default'], JSXExpressionContainer: _JSXExpressionContainer['default'], JSXIdentifier: _JSXIdentifier['default'], ObjectProperty: _ObjectProperty['default'], ObjectTypeProperty: _ObjectTypeProperty['default'], Property: _Property['default'], SpreadElement: _SpreadElement['default'], StringLiteral: _StringLiteral['default'], TemplateLiteral: _TemplateLiteral['default'], TSExpressionWithTypeArguments: _TSExpressionWithTypeArguments['default'], TSPropertySignature: _TSPropertySignature['default'], TSTypeParameter: _TSTypeParameter['default'], TSTypeReference: _TSTypeReference['default'], TypeParameter: _TypeParameter['default'], VariableDeclarator: _VariableDeclarator['default'], } function compileReplacement(pattern, rootCompileReplacementOptions) { var _rootCompileReplaceme = rootCompileReplacementOptions.debug, debug = _rootCompileReplaceme === void 0 ? _debug : _rootCompileReplaceme var compileOptions = _objectSpread( _objectSpread({}, rootCompileReplacementOptions), {}, { debug: debug, } ) if (Array.isArray(pattern) || Array.isArray(pattern.value)) { return (0, _GenericArrayReplacement['default'])(pattern, compileOptions) } if (nodeCompilers[pattern.value.type]) { var replacement = nodeCompilers[pattern.value.type](pattern, compileOptions) if (replacement) return replacement } return (0, _GenericNodeReplacement['default'])(pattern, compileOptions) }