Spaces:
Configuration error
Configuration error
import { Node } from 'estree-walker'; | |
interface Extractors { | |
[key: string]: (names: Array<string>, param: Node) => void; | |
} | |
const extractors: Extractors = { | |
ArrayPattern(names: Array<string>, param: Node) { | |
for (const element of param.elements) { | |
if (element) extractors[element.type](names, element); | |
} | |
}, | |
AssignmentPattern(names: Array<string>, param: Node) { | |
extractors[param.left.type](names, param.left); | |
}, | |
Identifier(names: Array<string>, param: Node) { | |
names.push(param.name); | |
}, | |
MemberExpression() {}, | |
ObjectPattern(names: Array<string>, param: Node) { | |
for (const prop of param.properties) { | |
if (prop.type === 'RestElement') { | |
extractors.RestElement(names, prop); | |
} else { | |
extractors[prop.value.type](names, prop.value); | |
} | |
} | |
}, | |
RestElement(names: Array<string>, param: Node) { | |
extractors[param.argument.type](names, param.argument); | |
} | |
}; | |
const extractAssignedNames = function extractAssignedNames(param: Node): Array<string> { | |
const names: Array<string> = []; | |
extractors[param.type](names, param); | |
return names; | |
}; | |
export { extractAssignedNames as default }; | |