Вся кодовая база Silurus написана ИИ-ассистентом Claude от Anthropic. Ни одной строчки человеческого кода в репозитории нет. Это набор библиотек для рендеринга Office Open XML документов (DOCX, XLSX, PPTX) прямо в браузере на HTML Canvas.
Парсеры написаны на Rust и скомпилированы в WebAssembly. Рендереры рисуют через Canvas 2D API. Каждый формат (DocxDocument, XlsxWorkbook, PptxPresentation) умеет работать без встроенного вьювера — можно подсунуть свой canvas и собрать интерфейс самому.
Установка через npm: @silurus/ooxml. В пакет встроены .wasm файлы, для Vite нужен vite-plugin-wasm, для webpack — experiments.asyncWebAssembly. Размер бандла сильно зависит от того, что импортировать. Математический движок (MathJax + STIX Two Math, ~3 МБ) подключается опционально отдельным импортом @silurus/ooxml/math. Если его не использовать, сборщик его выкинет.
Архитектура одинаковая для всех форматов: в Web Worker парсер на WASM превращает архив в JSON-модель и отдаёт на главный поток, где рендерер рисует на canvas. Рендеринг на главном потоке — осознанное решение, чтобы canvas работал с тем же FontFaceSet, что и страница. Иначе OffscreenCanvas в воркере использовал бы системные шрифты и текст поехал бы.
Отдельный пакет @silurus/ooxml-core содержит общие примитивы: рендерер графиков (bar, line, area, radar, waterfall), хелперы для фигур, autoResize и общие типы. В статье приведены примеры интеграции с React 19, Vue 3.5, Angular 19, Svelte 5, SolidJS 1.9 и Qwik 2 — компоненты для каждого фреймворка.
Функциональность покрывает основные возможности Office: заголовки, таблицы, изображения, списки, гиперссылки, заливки, градиенты, диаграммы, спарклайны, темы оформления, условное форматирование для XLSX, 130+ предустановленных геометрий фигур для PPTX. Есть даже рендеринг чернил и рукописного ввода. Выделение текста пока сделано через прозрачный DOM-оверлей, но в будущем планируют перейти на нативный Canvas drawElement API.
В репозитории есть ещё бонусы: CLI ooxml-md для конвертации в GitHub-flavoured markdown, Node.js пакет @silurus/ooxml-node для CI и скриптов, VS Code расширение ooxml-viewer, и Rust MCP сервер ooxml-mcp-server — он даёт AI-агентам (Claude, Copilot) структурированный доступ к OOXML файлам.
Безопасность: только canvas-рендеринг, никакой активный контент в DOM не выполняется. ZIP-бомбы блокируются лимитом 512 МБ на entry (можно поднять). Нет телеметрии, шрифты с Google Fonts не грузятся без явного флага. XML парсится через roxmltree — он не резолвит внешние сущности, так что XXE не страшен. Лицензия — MIT.