• v1.0.0 2f391db4b4

    v1.0.0 Stable

    github-actions[bot] released this 2026-04-22 15:44:33 +00:00 | 27 commits to main since this release

       🚀 Features

    • Реализован @coopenomics/parser2 v0.1.0 (Epic 2) — ядро индексера для публикации блокчейн-событий в Redis unified stream  -  by coopops and Claude Sonnet 4.6 (76312)
    • Реализован ParserClient + Subscription Manager (Epic 3) — single-active-consumer с lock/recovery для надёжной доставки событий блокчейна  -  by coopops and Claude Sonnet 4.6 (a98aa)
    • Реализован Epic 4 AbiStore + AbiBootstrapper — исторический ABI в Redis ZSET без падений при reparse  -  by coopops and Claude Sonnet 4.6 (2b633)
    • Реализован Epic 5 Subscription Lifecycle CLI — операторское управление подписками и ABI без ручных Redis команд  -  by coopops and Claude Sonnet 4.6 (b698c)
    • Реализован Epic 6 Native-Deltas End-to-End — эмиссия NativeDeltaEvent для всех нативных таблиц SHiP в единый Redis-стрим  -  by coopops and Claude Sonnet 4.6 (7d38a)
    • Реализован Epic 7 Dead-Letter Queue CLI — инспекция и replay poison-messages без остановки pipeline  -  by coopops and Claude Sonnet 4.6 (22574)
    • Добавить Pino-логгер, метрики Prometheus и /health HTTP endpoint — обеспечить операционную наблюдаемость парсера без внешней инструментации  -  by coopops and Claude Sonnet 4.6 (cc341)
    • Добавить ForkDetector, ReconnectSupervisor и режим irreversibleOnly — автоматически восстанавливаться после форков и обрывов соединения без ручного вмешательства оператора  -  by coopops and Claude Sonnet 4.6 (2f0e1)
    • V1.0.0 — пример verifier-like, три документа, бенчмарк-отчёт, CI/CD pipeline и Dockerfile — обеспечить готовность пакета к публичному релизу  -  by coopops and Claude Sonnet 4.6 (ac25c)
    • test: Добавить end-to-end integration тест с реальным блокчейном — убедиться что парсер захватывает eosio.token::transfer от SHiP до ParserClient  -  by coopops and Claude Sonnet 4.6 (748c4)

       🐞 Bug Fixes

    • Убрать @eosrio/node-abieos из optionalDependencies и обновить CI — устранить рассинхрон lockfile и deprecation warning pnpm/action-setup@v3  -  by coopops and Claude Sonnet 4.6 (fb21b)
    • XREADGROUP передавал consumer name дважды, тест использовал transfer вместо issue — у coopenomics-fork eosio.token есть проверка членства получателя в wallet program, а синтаксис XREADGROUP GROUP требует ровно 3 аргумента  -  by coopops (6a37d)
    • build:
      • Собирать deserialize.worker.cjs, перевести пакет на ESM-only — Piscina требует отдельный .cjs файл, а top-level await несовместим с CJS форматом  -  by coopops (57b3b)
    • ci:
      • Собирать ship-reader перед typecheck/test — TypeScript не находил .d.ts зависимого workspace пакета без предварительного build  -  by coopops (bf79f)
      • Запускать nodeos явно через docker run — образ dicoop/blockchain не имеет CMD, services: не поддерживает передачу команды  -  by coopops (f5fbe)
      • Смонтировать node-config как read-write — nodeos создаёт protocol_features/ внутри config-dir при старте  -  by coopops (06ed9)
    • docker:
      • Обновить пути parser2→parser, убрать несуществующий корневой LICENSE/NOTICE, переключить ENTRYPOINT на ESM index.js — Docker build падал с '/LICENSE: not found' после переименования папки и отсутствия корневой лицензии; теперь используем per-package LICENSE+NOTICE что также правильнее для атрибуции  -  by coopops (a625b)
    • parser:
      • Сериализовать BigInt как string в eventToFields — JSON.stringify не умеет BigInt, action.global_sequence уходил в Redis как ошибка  -  by coopops (d8491)
      • Использовать abi.toJSON() вместо JSON.stringify(abi) — wharfkit ABI-объект сериализуется во внутренний формат вместо канонической схемы, из-за чего worker.Serializer.decode не находил типы  -  by coopops (1414a)
    • ship-reader:
      • Распаковывать action receipt variant-tuple — SHiP может отдавать receipt как [variantName, data], BigInt(undefined) ломал decodeBlocksResult  -  by coopops (7579b)
      • Брать global_sequence из receipt — в action_trace_v1 top-level global_sequence отсутствует, только в action_receipt  -  by coopops (6166a)
      • Конвертировать block_id и chain_id в строки — wharfkit ABI decoder возвращает Checksum256 объект, а downstream код ожидает hex-строку (blockId.slice())  -  by coopops (6db2e)
      • Конвертировать wharfkit Name объекты в строки — trace.account/name приходили как Name (не string), worker.Serializer.decode пытался синтезировать ABI из Name-класса и падал на abiName  -  by coopops (7ab33)
    • test:
      • Сериализовать action data локально через @wharfkit/antelope — эндпоинт /v1/chain/abi_json_to_bin удалён в LEAP 5.x  -  by coopops (5387e)
      • Общий keyPrefix для Parser и ParserClient — Date.now() в двух местах давал разные префиксы, клиент не находил consumer group  -  by coopops (aac54)
      • Убрать keyPrefix и добавить FLUSHDB — ioredis keyPrefix не применялся к XGROUP CREATE что вызывало NOGROUP между Parser (писатель) и ParserClient (читатель)  -  by coopops (4b6fc)
        View changes on GitHub
    Downloads