Этот тест с использованием @web/test-runner:
time wtr src/*.test.{ts,tsx}
2/2 test files | 34 passed, 0 failed
Finished running tests in 0.6s, all tests passed!
1,17s user 0,31s system 136% cpu 1,080 total
artalog - это канал на Telegram, который предлагает развернутые ответы на вопросы в чатах и мысли от рабочих процессов. Если вас интересует обсуждение темы и получение глубоких и информативных ответов, то artalog идеальное место для вас. Здесь вы можете найти подробные разъяснения и анализы по самым разнообразным темам. Главная идея канала - обогащать и расширять понимание пользователей, предоставляя им полезную информацию. Если у вас возникли вопросы или хотите узнать больше о какой-то теме, обратитесь к @artalar и получите качественные ответы и размышления. Присоединяйтесь к artalog и погрузитесь в мир интересных дискуссий и полезной информации!
25 Jan, 10:16
time wtr src/*.test.{ts,tsx}
2/2 test files | 34 passed, 0 failed
Finished running tests in 0.6s, all tests passed!
1,17s user 0,31s system 136% cpu 1,080 total
24 Jan, 07:40
23 Jan, 07:28
npm dedupe "@package-scope/*"
нпм это радостно проглотит, но задедупит вообще все нод модули. Свинюшка.instanceof
и, в этом смысле, классы тоже идут лесом."singleton": true
в package.json.22 Jan, 11:30
@reatom/[email protected]
- редизайн! Управление стало проще и симпатичнее.20 Jan, 11:21
20 Jan, 09:53
vh
и vw
), так и как для разработчика - сейчас расскажу.18 Jan, 12:33
13 Jan, 09:07
12 Jan, 10:05
12 Jan, 10:05
02 Jan, 09:16
30 Dec, 21:39
@reatom/utils
(доки) есть пачка глобальных методов дополненных типами (assign
, keys
) - мелочь, но необходимая в любом проекте. Знаю многие берут лодаш только для этого (правильных типов). Вот у нас микролодаш :)export const setTimeout: typeof globalThis.setTimeout
. Бред? Зачем? Все toJSON() { return -1 }
.JSON.stringify
можно управлять из самого объекта.@reatom/utils
ломают типы в приложении с "lib": "DOM"
в тсконфиге.globalThis
ТС заботливо добавит в ваши d.ts тот самый /// <reference types="node" />
.globalThis
? Йа не знаю. Поломав голову, к счастью, вариант нашелся - сделать объявление промежуточной переменной с другим именем в другом модуле что бы с ее помощью спокойно в оригинальном модуле затайпофить глобальный тип: export const setTimeout: typeof _setTimeout
. Теперь лишние референсы в бандл не попадают. фикс. 29 Dec, 19:58
26 Dec, 11:34
Джон Леннокс
.24 Dec, 09:03
21 Dec, 07:50
20 Dec, 17:41
19 Dec, 11:12
19 Dec, 10:09
keepalive: true
, что бы если пользователь закрыл случайно вкладку во время сабмита формы, его запрос и накопленные в форме изменения не потерялись?19 Dec, 07:10
18 Dec, 06:51
import React from 'react';
import { getComponentDebugName } from '@reatom/npm-react';
import { useForm as useRHForm } from 'react-hook-form';
/** A normal `useForm` from react-hook-form with debug options */
export const useForm: typeof useRHForm = (...a) => {
const form = useRHForm(...a);
const name = React.useMemo(() => getComponentDebugName('form'), []);
React.useEffect(() => {
if (!DEVTOOLS) return;
const state = DEVTOOLS.state(name, form.getValues());
const { unsubscribe: unForm } = form.watch(state);
const unDevtools = state.subscribe(form.reset);
return () => {
unForm();
unDevtools();
};
}, [form, name]);
return form;
};
11 Dec, 07:03
test
никогда и не используется.10 Dec, 07:32
09 Dec, 07:34
03 Dec, 09:12
30 Nov, 13:14
29 Nov, 07:32
26 Nov, 13:02
const [persistedState, setPersistedState] = useLocalStorage('KEY')
const [state, setState] = useMyComponentState({ initState: persistedState })
useEffect(() => { setPersistedState(state) }, [state])
withCache
, который позволяет кешировать данные асинхронных запросов с большим набором опций и настроек. В какой-то момент потребовалась возможность персистеть этот кеш. А персистеть куда? У реатома уже есть адаптеры к: localStorage, indexedDB, BroadcastChannel (для воркеров или табов), а в будущем будет для AsyncLocalStorage (react-native) и другие. Все они сделаны с одним интерфейсом расширения и это позволило просто добавить в withCache
опцию withPersist
, которая принимает и передает нужно расширение нужному атому. В других библиотеках или собственных реализациях вам бы пришлось перепахивать огромную кучу кода, дублируя его или меняя его интерфейсы. У нас же все уже рассчитано :)22 Nov, 11:32
/public
в /
, добавлении туда <script type="module" src="/src/index.tsx"></script>
и добавление энвам приставки _VITE
.20 Nov, 19:29
20 Nov, 07:45
TestClass
. Тупо, но работает.19 Nov, 07:45
17 Nov, 20:23
15 Nov, 19:19
15 Nov, 17:14
14 Nov, 07:45
RouteObject
, который react-router импортирует, но не экспортирует из @remix/router
. Из-за этого в некоторых ситуациях (дупликация пакетов) на таком простом коде может возникать эта ошибка:export const ROUTER = createRouter([
/* полторы тысячи строк кода */
])
// error TS2742: The inferred type of 'ROUTER' cannot be named without a reference to...
ROUTER: Router
(т.е. убить инферинги)ROUTER: any
export const ROUTER = createRouter([
/* полторы тысячи строк кода */
]) satisfies Router;
satisfies
, не первый раз меня спасает.const CONFIG = [
/* полторы тысячи строк кода */
]) as const;
export const ROUTER = createRouter(CONFIG) as Router & InferRoute<typeof CONFIG>
14 Nov, 06:31
12 Nov, 07:46
11 Nov, 07:45
ollama run qwen2.5-coder:1.5b
(https://qwenlm.github.io/blog/qwen2.5-coder/)08 Nov, 11:09
05 Nov, 11:18
@reatom/[email protected]
появилась поддержка path
параметра для searchParams.lens
и withSearchParams
02 Nov, 08:13
01 Nov, 12:11
30 Oct, 21:47
30 Oct, 07:46
withRetry
) который позволяет на асинхронную функцию навесить логику ретрая при ее ошибке сразу или через какое-то время. Что делает ретрай? Просто вызывает эту же функцию еще раз. И если функция сразу не восстанавливается, а продолжает падать, то рекурсивность проявляется в том что ретрай кетчит функцию, функция падает, ретрай вызывает опять эту функцию, опять кетчит, опять она падает... В общем, понятно. Не понятно что делать с абортом, который может прилететь из двух мест:withAbort
или reatomResource
), то ее вызов отменяет ее предыдущий вызов и эта отмена прилетает в новоиспеченный ретрай. Получается, ретрай отменяет сам себя своей же целевой работой, что не верно.29 Oct, 13:18
29 Oct, 09:13
28 Oct, 12:04
25 Oct, 08:42
21 Oct, 15:49
Генерация реактивной модели из контрактов
21 Oct, 15:49
18 Oct, 07:40
17 Oct, 08:38
15 Oct, 07:25
RouteObject
из react-router.14 Oct, 12:18
14 Oct, 12:18
14 Oct, 10:49
11 Oct, 09:00
09 Oct, 08:14
@reatom/[email protected]
в котором был добавлен режим графа \ логов операций. Он содержит огромное количество фич, сейчас кратко их перечислю (в ближайшие дни будет подробное видео).08 Oct, 19:09
<my-menu/>
не сможешь подрубить новую либу, которую так же назвали. Это пример тупой, но всякое бывает. Решение принципиально не надежное и держит наготове очень большие палки в колеса.07 Oct, 18:50
06 Oct, 07:44
03 Oct, 13:27