Реестры: модель данных (детально)
Единая модель: лаунчер и любое расширение кладут значения под строковым 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.* (кратко)
Навигация и платформа
registryId | Payload | Назначение |
|---|---|---|
core.page | CorePageItem | Экран приложения |
core.nav | CoreNavItem | Пункт меню |
core.sidebar | CoreSidebarItem | Сайдбар |
core.shell | Component | Оверлей |
core.userStrip | Component | Действия у профиля |
core.theme | ThemeDefinition | Тема |
core.loader | BaseLoader | Лоадер Minecraft |
core.modProvider | ModMarketplaceProvider | Источник модов |
core.fileEditor | FileEditorProvider | Редактор файлов IDE |
Keyed: аккаунты и инвайты
registryId | Ключ | Payload |
|---|---|---|
core.accountProvider | provider.id | IAuthProvider |
core.inviteHandler | invite.type | InviteHandlerRegistration |
Визуальные слоты (паттерн B, Component)
Десятки точек: TopBar, сайдбар, экраны, карточки сущностей, деталки, редактор сборки, Markdown, диалоги. Полный перечень — справочник core.*.
Хелперы: useExtensionPageRegistry(), useBuildCardActionsRegistry(), useInviteHandlerRegistry(), … — экспорт @rynt/sdk/extension.
Запись из расширения
ctx.registerRegistryEntry({ registryId, key, value, order }) или use…Registry().register(...) — см. встраивание.
Свой registryId
- Стабильная строка (
<manifest.id>.<роль>). defineExtensionRegistry<MyRow>('…')- Манифест:
declaresRegistries - Запись через
registerилиctx.registerRegistryEntry
Чужой реестр
getExtensionRegistryиз@rynt/sdk/extension- Манифест:
extensionDependencies,extendsRegistries
Типизация: ExtensionRegistryPayloadMap — Типизация контрактов.
Устаревшее API
Отдельные функции «от хоста / от расширения» заменены единым register и scope.
Дальше: свои реестры, справочник core.*.