Перейти к содержимому

bridge-schema

@vkma.dev/bridge-schema — JSON Schema каталог всех событий VK Bridge: request props методов, данные ответов и событий, проводка Result/Failed, с типами TypeScript поверх. Референсный каталог — VKCOM/vk-bridge (MIT).

Окно терминала
npm install @vkma.dev/bridge-schema

Корневой entrypoint экспортирует типы полезных нагрузок и три карты каталога:

  • RequestPropsMap: request props каждого отправляемого метода
  • ReceiveDataMap: данные каждого принимаемого события
  • ReceiveEventMap: проводка метода к именам его событий Result/Failed
import type { RequestPropsMap, UserInfo } from "@vkma.dev/bridge-schema";
type InitProps = RequestPropsMap["VKWebAppInit"];

Карты объявлены interface’ами в корне пакета специально ради declaration merging: добавь свои события (или события прокси-бэкенда) без форков.

declare module "@vkma.dev/bridge-schema" {
interface RequestPropsMap {
VKWebAppMyCustomMethod: { foo: string };
}
interface ReceiveDataMap {
VKWebAppMyCustomMethodResult: { bar: number };
VKWebAppMyCustomMethodFailed: { error_type: string };
}
interface ReceiveEventMap {
VKWebAppMyCustomMethod: {
result: "VKWebAppMyCustomMethodResult";
failed: "VKWebAppMyCustomMethodFailed";
};
}
}

После этого send("VKWebAppMyCustomMethod", { foo: "x" }) полностью типизирован через @vkma.dev/bridge (он резолвит типы ответов по этим картам).

Два правила:

  • Цель аугментации — @vkma.dev/bridge-schema. Мерджится только модуль, объявляющий интерфейсы; реэкспорты не мерджатся.
  • Только расширение. TS interface merging не меняет существующие члены; правки встроенного каталога едут релизами схемы.

@vkma.dev/bridge-schema/schema экспортирует сырой JSON-документ для рантайм-потребителей: панелей devtools, инспекторов, валидаторов.