советую 80% практики дополнять постоянным обучением. постарайтесь сделать что то реальное например калькулятор или виджет или игру, продумать детали, покрутить варианты и применить знания/паттерны на практике. как пример полно открытых API - сделайте игру в карты на основе апи, что-то простое для начала. сделать вывод твитов по хеш тегу на основе АПИ твиттера и тп - думаю это уже следующий шаг после codewars
советую почитать как работает мозг, начать изучать другие языки как пайтон или C++/C#, паскаль умер лет 20 назад если не больше, в целом идея варится в той среде в которой вы хотите быть, что автоматически повысит уровень знаний, но к сожалению не повысит личные качества. и чтобы что то ломать для начала надо понимать как это работает и на чем это пишут и как например работает память и тд и тп
ИМХО: советую заранее посмотреть список специальностей и тп с которыми можно уехать заграницу с нормальной визой, тоесть все что вы хотите реализовать + доп возможности
не мешать теплое с мягким - т.е. отдельные модули отвечающие за конкретный функционал
настраиваемые/переиспользуемые модули (в вашем примере все названия классов прокидываться должны сверху)
консистенция в системе (например не мешать jQuery и react, делать модули избегая лапши)
хотя бы эти 3 пункта уже поднимут уровень вашего кода
+ общее приложение собирающее все модули воедино, тут я не могу посоветовать конкретное - так как зависит от того что у вас есть (webpack или что то другое)
происходит экспорт функции - соответственно каждый раз нужно вызывать функцию перед использованием
`import Api from "../API/default"` - точно правильно?
могу написать скрипт который все тоже самое будет переводить на масштабируемый канвас, вопрос в том что на мобилке все будет очень мелко и текущий подход не прокатит
это точно серьезный вопрос - не буду претендовать на последнюю истину - сервис авторизации отдельно (внутри рефреш токена и тп или проверка куки с сессией и тп), старт приложения вызывает экшн -> мидлвейр перехватывает действие и ждет данные из сервиса подтверждающие что человек авторизован -> бросает дальше данные или действие типа переход на авторизацию -> действие устанавливает данные в сторе -> ...
не аторизован -> данные формы улетают с экшеном в мидвейр -> дергаем сервис и говорим давай работай -> данные пользователя вылетают дальше в стор
запрос на авторизацию может быть и раньше старта приложения если у вас, например, упоротая система с единой точкой входа и тп.
не авторизован 2 -> вводим данные -> проверяем данные, авторизуем, делаем рефреш страницы или бросаем по урлу
не авторизован возвращается -> ... это уже другая история :) см выше
сервис иногда может выглядеть просто как файл с 3 функциями (setSession, clearSession, isAuthorised) - зато работает и может быть заменен на другие варианты и можно просто тестировать замокав это чудо
1 - XMLHttpRequest: 92.52%, WebSockets: 92.13% - на это можно не смотреть
2 - XMLHttpRequest - прием/передача данных, WebSockets - постоянное двустороннее соединение, для одностороннего есть сервер пуш
минусы - поддержка браузером, поддержка подключения в активном состоянии, накладные расходы на реализацию, другое мышление для событийной модели, синхронизация порядка обработки событий (если вдруг вы решили сделать ассинхронщину, хотя сообщения в WS строго приходят в порядке их отправки), доп обработки при отключении от сокета и тп (разрыв/восстановление сессии), авторизация - куки или токен - здесь надо тоже отталкиваться от ситуации
вот по этой урлу все забирается и парсится функцией `atob` и если уж так хочется распарсить, то почему бы и не продублировать такую хрень у себя и получить прямые данные.
И да там в этой же строке стоит проверка для таких как вы на headless chrome и Phantom...
Поэтому скопируйте все заголовки из нормального браузера, как советуют, соблюдая порядок и замените у себя, чтобы быть похожим на настоящим chrome
там есть слушатель "subtree modification" - стоит попробовать идти выше по дереву вплоть до документа пока не найдется что то меняющее дерево, если это реакт например - то не сработает поэтому лучше посмотреть какие именно запросы идут с сайта напряму и прошерстить их данные
считать скобки (начала и окончания тегов) при замене - это базовый подход для таких вещей,
если что то поумнее то лучше написать регуляное выражение пропускающее все теги из замены
с другой стороны вспоминается пост с обратным содержанием - просто попытаться сравнить себя с чукчей который всю жизнь пасет оленей в снегу, и тогда явно все покажется веселее чем ты думаешь
тут вроде как китайский и код вполне понятен, можно сделать пулл реквест или свой реп с "правильной" версией