22 lines
878 B
JavaScript
22 lines
878 B
JavaScript
import printValue from './printValue.js';
|
|
export default function getParameterName(parameterPath) {
|
|
if (parameterPath.isIdentifier()) {
|
|
return parameterPath.node.name;
|
|
}
|
|
else if (parameterPath.isAssignmentPattern()) {
|
|
return getParameterName(parameterPath.get('left'));
|
|
}
|
|
else if (parameterPath.isObjectPattern() ||
|
|
parameterPath.isArrayPattern()) {
|
|
return printValue(parameterPath);
|
|
}
|
|
else if (parameterPath.isRestElement()) {
|
|
return `...${getParameterName(parameterPath.get('argument'))}`;
|
|
}
|
|
else if (parameterPath.isTSParameterProperty()) {
|
|
return getParameterName(parameterPath.get('parameter'));
|
|
}
|
|
throw new TypeError('Parameter name must be one of Identifier, AssignmentPattern, ArrayPattern, ' +
|
|
`ObjectPattern or RestElement, instead got ${parameterPath.node.type}`);
|
|
}
|