astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
38 lines (35 loc) • 4.58 kB
JavaScript
import compilePlaceholderMatcher from './Placeholder.mjs'
export default function compileObjectTypePropertyMatcher(path, compileOptions) {
const pattern = path.value
const n = compileOptions.backend.t.namedTypes
if (n.Identifier.check(pattern.key)) {
if (
!pattern.static &&
!pattern.proto &&
!pattern.method &&
!pattern.optional &&
n.GenericTypeAnnotation.check(pattern.value) &&
n.Identifier.check(pattern.value.id) &&
pattern.value.id.name === '$' &&
pattern.variance == null
) {
const placeholderMatcher = compilePlaceholderMatcher(
path,
pattern.key.name,
compileOptions,
{
nodeType: 'Flow',
getCondition: () => (path) => {
var _path$parent
return n.ObjectTypeAnnotation.check(
(_path$parent = path.parent) === null || _path$parent === void 0
? void 0
: _path$parent.value
)
},
}
)
if (placeholderMatcher) return placeholderMatcher
}
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyIiwiY29tcGlsZU9iamVjdFR5cGVQcm9wZXJ0eU1hdGNoZXIiLCJwYXRoIiwiY29tcGlsZU9wdGlvbnMiLCJwYXR0ZXJuIiwidmFsdWUiLCJuIiwiYmFja2VuZCIsInQiLCJuYW1lZFR5cGVzIiwiSWRlbnRpZmllciIsImNoZWNrIiwia2V5Iiwic3RhdGljIiwicHJvdG8iLCJtZXRob2QiLCJvcHRpb25hbCIsIkdlbmVyaWNUeXBlQW5ub3RhdGlvbiIsImlkIiwibmFtZSIsInZhcmlhbmNlIiwicGxhY2Vob2xkZXJNYXRjaGVyIiwibm9kZVR5cGUiLCJnZXRDb25kaXRpb24iLCJPYmplY3RUeXBlQW5ub3RhdGlvbiIsInBhcmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlTWF0Y2hlci9PYmplY3RUeXBlUHJvcGVydHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0VHlwZVByb3BlcnR5LCBOb2RlUGF0aCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgQ29tcGlsZWRNYXRjaGVyLCBDb21waWxlT3B0aW9ucyB9IGZyb20gJy4nXG5pbXBvcnQgY29tcGlsZVBsYWNlaG9sZGVyTWF0Y2hlciBmcm9tICcuL1BsYWNlaG9sZGVyJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21waWxlT2JqZWN0VHlwZVByb3BlcnR5TWF0Y2hlcihcbiAgcGF0aDogTm9kZVBhdGg8T2JqZWN0VHlwZVByb3BlcnR5LCBPYmplY3RUeXBlUHJvcGVydHk+LFxuICBjb21waWxlT3B0aW9uczogQ29tcGlsZU9wdGlvbnNcbik6IENvbXBpbGVkTWF0Y2hlciB8IHZvaWQge1xuICBjb25zdCBwYXR0ZXJuOiBPYmplY3RUeXBlUHJvcGVydHkgPSBwYXRoLnZhbHVlXG4gIGNvbnN0IG4gPSBjb21waWxlT3B0aW9ucy5iYWNrZW5kLnQubmFtZWRUeXBlc1xuXG4gIGlmIChuLklkZW50aWZpZXIuY2hlY2socGF0dGVybi5rZXkpKSB7XG4gICAgaWYgKFxuICAgICAgIShwYXR0ZXJuIGFzIGFueSkuc3RhdGljICYmXG4gICAgICAhKHBhdHRlcm4gYXMgYW55KS5wcm90byAmJlxuICAgICAgIShwYXR0ZXJuIGFzIGFueSkubWV0aG9kICYmXG4gICAgICAhcGF0dGVybi5vcHRpb25hbCAmJlxuICAgICAgbi5HZW5lcmljVHlwZUFubm90YXRpb24uY2hlY2socGF0dGVybi52YWx1ZSkgJiZcbiAgICAgIG4uSWRlbnRpZmllci5jaGVjayhwYXR0ZXJuLnZhbHVlLmlkKSAmJlxuICAgICAgcGF0dGVybi52YWx1ZS5pZC5uYW1lID09PSAnJCcgJiZcbiAgICAgIHBhdHRlcm4udmFyaWFuY2UgPT0gbnVsbFxuICAgICkge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXJNYXRjaGVyID0gY29tcGlsZVBsYWNlaG9sZGVyTWF0Y2hlcihcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcGF0dGVybi5rZXkubmFtZSxcbiAgICAgICAgY29tcGlsZU9wdGlvbnMsXG4gICAgICAgIHtcbiAgICAgICAgICBub2RlVHlwZTogJ0Zsb3cnLFxuICAgICAgICAgIGdldENvbmRpdGlvbjogKCkgPT4gKHBhdGg6IE5vZGVQYXRoKSA9PlxuICAgICAgICAgICAgbi5PYmplY3RUeXBlQW5ub3RhdGlvbi5jaGVjayhwYXRoLnBhcmVudD8udmFsdWUpLFxuICAgICAgICB9XG4gICAgICApXG5cbiAgICAgIGlmIChwbGFjZWhvbGRlck1hdGNoZXIpIHJldHVybiBwbGFjZWhvbGRlck1hdGNoZXJcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQSxPQUFPQSx5QkFBUCxNQUFzQyxlQUF0Qzs7QUFFQSxlQUFlLFNBQVNDLGdDQUFUO0FBQ2JDLElBRGE7QUFFYkMsY0FGYTtBQUdXO0VBQ3hCLE1BQU1DLE9BQTJCLEdBQUdGLElBQUksQ0FBQ0csS0FBekM7RUFDQSxNQUFNQyxDQUFDLEdBQUdILGNBQWMsQ0FBQ0ksT0FBZixDQUF1QkMsQ0FBdkIsQ0FBeUJDLFVBQW5DOztFQUVBLElBQUlILENBQUMsQ0FBQ0ksVUFBRixDQUFhQyxLQUFiLENBQW1CUCxPQUFPLENBQUNRLEdBQTNCLENBQUosRUFBcUM7SUFDbkM7SUFDRSxDQUFFUixPQUFELENBQWlCUyxNQUFsQjtJQUNBLENBQUVULE9BQUQsQ0FBaUJVLEtBRGxCO0lBRUEsQ0FBRVYsT0FBRCxDQUFpQlcsTUFGbEI7SUFHQSxDQUFDWCxPQUFPLENBQUNZLFFBSFQ7SUFJQVYsQ0FBQyxDQUFDVyxxQkFBRixDQUF3Qk4sS0FBeEIsQ0FBOEJQLE9BQU8sQ0FBQ0MsS0FBdEMsQ0FKQTtJQUtBQyxDQUFDLENBQUNJLFVBQUYsQ0FBYUMsS0FBYixDQUFtQlAsT0FBTyxDQUFDQyxLQUFSLENBQWNhLEVBQWpDLENBTEE7SUFNQWQsT0FBTyxDQUFDQyxLQUFSLENBQWNhLEVBQWQsQ0FBaUJDLElBQWpCLEtBQTBCLEdBTjFCO0lBT0FmLE9BQU8sQ0FBQ2dCLFFBQVIsSUFBb0IsSUFSdEI7SUFTRTtNQUNBLE1BQU1DLGtCQUFrQixHQUFHckIseUJBQXlCO01BQ2xERSxJQURrRDtNQUVsREUsT0FBTyxDQUFDUSxHQUFSLENBQVlPLElBRnNDO01BR2xEaEIsY0FIa0Q7TUFJbEQ7UUFDRW1CLFFBQVEsRUFBRSxNQURaO1FBRUVDLFlBQVksRUFBRSxNQUFNLENBQUNyQixJQUFEO1lBQ2xCSSxDQUFDLENBQUNrQixvQkFBRixDQUF1QmIsS0FBdkIsaUJBQTZCVCxJQUFJLENBQUN1QixNQUFsQyxpREFBNkIsYUFBYXBCLEtBQTFDLENBRGtCLEdBRnRCLEVBSmtELENBQXBEOzs7O01BV0EsSUFBSWdCLGtCQUFKLEVBQXdCLE9BQU9BLGtCQUFQO0lBQ3pCO0VBQ0Y7QUFDRiJ9