UNPKG

astx

Version:

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

83 lines (78 loc) 11.5 kB
import __debug from 'debug' import compileGenericNodeReplacement from './GenericNodeReplacement.mjs' import compileGenericArrayReplacement from './GenericArrayReplacement.mjs' import ClassImplements from './ClassImplements.mjs' import ClassProperty from './ClassProperty.mjs' import ExportNamedDeclaration from './ExportNamedDeclaration.mjs' import ExportDefaultSpecifier from './ExportDefaultSpecifier.mjs' import ExportSpecifier from './ExportSpecifier.mjs' import ExpressionStatement from './ExpressionStatement.mjs' import FunctionTypeParam from './FunctionTypeParam.mjs' import GenericTypeAnnotation from './GenericTypeAnnotation.mjs' import Identifier from './Identifier.mjs' import ImportDeclaration from './ImportDeclaration.mjs' import ImportDefaultSpecifier from './ImportDefaultSpecifier.mjs' import ImportSpecifier from './ImportSpecifier.mjs' import JSXAttribute from './JSXAttribute.mjs' import JSXExpressionContainer from './JSXExpressionContainer.mjs' import JSXIdentifier from './JSXIdentifier.mjs' import ObjectProperty from './ObjectProperty.mjs' import ObjectTypeProperty from './ObjectTypeProperty.mjs' import Property from './Property.mjs' import SpreadElement from './SpreadElement.mjs' import StringLiteral from './StringLiteral.mjs' import TemplateLiteral from './TemplateLiteral.mjs' import TSExpressionWithTypeArguments from './TSExpressionWithTypeArguments.mjs' import TSPropertySignature from './TSPropertySignature.mjs' import TSTypeParameter from './TSTypeParameter.mjs' import TSTypeReference from './TSTypeReference.mjs' import TypeParameter from './TypeParameter.mjs' import VariableDeclarator from './VariableDeclarator.mjs' const _debug = __debug('astx:compileReplacement') const nodeCompilers = { ClassImplements, ClassProperty, ExportNamedDeclaration, ExportDefaultSpecifier, ExportSpecifier, ExpressionStatement, FunctionTypeParam, GenericTypeAnnotation, Identifier, ImportDeclaration, ImportDefaultSpecifier, ImportSpecifier, JSXAttribute, JSXExpressionContainer, JSXIdentifier, ObjectProperty, ObjectTypeProperty, Property, SpreadElement, StringLiteral, TemplateLiteral, TSExpressionWithTypeArguments, TSPropertySignature, TSTypeParameter, TSTypeReference, TypeParameter, VariableDeclarator, } export default function compileReplacement( pattern, rootCompileReplacementOptions ) { const { debug = _debug } = rootCompileReplacementOptions const compileOptions = { ...rootCompileReplacementOptions, debug } if (Array.isArray(pattern) || Array.isArray(pattern.value)) { return compileGenericArrayReplacement(pattern, compileOptions) } if (nodeCompilers[pattern.value.type]) { const replacement = nodeCompilers[pattern.value.type]( pattern, compileOptions ) if (replacement) return replacement } return compileGenericNodeReplacement(pattern, compileOptions) } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfX2RlYnVnIiwiY29tcGlsZUdlbmVyaWNOb2RlUmVwbGFjZW1lbnQiLCJjb21waWxlR2VuZXJpY0FycmF5UmVwbGFjZW1lbnQiLCJDbGFzc0ltcGxlbWVudHMiLCJDbGFzc1Byb3BlcnR5IiwiRXhwb3J0TmFtZWREZWNsYXJhdGlvbiIsIkV4cG9ydERlZmF1bHRTcGVjaWZpZXIiLCJFeHBvcnRTcGVjaWZpZXIiLCJFeHByZXNzaW9uU3RhdGVtZW50IiwiRnVuY3Rpb25UeXBlUGFyYW0iLCJHZW5lcmljVHlwZUFubm90YXRpb24iLCJJZGVudGlmaWVyIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJJbXBvcnREZWZhdWx0U3BlY2lmaWVyIiwiSW1wb3J0U3BlY2lmaWVyIiwiSlNYQXR0cmlidXRlIiwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lciIsIkpTWElkZW50aWZpZXIiLCJPYmplY3RQcm9wZXJ0eSIsIk9iamVjdFR5cGVQcm9wZXJ0eSIsIlByb3BlcnR5IiwiU3ByZWFkRWxlbWVudCIsIlN0cmluZ0xpdGVyYWwiLCJUZW1wbGF0ZUxpdGVyYWwiLCJUU0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cyIsIlRTUHJvcGVydHlTaWduYXR1cmUiLCJUU1R5cGVQYXJhbWV0ZXIiLCJUU1R5cGVSZWZlcmVuY2UiLCJUeXBlUGFyYW1ldGVyIiwiVmFyaWFibGVEZWNsYXJhdG9yIiwiX2RlYnVnIiwibm9kZUNvbXBpbGVycyIsImNvbXBpbGVSZXBsYWNlbWVudCIsInBhdHRlcm4iLCJyb290Q29tcGlsZVJlcGxhY2VtZW50T3B0aW9ucyIsImRlYnVnIiwiY29tcGlsZU9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWx1ZSIsInR5cGUiLCJyZXBsYWNlbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlUmVwbGFjZW1lbnQvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZSwgTm9kZVBhdGgsIERlYnVnZ2VyIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgX19kZWJ1ZyBmcm9tICdkZWJ1ZydcbmltcG9ydCBjb21waWxlR2VuZXJpY05vZGVSZXBsYWNlbWVudCBmcm9tICcuL0dlbmVyaWNOb2RlUmVwbGFjZW1lbnQnXG5pbXBvcnQgY29tcGlsZUdlbmVyaWNBcnJheVJlcGxhY2VtZW50IGZyb20gJy4vR2VuZXJpY0FycmF5UmVwbGFjZW1lbnQnXG5pbXBvcnQgQ2xhc3NJbXBsZW1lbnRzIGZyb20gJy4vQ2xhc3NJbXBsZW1lbnRzJ1xuaW1wb3J0IENsYXNzUHJvcGVydHkgZnJvbSAnLi9DbGFzc1Byb3BlcnR5J1xuaW1wb3J0IEV4cG9ydE5hbWVkRGVjbGFyYXRpb24gZnJvbSAnLi9FeHBvcnROYW1lZERlY2xhcmF0aW9uJ1xuaW1wb3J0IEV4cG9ydERlZmF1bHRTcGVjaWZpZXIgZnJvbSAnLi9FeHBvcnREZWZhdWx0U3BlY2lmaWVyJ1xuaW1wb3J0IEV4cG9ydFNwZWNpZmllciBmcm9tICcuL0V4cG9ydFNwZWNpZmllcidcbmltcG9ydCBFeHByZXNzaW9uU3RhdGVtZW50IGZyb20gJy4vRXhwcmVzc2lvblN0YXRlbWVudCdcbmltcG9ydCBGdW5jdGlvblR5cGVQYXJhbSBmcm9tICcuL0Z1bmN0aW9uVHlwZVBhcmFtJ1xuaW1wb3J0IEdlbmVyaWNUeXBlQW5ub3RhdGlvbiBmcm9tICcuL0dlbmVyaWNUeXBlQW5ub3RhdGlvbidcbmltcG9ydCBJZGVudGlmaWVyIGZyb20gJy4vSWRlbnRpZmllcidcbmltcG9ydCBJbXBvcnREZWNsYXJhdGlvbiBmcm9tICcuL0ltcG9ydERlY2xhcmF0aW9uJ1xuaW1wb3J0IEltcG9ydERlZmF1bHRTcGVjaWZpZXIgZnJvbSAnLi9JbXBvcnREZWZhdWx0U3BlY2lmaWVyJ1xuaW1wb3J0IEltcG9ydFNwZWNpZmllciBmcm9tICcuL0ltcG9ydFNwZWNpZmllcidcbmltcG9ydCBKU1hBdHRyaWJ1dGUgZnJvbSAnLi9KU1hBdHRyaWJ1dGUnXG5pbXBvcnQgSlNYRXhwcmVzc2lvbkNvbnRhaW5lciBmcm9tICcuL0pTWEV4cHJlc3Npb25Db250YWluZXInXG5pbXBvcnQgSlNYSWRlbnRpZmllciBmcm9tICcuL0pTWElkZW50aWZpZXInXG5pbXBvcnQgT2JqZWN0UHJvcGVydHkgZnJvbSAnLi9PYmplY3RQcm9wZXJ0eSdcbmltcG9ydCBPYmplY3RUeXBlUHJvcGVydHkgZnJvbSAnLi9PYmplY3RUeXBlUHJvcGVydHknXG5pbXBvcnQgUHJvcGVydHkgZnJvbSAnLi9Qcm9wZXJ0eSdcbmltcG9ydCBTcHJlYWRFbGVtZW50IGZyb20gJy4vU3ByZWFkRWxlbWVudCdcbmltcG9ydCBTdHJpbmdMaXRlcmFsIGZyb20gJy4vU3RyaW5nTGl0ZXJhbCdcbmltcG9ydCBUZW1wbGF0ZUxpdGVyYWwgZnJvbSAnLi9UZW1wbGF0ZUxpdGVyYWwnXG5pbXBvcnQgVFNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMgZnJvbSAnLi9UU0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cydcbmltcG9ydCBUU1Byb3BlcnR5U2lnbmF0dXJlIGZyb20gJy4vVFNQcm9wZXJ0eVNpZ25hdHVyZSdcbmltcG9ydCBUU1R5cGVQYXJhbWV0ZXIgZnJvbSAnLi9UU1R5cGVQYXJhbWV0ZXInXG5pbXBvcnQgVFNUeXBlUmVmZXJlbmNlIGZyb20gJy4vVFNUeXBlUmVmZXJlbmNlJ1xuaW1wb3J0IFR5cGVQYXJhbWV0ZXIgZnJvbSAnLi9UeXBlUGFyYW1ldGVyJ1xuaW1wb3J0IFZhcmlhYmxlRGVjbGFyYXRvciBmcm9tICcuL1ZhcmlhYmxlRGVjbGFyYXRvcidcbmltcG9ydCB7IEJhY2tlbmQgfSBmcm9tICcuLi9iYWNrZW5kL0JhY2tlbmQnXG5cbmNvbnN0IF9kZWJ1ZyA9IF9fZGVidWcoJ2FzdHg6Y29tcGlsZVJlcGxhY2VtZW50JylcblxuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlYWJsZU1hdGNoIHtcbiAgY2FwdHVyZXM/OiBSZWNvcmQ8c3RyaW5nLCBOb2RlPlxuICBhcnJheUNhcHR1cmVzPzogUmVjb3JkPHN0cmluZywgTm9kZVtdPlxuICBzdHJpbmdDYXB0dXJlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlZFJlcGxhY2VtZW50IHtcbiAgZ2VuZXJhdGU6IChtYXRjaDogUmVwbGFjZWFibGVNYXRjaCkgPT4gTm9kZSB8IE5vZGVbXVxufVxuXG5leHBvcnQgdHlwZSBSb290Q29tcGlsZVJlcGxhY2VtZW50T3B0aW9ucyA9IHtcbiAgZGVidWc/OiBEZWJ1Z2dlclxuICBiYWNrZW5kOiBCYWNrZW5kXG59XG5cbmV4cG9ydCB0eXBlIENvbXBpbGVSZXBsYWNlbWVudE9wdGlvbnMgPSB7XG4gIGRlYnVnOiBEZWJ1Z2dlclxuICBiYWNrZW5kOiBCYWNrZW5kXG59XG5cbmNvbnN0IG5vZGVDb21waWxlcnM6IFJlY29yZDxcbiAgc3RyaW5nLFxuICAoXG4gICAgcGF0dGVybjogTm9kZVBhdGg8YW55PixcbiAgICBvcHRpb25zOiBDb21waWxlUmVwbGFjZW1lbnRPcHRpb25zXG4gICkgPT4gQ29tcGlsZWRSZXBsYWNlbWVudCB8IHVuZGVmaW5lZCB8IHZvaWRcbj4gPSB7XG4gIENsYXNzSW1wbGVtZW50cyxcbiAgQ2xhc3NQcm9wZXJ0eSxcbiAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbixcbiAgRXhwb3J0RGVmYXVsdFNwZWNpZmllcixcbiAgRXhwb3J0U3BlY2lmaWVyLFxuICBFeHByZXNzaW9uU3RhdGVtZW50LFxuICBGdW5jdGlvblR5cGVQYXJhbSxcbiAgR2VuZXJpY1R5cGVBbm5vdGF0aW9uLFxuICBJZGVudGlmaWVyLFxuICBJbXBvcnREZWNsYXJhdGlvbixcbiAgSW1wb3J0RGVmYXVsdFNwZWNpZmllcixcbiAgSW1wb3J0U3BlY2lmaWVyLFxuICBKU1hBdHRyaWJ1dGUsXG4gIEpTWEV4cHJlc3Npb25Db250YWluZXIsXG4gIEpTWElkZW50aWZpZXIsXG4gIE9iamVjdFByb3BlcnR5LFxuICBPYmplY3RUeXBlUHJvcGVydHksXG4gIFByb3BlcnR5LFxuICBTcHJlYWRFbGVtZW50LFxuICBTdHJpbmdMaXRlcmFsLFxuICBUZW1wbGF0ZUxpdGVyYWwsXG4gIFRTRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzLFxuICBUU1Byb3BlcnR5U2lnbmF0dXJlLFxuICBUU1R5cGVQYXJhbWV0ZXIsXG4gIFRTVHlwZVJlZmVyZW5jZSxcbiAgVHlwZVBhcmFtZXRlcixcbiAgVmFyaWFibGVEZWNsYXJhdG9yLFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21waWxlUmVwbGFjZW1lbnQoXG4gIHBhdHRlcm46IE5vZGVQYXRoIHwgTm9kZVBhdGg8Tm9kZSwgTm9kZVtdPiB8IE5vZGVQYXRoW10sXG4gIHJvb3RDb21waWxlUmVwbGFjZW1lbnRPcHRpb25zOiBSb290Q29tcGlsZVJlcGxhY2VtZW50T3B0aW9uc1xuKTogQ29tcGlsZWRSZXBsYWNlbWVudCB7XG4gIGNvbnN0IHsgZGVidWcgPSBfZGVidWcgfSA9IHJvb3RDb21waWxlUmVwbGFjZW1lbnRPcHRpb25zXG4gIGNvbnN0IGNvbXBpbGVPcHRpb25zID0geyAuLi5yb290Q29tcGlsZVJlcGxhY2VtZW50T3B0aW9ucywgZGVidWcgfVxuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSB8fCBBcnJheS5pc0FycmF5KHBhdHRlcm4udmFsdWUpKSB7XG4gICAgcmV0dXJuIGNvbXBpbGVHZW5lcmljQXJyYXlSZXBsYWNlbWVudChwYXR0ZXJuLCBjb21waWxlT3B0aW9ucykgYXMgYW55XG4gIH1cbiAgaWYgKG5vZGVDb21waWxlcnNbcGF0dGVybi52YWx1ZS50eXBlXSkge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gbm9kZUNvbXBpbGVyc1twYXR0ZXJuLnZhbHVlLnR5cGVdKFxuICAgICAgcGF0dGVybixcbiAgICAgIGNvbXBpbGVPcHRpb25zXG4gICAgKVxuICAgIGlmIChyZXBsYWNlbWVudCkgcmV0dXJuIHJlcGxhY2VtZW50XG4gIH1cbiAgcmV0dXJuIGNvbXBpbGVHZW5lcmljTm9kZVJlcGxhY2VtZW50KHBhdHRlcm4sIGNvbXBpbGVP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