astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
28 lines (23 loc) • 824 B
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = compileTSTypeAnnotationMatcher;
var _ = _interopRequireDefault(require("."));
function compileTSTypeAnnotationMatcher(path, compileOptions) {
var typeAnnotation = path.get('typeAnnotation');
if (!typeAnnotation.value) return;
var annotationMatcher = (0, _["default"])(typeAnnotation, compileOptions);
if (annotationMatcher.optional) {
return {
pattern: path,
nodeType: 'TSTypeAnnotation',
optional: true,
match: function match(path, matchSoFar) {
if (!path.value) return matchSoFar || {};
return annotationMatcher.match(path.get('typeAnnotation'), matchSoFar);
}
};
}
}