Skip to content

Модель реестров

Идея

Есть именованные реестры (registryId — строка, например core.page или @rynt/chats-calls.message-types).

Внутри реестра — записи по ключу (key + value + метаданные автора).

text
registryId  →  Map<key, { value, extensionId, order? }>

Кто угодно может:

  1. Объявить реестр (создать именованную зону) — в манифесте declaresRegistries, в runtime — первая запись / defineExtensionRegistry / getExtensionRegistry.
  2. Пополнить реестр под своим ключом — в манифесте extendsRegistries, в runtime — register(key, value) или ctx.registerRegistryEntry.

Автор записи в runtime: extensionId из manifest.id расширения или rynt для кода лаунчера.

Встроенные реестры ядра (core.*)

Объявлены в @rynt/sdk/extension (встроенные core.*).

Кратко — навигация, лоадеры, провайдеры, ~60 визуальных слотов (карточки, деталки, TopBar, Markdown), keyed-реестры accountProvider и inviteHandler.

Полный справочник с use-функциями, props и примерами: Справочник core.*.

registryIdНазначение
core.pageЭкран (маршрут + компонент)
core.navПункт главного меню
core.sidebarСлот сайдбара
core.shellОверлей оболочки
core.userStripДействия у профиля
core.loaderЛоадер Minecraft
core.modProviderПровайдер маркетплейса модов
core.fileEditorРедактор файла по расширению
core.themeТема оформления
core.accountProviderПровайдер входа (OAuth / offline / …)
core.inviteHandlerОбработчик инвайта по invite.type
core.*CardActions, *BeforeContent, …Визуальные слоты UI — см. справочник

Записи по умолчанию для loader / modProvider / fileEditor / theme / accountProvider / inviteHandler регистрирует лаунчер при старте (registerBuiltinRegistryEntries, registerBuiltinInviteHandlers).

Реестры расширений

Расширение-владелец задаёт свой registryId (обычно <manifest.id>.<роль>) и объявляет его в declaresRegistries.

Другие расширения пополняют реестр, указывая в манифесте extendsRegistries те же registryId и конкретные keys.

Пример: @rynt/chats-calls объявляет @rynt/chats-calls.message-types; @rynt/chats-message-sample расширяет ключ demo_ping.

Отдельно: launcher entities

registerLauncherEntityне реестр registryId/key. Это фиксированные ключи UI-виджетов (user_item, build_card, …), реализации которых регистрирует только хост. В маркетплейсе слотов не индексируется.

Expose

defineExpose — публичный объект API между расширениями по manifest.id, не путать с реестром слотов.

Сценарий «слот не заполнен»

  • Лаунчер: при отсутствии записи можно показать кнопку установки (см. 06-launcher-ui.md).
  • Каталог: ищет расширения, у которых в манифесте есть этот слот в extendsRegistries (см. 05-marketplace-service.md).