@rynt/sdk 0.9.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/README.md +122 -0
  2. package/REGISTRIES.md +189 -0
  3. package/env.d.ts +11 -0
  4. package/host-shims.d.ts +30 -0
  5. package/package.json +88 -0
  6. package/src/extension-marketplace/api-types.ts +141 -0
  7. package/src/extension-marketplace/client.ts +296 -0
  8. package/src/extension-marketplace/index.ts +22 -0
  9. package/src/extension-marketplace/schemas.ts +178 -0
  10. package/src/extensions/ExtensionRoutePage.vue +17 -0
  11. package/src/extensions/context.ts +37 -0
  12. package/src/extensions/disabled-folder.ts +21 -0
  13. package/src/extensions/extension-expose-map.ts +5 -0
  14. package/src/extensions/extension-expose.ts +48 -0
  15. package/src/extensions/graph.ts +67 -0
  16. package/src/extensions/index.ts +251 -0
  17. package/src/extensions/invite-handler/types.ts +20 -0
  18. package/src/extensions/launcher-entities/create-launcher-entity.ts +25 -0
  19. package/src/extensions/launcher-entities/keys.ts +46 -0
  20. package/src/extensions/launcher-entities/launcher-entity-components.ts +177 -0
  21. package/src/extensions/launcher-entities/props-map.ts +69 -0
  22. package/src/extensions/launcher-entities/registry.ts +32 -0
  23. package/src/extensions/launcher-models/apis/accounts-contracts.ts +102 -0
  24. package/src/extensions/launcher-models/apis/launcher-model-apis.ts +553 -0
  25. package/src/extensions/launcher-models/keys.ts +23 -0
  26. package/src/extensions/launcher-models/public.ts +9 -0
  27. package/src/extensions/launcher-models/registry-core.ts +34 -0
  28. package/src/extensions/manifest-types.ts +22 -0
  29. package/src/extensions/manifest.ts +46 -0
  30. package/src/extensions/marketplace-open-key.ts +26 -0
  31. package/src/extensions/plugin-types.ts +44 -0
  32. package/src/extensions/plugin.ts +62 -0
  33. package/src/extensions/registries/bootstrap.ts +11 -0
  34. package/src/extensions/registries/builtins/account-provider.ts +6 -0
  35. package/src/extensions/registries/builtins/app-topbar-left-widgets.ts +6 -0
  36. package/src/extensions/registries/builtins/app-topbar-right-widgets.ts +6 -0
  37. package/src/extensions/registries/builtins/app-topbar-status-widgets.ts +6 -0
  38. package/src/extensions/registries/builtins/build-card-actions.ts +6 -0
  39. package/src/extensions/registries/builtins/build-card-after-meta.ts +6 -0
  40. package/src/extensions/registries/builtins/build-card-before-media.ts +6 -0
  41. package/src/extensions/registries/builtins/build-card-before-meta.ts +6 -0
  42. package/src/extensions/registries/builtins/build-card-footer-actions.ts +6 -0
  43. package/src/extensions/registries/builtins/build-detail-after-content.ts +6 -0
  44. package/src/extensions/registries/builtins/build-detail-before-content.ts +6 -0
  45. package/src/extensions/registries/builtins/build-detail-before-hero.ts +6 -0
  46. package/src/extensions/registries/builtins/build-detail-header-actions.ts +6 -0
  47. package/src/extensions/registries/builtins/build-detail-mod-row-actions.ts +6 -0
  48. package/src/extensions/registries/builtins/build-detail-resourcepack-row-actions.ts +6 -0
  49. package/src/extensions/registries/builtins/build-detail-right-column-bottom.ts +6 -0
  50. package/src/extensions/registries/builtins/build-detail-right-column-top.ts +6 -0
  51. package/src/extensions/registries/builtins/dialog-footer-actions.ts +6 -0
  52. package/src/extensions/registries/builtins/feed-after-content.ts +6 -0
  53. package/src/extensions/registries/builtins/feed-before-content.ts +6 -0
  54. package/src/extensions/registries/builtins/file-editor.ts +19 -0
  55. package/src/extensions/registries/builtins/friends-after-list.ts +6 -0
  56. package/src/extensions/registries/builtins/friends-before-list.ts +6 -0
  57. package/src/extensions/registries/builtins/index.ts +141 -0
  58. package/src/extensions/registries/builtins/invite-handler.ts +7 -0
  59. package/src/extensions/registries/builtins/library-after-content.ts +6 -0
  60. package/src/extensions/registries/builtins/library-before-content.ts +6 -0
  61. package/src/extensions/registries/builtins/loader.ts +8 -0
  62. package/src/extensions/registries/builtins/map-card-actions.ts +6 -0
  63. package/src/extensions/registries/builtins/map-card-after-meta.ts +6 -0
  64. package/src/extensions/registries/builtins/map-card-before-meta.ts +6 -0
  65. package/src/extensions/registries/builtins/map-card-footer-actions.ts +6 -0
  66. package/src/extensions/registries/builtins/map-detail-after-content.ts +6 -0
  67. package/src/extensions/registries/builtins/map-detail-before-content.ts +6 -0
  68. package/src/extensions/registries/builtins/map-detail-header-actions.ts +6 -0
  69. package/src/extensions/registries/builtins/markdown-editor-tiptap-extensions.ts +7 -0
  70. package/src/extensions/registries/builtins/markdown-editor-toolbar-actions.ts +6 -0
  71. package/src/extensions/registries/builtins/markdown-renderer-after-content.ts +6 -0
  72. package/src/extensions/registries/builtins/markdown-renderer-before-content.ts +6 -0
  73. package/src/extensions/registries/builtins/mod-details-footer-actions.ts +6 -0
  74. package/src/extensions/registries/builtins/mod-manage-actions.ts +6 -0
  75. package/src/extensions/registries/builtins/mod-provider.ts +5 -0
  76. package/src/extensions/registries/builtins/nav.ts +7 -0
  77. package/src/extensions/registries/builtins/page.ts +13 -0
  78. package/src/extensions/registries/builtins/projects-after-content.ts +6 -0
  79. package/src/extensions/registries/builtins/projects-before-content.ts +6 -0
  80. package/src/extensions/registries/builtins/resourcepack-manage-actions.ts +7 -0
  81. package/src/extensions/registries/builtins/server-card-actions.ts +6 -0
  82. package/src/extensions/registries/builtins/server-card-after-meta.ts +6 -0
  83. package/src/extensions/registries/builtins/server-card-before-meta.ts +6 -0
  84. package/src/extensions/registries/builtins/server-card-footer-actions.ts +6 -0
  85. package/src/extensions/registries/builtins/server-detail-after-content.ts +6 -0
  86. package/src/extensions/registries/builtins/server-detail-before-content.ts +6 -0
  87. package/src/extensions/registries/builtins/server-detail-header-actions.ts +6 -0
  88. package/src/extensions/registries/builtins/settings-after-sections.ts +6 -0
  89. package/src/extensions/registries/builtins/settings-before-sections.ts +6 -0
  90. package/src/extensions/registries/builtins/settings-section-widgets.ts +6 -0
  91. package/src/extensions/registries/builtins/shaderpack-manage-actions.ts +7 -0
  92. package/src/extensions/registries/builtins/shell.ts +5 -0
  93. package/src/extensions/registries/builtins/sidebar-after-content.ts +6 -0
  94. package/src/extensions/registries/builtins/sidebar-before-content.ts +6 -0
  95. package/src/extensions/registries/builtins/sidebar-footer-widgets.ts +6 -0
  96. package/src/extensions/registries/builtins/sidebar-header-widgets.ts +6 -0
  97. package/src/extensions/registries/builtins/sidebar.ts +11 -0
  98. package/src/extensions/registries/builtins/theme.ts +5 -0
  99. package/src/extensions/registries/builtins/user-card-after-meta.ts +6 -0
  100. package/src/extensions/registries/builtins/user-card-before-meta.ts +6 -0
  101. package/src/extensions/registries/builtins/user-menu-actions.ts +6 -0
  102. package/src/extensions/registries/builtins/user-menu-after-actions.ts +6 -0
  103. package/src/extensions/registries/builtins/user-menu-before-actions.ts +6 -0
  104. package/src/extensions/registries/builtins/user-strip.ts +5 -0
  105. package/src/extensions/registries/clear-extension-ui-registries.ts +15 -0
  106. package/src/extensions/registries/define-extension-registry.ts +58 -0
  107. package/src/extensions/registries/extension-host-api.ts +41 -0
  108. package/src/extensions/registries/extension-registry-api.ts +103 -0
  109. package/src/extensions/registries/extension-registry-payload-map.ts +9 -0
  110. package/src/extensions/registries/extension-scope.ts +41 -0
  111. package/src/extensions/registries/get-registry.ts +23 -0
  112. package/src/extensions/registries/index.ts +58 -0
  113. package/src/extensions/registries/manifest-rynt.ts +193 -0
  114. package/src/extensions/registries/registry-slot.ts +40 -0
  115. package/src/extensions/registries/registry-value-map.ts +89 -0
  116. package/src/extensions/registries/store.ts +206 -0
  117. package/src/extensions/resolve-extensions.ts +245 -0
  118. package/src/extensions/router-bridge.ts +103 -0
  119. package/src/extensions/session.ts +6 -0
  120. package/src/extensions/slug.ts +23 -0
  121. package/src/extensions/version.ts +147 -0
  122. package/src/host/extensions-composables.ts +33 -0
  123. package/src/host/extensions-init.ts +194 -0
  124. package/src/host/index.ts +11 -0
  125. package/src/host/launcher-models/index.ts +4 -0
  126. package/src/index.ts +229 -0
  127. package/src/minecraft-loader/base-loader.ts +102 -0
  128. package/src/minecraft-loader/index.ts +11 -0
  129. package/src/minecraft-loader/loader-registry.ts +72 -0
  130. package/src/shared/api/assets.ts +112 -0
  131. package/src/shared/api/auth.ts +283 -0
  132. package/src/shared/api/builds.ts +647 -0
  133. package/src/shared/api/config.ts +19 -0
  134. package/src/shared/api/download-stats.ts +103 -0
  135. package/src/shared/api/downloads.ts +36 -0
  136. package/src/shared/api/entity-authorship.ts +60 -0
  137. package/src/shared/api/events.ts +393 -0
  138. package/src/shared/api/friends.ts +140 -0
  139. package/src/shared/api/graphql.ts +87 -0
  140. package/src/shared/api/index.ts +23 -0
  141. package/src/shared/api/invites.ts +262 -0
  142. package/src/shared/api/library.ts +44 -0
  143. package/src/shared/api/maps.ts +385 -0
  144. package/src/shared/api/notify-websocket.ts +140 -0
  145. package/src/shared/api/posts.ts +357 -0
  146. package/src/shared/api/projectServers.ts +379 -0
  147. package/src/shared/api/serverMembers.ts +173 -0
  148. package/src/shared/api/users.ts +294 -0
  149. package/src/shared/composables/buildEditor/useBuildEditor.ts +66 -0
  150. package/src/shared/composables/buildManifest/buildManifest.ts +447 -0
  151. package/src/shared/composables/filesEditor/filesEditor.ts +346 -0
  152. package/src/shared/composables/index.ts +10 -0
  153. package/src/shared/composables/modsEditor/modsEditor.ts +1678 -0
  154. package/src/shared/composables/registrySlot/registry-slot-utils.ts +25 -0
  155. package/src/shared/composables/registrySlot/useRegistrySlotMissing.ts +35 -0
  156. package/src/shared/composables/resourcePacksEditor/resourcePacksEditor.ts +448 -0
  157. package/src/shared/composables/shaderPacksEditor/shaderPacksEditor.ts +395 -0
  158. package/src/shared/composables/useSkinRender.ts +70 -0
  159. package/src/shared/composables/useZlDeepLink.ts +178 -0
  160. package/src/shared/definitions/defineGraphCache.ts +216 -0
  161. package/src/shared/definitions/defineStore.ts +32 -0
  162. package/src/shared/definitions/index.ts +2 -0
  163. package/src/shared/minecraft-types/build-manifest.ts +611 -0
  164. package/src/shared/minecraft-types/index.ts +3 -0
  165. package/src/shared/minecraft-types/launcher-versions.ts +32 -0
  166. package/src/shared/minecraft-types/minecraft-launcher-types.ts +276 -0
  167. package/src/shared/mocks/index.ts +1 -0
  168. package/src/shared/mocks/navigation.ts +17 -0
  169. package/src/shared/mods/http.ts +45 -0
  170. package/src/shared/mods/index.ts +5 -0
  171. package/src/shared/mods/marketplace-editor-search.ts +266 -0
  172. package/src/shared/mods/marketplace-search-utils.ts +42 -0
  173. package/src/shared/mods/mod-marketplace-registry.ts +66 -0
  174. package/src/shared/mods/mod-marketplace-types.ts +28 -0
  175. package/src/shared/mods/providers/curseforge.ts +464 -0
  176. package/src/shared/mods/providers/index.ts +8 -0
  177. package/src/shared/mods/providers/modrinth.ts +402 -0
  178. package/src/shared/mods/resolve-mods-provider-loader-ids.ts +77 -0
  179. package/src/shared/mods/types.ts +76 -0
  180. package/src/shared/styles/index.css +713 -0
  181. package/src/shared/themes/index.ts +23 -0
  182. package/src/shared/themes/theme-tokens-black.json +126 -0
  183. package/src/shared/themes/theme-tokens-classic.json +126 -0
  184. package/src/shared/themes/theme-tokens-pink.json +126 -0
  185. package/src/shared/themes/theme-tokens.json +126 -0
  186. package/src/shared/themes/types.ts +85 -0
  187. package/src/shared/types/API_DOCUMENTATION.md +422 -0
  188. package/src/shared/types/account.ts +40 -0
  189. package/src/shared/types/build.ts +8 -0
  190. package/src/shared/types/entities.ts +181 -0
  191. package/src/shared/types/index.ts +6 -0
  192. package/src/shared/types/invite-payloads.ts +60 -0
  193. package/src/shared/types/navigation.ts +16 -0
  194. package/src/shared/types/running-build.ts +51 -0
  195. package/src/shared/types/serverMember.ts +17 -0
  196. package/src/shared/types/user.ts +55 -0
  197. package/src/shared/ui/base/Avatar.vue +262 -0
  198. package/src/shared/ui/base/Badge.vue +47 -0
  199. package/src/shared/ui/base/Button.vue +78 -0
  200. package/src/shared/ui/base/Divider.vue +42 -0
  201. package/src/shared/ui/base/Icon.vue +597 -0
  202. package/src/shared/ui/base/StatusIndicator.vue +44 -0
  203. package/src/shared/ui/base/index.ts +7 -0
  204. package/src/shared/ui/cards/InviteCard.vue +47 -0
  205. package/src/shared/ui/cards/index.ts +2 -0
  206. package/src/shared/ui/dialog/Dialog.vue +71 -0
  207. package/src/shared/ui/dialog/DialogContent.vue +31 -0
  208. package/src/shared/ui/dialog/DialogFooter.vue +14 -0
  209. package/src/shared/ui/dialog/DialogHeader.vue +41 -0
  210. package/src/shared/ui/dialog/index.ts +5 -0
  211. package/src/shared/ui/editors/AttachmentImagesEditor.vue +133 -0
  212. package/src/shared/ui/editors/ContentAttachmentsDisplay.vue +76 -0
  213. package/src/shared/ui/editors/MarkdownEditor.vue +956 -0
  214. package/src/shared/ui/editors/MarkdownRenderer.vue +299 -0
  215. package/src/shared/ui/editors/RichContentImageViewer.vue +85 -0
  216. package/src/shared/ui/editors/SocialPostMediaZone.vue +320 -0
  217. package/src/shared/ui/editors/index.ts +6 -0
  218. package/src/shared/ui/editors/markdown-editor-gallery.ts +234 -0
  219. package/src/shared/ui/editors/markdown-editor-image.ts +178 -0
  220. package/src/shared/ui/form/Checkbox.vue +38 -0
  221. package/src/shared/ui/form/FormField.vue +30 -0
  222. package/src/shared/ui/form/FormGrid.vue +38 -0
  223. package/src/shared/ui/form/ImageEditor.vue +598 -0
  224. package/src/shared/ui/form/Input.vue +72 -0
  225. package/src/shared/ui/form/Range.vue +65 -0
  226. package/src/shared/ui/form/Select.vue +76 -0
  227. package/src/shared/ui/form/Switch.vue +38 -0
  228. package/src/shared/ui/form/Textarea.vue +144 -0
  229. package/src/shared/ui/form/index.ts +9 -0
  230. package/src/shared/ui/index.ts +9 -0
  231. package/src/shared/ui/layout/BusyOverlay.vue +31 -0
  232. package/src/shared/ui/layout/Callout.vue +44 -0
  233. package/src/shared/ui/layout/Card.vue +38 -0
  234. package/src/shared/ui/layout/Container.vue +36 -0
  235. package/src/shared/ui/layout/EmptyState.vue +99 -0
  236. package/src/shared/ui/layout/EntityMediaRow.vue +54 -0
  237. package/src/shared/ui/layout/FilterResultsLayout.vue +22 -0
  238. package/src/shared/ui/layout/FloatingPanel.vue +37 -0
  239. package/src/shared/ui/layout/FullscreenDimmer.vue +11 -0
  240. package/src/shared/ui/layout/Grid.vue +40 -0
  241. package/src/shared/ui/layout/Inline.vue +59 -0
  242. package/src/shared/ui/layout/LoadingState.vue +39 -0
  243. package/src/shared/ui/layout/MediaBox.vue +47 -0
  244. package/src/shared/ui/layout/OverlayPanel.vue +28 -0
  245. package/src/shared/ui/layout/OverlayWaitPanel.vue +22 -0
  246. package/src/shared/ui/layout/PageSection.vue +43 -0
  247. package/src/shared/ui/layout/PageToolbar.vue +29 -0
  248. package/src/shared/ui/layout/Panel.vue +39 -0
  249. package/src/shared/ui/layout/ProgressBar.vue +49 -0
  250. package/src/shared/ui/layout/Section.vue +30 -0
  251. package/src/shared/ui/layout/SegmentedControl.vue +43 -0
  252. package/src/shared/ui/layout/SelectableCard.vue +46 -0
  253. package/src/shared/ui/layout/SelectableRow.vue +41 -0
  254. package/src/shared/ui/layout/Skeleton.vue +25 -0
  255. package/src/shared/ui/layout/SkeletonAvatar.vue +30 -0
  256. package/src/shared/ui/layout/SkeletonEntityCard.vue +20 -0
  257. package/src/shared/ui/layout/SkeletonFeedPost.vue +22 -0
  258. package/src/shared/ui/layout/SkeletonGrid.vue +18 -0
  259. package/src/shared/ui/layout/SkeletonListRow.vue +31 -0
  260. package/src/shared/ui/layout/SkeletonText.vue +25 -0
  261. package/src/shared/ui/layout/Stack.vue +42 -0
  262. package/src/shared/ui/layout/StateBlock.vue +44 -0
  263. package/src/shared/ui/layout/TwoPaneLayout.vue +35 -0
  264. package/src/shared/ui/layout/VirtualList.vue +160 -0
  265. package/src/shared/ui/layout/index.ts +35 -0
  266. package/src/shared/ui/layout/skeletonSurfaceStyles.ts +24 -0
  267. package/src/shared/ui/navigation/NavItem.vue +139 -0
  268. package/src/shared/ui/navigation/Tab.vue +61 -0
  269. package/src/shared/ui/navigation/Tabs.vue +37 -0
  270. package/src/shared/ui/navigation/index.ts +4 -0
  271. package/src/shared/ui/primitives/Action.vue +19 -0
  272. package/src/shared/ui/primitives/Block.vue +28 -0
  273. package/src/shared/ui/primitives/CanvasView.vue +19 -0
  274. package/src/shared/ui/primitives/Control.vue +24 -0
  275. package/src/shared/ui/primitives/ControlSelect.vue +19 -0
  276. package/src/shared/ui/primitives/ControlTextarea.vue +17 -0
  277. package/src/shared/ui/primitives/FieldLabel.vue +19 -0
  278. package/src/shared/ui/primitives/Form.vue +19 -0
  279. package/src/shared/ui/primitives/Heading.vue +29 -0
  280. package/src/shared/ui/primitives/Image.vue +17 -0
  281. package/src/shared/ui/primitives/LineBreak.vue +3 -0
  282. package/src/shared/ui/primitives/Link.vue +19 -0
  283. package/src/shared/ui/primitives/List.vue +28 -0
  284. package/src/shared/ui/primitives/ListItem.vue +19 -0
  285. package/src/shared/ui/primitives/OptionItem.vue +19 -0
  286. package/src/shared/ui/primitives/Text.vue +28 -0
  287. package/src/shared/ui/primitives/VideoView.vue +19 -0
  288. package/src/shared/ui/primitives/index.ts +19 -0
  289. package/src/shared/ui/primitives/resolveElement.ts +25 -0
  290. package/src/shared/ui/special/AngularAccent.vue +106 -0
  291. package/src/shared/ui/special/ExtensionRegistrySlotButton.vue +143 -0
  292. package/src/shared/ui/special/InfoRow.vue +39 -0
  293. package/src/shared/ui/special/LogViewer.vue +53 -0
  294. package/src/shared/ui/special/PageHeader.vue +23 -0
  295. package/src/shared/ui/special/RegistrySlotMissingCallout.vue +48 -0
  296. package/src/shared/ui/special/WelcomeCard.vue +32 -0
  297. package/src/shared/ui/special/index.ts +9 -0
  298. package/src/shared/utils/app-paths.ts +50 -0
  299. package/src/shared/utils/attachments.ts +16 -0
  300. package/src/shared/utils/autostart.ts +213 -0
  301. package/src/shared/utils/build-files.ts +439 -0
  302. package/src/shared/utils/build-manifest-init.ts +176 -0
  303. package/src/shared/utils/cloudinary.ts +67 -0
  304. package/src/shared/utils/cn.ts +7 -0
  305. package/src/shared/utils/download-stats-week.ts +165 -0
  306. package/src/shared/utils/entity-api-to-cache.ts +84 -0
  307. package/src/shared/utils/entity-build-from-api.ts +1 -0
  308. package/src/shared/utils/entity-display.ts +27 -0
  309. package/src/shared/utils/entity-map-from-api.ts +1 -0
  310. package/src/shared/utils/file-hash.ts +65 -0
  311. package/src/shared/utils/formatSize.ts +5 -0
  312. package/src/shared/utils/formatTime.ts +157 -0
  313. package/src/shared/utils/getAccountSkinRender.ts +32 -0
  314. package/src/shared/utils/index.ts +34 -0
  315. package/src/shared/utils/local-mods.ts +678 -0
  316. package/src/shared/utils/local-settings.ts +217 -0
  317. package/src/shared/utils/member-join-stats.ts +35 -0
  318. package/src/shared/utils/platform.ts +86 -0
  319. package/src/shared/utils/play-host-slug.ts +92 -0
  320. package/src/shared/utils/rich-content.ts +294 -0
  321. package/src/shared/utils/safeRequest.ts +23 -0
  322. package/src/shared/utils/semver.ts +81 -0
  323. package/src/shared/utils/serverPermissions.ts +155 -0
  324. package/src/shared/utils/skin-render-cache.ts +372 -0
  325. package/src/shared/utils/stripMarkdown.ts +45 -0
  326. package/src/shared/utils/transliterate.ts +74 -0
  327. package/src/shared/utils/updateAccountSkinRender.ts +64 -0
  328. package/src/shared/utils/updater.ts +218 -0
  329. package/src/shared/utils/uploadImage.ts +195 -0
  330. package/src/shared/utils/user-status.ts +9 -0
  331. package/src/tiptap/index.ts +7 -0
  332. package/tsconfig.json +13 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Контракты домена Minecraft-аккаунтов (дублируют `packages/client/src/models/accounts`),
3
+ * чтобы типизировать `useModel('accounts')` без импорта клиентского кода.
4
+ */
5
+
6
+ export enum ProviderType {
7
+ Microsoft = 'microsoft',
8
+ Ely = 'ely',
9
+ LittleSkin = 'littleskin',
10
+ Custom = 'custom',
11
+ Offline = 'offline',
12
+ }
13
+
14
+ export enum AuthType {
15
+ OAuth2 = 'oauth2',
16
+ Base = 'base',
17
+ }
18
+
19
+ export interface ProviderCapabilities {
20
+ registration: boolean;
21
+ skinsView: boolean;
22
+ skinsManage: boolean;
23
+ capesView: boolean;
24
+ capesManage: boolean;
25
+ refreshToken: boolean;
26
+ validateToken: boolean;
27
+ }
28
+
29
+ export interface ProfileData {
30
+ username: string;
31
+ uuid: string;
32
+ avatar?: string | null;
33
+ skinUrl?: string | null;
34
+ skinSha1?: string | null;
35
+ capeUrl?: string | null;
36
+ [key: string]: unknown;
37
+ }
38
+
39
+ export interface AuthResult {
40
+ accessToken: string;
41
+ refreshToken?: string;
42
+ clientToken?: string;
43
+ expiresAt?: number;
44
+ profile: ProfileData;
45
+ }
46
+
47
+ export interface Account {
48
+ id: string;
49
+ providerId: string;
50
+ providerType: ProviderType;
51
+ username: string;
52
+ uuid: string;
53
+ accessToken: string;
54
+ refreshToken?: string;
55
+ clientToken?: string;
56
+ expiresAt?: number;
57
+ profile?: ProfileData;
58
+ isActive: boolean;
59
+ createdAt: number;
60
+ lastUsedAt?: number;
61
+ }
62
+
63
+ export interface ProviderConfig {
64
+ id: string;
65
+ name: string;
66
+ type: ProviderType;
67
+ [key: string]: unknown;
68
+ }
69
+
70
+ export interface LoginOptions {
71
+ username?: string;
72
+ password?: string;
73
+ [key: string]: unknown;
74
+ }
75
+
76
+ export interface IAuthProvider {
77
+ readonly id: string;
78
+ readonly type: ProviderType;
79
+ readonly authType: AuthType;
80
+ readonly config: ProviderConfig;
81
+ readonly capabilities: ProviderCapabilities;
82
+ readonly skinManagementUrl?: string;
83
+ readonly minMinecraftVersion?: string;
84
+ readonly authlibInjectorUrl?: string;
85
+ readonly minecraftApiArgs?: Record<string, string>;
86
+
87
+ login(options?: LoginOptions): Promise<AuthResult>;
88
+ refresh(account: Account): Promise<AuthResult>;
89
+ validate(account: Account): Promise<boolean>;
90
+ getProfile(account: Account): Promise<ProfileData>;
91
+ shouldRefresh(account: Account): boolean;
92
+ register?(options?: LoginOptions): Promise<AuthResult>;
93
+ listSkins?(account: Account): Promise<unknown[]>;
94
+ uploadSkin?(
95
+ account: Account,
96
+ skinFile: File | Buffer,
97
+ model?: 'classic' | 'slim',
98
+ ): Promise<void>;
99
+ listCapes?(account: Account): Promise<unknown[]>;
100
+ uploadCape?(account: Account, capeFile: File | Buffer): Promise<void>;
101
+ getSkinUrl?(account: Account): Promise<string | null> | string | null;
102
+ }
@@ -0,0 +1,553 @@
1
+ /**
2
+ * Return-типы сторов `packages/client/src/models/*`, доступных расширениям через `useModel`.
3
+ * При изменении публичного API стора обновляйте соответствующий интерфейс здесь.
4
+ */
5
+
6
+ import type { ChildProcess } from 'node:child_process';
7
+ import type { ComputedRef, Ref } from 'vue';
8
+
9
+ import type {
10
+ LaunchProgress,
11
+ UseMinecraftLauncherReturn,
12
+ } from '../../../shared/minecraft-types/minecraft-launcher-types';
13
+
14
+ import type { Build, Version } from '../../../shared/api/builds';
15
+ import type { LoginCredentials, RegisterData } from '../../../shared/api/auth';
16
+ import type { CreateInviteInput } from '../../../shared/api/invites';
17
+ import type { EventInput } from '../../../shared/api/events';
18
+ import type { PostInput } from '../../../shared/api/posts';
19
+ import type { ServerInput } from '../../../shared/api/projectServers';
20
+ import type { ServerMemberInput } from '../../../shared/api/serverMembers';
21
+ import type { LibraryStats } from '../../../shared/api/library';
22
+ import type { BuildVersionManifest } from '../../../shared/minecraft-types/build-manifest';
23
+ import type { MinecraftVersionManifest } from '../../../shared/minecraft-types/launcher-versions';
24
+ import type {
25
+ EntityBuildLocal,
26
+ EntityEvent,
27
+ EntityInvite,
28
+ EntityPost,
29
+ EntityServer,
30
+ EntityServerMember,
31
+ EntityUser,
32
+ } from '../../../shared/types/entities';
33
+ import type { RunningBuild } from '../../../shared/types/running-build';
34
+ import type { ServerMemberRole } from '../../../shared/types/serverMember';
35
+ import type { LocalSettings } from '../../../shared/utils/local-settings';
36
+
37
+ import type {
38
+ Account,
39
+ IAuthProvider,
40
+ LoginOptions,
41
+ } from './accounts-contracts';
42
+ import type { UserStatusDetail } from '../../../shared/types/user';
43
+
44
+ type PublicBuildsQuery = Parameters<
45
+ typeof import('../../../shared/api/builds').getPublicBuilds
46
+ >[0];
47
+
48
+ type ProjectServersQuery = Parameters<
49
+ typeof import('../../../shared/api/projectServers').getServers
50
+ >[0];
51
+
52
+ type FriendSearchOptions = Parameters<
53
+ typeof import('../../../shared/api/friends').searchUsers
54
+ >[1];
55
+
56
+ type UpdateUserProfileInput = Parameters<
57
+ typeof import('../../../shared/api/auth').updateUserProfile
58
+ >[0];
59
+
60
+ export type UpdaterStatus =
61
+ | 'idle'
62
+ | 'checking'
63
+ | 'downloading'
64
+ | 'ready'
65
+ | 'error';
66
+
67
+ export type AuthMode = 'login' | 'register';
68
+
69
+ export interface AuthLoginFormData {
70
+ username: string;
71
+ password: string;
72
+ }
73
+
74
+ export interface AuthRegisterFormData {
75
+ username: string;
76
+ email: string;
77
+ password: string;
78
+ confirmPassword: string;
79
+ acceptTerms: boolean;
80
+ }
81
+
82
+ export interface LocalBuildIndexEntry {
83
+ path: string;
84
+ isUserBuild: boolean;
85
+ }
86
+
87
+ /** Элемент списка сборок из `getBuildsList` / `getBuildsListFn`. */
88
+ export type LocalBuildListRow = EntityBuildLocal;
89
+
90
+ export interface LocalLaunchBuildOptions {
91
+ accountId?: string;
92
+ username?: string;
93
+ onProgress?: (progress: LaunchProgress) => void;
94
+ providerId?: string;
95
+ serverInfo?: {
96
+ ip: string;
97
+ port: number;
98
+ serverId?: string;
99
+ };
100
+ }
101
+
102
+ type ServerPostsQuery = {
103
+ take?: number;
104
+ skip?: number;
105
+ orderBy?: Array<{ date?: 'asc' | 'desc' }>;
106
+ };
107
+
108
+ type ServerEventsQuery = {
109
+ take?: number;
110
+ skip?: number;
111
+ orderBy?: Array<{ startDateTime?: 'asc' | 'desc' }>;
112
+ filter?: 'all' | 'active' | 'upcoming' | 'past';
113
+ };
114
+
115
+ type EventListFilter = 'all' | 'active' | 'upcoming' | 'past';
116
+
117
+ // --- Per-model public surfaces ---
118
+
119
+ export interface BuildsModelApi {
120
+ myPublishedBuilds: Ref<Build[]>;
121
+ popularBuilds: Ref<Build[]>;
122
+ searchBuilds: Ref<Build[]>;
123
+ userBuilds: Ref<Build[]>;
124
+ versionsByBuildId: Ref<Map<string, Version[]>>;
125
+ isLoadingMyBuilds: Ref<boolean>;
126
+ isLoadingPopularBuilds: Ref<boolean>;
127
+ isLoadingSearchBuilds: Ref<boolean>;
128
+ error: Ref<Error | null>;
129
+ loadMyPublishedBuilds: () => Promise<Build[]>;
130
+ loadPopularBuilds: () => Promise<Build[]>;
131
+ searchPublicBuilds: (options?: PublicBuildsQuery) => Promise<Build[]>;
132
+ loadAllUserBuilds: () => Promise<Build[]>;
133
+ loadBuildVersions: (buildId: string) => Promise<Version[]>;
134
+ loadBuildWithLatestVersion: (
135
+ buildId: string,
136
+ ) => Promise<
137
+ ReturnType<
138
+ typeof import('../../../shared/api/builds').getBuildWithLatestVersion
139
+ > extends infer R
140
+ ? R extends Promise<infer U>
141
+ ? U
142
+ : never
143
+ : never
144
+ >;
145
+ checkBuildExists: typeof import('../../../shared/api/builds').checkBuildExists;
146
+ createBuild: typeof import('../../../shared/api/builds').createBuild;
147
+ updateBuild: typeof import('../../../shared/api/builds').updateBuild;
148
+ createVersion: typeof import('../../../shared/api/builds').createVersion;
149
+ getExistingAssetsBySha1: typeof import('../../../shared/api/assets').getAssetsBySha1;
150
+ uploadBuildAsset: typeof import('../../../shared/api/assets').uploadAsset;
151
+ addAuthorToBuildAsset: typeof import('../../../shared/api/builds').addAuthorToAsset;
152
+ loadUserStorageQuota: typeof import('../../../shared/api/auth').getUserStorageQuota;
153
+ }
154
+
155
+ export interface UserModelApi {
156
+ user: ComputedRef<EntityUser | null>;
157
+ isAuthenticated: ComputedRef<boolean>;
158
+ isLoading: Ref<boolean>;
159
+ error: Ref<string | null>;
160
+ init: () => Promise<void>;
161
+ login: (
162
+ credentials: LoginCredentials,
163
+ skipUserUpdate?: boolean,
164
+ ) => Promise<boolean>;
165
+ registerWithEmail: (data: RegisterData) => Promise<boolean>;
166
+ verifyRegistration: (
167
+ email: string,
168
+ code: string,
169
+ username: string,
170
+ password: string,
171
+ skipUserUpdate?: boolean,
172
+ ) => Promise<boolean>;
173
+ requestPasswordReset: (email: string) => Promise<boolean>;
174
+ verifyPasswordReset: (
175
+ email: string,
176
+ code: string,
177
+ newPassword: string,
178
+ ) => Promise<boolean>;
179
+ logout: () => Promise<boolean>;
180
+ refreshUser: () => Promise<void>;
181
+ updateProfile: (
182
+ data: UpdateUserProfileInput,
183
+ ) => Promise<EntityUser | undefined>;
184
+ setStatusDetail: (detail: UserStatusDetail) => Promise<void>;
185
+ clearStatusDetail: () => Promise<void>;
186
+ }
187
+
188
+ export interface FriendsModelApi {
189
+ friends: ComputedRef<EntityUser[]>;
190
+ onlineFriends: ComputedRef<EntityUser[]>;
191
+ isLoading: Ref<boolean>;
192
+ isFriendsListLoading: Ref<boolean>;
193
+ error: Ref<string | null>;
194
+ init: () => Promise<void>;
195
+ loadFriends: () => Promise<void>;
196
+ searchUsers: (
197
+ query: string,
198
+ options?: FriendSearchOptions,
199
+ ) => Promise<EntityUser[]>;
200
+ removeFriend: (friendId: string) => Promise<void>;
201
+ startAutoRefresh: () => void;
202
+ stopAutoRefresh: () => void;
203
+ }
204
+
205
+ export interface AuthModelApi {
206
+ authMode: Ref<AuthMode>;
207
+ showVerificationCode: Ref<boolean>;
208
+ verificationCode: Ref<string>;
209
+ isResendingCode: Ref<boolean>;
210
+ loginForm: Ref<AuthLoginFormData>;
211
+ registerForm: Ref<AuthRegisterFormData>;
212
+ localError: Ref<string | null>;
213
+ successMessage: Ref<string | null>;
214
+ showLoginPassword: Ref<boolean>;
215
+ showRegisterPassword: Ref<boolean>;
216
+ showConfirmPassword: Ref<boolean>;
217
+ displayError: ComputedRef<string | null>;
218
+ isRegisterFormValid: ComputedRef<boolean>;
219
+ isLoading: Ref<boolean>;
220
+ setAuthMode: (mode: AuthMode) => void;
221
+ handleLogin: () => Promise<void>;
222
+ handleRegister: () => Promise<void>;
223
+ handleVerifyRegistration: () => Promise<void>;
224
+ handleResendCode: () => Promise<void>;
225
+ backToRegisterForm: () => void;
226
+ resetForms: () => void;
227
+ }
228
+
229
+ export interface AccountsModelApi {
230
+ accounts: ComputedRef<readonly Account[]>;
231
+ activeAccount: ComputedRef<Account | null>;
232
+ isLoading: Ref<boolean>;
233
+ error: Ref<string | null>;
234
+ isUpdatingSkins: Ref<boolean>;
235
+ providers: ComputedRef<IAuthProvider[]>;
236
+ builtInProviders: ComputedRef<IAuthProvider[]>;
237
+ customProviders: ComputedRef<IAuthProvider[]>;
238
+ init: () => Promise<void>;
239
+ login: (
240
+ providerId: string,
241
+ options?: LoginOptions & { setActive?: boolean },
242
+ ) => Promise<Account>;
243
+ removeAccount: (id: string) => Promise<void>;
244
+ setActive: (id: string) => Promise<void>;
245
+ refreshAccount: (id: string) => Promise<Account>;
246
+ validateAccount: (id: string) => Promise<boolean>;
247
+ getProvider: (providerId: string) => IAuthProvider | undefined;
248
+ getAccountForLaunch: (accountId?: string) => Promise<Account | null>;
249
+ updateSkinsInBackground: () => Promise<void>;
250
+ updateAccountSkin: (accountId: string) => Promise<void>;
251
+ updateAccountProfile: (
252
+ accountId: string,
253
+ profile: Partial<NonNullable<Account['profile']>>,
254
+ ) => Promise<void>;
255
+ }
256
+
257
+ export interface SettingsModelApi {
258
+ settings: Ref<LocalSettings>;
259
+ authorMode: ComputedRef<boolean | null>;
260
+ notificationMode: ComputedRef<LocalSettings['notificationMode']>;
261
+ theme: ComputedRef<string>;
262
+ themeVariant: ComputedRef<'light' | 'dark'>;
263
+ radiusScale: ComputedRef<'none' | 'standard' | 'medium'>;
264
+ defaultMaxRam: ComputedRef<number>;
265
+ discordRpcEnabled: ComputedRef<boolean>;
266
+ disableSounds: ComputedRef<boolean>;
267
+ disableAutostart: ComputedRef<boolean>;
268
+ startInTray: ComputedRef<boolean>;
269
+ init: () => void;
270
+ setAuthorMode: (value: boolean | null) => void;
271
+ setNotificationMode: (value: LocalSettings['notificationMode']) => void;
272
+ setTheme: (value: string) => void;
273
+ setThemeVariant: (value: 'light' | 'dark') => void;
274
+ setRadiusScale: (value: 'none' | 'standard' | 'medium') => void;
275
+ setDefaultMaxRam: (value: number) => void;
276
+ setDiscordRpcEnabled: (value: boolean) => void;
277
+ setDisableSounds: (value: boolean) => void;
278
+ setDisableAutostart: (value: boolean) => void;
279
+ setStartInTray: (value: boolean) => void;
280
+ updateSettings: (newSettings: Partial<LocalSettings>) => void;
281
+ reload: () => void;
282
+ }
283
+
284
+ export interface UpdaterModelApi {
285
+ status: Ref<UpdaterStatus>;
286
+ downloadProgress: Ref<number>;
287
+ downloadedVersion: Ref<string | null>;
288
+ errorMessage: Ref<string>;
289
+ startBackgroundCheck: () => void;
290
+ stopBackgroundCheck: () => void;
291
+ runCheckAndUpdate: () => Promise<void>;
292
+ isCheckingOrDownloading: () => boolean;
293
+ }
294
+
295
+ export interface ServersModelApi {
296
+ selectedServerId: Ref<string | null>;
297
+ selectedServer: ComputedRef<EntityServer | null>;
298
+ isLoading: Ref<boolean>;
299
+ isLoadingUserServers: Ref<boolean>;
300
+ isLoadingPosts: Ref<boolean>;
301
+ isLoadingEvents: Ref<boolean>;
302
+ error: Ref<string | null>;
303
+ userServers: ComputedRef<EntityServer[]>;
304
+ ownedServers: ComputedRef<EntityServer[]>;
305
+ recentServers: ComputedRef<EntityServer[]>;
306
+ playedServers: ComputedRef<EntityServer[]>;
307
+ getServerPosts: ComputedRef<(serverId: string) => EntityPost[]>;
308
+ loadServerPosts: (
309
+ serverId: string,
310
+ options?: ServerPostsQuery,
311
+ ) => Promise<EntityPost[]>;
312
+ getActiveServerEvents: ComputedRef<(serverId: string) => EntityEvent[]>;
313
+ getUpcomingServerEvents: ComputedRef<(serverId: string) => EntityEvent[]>;
314
+ getServerEventsByFilter: ComputedRef<
315
+ (serverId: string, filter: EventListFilter) => EntityEvent[]
316
+ >;
317
+ loadServerEvents: (
318
+ serverId: string,
319
+ options?: ServerEventsQuery,
320
+ ) => Promise<EntityEvent[]>;
321
+ loadServer: (serverId: string) => Promise<EntityServer | null>;
322
+ loadUserServers: (userId: string) => Promise<EntityServer[]>;
323
+ createServer: (data: ServerInput) => Promise<EntityServer | null>;
324
+ updateServer: (
325
+ serverId: string,
326
+ data: Partial<ServerInput>,
327
+ ) => Promise<EntityServer | null>;
328
+ deleteServer: (serverId: string) => Promise<boolean>;
329
+ openServer: (id: string) => Promise<void>;
330
+ closeServer: () => void;
331
+ refreshServer: (serverId: string) => Promise<void>;
332
+ init: (userId: string) => Promise<void>;
333
+ launchServer: (serverId: string) => Promise<void>;
334
+ }
335
+
336
+ export interface InvitesModelApi {
337
+ incomingInvites: ComputedRef<EntityInvite[]>;
338
+ outgoingInvites: ComputedRef<EntityInvite[]>;
339
+ isLoading: Ref<boolean>;
340
+ isLoadingIncoming: Ref<boolean>;
341
+ isLoadingOutgoing: Ref<boolean>;
342
+ error: Ref<string | null>;
343
+ pendingIncomingInvites: ComputedRef<EntityInvite[]>;
344
+ pendingOutgoingInvites: ComputedRef<EntityInvite[]>;
345
+ friendInvites: ComputedRef<EntityInvite[]>;
346
+ init: () => Promise<void>;
347
+ startIncomingInvitesPolling: () => void;
348
+ stopIncomingInvitesPolling: () => void;
349
+ loadIncomingInvites: (options?: {
350
+ type?: EntityInvite['type'];
351
+ status?: EntityInvite['status'];
352
+ }) => Promise<void>;
353
+ loadOutgoingInvites: (options?: {
354
+ type?: EntityInvite['type'];
355
+ status?: EntityInvite['status'];
356
+ }) => Promise<void>;
357
+ loadAllInvites: () => Promise<void>;
358
+ createInvite: (input: CreateInviteInput) => Promise<EntityInvite | undefined>;
359
+ acceptInvite: (inviteId: string) => Promise<void>;
360
+ rejectInvite: (inviteId: string) => Promise<void>;
361
+ checkFriendInviteExists: (targetId: string) => Promise<boolean>;
362
+ }
363
+
364
+ export interface EventsModelApi {
365
+ selectedEventId: Ref<string | null>;
366
+ showEventDialog: Ref<boolean>;
367
+ editingEventId: Ref<string | null>;
368
+ creatingEventServerId: Ref<string | null>;
369
+ creatingEventProjectId: Ref<string | null>;
370
+ isLoading: Ref<boolean>;
371
+ isLoadingList: Ref<boolean>;
372
+ error: Ref<string | null>;
373
+ selectedEvent: ComputedRef<EntityEvent | undefined | null>;
374
+ getActiveServerEvents: ComputedRef<(serverId: string) => EntityEvent[]>;
375
+ getUpcomingServerEvents: ComputedRef<(serverId: string) => EntityEvent[]>;
376
+ getServerEventsByFilter: ComputedRef<
377
+ (serverId: string, filter: EventListFilter) => EntityEvent[]
378
+ >;
379
+ loadEvent: (eventId: string) => Promise<EntityEvent | undefined | null>;
380
+ loadServerEvents: (
381
+ serverId: string,
382
+ options?: {
383
+ take?: number;
384
+ skip?: number;
385
+ orderBy?: Array<{ startDateTime?: 'asc' | 'desc' }>;
386
+ filter?: EventListFilter;
387
+ },
388
+ ) => Promise<EntityEvent[]>;
389
+ createEvent: (data: EventInput) => Promise<EntityEvent | null>;
390
+ updateEvent: (
391
+ eventId: string,
392
+ data: Partial<Omit<EventInput, 'projectId'>>,
393
+ ) => Promise<EntityEvent | null>;
394
+ deleteEvent: (eventId: string) => Promise<boolean>;
395
+ openEvent: (id: string) => Promise<void>;
396
+ closeEvent: () => void;
397
+ refreshEvent: (eventId: string) => Promise<void>;
398
+ openCreateEventDialog: (options?: {
399
+ serverId?: string;
400
+ projectId?: string;
401
+ }) => void;
402
+ openEditEventDialog: (eventId: string) => void;
403
+ closeEventDialog: () => void;
404
+ }
405
+
406
+ export interface PostsModelApi {
407
+ selectedPostId: Ref<string | null>;
408
+ showPostDialog: Ref<boolean>;
409
+ editingPostId: Ref<string | null>;
410
+ creatingPostServerId: Ref<string | null>;
411
+ creatingPostProjectId: Ref<string | null>;
412
+ isLoading: Ref<boolean>;
413
+ isLoadingList: Ref<boolean>;
414
+ error: Ref<string | null>;
415
+ selectedPost: ComputedRef<EntityPost | undefined | null>;
416
+ getServerPosts: ComputedRef<(serverId: string) => EntityPost[]>;
417
+ loadPost: (postId: string) => Promise<EntityPost | undefined | null>;
418
+ loadProjectPosts: (
419
+ projectId: string,
420
+ options?: {
421
+ take?: number;
422
+ skip?: number;
423
+ orderBy?: Array<{ date?: 'asc' | 'desc' }>;
424
+ },
425
+ ) => Promise<EntityPost[]>;
426
+ loadServerPosts: (
427
+ serverId: string,
428
+ options?: {
429
+ take?: number;
430
+ skip?: number;
431
+ orderBy?: Array<{ date?: 'asc' | 'desc' }>;
432
+ },
433
+ ) => Promise<EntityPost[]>;
434
+ loadPostsByServers: (
435
+ serverIds: string[],
436
+ options?: {
437
+ take?: number;
438
+ skip?: number;
439
+ orderBy?: Array<{ date?: 'asc' | 'desc' }>;
440
+ },
441
+ ) => Promise<EntityPost[]>;
442
+ loadAllPosts: (options?: {
443
+ take?: number;
444
+ skip?: number;
445
+ orderBy?: Array<{ date?: 'asc' | 'desc' }>;
446
+ }) => Promise<EntityPost[]>;
447
+ createPost: (data: PostInput) => Promise<EntityPost | null>;
448
+ updatePost: (
449
+ postId: string,
450
+ data: Partial<Omit<PostInput, 'projectId'>>,
451
+ ) => Promise<EntityPost | null>;
452
+ deletePost: (postId: string) => Promise<boolean>;
453
+ openPost: (id: string) => Promise<void>;
454
+ closePost: () => void;
455
+ refreshPost: (postId: string) => Promise<void>;
456
+ openCreatePostDialog: (options?: {
457
+ serverId?: string;
458
+ projectId?: string;
459
+ }) => void;
460
+ openEditPostDialog: (postId: string) => void;
461
+ closePostDialog: () => void;
462
+ }
463
+
464
+ export interface LibraryModelApi {
465
+ stats: Ref<LibraryStats | null>;
466
+ popularServers: Ref<EntityServer[]>;
467
+ searchServers: Ref<EntityServer[]>;
468
+ isLoadingStats: Ref<boolean>;
469
+ isLoadingPopularServers: Ref<boolean>;
470
+ isLoadingSearchServers: Ref<boolean>;
471
+ error: Ref<Error | null>;
472
+ loadStats: () => Promise<LibraryStats | null>;
473
+ loadPopularServers: () => Promise<EntityServer[]>;
474
+ searchPublicServers: (
475
+ options?: ProjectServersQuery,
476
+ ) => Promise<EntityServer[]>;
477
+ }
478
+
479
+ export interface LocalBuildsModelApi {
480
+ manifestsCache: Ref<Map<string, BuildVersionManifest>>;
481
+ buildsIndex: Ref<Map<string, LocalBuildIndexEntry>>;
482
+ runningBuilds: ComputedRef<RunningBuild[]>;
483
+ selectedRunningBuildId: Ref<string | null>;
484
+ loadAllManifests: () => Promise<void>;
485
+ getManifestById: (id: string) => BuildVersionManifest | null;
486
+ getManifestByUuid: (uuid: string) => Promise<BuildVersionManifest | null>;
487
+ isLocalBuild: (uuid: string) => boolean;
488
+ downloadBuild: (
489
+ buildId: string,
490
+ version?: string,
491
+ preserveLocalId?: string,
492
+ ) => Promise<string | null>;
493
+ saveManifest: (
494
+ manifest: BuildVersionManifest,
495
+ name?: string,
496
+ ) => string | null;
497
+ deleteBuild: (id: string) => Promise<boolean>;
498
+ launchBuild: (
499
+ buildId: string,
500
+ options?: LocalLaunchBuildOptions,
501
+ ) => Promise<ChildProcess>;
502
+ isBuildRunning: (buildId: string) => boolean;
503
+ stopBuild: (buildId: string) => Promise<boolean>;
504
+ selectRunningBuild: (buildId: string | null) => void;
505
+ dismissRunningBuild: (buildId: string) => void;
506
+ getAllBuilds: ComputedRef<BuildVersionManifest[]>;
507
+ getBuildsList: ComputedRef<LocalBuildListRow[]>;
508
+ recentBuilds: ComputedRef<LocalBuildListRow[]>;
509
+ getBuildsListFn: (filterUserBuild?: boolean) => LocalBuildListRow[];
510
+ }
511
+
512
+ export interface LauncherRuntimeModelApi {
513
+ versionsManifest: Ref<MinecraftVersionManifest | undefined>;
514
+ launcher: UseMinecraftLauncherReturn;
515
+ initialize: () => Promise<boolean>;
516
+ }
517
+
518
+ export interface ServerMembersModelApi {
519
+ isLoading: Ref<boolean>;
520
+ isLoadingList: Ref<boolean>;
521
+ error: Ref<string | null>;
522
+ getServerMembers: ComputedRef<(serverId: string) => EntityServerMember[]>;
523
+ loadServerMembers: (serverId: string) => Promise<EntityServerMember[]>;
524
+ joinServer: (serverId: string) => Promise<EntityServerMember | null>;
525
+ getCurrentUserServerRole: (
526
+ serverId: string,
527
+ ) => Promise<ServerMemberRole | null>;
528
+ inviteMember: (data: ServerMemberInput) => Promise<EntityServerMember | null>;
529
+ updateMemberRole: (
530
+ memberId: string,
531
+ role: ServerMemberRole,
532
+ ) => Promise<EntityServerMember | null>;
533
+ removeMember: (memberId: string) => Promise<boolean>;
534
+ refreshServerMembers: (serverId: string) => Promise<void>;
535
+ }
536
+
537
+ export interface LauncherModelApis {
538
+ builds: BuildsModelApi;
539
+ user: UserModelApi;
540
+ friends: FriendsModelApi;
541
+ auth: AuthModelApi;
542
+ accounts: AccountsModelApi;
543
+ settings: SettingsModelApi;
544
+ updater: UpdaterModelApi;
545
+ servers: ServersModelApi;
546
+ invites: InvitesModelApi;
547
+ events: EventsModelApi;
548
+ posts: PostsModelApi;
549
+ library: LibraryModelApi;
550
+ local_builds: LocalBuildsModelApi;
551
+ launcher: LauncherRuntimeModelApi;
552
+ server_members: ServerMembersModelApi;
553
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Ключи моделей лаунчера, доступных расширениям через `useModel`.
3
+ * Не включает `chats` и `calls` по продуктовому решению.
4
+ */
5
+ export const RYNT_LAUNCHER_MODEL_KEYS = [
6
+ 'builds',
7
+ 'user',
8
+ 'friends',
9
+ 'auth',
10
+ 'accounts',
11
+ 'settings',
12
+ 'updater',
13
+ 'servers',
14
+ 'invites',
15
+ 'events',
16
+ 'posts',
17
+ 'library',
18
+ 'local_builds',
19
+ 'launcher',
20
+ 'server_members',
21
+ ] as const;
22
+
23
+ export type RyntLauncherModelKey = (typeof RYNT_LAUNCHER_MODEL_KEYS)[number];
@@ -0,0 +1,9 @@
1
+ /** Публичный API моделей для расширений: все контракты из `launcher-model-apis`. */
2
+ export { useModel } from './registry-core';
3
+ export type * from './apis/launcher-model-apis';
4
+ export type { RyntLauncherModelKey } from './keys';
5
+ export { RYNT_LAUNCHER_MODEL_KEYS } from './keys';
6
+
7
+ export type * from '../../shared/types/entities';
8
+
9
+ export * from '../../shared/utils/entity-build-from-api';