Skip to content

Расширения (@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
extensionRouteSlugSlug для маршрута расширения

Реестры (Registries)

Полный справочник всех встроенных core.* (визуальные слоты, карточки, деталки, keyed-реестры): Справочник core.*.

Встроенные use-методы (основные)

ЭкспортRegistryIdТип значения
useExtensionPageRegistrycore.pageCorePageItem
useExtensionNavRegistrycore.navCoreNavItem
useExtensionSidebarRegistrycore.sidebarCoreSidebarItem
useExtensionShellRegistrycore.shellComponent
useExtensionUserStripRegistrycore.userStripComponent
useLoaderRegistrycore.loaderBaseLoader
useModProviderRegistrycore.modProviderModMarketplaceProvider
useAccountProviderRegistrycore.accountProviderIAuthProvider
useInviteHandlerRegistrycore.inviteHandlerInviteHandlerRegistration
useThemeRegistrycore.themeThemeDefinition
useBuildCardActionsRegistrycore.buildCardActionsComponent
useModManageActionsRegistrycore.modManageActionsComponent

Остальные 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_IDID хоста (лаунчера)
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