Что по вашему опыту должен знать js программист уровня middle?
Как оценивают — известно шуту гороховому...
Знать должен то же, что и сеньор — разница, что последний натаскивает команду или разрабатывает уже саму технологию, а не на технологии (но это мое суждение).
Если по рынку — смотрел множество вакансий. Middle — полноценное ядро, специалист, в совершенстве знающий свой инструмент, свободно работающий с окружающим основной стек софтом... Должен знать множество тонкостей.  Обычно это 2-4 года опыта, за  это время достаточно крепко знает всю ширину языка. Должен хорошо знать работу браузера, если касательно js. За плечами несколько сложных проектов. Как правило должен с легкостью видеть плюсы и минусы разных фреймов ( в том числе не совсем модных, например ExtJS)
* Самое главное, хорошее знание возможностей JS и популярных библиотек, типа lodash, jquery, bluebird, etc
* Опыт работы с различными фреймворками (React, Vue, etc). Основным с которым работал может быть какой-то один
* Уметь верстать и быть в теме новых возможностей HTML/CSS
* Опыт работы с различными WEB API (Storage, Workers, etc)
* Опыт работы с различными системами сборки (webpack, gulp, etc)
* Уметь написать простой сервер для статики / не супер-сложного API