Как посчитать количество функций в коде JS?
Такие задачи однозначно решаются обходом AST. Возьмите общеизвестный парсер и инструмент для обхода его дерева, например связка из @babel/parser и @babel/traverse подойдет.
Так же можно посмотреть в какие ноды что парсится с помощью https://astexplorer.net/ - в нем несколько языков, а для js/ts на выбор есть несколько парсеров.
Вам по сути нужно найти FunctionDeclaration содержащий в body ReturnStatement и извлечь из него Identifier соответствующий имени. А для второй части - FunctionDeclaration с ArgumentsList не нулевой длины.
Ну и так как в условии сказано, что внутрь не заходить, то можно пройтись лишь по верхнему уровню, тогда @babel/traverse и не нужен даже
можно даже потоково это посчитать.

заводишь три флага:
1. мы внутри функции
2. внутри строки
3. внутри вложенной функции

читаешь посимвольно пока не наткнешься на function или => объявление переменной, если попал в функцию запоминаешь имя (можно еще номер строки и символа), перебираешь дальше в поисках return или конца конца функции.

если попал внутрь вложенной функции - ищешь ее конец, return и другие вложенные игнорируешь.
если попал внутрь строки - ищешь конец строки, в строке игнорируешь вообще все.

А когда у тебя есть файл, все проще) есть indexOf, slice, replace с регулярками.