astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
32 lines (30 loc) • 3.63 kB
JavaScript
import compilePlaceholderMatcher from './Placeholder.mjs'
export default function compileSpreadElementMatcher(path, compileOptions) {
const n = compileOptions.backend.t.namedTypes
const { argument } = path.value
if (n.Identifier.check(argument)) {
const capture = compilePlaceholderMatcher(
path,
argument.name,
compileOptions,
{
nodeType: 'ObjectMember',
}
)
if (capture) {
const restPlaceholder =
capture.arrayPlaceholder || capture.restPlaceholder
if (restPlaceholder) {
return {
pattern: path,
restPlaceholder,
match: () => {
throw new Error(
`rest capture placeholder ${restPlaceholder} is in an invalid position`
)
},
}
}
}
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyIiwiY29tcGlsZVNwcmVhZEVsZW1lbnRNYXRjaGVyIiwicGF0aCIsImNvbXBpbGVPcHRpb25zIiwibiIsImJhY2tlbmQiLCJ0IiwibmFtZWRUeXBlcyIsImFyZ3VtZW50IiwidmFsdWUiLCJJZGVudGlmaWVyIiwiY2hlY2siLCJjYXB0dXJlIiwibmFtZSIsIm5vZGVUeXBlIiwicmVzdFBsYWNlaG9sZGVyIiwiYXJyYXlQbGFjZWhvbGRlciIsInBhdHRlcm4iLCJtYXRjaCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBpbGVNYXRjaGVyL1NwcmVhZEVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVBhdGgsIFNwcmVhZEVsZW1lbnQgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IENvbXBpbGVkTWF0Y2hlciwgQ29tcGlsZU9wdGlvbnMsIE1hdGNoUmVzdWx0IH0gZnJvbSAnLidcbmltcG9ydCBjb21waWxlUGxhY2Vob2xkZXJNYXRjaGVyIGZyb20gJy4vUGxhY2Vob2xkZXInXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXBpbGVTcHJlYWRFbGVtZW50TWF0Y2hlcihcbiAgcGF0aDogTm9kZVBhdGg8U3ByZWFkRWxlbWVudCwgU3ByZWFkRWxlbWVudD4sXG4gIGNvbXBpbGVPcHRpb25zOiBDb21waWxlT3B0aW9uc1xuKTogQ29tcGlsZWRNYXRjaGVyIHwgdm9pZCB7XG4gIGNvbnN0IG4gPSBjb21waWxlT3B0aW9ucy5iYWNrZW5kLnQubmFtZWRUeXBlc1xuICBjb25zdCB7IGFyZ3VtZW50IH0gPSBwYXRoLnZhbHVlXG4gIGlmIChuLklkZW50aWZpZXIuY2hlY2soYXJndW1lbnQpKSB7XG4gICAgY29uc3QgY2FwdHVyZSA9IGNvbXBpbGVQbGFjZWhvbGRlck1hdGNoZXIoXG4gICAgICBwYXRoLFxuICAgICAgYXJndW1lbnQubmFtZSxcbiAgICAgIGNvbXBpbGVPcHRpb25zLFxuICAgICAge1xuICAgICAgICBub2RlVHlwZTogJ09iamVjdE1lbWJlcicsXG4gICAgICB9XG4gICAgKVxuICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICBjb25zdCByZXN0UGxhY2Vob2xkZXIgPVxuICAgICAgICBjYXB0dXJlLmFycmF5UGxhY2Vob2xkZXIgfHwgY2FwdHVyZS5yZXN0UGxhY2Vob2xkZXJcbiAgICAgIGlmIChyZXN0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXR0ZXJuOiBwYXRoLFxuICAgICAgICAgIHJlc3RQbGFjZWhvbGRlcixcbiAgICAgICAgICBtYXRjaDogKCk6IE1hdGNoUmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYHJlc3QgY2FwdHVyZSBwbGFjZWhvbGRlciAke3Jlc3RQbGFjZWhvbGRlcn0gaXMgaW4gYW4gaW52YWxpZCBwb3NpdGlvbmBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBRUEsT0FBT0EseUJBQVAsTUFBc0MsZUFBdEM7O0FBRUEsZUFBZSxTQUFTQywyQkFBVDtBQUNiQyxJQURhO0FBRWJDLGNBRmE7QUFHVztFQUN4QixNQUFNQyxDQUFDLEdBQUdELGNBQWMsQ0FBQ0UsT0FBZixDQUF1QkMsQ0FBdkIsQ0FBeUJDLFVBQW5DO0VBQ0EsTUFBTSxFQUFFQyxRQUFGLEtBQWVOLElBQUksQ0FBQ08sS0FBMUI7RUFDQSxJQUFJTCxDQUFDLENBQUNNLFVBQUYsQ0FBYUMsS0FBYixDQUFtQkgsUUFBbkIsQ0FBSixFQUFrQztJQUNoQyxNQUFNSSxPQUFPLEdBQUdaLHlCQUF5QjtJQUN2Q0UsSUFEdUM7SUFFdkNNLFFBQVEsQ0FBQ0ssSUFGOEI7SUFHdkNWLGNBSHVDO0lBSXZDO01BQ0VXLFFBQVEsRUFBRSxjQURaLEVBSnVDLENBQXpDOzs7SUFRQSxJQUFJRixPQUFKLEVBQWE7TUFDWCxNQUFNRyxlQUFlO01BQ25CSCxPQUFPLENBQUNJLGdCQUFSLElBQTRCSixPQUFPLENBQUNHLGVBRHRDO01BRUEsSUFBSUEsZUFBSixFQUFxQjtRQUNuQixPQUFPO1VBQ0xFLE9BQU8sRUFBRWYsSUFESjtVQUVMYSxlQUZLO1VBR0xHLEtBQUssRUFBRSxNQUFtQjtZQUN4QixNQUFNLElBQUlDLEtBQUo7WUFDSCw0QkFBMkJKLGVBQWdCLDRCQUR4QyxDQUFOOztVQUdELENBUEksRUFBUDs7TUFTRDtJQUNGO0VBQ0Y7QUFDRiJ9