astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
121 lines (103 loc) • 3.12 kB
JavaScript
var _typeof = require('@babel/runtime/helpers/typeof')
Object.defineProperty(exports, '__esModule', {
value: true,
})
exports['default'] = compileJSXIdentifierMatcher
var _Placeholder = _interopRequireWildcard(require('./Placeholder'))
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== 'function') return null
var cacheBabelInterop = new WeakMap()
var cacheNodeInterop = new WeakMap()
return (_getRequireWildcardCache = function _getRequireWildcardCache(
nodeInterop
) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop
})(nodeInterop)
}
function _interopRequireWildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj
}
if (
obj === null ||
(_typeof(obj) !== 'object' && typeof obj !== 'function')
) {
return {
default: obj,
}
}
var cache = _getRequireWildcardCache(nodeInterop)
if (cache && cache.has(obj)) {
return cache.get(obj)
}
var newObj = {}
var hasPropertyDescriptor =
Object.defineProperty && Object.getOwnPropertyDescriptor
for (var key in obj) {
if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor
? Object.getOwnPropertyDescriptor(obj, key)
: null
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc)
} else {
newObj[key] = obj[key]
}
}
}
newObj['default'] = obj
if (cache) {
cache.set(obj, newObj)
}
return newObj
}
function compileJSXIdentifierMatcher(path, compileOptions) {
var pattern = path.value
var n = compileOptions.backend.t.namedTypes
var placeholderMatcher = (0, _Placeholder['default'])(
path,
pattern.name,
compileOptions,
{
nodeType: 'JSXIdentifier',
getCondition: function getCondition() {
return [
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(function (c) {
return c(path)
})
},
}
)
if (placeholderMatcher) return placeholderMatcher
pattern.name = (0, _Placeholder.unescapeIdentifier)(pattern.name)
}