gitbeaker/packages/core/scripts/getParamNames.ts

22 lines
819 B
TypeScript

function isValidParam(param: string): boolean {
return Boolean(param) && !param.startsWith('...');
}
function removeDefaultValues(param: string): string {
return param.split('=')[0]; // Remove default values
}
export const getParamNames = (func: () => unknown): string[] => {
const funcString = func.toString().replace(/\n/g, '');
const paramPattern = new RegExp(`(?:${func.name}\\s*|^)\\((.*?)\\)`);
const paramString = paramPattern.exec(funcString)?.[1] || '';
return paramString
.replace(/(\{[^}]*\}|\s*=\s*{[^}]*})/g, '') // Remove destructured params
.replace(/\/\*.*?\*\//g, '') // Remove comments
.replace(/ /g, '') // Remove spaces
.split(',') // Split into array
.filter(isValidParam) // Filter out invalid params
.map(removeDefaultValues); // Extract parameter names
};