UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

32 lines (30 loc) 3.63 kB
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