export function getArguments(fn: any): string[] { const strFn = fn.toString() .replace(/^async /i, ''); const fnHeader = strFn.match(/^[a-z0-9_]+(?:\s|)\((.*?)\)/gi); if (fnHeader && fnHeader[0]) { if (fnHeader[0].indexOf('=') !== -1) { throw new Error(`Default values are not supported (fn: ${strFn})`); } return fnHeader[0].replace(/^[a-z0-9_]+(?:\s|)\(/gi, '') .replace(/\)/g, '') .split(', ').filter((v: string) => !!v); } return []; }