Расширения (@rynt/sdk/extension)
Путь @rynt/sdk/extension — основной API для разработки расширений: регистрация, реестры, expose, entity-компоненты, модели, лоадеры.
Определение расширения
ts
import { defineRyntExtension, resolvedNavigationPath } from '@rynt/sdk/extension';
export default defineRyntExtension((ctx) => {
// context — объект с методами регистрации
});| Экспорт | Описание |
|---|---|
defineRyntExtension | Фабрика расширения. Принимает (ctx) => { ... } |
resolvedNavigationPath | Строит стабильный URL для страницы: (extensionId, slug) => string |
extensionRouteSlug | Slug для маршрута расширения |
Реестры (Registries)
Полный справочник всех встроенных core.* (визуальные слоты, карточки, деталки, keyed-реестры): Справочник core.*.
Встроенные use-методы (основные)
| Экспорт | RegistryId | Тип значения |
|---|---|---|
useExtensionPageRegistry | core.page | CorePageItem |
useExtensionNavRegistry | core.nav | CoreNavItem |
useExtensionSidebarRegistry | core.sidebar | CoreSidebarItem |
useExtensionShellRegistry | core.shell | Component |
useExtensionUserStripRegistry | core.userStrip | Component |
useLoaderRegistry | core.loader | BaseLoader |
useModProviderRegistry | core.modProvider | ModMarketplaceProvider |
useAccountProviderRegistry | core.accountProvider | IAuthProvider |
useInviteHandlerRegistry | core.inviteHandler | InviteHandlerRegistration |
useThemeRegistry | core.theme | ThemeDefinition |
useBuildCardActionsRegistry | core.buildCardActions | Component |
useModManageActionsRegistry | core.modManageActions | Component |
Остальные use*Registry для TopBar, экранов, деталок, Markdown — см. справочник.
Низкоуровневые API
Из @rynt/sdk/extension (и @rynt/sdk/extension/registries):
ts
import { getExtensionRegistry, defineExtensionRegistry, getRegistry, setRegistryItem, getRegistryItem } from '@rynt/sdk/extension';| Экспорт | Описание |
|---|---|
getExtensionRegistry | Получить API реестра по registryId |
defineExtensionRegistry | Создать свой реестр с типизированной use-функцией |
getRegistry | Низкоуровневый доступ к реестру |
setRegistryItem | Установить запись |
getRegistryItem | Получить запись по ключу |
hasRegistryItem | Проверить существование записи |
deleteRegistryItem | Удалить запись |
listRegistryKeys | Список ключей реестра |
listRegistryEntries | Список записей |
listRegistryValuesSorted | Значения, отсортированные по order |
getRegistryEntryMeta | Мета-информация записи (автор, порядок) |
getCurrentExtensionId | Текущий ID расширения в контексте |
HOST_EXTENSION_ID | ID хоста (лаунчера) |
extensionRegistriesRevision | Реактивный счётчик изменений реестров |
withExtensionScope | Выполнить код в контексте расширения |
pushExtensionScope / popExtensionScope | Управление стеком контекста |
resetExtensionRegistries | Сброс всех реестров |
Типы реестров
ts
import type { CoreNavItem, CorePageItem, CoreSidebarItem, RegistryEntry, RegistryEntryMeta, RegistryRow, UseExtensionRegistry } from '@rynt/sdk/extension';Расширение карт типов
Для типизации своих реестров и expose:
ts
declare module '@rynt/sdk/extension-registry-payload-map' {
interface ExtensionRegistryPayloadMap {
'@acme/my-registry': MyRowType;
}
}ts
declare module '@rynt/sdk/extension-expose-map' {
interface ExtensionExposeMap {
'@acme/my-extension': MyExposeApi;
}
}Expose (внешний API)
| Экспорт | Описание |
|---|---|
useExtensionExpose | Получить API другого расширения по manifest.id |
getExtensionExpose | То же, без реактивности |
extensionExposeRevision | Реактивный счётчик изменений |
Сторы (defineStore)
ts
import { defineStore } from '@rynt/sdk/extension';| Экспорт | Описание |
|---|---|
defineStore | Создать singleton-стор с реактивным состоянием |
Модели (useModel)
ts
import { useModel, RYNT_LAUNCHER_MODEL_KEYS } from '@rynt/sdk/extension';| Экспорт | Описание |
|---|---|
useModel | Доступ к модели данных лаунчера по ключу |
RYNT_LAUNCHER_MODEL_KEYS | Массив всех доступных ключей |
RyntLauncherModelKey | Тип ключа модели |
Подробнее — в разделе Модели.
Entity-компоненты
Полный список entity-компонентов — в разделе UI / Entity-компоненты.
Лоадеры Minecraft
ts
import { BaseLoader, loaderRegistry } from '@rynt/sdk/extension';| Экспорт | Описание |
|---|---|
BaseLoader | Базовый класс лоадера Minecraft |
loaderRegistry | Реестр зарегистрированных лоадеров |
Маршрутизация
ts
import { attachExtensionRoutes, detachExtensionRoutes, syncExtensionRoutes } from '@rynt/sdk/extension';Для использования хостом (обычно не требуется в расширениях).
Манифест
ts
import { parseRyntManifestJson, topoSortExtensions, EXTENSION_API_VERSION } from '@rynt/sdk/extension';| Экспорт | Описание |
|---|---|
parseRyntManifestJson | Парсинг манифеста из JSON |
topoSortExtensions | Топологическая сортировка расширений по зависимостям |
EXTENSION_API_VERSION | Текущая версия API расширений |
applyValidatedRyntContributesToManifest | Применить validated contributes к манифесту |
validateRyntManifestContributes | Валидация contributes.rynt |