export const extractArgs = (func: (...args: any[]) => any) => { | |
return (func + '') | |
.replace(/[/][/].*$/gm, '') // strip single-line comments | |
.replace(/\s+/g, '') // strip white space | |
.replace(/[/][*][^/*]*[*][/]/g, '') // strip multi-line comments | |
.split('){', 1)[0] | |
.replace(/^[^(]*[(]/, '') // extract the parameters | |
.replace(/=[^,]+/g, '') // strip any ES6 defaults | |
.split(',') | |
.filter(Boolean); // split & filter [""] | |
}; | |