astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
24 lines (21 loc) • 3.6 kB
JavaScript
import compileMatcher from './index.mjs'
export default function compileOrMatcher(path, paths, compileOptions) {
const matchers = paths.map((path) => compileMatcher(path, compileOptions))
const nodeType = new Set()
for (const m of matchers) {
if (Array.isArray(m.nodeType)) m.nodeType.forEach((t) => nodeType.add(t))
else if (m.nodeType) nodeType.add(m.nodeType)
}
return {
pattern: path,
nodeType: nodeType.size ? [...nodeType] : undefined,
optional: true,
match: (path, matchSoFar) => {
for (const matcher of matchers) {
const result = matcher.match(path, matchSoFar)
if (result) return result
}
return null
},
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlTWF0Y2hlciIsImNvbXBpbGVPck1hdGNoZXIiLCJwYXRoIiwicGF0aHMiLCJjb21waWxlT3B0aW9ucyIsIm1hdGNoZXJzIiwibWFwIiwibm9kZVR5cGUiLCJTZXQiLCJtIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsInQiLCJhZGQiLCJwYXR0ZXJuIiwic2l6ZSIsInVuZGVmaW5lZCIsIm9wdGlvbmFsIiwibWF0Y2giLCJtYXRjaFNvRmFyIiwibWF0Y2hlciIsInJlc3VsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlTWF0Y2hlci9Pci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlLCBOb2RlUGF0aCwgTm9kZVR5cGUgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCBjb21waWxlTWF0Y2hlciwgeyBDb21waWxlZE1hdGNoZXIsIENvbXBpbGVPcHRpb25zLCBNYXRjaFJlc3VsdCB9IGZyb20gJy4nXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXBpbGVPck1hdGNoZXIoXG4gIHBhdGg6IE5vZGVQYXRoLFxuICBwYXRoczogTm9kZVBhdGg8Tm9kZSwgTm9kZVtdPixcbiAgY29tcGlsZU9wdGlvbnM6IENvbXBpbGVPcHRpb25zXG4pOiBDb21waWxlZE1hdGNoZXIgfCB2b2lkIHtcbiAgY29uc3QgbWF0Y2hlcnMgPSBwYXRocy5tYXAoKHBhdGgpID0+IGNvbXBpbGVNYXRjaGVyKHBhdGgsIGNvbXBpbGVPcHRpb25zKSlcbiAgY29uc3Qgbm9kZVR5cGU6IFNldDxOb2RlVHlwZT4gPSBuZXcgU2V0KClcbiAgZm9yIChjb25zdCBtIG9mIG1hdGNoZXJzKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobS5ub2RlVHlwZSkpIG0ubm9kZVR5cGUuZm9yRWFjaCgodCkgPT4gbm9kZVR5cGUuYWRkKHQpKVxuICAgIGVsc2UgaWYgKG0ubm9kZVR5cGUpIG5vZGVUeXBlLmFkZChtLm5vZGVUeXBlKVxuICB9XG4gIHJldHVybiB7XG4gICAgcGF0dGVybjogcGF0aCxcbiAgICBub2RlVHlwZTogbm9kZVR5cGUuc2l6ZSA/IFsuLi5ub2RlVHlwZV0gOiB1bmRlZmluZWQsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgbWF0Y2g6IChwYXRoOiBOb2RlUGF0aCwgbWF0Y2hTb0ZhcjogTWF0Y2hSZXN1bHQpOiBNYXRjaFJlc3VsdCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG1hdGNoZXIgb2YgbWF0Y2hlcnMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbWF0Y2hlci5tYXRjaChwYXRoLCBtYXRjaFNvRmFyKVxuICAgICAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU9BLGNBQVAsTUFBNkUsR0FBN0U7O0FBRUEsZUFBZSxTQUFTQyxnQkFBVDtBQUNiQyxJQURhO0FBRWJDLEtBRmE7QUFHYkMsY0FIYTtBQUlXO0VBQ3hCLE1BQU1DLFFBQVEsR0FBR0YsS0FBSyxDQUFDRyxHQUFOLENBQVUsQ0FBQ0osSUFBRCxLQUFVRixjQUFjLENBQUNFLElBQUQsRUFBT0UsY0FBUCxDQUFsQyxDQUFqQjtFQUNBLE1BQU1HLFFBQXVCLEdBQUcsSUFBSUMsR0FBSixFQUFoQztFQUNBLEtBQUssTUFBTUMsQ0FBWCxJQUFnQkosUUFBaEIsRUFBMEI7SUFDeEIsSUFBSUssS0FBSyxDQUFDQyxPQUFOLENBQWNGLENBQUMsQ0FBQ0YsUUFBaEIsQ0FBSixFQUErQkUsQ0FBQyxDQUFDRixRQUFGLENBQVdLLE9BQVgsQ0FBbUIsQ0FBQ0MsQ0FBRCxLQUFPTixRQUFRLENBQUNPLEdBQVQsQ0FBYUQsQ0FBYixDQUExQixFQUEvQjtJQUNLLElBQUlKLENBQUMsQ0FBQ0YsUUFBTixFQUFnQkEsUUFBUSxDQUFDTyxHQUFULENBQWFMLENBQUMsQ0FBQ0YsUUFBZjtFQUN0QjtFQUNELE9BQU87SUFDTFEsT0FBTyxFQUFFYixJQURKO0lBRUxLLFFBQVEsRUFBRUEsUUFBUSxDQUFDUyxJQUFULEdBQWdCLENBQUMsR0FBR1QsUUFBSixDQUFoQixHQUFnQ1UsU0FGckM7SUFHTEMsUUFBUSxFQUFFLElBSEw7SUFJTEMsS0FBSyxFQUFFLENBQUNqQixJQUFELEVBQWlCa0IsVUFBakIsS0FBMEQ7TUFDL0QsS0FBSyxNQUFNQyxPQUFYLElBQXNCaEIsUUFBdEIsRUFBZ0M7UUFDOUIsTUFBTWlCLE1BQU0sR0FBR0QsT0FBTyxDQUFDRixLQUFSLENBQWNqQixJQUFkLEVBQW9Ca0IsVUFBcEIsQ0FBZjtRQUNBLElBQUlFLE1BQUosRUFBWSxPQUFPQSxNQUFQO01BQ2I7TUFDRCxPQUFPLElBQVA7SUFDRCxDQVZJLEVBQVA7O0FBWUQifQ==