Skip to content

Реестры: модель данных (детально)

Единая модель: лаунчер и любое расширение кладут значения под строковым registryId и ключом key. У записи есть автор (extensionId, для лаунчера — 'rynt'), порядок сортировки и значение типа T.

Полный справочник всех core.* с примерами: Справочник core.*.

Автор записи

  • Запись из setup расширения относится к manifest.id.
  • Записи лаунчера помечаются extensionId === 'rynt' (HOST_EXTENSION_ID).

Вызов register(key, value, order?) не принимает id автора — платформа определяет его по контексту.

API одного реестра

Тип ExtensionRegistryApi<T> — в @rynt/sdk.

  • register(key, value, order?)
  • get, has, keys, getAll, entries(), keyValuePairs()
  • getMeta, delete(key)

Для UI: RegistryRow<T>registryKey, extensionId, order?, value.

Паттерны A и B

ПаттернПотреблениеПримеры registryId
A (keyed)get(semanticKey)core.loader, core.modProvider, core.accountProvider, core.inviteHandler
B (list)entries()core.page, core.buildCardActions, core.feedBeforeContent, …

Подробнее и таблицы по группам — в справочнике core.*.

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

Навигация и платформа

registryIdPayloadНазначение
core.pageCorePageItemЭкран приложения
core.navCoreNavItemПункт меню
core.sidebarCoreSidebarItemСайдбар
core.shellComponentОверлей
core.userStripComponentДействия у профиля
core.themeThemeDefinitionТема
core.loaderBaseLoaderЛоадер Minecraft
core.modProviderModMarketplaceProviderИсточник модов
core.fileEditorFileEditorProviderРедактор файлов IDE

Keyed: аккаунты и инвайты

registryIdКлючPayload
core.accountProviderprovider.idIAuthProvider
core.inviteHandlerinvite.typeInviteHandlerRegistration

Визуальные слоты (паттерн B, Component)

Десятки точек: TopBar, сайдбар, экраны, карточки сущностей, деталки, редактор сборки, Markdown, диалоги. Полный перечень — справочник core.*.

Хелперы: useExtensionPageRegistry(), useBuildCardActionsRegistry(), useInviteHandlerRegistry(), … — экспорт @rynt/sdk/extension.

Запись из расширения

ctx.registerRegistryEntry({ registryId, key, value, order }) или use…Registry().register(...) — см. встраивание.

Свой registryId

  1. Стабильная строка (<manifest.id>.<роль>).
  2. defineExtensionRegistry<MyRow>('…')
  3. Манифест: declaresRegistries
  4. Запись через register или ctx.registerRegistryEntry

Чужой реестр

  • getExtensionRegistry из @rynt/sdk/extension
  • Манифест: extensionDependencies, extendsRegistries

Типизация: ExtensionRegistryPayloadMapТипизация контрактов.

Устаревшее API

Отдельные функции «от хоста / от расширения» заменены единым register и scope.


Дальше: свои реестры, справочник core.*.