@koishi-ce/plugin-config 1.1.6 → 1.1.8
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.
- package/dist/index.js +5 -5
- package/lib/index.d.ts +1 -1
- package/package.json +10 -7
- package/src/shared/console-events.ts +4 -10
- package/src/shared/index.ts +9 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{Schema as e,ScopeStatus as t,Service as n,clone as r,extendLocales as i,icons as a,message as o,root as s,router as c,send as l,store as u,useContext as d,useI18n as f,useI18nText as p,useMenu as m}from"@koishi-ce/client";import{Fragment as h,computed as g,createBlock as _,createCommentVNode as v,createElementBlock as y,createElementVNode as b,createTextVNode as x,createVNode as S,defineComponent as C,h as w,inject as T,mergeModels as E,nextTick as D,normalizeClass as O,onActivated as k,openBlock as A,provide as j,ref as M,renderList as N,renderSlot as P,resolveComponent as F,toDisplayString as I,unref as L,useModel as R,watch as z,withCtx as B,withKeys as V,withModifiers as H}from"vue";import{useRoute as ee,useRouter as te}from"vue-router";var U={config:{title:`Plugin-Konfigurationen`,menu:{enableGroup:`Gruppe aktivieren`,disableGroup:`Gruppe deaktivieren`,enablePlugin:`Plugin aktivieren`,disablePlugin:`Plugin deaktivieren`,saveConfig:`Konfiguration speichern`,reloadConfig:`Konfiguration neu laden`,rename:`Umbenennen`,removeGroup:`Gruppe entfernen`,removePlugin:`Plugin entfernen`,clone:`Konfiguration klonen`,manage:`Mehrere Konfigurationen verwalten`,addPlugin:`Plugin hinzufügen`,addGroup:`Gruppe hinzufügen`,globalSettings:`Globale Einstellungen`},tree:{group:`Gruppe: {0}`,pending:`Ausstehend`},forks:{workspace:` (Arbeitsbereich)`,count:`Dieses Plugin hat derzeit {0} Konfigurationen.`,none:`Dieses Plugin wurde noch nicht konfiguriert.`,add:`Neue Konfiguration hinzufügen`},modifier:{title:`Filtereinstellungen`},select:{title:`Plugin auswählen`},plugin:{loading:`Plugin-Konfiguration wird geladen...`,failure:`Das Plugin konnte nicht geladen werden, möglicherweise aufgrund eines Problems im Plugin selbst. {0}`,hintSource:`Bitte prüfen Sie den Quellcode des Plugins.`,hintAuthor:`Bitte kontaktieren Sie den Plugin-Autor und melden Sie das Problem.`,dependency:`{0}: {1} ({2})`,dependencyRequired:`Erforderliche Abhängigkeit`,dependencyOptional:`Optionale Abhängigkeit`,service:`{0}: {1} ({2})`,serviceRequired:`Erforderlicher Service`,serviceOptional:`Optionaler Service`,loaded:`geladen`,notLoaded:`nicht geladen`,serviceConflict:`Dieses Plugin wird den Service {0} bereitstellen, aber dieser Service wird bereits von einem anderen Plugin implementiert.`,serviceProvided:`Dieses Plugin stellt den Service {0} bereit.`,serviceFuture:`Dieses Plugin wird nach der Aktivierung den Service {0} bereitstellen.`,notReusable:`Dieses Plugin läuft bereits und ist nicht wiederverwendbar. Eine erneute Aktivierung kann zu unerwarteten Problemen führen.`,multiplePrefix:`Dieses Plugin hat mehrere Konfigurationen.`,multipleAction:`Klicken Sie hier, um sie zu verwalten`,multipleSuffix:``,pages:`Von diesem Plugin bereitgestellte Seiten:`,noSchema:`Dieses Plugin deklariert keine Konfigurationsoptionen, was möglicherweise nicht beabsichtigt ist. {0}`,notInstalled:`Dieses Plugin ist noch nicht installiert.`},view:{globalSettings:`Globale Einstellungen`,group:`Gruppe: {0}`,removeTitle:`Entfernen bestätigen`,removeConfirmGroup:`Möchten Sie die Gruppe {0} wirklich entfernen? Diese Aktion kann nicht rückgängig gemacht werden!`,removeConfirmPlugin:`Möchten Sie das Plugin {0} wirklich entfernen? Diese Aktion kann nicht rückgängig gemacht werden!`,renameTitle:`Umbenennen`,createGroupTitle:`Gruppe erstellen`,cancel:`Abbrechen`,confirm:`OK`,constraintError:`Die aktuelle Konfiguration erfüllt die Einschränkungen nicht. Bitte überprüfen Sie sie!`,saved:`Konfiguration gespeichert.`,reloaded:`Konfiguration neu geladen.`,operationError:`Vorgang fehlgeschlagen. Bitte überprüfen Sie die Protokolle!`,groupEnabled:`Gruppe aktiviert.`,groupDisabled:`Gruppe deaktiviert.`,pluginEnabled:`Plugin aktiviert.`,pluginDisabled:`Plugin deaktiviert.`}}},ne={config:{title:`Plugin Configurations`,menu:{enableGroup:`Enable Group`,disableGroup:`Disable Group`,enablePlugin:`Enable Plugin`,disablePlugin:`Disable Plugin`,saveConfig:`Save Configuration`,reloadConfig:`Reload Configuration`,rename:`Rename`,removeGroup:`Remove Group`,removePlugin:`Remove Plugin`,clone:`Clone Configuration`,manage:`Manage Multiple Configurations`,addPlugin:`Add Plugin`,addGroup:`Add Group`,globalSettings:`Global Settings`},tree:{group:`Group: {0}`,pending:`Pending`},forks:{workspace:` (workspace)`,count:`This plugin currently has {0} configurations.`,none:`This plugin has not been configured yet.`,add:`Add New Configuration`},modifier:{title:`Filter Settings`},select:{title:`Select Plugin`},plugin:{loading:`Loading plugin configuration...`,failure:`Failed to load the plugin, which may be caused by the plugin itself. {0}`,hintSource:`Please check the plugin source code.`,hintAuthor:`Please contact the plugin author and report this issue.`,dependency:`{0}: {1} ({2})`,dependencyRequired:`Required dependency`,dependencyOptional:`Optional dependency`,service:`{0}: {1} ({2})`,serviceRequired:`Required service`,serviceOptional:`Optional service`,loaded:`loaded`,notLoaded:`not loaded`,serviceConflict:`This plugin will provide the {0} service, but this service is already implemented by another plugin.`,serviceProvided:`This plugin provides the {0} service.`,serviceFuture:`This plugin will provide the {0} service once enabled.`,notReusable:`This plugin is already running and is not reusable. Enabling it again may cause unexpected problems.`,multiplePrefix:`This plugin has multiple configurations.`,multipleAction:`Click to manage`,multipleSuffix:``,pages:`Pages provided by this plugin:`,noSchema:`This plugin declares no configuration options, which may not be intended. {0}`,notInstalled:`This plugin is not installed yet.`},view:{globalSettings:`Global Settings`,group:`Group: {0}`,removeTitle:`Confirm Removal`,removeConfirmGroup:`Are you sure you want to remove the group {0}? This action cannot be undone!`,removeConfirmPlugin:`Are you sure you want to remove the plugin {0}? This action cannot be undone!`,renameTitle:`Rename`,createGroupTitle:`Create Group`,cancel:`Cancel`,confirm:`OK`,constraintError:`The current configuration does not satisfy the constraints. Please check it!`,saved:`Configuration saved.`,reloaded:`Configuration reloaded.`,operationError:`Operation failed. Please check the logs!`,groupEnabled:`Group enabled.`,groupDisabled:`Group disabled.`,pluginEnabled:`Plugin enabled.`,pluginDisabled:`Plugin disabled.`}}},re={config:{title:`Configurations des plugins`,menu:{enableGroup:`Activer le groupe`,disableGroup:`Désactiver le groupe`,enablePlugin:`Activer le plugin`,disablePlugin:`Désactiver le plugin`,saveConfig:`Enregistrer la configuration`,reloadConfig:`Recharger la configuration`,rename:`Renommer`,removeGroup:`Supprimer le groupe`,removePlugin:`Supprimer le plugin`,clone:`Cloner la configuration`,manage:`Gérer plusieurs configurations`,addPlugin:`Ajouter un plugin`,addGroup:`Ajouter un groupe`,globalSettings:`Paramètres globaux`},tree:{group:`Groupe : {0}`,pending:`En attente`},forks:{workspace:` (espace de travail)`,count:`Ce plugin possède actuellement {0} configurations.`,none:`Ce plugin n'a pas encore été configuré.`,add:`Ajouter une configuration`},modifier:{title:`Paramètres du filtre`},select:{title:`Sélectionner un plugin`},plugin:{loading:`Chargement de la configuration du plugin...`,failure:`Échec du chargement du plugin, probablement causé par le plugin lui-même. {0}`,hintSource:`Veuillez vérifier le code source du plugin.`,hintAuthor:`Veuillez contacter l'auteur du plugin et signaler ce problème.`,dependency:`{0} : {1} ({2})`,dependencyRequired:`Dépendance requise`,dependencyOptional:`Dépendance facultative`,service:`{0} : {1} ({2})`,serviceRequired:`Service requis`,serviceOptional:`Service facultatif`,loaded:`chargé`,notLoaded:`non chargé`,serviceConflict:`Ce plugin fournira le service {0}, mais ce service est déjà implémenté par un autre plugin.`,serviceProvided:`Ce plugin fournit le service {0}.`,serviceFuture:`Ce plugin fournira le service {0} une fois activé.`,notReusable:`Ce plugin est déjà en cours d'exécution et n'est pas réutilisable. Le réactiver peut causer des problèmes inattendus.`,multiplePrefix:`Ce plugin possède plusieurs configurations.`,multipleAction:`Cliquez pour les gérer`,multipleSuffix:``,pages:`Pages fournies par ce plugin :`,noSchema:`Ce plugin ne déclare aucune option de configuration, ce qui n'est peut-être pas voulu. {0}`,notInstalled:`Ce plugin n'est pas encore installé.`},view:{globalSettings:`Paramètres globaux`,group:`Groupe : {0}`,removeTitle:`Confirmer la suppression`,removeConfirmGroup:`Voulez-vous vraiment supprimer le groupe {0} ? Cette action est irréversible !`,removeConfirmPlugin:`Voulez-vous vraiment supprimer le plugin {0} ? Cette action est irréversible !`,renameTitle:`Renommer`,createGroupTitle:`Créer un groupe`,cancel:`Annuler`,confirm:`OK`,constraintError:`La configuration actuelle ne satisfait pas les contraintes. Veuillez la vérifier !`,saved:`Configuration enregistrée.`,reloaded:`Configuration rechargée.`,operationError:`L'opération a échoué. Veuillez consulter les journaux !`,groupEnabled:`Groupe activé.`,groupDisabled:`Groupe désactivé.`,pluginEnabled:`Plugin activé.`,pluginDisabled:`Plugin désactivé.`}}},ie={config:{title:`プラグイン設定`,menu:{enableGroup:`グループを有効化`,disableGroup:`グループを無効化`,enablePlugin:`プラグインを有効化`,disablePlugin:`プラグインを無効化`,saveConfig:`設定を保存`,reloadConfig:`設定を再読み込み`,rename:`名前の変更`,removeGroup:`グループを削除`,removePlugin:`プラグインを削除`,clone:`設定を複製`,manage:`複数の設定を管理`,addPlugin:`プラグインを追加`,addGroup:`グループを追加`,globalSettings:`グローバル設定`},tree:{group:`グループ:{0}`,pending:`追加予定`},forks:{workspace:`(ワークスペース)`,count:`このプラグインには現在 {0} 件の設定があります。`,none:`このプラグインはまだ設定されていません。`,add:`新しい設定を追加`},modifier:{title:`フィルター設定`},select:{title:`プラグインを選択`},plugin:{loading:`プラグイン設定を読み込み中……`,failure:`プラグインの読み込みに失敗しました。プラグイン自体の問題の可能性があります。{0}`,hintSource:`プラグインのソースコードを確認してください。`,hintAuthor:`プラグインの作者に連絡してこの問題を報告してください。`,dependency:`{0}:{1}({2})`,dependencyRequired:`必須の依存関係`,dependencyOptional:`任意の依存関係`,service:`{0}:{1}({2})`,serviceRequired:`必須のサービス`,serviceOptional:`任意のサービス`,loaded:`読み込み済み`,notLoaded:`未読み込み`,serviceConflict:`このプラグインは {0} サービスを提供しようとしていますが、このサービスはすでに他のプラグインが実装しています。`,serviceProvided:`このプラグインは {0} サービスを提供しています。`,serviceFuture:`このプラグインは有効化後に {0} サービスを提供します。`,notReusable:`このプラグインはすでに実行中で再利用できません。有効化すると予期しない問題が発生する可能性があります。`,multiplePrefix:`このプラグインには複数の設定があります。`,multipleAction:`クリックして管理`,multipleSuffix:``,pages:`このプラグインが提供するページ:`,noSchema:`このプラグインは設定項目を宣言していません。これは意図した動作ではない可能性があります。{0}`,notInstalled:`このプラグインはまだインストールされていません。`},view:{globalSettings:`グローバル設定`,group:`グループ:{0}`,removeTitle:`削除の確認`,removeConfirmGroup:`本当にグループ {0} を削除しますか?この操作は元に戻せません!`,removeConfirmPlugin:`本当にプラグイン {0} を削除しますか?この操作は元に戻せません!`,renameTitle:`名前の変更`,createGroupTitle:`グループを作成`,cancel:`キャンセル`,confirm:`確定`,constraintError:`現在の設定項目が制約を満たしていません。設定を確認してください!`,saved:`設定を保存しました。`,reloaded:`設定を再読み込みしました。`,operationError:`操作に失敗しました。ログを確認してください!`,groupEnabled:`グループを有効化しました。`,groupDisabled:`グループを無効化しました。`,pluginEnabled:`プラグインを有効化しました。`,pluginDisabled:`プラグインを無効化しました。`}}},ae={config:{title:`Конфигурации плагинов`,menu:{enableGroup:`Включить группу`,disableGroup:`Отключить группу`,enablePlugin:`Включить плагин`,disablePlugin:`Отключить плагин`,saveConfig:`Сохранить конфигурацию`,reloadConfig:`Перезагрузить конфигурацию`,rename:`Переименовать`,removeGroup:`Удалить группу`,removePlugin:`Удалить плагин`,clone:`Клонировать конфигурацию`,manage:`Управлять несколькими конфигурациями`,addPlugin:`Добавить плагин`,addGroup:`Добавить группу`,globalSettings:`Глобальные настройки`},tree:{group:`Группа: {0}`,pending:`Ожидает добавления`},forks:{workspace:` (рабочая область)`,count:`У этого плагина сейчас {0} конфигураций.`,none:`Этот плагин ещё не настроен.`,add:`Добавить новую конфигурацию`},modifier:{title:`Настройки фильтра`},select:{title:`Выберите плагин`},plugin:{loading:`Загрузка конфигурации плагина...`,failure:`Не удалось загрузить плагин — возможно, проблема в самом плагине. {0}`,hintSource:`Проверьте исходный код плагина.`,hintAuthor:`Свяжитесь с автором плагина и сообщите о проблеме.`,dependency:`{0}: {1} ({2})`,dependencyRequired:`Обязательная зависимость`,dependencyOptional:`Необязательная зависимость`,service:`{0}: {1} ({2})`,serviceRequired:`Обязательный сервис`,serviceOptional:`Необязательный сервис`,loaded:`загружен`,notLoaded:`не загружен`,serviceConflict:`Этот плагин предоставит сервис {0}, но этот сервис уже реализован другим плагином.`,serviceProvided:`Этот плагин предоставляет сервис {0}.`,serviceFuture:`Этот плагин будет предоставлять сервис {0} после включения.`,notReusable:`Этот плагин уже запущен и не может использоваться повторно. Его повторное включение может привести к непредвиденным проблемам.`,multiplePrefix:`У этого плагина несколько конфигураций.`,multipleAction:`Нажмите, чтобы управлять ими`,multipleSuffix:``,pages:`Страницы, предоставляемые этим плагином:`,noSchema:`Этот плагин не объявляет параметров конфигурации, что может быть непреднамеренным. {0}`,notInstalled:`Этот плагин ещё не установлен.`},view:{globalSettings:`Глобальные настройки`,group:`Группа: {0}`,removeTitle:`Подтвердите удаление`,removeConfirmGroup:`Вы действительно хотите удалить группу {0}? Это действие нельзя отменить!`,removeConfirmPlugin:`Вы действительно хотите удалить плагин {0}? Это действие нельзя отменить!`,renameTitle:`Переименовать`,createGroupTitle:`Создать группу`,cancel:`Отмена`,confirm:`ОК`,constraintError:`Текущая конфигурация не удовлетворяет ограничениям. Проверьте её!`,saved:`Конфигурация сохранена.`,reloaded:`Конфигурация перезагружена.`,operationError:`Операция не удалась. Проверьте журналы!`,groupEnabled:`Группа включена.`,groupDisabled:`Группа отключена.`,pluginEnabled:`Плагин включён.`,pluginDisabled:`Плагин отключён.`}}},oe={config:{title:`插件配置`,menu:{enableGroup:`启用分组`,disableGroup:`停用分组`,enablePlugin:`启用插件`,disablePlugin:`停用插件`,saveConfig:`保存配置`,reloadConfig:`重载配置`,rename:`重命名`,removeGroup:`移除分组`,removePlugin:`移除插件`,clone:`克隆配置`,manage:`管理多份配置`,addPlugin:`添加插件`,addGroup:`添加分组`,globalSettings:`全局设置`},tree:{group:`分组:{0}`,pending:`待添加`},forks:{workspace:` (工作区)`,count:`此插件目前存在 {0} 份配置。`,none:`此插件尚未被配置。`,add:`添加新配置`},modifier:{title:`过滤器设置`},select:{title:`选择插件`},plugin:{loading:`正在加载插件配置……`,failure:`插件加载失败,这可能是插件本身的问题所致。{0}`,hintSource:`请检查插件源代码。`,hintAuthor:`请联系插件作者并反馈此问题。`,dependency:`{0}:{1}({2})`,dependencyRequired:`必需依赖`,dependencyOptional:`可选依赖`,service:`{0}:{1}({2})`,serviceRequired:`必需服务`,serviceOptional:`可选服务`,loaded:`已加载`,notLoaded:`未加载`,serviceConflict:`此插件将会提供 {0} 服务,但此服务已被其他插件实现。`,serviceProvided:`此插件提供了 {0} 服务。`,serviceFuture:`此插件启用后将会提供 {0} 服务。`,notReusable:`此插件已在运行且不可重用,启用可能会导致非预期的问题。`,multiplePrefix:`此插件存在多份配置,`,multipleAction:`点击前往管理`,multipleSuffix:`。`,pages:`此插件提供了页面:`,noSchema:`此插件未声明配置项,这可能并非预期行为。{0}`,notInstalled:`此插件尚未安装。`},view:{globalSettings:`全局设置`,group:`分组:{0}`,removeTitle:`确认移除`,removeConfirmGroup:`确定要移除分组 {0} 吗?此操作不可撤销!`,removeConfirmPlugin:`确定要移除插件 {0} 吗?此操作不可撤销!`,renameTitle:`重命名`,createGroupTitle:`创建分组`,cancel:`取消`,confirm:`确定`,constraintError:`当前配置项不满足约束,请检查配置!`,saved:`配置已保存。`,reloaded:`配置已重载。`,operationError:`操作失败,请检查日志!`,groupEnabled:`分组已启用。`,groupDisabled:`分组已停用。`,pluginEnabled:`插件已启用。`,pluginDisabled:`插件已停用。`}}},se={config:{title:`外掛設定`,menu:{enableGroup:`啟用分組`,disableGroup:`停用分組`,enablePlugin:`啟用外掛`,disablePlugin:`停用外掛`,saveConfig:`儲存設定`,reloadConfig:`重新載入設定`,rename:`重新命名`,removeGroup:`移除分組`,removePlugin:`移除外掛`,clone:`複製設定`,manage:`管理多份設定`,addPlugin:`新增外掛`,addGroup:`新增分組`,globalSettings:`全域設定`},tree:{group:`分組:{0}`,pending:`待新增`},forks:{workspace:` (工作區)`,count:`此外掛目前存在 {0} 份設定。`,none:`此外掛尚未被設定。`,add:`新增設定`},modifier:{title:`過濾器設定`},select:{title:`選擇外掛`},plugin:{loading:`正在載入外掛設定……`,failure:`外掛載入失敗,這可能是外掛本身的問題所致。{0}`,hintSource:`請檢查外掛原始碼。`,hintAuthor:`請聯絡外掛作者並回報此問題。`,dependency:`{0}:{1}({2})`,dependencyRequired:`必需相依性`,dependencyOptional:`可選相依性`,service:`{0}:{1}({2})`,serviceRequired:`必需服務`,serviceOptional:`可選服務`,loaded:`已載入`,notLoaded:`未載入`,serviceConflict:`此外掛將會提供 {0} 服務,但此服務已被其他外掛實作。`,serviceProvided:`此外掛提供了 {0} 服務。`,serviceFuture:`此外掛啟用後將會提供 {0} 服務。`,notReusable:`此外掛已在執行且不可重用,啟用可能會導致非預期的問題。`,multiplePrefix:`此外掛存在多份設定,`,multipleAction:`點擊前往管理`,multipleSuffix:`。`,pages:`此外掛提供了頁面:`,noSchema:`此外掛未宣告設定項,這可能並非預期行為。{0}`,notInstalled:`此外掛尚未安裝。`},view:{globalSettings:`全域設定`,group:`分組:{0}`,removeTitle:`確認移除`,removeConfirmGroup:`確定要移除分組 {0} 嗎?此操作不可復原!`,removeConfirmPlugin:`確定要移除外掛 {0} 嗎?此操作不可復原!`,renameTitle:`重新命名`,createGroupTitle:`建立分組`,cancel:`取消`,confirm:`確定`,constraintError:`目前設定項不滿足約束,請檢查設定!`,saved:`設定已儲存。`,reloaded:`設定已重新載入。`,operationError:`操作失敗,請檢查日誌!`,groupEnabled:`分組已啟用。`,groupDisabled:`分組已停用。`,pluginEnabled:`外掛已啟用。`,pluginDisabled:`外掛已停用。`}}},W=[`@koishi-ce/plugin-console`,`@koishi-ce/plugin-config`,`@koishi-ce/plugin-server`];function ce(e,t){let n=e?.[t];if(n)return n;if(t.startsWith(`@koishijs/plugin-`))return e?.[`@koishi-ce/plugin-${t.slice(17)}`]}function le(e){function t(e,t){r.has(e)||e!==`console`&&(n.using[e]={required:t})}let n={impl:[],using:{},peer:{}},r=new Set,i=u.packages,a=i?.[e];if(!i||!a)return n;for(let e in a.package.peerDependencies??{}){if(!e.includes(`@koishi-ce/plugin-`)&&!e.includes(`@koishijs/plugin-`)&&!e.includes(`koishi-plugin-`))continue;let t=ce(i,e);if(W.includes(t?.name??e))continue;let o=!a.package.peerDependenciesMeta?.[e]?.optional,s=!!t?.runtime?.id;n.peer[e]={required:o,active:s};for(let e of t?.manifest?.service.implements??[])r.add(e)}for(let e of a.manifest.service.implements)e!==`adapter`&&n.impl.push(e);for(let e of a.runtime?.required??[])t(e,!0);for(let e of a.runtime?.optional??[])t(e,!1);return a.runtime?.id&&!a.runtime?.forkable&&(n.warning=!0),a.runtime?.schema||(n.warning=!0),n}var G=g(()=>Object.fromEntries(Object.keys(u.packages??{}).filter(e=>e).map(e=>[e,le(e)]))),K=M(),q=M(),J=M({id:``,name:``,path:``});function Y(e){return e.name&&W.includes(X(e.name)??``)?!0:e.children?e.children.some(Y):!1}function X(e){if(!e)return e;if(e.startsWith(`./`))return Object.values(u.packages??{}).find(t=>t.paths?.includes(e))?.package?.name;if(e.includes(`/`)){let[t,n]=e.split(`/`);return[`${t}/koishi-plugin-${n}`].find(e=>e in(u.packages||{}))}return[`@koishi-ce/plugin-${e}`,`@koishijs/plugin-${e}`,`koishi-plugin-${e}`].find(e=>e in(u.packages||{}))}var Z=g(()=>{if(J.value)return X(J.value.name)}),ue=g(()=>{let e=G.value[Z.value??``];if(e){if(e.warning&&J.value?.disabled)return`warning`;for(let t in e.using)if(t in(u.services||{})){if(e.impl.includes(t))return`warning`}else if(e.using[t]?.required)return`warning`}});function de(e,t){let n=[];if(!t)return n;for(let r in t){if(r.startsWith(`$`))continue;let i=t[r],a={config:i,parent:e};r.startsWith(`~`)&&(a.disabled=!0,r=r.slice(1)),a.name=r.split(`:`,1)[0]??``,a.id=r,a.path=r.slice(a.name.length+1);let o=i?.$label;o!==void 0&&(a.label=o),r.startsWith(`group:`)&&(a.children=de(a,i)),n.push(a)}return n}var Q=g(()=>{let e={name:``,id:``,path:``,label:s.$i18n.t(`config.view.globalSettings`),config:u.config,children:[]},t=[e],n=[],r={},i={"":e};for(let n of de(e,u.config?.plugins))t.push(n),a(n);function a(e){!e.config?.$collapsed&&e.children&&n.push(e.path),(r[e.name]||=[]).push(e.path),i[e.path]=e,e.children?.forEach(a)}return{data:t,forks:r,paths:i,expanded:n}});function fe(e){if(!e)return`disabled`;switch(u.packages?.[X(e.name)??``]?.runtime?.forks?.[e.path]?.status){case t.PENDING:return`pending`;case t.LOADING:return`loading`;case t.ACTIVE:return`active`;case t.FAILED:return`failed`;case t.DISPOSED:return`disposed`;default:return`disabled`}}async function pe(e){if(!e)return;let t=e.parent?.path??``;l(`manager/remove`,t,e.id),await c.replace(`/plugins/${t}`)}var me=[`id`],he={class:`text-left`},ge={class:`path`},_e={class:`text-right`},ve={class:`actions`},ye=[`onClick`],be=[`onClick`],xe={class:`left`},Se={class:`right`},Ce=C({__name:`forks`,setup(e){let{t}=f(),n=g(()=>K.value?.replace(/(koishi-|^@koishijs\/)plugin-/,``)??``),r=g(()=>u.packages?.[K.value??``]);function i(e){return`${e.label?`${e.label} `:``}[${e.path}]`}function a(e){if(!e)return``;let t=[i(e)];for(;e.parent;)e=e.parent,t.unshift(i(e));return t.shift(),t.join(` > `)}async function o(e){let t=n.value;e||(e=Math.random().toString(36).slice(2,8),l(`manager/unload`,``,`${t}:${e}`,{})),await c.push(`/plugins/${e}`),K.value=void 0}return(e,i)=>{let s=F(`k-icon`),c=F(`el-button`),l=F(`el-dialog`);return A(),_(l,{"model-value":!!L(K),"onUpdate:modelValue":i[1]||=e=>K.value=void 0,class:`dialog-config-fork`,"destroy-on-close":``},{header:B(({titleId:e,titleClass:n})=>[b(`span`,{id:e,class:O(n)},I(L(K)+(r.value?.workspace?L(t)(`config.forks.workspace`):``)),11,me)]),footer:B(()=>[b(`div`,xe,[L(Q).forks[n.value]?.length?(A(),y(h,{key:0},[x(I(L(t)(`config.forks.count`,[L(Q).forks[n.value]?.length])),1)],64)):(A(),y(h,{key:1},[x(I(L(t)(`config.forks.none`)),1)],64))]),b(`div`,Se,[S(c,{onClick:i[0]||=H(e=>o(),[`stop`])},{default:B(()=>[x(I(L(t)(`config.forks.add`)),1)]),_:1})])]),default:B(()=>[b(`table`,null,[(A(!0),y(h,null,N(L(Q).forks[n.value]??[],e=>(A(),y(`tr`,{key:e},[b(`td`,he,[b(`span`,{class:O([`status-light`,L(fe)(L(Q).paths[e])])},null,2),b(`span`,ge,I(a(L(Q).paths[e])),1)]),b(`td`,_e,[b(`span`,ve,[b(`span`,{class:`action`,onClick:H(t=>o(e),[`stop`])},[S(s,{name:`arrow-right`})],8,ye),b(`span`,{class:`action`,onClick:H(t=>L(pe)(L(Q).paths[e]),[`stop`])},[S(s,{name:`delete`})],8,be)])])]))),128))])]),_:1},8,[`model-value`])}}}),we=C({__name:`global`,props:E({current:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=R(e,`modelValue`);return(n,r)=>{let i=F(`k-form`);return A(),_(i,{schema:L(u).packages?.[``]?.runtime?.schema,initial:e.current.config,modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e},null,8,[`schema`,`initial`,`modelValue`])}}}),Te={class:`modifier`},Ee={class:`k-schema-header`},De=C({__name:`modifier`,props:{modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let{t:n}=f(),r=e,i=t,a=g({get:()=>r.modelValue?.$filter,set:e=>i(`update:modelValue`,{...r.modelValue,$filter:e})});return(e,t)=>{let r=F(`k-filter`);return A(),y(`div`,Te,[b(`h2`,Ee,I(L(n)(`config.modifier.title`)),1),S(r,{modelValue:a.value,"onUpdate:modelValue":t[0]||=e=>a.value=e},null,8,[`modelValue`])])}}}),Oe=C({__name:`group`,props:E({current:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=R(e,`modelValue`);return(e,n)=>(A(),_(De,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e},null,8,[`modelValue`]))}}),$=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},ke=$(Oe,[[`__scopeId`,`data-v-90040f31`]]),Ae=C({__name:`plugin`,props:{current:{},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let{t:n}=f(),r=e,i=t,a=d(),o=g({get:()=>r.modelValue,set:e=>i(`update:modelValue`,e)}),s=g(()=>G.value[Z.value??``]),c=g(()=>u.packages?.[Z.value??``]),p=g(()=>c.value.workspace?n(`config.plugin.hintSource`):n(`config.plugin.hintAuthor`));return z(c,e=>{e&&!e.runtime&&e.name&&l(`config/request-runtime`,e.name)},{immediate:!0}),j(`plugin:name`,Z),j(`plugin:env`,s),j(`manager.settings.local`,c),j(`manager.settings.config`,o),j(`manager.settings.current`,g(()=>r.current)),(t,r)=>{let i=F(`k-comment`),l=F(`k-slot`),d=F(`k-slot-item`),f=F(`k-activity-link`),m=F(`k-markdown`),g=F(`k-form`);return L(Z)?(A(),y(h,{key:0},[c.value.runtime?c.value.runtime.failed?(A(),_(i,{key:1,type:`danger`},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.failure`,[p.value])),1)]),_:1})):(A(),_(l,{key:2,name:`plugin-details`},{default:B(()=>[S(d,{order:800},{default:B(()=>[S(l,{name:`plugin-dependency`,single:``},{default:B(()=>[(A(!0),y(h,null,N(s.value.peer,({required:e,active:t},r)=>(A(),_(i,{key:r,type:t?`success`:e?`warning`:`primary`},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.dependency`,[L(n)(e?`config.plugin.dependencyRequired`:`config.plugin.dependencyOptional`),r,L(n)(t?`config.plugin.loaded`:`config.plugin.notLoaded`)])),1)]),_:2},1032,[`type`]))),128)),(A(!0),y(h,null,N(s.value.using,({required:e},t)=>(A(),_(i,{key:t,type:t in(L(u).services??{})?`success`:e?`warning`:`primary`},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.service`,[L(n)(e?`config.plugin.serviceRequired`:`config.plugin.serviceOptional`),t,L(n)(t in(L(u).services??{})?`config.plugin.loaded`:`config.plugin.notLoaded`)])),1)]),_:2},1032,[`type`]))),128))]),_:1})]),_:1}),S(d,{order:600},{default:B(()=>[(A(!0),y(h,null,N(s.value.impl,t=>(A(),y(h,{key:t},[t in(L(u).services??{})&&e.current.disabled?(A(),_(i,{key:0,type:`warning`},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.serviceConflict`,[t])),1)]),_:2},1024)):(A(),_(i,{key:1,type:e.current.disabled?`primary`:`success`},{default:B(()=>[b(`p`,null,I(L(n)(e.current.disabled?`config.plugin.serviceFuture`:`config.plugin.serviceProvided`,[t])),1)]),_:2},1032,[`type`]))],64))),128))]),_:1}),S(d,{order:400},{default:B(()=>[c.value.runtime.id&&!c.value.runtime.forkable&&e.current.disabled?(A(),_(i,{key:0,type:`warning`},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.notReusable`)),1)]),_:1})):v(`v-if`,!0),(L(Q).forks[e.current.name]?.length??0)>1?(A(),_(i,{key:1,type:`primary`},{default:B(()=>[b(`p`,null,[x(I(L(n)(`config.plugin.multiplePrefix`)),1),b(`span`,{class:`k-link`,onClick:r[0]||=H(e=>K.value=L(Z),[`stop`])},I(L(n)(`config.plugin.multipleAction`)),1),x(I(L(n)(`config.plugin.multipleSuffix`)),1)])]),_:1})):v(`v-if`,!0)]),_:1}),S(d,{order:300},{default:B(()=>[(A(!0),y(h,null,N(L(a).$router.pages,(t,r)=>(A(),y(h,{key:r},[t.ctx.extension?.paths?.includes(e.current.path)&&!t.disabled()?(A(),_(i,{key:0,type:`success`},{default:B(()=>[b(`p`,null,[b(`span`,null,I(L(n)(`config.plugin.pages`)),1),S(f,{id:t.id},null,8,[`id`])])]),_:2},1024)):v(`v-if`,!0)],64))),128))]),_:1}),c.value.runtime?.usage?(A(),_(d,{key:0,order:-200},{default:B(()=>[S(m,{unsafe:``,class:`usage`,source:c.value.runtime?.usage},null,8,[`source`])]),_:1})):v(`v-if`,!0),S(d,{order:-600},{default:B(()=>[c.value.runtime.filter===!1?v(`v-if`,!0):(A(),_(De,{key:0,modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e},null,8,[`modelValue`]))]),_:1}),S(d,{order:-1e3},{default:B(()=>[c.value.runtime.schema?(A(),_(g,{key:1,schema:c.value.runtime.schema,initial:e.current.config,modelValue:o.value,"onUpdate:modelValue":r[2]||=e=>o.value=e},{hint:B(()=>[x(I(p.value),1)]),_:1},8,[`schema`,`initial`,`modelValue`])):(A(),_(i,{key:0,type:`warning`},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.noSchema`,[p.value])),1)]),_:1}))]),_:1})]),_:1})):(A(),_(i,{key:0},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.loading`)),1)]),_:1}))],64)):(A(),_(l,{key:1,name:`plugin-missing`,single:``},{default:B(()=>[S(i,{type:`danger`},{default:B(()=>[b(`p`,null,I(L(n)(`config.plugin.notInstalled`)),1)]),_:1})]),_:1}))}}}),je={class:`search`},Me=[`title`],Ne={class:`right`},Pe=C({__name:`tree`,props:{modelValue:{}},emits:[`update:modelValue`],setup(e,{expose:t,emit:n}){let{t:r}=f(),i=e,a=ee(),o=m(`config.tree`),s=n,c=M(null),u=M(null),d=M(``);function p(e,t){return t.name.toLowerCase().includes(d.value.toLowerCase())}let h=M(!0);async function g(){await D();let e=c.value?.$el,t=e?.querySelector(`.el-tree-node.is-active`);!t||!t.offsetTop&&a.path.slice(9)||c.value?.setScrollTop(t.offsetTop-(e.offsetHeight-t.offsetHeight)/2)}t({activate:g}),k(async()=>{g(),h.value=!1});function x(e){e&&!h.value&&g()}function C(e){let t=e.data;return t.name===`group`?r(`config.tree.group`,[e.label||t.path]):e.label||t.name||r(`config.tree.pending`)}function w(e){return e.data.path!==``}function T(e,t,n){let r=t.data;return n===`inner`?r.id.startsWith(`group:`):r.path!==``||n===`next`}function E(e,t,n,r){s(`update:modelValue`,e.path),window.dispatchEvent(new MouseEvent(r.type,r))}function j(e,t){return o(e,t)}function N(e,t,n){l(`manager/meta`,e.path,{$collapsed:null})}function P(e,t,n){l(`manager/meta`,e.path,{$collapsed:!0})}function R(e,t,n,r){let i=n===`inner`?t:t.parent;if(!i)return;let a=e.data,o=i.childNodes.findIndex(e=>e.data.path===a.path);i.data.path||--o,l(`manager/teleport`,a.parent?.path??``,a.id,i.data.path,o)}function V(e){let t=e,n=[];return t.children&&n.push(`is-group`),!t.children&&!X(t.name)&&n.push(`is-disabled`),t.path===i.modelValue&&n.push(`is-active`),n.join(` `)}return z(d,e=>{u.value?.filter(e)}),(e,t)=>{let n=F(`k-icon`),r=F(`el-input`),i=F(`el-tree`),a=F(`el-scrollbar`);return A(),_(a,{class:`plugin-tree`,ref_key:`root`,ref:c},{default:B(()=>[b(`div`,je,[S(r,{modelValue:d.value,"onUpdate:modelValue":t[0]||=e=>d.value=e},{suffix:B(()=>[S(n,{name:`search`})]),_:1},8,[`modelValue`])]),S(i,{ref_key:`tree`,ref:u,"node-key":`path`,data:L(Q).data,draggable:!0,"auto-expand-parent":!1,"default-expanded-keys":L(Q).expanded,"expand-on-click-node":!1,"filter-node-method":p,props:{class:V},"allow-drag":w,"allow-drop":T,onNodeClick:E,onNodeContextmenu:j,onNodeDrop:R,onNodeExpand:N,onNodeCollapse:P},{default:B(({node:e})=>[b(`div`,{class:`item`,ref:x},[b(`div`,{class:`label`,title:C(e)},I(C(e)),9,Me),b(`div`,Ne,[L(X)(e.data.name)?(A(),y(`span`,{key:0,class:O([`status-light`,L(fe)(e.data)])},null,2)):v(`v-if`,!0)])],512)]),_:1},8,[`data`,`default-expanded-keys`,`props`])]),_:1},512)}}}),Fe=C({__name:`index`,setup(t){let{t:n}=f(),i=ee(),a=te(),s=g({get(){let e=i.path.slice(9);return e in Q.value.paths?e:``},set(e){e in Q.value.paths||(e=``),a.replace(`/plugins/${e}`)}}),c=M(),p=M(``),m=M(),b=M();async function C(){await D(),m.value?.focus()}let w=M(),T=M(!1),E=M(),O=M(!1),k=M(null);z(w,e=>{e&&(T.value=!0)}),z(E,e=>{e&&(O.value=!0)}),z(()=>Q.value.paths[s.value],e=>{J.value=e??J.value,e&&(c.value=r(e.config))},{immediate:!0});let j=d();j.define(`config.tree`,J),j.action(`config.tree.add-plugin`,{hidden:({config:e})=>!!e.tree.path&&!e.tree.children,action:({config:e})=>q.value=e.tree}),j.action(`config.tree.add-group`,{hidden:({config:e})=>!!e.tree.path&&!e.tree.children,action:({config:e})=>{k.value=e.tree.path}});function N(e){let t=k.value;if(t===null)return;let n=Math.random().toString(36).slice(2,8);l(`manager/reload`,t,`group:${n}`,{$label:e}),a.replace(`/plugins/${n}`),k.value=null}j.action(`config.tree.clone`,{hidden:({config:e})=>!e.tree.path||!!e.tree.children,action:async({config:e})=>{let t=e.tree.parent,n=((t?.path?t.children:Q.value.data.slice(1))??[]).findIndex(t=>t.path===e.tree.path),r=Math.random().toString(36).slice(2,8);l(`manager/unload`,t?.path??``,`${e.tree.name}:${r}`,e.tree.config,n+1),a.replace(`/plugins/${r}`)}}),j.action(`config.tree.manage`,{hidden:({config:e})=>!e.tree.path||!!e.tree.children,action:async({config:e})=>{K.value=e.tree.name}}),j.action(`config.tree.rename`,{disabled:({config:e})=>!e.tree.path,action:({config:e})=>{p.value=e.tree.label||(e.tree.name===`group`?e.tree.path:e.tree.name),E.value=e.tree}}),j.action(`config.tree.remove`,{disabled:({config:e})=>!e.tree.path||Y(e.tree),action:({config:e})=>w.value=e.tree});function P(t){let r=u.packages?.[X(t)??``]?.runtime?.schema;if(!r)return!0;try{return new e(r)(c.value),!0}catch{return o.error(n(`config.view.constraintError`)),!1}}j.action(`config.tree.save`,{shortcut:`ctrl+s`,disabled:e=>!e?.config?.tree||![`config`].includes(a.currentRoute.value?.meta?.activity?.id??``),action:async({config:{tree:e}})=>{let{disabled:t,path:r}=e;if(t||P(e.name)){if(!r)return l(`manager/app-reload`,c.value);try{await R(e,t?`unload`:`reload`),o.success(n(t?`config.view.saved`:`config.view.reloaded`))}catch{o.error(n(`config.view.operationError`))}}}}),j.action(`config.tree.toggle`,{disabled:({config:e})=>!e.tree.path||Y(e.tree),action:async({config:{tree:e}})=>{let{disabled:t,name:r}=e;if(!t||P(e.name))try{await R(e,t?`reload`:`unload`),o.success(n(r===`group`?t?`config.view.groupEnabled`:`config.view.groupDisabled`:t?`config.view.pluginEnabled`:`config.view.pluginDisabled`))}catch{o.error(n(`config.view.operationError`))}}});async function R(e,t){return await l(`manager/${t}`,e.parent?.path??``,e.id,c.value)}function U(e,t){e&&(O.value=!1,e.label=t,l(`manager/meta`,e.path,{$label:t||null}))}return(e,t)=>{let r=F(`k-content`),i=F(`el-button`),a=F(`el-dialog`),o=F(`el-input`),l=F(`k-layout`);return A(),_(l,{menu:`config.tree`,"menu-data":L(J)},{header:B(()=>[L(J).path?L(J).children?(A(),y(h,{key:1},[x(I(L(n)(`config.view.group`,[L(J).label||L(J).id])),1)],64)):(A(),y(h,{key:2},[x(I(L(J).label||L(J).name)+` [`+I(L(J).path)+`] `,1)],64)):(A(),y(h,{key:0},[x(I(L(n)(`config.view.globalSettings`)),1)],64))]),left:B(()=>[S(Pe,{ref_key:`tree`,ref:b,modelValue:s.value,"onUpdate:modelValue":t[0]||=e=>s.value=e},null,8,[`modelValue`])]),default:B(()=>[(A(),_(r,{class:`plugin-view`,key:s.value},{default:B(()=>[L(J).path?L(J).children?(A(),_(ke,{key:1,modelValue:c.value,"onUpdate:modelValue":t[2]||=e=>c.value=e,current:L(J)},null,8,[`modelValue`,`current`])):(A(),_(Ae,{key:2,current:L(J),modelValue:c.value,"onUpdate:modelValue":t[3]||=e=>c.value=e},null,8,[`current`,`modelValue`])):(A(),_(we,{key:0,current:L(J),modelValue:c.value,"onUpdate:modelValue":t[1]||=e=>c.value=e},null,8,[`current`,`modelValue`]))]),_:1})),S(a,{modelValue:T.value,"onUpdate:modelValue":t[6]||=e=>T.value=e,title:L(n)(`config.view.removeTitle`),"destroy-on-close":``,onClosed:t[7]||=e=>w.value=void 0},{footer:B(()=>[S(i,{onClick:t[4]||=e=>T.value=!1},{default:B(()=>[x(I(L(n)(`config.view.cancel`)),1)]),_:1}),S(i,{type:`danger`,onClick:t[5]||=e=>(T.value=!1,L(pe)(w.value),b.value?.activate())},{default:B(()=>[x(I(L(n)(`config.view.confirm`)),1)]),_:1})]),default:B(()=>[w.value?(A(),y(h,{key:0},[x(I(L(n)(w.value.children?`config.view.removeConfirmGroup`:`config.view.removeConfirmPlugin`,[w.value.label||(w.value.children?w.value.path:w.value.name)])),1)],64)):v(`v-if`,!0)]),_:1},8,[`modelValue`,`title`]),S(a,{modelValue:O.value,"onUpdate:modelValue":t[12]||=e=>O.value=e,title:L(n)(`config.view.renameTitle`),"destroy-on-close":``,onOpen:C,onClosed:t[13]||=e=>E.value=void 0},{footer:B(()=>[S(i,{onClick:t[10]||=e=>O.value=!1},{default:B(()=>[x(I(L(n)(`config.view.cancel`)),1)]),_:1}),S(i,{type:`primary`,onClick:t[11]||=e=>U(E.value,p.value)},{default:B(()=>[x(I(L(n)(`config.view.confirm`)),1)]),_:1})]),default:B(()=>[E.value?(A(),_(o,{key:0,ref_key:`inputEl`,ref:m,modelValue:p.value,"onUpdate:modelValue":t[8]||=e=>p.value=e,onKeydown:t[9]||=V(H(e=>U(E.value,p.value),[`stop`,`prevent`]),[`enter`])},null,8,[`modelValue`])):v(`v-if`,!0)]),_:1},8,[`modelValue`,`title`]),S(a,{"model-value":k.value!==null,"onUpdate:modelValue":t[18]||=e=>k.value=null,title:L(n)(`config.view.createGroupTitle`),"destroy-on-close":``,onOpen:C},{footer:B(()=>[S(i,{onClick:t[16]||=e=>k.value=null},{default:B(()=>[x(I(L(n)(`config.view.cancel`)),1)]),_:1}),S(i,{type:`primary`,onClick:t[17]||=e=>N(p.value)},{default:B(()=>[x(I(L(n)(`config.view.confirm`)),1)]),_:1})]),default:B(()=>[S(o,{ref_key:`inputEl`,ref:m,modelValue:p.value,"onUpdate:modelValue":t[14]||=e=>p.value=e,onKeydown:t[15]||=V(H(e=>N(p.value),[`stop`,`prevent`]),[`enter`])},null,8,[`modelValue`])]),_:1},8,[`model-value`,`title`])]),_:1},8,[`menu-data`])}}}),Ie={class:`title`},Le={class:`content`},Re=[`onClick`],ze=C({__name:`select`,setup(e){let{t}=f(),n=p(),r=M(``),i=M(),a=T(`plugin-select-filter`,e=>!0),o=g(()=>Object.values(u.packages??{}).filter(({name:e,shortname:t})=>{let n=e?u.packages?.[e]:void 0;return!!e&&t.includes(r.value.toLowerCase())&&!!n&&a(n)}));function s(e){let t=q.value;if(!t)return;let n=t.path,i=Math.random().toString(36).slice(2,8);q.value=void 0,r.value=``;let a=Object.values(u.packages??{}).find(t=>t.shortname===e)?.paths?.[0]??e;l(`manager/unload`,n,`${a}:${i}`,{}),c.push(`/plugins/${i}`)}return z(q,async e=>{e&&(await D(),await i.value?.focus())},{flush:`post`}),(e,a)=>{let c=F(`k-icon`),l=F(`el-input`),d=F(`k-markdown`),f=F(`el-scrollbar`),p=F(`el-dialog`);return L(u).packages?(A(),_(p,{key:0,modelValue:!!L(q),"onUpdate:modelValue":a[1]||=e=>q.value=void 0,class:`plugin-select`},{header:B(()=>[P(e.$slots,`title`,{packages:o.value},()=>[b(`span`,Ie,I(L(t)(`config.select.title`)),1)]),S(l,{ref_key:`input`,ref:i,modelValue:r.value,"onUpdate:modelValue":a[0]||=e=>r.value=e},{suffix:B(()=>[S(c,{name:`search`})]),_:1},8,[`modelValue`])]),default:B(()=>[P(e.$slots,`tabs`,{packages:o.value}),b(`div`,Le,[S(f,null,{default:B(()=>[(A(!0),y(h,null,N(o.value,({name:e,shortname:t,manifest:r})=>(A(),y(`div`,{class:`package`,key:e,onClick:H(e=>s(t),[`stop`])},[b(`h3`,null,I(t),1),S(d,{inline:``,class:`desc`,source:L(n)(r.description)},null,8,[`source`])],8,Re))),128))]),_:1})])]),_:3},8,[`modelValue`])):v(`v-if`,!0)}}}),Be={},Ve={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`};function He(e,t){return A(),y(`svg`,Ve,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M452 60H488C499 60 508 68.95 508 80C508 91.05 499 100 488 100H452V136C452 147 443 156 432 156C420.1 156 412 147 412 136V100H376C364.1 100 356 91.05 356 80C356 68.95 364.1 60 376 60H412V24C412 12.95 420.1 4 432 4C443 4 452 12.95 452 24V60zM280.8 133.1L490.1 222.8C503.4 228.5 512 241.5 512 256C512 270.5 503.4 283.5 490.1 289.2L280.8 378.9C272.1 382.3 264.5 384 256 384C247.5 384 239 382.3 231.2 378.9L21.9 289.2C8.614 283.5 0 270.5 0 256C0 241.5 8.614 228.5 21.9 222.8L231.2 133.1C239 129.7 247.5 128 256 128C264.5 128 272.1 129.7 280.8 133.1V133.1zM66.26 256L250.1 334.8C251.1 335.6 253.1 336 256 336C258 336 260 335.6 261.9 334.8L445.7 256L261.9 177.2C260 176.4 258 176 256 176C253.1 176 251.1 176.4 250.1 177.2L66.26 256zM59.53 350.6C66.15 359.9 65.24 372.3 57.1 380.5L250.1 462.8C251.1 463.6 253.1 464 256 464C258 464 260 463.6 261.9 462.8L452 381.3C447.4 374.4 446.5 365.2 450.5 357.3C456.5 345.4 470.9 340.6 482.7 346.5L491.8 351.1C504.2 357.3 512 369.9 512 383.7C512 398.4 503.3 411.6 489.9 417.3L280.8 506.9C272.1 510.3 264.5 512 256 512C247.5 512 239 510.3 231.2 506.9L22.81 417.6C8.971 411.7 .001 398.1 .001 383C.001 370.9 5.87 359.5 15.76 352.4L26.05 345C36.84 337.3 51.83 339.8 59.53 350.6L59.53 350.6z`},null,-1)]])}var Ue=$(Be,[[`render`,He]]),We={},Ge={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`};function Ke(e,t){return A(),y(`svg`,Ge,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M144,0c13.3,0,24,10.8,24,24v88h-48V24C120,10.8,130.8,0,144,0z M336,0c13.3,0,24,10.8,24,24v88h-48V24
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import{Schema as e,ScopeStatus as t,Service as n,clone as r,extendLocales as i,icons as a,message as o,root as s,router as c,send as l,store as u,useContext as d,useI18n as f,useI18nText as p,useMenu as m}from"@koishi-ce/client";import{Fragment as h,computed as g,createBlock as _,createCommentVNode as v,createElementBlock as y,createElementVNode as b,createTextVNode as x,createVNode as S,defineComponent as C,h as w,inject as T,markRaw as E,mergeModels as D,nextTick as O,normalizeClass as k,onActivated as A,openBlock as j,provide as M,ref as N,renderList as P,renderSlot as F,resolveComponent as I,toDisplayString as L,unref as R,useModel as z,watch as B,withCtx as V,withKeys as ee,withModifiers as H}from"vue";import{useRoute as te,useRouter as ne}from"vue-router";var re={config:{title:`Plugin-Konfigurationen`,menu:{enableGroup:`Gruppe aktivieren`,disableGroup:`Gruppe deaktivieren`,enablePlugin:`Plugin aktivieren`,disablePlugin:`Plugin deaktivieren`,saveConfig:`Konfiguration speichern`,reloadConfig:`Konfiguration neu laden`,rename:`Umbenennen`,removeGroup:`Gruppe entfernen`,removePlugin:`Plugin entfernen`,clone:`Konfiguration klonen`,manage:`Mehrere Konfigurationen verwalten`,addPlugin:`Plugin hinzufügen`,addGroup:`Gruppe hinzufügen`,globalSettings:`Globale Einstellungen`},tree:{group:`Gruppe: {0}`,pending:`Ausstehend`},forks:{workspace:` (Arbeitsbereich)`,count:`Dieses Plugin hat derzeit {0} Konfigurationen.`,none:`Dieses Plugin wurde noch nicht konfiguriert.`,add:`Neue Konfiguration hinzufügen`},modifier:{title:`Filtereinstellungen`},select:{title:`Plugin auswählen`},plugin:{loading:`Plugin-Konfiguration wird geladen...`,failure:`Das Plugin konnte nicht geladen werden, möglicherweise aufgrund eines Problems im Plugin selbst. {0}`,hintSource:`Bitte prüfen Sie den Quellcode des Plugins.`,hintAuthor:`Bitte kontaktieren Sie den Plugin-Autor und melden Sie das Problem.`,dependency:`{0}: {1} ({2})`,dependencyRequired:`Erforderliche Abhängigkeit`,dependencyOptional:`Optionale Abhängigkeit`,service:`{0}: {1} ({2})`,serviceRequired:`Erforderlicher Service`,serviceOptional:`Optionaler Service`,loaded:`geladen`,notLoaded:`nicht geladen`,serviceConflict:`Dieses Plugin wird den Service {0} bereitstellen, aber dieser Service wird bereits von einem anderen Plugin implementiert.`,serviceProvided:`Dieses Plugin stellt den Service {0} bereit.`,serviceFuture:`Dieses Plugin wird nach der Aktivierung den Service {0} bereitstellen.`,notReusable:`Dieses Plugin läuft bereits und ist nicht wiederverwendbar. Eine erneute Aktivierung kann zu unerwarteten Problemen führen.`,multiplePrefix:`Dieses Plugin hat mehrere Konfigurationen.`,multipleAction:`Klicken Sie hier, um sie zu verwalten`,multipleSuffix:``,pages:`Von diesem Plugin bereitgestellte Seiten:`,noSchema:`Dieses Plugin deklariert keine Konfigurationsoptionen, was möglicherweise nicht beabsichtigt ist. {0}`,notInstalled:`Dieses Plugin ist noch nicht installiert.`},view:{globalSettings:`Globale Einstellungen`,group:`Gruppe: {0}`,removeTitle:`Entfernen bestätigen`,removeConfirmGroup:`Möchten Sie die Gruppe {0} wirklich entfernen? Diese Aktion kann nicht rückgängig gemacht werden!`,removeConfirmPlugin:`Möchten Sie das Plugin {0} wirklich entfernen? Diese Aktion kann nicht rückgängig gemacht werden!`,renameTitle:`Umbenennen`,createGroupTitle:`Gruppe erstellen`,cancel:`Abbrechen`,confirm:`OK`,constraintError:`Die aktuelle Konfiguration erfüllt die Einschränkungen nicht. Bitte überprüfen Sie sie!`,saved:`Konfiguration gespeichert.`,reloaded:`Konfiguration neu geladen.`,operationError:`Vorgang fehlgeschlagen. Bitte überprüfen Sie die Protokolle!`,groupEnabled:`Gruppe aktiviert.`,groupDisabled:`Gruppe deaktiviert.`,pluginEnabled:`Plugin aktiviert.`,pluginDisabled:`Plugin deaktiviert.`}}},ie={config:{title:`Plugin Configurations`,menu:{enableGroup:`Enable Group`,disableGroup:`Disable Group`,enablePlugin:`Enable Plugin`,disablePlugin:`Disable Plugin`,saveConfig:`Save Configuration`,reloadConfig:`Reload Configuration`,rename:`Rename`,removeGroup:`Remove Group`,removePlugin:`Remove Plugin`,clone:`Clone Configuration`,manage:`Manage Multiple Configurations`,addPlugin:`Add Plugin`,addGroup:`Add Group`,globalSettings:`Global Settings`},tree:{group:`Group: {0}`,pending:`Pending`},forks:{workspace:` (workspace)`,count:`This plugin currently has {0} configurations.`,none:`This plugin has not been configured yet.`,add:`Add New Configuration`},modifier:{title:`Filter Settings`},select:{title:`Select Plugin`},plugin:{loading:`Loading plugin configuration...`,failure:`Failed to load the plugin, which may be caused by the plugin itself. {0}`,hintSource:`Please check the plugin source code.`,hintAuthor:`Please contact the plugin author and report this issue.`,dependency:`{0}: {1} ({2})`,dependencyRequired:`Required dependency`,dependencyOptional:`Optional dependency`,service:`{0}: {1} ({2})`,serviceRequired:`Required service`,serviceOptional:`Optional service`,loaded:`loaded`,notLoaded:`not loaded`,serviceConflict:`This plugin will provide the {0} service, but this service is already implemented by another plugin.`,serviceProvided:`This plugin provides the {0} service.`,serviceFuture:`This plugin will provide the {0} service once enabled.`,notReusable:`This plugin is already running and is not reusable. Enabling it again may cause unexpected problems.`,multiplePrefix:`This plugin has multiple configurations.`,multipleAction:`Click to manage`,multipleSuffix:``,pages:`Pages provided by this plugin:`,noSchema:`This plugin declares no configuration options, which may not be intended. {0}`,notInstalled:`This plugin is not installed yet.`},view:{globalSettings:`Global Settings`,group:`Group: {0}`,removeTitle:`Confirm Removal`,removeConfirmGroup:`Are you sure you want to remove the group {0}? This action cannot be undone!`,removeConfirmPlugin:`Are you sure you want to remove the plugin {0}? This action cannot be undone!`,renameTitle:`Rename`,createGroupTitle:`Create Group`,cancel:`Cancel`,confirm:`OK`,constraintError:`The current configuration does not satisfy the constraints. Please check it!`,saved:`Configuration saved.`,reloaded:`Configuration reloaded.`,operationError:`Operation failed. Please check the logs!`,groupEnabled:`Group enabled.`,groupDisabled:`Group disabled.`,pluginEnabled:`Plugin enabled.`,pluginDisabled:`Plugin disabled.`}}},ae={config:{title:`Configurations des plugins`,menu:{enableGroup:`Activer le groupe`,disableGroup:`Désactiver le groupe`,enablePlugin:`Activer le plugin`,disablePlugin:`Désactiver le plugin`,saveConfig:`Enregistrer la configuration`,reloadConfig:`Recharger la configuration`,rename:`Renommer`,removeGroup:`Supprimer le groupe`,removePlugin:`Supprimer le plugin`,clone:`Cloner la configuration`,manage:`Gérer plusieurs configurations`,addPlugin:`Ajouter un plugin`,addGroup:`Ajouter un groupe`,globalSettings:`Paramètres globaux`},tree:{group:`Groupe : {0}`,pending:`En attente`},forks:{workspace:` (espace de travail)`,count:`Ce plugin possède actuellement {0} configurations.`,none:`Ce plugin n'a pas encore été configuré.`,add:`Ajouter une configuration`},modifier:{title:`Paramètres du filtre`},select:{title:`Sélectionner un plugin`},plugin:{loading:`Chargement de la configuration du plugin...`,failure:`Échec du chargement du plugin, probablement causé par le plugin lui-même. {0}`,hintSource:`Veuillez vérifier le code source du plugin.`,hintAuthor:`Veuillez contacter l'auteur du plugin et signaler ce problème.`,dependency:`{0} : {1} ({2})`,dependencyRequired:`Dépendance requise`,dependencyOptional:`Dépendance facultative`,service:`{0} : {1} ({2})`,serviceRequired:`Service requis`,serviceOptional:`Service facultatif`,loaded:`chargé`,notLoaded:`non chargé`,serviceConflict:`Ce plugin fournira le service {0}, mais ce service est déjà implémenté par un autre plugin.`,serviceProvided:`Ce plugin fournit le service {0}.`,serviceFuture:`Ce plugin fournira le service {0} une fois activé.`,notReusable:`Ce plugin est déjà en cours d'exécution et n'est pas réutilisable. Le réactiver peut causer des problèmes inattendus.`,multiplePrefix:`Ce plugin possède plusieurs configurations.`,multipleAction:`Cliquez pour les gérer`,multipleSuffix:``,pages:`Pages fournies par ce plugin :`,noSchema:`Ce plugin ne déclare aucune option de configuration, ce qui n'est peut-être pas voulu. {0}`,notInstalled:`Ce plugin n'est pas encore installé.`},view:{globalSettings:`Paramètres globaux`,group:`Groupe : {0}`,removeTitle:`Confirmer la suppression`,removeConfirmGroup:`Voulez-vous vraiment supprimer le groupe {0} ? Cette action est irréversible !`,removeConfirmPlugin:`Voulez-vous vraiment supprimer le plugin {0} ? Cette action est irréversible !`,renameTitle:`Renommer`,createGroupTitle:`Créer un groupe`,cancel:`Annuler`,confirm:`OK`,constraintError:`La configuration actuelle ne satisfait pas les contraintes. Veuillez la vérifier !`,saved:`Configuration enregistrée.`,reloaded:`Configuration rechargée.`,operationError:`L'opération a échoué. Veuillez consulter les journaux !`,groupEnabled:`Groupe activé.`,groupDisabled:`Groupe désactivé.`,pluginEnabled:`Plugin activé.`,pluginDisabled:`Plugin désactivé.`}}},oe={config:{title:`プラグイン設定`,menu:{enableGroup:`グループを有効化`,disableGroup:`グループを無効化`,enablePlugin:`プラグインを有効化`,disablePlugin:`プラグインを無効化`,saveConfig:`設定を保存`,reloadConfig:`設定を再読み込み`,rename:`名前の変更`,removeGroup:`グループを削除`,removePlugin:`プラグインを削除`,clone:`設定を複製`,manage:`複数の設定を管理`,addPlugin:`プラグインを追加`,addGroup:`グループを追加`,globalSettings:`グローバル設定`},tree:{group:`グループ:{0}`,pending:`追加予定`},forks:{workspace:`(ワークスペース)`,count:`このプラグインには現在 {0} 件の設定があります。`,none:`このプラグインはまだ設定されていません。`,add:`新しい設定を追加`},modifier:{title:`フィルター設定`},select:{title:`プラグインを選択`},plugin:{loading:`プラグイン設定を読み込み中……`,failure:`プラグインの読み込みに失敗しました。プラグイン自体の問題の可能性があります。{0}`,hintSource:`プラグインのソースコードを確認してください。`,hintAuthor:`プラグインの作者に連絡してこの問題を報告してください。`,dependency:`{0}:{1}({2})`,dependencyRequired:`必須の依存関係`,dependencyOptional:`任意の依存関係`,service:`{0}:{1}({2})`,serviceRequired:`必須のサービス`,serviceOptional:`任意のサービス`,loaded:`読み込み済み`,notLoaded:`未読み込み`,serviceConflict:`このプラグインは {0} サービスを提供しようとしていますが、このサービスはすでに他のプラグインが実装しています。`,serviceProvided:`このプラグインは {0} サービスを提供しています。`,serviceFuture:`このプラグインは有効化後に {0} サービスを提供します。`,notReusable:`このプラグインはすでに実行中で再利用できません。有効化すると予期しない問題が発生する可能性があります。`,multiplePrefix:`このプラグインには複数の設定があります。`,multipleAction:`クリックして管理`,multipleSuffix:``,pages:`このプラグインが提供するページ:`,noSchema:`このプラグインは設定項目を宣言していません。これは意図した動作ではない可能性があります。{0}`,notInstalled:`このプラグインはまだインストールされていません。`},view:{globalSettings:`グローバル設定`,group:`グループ:{0}`,removeTitle:`削除の確認`,removeConfirmGroup:`本当にグループ {0} を削除しますか?この操作は元に戻せません!`,removeConfirmPlugin:`本当にプラグイン {0} を削除しますか?この操作は元に戻せません!`,renameTitle:`名前の変更`,createGroupTitle:`グループを作成`,cancel:`キャンセル`,confirm:`確定`,constraintError:`現在の設定項目が制約を満たしていません。設定を確認してください!`,saved:`設定を保存しました。`,reloaded:`設定を再読み込みしました。`,operationError:`操作に失敗しました。ログを確認してください!`,groupEnabled:`グループを有効化しました。`,groupDisabled:`グループを無効化しました。`,pluginEnabled:`プラグインを有効化しました。`,pluginDisabled:`プラグインを無効化しました。`}}},se={config:{title:`Конфигурации плагинов`,menu:{enableGroup:`Включить группу`,disableGroup:`Отключить группу`,enablePlugin:`Включить плагин`,disablePlugin:`Отключить плагин`,saveConfig:`Сохранить конфигурацию`,reloadConfig:`Перезагрузить конфигурацию`,rename:`Переименовать`,removeGroup:`Удалить группу`,removePlugin:`Удалить плагин`,clone:`Клонировать конфигурацию`,manage:`Управлять несколькими конфигурациями`,addPlugin:`Добавить плагин`,addGroup:`Добавить группу`,globalSettings:`Глобальные настройки`},tree:{group:`Группа: {0}`,pending:`Ожидает добавления`},forks:{workspace:` (рабочая область)`,count:`У этого плагина сейчас {0} конфигураций.`,none:`Этот плагин ещё не настроен.`,add:`Добавить новую конфигурацию`},modifier:{title:`Настройки фильтра`},select:{title:`Выберите плагин`},plugin:{loading:`Загрузка конфигурации плагина...`,failure:`Не удалось загрузить плагин — возможно, проблема в самом плагине. {0}`,hintSource:`Проверьте исходный код плагина.`,hintAuthor:`Свяжитесь с автором плагина и сообщите о проблеме.`,dependency:`{0}: {1} ({2})`,dependencyRequired:`Обязательная зависимость`,dependencyOptional:`Необязательная зависимость`,service:`{0}: {1} ({2})`,serviceRequired:`Обязательный сервис`,serviceOptional:`Необязательный сервис`,loaded:`загружен`,notLoaded:`не загружен`,serviceConflict:`Этот плагин предоставит сервис {0}, но этот сервис уже реализован другим плагином.`,serviceProvided:`Этот плагин предоставляет сервис {0}.`,serviceFuture:`Этот плагин будет предоставлять сервис {0} после включения.`,notReusable:`Этот плагин уже запущен и не может использоваться повторно. Его повторное включение может привести к непредвиденным проблемам.`,multiplePrefix:`У этого плагина несколько конфигураций.`,multipleAction:`Нажмите, чтобы управлять ими`,multipleSuffix:``,pages:`Страницы, предоставляемые этим плагином:`,noSchema:`Этот плагин не объявляет параметров конфигурации, что может быть непреднамеренным. {0}`,notInstalled:`Этот плагин ещё не установлен.`},view:{globalSettings:`Глобальные настройки`,group:`Группа: {0}`,removeTitle:`Подтвердите удаление`,removeConfirmGroup:`Вы действительно хотите удалить группу {0}? Это действие нельзя отменить!`,removeConfirmPlugin:`Вы действительно хотите удалить плагин {0}? Это действие нельзя отменить!`,renameTitle:`Переименовать`,createGroupTitle:`Создать группу`,cancel:`Отмена`,confirm:`ОК`,constraintError:`Текущая конфигурация не удовлетворяет ограничениям. Проверьте её!`,saved:`Конфигурация сохранена.`,reloaded:`Конфигурация перезагружена.`,operationError:`Операция не удалась. Проверьте журналы!`,groupEnabled:`Группа включена.`,groupDisabled:`Группа отключена.`,pluginEnabled:`Плагин включён.`,pluginDisabled:`Плагин отключён.`}}},ce={config:{title:`插件配置`,menu:{enableGroup:`启用分组`,disableGroup:`停用分组`,enablePlugin:`启用插件`,disablePlugin:`停用插件`,saveConfig:`保存配置`,reloadConfig:`重载配置`,rename:`重命名`,removeGroup:`移除分组`,removePlugin:`移除插件`,clone:`克隆配置`,manage:`管理多份配置`,addPlugin:`添加插件`,addGroup:`添加分组`,globalSettings:`全局设置`},tree:{group:`分组:{0}`,pending:`待添加`},forks:{workspace:` (工作区)`,count:`此插件目前存在 {0} 份配置。`,none:`此插件尚未被配置。`,add:`添加新配置`},modifier:{title:`过滤器设置`},select:{title:`选择插件`},plugin:{loading:`正在加载插件配置……`,failure:`插件加载失败,这可能是插件本身的问题所致。{0}`,hintSource:`请检查插件源代码。`,hintAuthor:`请联系插件作者并反馈此问题。`,dependency:`{0}:{1}({2})`,dependencyRequired:`必需依赖`,dependencyOptional:`可选依赖`,service:`{0}:{1}({2})`,serviceRequired:`必需服务`,serviceOptional:`可选服务`,loaded:`已加载`,notLoaded:`未加载`,serviceConflict:`此插件将会提供 {0} 服务,但此服务已被其他插件实现。`,serviceProvided:`此插件提供了 {0} 服务。`,serviceFuture:`此插件启用后将会提供 {0} 服务。`,notReusable:`此插件已在运行且不可重用,启用可能会导致非预期的问题。`,multiplePrefix:`此插件存在多份配置,`,multipleAction:`点击前往管理`,multipleSuffix:`。`,pages:`此插件提供了页面:`,noSchema:`此插件未声明配置项,这可能并非预期行为。{0}`,notInstalled:`此插件尚未安装。`},view:{globalSettings:`全局设置`,group:`分组:{0}`,removeTitle:`确认移除`,removeConfirmGroup:`确定要移除分组 {0} 吗?此操作不可撤销!`,removeConfirmPlugin:`确定要移除插件 {0} 吗?此操作不可撤销!`,renameTitle:`重命名`,createGroupTitle:`创建分组`,cancel:`取消`,confirm:`确定`,constraintError:`当前配置项不满足约束,请检查配置!`,saved:`配置已保存。`,reloaded:`配置已重载。`,operationError:`操作失败,请检查日志!`,groupEnabled:`分组已启用。`,groupDisabled:`分组已停用。`,pluginEnabled:`插件已启用。`,pluginDisabled:`插件已停用。`}}},le={config:{title:`外掛設定`,menu:{enableGroup:`啟用分組`,disableGroup:`停用分組`,enablePlugin:`啟用外掛`,disablePlugin:`停用外掛`,saveConfig:`儲存設定`,reloadConfig:`重新載入設定`,rename:`重新命名`,removeGroup:`移除分組`,removePlugin:`移除外掛`,clone:`複製設定`,manage:`管理多份設定`,addPlugin:`新增外掛`,addGroup:`新增分組`,globalSettings:`全域設定`},tree:{group:`分組:{0}`,pending:`待新增`},forks:{workspace:` (工作區)`,count:`此外掛目前存在 {0} 份設定。`,none:`此外掛尚未被設定。`,add:`新增設定`},modifier:{title:`過濾器設定`},select:{title:`選擇外掛`},plugin:{loading:`正在載入外掛設定……`,failure:`外掛載入失敗,這可能是外掛本身的問題所致。{0}`,hintSource:`請檢查外掛原始碼。`,hintAuthor:`請聯絡外掛作者並回報此問題。`,dependency:`{0}:{1}({2})`,dependencyRequired:`必需相依性`,dependencyOptional:`可選相依性`,service:`{0}:{1}({2})`,serviceRequired:`必需服務`,serviceOptional:`可選服務`,loaded:`已載入`,notLoaded:`未載入`,serviceConflict:`此外掛將會提供 {0} 服務,但此服務已被其他外掛實作。`,serviceProvided:`此外掛提供了 {0} 服務。`,serviceFuture:`此外掛啟用後將會提供 {0} 服務。`,notReusable:`此外掛已在執行且不可重用,啟用可能會導致非預期的問題。`,multiplePrefix:`此外掛存在多份設定,`,multipleAction:`點擊前往管理`,multipleSuffix:`。`,pages:`此外掛提供了頁面:`,noSchema:`此外掛未宣告設定項,這可能並非預期行為。{0}`,notInstalled:`此外掛尚未安裝。`},view:{globalSettings:`全域設定`,group:`分組:{0}`,removeTitle:`確認移除`,removeConfirmGroup:`確定要移除分組 {0} 嗎?此操作不可復原!`,removeConfirmPlugin:`確定要移除外掛 {0} 嗎?此操作不可復原!`,renameTitle:`重新命名`,createGroupTitle:`建立分組`,cancel:`取消`,confirm:`確定`,constraintError:`目前設定項不滿足約束,請檢查設定!`,saved:`設定已儲存。`,reloaded:`設定已重新載入。`,operationError:`操作失敗,請檢查日誌!`,groupEnabled:`分組已啟用。`,groupDisabled:`分組已停用。`,pluginEnabled:`外掛已啟用。`,pluginDisabled:`外掛已停用。`}}},U=[`@koishi-ce/plugin-console`,`@koishi-ce/plugin-config`,`@koishi-ce/plugin-server`];function ue(e,t){let n=e?.[t];if(n)return n;if(t.startsWith(`@koishijs/plugin-`))return e?.[`@koishi-ce/plugin-${t.slice(17)}`]}function de(e){function t(e,t){r.has(e)||e!==`console`&&(n.using[e]={required:t})}let n={impl:[],using:{},peer:{}},r=new Set,i=u.packages,a=i?.[e];if(!i||!a)return n;for(let e in a.package.peerDependencies??{}){if(!e.includes(`@koishi-ce/plugin-`)&&!e.includes(`@koishijs/plugin-`)&&!e.includes(`koishi-plugin-`))continue;let t=ue(i,e);if(U.includes(t?.name??e))continue;let o=!a.package.peerDependenciesMeta?.[e]?.optional,s=!!t?.runtime?.id;n.peer[e]={required:o,active:s};for(let e of t?.manifest?.service.implements??[])r.add(e)}for(let e of a.manifest.service.implements)e!==`adapter`&&n.impl.push(e);for(let e of a.runtime?.required??[])t(e,!0);for(let e of a.runtime?.optional??[])t(e,!1);return a.runtime?.id&&!a.runtime?.forkable&&(n.warning=!0),a.runtime?.schema||(n.warning=!0),n}var W=g(()=>Object.fromEntries(Object.keys(u.packages??{}).filter(e=>e).map(e=>[e,de(e)]))),G=N(),K=N(),q=N({id:``,name:``,path:``});function J(e){return e.name&&U.includes(Y(e.name)??``)?!0:e.children?e.children.some(J):!1}function Y(e){if(!e)return e;if(e.startsWith(`./`)){let{packages:t}=u;return t?Object.values(t).find(t=>t.paths?.includes(e))?.package?.name:e}if(e.includes(`/`)){let[t,n]=e.split(`/`);return[`${t}/koishi-plugin-${n}`].find(e=>e in(u.packages||{}))}return[`@koishi-ce/plugin-${e}`,`@koishijs/plugin-${e}`,`koishi-plugin-${e}`].find(e=>e in(u.packages||{}))}var X=g(()=>{if(q.value)return Y(q.value.name)}),fe=g(()=>{let e=W.value[X.value??``];if(e){if(e.warning&&q.value?.disabled)return`warning`;for(let t in e.using)if(t in(u.services||{})){if(e.impl.includes(t))return`warning`}else if(e.using[t]?.required)return`warning`}});function pe(e,t){let n=[];if(!t)return n;for(let r in t){if(r.startsWith(`$`))continue;let i=t[r],a={config:i,parent:e};r.startsWith(`~`)&&(a.disabled=!0,r=r.slice(1)),a.name=r.split(`:`,1)[0]??``,a.id=r,a.path=r.slice(a.name.length+1);let o=i?.$label;o!==void 0&&(a.label=o),r.startsWith(`group:`)&&(a.children=pe(a,i)),n.push(a)}return n}var Z=g(()=>{let e={name:``,id:``,path:``,label:s.$i18n.t(`config.view.globalSettings`),config:u.config,children:[]},t=[e],n=[],r={},i={"":e};for(let n of pe(e,u.config?.plugins))t.push(n),a(n);function a(e){!e.config?.$collapsed&&e.children&&n.push(e.path),(r[e.name]||=[]).push(e.path),i[e.path]=e,e.children?.forEach(a)}return{data:t,forks:r,paths:i,expanded:n}});function me(e){if(!e)return`disabled`;switch(u.packages?.[Y(e.name)??``]?.runtime?.forks?.[e.path]?.status){case t.PENDING:return`pending`;case t.LOADING:return`loading`;case t.ACTIVE:return`active`;case t.FAILED:return`failed`;case t.DISPOSED:return`disposed`;default:return`disabled`}}async function Q(e){if(!e)return;let t=e.parent?.path??``;l(`manager/remove`,t,e.id),await c.replace(`/plugins/${t}`)}var he=[`id`],ge={class:`text-left`},_e={class:`path`},ve={class:`text-right`},ye={class:`actions`},be=[`onClick`],xe=[`onClick`],Se={class:`left`},Ce={class:`right`},we=C({__name:`forks`,setup(e){let{t}=f(),n=g(()=>G.value?.replace(/(koishi-|^@koishijs\/)plugin-/,``)??``),r=g(()=>u.packages?.[G.value??``]);function i(e){return`${e.label?`${e.label} `:``}[${e.path}]`}function a(e){if(!e)return``;let t=[i(e)];for(;e.parent;)e=e.parent,t.unshift(i(e));return t.shift(),t.join(` > `)}async function o(e){let t=n.value;e||(e=Math.random().toString(36).slice(2,8),l(`manager/unload`,``,`${t}:${e}`,{})),await c.push(`/plugins/${e}`),G.value=void 0}return(e,i)=>{let s=I(`k-icon`),c=I(`el-button`),l=I(`el-dialog`);return j(),_(l,{"model-value":!!R(G),"onUpdate:modelValue":i[1]||=e=>G.value=void 0,class:`dialog-config-fork`,"destroy-on-close":``},{header:V(({titleId:e,titleClass:n})=>[b(`span`,{id:e,class:k(n)},L(R(G)+(r.value?.workspace?R(t)(`config.forks.workspace`):``)),11,he)]),footer:V(()=>[b(`div`,Se,[R(Z).forks[n.value]?.length?(j(),y(h,{key:0},[x(L(R(t)(`config.forks.count`,[R(Z).forks[n.value]?.length])),1)],64)):(j(),y(h,{key:1},[x(L(R(t)(`config.forks.none`)),1)],64))]),b(`div`,Ce,[S(c,{onClick:i[0]||=H(e=>o(),[`stop`])},{default:V(()=>[x(L(R(t)(`config.forks.add`)),1)]),_:1})])]),default:V(()=>[b(`table`,null,[(j(!0),y(h,null,P(R(Z).forks[n.value]??[],e=>(j(),y(`tr`,{key:e},[b(`td`,ge,[b(`span`,{class:k([`status-light`,R(me)(R(Z).paths[e])])},null,2),b(`span`,_e,L(a(R(Z).paths[e])),1)]),b(`td`,ve,[b(`span`,ye,[b(`span`,{class:`action`,onClick:H(t=>o(e),[`stop`])},[S(s,{name:`arrow-right`})],8,be),b(`span`,{class:`action`,onClick:H(t=>R(Q)(R(Z).paths[e]),[`stop`])},[S(s,{name:`delete`})],8,xe)])])]))),128))])]),_:1},8,[`model-value`])}}}),Te=C({__name:`global`,props:D({current:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=z(e,`modelValue`);return(n,r)=>{let i=I(`k-form`);return j(),_(i,{schema:R(u).packages?.[``]?.runtime?.schema,initial:e.current.config,modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e},null,8,[`schema`,`initial`,`modelValue`])}}}),Ee={class:`modifier`},De={class:`k-schema-header`},Oe=C({__name:`modifier`,props:{modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let{t:n}=f(),r=e,i=t,a=g({get:()=>r.modelValue?.$filter,set:e=>i(`update:modelValue`,{...r.modelValue,$filter:e})});return(e,t)=>{let r=I(`k-filter`);return j(),y(`div`,Ee,[b(`h2`,De,L(R(n)(`config.modifier.title`)),1),S(r,{modelValue:a.value,"onUpdate:modelValue":t[0]||=e=>a.value=e},null,8,[`modelValue`])])}}}),ke=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(C({__name:`group`,props:D({current:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=z(e,`modelValue`);return(e,n)=>(j(),_(Oe,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e},null,8,[`modelValue`]))}}),[[`__scopeId`,`data-v-90040f31`]]),Ae=C({__name:`plugin`,props:{current:{},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let{t:n}=f(),r=e,i=t,a=d(),o=g({get:()=>r.modelValue,set:e=>i(`update:modelValue`,e)}),s=g(()=>W.value[X.value??``]),c=g(()=>u.packages?.[X.value??``]),p=g(()=>c.value.workspace?n(`config.plugin.hintSource`):n(`config.plugin.hintAuthor`));return B(c,e=>{e&&!e.runtime&&e.name&&l(`config/request-runtime`,e.name)},{immediate:!0}),M(`plugin:name`,X),M(`plugin:env`,s),M(`manager.settings.local`,c),M(`manager.settings.config`,o),M(`manager.settings.current`,g(()=>r.current)),(t,r)=>{let i=I(`k-comment`),l=I(`k-slot`),d=I(`k-slot-item`),f=I(`k-activity-link`),m=I(`k-markdown`),g=I(`k-form`);return R(X)?(j(),y(h,{key:0},[c.value.runtime?c.value.runtime.failed?(j(),_(i,{key:1,type:`danger`},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.failure`,[p.value])),1)]),_:1})):(j(),_(l,{key:2,name:`plugin-details`},{default:V(()=>[S(d,{order:800},{default:V(()=>[S(l,{name:`plugin-dependency`,single:``},{default:V(()=>[(j(!0),y(h,null,P(s.value.peer,({required:e,active:t},r)=>(j(),_(i,{key:r,type:t?`success`:e?`warning`:`primary`},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.dependency`,[R(n)(e?`config.plugin.dependencyRequired`:`config.plugin.dependencyOptional`),r,R(n)(t?`config.plugin.loaded`:`config.plugin.notLoaded`)])),1)]),_:2},1032,[`type`]))),128)),(j(!0),y(h,null,P(s.value.using,({required:e},t)=>(j(),_(i,{key:t,type:t in(R(u).services??{})?`success`:e?`warning`:`primary`},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.service`,[R(n)(e?`config.plugin.serviceRequired`:`config.plugin.serviceOptional`),t,R(n)(t in(R(u).services??{})?`config.plugin.loaded`:`config.plugin.notLoaded`)])),1)]),_:2},1032,[`type`]))),128))]),_:1})]),_:1}),S(d,{order:600},{default:V(()=>[(j(!0),y(h,null,P(s.value.impl,t=>(j(),y(h,{key:t},[t in(R(u).services??{})&&e.current.disabled?(j(),_(i,{key:0,type:`warning`},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.serviceConflict`,[t])),1)]),_:2},1024)):(j(),_(i,{key:1,type:e.current.disabled?`primary`:`success`},{default:V(()=>[b(`p`,null,L(R(n)(e.current.disabled?`config.plugin.serviceFuture`:`config.plugin.serviceProvided`,[t])),1)]),_:2},1032,[`type`]))],64))),128))]),_:1}),S(d,{order:400},{default:V(()=>[c.value.runtime.id&&!c.value.runtime.forkable&&e.current.disabled?(j(),_(i,{key:0,type:`warning`},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.notReusable`)),1)]),_:1})):v(`v-if`,!0),(R(Z).forks[e.current.name]?.length??0)>1?(j(),_(i,{key:1,type:`primary`},{default:V(()=>[b(`p`,null,[x(L(R(n)(`config.plugin.multiplePrefix`)),1),b(`span`,{class:`k-link`,onClick:r[0]||=H(e=>G.value=R(X),[`stop`])},L(R(n)(`config.plugin.multipleAction`)),1),x(L(R(n)(`config.plugin.multipleSuffix`)),1)])]),_:1})):v(`v-if`,!0)]),_:1}),S(d,{order:300},{default:V(()=>[(j(!0),y(h,null,P(R(a).$router.pages,(t,r)=>(j(),y(h,{key:r},[t.ctx.extension?.paths?.includes(e.current.path)&&!t.disabled()?(j(),_(i,{key:0,type:`success`},{default:V(()=>[b(`p`,null,[b(`span`,null,L(R(n)(`config.plugin.pages`)),1),S(f,{id:t.id},null,8,[`id`])])]),_:2},1024)):v(`v-if`,!0)],64))),128))]),_:1}),c.value.runtime?.usage?(j(),_(d,{key:0,order:-200},{default:V(()=>[S(m,{unsafe:``,class:`usage`,source:c.value.runtime?.usage},null,8,[`source`])]),_:1})):v(`v-if`,!0),S(d,{order:-600},{default:V(()=>[c.value.runtime.filter===!1?v(`v-if`,!0):(j(),_(Oe,{key:0,modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e},null,8,[`modelValue`]))]),_:1}),S(d,{order:-1e3},{default:V(()=>[c.value.runtime.schema?(j(),_(g,{key:1,schema:c.value.runtime.schema,initial:e.current.config,modelValue:o.value,"onUpdate:modelValue":r[2]||=e=>o.value=e},{hint:V(()=>[x(L(p.value),1)]),_:1},8,[`schema`,`initial`,`modelValue`])):(j(),_(i,{key:0,type:`warning`},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.noSchema`,[p.value])),1)]),_:1}))]),_:1})]),_:1})):(j(),_(i,{key:0},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.loading`)),1)]),_:1}))],64)):(j(),_(l,{key:1,name:`plugin-missing`,single:``},{default:V(()=>[S(i,{type:`danger`},{default:V(()=>[b(`p`,null,L(R(n)(`config.plugin.notInstalled`)),1)]),_:1})]),_:1}))}}}),je={class:`search`},Me=[`title`],Ne={class:`right`},Pe=C({__name:`tree`,props:{modelValue:{}},emits:[`update:modelValue`],setup(e,{expose:t,emit:n}){let{t:r}=f(),i=e,a=te(),o=m(`config.tree`),s=n,c=N(null),u=N(null),d=N(``);function p(e,t){return t.name.toLowerCase().includes(d.value.toLowerCase())}let h=N(!0);async function g(){await O();let e=c.value?.$el,t=e?.querySelector(`.el-tree-node.is-active`);!t||!t.offsetTop&&a.path.slice(9)||c.value?.setScrollTop(t.offsetTop-(e.offsetHeight-t.offsetHeight)/2)}t({activate:g}),A(async()=>{g(),h.value=!1});function x(e){e&&!h.value&&g()}function C(e){let t=e.data;return t.name===`group`?r(`config.tree.group`,[e.label||t.path]):e.label||t.name||r(`config.tree.pending`)}function w(e){return e.data.path!==``}function T(e,t,n){let r=t.data;return n===`inner`?r.id.startsWith(`group:`):r.path!==``||n===`next`}function E(e,t,n,r){s(`update:modelValue`,e.path),window.dispatchEvent(new MouseEvent(r.type,r))}function D(e,t){return o(e,t)}function M(e,t,n){l(`manager/meta`,e.path,{$collapsed:null})}function P(e,t,n){l(`manager/meta`,e.path,{$collapsed:!0})}function F(e,t,n,r){let i=n===`inner`?t:t.parent;if(!i)return;let a=e.data,o=i.childNodes.findIndex(e=>e.data.path===a.path);i.data.path||--o,l(`manager/teleport`,a.parent?.path??``,a.id,i.data.path,o)}function z(e){let t=e,n=[];return t.children&&n.push(`is-group`),!t.children&&!Y(t.name)&&n.push(`is-disabled`),t.path===i.modelValue&&n.push(`is-active`),n.join(` `)}return B(d,e=>{u.value?.filter(e)}),(e,t)=>{let n=I(`k-icon`),r=I(`el-input`),i=I(`el-tree`),a=I(`el-scrollbar`);return j(),_(a,{class:`plugin-tree`,ref_key:`root`,ref:c},{default:V(()=>[b(`div`,je,[S(r,{modelValue:d.value,"onUpdate:modelValue":t[0]||=e=>d.value=e},{suffix:V(()=>[S(n,{name:`search`})]),_:1},8,[`modelValue`])]),S(i,{ref_key:`tree`,ref:u,"node-key":`path`,data:R(Z).data,draggable:!0,"auto-expand-parent":!1,"default-expanded-keys":R(Z).expanded,"expand-on-click-node":!1,"filter-node-method":p,props:{class:z},"allow-drag":w,"allow-drop":T,onNodeClick:E,onNodeContextmenu:D,onNodeDrop:F,onNodeExpand:M,onNodeCollapse:P},{default:V(({node:e})=>[b(`div`,{class:`item`,ref:x},[b(`div`,{class:`label`,title:C(e)},L(C(e)),9,Me),b(`div`,Ne,[R(Y)(e.data.name)?(j(),y(`span`,{key:0,class:k([`status-light`,R(me)(e.data)])},null,2)):v(`v-if`,!0)])],512)]),_:1},8,[`data`,`default-expanded-keys`,`props`])]),_:1},512)}}}),Fe=C({__name:`index`,setup(t){let{t:n}=f(),i=te(),a=ne(),s=g({get(){let e=i.path.slice(9);return e in Z.value.paths?e:``},set(e){e in Z.value.paths||(e=``),a.replace(`/plugins/${e}`)}}),c=N(),p=N(``),m=N(),b=N();async function C(){await O(),m.value?.focus()}let w=N(),T=N(!1),E=N(),D=N(!1),k=N(null);B(w,e=>{e&&(T.value=!0)}),B(E,e=>{e&&(D.value=!0)}),B(()=>Z.value.paths[s.value],e=>{q.value=e??q.value,e&&(c.value=r(e.config))},{immediate:!0});let A=d();A.define(`config.tree`,q),A.action(`config.tree.add-plugin`,{hidden:({config:e})=>!!e.tree.path&&!e.tree.children,action:({config:e})=>K.value=e.tree}),A.action(`config.tree.add-group`,{hidden:({config:e})=>!!e.tree.path&&!e.tree.children,action:({config:e})=>{k.value=e.tree.path}});function M(e){let t=k.value;if(t===null)return;let n=Math.random().toString(36).slice(2,8);l(`manager/reload`,t,`group:${n}`,{$label:e}),a.replace(`/plugins/${n}`),k.value=null}A.action(`config.tree.clone`,{hidden:({config:e})=>!e.tree.path||!!e.tree.children,action:async({config:e})=>{let t=e.tree.parent,n=((t?.path?t.children:Z.value.data.slice(1))??[]).findIndex(t=>t.path===e.tree.path),r=Math.random().toString(36).slice(2,8);l(`manager/unload`,t?.path??``,`${e.tree.name}:${r}`,e.tree.config,n+1),a.replace(`/plugins/${r}`)}}),A.action(`config.tree.manage`,{hidden:({config:e})=>!e.tree.path||!!e.tree.children,action:async({config:e})=>{G.value=e.tree.name}}),A.action(`config.tree.rename`,{disabled:({config:e})=>!e.tree.path,action:({config:e})=>{p.value=e.tree.label||(e.tree.name===`group`?e.tree.path:e.tree.name),E.value=e.tree}}),A.action(`config.tree.remove`,{disabled:({config:e})=>!e.tree.path||J(e.tree),action:({config:e})=>w.value=e.tree});function P(t){let r=u.packages?.[Y(t)??``]?.runtime?.schema;if(!r)return!0;try{return new e(r)(c.value),!0}catch{return o.error(n(`config.view.constraintError`)),!1}}A.action(`config.tree.save`,{shortcut:`ctrl+s`,disabled:e=>!e?.config?.tree||![`config`].includes(a.currentRoute.value?.meta?.activity?.id??``),action:async({config:{tree:e}})=>{let{disabled:t,path:r}=e;if(t||P(e.name)){if(!r)return l(`manager/app-reload`,c.value);try{await F(e,t?`unload`:`reload`),o.success(n(t?`config.view.saved`:`config.view.reloaded`))}catch{o.error(n(`config.view.operationError`))}}}}),A.action(`config.tree.toggle`,{disabled:({config:e})=>!e.tree.path||J(e.tree),action:async({config:{tree:e}})=>{let{disabled:t,name:r}=e;if(!t||P(e.name))try{await F(e,t?`reload`:`unload`),o.success(n(r===`group`?t?`config.view.groupEnabled`:`config.view.groupDisabled`:t?`config.view.pluginEnabled`:`config.view.pluginDisabled`))}catch{o.error(n(`config.view.operationError`))}}});async function F(e,t){return await l(`manager/${t}`,e.parent?.path??``,e.id,c.value)}function z(e,t){e&&(D.value=!1,e.label=t,l(`manager/meta`,e.path,{$label:t||null}))}return(e,t)=>{let r=I(`k-content`),i=I(`el-button`),a=I(`el-dialog`),o=I(`el-input`),l=I(`k-layout`);return j(),_(l,{menu:`config.tree`,"menu-data":R(q)},{header:V(()=>[R(q).path?R(q).children?(j(),y(h,{key:1},[x(L(R(n)(`config.view.group`,[R(q).label||R(q).id])),1)],64)):(j(),y(h,{key:2},[x(L(R(q).label||R(q).name)+` [`+L(R(q).path)+`] `,1)],64)):(j(),y(h,{key:0},[x(L(R(n)(`config.view.globalSettings`)),1)],64))]),left:V(()=>[S(Pe,{ref_key:`tree`,ref:b,modelValue:s.value,"onUpdate:modelValue":t[0]||=e=>s.value=e},null,8,[`modelValue`])]),default:V(()=>[(j(),_(r,{class:`plugin-view`,key:s.value},{default:V(()=>[R(q).path?R(q).children?(j(),_(ke,{key:1,modelValue:c.value,"onUpdate:modelValue":t[2]||=e=>c.value=e,current:R(q)},null,8,[`modelValue`,`current`])):(j(),_(Ae,{key:2,current:R(q),modelValue:c.value,"onUpdate:modelValue":t[3]||=e=>c.value=e},null,8,[`current`,`modelValue`])):(j(),_(Te,{key:0,current:R(q),modelValue:c.value,"onUpdate:modelValue":t[1]||=e=>c.value=e},null,8,[`current`,`modelValue`]))]),_:1})),S(a,{modelValue:T.value,"onUpdate:modelValue":t[6]||=e=>T.value=e,title:R(n)(`config.view.removeTitle`),"destroy-on-close":``,onClosed:t[7]||=e=>w.value=void 0},{footer:V(()=>[S(i,{onClick:t[4]||=e=>T.value=!1},{default:V(()=>[x(L(R(n)(`config.view.cancel`)),1)]),_:1}),S(i,{type:`danger`,onClick:t[5]||=e=>(T.value=!1,R(Q)(w.value),b.value?.activate())},{default:V(()=>[x(L(R(n)(`config.view.confirm`)),1)]),_:1})]),default:V(()=>[w.value?(j(),y(h,{key:0},[x(L(R(n)(w.value.children?`config.view.removeConfirmGroup`:`config.view.removeConfirmPlugin`,[w.value.label||(w.value.children?w.value.path:w.value.name)])),1)],64)):v(`v-if`,!0)]),_:1},8,[`modelValue`,`title`]),S(a,{modelValue:D.value,"onUpdate:modelValue":t[12]||=e=>D.value=e,title:R(n)(`config.view.renameTitle`),"destroy-on-close":``,onOpen:C,onClosed:t[13]||=e=>E.value=void 0},{footer:V(()=>[S(i,{onClick:t[10]||=e=>D.value=!1},{default:V(()=>[x(L(R(n)(`config.view.cancel`)),1)]),_:1}),S(i,{type:`primary`,onClick:t[11]||=e=>z(E.value,p.value)},{default:V(()=>[x(L(R(n)(`config.view.confirm`)),1)]),_:1})]),default:V(()=>[E.value?(j(),_(o,{key:0,ref_key:`inputEl`,ref:m,modelValue:p.value,"onUpdate:modelValue":t[8]||=e=>p.value=e,onKeydown:t[9]||=ee(H(e=>z(E.value,p.value),[`stop`,`prevent`]),[`enter`])},null,8,[`modelValue`])):v(`v-if`,!0)]),_:1},8,[`modelValue`,`title`]),S(a,{"model-value":k.value!==null,"onUpdate:modelValue":t[18]||=e=>k.value=null,title:R(n)(`config.view.createGroupTitle`),"destroy-on-close":``,onOpen:C},{footer:V(()=>[S(i,{onClick:t[16]||=e=>k.value=null},{default:V(()=>[x(L(R(n)(`config.view.cancel`)),1)]),_:1}),S(i,{type:`primary`,onClick:t[17]||=e=>M(p.value)},{default:V(()=>[x(L(R(n)(`config.view.confirm`)),1)]),_:1})]),default:V(()=>[S(o,{ref_key:`inputEl`,ref:m,modelValue:p.value,"onUpdate:modelValue":t[14]||=e=>p.value=e,onKeydown:t[15]||=ee(H(e=>M(p.value),[`stop`,`prevent`]),[`enter`])},null,8,[`modelValue`])]),_:1},8,[`model-value`,`title`])]),_:1},8,[`menu-data`])}}}),Ie={class:`title`},Le={class:`content`},Re=[`onClick`],ze=C({__name:`select`,setup(e){let{t}=f(),n=p(),r=N(``),i=N(),a=T(`plugin-select-filter`,e=>!0),o=g(()=>Object.values(u.packages??{}).filter(({name:e,shortname:t})=>{let n=e?u.packages?.[e]:void 0;return!!e&&t.includes(r.value.toLowerCase())&&!!n&&a(n)}));function s(e){let t=K.value;if(!t)return;let n=t.path,i=Math.random().toString(36).slice(2,8);K.value=void 0,r.value=``;let a=Object.values(u.packages??{}).find(t=>t.shortname===e)?.paths?.[0]??e;l(`manager/unload`,n,`${a}:${i}`,{}),c.push(`/plugins/${i}`)}return B(K,async e=>{e&&(await O(),await i.value?.focus())},{flush:`post`}),(e,a)=>{let c=I(`k-icon`),l=I(`el-input`),d=I(`k-markdown`),f=I(`el-scrollbar`),p=I(`el-dialog`);return R(u).packages?(j(),_(p,{key:0,modelValue:!!R(K),"onUpdate:modelValue":a[1]||=e=>K.value=void 0,class:`plugin-select`},{header:V(()=>[F(e.$slots,`title`,{packages:o.value},()=>[b(`span`,Ie,L(R(t)(`config.select.title`)),1)]),S(l,{ref_key:`input`,ref:i,modelValue:r.value,"onUpdate:modelValue":a[0]||=e=>r.value=e},{suffix:V(()=>[S(c,{name:`search`})]),_:1},8,[`modelValue`])]),default:V(()=>[F(e.$slots,`tabs`,{packages:o.value}),b(`div`,Le,[S(f,null,{default:V(()=>[(j(!0),y(h,null,P(o.value,({name:e,shortname:t,manifest:r})=>(j(),y(`div`,{class:`package`,key:e,onClick:H(e=>s(t),[`stop`])},[b(`h3`,null,L(t),1),S(d,{inline:``,class:`desc`,source:R(n)(r.description)},null,8,[`source`])],8,Re))),128))]),_:1})])]),_:3},8,[`modelValue`])):v(`v-if`,!0)}}}),Be={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`};function Ve(e,t){return j(),y(`svg`,Be,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M452 60H488C499 60 508 68.95 508 80C508 91.05 499 100 488 100H452V136C452 147 443 156 432 156C420.1 156 412 147 412 136V100H376C364.1 100 356 91.05 356 80C356 68.95 364.1 60 376 60H412V24C412 12.95 420.1 4 432 4C443 4 452 12.95 452 24V60zM280.8 133.1L490.1 222.8C503.4 228.5 512 241.5 512 256C512 270.5 503.4 283.5 490.1 289.2L280.8 378.9C272.1 382.3 264.5 384 256 384C247.5 384 239 382.3 231.2 378.9L21.9 289.2C8.614 283.5 0 270.5 0 256C0 241.5 8.614 228.5 21.9 222.8L231.2 133.1C239 129.7 247.5 128 256 128C264.5 128 272.1 129.7 280.8 133.1V133.1zM66.26 256L250.1 334.8C251.1 335.6 253.1 336 256 336C258 336 260 335.6 261.9 334.8L445.7 256L261.9 177.2C260 176.4 258 176 256 176C253.1 176 251.1 176.4 250.1 177.2L66.26 256zM59.53 350.6C66.15 359.9 65.24 372.3 57.1 380.5L250.1 462.8C251.1 463.6 253.1 464 256 464C258 464 260 463.6 261.9 462.8L452 381.3C447.4 374.4 446.5 365.2 450.5 357.3C456.5 345.4 470.9 340.6 482.7 346.5L491.8 351.1C504.2 357.3 512 369.9 512 383.7C512 398.4 503.3 411.6 489.9 417.3L280.8 506.9C272.1 510.3 264.5 512 256 512C247.5 512 239 510.3 231.2 506.9L22.81 417.6C8.971 411.7 .001 398.1 .001 383C.001 370.9 5.87 359.5 15.76 352.4L26.05 345C36.84 337.3 51.83 339.8 59.53 350.6L59.53 350.6z`},null,-1)]])}var He=E({name:`k-add-group`,render:Ve}),Ue={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`};function We(e,t){return j(),y(`svg`,Ue,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M144,0c13.3,0,24,10.8,24,24v88h-48V24C120,10.8,130.8,0,144,0z M336,0c13.3,0,24,10.8,24,24v88h-48V24
|
|
2
|
+
C312,10.8,322.7,0,336,0z M408,144c13.3,0,24,10.7,24,24s-10.7,24-24,24h-8v64c0,80.2-59.9,146.6-136,158.2V512h-48v-97.8
|
|
3
|
+
c-77-11.6-136-78-136-158.2v-64h-8c-13.2,0-24-10.7-24-24s10.8-24,24-24H408z M240,368c61.9,0,112-50.1,112-112v-64H128v64
|
|
4
|
+
C128,317.9,178.1,368,240,368z`},null,-1),b(`path`,{fill:`currentColor`,d:`M444,416h36c11,0,20,9,20,20s-9,20-20,20h-36v36c0,11-9,20-20,20c-11.9,0-20-9-20-20v-36h-36c-11.9,0-20-9-20-20
|
|
5
|
+
s8.1-20,20-20h36v-36c0-11,8.1-20,20-20c11,0,20,9,20,20V416z`},null,-1)]])}var Ge=E({name:`k-add-plugin`,render:We}),Ke={class:`k-icon check`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 448 512`};function qe(e,t){return j(),y(`svg`,Ke,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z`},null,-1)]])}var Je=E({name:`k-check`,render:qe}),Ye={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`};function Xe(e,t){return j(),y(`svg`,Ye,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M64 464H288C296.8 464 304 456.8 304 448V384H352V448C352 483.3 323.3 512 288 512H64C28.65 512 0 483.3 0 448V224C0 188.7 28.65 160 64 160H128V208H64C55.16 208 48 215.2 48 224V448C48 456.8 55.16 464 64 464zM160 64C160 28.65 188.7 0 224 0H448C483.3 0 512 28.65 512 64V288C512 323.3 483.3 352 448 352H224C188.7 352 160 323.3 160 288V64zM224 304H448C456.8 304 464 296.8 464 288V64C464 55.16 456.8 48 448 48H224C215.2 48 208 55.16 208 64V288C208 296.8 215.2 304 224 304z`},null,-1)]])}var Ze=E({name:`k-clone`,render:Xe}),Qe={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`};function $e(e,t){return j(),y(`svg`,Qe,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M81.84 152.1C77.43 156.9 71.21 159.8 64.63 159.1C58.05 160.2 51.69 157.6 47.03 152.1L7.029 112.1C-2.343 103.6-2.343 88.4 7.029 79.03C16.4 69.66 31.6 69.66 40.97 79.03L63.08 101.1L118.2 39.94C127 30.09 142.2 29.29 152.1 38.16C161.9 47.03 162.7 62.2 153.8 72.06L81.84 152.1zM81.84 312.1C77.43 316.9 71.21 319.8 64.63 319.1C58.05 320.2 51.69 317.6 47.03 312.1L7.029 272.1C-2.343 263.6-2.343 248.4 7.029 239C16.4 229.7 31.6 229.7 40.97 239L63.08 261.1L118.2 199.9C127 190.1 142.2 189.3 152.1 198.2C161.9 207 162.7 222.2 153.8 232.1L81.84 312.1zM216 120C202.7 120 192 109.3 192 96C192 82.75 202.7 72 216 72H488C501.3 72 512 82.75 512 96C512 109.3 501.3 120 488 120H216zM192 256C192 242.7 202.7 232 216 232H488C501.3 232 512 242.7 512 256C512 269.3 501.3 280 488 280H216C202.7 280 192 269.3 192 256zM160 416C160 402.7 170.7 392 184 392H488C501.3 392 512 402.7 512 416C512 429.3 501.3 440 488 440H184C170.7 440 160 429.3 160 416zM64 448C46.33 448 32 433.7 32 416C32 398.3 46.33 384 64 384C81.67 384 96 398.3 96 416C96 433.7 81.67 448 64 448z`},null,-1)]])}var et=E({name:`k-manage`,render:$e}),tt={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 384 512`};function nt(e,t){return j(),y(`svg`,tt,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M24.52 38.13C39.66 29.64 58.21 29.99 73.03 39.04L361 215C375.3 223.8 384 239.3 384 256C384 272.7 375.3 288.2 361 296.1L73.03 472.1C58.21 482 39.66 482.4 24.52 473.9C9.377 465.4 0 449.4 0 432V80C0 62.64 9.377 46.63 24.52 38.13V38.13zM48 432L336 256L48 80V432z`},null,-1)]])}var rt=E({name:`k-play`,render:nt}),it={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 512 512`};function at(e,t){return j(),y(`svg`,it,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M168 255.1C168 207.4 207.4 167.1 256 167.1C304.6 167.1 344 207.4 344 255.1C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 255.1zM256 199.1C225.1 199.1 200 225.1 200 255.1C200 286.9 225.1 311.1 256 311.1C286.9 311.1 312 286.9 312 255.1C312 225.1 286.9 199.1 256 199.1zM65.67 230.6L25.34 193.8C14.22 183.7 11.66 167.2 19.18 154.2L49.42 101.8C56.94 88.78 72.51 82.75 86.84 87.32L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L194.5 25.16C197.7 10.47 210.7 0 225.8 0H286.2C301.3 0 314.3 10.47 317.5 25.16L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L425.2 87.32C439.5 82.75 455.1 88.78 462.6 101.8L492.8 154.2C500.3 167.2 497.8 183.7 486.7 193.8L446.3 230.6C447.4 238.9 448 247.4 448 255.1C448 264.6 447.4 273.1 446.3 281.4L486.7 318.2C497.8 328.3 500.3 344.8 492.8 357.8L462.6 410.2C455.1 423.2 439.5 429.2 425.2 424.7L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L317.5 486.8C314.3 501.5 301.3 512 286.2 512H225.8C210.7 512 197.7 501.5 194.5 486.8L182.8 433.6C167 427 152.2 418.4 138.8 408.1L86.84 424.7C72.51 429.2 56.94 423.2 49.42 410.2L19.18 357.8C11.66 344.8 14.22 328.3 25.34 318.2L65.67 281.4C64.57 273.1 64 264.6 64 255.1C64 247.4 64.57 238.9 65.67 230.6V230.6zM158.4 129.2L145.1 139.5L77.13 117.8L46.89 170.2L99.58 218.2L97.39 234.8C96.47 241.7 96 248.8 96 255.1C96 263.2 96.47 270.3 97.39 277.2L99.58 293.8L46.89 341.8L77.13 394.2L145.1 372.5L158.4 382.8C169.5 391.4 181.9 398.6 195 403.1L210.5 410.4L225.8 480H286.2L301.5 410.4L316.1 403.1C330.1 398.6 342.5 391.4 353.6 382.8L366.9 372.5L434.9 394.2L465.1 341.8L412.4 293.8L414.6 277.2C415.5 270.3 416 263.2 416 256C416 248.8 415.5 241.7 414.6 234.8L412.4 218.2L465.1 170.2L434.9 117.8L366.9 139.5L353.6 129.2C342.5 120.6 330.1 113.4 316.1 108L301.5 101.6L286.2 32H225.8L210.5 101.6L195 108C181.9 113.4 169.5 120.6 158.4 129.2H158.4z`},null,-1)]])}var ot=E({name:`k-plugin`,render:at}),st={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 448 512`};function ct(e,t){return j(),y(`svg`,st,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M224 256c-35.2 0-64 28.8-64 64c0 35.2 28.8 64 64 64c35.2 0 64-28.8 64-64C288 284.8 259.2 256 224 256zM433.1 129.1l-83.9-83.9C341.1 37.06 328.8 32 316.1 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V163.9C448 151.2 442.9 138.9 433.1 129.1zM128 80h144V160H128V80zM400 416c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V96c0-8.838 7.164-16 16-16h16v104c0 13.25 10.75 24 24 24h192C309.3 208 320 197.3 320 184V83.88l78.25 78.25C399.4 163.2 400 164.8 400 166.3V416z`},null,-1)]])}var lt=E({name:`k-save`,render:ct}),ut={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 384 512`};function dt(e,t){return j(),y(`svg`,ut,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M320 64H64c-35.35 0-64 28.65-64 64v255.1c0 35.35 28.65 64 64 64H320c35.35 0 64-28.65 64-64V128C384 92.65 355.3 64 320 64zM336 384c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V128c0-8.822 7.178-16 16-16h256c8.822 0 16 7.178 16 16V384z`},null,-1)]])}var ft=E({name:`k-stop`,render:dt}),pt={class:`k-icon`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 448 512`};function mt(e,t){return j(),y(`svg`,pt,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M160 400C160 408.8 152.8 416 144 416C135.2 416 128 408.8 128 400V192C128 183.2 135.2 176 144 176C152.8 176 160 183.2 160 192V400zM240 400C240 408.8 232.8 416 224 416C215.2 416 208 408.8 208 400V192C208 183.2 215.2 176 224 176C232.8 176 240 183.2 240 192V400zM320 400C320 408.8 312.8 416 304 416C295.2 416 288 408.8 288 400V192C288 183.2 295.2 176 304 176C312.8 176 320 183.2 320 192V400zM317.5 24.94L354.2 80H424C437.3 80 448 90.75 448 104C448 117.3 437.3 128 424 128H416V432C416 476.2 380.2 512 336 512H112C67.82 512 32 476.2 32 432V128H24C10.75 128 0 117.3 0 104C0 90.75 10.75 80 24 80H93.82L130.5 24.94C140.9 9.357 158.4 0 177.1 0H270.9C289.6 0 307.1 9.358 317.5 24.94H317.5zM151.5 80H296.5L277.5 51.56C276 49.34 273.5 48 270.9 48H177.1C174.5 48 171.1 49.34 170.5 51.56L151.5 80zM80 432C80 449.7 94.33 464 112 464H336C353.7 464 368 449.7 368 432V128H80V432z`},null,-1)]])}var ht=E({name:`k-trash-can`,render:mt});a.register(`activity:plugin`,ot),a.register(`add-group`,He),a.register(`add-plugin`,Ge),a.register(`trash-can`,ht),a.register(`check`,Je),a.register(`clone`,Ze),a.register(`manage`,et),a.register(`play`,rt),a.register(`stop`,ft),a.register(`save`,lt);var gt=Object.assign({"./locales/de-DE.yml":re,"./locales/en-US.yml":ie,"./locales/fr-FR.yml":ae,"./locales/ja-JP.yml":oe,"./locales/ru-RU.yml":se,"./locales/zh-CN.yml":ce,"./locales/zh-TW.yml":le});function _t(e){return e.replace(/(koishi-|^@(?:koishijs|koishi-ce)\/)plugin-/,``)}function $(e){let t=Z.value.forks;return t[_t(e)]??t[e]}var vt=class extends n{constructor(e){super(e,`configWriter`,!0),i(e,gt),e.slot({type:`global`,component:C(()=>()=>w(I(`k-slot`),{name:`plugin-select`,single:!0}))}),e.slot({type:`plugin-select-base`,component:ze,order:-1e3}),e.slot({type:`plugin-select`,component:ze,order:-1e3}),e.slot({type:`global`,component:we}),e.page({id:`config`,path:`/plugins/:name*`,name:()=>e.$i18n.t(`config.title`),icon:`activity:plugin`,order:800,authority:4,fields:[`config`,`packages`,`services`],component:Fe}),e.menu(`config.tree`,[{id:`config.tree.toggle`,type:({config:e})=>e.tree?.disabled?``:fe.value??``,icon:({config:e})=>e.tree?.disabled?`play`:`stop`,label:({config:t})=>e.$i18n.t(t.tree?.disabled?t.tree?.name===`group`?`config.menu.enableGroup`:`config.menu.enablePlugin`:t.tree?.name===`group`?`config.menu.disableGroup`:`config.menu.disablePlugin`)},{id:`.save`,icon:({config:e})=>e.tree?.disabled?`save`:`check`,label:({config:t})=>e.$i18n.t(t.tree?.disabled?`config.menu.saveConfig`:`config.menu.reloadConfig`)},{id:`@separator`},{id:`.rename`,icon:`edit`,label:()=>e.$i18n.t(`config.menu.rename`)},{id:`.remove`,type:`danger`,icon:`delete`,label:({config:t})=>e.$i18n.t(t.tree?.children?`config.menu.removeGroup`:`config.menu.removePlugin`)},{id:`@separator`},{id:`.clone`,icon:`clone`,label:()=>e.$i18n.t(`config.menu.clone`)},{id:`.manage`,icon:`manage`,label:()=>e.$i18n.t(`config.menu.manage`)},{id:`.add-plugin`,icon:`add-plugin`,label:()=>e.$i18n.t(`config.menu.addPlugin`)},{id:`.add-group`,icon:`add-group`,label:()=>e.$i18n.t(`config.menu.addGroup`)}])}ensure(e,t){let n=$(e);if(n?.length)n.length===1?t||c.push(`/plugins/${n[0]}`):t||(G.value=e);else{let n=Math.random().toString(36).slice(2,8);l(`manager/unload`,``,`${_t(e)}:${n}`,{}),t||c.push(`/plugins/${n}`)}}remove(e){let t=$(e);for(let e of t??[]){let t=Z.value.paths[e];t&&l(`manager/remove`,t.parent?.path??``,t.id)}}get(e){return $(e)?.map(e=>Z.value.paths[e])}};export{U as coreDeps,q as current,vt as default,G as dialogFork,K as dialogSelect,W as envMap,Y as getFullName,me as getStatus,J as hasCoreDeps,X as name,Z as plugins,Q as removeItem,fe as type};
|
package/lib/index.d.ts
CHANGED
|
@@ -216,7 +216,7 @@ export declare class ConfigWriter extends DataService<Context.Config> {
|
|
|
216
216
|
declare module "@koishi-ce/console" {
|
|
217
217
|
namespace Console {
|
|
218
218
|
interface Services {
|
|
219
|
-
packages: PackageProvider
|
|
219
|
+
packages: DataService<Dict<PackageProvider.Data>>;
|
|
220
220
|
services: ServiceProvider;
|
|
221
221
|
config: ConfigWriter;
|
|
222
222
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koishi-ce/plugin-config",
|
|
3
3
|
"description": "Manage your bots and plugins with console",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.8",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build:client": "bun ../../../packages/web/builder/src/bin.ts build ."
|
|
8
|
+
},
|
|
6
9
|
"main": "lib/index.mjs",
|
|
7
10
|
"types": "lib/index.d.ts",
|
|
8
11
|
"exports": {
|
|
@@ -67,15 +70,15 @@
|
|
|
67
70
|
"@koishi-ce/koishi": "^1.0.0"
|
|
68
71
|
},
|
|
69
72
|
"devDependencies": {
|
|
70
|
-
"@koishi-ce/client": "^1.3
|
|
71
|
-
"@koishi-ce/plugin-hmr": "^1.1.
|
|
73
|
+
"@koishi-ce/client": "^1.4.3",
|
|
74
|
+
"@koishi-ce/plugin-hmr": "^1.1.3",
|
|
72
75
|
"element-plus": "^2.14.5",
|
|
73
76
|
"vue": "^3.5.12",
|
|
74
|
-
"vue-router": "^5.
|
|
77
|
+
"vue-router": "^5.4.0"
|
|
75
78
|
},
|
|
76
79
|
"dependencies": {
|
|
77
|
-
"@koishi-ce/console": "^1.1.
|
|
78
|
-
"@koishi-ce/loader": "^1.1.
|
|
79
|
-
"@koishi-ce/registry": "^1.0.
|
|
80
|
+
"@koishi-ce/console": "^1.1.1",
|
|
81
|
+
"@koishi-ce/loader": "^1.1.2",
|
|
82
|
+
"@koishi-ce/registry": "^1.0.6"
|
|
80
83
|
}
|
|
81
84
|
}
|
|
@@ -5,12 +5,10 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* config 插件的 manager/* 控制台事件签名(唯一权威定义)。
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* 唯一来源,两端经 extends 引用,避免双份镜像漂移。本文件须被两端
|
|
13
|
-
* import(type-only 即可)才会进入各自的类型程序。
|
|
8
|
+
* 本文件的 declare module 块把 ManagerEvents 合并进 "@koishi-ce/console"
|
|
9
|
+
* 的 Events 接口,是 node 侧(writer.ts 经本文件获得 send 事件类型)与
|
|
10
|
+
* 浏览器端(client/components/utils.ts 经 type-only import 拉入本文件)
|
|
11
|
+
* 共用的唯一挂载点,避免双份镜像漂移。
|
|
14
12
|
*/
|
|
15
13
|
|
|
16
14
|
/** manager/* 事件的载荷签名(配置的重载 / 停用 / 移除 / 改名 / 拖拽)。 */
|
|
@@ -40,7 +38,3 @@ interface ManagerEvents {
|
|
|
40
38
|
declare module "@koishi-ce/console" {
|
|
41
39
|
interface Events extends ManagerEvents {}
|
|
42
40
|
}
|
|
43
|
-
|
|
44
|
-
declare module "@koishi-ce/plugin-console" {
|
|
45
|
-
interface Events extends ManagerEvents {}
|
|
46
|
-
}
|
package/src/shared/index.ts
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* 注册进 console 的 Services 接口,使浏览器端能以类型安全的方式
|
|
11
11
|
* 访问 `store.packages`、`store.services`、`store.config`。
|
|
12
12
|
*/
|
|
13
|
+
import type { DataService } from "@koishi-ce/console";
|
|
14
|
+
import type { Dict } from "@koishi-ce/koishi";
|
|
13
15
|
import type { PackageProvider } from "./packages.ts";
|
|
14
16
|
import type { ServiceProvider } from "./services.ts";
|
|
15
17
|
import type { ConfigWriter } from "./writer.ts";
|
|
@@ -17,7 +19,13 @@ import type { ConfigWriter } from "./writer.ts";
|
|
|
17
19
|
declare module "@koishi-ce/console" {
|
|
18
20
|
namespace Console {
|
|
19
21
|
interface Services {
|
|
20
|
-
packages
|
|
22
|
+
// packages 显式标注 DataService 载荷而非直接引用类:TS7 对
|
|
23
|
+
// d.ts 里 `export declare abstract class`(PackageProvider 是
|
|
24
|
+
// 全仓唯一 abstract Provider)的条件类型匹配会静默推出
|
|
25
|
+
// unknown(2026-09-25 探针实证,ServiceProvider / ConfigWriter
|
|
26
|
+
// 等非 abstract 类无此问题)。载荷实体 PackageProvider.Data
|
|
27
|
+
// 仍为单一事实源。
|
|
28
|
+
packages: DataService<Dict<PackageProvider.Data>>;
|
|
21
29
|
services: ServiceProvider;
|
|
22
30
|
config: ConfigWriter;
|
|
23
31
|
}
|