UNPKG

astx

Version:

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

89 lines (79 loc) 8.28 kB
import { getArrayPlaceholder, getPlaceholder, getRestPlaceholder, isCapturePlaceholder, unescapeIdentifier, } from '../compileMatcher/Placeholder.mjs' import createReplacementConverter, { bulkConvert, } from '../convertReplacement/index.mjs' import cloneNode from '../util/cloneNode.mjs' export { unescapeIdentifier } export function compileArrayPlaceholderReplacement( pattern, identifier, // eslint-disable-next-line @typescript-eslint/no-unused-vars compileReplacementOptions ) { const arrayPlaceholder = getArrayPlaceholder(identifier) || getRestPlaceholder(identifier) if (arrayPlaceholder && isCapturePlaceholder(arrayPlaceholder)) { const convertReplacement = createReplacementConverter(pattern) return { generate: (match) => { var _match$arrayCaptures const captures = (_match$arrayCaptures = match.arrayCaptures) === null || _match$arrayCaptures === void 0 ? void 0 : _match$arrayCaptures[arrayPlaceholder] if (captures) { return [ ...bulkConvert( captures.map((c) => cloneNode(c)), convertReplacement ), ] } return [...bulkConvert(cloneNode(pattern.value), convertReplacement)] }, } } } export default function compilePlaceholderReplacement( pattern, identifier, compileReplacementOptions ) { const placeholder = getPlaceholder(identifier) if (placeholder && isCapturePlaceholder(placeholder)) { const convertReplacement = createReplacementConverter(pattern) return { generate: (match) => { var _match$captures const capture = (_match$captures = match.captures) === null || _match$captures === void 0 ? void 0 : _match$captures[placeholder] if (capture) { var _astx const clone = cloneNode(capture) if ( (_astx = capture.astx) !== null && _astx !== void 0 && _astx.excludeTypeAnnotationFromCapture ) delete clone.typeAnnotation return convertReplacement(clone) } return convertReplacement(cloneNode(pattern.value)) }, } } return compileArrayPlaceholderReplacement( pattern, identifier, compileReplacementOptions ) } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRBcnJheVBsYWNlaG9sZGVyIiwiZ2V0UGxhY2Vob2xkZXIiLCJnZXRSZXN0UGxhY2Vob2xkZXIiLCJpc0NhcHR1cmVQbGFjZWhvbGRlciIsInVuZXNjYXBlSWRlbnRpZmllciIsImNyZWF0ZVJlcGxhY2VtZW50Q29udmVydGVyIiwiYnVsa0NvbnZlcnQiLCJjbG9uZU5vZGUiLCJjb21waWxlQXJyYXlQbGFjZWhvbGRlclJlcGxhY2VtZW50IiwicGF0dGVybiIsImlkZW50aWZpZXIiLCJjb21waWxlUmVwbGFjZW1lbnRPcHRpb25zIiwiYXJyYXlQbGFjZWhvbGRlciIsImNvbnZlcnRSZXBsYWNlbWVudCIsImdlbmVyYXRlIiwibWF0Y2giLCJjYXB0dXJlcyIsImFycmF5Q2FwdHVyZXMiLCJtYXAiLCJjIiwidmFsdWUiLCJjb21waWxlUGxhY2Vob2xkZXJSZXBsYWNlbWVudCIsInBsYWNlaG9sZGVyIiwiY2FwdHVyZSIsImNsb25lIiwiYXN0eCIsImV4Y2x1ZGVUeXBlQW5ub3RhdGlvbkZyb21DYXB0dXJlIiwidHlwZUFubm90YXRpb24iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcGlsZVJlcGxhY2VtZW50L1BsYWNlaG9sZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBpbGVSZXBsYWNlbWVudE9wdGlvbnMsXG4gIENvbXBpbGVkUmVwbGFjZW1lbnQsXG4gIFJlcGxhY2VhYmxlTWF0Y2gsXG59IGZyb20gJy4nXG5pbXBvcnQgeyBOb2RlLCBOb2RlUGF0aCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHtcbiAgZ2V0QXJyYXlQbGFjZWhvbGRlcixcbiAgZ2V0UGxhY2Vob2xkZXIsXG4gIGdldFJlc3RQbGFjZWhvbGRlcixcbiAgaXNDYXB0dXJlUGxhY2Vob2xkZXIsXG4gIHVuZXNjYXBlSWRlbnRpZmllcixcbn0gZnJvbSAnLi4vY29tcGlsZU1hdGNoZXIvUGxhY2Vob2xkZXInXG5pbXBvcnQgY3JlYXRlUmVwbGFjZW1lbnRDb252ZXJ0ZXIsIHsgYnVsa0NvbnZlcnQgfSBmcm9tICcuLi9jb252ZXJ0UmVwbGFjZW1lbnQnXG5pbXBvcnQgY2xvbmVOb2RlIGZyb20gJy4uL3V0aWwvY2xvbmVOb2RlJ1xuZXhwb3J0IHsgdW5lc2NhcGVJZGVudGlmaWVyIH1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVBcnJheVBsYWNlaG9sZGVyUmVwbGFjZW1lbnQoXG4gIHBhdHRlcm46IE5vZGVQYXRoLFxuICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29tcGlsZVJlcGxhY2VtZW50T3B0aW9uczogQ29tcGlsZVJlcGxhY2VtZW50T3B0aW9uc1xuKTogQ29tcGlsZWRSZXBsYWNlbWVudCB8IHZvaWQge1xuICBjb25zdCBhcnJheVBsYWNlaG9sZGVyID1cbiAgICBnZXRBcnJheVBsYWNlaG9sZGVyKGlkZW50aWZpZXIpIHx8IGdldFJlc3RQbGFjZWhvbGRlcihpZGVudGlmaWVyKVxuICBpZiAoYXJyYXlQbGFjZWhvbGRlciAmJiBpc0NhcHR1cmVQbGFjZWhvbGRlcihhcnJheVBsYWNlaG9sZGVyKSkge1xuICAgIGNvbnN0IGNvbnZlcnRSZXBsYWNlbWVudCA9IGNyZWF0ZVJlcGxhY2VtZW50Q29udmVydGVyKHBhdHRlcm4pXG4gICAgcmV0dXJuIHtcbiAgICAgIGdlbmVyYXRlOiAobWF0Y2g6IFJlcGxhY2VhYmxlTWF0Y2gpOiBOb2RlIHwgTm9kZVtdID0+IHtcbiAgICAgICAgY29uc3QgY2FwdHVyZXMgPSBtYXRjaC5hcnJheUNhcHR1cmVzPy5bYXJyYXlQbGFjZWhvbGRlcl1cbiAgICAgICAgaWYgKGNhcHR1cmVzKSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmJ1bGtDb252ZXJ0KFxuICAgICAgICAgICAgICBjYXB0dXJlcy5tYXAoKGMpID0+IGNsb25lTm9kZShjKSksXG4gICAgICAgICAgICAgIGNvbnZlcnRSZXBsYWNlbWVudFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5idWxrQ29udmVydChjbG9uZU5vZGUocGF0dGVybi52YWx1ZSksIGNvbnZlcnRSZXBsYWNlbWVudCldXG4gICAgICB9LFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21waWxlUGxhY2Vob2xkZXJSZXBsYWNlbWVudChcbiAgcGF0dGVybjogTm9kZVBhdGgsXG4gIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgY29tcGlsZVJlcGxhY2VtZW50T3B0aW9uczogQ29tcGlsZVJlcGxhY2VtZW50T3B0aW9uc1xuKTogQ29tcGlsZWRSZXBsYWNlbWVudCB8IHZvaWQge1xuICBjb25zdCBwbGFjZWhvbGRlciA9IGdldFBsYWNlaG9sZGVyKGlkZW50aWZpZXIpXG4gIGlmIChwbGFjZWhvbGRlciAmJiBpc0NhcHR1cmVQbGFjZWhvbGRlcihwbGFjZWhvbGRlcikpIHtcbiAgICBjb25zdCBjb252ZXJ0UmVwbGFjZW1lbnQgPSBjcmVhdGVSZXBsYWNlbWVudENvbnZlcnRlcihwYXR0ZXJuKVxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZTogKG1hdGNoOiBSZXBsYWNlYWJsZU1hdGNoKTogTm9kZSB8IE5vZGVbXSA9PiB7XG4gICAgICAgIGNvbnN0IGNhcHR1cmUgPSBtYXRjaC5jYXB0dXJlcz8uW3BsYWNlaG9sZGVyXVxuICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgIGNvbnN0IGNsb25lID0gY2xvbmVOb2RlKGNhcHR1cmUpXG4gICAgICAgICAgaWYgKChjYXB0dXJlIGFzIGFueSkuYXN0eD8uZXhjbHVkZVR5cGVBbm5vdGF0aW9uRnJvbUNhcHR1cmUpXG4gICAgICAgICAgICBkZWxldGUgKGNsb25lIGFzIGFueSkudHlwZUFubm90YXRpb25cbiAgICAgICAgICByZXR1cm4gY29udmVydFJlcGxhY2VtZW50KGNsb25lKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb252ZXJ0UmVwbGFjZW1lbnQoY2xvbmVOb2RlKHBhdHRlcm4udmFsdWUpKVxuICAgICAgfSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbXBpbGVBcnJheVBsYWNlaG9sZGVyUmVwbGFjZW1lbnQoXG4gICAgcGF0dGVybixcbiAgICBpZGVudGlmaWVyLFxuICAgIGNvbXBpbGVSZXBsYWNlbWVudE9wdGlvbnNcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFNQTtBQUNFQSxtQkFERjtBQUVFQyxjQUZGO0FBR0VDLGtCQUhGO0FBSUVDLG9CQUpGO0FBS0VDLGtCQUxGO0FBTU8sK0JBTlA7QUFPQSxPQUFPQywwQkFBUCxJQUFxQ0MsV0FBckMsUUFBd0QsdUJBQXhEO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixtQkFBdEI7QUFDQSxTQUFTSCxrQkFBVDs7QUFFQSxPQUFPLFNBQVNJLGtDQUFUO0FBQ0xDLE9BREs7QUFFTEMsVUFGSztBQUdMO0FBQ0FDLHlCQUpLO0FBS3VCO0VBQzVCLE1BQU1DLGdCQUFnQjtFQUNwQlosbUJBQW1CLENBQUNVLFVBQUQsQ0FBbkIsSUFBbUNSLGtCQUFrQixDQUFDUSxVQUFELENBRHZEO0VBRUEsSUFBSUUsZ0JBQWdCLElBQUlULG9CQUFvQixDQUFDUyxnQkFBRCxDQUE1QyxFQUFnRTtJQUM5RCxNQUFNQyxrQkFBa0IsR0FBR1IsMEJBQTBCLENBQUNJLE9BQUQsQ0FBckQ7SUFDQSxPQUFPO01BQ0xLLFFBQVEsRUFBRSxDQUFDQyxLQUFELEtBQTRDO1FBQ3BELE1BQU1DLFFBQVEsMkJBQUdELEtBQUssQ0FBQ0UsYUFBVCx5REFBRyxxQkFBc0JMLGdCQUF0QixDQUFqQjtRQUNBLElBQUlJLFFBQUosRUFBYztVQUNaLE9BQU87VUFDTCxHQUFHVixXQUFXO1VBQ1pVLFFBQVEsQ0FBQ0UsR0FBVCxDQUFhLENBQUNDLENBQUQsS0FBT1osU0FBUyxDQUFDWSxDQUFELENBQTdCLENBRFk7VUFFWk4sa0JBRlksQ0FEVCxDQUFQOzs7UUFNRDtRQUNELE9BQU8sQ0FBQyxHQUFHUCxXQUFXLENBQUNDLFNBQVMsQ0FBQ0UsT0FBTyxDQUFDVyxLQUFULENBQVYsRUFBMkJQLGtCQUEzQixDQUFmLENBQVA7TUFDRCxDQVpJLEVBQVA7O0VBY0Q7QUFDRjs7QUFFRCxlQUFlLFNBQVNRLDZCQUFUO0FBQ2JaLE9BRGE7QUFFYkMsVUFGYTtBQUdiQyx5QkFIYTtBQUllO0VBQzVCLE1BQU1XLFdBQVcsR0FBR3JCLGNBQWMsQ0FBQ1MsVUFBRCxDQUFsQztFQUNBLElBQUlZLFdBQVcsSUFBSW5CLG9CQUFvQixDQUFDbUIsV0FBRCxDQUF2QyxFQUFzRDtJQUNwRCxNQUFNVCxrQkFBa0IsR0FBR1IsMEJBQTBCLENBQUNJLE9BQUQsQ0FBckQ7SUFDQSxPQUFPO01BQ0xLLFFBQVEsRUFBRSxDQUFDQyxLQUFELEtBQTRDO1FBQ3BELE1BQU1RLE9BQU8sc0JBQUdSLEtBQUssQ0FBQ0MsUUFBVCxvREFBRyxnQkFBaUJNLFdBQWpCLENBQWhCO1FBQ0EsSUFBSUMsT0FBSixFQUFhO1VBQ1gsTUFBTUMsS0FBSyxHQUFHakIsU0FBUyxDQUFDZ0IsT0FBRCxDQUF2QjtVQUNBLGFBQUtBLE9BQUQsQ0FBaUJFLElBQXJCLGtDQUFJLE1BQXVCQyxnQ0FBM0I7VUFDRSxPQUFRRixLQUFELENBQWVHLGNBQXRCO1VBQ0YsT0FBT2Qsa0JBQWtCLENBQUNXLEtBQUQsQ0FBekI7UUFDRDtRQUNELE9BQU9YLGtCQUFrQixDQUFDTixTQUFTLENBQUNFLE9BQU8sQ0FBQ1csS0FBVCxDQUFWLENBQXpCO01BQ0QsQ0FWSSxFQUFQOztFQVlEO0VBQ0QsT0FBT1osa0NBQWtDO0VBQ3ZDQyxPQUR1QztFQUV2Q0MsVUFGdUM7RUFHdkNDLHlCQUh1QyxDQUF6Qzs7QUFLRCJ9