astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
53 lines (49 loc) • 5.38 kB
JavaScript
import compilePlaceholderMatcher, {
unescapeIdentifier,
} from './Placeholder.mjs'
export default function compileJSXIdentifierMatcher(path, compileOptions) {
const pattern = path.value
const n = compileOptions.backend.t.namedTypes
const placeholderMatcher = compilePlaceholderMatcher(
path,
pattern.name,
compileOptions,
{
nodeType: 'JSXIdentifier',
getCondition: () =>
[
function isJSXElementName(path) {
var _path$parent
return (
n.JSXOpeningElement.check(
(_path$parent = path.parent) === null || _path$parent === void 0
? void 0
: _path$parent.value
) && path.name === 'name'
)
},
function isJSXAttributeName(path) {
var _path$parent2
return (
n.JSXAttribute.check(
(_path$parent2 = path.parent) === null ||
_path$parent2 === void 0
? void 0
: _path$parent2.value
) && path.name === 'name'
)
},
function isJSXSpreadAttribute(path) {
var _path$parent3
return n.JSXSpreadAttribute.check(
(_path$parent3 = path.parent) === null || _path$parent3 === void 0
? void 0
: _path$parent3.value
)
},
].find((c) => c(path)),
}
)
if (placeholderMatcher) return placeholderMatcher
pattern.name = unescapeIdentifier(pattern.name)
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyIiwidW5lc2NhcGVJZGVudGlmaWVyIiwiY29tcGlsZUpTWElkZW50aWZpZXJNYXRjaGVyIiwicGF0aCIsImNvbXBpbGVPcHRpb25zIiwicGF0dGVybiIsInZhbHVlIiwibiIsImJhY2tlbmQiLCJ0IiwibmFtZWRUeXBlcyIsInBsYWNlaG9sZGVyTWF0Y2hlciIsIm5hbWUiLCJub2RlVHlwZSIsImdldENvbmRpdGlvbiIsImlzSlNYRWxlbWVudE5hbWUiLCJKU1hPcGVuaW5nRWxlbWVudCIsImNoZWNrIiwicGFyZW50IiwiaXNKU1hBdHRyaWJ1dGVOYW1lIiwiSlNYQXR0cmlidXRlIiwiaXNKU1hTcHJlYWRBdHRyaWJ1dGUiLCJKU1hTcHJlYWRBdHRyaWJ1dGUiLCJmaW5kIiwiYyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlTWF0Y2hlci9KU1hJZGVudGlmaWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpTWElkZW50aWZpZXIsIE5vZGVQYXRoIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBDb21waWxlZE1hdGNoZXIsIENvbXBpbGVPcHRpb25zIH0gZnJvbSAnLidcbmltcG9ydCBjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyLCB7IHVuZXNjYXBlSWRlbnRpZmllciB9IGZyb20gJy4vUGxhY2Vob2xkZXInXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXBpbGVKU1hJZGVudGlmaWVyTWF0Y2hlcihcbiAgcGF0aDogTm9kZVBhdGg8SlNYSWRlbnRpZmllciwgSlNYSWRlbnRpZmllcj4sXG4gIGNvbXBpbGVPcHRpb25zOiBDb21waWxlT3B0aW9uc1xuKTogQ29tcGlsZWRNYXRjaGVyIHwgdm9pZCB7XG4gIGNvbnN0IHBhdHRlcm46IEpTWElkZW50aWZpZXIgPSBwYXRoLnZhbHVlXG4gIGNvbnN0IG4gPSBjb21waWxlT3B0aW9ucy5iYWNrZW5kLnQubmFtZWRUeXBlc1xuICBjb25zdCBwbGFjZWhvbGRlck1hdGNoZXIgPSBjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyKFxuICAgIHBhdGgsXG4gICAgcGF0dGVybi5uYW1lLFxuICAgIGNvbXBpbGVPcHRpb25zLFxuICAgIHtcbiAgICAgIG5vZGVUeXBlOiAnSlNYSWRlbnRpZmllcicsXG4gICAgICBnZXRDb25kaXRpb246ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICBmdW5jdGlvbiBpc0pTWEVsZW1lbnROYW1lKHBhdGg6IE5vZGVQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBuLkpTWE9wZW5pbmdFbGVtZW50LmNoZWNrKHBhdGgucGFyZW50Py52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgcGF0aC5uYW1lID09PSAnbmFtZSdcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZ1bmN0aW9uIGlzSlNYQXR0cmlidXRlTmFtZShwYXRoOiBOb2RlUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbi5KU1hBdHRyaWJ1dGUuY2hlY2socGF0aC5wYXJlbnQ/LnZhbHVlKSAmJiBwYXRoLm5hbWUgPT09ICduYW1lJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZnVuY3Rpb24gaXNKU1hTcHJlYWRBdHRyaWJ1dGUocGF0aDogTm9kZVBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiBuLkpTWFNwcmVhZEF0dHJpYnV0ZS5jaGVjayhwYXRoLnBhcmVudD8udmFsdWUpXG4gICAgICAgICAgfSxcbiAgICAgICAgXS5maW5kKChjKSA9PiBjKHBhdGgpKSxcbiAgICB9XG4gIClcblxuICBpZiAocGxhY2Vob2xkZXJNYXRjaGVyKSByZXR1cm4gcGxhY2Vob2xkZXJNYXRjaGVyXG5cbiAgcGF0dGVybi5uYW1lID0gdW5lc2NhcGVJZGVudGlmaWVyKHBhdHRlcm4ubmFtZSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQSxPQUFPQSx5QkFBUCxJQUFvQ0Msa0JBQXBDLFFBQThELGVBQTlEOztBQUVBLGVBQWUsU0FBU0MsMkJBQVQ7QUFDYkMsSUFEYTtBQUViQyxjQUZhO0FBR1c7RUFDeEIsTUFBTUMsT0FBc0IsR0FBR0YsSUFBSSxDQUFDRyxLQUFwQztFQUNBLE1BQU1DLENBQUMsR0FBR0gsY0FBYyxDQUFDSSxPQUFmLENBQXVCQyxDQUF2QixDQUF5QkMsVUFBbkM7RUFDQSxNQUFNQyxrQkFBa0IsR0FBR1gseUJBQXlCO0VBQ2xERyxJQURrRDtFQUVsREUsT0FBTyxDQUFDTyxJQUYwQztFQUdsRFIsY0FIa0Q7RUFJbEQ7SUFDRVMsUUFBUSxFQUFFLGVBRFo7SUFFRUMsWUFBWSxFQUFFO0lBQ1o7SUFDRSxTQUFTQyxnQkFBVCxDQUEwQlosSUFBMUIsRUFBbUQ7TUFDakQ7UUFDRUksQ0FBQyxDQUFDUyxpQkFBRixDQUFvQkMsS0FBcEIsaUJBQTBCZCxJQUFJLENBQUNlLE1BQS9CLGlEQUEwQixhQUFhWixLQUF2QztRQUNBSCxJQUFJLENBQUNTLElBQUwsS0FBYyxNQUZoQjs7SUFJRCxDQU5IO0lBT0UsU0FBU08sa0JBQVQsQ0FBNEJoQixJQUE1QixFQUFxRDtNQUNuRDtRQUNFSSxDQUFDLENBQUNhLFlBQUYsQ0FBZUgsS0FBZixrQkFBcUJkLElBQUksQ0FBQ2UsTUFBMUIsa0RBQXFCLGNBQWFaLEtBQWxDLEtBQTRDSCxJQUFJLENBQUNTLElBQUwsS0FBYyxNQUQ1RDs7SUFHRCxDQVhIO0lBWUUsU0FBU1Msb0JBQVQsQ0FBOEJsQixJQUE5QixFQUF1RDtNQUNyRCxPQUFPSSxDQUFDLENBQUNlLGtCQUFGLENBQXFCTCxLQUFyQixrQkFBMkJkLElBQUksQ0FBQ2UsTUFBaEMsa0RBQTJCLGNBQWFaLEtBQXhDLENBQVA7SUFDRCxDQWRIO0lBZUVpQixJQWZGLENBZU8sQ0FBQ0MsQ0FBRCxLQUFPQSxDQUFDLENBQUNyQixJQUFELENBZmYsQ0FISixFQUprRCxDQUFwRDs7OztFQTBCQSxJQUFJUSxrQkFBSixFQUF3QixPQUFPQSxrQkFBUDs7RUFFeEJOLE9BQU8sQ0FBQ08sSUFBUixHQUFlWCxrQkFBa0IsQ0FBQ0ksT0FBTyxDQUFDTyxJQUFULENBQWpDO0FBQ0QifQ==