UNPKG

astx

Version:

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

46 lines (39 loc) 4.33 kB
import { compileStringPlaceholderMatcher, unescapeIdentifier, } from './Placeholder.mjs' function generateValue(cooked) { return { raw: cooked.replace(/\\|`|\${/g, '\\$&'), cooked, } } export default function matchTemplateLiteral(path, compileOptions) { const pattern = path.value const placeholderMatcher = compileStringPlaceholderMatcher( path, (node) => { var _node$quasis$0$value$ return node.quasis.length === 1 ? (_node$quasis$0$value$ = node.quasis[0].value.cooked) !== null && _node$quasis$0$value$ !== void 0 ? _node$quasis$0$value$ : null : null }, compileOptions, { nodeType: 'TemplateLiteral', } ) if (placeholderMatcher) return placeholderMatcher if (pattern.quasis.length === 1) { const [quasi] = pattern.quasis if (quasi.value.cooked) { const unescaped = unescapeIdentifier(quasi.value.cooked) if (unescaped !== quasi.value.cooked) { quasi.value = generateValue(unescaped) } } } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlU3RyaW5nUGxhY2Vob2xkZXJNYXRjaGVyIiwidW5lc2NhcGVJZGVudGlmaWVyIiwiZ2VuZXJhdGVWYWx1ZSIsImNvb2tlZCIsInJhdyIsInJlcGxhY2UiLCJtYXRjaFRlbXBsYXRlTGl0ZXJhbCIsInBhdGgiLCJjb21waWxlT3B0aW9ucyIsInBhdHRlcm4iLCJ2YWx1ZSIsInBsYWNlaG9sZGVyTWF0Y2hlciIsIm5vZGUiLCJxdWFzaXMiLCJsZW5ndGgiLCJub2RlVHlwZSIsInF1YXNpIiwidW5lc2NhcGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBpbGVNYXRjaGVyL1RlbXBsYXRlTGl0ZXJhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZUxpdGVyYWwsIE5vZGVQYXRoIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBDb21waWxlT3B0aW9ucywgQ29tcGlsZWRNYXRjaGVyIH0gZnJvbSAnLidcbmltcG9ydCB7XG4gIGNvbXBpbGVTdHJpbmdQbGFjZWhvbGRlck1hdGNoZXIsXG4gIHVuZXNjYXBlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9QbGFjZWhvbGRlcidcblxuZnVuY3Rpb24gZ2VuZXJhdGVWYWx1ZShjb29rZWQ6IHN0cmluZyk6IHsgcmF3OiBzdHJpbmc7IGNvb2tlZDogc3RyaW5nIH0ge1xuICByZXR1cm4geyByYXc6IGNvb2tlZC5yZXBsYWNlKC9cXFxcfGB8XFwkey9nLCAnXFxcXCQmJyksIGNvb2tlZCB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1hdGNoVGVtcGxhdGVMaXRlcmFsKFxuICBwYXRoOiBOb2RlUGF0aDxUZW1wbGF0ZUxpdGVyYWwsIFRlbXBsYXRlTGl0ZXJhbD4sXG4gIGNvbXBpbGVPcHRpb25zOiBDb21waWxlT3B0aW9uc1xuKTogQ29tcGlsZWRNYXRjaGVyIHwgdm9pZCB7XG4gIGNvbnN0IHBhdHRlcm46IFRlbXBsYXRlTGl0ZXJhbCA9IHBhdGgudmFsdWVcblxuICBjb25zdCBwbGFjZWhvbGRlck1hdGNoZXIgPSBjb21waWxlU3RyaW5nUGxhY2Vob2xkZXJNYXRjaGVyKFxuICAgIHBhdGgsXG4gICAgKG5vZGU6IFRlbXBsYXRlTGl0ZXJhbCkgPT5cbiAgICAgIG5vZGUucXVhc2lzLmxlbmd0aCA9PT0gMSA/IG5vZGUucXVhc2lzWzBdLnZhbHVlLmNvb2tlZCA/PyBudWxsIDogbnVsbCxcbiAgICBjb21waWxlT3B0aW9ucyxcbiAgICB7IG5vZGVUeXBlOiAnVGVtcGxhdGVMaXRlcmFsJyB9XG4gIClcblxuICBpZiAocGxhY2Vob2xkZXJNYXRjaGVyKSByZXR1cm4gcGxhY2Vob2xkZXJNYXRjaGVyXG5cbiAgaWYgKHBhdHRlcm4ucXVhc2lzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IFtxdWFzaV0gPSBwYXR0ZXJuLnF1YXNpc1xuICAgIGlmIChxdWFzaS52YWx1ZS5jb29rZWQpIHtcbiAgICAgIGNvbnN0IHVuZXNjYXBlZCA9IHVuZXNjYXBlSWRlbnRpZmllcihxdWFzaS52YWx1ZS5jb29rZWQpXG4gICAgICBpZiAodW5lc2NhcGVkICE9PSBxdWFzaS52YWx1ZS5jb29rZWQpIHtcbiAgICAgICAgcXVhc2kudmFsdWUgPSBnZW5lcmF0ZVZhbHVlKHVuZXNjYXBlZClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQTtBQUNFQSwrQkFERjtBQUVFQyxrQkFGRjtBQUdPLGVBSFA7O0FBS0EsU0FBU0MsYUFBVCxDQUF1QkMsTUFBdkIsRUFBd0U7RUFDdEUsT0FBTyxFQUFFQyxHQUFHLEVBQUVELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLFdBQWYsRUFBNEIsTUFBNUIsQ0FBUCxFQUE0Q0YsTUFBNUMsRUFBUDtBQUNEOztBQUVELGVBQWUsU0FBU0csb0JBQVQ7QUFDYkMsSUFEYTtBQUViQyxjQUZhO0FBR1c7RUFDeEIsTUFBTUMsT0FBd0IsR0FBR0YsSUFBSSxDQUFDRyxLQUF0Qzs7RUFFQSxNQUFNQyxrQkFBa0IsR0FBR1gsK0JBQStCO0VBQ3hETyxJQUR3RDtFQUV4RCxDQUFDSyxJQUFEO01BQ0VBLElBQUksQ0FBQ0MsTUFBTCxDQUFZQyxNQUFaLEtBQXVCLENBQXZCLDRCQUEyQkYsSUFBSSxDQUFDQyxNQUFMLENBQVksQ0FBWixFQUFlSCxLQUFmLENBQXFCUCxNQUFoRCx5RUFBMEQsSUFBMUQsR0FBaUUsSUFEbkUsR0FGd0Q7RUFJeERLLGNBSndEO0VBS3hELEVBQUVPLFFBQVEsRUFBRSxpQkFBWixFQUx3RCxDQUExRDs7O0VBUUEsSUFBSUosa0JBQUosRUFBd0IsT0FBT0Esa0JBQVA7O0VBRXhCLElBQUlGLE9BQU8sQ0FBQ0ksTUFBUixDQUFlQyxNQUFmLEtBQTBCLENBQTlCLEVBQWlDO0lBQy9CLE1BQU0sQ0FBQ0UsS0FBRCxJQUFVUCxPQUFPLENBQUNJLE1BQXhCO0lBQ0EsSUFBSUcsS0FBSyxDQUFDTixLQUFOLENBQVlQLE1BQWhCLEVBQXdCO01BQ3RCLE1BQU1jLFNBQVMsR0FBR2hCLGtCQUFrQixDQUFDZSxLQUFLLENBQUNOLEtBQU4sQ0FBWVAsTUFBYixDQUFwQztNQUNBLElBQUljLFNBQVMsS0FBS0QsS0FBSyxDQUFDTixLQUFOLENBQVlQLE1BQTlCLEVBQXNDO1FBQ3BDYSxLQUFLLENBQUNOLEtBQU4sR0FBY1IsYUFBYSxDQUFDZSxTQUFELENBQTNCO01BQ0Q7SUFDRjtFQUNGO0FBQ0YifQ==