Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
| import { createStore, Event, sample, Store } from 'effector'; | |
| import { once, readonly } from 'patronum'; | |
| interface TrackSliceOptions<T extends RouteParams, Route extends EffectorRoute<T> = EffectorRoute<T>> { | |
| route: Route, | |
| compare: (params: EffectorRouteParams<Route>) => boolean | |
| } | |
| interface SliceInstance<Params extends RouteParams> { | |
| $opened: Store<boolean>, |
| /** | |
| Реализуйте функцию deepEqual на JavaScript, | |
| которая принимает два параметра и проверяет, являются ли они "глубоко" равными. | |
| Входные параметры не могут быть объектами типа Set, Map и их Weak-версиями. | |
| Функция должна учитывать следующие правила: | |
| - Примитивные типы (числа, строки, булевы значения, null, undefined) сравниваются по значению. | |
| - Массивы считаются равными, если они имеют одинаковую длину и их элементы попарно равны (в том же порядке). | |
| - Объекты считаются равными, если они имеют одинаковый набор ключей и значения по этим ключам попарно равны. |
| type MazeNode = '.' | '#'; | |
| interface PathNode { | |
| x: number, | |
| y: number | |
| } | |
| type Direction = 'top' | 'right' | 'bottom' | 'left'; | |
| /** |
| import { | |
| Event, | |
| attach, | |
| createEvent, | |
| createStore, | |
| sample, | |
| scopeBind, | |
| Store, | |
| } from 'effector'; |
| import { useContext } from 'react'; | |
| import { createStore, createEffect, createEvent, sample, attach, combine, restore } from 'effector'; | |
| import { spread, debug, not, and, empty, or } from 'patronum'; | |
| import { createGate, useGate } from 'effector-react'; | |
| import { | |
| useLocation, | |
| useNavigate, | |
| matchPath, | |
| generatePath, | |
| RouteMatch, |