Open Source
machines-demo
·GPL-3.0Интерактивный эмулятор машин Тьюринга и Поста в браузере: пользовательский код собирает машину через опубликованные npm-библиотеки и запускается в Web Worker’е (terminate-on-timeout, ’unsafe-eval’ только в воркере — воркер и есть граница безопасности). Главный поток держит Svelte 5 UI и зеркальную TuringMachine, которая повторяет команды воркера шаг за шагом, обновляя анимированную ленту; между потоками — только plain data через postMessage. Vite, CodeMirror 6 с Lezer-проверкой синтаксиса до запуска, Playwright e2e
15-puzzle
·демо·GPL-3.0Игра «пятнашки» как цепочка уровней, доступ к которым гарантируется подписями Ed25519. SPA на ванильном JS + Vite в паре с Node-сервисом без рантайм-зависимостей: доски детерминированно генерируются (mulberry32 + Фишер—Йейтс + проверка решаемости по чётности), сервер переигрывает присланные ходы перед подписью. URL уровней — нечитаемые 16-символьные hex-хеши, каждый подписанный блоб указывает только на следующий уровень, так что цепочка обеспечивается и на уровне URL
minesweeper
·демо·GPL-3.0Очередной сапёр. Игровое ядро на ванильном TypeScript без зависимостей от DOM или canvas, отдельный canvas-рендерер с предзаготовленными оффскрин-спрайтами и pick-канвасом для определения попаданий по цвету — без геометрии. С учётом devicePixelRatio. Покрыт тестами на Jest
@turing-machine-js/machine
·GPL-3.0npm-монорепозиторий: ядро @turing-machine-js/machine (State, Tape, TapeBlock, TuringMachine) с round-trip-сериализацией графа состояний через Mermaid, плюс две библиотеки двоичной арифметики с одинаковым набором операций, но разными алфавитами — 5-символьный маркер-вариант (несколько чисел на одной ленте) и 3-символьный bare-вариант (одно число) — чтобы наглядно показать trade-off между размером алфавита и количеством состояний. Coveralls, GitHub Actions CI
@post-machine-js/machine
·GPL-3.0Конструктор машин Поста, компилирующий набор инструкций в State-граф @turing-machine-js/machine под капотом — обе библиотеки делят одну инстанцию ядра через peer-dependency. Поддерживает подпрограммы (call), inline-группы инструкций (1: [mark, right, mark]) и ветвление через check. Опубликовано в npm
@mellonis/typograf-artlebedev
·MITTypeScript-обёртка над SOAP-сервисом «Типограф» Артемия Лебедева — кавычки-ёлочки, тире и неразрывные пробелы вокруг коротких слов, без локального движка правил. Результат — discriminated union: либо обработанный текст, либо одна из четырёх типизированных ошибок (network_error, timeout, aborted, service_error). Таймауты через AbortSignal.any (Node 22.5+), внешний AbortSignal для отмены. Без рантайм-зависимостей
@form-validator-js/core
·демо·MITДекларативный валидатор HTML-форм на ванильном TypeScript — правила пишутся в data-атрибутах на полях, форма автоматически получает novalidate, рендеринг ошибок остаётся за приложением. Поддерживает кросс-полевую реактивность (ввод в password ре-валидирует confirm через observable-проводку equalsTo), три режима тайминга (blur-then-input по умолчанию) и поля, привязанные снаружи через атрибут form. При невалидной отправке делает stopImmediatePropagation, чтобы остальные submit-обработчики не видели неуспешную попытку