node-karin 1.9.11 → 1.10.0
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/CHANGELOG.md +18 -0
- package/dist/index.d.ts +62 -28
- package/dist/index.mjs +84 -73
- package/dist/start/index.mjs +239 -86
- package/dist/web/assets/js/components-DoLdoU3_.js.br +0 -0
- package/dist/web/assets/js/entry-Cv-Gqd__.js.br +0 -0
- package/dist/web/assets/js/hooks-9NHYpXid.js.br +0 -0
- package/dist/web/assets/js/page-404.tsx-DnGWlXwC.js +1 -0
- package/dist/web/assets/js/page-dashboard-B89Pi8YU.js.br +0 -0
- package/dist/web/assets/js/page-login.tsx-Q_Zzdj7f.js.br +0 -0
- package/dist/web/assets/js/{utils-4g0tXjXS.js → utils-CiCAgsgm.js} +1 -1
- package/dist/web/assets/js/vendor-heroui-LBurlY8q.js.br +0 -0
- package/dist/web/index.html +6 -6
- package/package.json +1 -1
- package/dist/web/assets/js/components-CPNNGkNi.js.br +0 -0
- package/dist/web/assets/js/entry-Baz5TCd6.js.br +0 -0
- package/dist/web/assets/js/hooks-DBHKB0Wu.js.br +0 -0
- package/dist/web/assets/js/page-404.tsx-CcSvxZy4.js +0 -1
- package/dist/web/assets/js/page-dashboard-CPp-Yb1A.js.br +0 -0
- package/dist/web/assets/js/page-login.tsx-pCeUyqBb.js.br +0 -0
- package/dist/web/assets/js/vendor-heroui-4BnFpRmu.js.br +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
## [1.10.0](https://github.com/KarinJS/Karin/compare/core-v1.9.11...core-v1.10.0) (2025-06-06)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### ✨ Features
|
|
7
|
+
|
|
8
|
+
* **core:** 添加端口相关工具并优化 PID 获取逻辑 ([#457](https://github.com/KarinJS/Karin/issues/457)) ([dc4cda9](https://github.com/KarinJS/Karin/commit/dc4cda9889d52d4c2a4bd90992ce61c23ddf477d))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### 🐛 Bug Fixes
|
|
12
|
+
|
|
13
|
+
* close [#460](https://github.com/KarinJS/Karin/issues/460) ([dd2bd1a](https://github.com/KarinJS/Karin/commit/dd2bd1aee7edd91dadf98617055426539b0881b8))
|
|
14
|
+
* 更新 HMR 日志输出,增加空插件列表提示 ([1d14be2](https://github.com/KarinJS/Karin/commit/1d14be295372096295af890bf45b53b8033e19be))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### ⚡️ Performance
|
|
18
|
+
|
|
19
|
+
* **core:** 优化端口功能,添加结束指定PID或端口程序 ([#459](https://github.com/KarinJS/Karin/issues/459)) ([0d13395](https://github.com/KarinJS/Karin/commit/0d13395d610b36f306cf56231f732a2ff39c5582))
|
|
20
|
+
|
|
3
21
|
## [1.9.11](https://github.com/KarinJS/Karin/compare/core-v1.9.10...core-v1.9.11) (2025-06-05)
|
|
4
22
|
|
|
5
23
|
|
package/dist/index.d.ts
CHANGED
|
@@ -11239,7 +11239,7 @@ declare const isLocalRequest: (req: Request$1) => Promise<boolean>;
|
|
|
11239
11239
|
* 传入端口号,返回对应的pid
|
|
11240
11240
|
* @param port - 端口号
|
|
11241
11241
|
*/
|
|
11242
|
-
declare const getPid: (port: number) => Promise<number>;
|
|
11242
|
+
declare const getPid: (port: number) => Promise<number | null>;
|
|
11243
11243
|
|
|
11244
11244
|
/**
|
|
11245
11245
|
* 执行 shell 命令
|
|
@@ -11305,6 +11305,28 @@ declare const stringifyError: (error?: Error | null) => {
|
|
|
11305
11305
|
*/
|
|
11306
11306
|
declare const errorToString: (error?: Error | null) => string;
|
|
11307
11307
|
|
|
11308
|
+
/**
|
|
11309
|
+
* 检查端口是否可用
|
|
11310
|
+
* @param port - 端口号
|
|
11311
|
+
* @returns 端口可用返回true,否则返回false
|
|
11312
|
+
*/
|
|
11313
|
+
declare const checkPort: (port: number) => Promise<boolean>;
|
|
11314
|
+
/**
|
|
11315
|
+
* 等待端口可用
|
|
11316
|
+
* @param port - 端口号
|
|
11317
|
+
* @param maxAttempts - 最大尝试次数
|
|
11318
|
+
* @param interval - 检查间隔(ms)
|
|
11319
|
+
* @returns 端口是否可用
|
|
11320
|
+
*/
|
|
11321
|
+
declare const waitPort: (port: number, maxAttempts?: number, interval?: number) => Promise<boolean>;
|
|
11322
|
+
/**
|
|
11323
|
+
* 结束指定PID或端口的程序
|
|
11324
|
+
* @param identifier - PID号或端口号
|
|
11325
|
+
* @param isPort - 是否为端口号
|
|
11326
|
+
* @returns 是否成功结束程序
|
|
11327
|
+
*/
|
|
11328
|
+
declare const killApp: (identifier: number, isPort?: boolean) => Promise<boolean>;
|
|
11329
|
+
|
|
11308
11330
|
/**
|
|
11309
11331
|
* @description ffmpeg命令
|
|
11310
11332
|
* @param cmd 命令
|
|
@@ -11489,16 +11511,22 @@ declare const updateAllGitPlugin: (cmd?: string, time?: number) => Promise<strin
|
|
|
11489
11511
|
* @param contact - 事件联系人信息 也就是从哪来的这条消息 传e.contact即可
|
|
11490
11512
|
* @param messageId - 消息id 传e.message_id
|
|
11491
11513
|
* @param isFront - 是否为前台重启 默认是 不支持的环境会强制为pm2重启
|
|
11514
|
+
* @param reloadDeps - 是否为重新加载依赖 默认是false
|
|
11492
11515
|
*/
|
|
11493
|
-
declare const restart: (selfId: string, contact: Contact, messageId: string, isFront?: boolean) => Promise<{
|
|
11516
|
+
declare const restart: (selfId: string, contact: Contact, messageId: string, isFront?: boolean, reloadDeps?: boolean) => Promise<{
|
|
11494
11517
|
status: "success" | "failed";
|
|
11495
11518
|
data: string | Error;
|
|
11496
11519
|
}>;
|
|
11497
11520
|
/**
|
|
11498
11521
|
* 直接重启
|
|
11499
|
-
* @param
|
|
11522
|
+
* @param options - 重启选项
|
|
11500
11523
|
*/
|
|
11501
|
-
declare const restartDirect: (
|
|
11524
|
+
declare const restartDirect: (options: {
|
|
11525
|
+
/** 是否为pm2重启 */
|
|
11526
|
+
isPm2?: boolean;
|
|
11527
|
+
/** 是否为重新加载依赖 */
|
|
11528
|
+
reloadDeps?: boolean;
|
|
11529
|
+
}) => Promise<void>;
|
|
11502
11530
|
|
|
11503
11531
|
/** fileToUrl Handler键 */
|
|
11504
11532
|
declare const fileToUrlHandlerKey = "fileToUrl";
|
|
@@ -11509,39 +11537,40 @@ declare const fileToUrl: FileToUrlHandler;
|
|
|
11509
11537
|
|
|
11510
11538
|
/**
|
|
11511
11539
|
* 一个简单的版本范围检查函数
|
|
11512
|
-
* @param
|
|
11540
|
+
* @param satisfies 版本范围
|
|
11513
11541
|
* @param version 版本
|
|
11514
11542
|
* @description 检查版本是否在范围内
|
|
11515
11543
|
* @example
|
|
11516
11544
|
* ```ts
|
|
11517
|
-
* console.log(
|
|
11518
|
-
* console.log(
|
|
11519
|
-
* console.log(
|
|
11520
|
-
* console.log(
|
|
11521
|
-
* console.log(
|
|
11522
|
-
* console.log(
|
|
11523
|
-
* console.log(
|
|
11524
|
-
* console.log(
|
|
11525
|
-
* console.log(
|
|
11526
|
-
* console.log(
|
|
11527
|
-
* console.log(
|
|
11528
|
-
* console.log(
|
|
11529
|
-
* console.log(
|
|
11530
|
-
* console.log(
|
|
11531
|
-
* console.log(
|
|
11545
|
+
* console.log(satisfies('^1.0.0', '1.0.1')) // true
|
|
11546
|
+
* console.log(satisfies('^1.0.0', '2.0.0')) // false
|
|
11547
|
+
* console.log(satisfies('^1.0.0', '0.0.1')) // false
|
|
11548
|
+
* console.log(satisfies('>=1.0.0', '1.0.0')) // true
|
|
11549
|
+
* console.log(satisfies('>=1.0.0', '0.0.1')) // false
|
|
11550
|
+
* console.log(satisfies('<=1.0.0', '1.0.0')) // true
|
|
11551
|
+
* console.log(satisfies('<=1.0.0', '2.0.0')) // false
|
|
11552
|
+
* console.log(satisfies('>=1.0.0 <2.0.0', '1.0.0')) // true
|
|
11553
|
+
* console.log(satisfies('1.0.0-alpha', '1.0.0-beta')) // false
|
|
11554
|
+
* console.log(satisfies('1.0.0-beta', '1.0.0-alpha')) // false
|
|
11555
|
+
* console.log(satisfies('^1.0.0-beta', '1.0.0-alpha')) // false
|
|
11556
|
+
* console.log(satisfies('>=1.0.0-beta', '1.0.0-alpha')) // false
|
|
11557
|
+
* console.log(satisfies('^1.0.0-alpha', '1.0.0-beta')) // true
|
|
11558
|
+
* console.log(satisfies('^1.0.0-beta', '1.0.0-beta')) // true
|
|
11559
|
+
* console.log(satisfies('^1.0.0-alpha', '1.0.0-alpha')) // true
|
|
11532
11560
|
*
|
|
11533
11561
|
* // 通配符示例
|
|
11534
|
-
* console.log(
|
|
11535
|
-
* console.log(
|
|
11536
|
-
* console.log(
|
|
11537
|
-
* console.log(
|
|
11538
|
-
* console.log(
|
|
11562
|
+
* console.log(satisfies('1.0.x', '1.0.1')) // true
|
|
11563
|
+
* console.log(satisfies('1.0.x', '1.1.0')) // false
|
|
11564
|
+
* console.log(satisfies('1.x.x', '1.2.3')) // true
|
|
11565
|
+
* console.log(satisfies('1.x.0', '1.2.0')) // true
|
|
11566
|
+
* console.log(satisfies('1.x.0', '1.2.1')) // false
|
|
11539
11567
|
* ```
|
|
11540
11568
|
*/
|
|
11541
|
-
declare const satisfies: (
|
|
11569
|
+
declare const satisfies: (satisfies: string, version: string) => boolean;
|
|
11542
11570
|
|
|
11543
11571
|
declare const index$2_checkGitPluginUpdate: typeof checkGitPluginUpdate;
|
|
11544
11572
|
declare const index$2_checkPkgUpdate: typeof checkPkgUpdate;
|
|
11573
|
+
declare const index$2_checkPort: typeof checkPort;
|
|
11545
11574
|
declare const index$2_errorToString: typeof errorToString;
|
|
11546
11575
|
declare const index$2_exec: typeof exec;
|
|
11547
11576
|
declare const index$2_ffmpeg: typeof ffmpeg;
|
|
@@ -11567,6 +11596,10 @@ declare const index$2_isLoopback: typeof isLoopback;
|
|
|
11567
11596
|
declare const index$2_isMac: typeof isMac;
|
|
11568
11597
|
declare const index$2_isRoot: typeof isRoot;
|
|
11569
11598
|
declare const index$2_isWin: typeof isWin;
|
|
11599
|
+
declare const index$2_killApp: typeof killApp;
|
|
11600
|
+
declare const index$2_lock: typeof lock;
|
|
11601
|
+
declare const index$2_lockMethod: typeof lockMethod;
|
|
11602
|
+
declare const index$2_lockProp: typeof lockProp;
|
|
11570
11603
|
declare const index$2_restart: typeof restart;
|
|
11571
11604
|
declare const index$2_restartDirect: typeof restartDirect;
|
|
11572
11605
|
declare const index$2_satisfies: typeof satisfies;
|
|
@@ -11575,8 +11608,9 @@ declare const index$2_updateAllGitPlugin: typeof updateAllGitPlugin;
|
|
|
11575
11608
|
declare const index$2_updateAllPkg: typeof updateAllPkg;
|
|
11576
11609
|
declare const index$2_updateGitPlugin: typeof updateGitPlugin;
|
|
11577
11610
|
declare const index$2_updatePkg: typeof updatePkg;
|
|
11611
|
+
declare const index$2_waitPort: typeof waitPort;
|
|
11578
11612
|
declare namespace index$2 {
|
|
11579
|
-
export { index$2_checkGitPluginUpdate as checkGitPluginUpdate, index$2_checkPkgUpdate as checkPkgUpdate, index$2_errorToString as errorToString, index$2_exec as exec, index$2_ffmpeg as ffmpeg, index$2_ffplay as ffplay, index$2_ffprobe as ffprobe, index$2_fileToUrl as fileToUrl, index$2_fileToUrlHandlerKey as fileToUrlHandlerKey, formatTime$1 as formatTime, index$2_getCommit as getCommit, index$2_getHash as getHash, index$2_getPid as getPid, index$2_getPkgVersion as getPkgVersion, index$2_getRemotePkgVersion as getRemotePkgVersion, index$2_getRequestIp as getRequestIp, index$2_getTime as getTime, index$2_importModule as importModule, index$2_isClass as isClass, index$2_isDocker as isDocker, index$2_isIPv4Loop as isIPv4Loop, index$2_isIPv6Loop as isIPv6Loop, index$2_isLinux as isLinux, index$2_isLocalRequest as isLocalRequest, index$2_isLoopback as isLoopback, index$2_isMac as isMac, index$2_isRoot as isRoot, index$2_isWin as isWin, index$2_restart as restart, index$2_restartDirect as restartDirect, index$2_satisfies as satisfies, index$2_stringifyError as stringifyError, index$2_updateAllGitPlugin as updateAllGitPlugin, index$2_updateAllPkg as updateAllPkg, index$2_updateGitPlugin as updateGitPlugin, index$2_updatePkg as updatePkg, uptime$1 as uptime };
|
|
11613
|
+
export { index$2_checkGitPluginUpdate as checkGitPluginUpdate, index$2_checkPkgUpdate as checkPkgUpdate, index$2_checkPort as checkPort, index$2_errorToString as errorToString, index$2_exec as exec, index$2_ffmpeg as ffmpeg, index$2_ffplay as ffplay, index$2_ffprobe as ffprobe, index$2_fileToUrl as fileToUrl, index$2_fileToUrlHandlerKey as fileToUrlHandlerKey, formatTime$1 as formatTime, index$2_getCommit as getCommit, index$2_getHash as getHash, index$2_getPid as getPid, index$2_getPkgVersion as getPkgVersion, index$2_getRemotePkgVersion as getRemotePkgVersion, index$2_getRequestIp as getRequestIp, index$2_getTime as getTime, index$2_importModule as importModule, index$2_isClass as isClass, index$2_isDocker as isDocker, index$2_isIPv4Loop as isIPv4Loop, index$2_isIPv6Loop as isIPv6Loop, index$2_isLinux as isLinux, index$2_isLocalRequest as isLocalRequest, index$2_isLoopback as isLoopback, index$2_isMac as isMac, index$2_isRoot as isRoot, index$2_isWin as isWin, index$2_killApp as killApp, index$2_lock as lock, index$2_lockMethod as lockMethod, index$2_lockProp as lockProp, index$2_restart as restart, index$2_restartDirect as restartDirect, index$2_satisfies as satisfies, index$2_stringifyError as stringifyError, index$2_updateAllGitPlugin as updateAllGitPlugin, index$2_updateAllPkg as updateAllPkg, index$2_updateGitPlugin as updateGitPlugin, index$2_updatePkg as updatePkg, uptime$1 as uptime, index$2_waitPort as waitPort };
|
|
11580
11614
|
}
|
|
11581
11615
|
|
|
11582
11616
|
/**
|
|
@@ -13685,4 +13719,4 @@ type Client = RedisClientType & {
|
|
|
13685
13719
|
*/
|
|
13686
13720
|
declare const start: () => Promise<void>;
|
|
13687
13721
|
|
|
13688
|
-
export { type Accept, type AccordionItemProps, type AccordionKV, type AccordionProProps, type AccordionProResult, type AccordionProps, type AccordionResult, type AccountInfo, type Adapter, AdapterBase, type AdapterCommunication, type AdapterInfo, AdapterOneBot, type AdapterOptions, type AdapterPlatform, type AdapterProtocol, type AdapterStandard, type AdapterType, type Adapters, type AddDependenciesParams, type AddTaskResult, type AfterForwardMessageCallback, type AfterMessageCallback, type AllPluginMethods, type AnonymousSegment, type Apps, type ArrayField, type AtElement, type AtSegment, type Author, BASE_ROUTER, BATCH_UPDATE_PLUGINS_ROUTER, type BaseContact, BaseEvent, type BaseEventOptions, type BaseEventType, type BaseForwardCallback, type BaseMessageCallback, type BasketballElement, Bot, type BoundingBox, type BubbleFaceElement, type Button, type ButtonElement, CHECK_PLUGIN_ROUTER, CLOSE_TERMINAL_ROUTER, CONSOLE_ROUTER, CREATE_TERMINAL_ROUTER, type Cache, type CacheEntry, type CheckboxField, type CheckboxGroupProps, type CheckboxProps, type CheckboxResult, type Children, type CmdFnc, type Command, type CommandClass, type ComponentConfig, type ComponentProps, type ComponentType, type Components, type ComponentsClass, type Config, type Contact, type ContactElement, type ContactSegment, type Count, type CreateGroupFolderResponse, type CreatePty, type CreateTask, type CreateTaskParams, type CreateTaskResult, type CronProps, type CustomMusicElement, type CustomMusicSegment, type CustomNodeElement, type CustomNodeSegments, type DbStreamStatus, type DbStreams, type DefineConfig, type DependenciesManage, type DependenciesManageBase, type Dependency, type DiceElement, type DiceSegment, type DirectContact, DirectMessage, type DirectMessageOptions, type DirectNodeElement, type DirectNodeSegment, type DirectSender, type DividerField, type DividerProps, type DownloadFileErrorResult, type DownloadFileOptions, type DownloadFileResponse, type DownloadFileResult, type DownloadFileSuccessResult, type DownloadFilesOptions, EVENT_COUNT, EXIT_ROUTER, type ElementTypes, type Elements, type Env, type Event, type EventCallCallback, type EventCallHookItem, type EventParent, type EventToSubEvent, type ExecOptions$1 as ExecOptions, type ExecReturn, type ExecType, type ExtendedAxiosRequestConfig, FILE_CHANGE, type FaceElement, type FaceSegment, type FieldType, type FileElement, type FileList, type FileListMap, type FileSegment, type FileToUrlHandler, type FileToUrlResult, type FormField, type ForwardMessageCallback, type ForwardOptions, type ForwardSegment, type FriendContact, type FriendData, FriendDecreaseNotice, type FriendDecreaseOptions, FriendIncreaseNotice, type FriendIncreaseOptions, FriendMessage, type FriendMessageOptions, type FriendNoticeEventMap, type FriendRequestEventMap, type FriendRequestOptions, type FriendSender, GET_BOTS_ROUTER, GET_CONFIG_ROUTER, GET_DEPENDENCIES_LIST_ROUTER, GET_LOADED_COMMAND_PLUGIN_CACHE_LIST_ROUTER, GET_LOCAL_PLUGIN_LIST_ROUTER, GET_LOG_FILE_LIST_ROUTER, GET_LOG_FILE_ROUTER, GET_LOG_ROUTER, GET_NETWORK_STATUS_ROUTER, GET_NPMRC_LIST_ROUTER, GET_NPM_BASE_CONFIG_ROUTER, GET_NPM_CONFIG_ROUTER, GET_ONLINE_PLUGIN_LIST_ROUTER, GET_PLUGIN_APPS_ROUTER, GET_PLUGIN_CONFIG_ROUTER, GET_PLUGIN_FILE_ROUTER, GET_PLUGIN_LIST_PLUGIN_ADMIN_ROUTER, GET_PLUGIN_LIST_ROUTER, GET_PLUGIN_MARKET_LIST_ROUTER, GET_TASK_LIST_ROUTER, GET_TASK_STATUS_ROUTER, GET_TERMINAL_LIST_ROUTER, GET_UPDATABLE_PLUGINS_ROUTER, GET_WEBUI_PLUGIN_LIST_ROUTER, GET_WEBUI_PLUGIN_VERSIONS_ROUTER, type GeneralHookCallback, type GeneralHookItem, type GetAtAllCountResponse, type GetBot, type GetCommitHashOptions, type GetConfigRequest, type GetConfigResponse, type GetGroupFileListResponse, type GetGroupFileSystemInfoResponse, type GetGroupHighlightsResponse, type GetGroupInfo, type GetGroupMemberInfo, type GetGroupMuteListResponse, type GetMsg, type GetPluginLocalOptions, type GetPluginLocalReturn, type GetPluginReturn, type GetPluginType, type GiftElement, type GitLocalBranches, type GitPullOptions, type GitPullResult, type GitRemoteBranches, type GithubConfig, type GoToOptions, GroupAdminChangedNotice, type GroupAdminChangedOptions, GroupApplyRequest, type GroupApplyRequestOptions, GroupCardChangedNotice, type GroupCardChangedOptions, type GroupContact, type GroupData, GroupFileUploadedNotice, type GroupFileUploadedOptions, GroupHlightsChangedNotice, type GroupHlightsChangedOptions, GroupHonorChangedNotice, type GroupHonorChangedOptions, type GroupInfo, GroupInviteRequest, type GroupInviteRequestOptions, GroupLuckKingNotice, type GroupLuckKingOptions, GroupMemberBanNotice, type GroupMemberBanOptions, type GroupMemberData, GroupMemberDecreaseNotice, type GroupMemberDecreaseOptions, GroupMemberIncreaseNotice, type GroupMemberIncreaseOptions, type GroupMemberInfo, GroupMemberTitleUpdatedNotice, type GroupMemberUniqueTitleChangedOptions, GroupMessage, type GroupMessageOptions, GroupMessageReactionNotice, type GroupMessageReactionOptions, GroupNotice, type GroupNoticeEventMap, GroupPokeNotice, type GroupPokeOptions, GroupRecallNotice, type GroupRecallOptions, type GroupRequestEventMap, type GroupSender, GroupSignInNotice, type GroupSignInOptions, type GroupTempContact, GroupTempMessage, type GroupTempMessageOptions, type GroupTempSender, GroupWholeBanNotice, type GroupWholeBanOptions, type Groups, type GroupsObjectValue, type GuildContact, GuildMessage, type GuildMessageOptions, type GuildSender, HTTPStatusCode, type Handler, type HandlerType, type HonorInfoList, type HookCache, type HookCallback, type HookEmitForward, type HookEmitMessage, type HookNext, type HookOptions, type HooksType, INSTALL_PLUGIN_ROUTER, INSTALL_WEBUI_PLUGIN_ROUTER, IS_PLUGIN_CONFIG_EXIST_ROUTER, type Icon, type ImageElement, type ImageSegment, type ImportModuleResult, type InputGroupProps, type InputProps, type InputResult, type JsonElement, type JsonSegment, type JwtVerifyBase, type JwtVerifyError, type JwtVerifyExpired, type JwtVerifyResult, type JwtVerifySuccess, type JwtVerifyUnauthorized, type KarinButton, type KarinPluginAppsType, type KeyboardElement, LOGIN_ROUTER, type LoadPluginResult, type LoadedPluginCacheList, type LocalApiResponse, type LocationElement, type LocationSegment, type Log, LogMethodNames, Logger, LoggerLevel, type LongMsgElement, MANAGE_DEPENDENCIES_ROUTER, type MarkdownElement, type MarkdownTplElement, type MarketFaceElement, type Message$2 as Message, MessageBase, type MessageEventMap, type MessageEventSub, type MessageHookItem, type MessageOptions, type MessageResponse, type MetaEventBase, type MusicElement, type MusicPlatform, type MusicSegment, type NetworkStatus, type NodeElement, type NormalMessageCallback, type Notice, type NoticeAndRequest, NoticeBase, type NoticeEventMap, type NoticeEventSub, type NoticeOptions, type NpmBaseConfigResponse, type NpmrcFileResponse, type NumberField, type OB11AllEvent, OB11ApiAction, type OB11ApiParams, type OB11ApiRequest, OB11Event, type OB11EventBase, type OB11FriendSender, type OB11GroupMessage, type OB11GroupSender, type OB11GroupTempMessage, type OB11Message, OB11MessageSubType, OB11MessageType, type OB11Meta, type OB11NodeSegment, type OB11Notice, type OB11NoticeBaseType, OB11NoticeType, type OB11OtherFriendMessage, type OB11PrivateMessage, type OB11Request, type OB11RequestBaseType, OB11RequestType, type OB11Segment, type OB11SegmentBase, type OB11SegmentType, OB11Sex, type OB11serInfo, type ObjectArrayField, type ObjectField, type OneBot11FriendAdd, type OneBot11FriendOfflineFile, type OneBot11FriendRecall, type OneBot11FriendRequest, type OneBot11GroupAdmin, type OneBot11GroupBan, type OneBot11GroupCard, type OneBot11GroupDecrease, type OneBot11GroupEssence, type OneBot11GroupIncrease, type OneBot11GroupMessageReaction, type OneBot11GroupMessageReactionLagrange, type OneBot11GroupRecall, type OneBot11GroupRequest, type OneBot11GroupUpload, type OneBot11Heartbeat, type OneBot11Honor, type OneBot11Lifecycle, type OneBot11LuckyKing, type OneBot11Poke, type Option, type Options, PING_ROUTER, PLUGIN_ADMIN_ROUTER, type PM2, type Package, type Parser, type PasmsgElement, type Permission, type PingRequestResult, type PkgData, type PkgEnv, type PkgInfo, Plugin$1 as Plugin, type PluginAdminCustomInstall, type PluginAdminCustomInstallApp, type PluginAdminInstall, type PluginAdminListResponse, type PluginAdminMarketInstall, type PluginAdminMarketInstallApp, type PluginAdminParams, type PluginAdminResult, type PluginAdminUninstall, type PluginAdminUpdate, type PluginFile, type PluginFncTypes, type PluginLists, type PluginMarketAuthor, type PluginMarketLocalBase, type PluginMarketLocalOptions, type PluginMarketOptions, type PluginMarketRequest, type PluginMarketResponse, type PluginOptions, type PluginRule, type PluginUpdateInfo, type PnpmDependencies, type PnpmDependency, type Point, type PokeSegment, PrivateApplyRequest, type PrivateApplyRequestOptions, PrivateFileUploadedNotice, type PrivateFileUploadedOptions, PrivatePokeNotice, type PrivatePokeOptions, PrivateRecallNotice, type PrivateRecallOptions, type Privates, type PrivatesObjectValue, type PuppeteerLifeCycleEvent, type QQBotButton, type QQButtonTextType, type QQGroupFileInfo, type QQGroupFolderInfo, type QQGroupHonorInfo, RECV_MSG, REFRESH_ROUTER, RESTART_ROUTER, type RaceResult, type Radio, type RadioField, type RadioGroupProps, type RadioResult, type RawElement, type ReadyMusicElement, ReceiveLikeNotice, type ReceiveLikeOptions, type RecordElement, type RecordSegment, type Redis, type RemoveDependenciesParams, type Render, type RenderResult, Renderer, type Renders$1 as Renders, type Reply, type ReplyElement, type ReplySegment, type Request, RequestBase, type RequestEventMap, type RequestEventSub, type RequestOptions, type RequireFunction, type RequireFunctionSync, type RequireOptions, type Role, type RpsElement, type RpsSegment, SAVE_CONFIG_ROUTER, SAVE_NPMRC_ROUTER, SAVE_PLUGIN_CONFIG_ROUTER, SEND_MSG, SET_LOG_LEVEL_ROUTER, SYSTEM_INFO_ROUTER, SYSTEM_STATUS_KARIN_ROUTER, SYSTEM_STATUS_ROUTER, SYSTEM_STATUS_WS_ROUTER, type SandBoxAccountInfo, type SandboxMsgRecord, type SandboxSendApi, type SandboxSendSendFriendMsg, type SandboxSendSendGroupMsg, type SandboxSendSendMsg, type SaveConfigResponse, type SaveResult, type Scene, type ScreenshotClip, type ScreenshotOptions, type SectionField, type Segment, type SelectField, type SendElement, type SendForwardMessageResponse, type SendMessage, type SendMsgHookItem, type SendMsgResults, type Sender, type SenderBase, type SenderGroup, type Sex, type ShakeSegment, type ShareElement, type ShareSegment, type Snapka, type SnapkaResult, type SrcReply, type StandardResult, type SwitchField, type SwitchProps, type SwitchResult, TASK_DELETE_ROUTER, TASK_LIST_ROUTER, TASK_LOGS_ROUTER, TASK_RUN_ROUTER, type Task, type TaskCallbacks, type TaskEntity, type TaskExecutor, type TaskFilter, type TaskStatus, type TaskType, type TerminalInstance, type TerminalShell, type TestNetworkRequestDetail, type TextElement, type TextField, type TextSegment, type TitleField, UNINSTALL_PLUGIN_ROUTER, UNINSTALL_WEBUI_PLUGIN_ROUTER, UPDATE_CORE_ROUTER, UPDATE_PLUGIN_ROUTER, UPDATE_TASK_STATUS_ROUTER, UPDATE_WEBUI_PLUGIN_VERSION_ROUTER, type UnionMessage, type UnregisterBot, type UpgradeDependenciesParams, type UserInfo, type ValidationRule, type ValueType, type VideoElement, type VideoSegment, WS_CLOSE, WS_CLOSE_ONEBOT, WS_CLOSE_PUPPETEER, WS_CLOSE_SANDBOX, WS_CONNECTION, WS_CONNECTION_ONEBOT, WS_CONNECTION_PUPPETEER, WS_CONNECTION_SANDBOX, WS_CONNECTION_TERMINAL, WS_SNAPKA, type WaitForOptions, Watch, Watcher, type WeatherElement, type XmlElement, type XmlSegment, type YamlComment, YamlEditor, type YamlValue, absPath, accordion, accordionItem, accordionPro, app, applyComments, authMiddleware, base64, buffer, buildGithub, buttonHandle, callRender, changelog, checkGitPluginUpdate, checkPkgUpdate, clearRequire, clearRequireFile, comment, index$1 as common, components, index as config, contact$1 as contact, contactDirect, contactFriend, contactGroup, contactGroupTemp, contactGuild, copyConfig, copyConfigSync, copyFiles, copyFilesSync, createAccessTokenExpiredResponse, createBadRequestResponse, createClient, createDirectMessage, createForbiddenResponse, createFriendDecreaseNotice, createFriendIncreaseNotice, createFriendMessage, createGroupAdminChangedNotice, createGroupApplyRequest, createGroupCardChangedNotice, createGroupFileUploadedNotice, createGroupHlightsChangedNotice, createGroupHonorChangedNotice, createGroupInviteRequest, createGroupLuckKingNotice, createGroupMemberAddNotice, createGroupMemberBanNotice, createGroupMemberDelNotice, createGroupMemberTitleUpdatedNotice, createGroupMessage, createGroupMessageReactionNotice, createGroupPokeNotice, createGroupRecallNotice, createGroupSignInNotice, createGroupTempMessage, createGroupWholeBanNotice, createGuildMessage, createHttp, createINIParser, createMethodNotAllowedResponse, createNotFoundResponse, createPayloadTooLargeResponse, createPluginDir, createPrivateApplyRequest, createPrivateFileUploadedNotice, createPrivatePokeNotice, createPrivateRecallNotice, createRawMessage, createReceiveLikeNotice, createRefreshTokenExpiredResponse, createResponse, createServerErrorResponse, createSuccessResponse, createTaskDatabase, createUnauthorizedResponse, cron, db, debug, karin as default, defineConfig, divider, downFile, downloadFile, errorToString, exec, executeTask, existToMkdir, existToMkdirSync, exists, existsSync, ffmpeg, ffplay, ffprobe, fs as file, fileToUrl, fileToUrlHandlerKey, filesByExt, formatPath, formatTime$1 as formatTime, index$3 as fs, getAllBot, getAllBotID, getAllBotList, getAllFiles, getAllFilesSync, getBot, getBotCount, getCommit, getDefaultBranch, getFastGithub, getFastRegistry, getFiles, getHash, getLocalBranches, getLocalCommitHash, getMimeType, getPackageJson, getPid, getPkgVersion, getPluginInfo, getPlugins, getRelPath, getRemoteBranches, getRemoteCommitHash, getRemotePkgVersion, getRender, getRenderCount, getRenderList, getRequestIp, getTaskCallback, getTaskDatabase, getTime, gitPull, handler$1 as handler, hooks, importModule, ini, initOneBot, initTaskSystem, input, isClass, isDir, isDirSync, isDocker, isFile, isFileSync, isIPv4Loop, isIPv6Loop, isLinux, isLocalRequest, isLoopback, isMac, isPathEqual, isPlugin, isPublic, isRoot, isSubPath, isWin, json$1 as json, karin, karinToQQBot, key, lock, lockMethod, lockProp, log, logger, logs, makeForward, makeMessage, type messageType, mkdir, mkdirSync, parseChangelog, parseGithubUrl, pingRequest, pkgRoot, qqbotToKarin, raceRequest, randomStr, range, read, readFile, readJson, readJsonSync, redis, registerBot, registerRender, removeTaskCallback, render, renderHtml, renderMultiHtml, renderTpl, requireFile, requireFileSync, restart, restartDirect, rmSync, router, satisfies, save, type screenshot, segment, sendMsg$1 as sendMsg, sender, senderDirect, senderFriend, senderGroup, senderGroupTemp, senderGuild, sep, server, setTaskCallback, setTaskDatabase, splitPath, start, stream, stringifyError, switchComponent, index$2 as system, taskAdd, taskExists, taskGet, taskList, taskSystem, taskUpdateLogs, taskUpdateStatus, unregisterBot, unregisterRender, updateAllGitPlugin, updateAllPkg, updateGitPlugin, updatePkg, updateTaskLogs, updateTaskStatus, uptime$1 as uptime, urlToPath, watch, watchAndMerge, write, writeJson, writeJsonSync, yaml };
|
|
13722
|
+
export { type Accept, type AccordionItemProps, type AccordionKV, type AccordionProProps, type AccordionProResult, type AccordionProps, type AccordionResult, type AccountInfo, type Adapter, AdapterBase, type AdapterCommunication, type AdapterInfo, AdapterOneBot, type AdapterOptions, type AdapterPlatform, type AdapterProtocol, type AdapterStandard, type AdapterType, type Adapters, type AddDependenciesParams, type AddTaskResult, type AfterForwardMessageCallback, type AfterMessageCallback, type AllPluginMethods, type AnonymousSegment, type Apps, type ArrayField, type AtElement, type AtSegment, type Author, BASE_ROUTER, BATCH_UPDATE_PLUGINS_ROUTER, type BaseContact, BaseEvent, type BaseEventOptions, type BaseEventType, type BaseForwardCallback, type BaseMessageCallback, type BasketballElement, Bot, type BoundingBox, type BubbleFaceElement, type Button, type ButtonElement, CHECK_PLUGIN_ROUTER, CLOSE_TERMINAL_ROUTER, CONSOLE_ROUTER, CREATE_TERMINAL_ROUTER, type Cache, type CacheEntry, type CheckboxField, type CheckboxGroupProps, type CheckboxProps, type CheckboxResult, type Children, type CmdFnc, type Command, type CommandClass, type ComponentConfig, type ComponentProps, type ComponentType, type Components, type ComponentsClass, type Config, type Contact, type ContactElement, type ContactSegment, type Count, type CreateGroupFolderResponse, type CreatePty, type CreateTask, type CreateTaskParams, type CreateTaskResult, type CronProps, type CustomMusicElement, type CustomMusicSegment, type CustomNodeElement, type CustomNodeSegments, type DbStreamStatus, type DbStreams, type DefineConfig, type DependenciesManage, type DependenciesManageBase, type Dependency, type DiceElement, type DiceSegment, type DirectContact, DirectMessage, type DirectMessageOptions, type DirectNodeElement, type DirectNodeSegment, type DirectSender, type DividerField, type DividerProps, type DownloadFileErrorResult, type DownloadFileOptions, type DownloadFileResponse, type DownloadFileResult, type DownloadFileSuccessResult, type DownloadFilesOptions, EVENT_COUNT, EXIT_ROUTER, type ElementTypes, type Elements, type Env, type Event, type EventCallCallback, type EventCallHookItem, type EventParent, type EventToSubEvent, type ExecOptions$1 as ExecOptions, type ExecReturn, type ExecType, type ExtendedAxiosRequestConfig, FILE_CHANGE, type FaceElement, type FaceSegment, type FieldType, type FileElement, type FileList, type FileListMap, type FileSegment, type FileToUrlHandler, type FileToUrlResult, type FormField, type ForwardMessageCallback, type ForwardOptions, type ForwardSegment, type FriendContact, type FriendData, FriendDecreaseNotice, type FriendDecreaseOptions, FriendIncreaseNotice, type FriendIncreaseOptions, FriendMessage, type FriendMessageOptions, type FriendNoticeEventMap, type FriendRequestEventMap, type FriendRequestOptions, type FriendSender, GET_BOTS_ROUTER, GET_CONFIG_ROUTER, GET_DEPENDENCIES_LIST_ROUTER, GET_LOADED_COMMAND_PLUGIN_CACHE_LIST_ROUTER, GET_LOCAL_PLUGIN_LIST_ROUTER, GET_LOG_FILE_LIST_ROUTER, GET_LOG_FILE_ROUTER, GET_LOG_ROUTER, GET_NETWORK_STATUS_ROUTER, GET_NPMRC_LIST_ROUTER, GET_NPM_BASE_CONFIG_ROUTER, GET_NPM_CONFIG_ROUTER, GET_ONLINE_PLUGIN_LIST_ROUTER, GET_PLUGIN_APPS_ROUTER, GET_PLUGIN_CONFIG_ROUTER, GET_PLUGIN_FILE_ROUTER, GET_PLUGIN_LIST_PLUGIN_ADMIN_ROUTER, GET_PLUGIN_LIST_ROUTER, GET_PLUGIN_MARKET_LIST_ROUTER, GET_TASK_LIST_ROUTER, GET_TASK_STATUS_ROUTER, GET_TERMINAL_LIST_ROUTER, GET_UPDATABLE_PLUGINS_ROUTER, GET_WEBUI_PLUGIN_LIST_ROUTER, GET_WEBUI_PLUGIN_VERSIONS_ROUTER, type GeneralHookCallback, type GeneralHookItem, type GetAtAllCountResponse, type GetBot, type GetCommitHashOptions, type GetConfigRequest, type GetConfigResponse, type GetGroupFileListResponse, type GetGroupFileSystemInfoResponse, type GetGroupHighlightsResponse, type GetGroupInfo, type GetGroupMemberInfo, type GetGroupMuteListResponse, type GetMsg, type GetPluginLocalOptions, type GetPluginLocalReturn, type GetPluginReturn, type GetPluginType, type GiftElement, type GitLocalBranches, type GitPullOptions, type GitPullResult, type GitRemoteBranches, type GithubConfig, type GoToOptions, GroupAdminChangedNotice, type GroupAdminChangedOptions, GroupApplyRequest, type GroupApplyRequestOptions, GroupCardChangedNotice, type GroupCardChangedOptions, type GroupContact, type GroupData, GroupFileUploadedNotice, type GroupFileUploadedOptions, GroupHlightsChangedNotice, type GroupHlightsChangedOptions, GroupHonorChangedNotice, type GroupHonorChangedOptions, type GroupInfo, GroupInviteRequest, type GroupInviteRequestOptions, GroupLuckKingNotice, type GroupLuckKingOptions, GroupMemberBanNotice, type GroupMemberBanOptions, type GroupMemberData, GroupMemberDecreaseNotice, type GroupMemberDecreaseOptions, GroupMemberIncreaseNotice, type GroupMemberIncreaseOptions, type GroupMemberInfo, GroupMemberTitleUpdatedNotice, type GroupMemberUniqueTitleChangedOptions, GroupMessage, type GroupMessageOptions, GroupMessageReactionNotice, type GroupMessageReactionOptions, GroupNotice, type GroupNoticeEventMap, GroupPokeNotice, type GroupPokeOptions, GroupRecallNotice, type GroupRecallOptions, type GroupRequestEventMap, type GroupSender, GroupSignInNotice, type GroupSignInOptions, type GroupTempContact, GroupTempMessage, type GroupTempMessageOptions, type GroupTempSender, GroupWholeBanNotice, type GroupWholeBanOptions, type Groups, type GroupsObjectValue, type GuildContact, GuildMessage, type GuildMessageOptions, type GuildSender, HTTPStatusCode, type Handler, type HandlerType, type HonorInfoList, type HookCache, type HookCallback, type HookEmitForward, type HookEmitMessage, type HookNext, type HookOptions, type HooksType, INSTALL_PLUGIN_ROUTER, INSTALL_WEBUI_PLUGIN_ROUTER, IS_PLUGIN_CONFIG_EXIST_ROUTER, type Icon, type ImageElement, type ImageSegment, type ImportModuleResult, type InputGroupProps, type InputProps, type InputResult, type JsonElement, type JsonSegment, type JwtVerifyBase, type JwtVerifyError, type JwtVerifyExpired, type JwtVerifyResult, type JwtVerifySuccess, type JwtVerifyUnauthorized, type KarinButton, type KarinPluginAppsType, type KeyboardElement, LOGIN_ROUTER, type LoadPluginResult, type LoadedPluginCacheList, type LocalApiResponse, type LocationElement, type LocationSegment, type Log, LogMethodNames, Logger, LoggerLevel, type LongMsgElement, MANAGE_DEPENDENCIES_ROUTER, type MarkdownElement, type MarkdownTplElement, type MarketFaceElement, type Message$2 as Message, MessageBase, type MessageEventMap, type MessageEventSub, type MessageHookItem, type MessageOptions, type MessageResponse, type MetaEventBase, type MusicElement, type MusicPlatform, type MusicSegment, type NetworkStatus, type NodeElement, type NormalMessageCallback, type Notice, type NoticeAndRequest, NoticeBase, type NoticeEventMap, type NoticeEventSub, type NoticeOptions, type NpmBaseConfigResponse, type NpmrcFileResponse, type NumberField, type OB11AllEvent, OB11ApiAction, type OB11ApiParams, type OB11ApiRequest, OB11Event, type OB11EventBase, type OB11FriendSender, type OB11GroupMessage, type OB11GroupSender, type OB11GroupTempMessage, type OB11Message, OB11MessageSubType, OB11MessageType, type OB11Meta, type OB11NodeSegment, type OB11Notice, type OB11NoticeBaseType, OB11NoticeType, type OB11OtherFriendMessage, type OB11PrivateMessage, type OB11Request, type OB11RequestBaseType, OB11RequestType, type OB11Segment, type OB11SegmentBase, type OB11SegmentType, OB11Sex, type OB11serInfo, type ObjectArrayField, type ObjectField, type OneBot11FriendAdd, type OneBot11FriendOfflineFile, type OneBot11FriendRecall, type OneBot11FriendRequest, type OneBot11GroupAdmin, type OneBot11GroupBan, type OneBot11GroupCard, type OneBot11GroupDecrease, type OneBot11GroupEssence, type OneBot11GroupIncrease, type OneBot11GroupMessageReaction, type OneBot11GroupMessageReactionLagrange, type OneBot11GroupRecall, type OneBot11GroupRequest, type OneBot11GroupUpload, type OneBot11Heartbeat, type OneBot11Honor, type OneBot11Lifecycle, type OneBot11LuckyKing, type OneBot11Poke, type Option, type Options, PING_ROUTER, PLUGIN_ADMIN_ROUTER, type PM2, type Package, type Parser, type PasmsgElement, type Permission, type PingRequestResult, type PkgData, type PkgEnv, type PkgInfo, Plugin$1 as Plugin, type PluginAdminCustomInstall, type PluginAdminCustomInstallApp, type PluginAdminInstall, type PluginAdminListResponse, type PluginAdminMarketInstall, type PluginAdminMarketInstallApp, type PluginAdminParams, type PluginAdminResult, type PluginAdminUninstall, type PluginAdminUpdate, type PluginFile, type PluginFncTypes, type PluginLists, type PluginMarketAuthor, type PluginMarketLocalBase, type PluginMarketLocalOptions, type PluginMarketOptions, type PluginMarketRequest, type PluginMarketResponse, type PluginOptions, type PluginRule, type PluginUpdateInfo, type PnpmDependencies, type PnpmDependency, type Point, type PokeSegment, PrivateApplyRequest, type PrivateApplyRequestOptions, PrivateFileUploadedNotice, type PrivateFileUploadedOptions, PrivatePokeNotice, type PrivatePokeOptions, PrivateRecallNotice, type PrivateRecallOptions, type Privates, type PrivatesObjectValue, type PuppeteerLifeCycleEvent, type QQBotButton, type QQButtonTextType, type QQGroupFileInfo, type QQGroupFolderInfo, type QQGroupHonorInfo, RECV_MSG, REFRESH_ROUTER, RESTART_ROUTER, type RaceResult, type Radio, type RadioField, type RadioGroupProps, type RadioResult, type RawElement, type ReadyMusicElement, ReceiveLikeNotice, type ReceiveLikeOptions, type RecordElement, type RecordSegment, type Redis, type RemoveDependenciesParams, type Render, type RenderResult, Renderer, type Renders$1 as Renders, type Reply, type ReplyElement, type ReplySegment, type Request, RequestBase, type RequestEventMap, type RequestEventSub, type RequestOptions, type RequireFunction, type RequireFunctionSync, type RequireOptions, type Role, type RpsElement, type RpsSegment, SAVE_CONFIG_ROUTER, SAVE_NPMRC_ROUTER, SAVE_PLUGIN_CONFIG_ROUTER, SEND_MSG, SET_LOG_LEVEL_ROUTER, SYSTEM_INFO_ROUTER, SYSTEM_STATUS_KARIN_ROUTER, SYSTEM_STATUS_ROUTER, SYSTEM_STATUS_WS_ROUTER, type SandBoxAccountInfo, type SandboxMsgRecord, type SandboxSendApi, type SandboxSendSendFriendMsg, type SandboxSendSendGroupMsg, type SandboxSendSendMsg, type SaveConfigResponse, type SaveResult, type Scene, type ScreenshotClip, type ScreenshotOptions, type SectionField, type Segment, type SelectField, type SendElement, type SendForwardMessageResponse, type SendMessage, type SendMsgHookItem, type SendMsgResults, type Sender, type SenderBase, type SenderGroup, type Sex, type ShakeSegment, type ShareElement, type ShareSegment, type Snapka, type SnapkaResult, type SrcReply, type StandardResult, type SwitchField, type SwitchProps, type SwitchResult, TASK_DELETE_ROUTER, TASK_LIST_ROUTER, TASK_LOGS_ROUTER, TASK_RUN_ROUTER, type Task, type TaskCallbacks, type TaskEntity, type TaskExecutor, type TaskFilter, type TaskStatus, type TaskType, type TerminalInstance, type TerminalShell, type TestNetworkRequestDetail, type TextElement, type TextField, type TextSegment, type TitleField, UNINSTALL_PLUGIN_ROUTER, UNINSTALL_WEBUI_PLUGIN_ROUTER, UPDATE_CORE_ROUTER, UPDATE_PLUGIN_ROUTER, UPDATE_TASK_STATUS_ROUTER, UPDATE_WEBUI_PLUGIN_VERSION_ROUTER, type UnionMessage, type UnregisterBot, type UpgradeDependenciesParams, type UserInfo, type ValidationRule, type ValueType, type VideoElement, type VideoSegment, WS_CLOSE, WS_CLOSE_ONEBOT, WS_CLOSE_PUPPETEER, WS_CLOSE_SANDBOX, WS_CONNECTION, WS_CONNECTION_ONEBOT, WS_CONNECTION_PUPPETEER, WS_CONNECTION_SANDBOX, WS_CONNECTION_TERMINAL, WS_SNAPKA, type WaitForOptions, Watch, Watcher, type WeatherElement, type XmlElement, type XmlSegment, type YamlComment, YamlEditor, type YamlValue, absPath, accordion, accordionItem, accordionPro, app, applyComments, authMiddleware, base64, buffer, buildGithub, buttonHandle, callRender, changelog, checkGitPluginUpdate, checkPkgUpdate, checkPort, clearRequire, clearRequireFile, comment, index$1 as common, components, index as config, contact$1 as contact, contactDirect, contactFriend, contactGroup, contactGroupTemp, contactGuild, copyConfig, copyConfigSync, copyFiles, copyFilesSync, createAccessTokenExpiredResponse, createBadRequestResponse, createClient, createDirectMessage, createForbiddenResponse, createFriendDecreaseNotice, createFriendIncreaseNotice, createFriendMessage, createGroupAdminChangedNotice, createGroupApplyRequest, createGroupCardChangedNotice, createGroupFileUploadedNotice, createGroupHlightsChangedNotice, createGroupHonorChangedNotice, createGroupInviteRequest, createGroupLuckKingNotice, createGroupMemberAddNotice, createGroupMemberBanNotice, createGroupMemberDelNotice, createGroupMemberTitleUpdatedNotice, createGroupMessage, createGroupMessageReactionNotice, createGroupPokeNotice, createGroupRecallNotice, createGroupSignInNotice, createGroupTempMessage, createGroupWholeBanNotice, createGuildMessage, createHttp, createINIParser, createMethodNotAllowedResponse, createNotFoundResponse, createPayloadTooLargeResponse, createPluginDir, createPrivateApplyRequest, createPrivateFileUploadedNotice, createPrivatePokeNotice, createPrivateRecallNotice, createRawMessage, createReceiveLikeNotice, createRefreshTokenExpiredResponse, createResponse, createServerErrorResponse, createSuccessResponse, createTaskDatabase, createUnauthorizedResponse, cron, db, debug, karin as default, defineConfig, divider, downFile, downloadFile, errorToString, exec, executeTask, existToMkdir, existToMkdirSync, exists, existsSync, ffmpeg, ffplay, ffprobe, fs as file, fileToUrl, fileToUrlHandlerKey, filesByExt, formatPath, formatTime$1 as formatTime, index$3 as fs, getAllBot, getAllBotID, getAllBotList, getAllFiles, getAllFilesSync, getBot, getBotCount, getCommit, getDefaultBranch, getFastGithub, getFastRegistry, getFiles, getHash, getLocalBranches, getLocalCommitHash, getMimeType, getPackageJson, getPid, getPkgVersion, getPluginInfo, getPlugins, getRelPath, getRemoteBranches, getRemoteCommitHash, getRemotePkgVersion, getRender, getRenderCount, getRenderList, getRequestIp, getTaskCallback, getTaskDatabase, getTime, gitPull, handler$1 as handler, hooks, importModule, ini, initOneBot, initTaskSystem, input, isClass, isDir, isDirSync, isDocker, isFile, isFileSync, isIPv4Loop, isIPv6Loop, isLinux, isLocalRequest, isLoopback, isMac, isPathEqual, isPlugin, isPublic, isRoot, isSubPath, isWin, json$1 as json, karin, karinToQQBot, key, killApp, lock, lockMethod, lockProp, log, logger, logs, makeForward, makeMessage, type messageType, mkdir, mkdirSync, parseChangelog, parseGithubUrl, pingRequest, pkgRoot, qqbotToKarin, raceRequest, randomStr, range, read, readFile, readJson, readJsonSync, redis, registerBot, registerRender, removeTaskCallback, render, renderHtml, renderMultiHtml, renderTpl, requireFile, requireFileSync, restart, restartDirect, rmSync, router, satisfies, save, type screenshot, segment, sendMsg$1 as sendMsg, sender, senderDirect, senderFriend, senderGroup, senderGroupTemp, senderGuild, sep, server, setTaskCallback, setTaskDatabase, splitPath, start, stream, stringifyError, switchComponent, index$2 as system, taskAdd, taskExists, taskGet, taskList, taskSystem, taskUpdateLogs, taskUpdateStatus, unregisterBot, unregisterRender, updateAllGitPlugin, updateAllPkg, updateGitPlugin, updatePkg, updateTaskLogs, updateTaskStatus, uptime$1 as uptime, urlToPath, waitPort, watch, watchAndMerge, write, writeJson, writeJsonSync, yaml };
|
package/dist/index.mjs
CHANGED
|
@@ -22,6 +22,7 @@ import os, { homedir } from 'node:os';
|
|
|
22
22
|
import chalk2 from 'chalk';
|
|
23
23
|
import log4js from 'log4js';
|
|
24
24
|
import { lookup } from 'dns/promises';
|
|
25
|
+
import { createServer as createServer$1 } from 'node:net';
|
|
25
26
|
import sqlite3 from 'sqlite3';
|
|
26
27
|
import WebSocket$1, { WebSocket, WebSocketServer } from 'ws';
|
|
27
28
|
import require$$02 from 'buffer';
|
|
@@ -29,7 +30,6 @@ import require$$32 from 'stream';
|
|
|
29
30
|
import require$$5 from 'util';
|
|
30
31
|
import template from 'art-template';
|
|
31
32
|
import schedule from 'node-schedule';
|
|
32
|
-
import { createServer as createServer$1 } from 'node:net';
|
|
33
33
|
import moment from 'moment';
|
|
34
34
|
import { createClient } from 'redis';
|
|
35
35
|
import express2, { Router } from 'express';
|
|
@@ -9996,11 +9996,12 @@ var init_pid = __esm({
|
|
|
9996
9996
|
getPid = async (port2) => {
|
|
9997
9997
|
const command2 = isWin2 ? `netstat -ano | findstr :${port2}` : `lsof -i:${port2} | grep LISTEN | awk '{print $2}'`;
|
|
9998
9998
|
const { stdout } = await exec(command2);
|
|
9999
|
+
if (!stdout) return null;
|
|
9999
10000
|
if (isWin2) {
|
|
10000
10001
|
const pid = stdout.toString().split(/\s+/).filter(Boolean).pop();
|
|
10001
|
-
return Number(pid);
|
|
10002
|
+
return isNaN(Number(pid)) ? null : Number(pid);
|
|
10002
10003
|
}
|
|
10003
|
-
return Number(stdout);
|
|
10004
|
+
return isNaN(Number(stdout)) ? null : Number(stdout);
|
|
10004
10005
|
};
|
|
10005
10006
|
}
|
|
10006
10007
|
});
|
|
@@ -10048,6 +10049,56 @@ var init_class = __esm({
|
|
|
10048
10049
|
}
|
|
10049
10050
|
});
|
|
10050
10051
|
|
|
10052
|
+
// src/utils/common/sleep.ts
|
|
10053
|
+
var sleep;
|
|
10054
|
+
var init_sleep = __esm({
|
|
10055
|
+
"src/utils/common/sleep.ts"() {
|
|
10056
|
+
sleep = (ms2) => new Promise((resolve) => setTimeout(resolve, ms2));
|
|
10057
|
+
}
|
|
10058
|
+
});
|
|
10059
|
+
var checkPort, waitPort, killApp;
|
|
10060
|
+
var init_port = __esm({
|
|
10061
|
+
"src/utils/system/port.ts"() {
|
|
10062
|
+
init_sleep();
|
|
10063
|
+
init_exec();
|
|
10064
|
+
init_pid();
|
|
10065
|
+
init_system();
|
|
10066
|
+
checkPort = (port2) => {
|
|
10067
|
+
return new Promise((resolve) => {
|
|
10068
|
+
const server2 = createServer$1();
|
|
10069
|
+
server2.once("error", () => {
|
|
10070
|
+
server2.close();
|
|
10071
|
+
resolve(false);
|
|
10072
|
+
});
|
|
10073
|
+
server2.once("listening", () => {
|
|
10074
|
+
server2.close();
|
|
10075
|
+
resolve(true);
|
|
10076
|
+
});
|
|
10077
|
+
server2.listen(port2, "127.0.0.1");
|
|
10078
|
+
});
|
|
10079
|
+
};
|
|
10080
|
+
waitPort = async (port2, maxAttempts = 30, interval = 1e3) => {
|
|
10081
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
10082
|
+
const available = await checkPort(port2);
|
|
10083
|
+
if (available) {
|
|
10084
|
+
return true;
|
|
10085
|
+
}
|
|
10086
|
+
logger.debug(`\u7AEF\u53E3 ${port2} \u88AB\u5360\u7528\uFF0C\u7B49\u5F85\u91CA\u653E... (${attempt + 1}/${maxAttempts})`);
|
|
10087
|
+
await sleep(interval);
|
|
10088
|
+
}
|
|
10089
|
+
return false;
|
|
10090
|
+
};
|
|
10091
|
+
killApp = async (identifier, isPort = false) => {
|
|
10092
|
+
const pid = isPort ? await getPid(Number(identifier)) : Number(identifier);
|
|
10093
|
+
if (!pid) return false;
|
|
10094
|
+
const command2 = isWin2 ? `taskkill /F /PID ${pid}` : `kill -9 ${pid}`;
|
|
10095
|
+
const { stderr } = await exec(command2);
|
|
10096
|
+
if (stderr) return false;
|
|
10097
|
+
return true;
|
|
10098
|
+
};
|
|
10099
|
+
}
|
|
10100
|
+
});
|
|
10101
|
+
|
|
10051
10102
|
// src/utils/system/import.ts
|
|
10052
10103
|
var importModule;
|
|
10053
10104
|
var init_import = __esm({
|
|
@@ -11204,7 +11255,7 @@ var restart, restartDirect;
|
|
|
11204
11255
|
var init_restart = __esm({
|
|
11205
11256
|
"src/utils/system/restart.ts"() {
|
|
11206
11257
|
init_exec();
|
|
11207
|
-
restart = async (selfId, contact3, messageId, isFront = true) => {
|
|
11258
|
+
restart = async (selfId, contact3, messageId, isFront = true, reloadDeps = false) => {
|
|
11208
11259
|
const options = {
|
|
11209
11260
|
selfId,
|
|
11210
11261
|
contact: contact3,
|
|
@@ -11216,11 +11267,7 @@ var init_restart = __esm({
|
|
|
11216
11267
|
const db2 = await createDB2();
|
|
11217
11268
|
await db2.set(key, options);
|
|
11218
11269
|
if (isFront && process.send) {
|
|
11219
|
-
process.send(JSON.stringify({
|
|
11220
|
-
type: "restart",
|
|
11221
|
-
port: process.env.HTTP_PORT,
|
|
11222
|
-
token: process.env.HTTP_AUTH_KEY
|
|
11223
|
-
}));
|
|
11270
|
+
process.send(JSON.stringify({ type: "restart", reloadDeps }));
|
|
11224
11271
|
return { status: "success", data: "\u5DF2\u53D1\u9001\u91CD\u542F\u4FE1\u53F7" };
|
|
11225
11272
|
}
|
|
11226
11273
|
if (process.env.PM2_RESTART !== "true") process.exit();
|
|
@@ -11233,16 +11280,13 @@ var init_restart = __esm({
|
|
|
11233
11280
|
if (error) return { status: "failed", data: error };
|
|
11234
11281
|
process.exit();
|
|
11235
11282
|
};
|
|
11236
|
-
restartDirect = async (
|
|
11283
|
+
restartDirect = async (options) => {
|
|
11284
|
+
const { isPm2 = false, reloadDeps = false } = options || {};
|
|
11237
11285
|
logger.mark("\u6536\u5230\u91CD\u542F\u8BF7\u6C42\uFF0C\u6B63\u5728\u91CD\u542F...");
|
|
11238
11286
|
if (!isPm2 && process?.send) {
|
|
11239
|
-
process.send(JSON.stringify({
|
|
11240
|
-
|
|
11241
|
-
|
|
11242
|
-
token: process.env.HTTP_AUTH_KEY
|
|
11243
|
-
}));
|
|
11244
|
-
logger.mark("\u6B63\u5728\u901A\u77E5\u7236\u8FDB\u7A0B\u91CD\u542F...");
|
|
11245
|
-
process.exit(0);
|
|
11287
|
+
process.send(JSON.stringify({ type: "restart", reloadDeps }));
|
|
11288
|
+
logger.debug("\u6B63\u5728\u901A\u77E5\u7236\u8FDB\u7A0B\u91CD\u542F...");
|
|
11289
|
+
return;
|
|
11246
11290
|
}
|
|
11247
11291
|
if (process.env.RUNTIME === "pm2") {
|
|
11248
11292
|
if (process.env.PM2_RESTART !== "true") process.exit();
|
|
@@ -11444,8 +11488,8 @@ var init_range = __esm({
|
|
|
11444
11488
|
return comparison === 0;
|
|
11445
11489
|
}
|
|
11446
11490
|
};
|
|
11447
|
-
satisfies = (
|
|
11448
|
-
const conditions =
|
|
11491
|
+
satisfies = (satisfies2, version2) => {
|
|
11492
|
+
const conditions = satisfies2.split(" ");
|
|
11449
11493
|
return conditions.every((condition) => satisfiesCondition(version2, condition));
|
|
11450
11494
|
};
|
|
11451
11495
|
}
|
|
@@ -11456,6 +11500,7 @@ var system_exports = {};
|
|
|
11456
11500
|
__export(system_exports, {
|
|
11457
11501
|
checkGitPluginUpdate: () => checkGitPluginUpdate,
|
|
11458
11502
|
checkPkgUpdate: () => checkPkgUpdate,
|
|
11503
|
+
checkPort: () => checkPort,
|
|
11459
11504
|
errorToString: () => errorToString,
|
|
11460
11505
|
exec: () => exec,
|
|
11461
11506
|
ffmpeg: () => ffmpeg,
|
|
@@ -11482,6 +11527,10 @@ __export(system_exports, {
|
|
|
11482
11527
|
isMac: () => isMac,
|
|
11483
11528
|
isRoot: () => isRoot,
|
|
11484
11529
|
isWin: () => isWin2,
|
|
11530
|
+
killApp: () => killApp,
|
|
11531
|
+
lock: () => lock,
|
|
11532
|
+
lockMethod: () => lockMethod,
|
|
11533
|
+
lockProp: () => lockProp,
|
|
11485
11534
|
restart: () => restart,
|
|
11486
11535
|
restartDirect: () => restartDirect,
|
|
11487
11536
|
satisfies: () => satisfies,
|
|
@@ -11490,7 +11539,8 @@ __export(system_exports, {
|
|
|
11490
11539
|
updateAllPkg: () => updateAllPkg,
|
|
11491
11540
|
updateGitPlugin: () => updateGitPlugin,
|
|
11492
11541
|
updatePkg: () => updatePkg,
|
|
11493
|
-
uptime: () => uptime
|
|
11542
|
+
uptime: () => uptime,
|
|
11543
|
+
waitPort: () => waitPort
|
|
11494
11544
|
});
|
|
11495
11545
|
var init_system2 = __esm({
|
|
11496
11546
|
"src/utils/system/index.ts"() {
|
|
@@ -11500,8 +11550,10 @@ var init_system2 = __esm({
|
|
|
11500
11550
|
init_time();
|
|
11501
11551
|
init_class();
|
|
11502
11552
|
init_error();
|
|
11553
|
+
init_port();
|
|
11503
11554
|
init_ffmpeg();
|
|
11504
11555
|
init_import();
|
|
11556
|
+
init_lock();
|
|
11505
11557
|
init_system();
|
|
11506
11558
|
init_update();
|
|
11507
11559
|
init_restart();
|
|
@@ -16337,14 +16389,6 @@ var init_string = __esm({
|
|
|
16337
16389
|
}
|
|
16338
16390
|
});
|
|
16339
16391
|
|
|
16340
|
-
// src/utils/common/sleep.ts
|
|
16341
|
-
var sleep;
|
|
16342
|
-
var init_sleep = __esm({
|
|
16343
|
-
"src/utils/common/sleep.ts"() {
|
|
16344
|
-
sleep = (ms2) => new Promise((resolve) => setTimeout(resolve, ms2));
|
|
16345
|
-
}
|
|
16346
|
-
});
|
|
16347
|
-
|
|
16348
16392
|
// src/utils/common/uptime.ts
|
|
16349
16393
|
var uptime2;
|
|
16350
16394
|
var init_uptime = __esm({
|
|
@@ -17789,37 +17833,6 @@ var init_file2 = __esm({
|
|
|
17789
17833
|
};
|
|
17790
17834
|
}
|
|
17791
17835
|
});
|
|
17792
|
-
var checkPort, waitPort;
|
|
17793
|
-
var init_port = __esm({
|
|
17794
|
-
"src/utils/system/port.ts"() {
|
|
17795
|
-
init_sleep();
|
|
17796
|
-
checkPort = (port2) => {
|
|
17797
|
-
return new Promise((resolve) => {
|
|
17798
|
-
const server2 = createServer$1();
|
|
17799
|
-
server2.once("error", () => {
|
|
17800
|
-
server2.close();
|
|
17801
|
-
resolve(false);
|
|
17802
|
-
});
|
|
17803
|
-
server2.once("listening", () => {
|
|
17804
|
-
server2.close();
|
|
17805
|
-
resolve(true);
|
|
17806
|
-
});
|
|
17807
|
-
server2.listen(port2, "127.0.0.1");
|
|
17808
|
-
});
|
|
17809
|
-
};
|
|
17810
|
-
waitPort = async (port2, maxAttempts = 30, interval = 1e3) => {
|
|
17811
|
-
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
17812
|
-
const available = await checkPort(port2);
|
|
17813
|
-
if (available) {
|
|
17814
|
-
return true;
|
|
17815
|
-
}
|
|
17816
|
-
logger.debug(`\u7AEF\u53E3 ${port2} \u88AB\u5360\u7528\uFF0C\u7B49\u5F85\u91CA\u653E... (${attempt + 1}/${maxAttempts})`);
|
|
17817
|
-
await sleep(interval);
|
|
17818
|
-
}
|
|
17819
|
-
return false;
|
|
17820
|
-
};
|
|
17821
|
-
}
|
|
17822
|
-
});
|
|
17823
17836
|
|
|
17824
17837
|
// src/server/router/router.ts
|
|
17825
17838
|
var BASE_ROUTER, LOGIN_ROUTER, REFRESH_ROUTER, GET_CONFIG_ROUTER, SAVE_CONFIG_ROUTER, GET_LOG_ROUTER, SET_LOG_LEVEL_ROUTER, GET_LOG_FILE_LIST_ROUTER, GET_LOG_FILE_ROUTER, EXIT_ROUTER, RESTART_ROUTER, GET_NETWORK_STATUS_ROUTER, UPDATE_CORE_ROUTER, GET_BOTS_ROUTER, CONSOLE_ROUTER, PING_ROUTER, SYSTEM_STATUS_ROUTER, SYSTEM_INFO_ROUTER, SYSTEM_STATUS_WS_ROUTER, SYSTEM_STATUS_KARIN_ROUTER, GET_ONLINE_PLUGIN_LIST_ROUTER, GET_PLUGIN_LIST_ROUTER, GET_PLUGIN_APPS_ROUTER, GET_PLUGIN_FILE_ROUTER, GET_UPDATABLE_PLUGINS_ROUTER, BATCH_UPDATE_PLUGINS_ROUTER, GET_PLUGIN_CONFIG_ROUTER, SAVE_PLUGIN_CONFIG_ROUTER, IS_PLUGIN_CONFIG_EXIST_ROUTER, UPDATE_PLUGIN_ROUTER, INSTALL_PLUGIN_ROUTER, UNINSTALL_PLUGIN_ROUTER, GET_TASK_STATUS_ROUTER, GET_TASK_LIST_ROUTER, UPDATE_TASK_STATUS_ROUTER, GET_LOCAL_PLUGIN_LIST_ROUTER, CREATE_TERMINAL_ROUTER, GET_TERMINAL_LIST_ROUTER, CLOSE_TERMINAL_ROUTER, CHECK_PLUGIN_ROUTER, INSTALL_WEBUI_PLUGIN_ROUTER, GET_WEBUI_PLUGIN_LIST_ROUTER, UNINSTALL_WEBUI_PLUGIN_ROUTER, GET_WEBUI_PLUGIN_VERSIONS_ROUTER, UPDATE_WEBUI_PLUGIN_VERSION_ROUTER, TASK_LIST_ROUTER, TASK_RUN_ROUTER, TASK_LOGS_ROUTER, TASK_DELETE_ROUTER, PLUGIN_ADMIN_ROUTER, GET_PLUGIN_LIST_PLUGIN_ADMIN_ROUTER, GET_DEPENDENCIES_LIST_ROUTER, MANAGE_DEPENDENCIES_ROUTER, GET_NPMRC_LIST_ROUTER, GET_NPM_CONFIG_ROUTER, GET_NPM_BASE_CONFIG_ROUTER, SAVE_NPMRC_ROUTER, GET_LOADED_COMMAND_PLUGIN_CACHE_LIST_ROUTER, GET_PLUGIN_MARKET_LIST_ROUTER;
|
|
@@ -20740,9 +20753,13 @@ var init_manage = __esm({
|
|
|
20740
20753
|
init_restart();
|
|
20741
20754
|
init_response();
|
|
20742
20755
|
restartRouter = async (req, res) => {
|
|
20743
|
-
|
|
20744
|
-
|
|
20745
|
-
|
|
20756
|
+
try {
|
|
20757
|
+
const { isPm2 = false, reloadDeps = false } = req.body;
|
|
20758
|
+
restartDirect({ isPm2, reloadDeps });
|
|
20759
|
+
createSuccessResponse(res, null, "\u91CD\u542F\u6307\u4EE4\u53D1\u9001\u6210\u529F");
|
|
20760
|
+
} catch (error) {
|
|
20761
|
+
createServerErrorResponse(res, error.message);
|
|
20762
|
+
}
|
|
20746
20763
|
};
|
|
20747
20764
|
exitRouter = async (_req, res) => {
|
|
20748
20765
|
logger.mark("\u6536\u5230\u9000\u51FA\u8BF7\u6C42\uFF0C\u6B63\u5728\u9000\u51FA...");
|
|
@@ -24002,17 +24019,11 @@ var init_input = __esm({
|
|
|
24002
24019
|
}
|
|
24003
24020
|
}
|
|
24004
24021
|
if (text2 === "rs" || text2 === "restart") {
|
|
24005
|
-
process.send(JSON.stringify({
|
|
24006
|
-
type: "restart",
|
|
24007
|
-
port: process.env.HTTP_PORT,
|
|
24008
|
-
token: process.env.HTTP_AUTH_KEY
|
|
24009
|
-
}));
|
|
24022
|
+
process.send(JSON.stringify({ type: "restart" }));
|
|
24010
24023
|
return;
|
|
24011
24024
|
}
|
|
24012
24025
|
if (text2 === "stop") {
|
|
24013
|
-
process.send(JSON.stringify({
|
|
24014
|
-
type: "stop"
|
|
24015
|
-
}));
|
|
24026
|
+
process.send(JSON.stringify({ type: "stop" }));
|
|
24016
24027
|
return;
|
|
24017
24028
|
}
|
|
24018
24029
|
if (text2.startsWith("group")) {
|
|
@@ -24558,9 +24569,9 @@ var initPluginHmr = async () => {
|
|
|
24558
24569
|
return path4.relative(process.cwd(), dir2).replace(/\\/g, "/");
|
|
24559
24570
|
});
|
|
24560
24571
|
watchDirs.clear();
|
|
24561
|
-
logger.info(`
|
|
24572
|
+
relativePaths.length ? logger.info(`
|
|
24562
24573
|
[hmr] ${logger.magenta("\u6B63\u5728\u76D1\u542C\u6587\u4EF6\u5939")}:
|
|
24563
|
-
${relativePaths.join("\n")}`);
|
|
24574
|
+
${relativePaths.join("\n ")}`) : logger.info("[hmr] \u5F53\u524D\u76D1\u542C\u7684\u63D2\u4EF6\u5217\u8868\u4E3A\u7A7A");
|
|
24564
24575
|
};
|
|
24565
24576
|
var handleFileChange = async (file2, action) => {
|
|
24566
24577
|
const ext = path4.extname(file2);
|
|
@@ -25817,4 +25828,4 @@ var start2 = async () => {
|
|
|
25817
25828
|
(*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)
|
|
25818
25829
|
*/
|
|
25819
25830
|
|
|
25820
|
-
export { AdapterBase, BASE_ROUTER, BATCH_UPDATE_PLUGINS_ROUTER, BaseEvent, Bot, CHECK_PLUGIN_ROUTER, CLOSE_TERMINAL_ROUTER, CONSOLE_ROUTER, CREATE_TERMINAL_ROUTER, DirectMessage, EVENT_COUNT, EXIT_ROUTER, FILE_CHANGE, FriendDecreaseNotice, FriendIncreaseNotice, FriendMessage, GET_BOTS_ROUTER, GET_CONFIG_ROUTER, GET_DEPENDENCIES_LIST_ROUTER, GET_LOADED_COMMAND_PLUGIN_CACHE_LIST_ROUTER, GET_LOCAL_PLUGIN_LIST_ROUTER, GET_LOG_FILE_LIST_ROUTER, GET_LOG_FILE_ROUTER, GET_LOG_ROUTER, GET_NETWORK_STATUS_ROUTER, GET_NPMRC_LIST_ROUTER, GET_NPM_BASE_CONFIG_ROUTER, GET_NPM_CONFIG_ROUTER, GET_ONLINE_PLUGIN_LIST_ROUTER, GET_PLUGIN_APPS_ROUTER, GET_PLUGIN_CONFIG_ROUTER, GET_PLUGIN_FILE_ROUTER, GET_PLUGIN_LIST_PLUGIN_ADMIN_ROUTER, GET_PLUGIN_LIST_ROUTER, GET_PLUGIN_MARKET_LIST_ROUTER, GET_TASK_LIST_ROUTER, GET_TASK_STATUS_ROUTER, GET_TERMINAL_LIST_ROUTER, GET_UPDATABLE_PLUGINS_ROUTER, GET_WEBUI_PLUGIN_LIST_ROUTER, GET_WEBUI_PLUGIN_VERSIONS_ROUTER, GroupAdminChangedNotice, GroupApplyRequest, GroupCardChangedNotice, GroupFileUploadedNotice, GroupHlightsChangedNotice, GroupHonorChangedNotice, GroupInviteRequest, GroupLuckKingNotice, GroupMemberBanNotice, GroupMemberDecreaseNotice, GroupMemberIncreaseNotice, GroupMemberTitleUpdatedNotice, GroupMessage, GroupMessageReactionNotice, GroupNotice, GroupPokeNotice, GroupRecallNotice, GroupSignInNotice, GroupTempMessage, GroupWholeBanNotice, GuildMessage, HTTPStatusCode, INSTALL_PLUGIN_ROUTER, INSTALL_WEBUI_PLUGIN_ROUTER, IS_PLUGIN_CONFIG_EXIST_ROUTER, LOGIN_ROUTER, MANAGE_DEPENDENCIES_ROUTER, MessageBase, NoticeBase, OB11ApiAction, OB11Event, OB11MessageSubType, OB11MessageType, OB11NoticeType, OB11RequestType, OB11Sex, PING_ROUTER, PLUGIN_ADMIN_ROUTER, Plugin, PrivateApplyRequest, PrivateFileUploadedNotice, PrivatePokeNotice, PrivateRecallNotice, RECV_MSG, REFRESH_ROUTER, RESTART_ROUTER, ReceiveLikeNotice, Renderer, RequestBase, SAVE_CONFIG_ROUTER, SAVE_NPMRC_ROUTER, SAVE_PLUGIN_CONFIG_ROUTER, SEND_MSG, SET_LOG_LEVEL_ROUTER, SYSTEM_INFO_ROUTER, SYSTEM_STATUS_KARIN_ROUTER, SYSTEM_STATUS_ROUTER, SYSTEM_STATUS_WS_ROUTER, TASK_DELETE_ROUTER, TASK_LIST_ROUTER, TASK_LOGS_ROUTER, TASK_RUN_ROUTER, UNINSTALL_PLUGIN_ROUTER, UNINSTALL_WEBUI_PLUGIN_ROUTER, UPDATE_CORE_ROUTER, UPDATE_PLUGIN_ROUTER, UPDATE_TASK_STATUS_ROUTER, UPDATE_WEBUI_PLUGIN_VERSION_ROUTER, WS_CLOSE, WS_CLOSE_ONEBOT, WS_CLOSE_PUPPETEER, WS_CLOSE_SANDBOX, WS_CONNECTION, WS_CONNECTION_ONEBOT, WS_CONNECTION_PUPPETEER, WS_CONNECTION_SANDBOX, WS_CONNECTION_TERMINAL, WS_SNAPKA, Watch, Watcher, YamlEditor, absPath, accordion, accordionItem, accordionPro, app3 as app, applyComments, authMiddleware, base64, basePath, buffer, buildGithub, buttonHandle, callRender, changelog_exports as changelog, checkGitPluginUpdate, checkPkgUpdate, clearRequire, clearRequireFile, comment, commentPath, common_exports as common, components, config_exports as config, configPath, consolePath, contact2 as contact, contactDirect, contactFriend, contactGroup, contactGroupTemp, contactGuild, copyConfig, copyConfigSync, copyFiles, copyFilesSync, createAccessTokenExpiredResponse, createBadRequestResponse, createClient2 as createClient, createDirectMessage, createForbiddenResponse, createFriendDecreaseNotice, createFriendIncreaseNotice, createFriendMessage, createGroupAdminChangedNotice, createGroupApplyRequest, createGroupCardChangedNotice, createGroupFileUploadedNotice, createGroupHlightsChangedNotice, createGroupHonorChangedNotice, createGroupInviteRequest, createGroupLuckKingNotice, createGroupMemberAddNotice, createGroupMemberBanNotice, createGroupMemberDelNotice, createGroupMemberTitleUpdatedNotice, createGroupMessage, createGroupMessageReactionNotice, createGroupPokeNotice, createGroupRecallNotice, createGroupSignInNotice, createGroupTempMessage, createGroupWholeBanNotice, createGuildMessage, createHttp, createINIParser, createMethodNotAllowedResponse, createNotFoundResponse, createPayloadTooLargeResponse, createPluginDir, createPrivateApplyRequest, createPrivateFileUploadedNotice, createPrivatePokeNotice, createPrivateRecallNotice, createRawMessage, createReceiveLikeNotice, createRefreshTokenExpiredResponse, createResponse, createServerErrorResponse, createSuccessResponse, createTaskDatabase, createUnauthorizedResponse, cron, dataPath, db, dbPath, debug2 as debug, karin as default, defaultConfigPath, defaultViewPath, defineConfig, divider, downFile, downloadFile, errorToString, exec, executeTask, existToMkdir, existToMkdirSync, exists, existsSync, ffmpeg, ffplay, ffprobe, fs_exports as file, fileToUrl, fileToUrlHandlerKey, filesByExt, formatPath, formatTime, fs_exports2 as fs, getAllBot, getAllBotID, getAllBotList, getAllFiles, getAllFilesSync, getBot, getBotCount, getCommit, getDefaultBranch, getFastGithub, getFastRegistry, getFiles, getHash, getLocalBranches, getLocalCommitHash, getMimeType, getPackageJson, getPid, getPkgVersion, getPluginInfo, getPlugins, getRelPath, getRemoteBranches, getRemoteCommitHash, getRemotePkgVersion, getRender, getRenderCount, getRenderList, getRequestIp, getTaskCallback, getTaskDatabase, getTime, gitPull, handler, hooks, htmlPath, importModule, ini, initOneBot, initTaskSystem, input, isClass, isDir, isDirSync, isDocker, isFile, isFileSync, isIPv4Loop, isIPv6Loop, isLinux, isLocalRequest, isLoopback, isMac, isPackaged, isPathEqual, isPkg, isPlugin, isPublic, isRoot, isSubPath, isWin2 as isWin, json, karin, karinDir, karinMain, karinPathBase, karinPathComment, karinPathConfig, karinPathConsole, karinPathData, karinPathDb, karinPathDefaultConfig, karinPathDefaultView, karinPathHtml, karinPathKv, karinPathLogs, karinPathMain, karinPathPlugins, karinPathPm2Config, karinPathRedisSqlite3, karinPathResource, karinPathRoot, karinPathSandboxData, karinPathSandboxTemp, karinPathTaskDb, karinPathTemp, karinToQQBot, key_exports as key, kvPath, lock, lockMethod, lockProp, log, logger2 as logger, logs, logsPath, makeForward, makeMessage, mkdir, mkdirSync, parseChangelog, parseGithubUrl, pingRequest, pkgRoot, pluginDir, pm2Path, qqbotToKarin, raceRequest, randomStr, range, read, readFile, readJson, readJsonSync, redis2 as redis, redisSqlite3Path, registerBot, registerRender, removeTaskCallback, render, renderHtml, renderMultiHtml, renderTpl, requireFile, requireFileSync, resourcePath, restart, restartDirect, rmSync, router, sandboxDataPath, sandboxTempPath, satisfies, save, segment_exports as segment, sendMsg2 as sendMsg, sender, senderDirect, senderFriend, senderGroup, senderGroupTemp, senderGuild, sep, server, setTaskCallback, setTaskDatabase, splitPath, start2 as start, stream, stringifyError, switchComponent, system_exports as system, taskAdd, taskExists, taskGet, taskList, taskSystem, taskUpdateLogs, taskUpdateStatus, tempPath, unregisterBot, unregisterRender, updateAllGitPlugin, updateAllPkg, updateGitPlugin, updatePkg, updateTaskLogs, updateTaskStatus, uptime, urlToPath, watch, watchAndMerge, write, writeJson, writeJsonSync, yaml3 as yaml };
|
|
25831
|
+
export { AdapterBase, BASE_ROUTER, BATCH_UPDATE_PLUGINS_ROUTER, BaseEvent, Bot, CHECK_PLUGIN_ROUTER, CLOSE_TERMINAL_ROUTER, CONSOLE_ROUTER, CREATE_TERMINAL_ROUTER, DirectMessage, EVENT_COUNT, EXIT_ROUTER, FILE_CHANGE, FriendDecreaseNotice, FriendIncreaseNotice, FriendMessage, GET_BOTS_ROUTER, GET_CONFIG_ROUTER, GET_DEPENDENCIES_LIST_ROUTER, GET_LOADED_COMMAND_PLUGIN_CACHE_LIST_ROUTER, GET_LOCAL_PLUGIN_LIST_ROUTER, GET_LOG_FILE_LIST_ROUTER, GET_LOG_FILE_ROUTER, GET_LOG_ROUTER, GET_NETWORK_STATUS_ROUTER, GET_NPMRC_LIST_ROUTER, GET_NPM_BASE_CONFIG_ROUTER, GET_NPM_CONFIG_ROUTER, GET_ONLINE_PLUGIN_LIST_ROUTER, GET_PLUGIN_APPS_ROUTER, GET_PLUGIN_CONFIG_ROUTER, GET_PLUGIN_FILE_ROUTER, GET_PLUGIN_LIST_PLUGIN_ADMIN_ROUTER, GET_PLUGIN_LIST_ROUTER, GET_PLUGIN_MARKET_LIST_ROUTER, GET_TASK_LIST_ROUTER, GET_TASK_STATUS_ROUTER, GET_TERMINAL_LIST_ROUTER, GET_UPDATABLE_PLUGINS_ROUTER, GET_WEBUI_PLUGIN_LIST_ROUTER, GET_WEBUI_PLUGIN_VERSIONS_ROUTER, GroupAdminChangedNotice, GroupApplyRequest, GroupCardChangedNotice, GroupFileUploadedNotice, GroupHlightsChangedNotice, GroupHonorChangedNotice, GroupInviteRequest, GroupLuckKingNotice, GroupMemberBanNotice, GroupMemberDecreaseNotice, GroupMemberIncreaseNotice, GroupMemberTitleUpdatedNotice, GroupMessage, GroupMessageReactionNotice, GroupNotice, GroupPokeNotice, GroupRecallNotice, GroupSignInNotice, GroupTempMessage, GroupWholeBanNotice, GuildMessage, HTTPStatusCode, INSTALL_PLUGIN_ROUTER, INSTALL_WEBUI_PLUGIN_ROUTER, IS_PLUGIN_CONFIG_EXIST_ROUTER, LOGIN_ROUTER, MANAGE_DEPENDENCIES_ROUTER, MessageBase, NoticeBase, OB11ApiAction, OB11Event, OB11MessageSubType, OB11MessageType, OB11NoticeType, OB11RequestType, OB11Sex, PING_ROUTER, PLUGIN_ADMIN_ROUTER, Plugin, PrivateApplyRequest, PrivateFileUploadedNotice, PrivatePokeNotice, PrivateRecallNotice, RECV_MSG, REFRESH_ROUTER, RESTART_ROUTER, ReceiveLikeNotice, Renderer, RequestBase, SAVE_CONFIG_ROUTER, SAVE_NPMRC_ROUTER, SAVE_PLUGIN_CONFIG_ROUTER, SEND_MSG, SET_LOG_LEVEL_ROUTER, SYSTEM_INFO_ROUTER, SYSTEM_STATUS_KARIN_ROUTER, SYSTEM_STATUS_ROUTER, SYSTEM_STATUS_WS_ROUTER, TASK_DELETE_ROUTER, TASK_LIST_ROUTER, TASK_LOGS_ROUTER, TASK_RUN_ROUTER, UNINSTALL_PLUGIN_ROUTER, UNINSTALL_WEBUI_PLUGIN_ROUTER, UPDATE_CORE_ROUTER, UPDATE_PLUGIN_ROUTER, UPDATE_TASK_STATUS_ROUTER, UPDATE_WEBUI_PLUGIN_VERSION_ROUTER, WS_CLOSE, WS_CLOSE_ONEBOT, WS_CLOSE_PUPPETEER, WS_CLOSE_SANDBOX, WS_CONNECTION, WS_CONNECTION_ONEBOT, WS_CONNECTION_PUPPETEER, WS_CONNECTION_SANDBOX, WS_CONNECTION_TERMINAL, WS_SNAPKA, Watch, Watcher, YamlEditor, absPath, accordion, accordionItem, accordionPro, app3 as app, applyComments, authMiddleware, base64, basePath, buffer, buildGithub, buttonHandle, callRender, changelog_exports as changelog, checkGitPluginUpdate, checkPkgUpdate, checkPort, clearRequire, clearRequireFile, comment, commentPath, common_exports as common, components, config_exports as config, configPath, consolePath, contact2 as contact, contactDirect, contactFriend, contactGroup, contactGroupTemp, contactGuild, copyConfig, copyConfigSync, copyFiles, copyFilesSync, createAccessTokenExpiredResponse, createBadRequestResponse, createClient2 as createClient, createDirectMessage, createForbiddenResponse, createFriendDecreaseNotice, createFriendIncreaseNotice, createFriendMessage, createGroupAdminChangedNotice, createGroupApplyRequest, createGroupCardChangedNotice, createGroupFileUploadedNotice, createGroupHlightsChangedNotice, createGroupHonorChangedNotice, createGroupInviteRequest, createGroupLuckKingNotice, createGroupMemberAddNotice, createGroupMemberBanNotice, createGroupMemberDelNotice, createGroupMemberTitleUpdatedNotice, createGroupMessage, createGroupMessageReactionNotice, createGroupPokeNotice, createGroupRecallNotice, createGroupSignInNotice, createGroupTempMessage, createGroupWholeBanNotice, createGuildMessage, createHttp, createINIParser, createMethodNotAllowedResponse, createNotFoundResponse, createPayloadTooLargeResponse, createPluginDir, createPrivateApplyRequest, createPrivateFileUploadedNotice, createPrivatePokeNotice, createPrivateRecallNotice, createRawMessage, createReceiveLikeNotice, createRefreshTokenExpiredResponse, createResponse, createServerErrorResponse, createSuccessResponse, createTaskDatabase, createUnauthorizedResponse, cron, dataPath, db, dbPath, debug2 as debug, karin as default, defaultConfigPath, defaultViewPath, defineConfig, divider, downFile, downloadFile, errorToString, exec, executeTask, existToMkdir, existToMkdirSync, exists, existsSync, ffmpeg, ffplay, ffprobe, fs_exports as file, fileToUrl, fileToUrlHandlerKey, filesByExt, formatPath, formatTime, fs_exports2 as fs, getAllBot, getAllBotID, getAllBotList, getAllFiles, getAllFilesSync, getBot, getBotCount, getCommit, getDefaultBranch, getFastGithub, getFastRegistry, getFiles, getHash, getLocalBranches, getLocalCommitHash, getMimeType, getPackageJson, getPid, getPkgVersion, getPluginInfo, getPlugins, getRelPath, getRemoteBranches, getRemoteCommitHash, getRemotePkgVersion, getRender, getRenderCount, getRenderList, getRequestIp, getTaskCallback, getTaskDatabase, getTime, gitPull, handler, hooks, htmlPath, importModule, ini, initOneBot, initTaskSystem, input, isClass, isDir, isDirSync, isDocker, isFile, isFileSync, isIPv4Loop, isIPv6Loop, isLinux, isLocalRequest, isLoopback, isMac, isPackaged, isPathEqual, isPkg, isPlugin, isPublic, isRoot, isSubPath, isWin2 as isWin, json, karin, karinDir, karinMain, karinPathBase, karinPathComment, karinPathConfig, karinPathConsole, karinPathData, karinPathDb, karinPathDefaultConfig, karinPathDefaultView, karinPathHtml, karinPathKv, karinPathLogs, karinPathMain, karinPathPlugins, karinPathPm2Config, karinPathRedisSqlite3, karinPathResource, karinPathRoot, karinPathSandboxData, karinPathSandboxTemp, karinPathTaskDb, karinPathTemp, karinToQQBot, key_exports as key, killApp, kvPath, lock, lockMethod, lockProp, log, logger2 as logger, logs, logsPath, makeForward, makeMessage, mkdir, mkdirSync, parseChangelog, parseGithubUrl, pingRequest, pkgRoot, pluginDir, pm2Path, qqbotToKarin, raceRequest, randomStr, range, read, readFile, readJson, readJsonSync, redis2 as redis, redisSqlite3Path, registerBot, registerRender, removeTaskCallback, render, renderHtml, renderMultiHtml, renderTpl, requireFile, requireFileSync, resourcePath, restart, restartDirect, rmSync, router, sandboxDataPath, sandboxTempPath, satisfies, save, segment_exports as segment, sendMsg2 as sendMsg, sender, senderDirect, senderFriend, senderGroup, senderGroupTemp, senderGuild, sep, server, setTaskCallback, setTaskDatabase, splitPath, start2 as start, stream, stringifyError, switchComponent, system_exports as system, taskAdd, taskExists, taskGet, taskList, taskSystem, taskUpdateLogs, taskUpdateStatus, tempPath, unregisterBot, unregisterRender, updateAllGitPlugin, updateAllPkg, updateGitPlugin, updatePkg, updateTaskLogs, updateTaskStatus, uptime, urlToPath, waitPort, watch, watchAndMerge, write, writeJson, writeJsonSync, yaml3 as yaml };
|
package/dist/start/index.mjs
CHANGED
|
@@ -1,105 +1,258 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
1
2
|
import fs from 'node:fs';
|
|
2
|
-
import net from 'node:net';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
import { fork } from 'node:child_process';
|
|
6
6
|
|
|
7
7
|
// src/start/index.ts
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
8
|
+
var ProcessManager = class {
|
|
9
|
+
/** 是否已经启动 */
|
|
10
|
+
isStarted = false;
|
|
11
|
+
/** 是否正在重启 */
|
|
12
|
+
isRestarting = false;
|
|
13
|
+
/** 子进程实例 */
|
|
14
|
+
childProcess = null;
|
|
15
|
+
/** 重启延迟时间 */
|
|
16
|
+
RESTART_DELAY_MS = 200;
|
|
17
|
+
/** 模块名称 */
|
|
18
|
+
MODULE_NAME = "ProcessManager";
|
|
19
|
+
/** 启动时间 */
|
|
20
|
+
startTime = Date.now();
|
|
21
|
+
/** 进程统计信息 */
|
|
22
|
+
processStats = {
|
|
23
|
+
/** 重启次数 */
|
|
24
|
+
restartCount: 0,
|
|
25
|
+
/** 最后重启时间 */
|
|
26
|
+
lastRestartTime: 0
|
|
27
|
+
};
|
|
28
|
+
// ANSI 颜色代码
|
|
29
|
+
COLORS = {
|
|
30
|
+
green: "\x1B[32m",
|
|
31
|
+
yellow: "\x1B[33m",
|
|
32
|
+
red: "\x1B[31m",
|
|
33
|
+
blue: "\x1B[34m",
|
|
34
|
+
magenta: "\x1B[35m",
|
|
35
|
+
cyan: "\x1B[36m",
|
|
36
|
+
gray: "\x1B[90m",
|
|
37
|
+
reset: "\x1B[0m"
|
|
38
|
+
};
|
|
39
|
+
constructor() {
|
|
40
|
+
process.on("exit", this.stop.bind(this));
|
|
41
|
+
this.logSystemInfo();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 启动子进程
|
|
45
|
+
*/
|
|
46
|
+
start(options = {}) {
|
|
47
|
+
if (this.isAlreadyRunning()) {
|
|
48
|
+
this.log(`\u5B50\u8FDB\u7A0B\u5DF2\u5728\u8FD0\u884C | PID: ${this.childProcess.pid}`);
|
|
49
|
+
return this.childProcess;
|
|
50
|
+
}
|
|
51
|
+
this.isStarted = true;
|
|
52
|
+
const entryPath = this.resolveEntryPath();
|
|
53
|
+
const args = options.reloadDeps ? [`--reload-timestamp=${Date.now()}`] : [];
|
|
54
|
+
this.childProcess = fork(entryPath, args);
|
|
55
|
+
const pid = this.childProcess.pid;
|
|
56
|
+
this.setupEventListeners();
|
|
57
|
+
this.log(`\u542F\u52A8\u5B50\u8FDB\u7A0B | PID: ${pid} | \u5165\u53E3: ${path.basename(entryPath)} | \u53C2\u6570: ${args.join(" ") || "\u65E0"}`);
|
|
58
|
+
return this.childProcess;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 重启子进程
|
|
62
|
+
*/
|
|
63
|
+
async restart(reloadDeps = false) {
|
|
64
|
+
if (!this.childProcess) {
|
|
65
|
+
this.logWarn("\u91CD\u542F\u5931\u8D25 | \u539F\u56E0: \u5B50\u8FDB\u7A0B\u4E0D\u5B58\u5728 | \u64CD\u4F5C: \u76F4\u63A5\u542F\u52A8\u65B0\u8FDB\u7A0B");
|
|
66
|
+
return this.start({ reloadDeps });
|
|
67
|
+
}
|
|
68
|
+
const oldPid = this.childProcess.pid;
|
|
69
|
+
this.isRestarting = true;
|
|
70
|
+
this.processStats.restartCount++;
|
|
71
|
+
this.processStats.lastRestartTime = Date.now();
|
|
72
|
+
this.log(`\u51C6\u5907\u91CD\u542F\u5B50\u8FDB\u7A0B | \u5F53\u524DPID: ${oldPid} | \u91CD\u8F7D\u4F9D\u8D56: ${reloadDeps ? "\u662F" : "\u5426"} | \u91CD\u542F\u6B21\u6570: ${this.processStats.restartCount}`);
|
|
28
73
|
try {
|
|
29
|
-
|
|
74
|
+
await this.terminateChildProcess();
|
|
75
|
+
this.isStarted = false;
|
|
76
|
+
const newChild = this.start({ reloadDeps });
|
|
77
|
+
const duration = Date.now() - this.processStats.lastRestartTime;
|
|
78
|
+
this.log(`\u91CD\u542F\u5B8C\u6210 | \u65E7PID: ${oldPid} | \u65B0PID: ${newChild.pid} | \u8017\u65F6: ${duration}ms`);
|
|
79
|
+
return newChild;
|
|
80
|
+
} catch (error) {
|
|
81
|
+
if (error.code === "ESRCH") {
|
|
82
|
+
this.logWarn(`\u91CD\u542F\u8FC7\u7A0B\u4E2D\u53D1\u73B0\u8FDB\u7A0B\u5DF2\u4E0D\u5B58\u5728 | \u9519\u8BEF\u7801: ${error.code} | \u64CD\u4F5C: \u542F\u52A8\u65B0\u8FDB\u7A0B`);
|
|
83
|
+
this.isStarted = false;
|
|
84
|
+
return this.start({ reloadDeps: true });
|
|
85
|
+
}
|
|
86
|
+
this.logError(`\u91CD\u542F\u5931\u8D25 | \u9519\u8BEF: ${error.message} | \u4EE3\u7801: ${error.code || "\u672A\u77E5"}`);
|
|
87
|
+
return null;
|
|
88
|
+
} finally {
|
|
89
|
+
this.isRestarting = false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 停止子进程并退出父进程
|
|
94
|
+
*/
|
|
95
|
+
stop() {
|
|
96
|
+
if (this.childProcess) {
|
|
97
|
+
const pid = this.childProcess.pid;
|
|
98
|
+
const uptime = this.getProcessUptime();
|
|
99
|
+
this.log(`\u6B63\u5728\u5173\u95ED\u5B50\u8FDB\u7A0B | PID: ${pid} | \u8FD0\u884C\u65F6\u95F4: ${uptime}`);
|
|
100
|
+
this.terminateChildProcess(false);
|
|
101
|
+
this.childProcess = null;
|
|
102
|
+
this.isStarted = false;
|
|
103
|
+
this.isRestarting = false;
|
|
104
|
+
}
|
|
105
|
+
const totalUptime = this.getTotalUptime();
|
|
106
|
+
this.log(`\u7236\u8FDB\u7A0B\u9000\u51FA | \u603B\u8FD0\u884C\u65F6\u95F4: ${totalUptime} | \u91CD\u542F\u6B21\u6570: ${this.processStats.restartCount}`);
|
|
107
|
+
process.exit(0);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 检查子进程是否已经在运行
|
|
111
|
+
*/
|
|
112
|
+
isAlreadyRunning() {
|
|
113
|
+
return this.isStarted && this.childProcess !== null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 设置子进程事件监听器
|
|
117
|
+
*/
|
|
118
|
+
setupEventListeners() {
|
|
119
|
+
if (!this.childProcess) return;
|
|
120
|
+
this.childProcess.on("message", this.handleChildMessage.bind(this));
|
|
121
|
+
this.childProcess.once("exit", this.handleChildExit.bind(this));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 处理子进程发送的消息
|
|
125
|
+
*/
|
|
126
|
+
async handleChildMessage(message) {
|
|
127
|
+
if (typeof message !== "string") return;
|
|
128
|
+
try {
|
|
129
|
+
const { type, reloadDeps } = JSON.parse(message);
|
|
30
130
|
if (type === "restart") {
|
|
31
|
-
|
|
131
|
+
this.log(`\u6536\u5230\u6D88\u606F | \u7C7B\u578B: restart | \u91CD\u8F7D\u4F9D\u8D56: ${reloadDeps ? "\u662F" : "\u5426"}`);
|
|
132
|
+
const child = await this.restart(reloadDeps);
|
|
133
|
+
if (!child) {
|
|
134
|
+
this.logWarn("\u91CD\u542F\u64CD\u4F5C\u5931\u8D25 | \u65E0\u6CD5\u83B7\u53D6\u65B0\u7684\u5B50\u8FDB\u7A0B");
|
|
135
|
+
} else {
|
|
136
|
+
this.childProcess = child;
|
|
137
|
+
}
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (type === "stop") {
|
|
141
|
+
this.log("\u6536\u5230\u6D88\u606F | \u7C7B\u578B: stop | \u64CD\u4F5C: \u505C\u6B62\u8FDB\u7A0B");
|
|
142
|
+
this.stop();
|
|
32
143
|
return;
|
|
33
144
|
}
|
|
34
|
-
|
|
145
|
+
this.logWarn(`\u6536\u5230\u672A\u77E5\u6D88\u606F | \u7C7B\u578B: ${type || "\u672A\u77E5"} | \u5185\u5BB9: ${JSON.stringify(message).substring(0, 100)}`);
|
|
35
146
|
} catch (error) {
|
|
36
|
-
|
|
147
|
+
this.logError(`\u6D88\u606F\u5904\u7406\u9519\u8BEF | \u539F\u59CB\u6D88\u606F: ${String(message).substring(0, 50)}`, error);
|
|
37
148
|
}
|
|
38
|
-
});
|
|
39
|
-
child.once("exit", exit);
|
|
40
|
-
return child;
|
|
41
|
-
};
|
|
42
|
-
var restart = async (port, token, isFetch = true) => {
|
|
43
|
-
if (isFetch) {
|
|
44
|
-
await sendExit(port, token);
|
|
45
|
-
}
|
|
46
|
-
let portAvailable = false;
|
|
47
|
-
const maxTries = 10;
|
|
48
|
-
for (let i = 0; i < maxTries; i++) {
|
|
49
|
-
portAvailable = await checkPort(port);
|
|
50
|
-
if (portAvailable) {
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
await sleep(1e3);
|
|
54
149
|
}
|
|
55
|
-
|
|
56
|
-
|
|
150
|
+
/**
|
|
151
|
+
* 处理子进程退出事件
|
|
152
|
+
*/
|
|
153
|
+
handleChildExit(code, signal) {
|
|
154
|
+
const exitType = signal ? `\u4FE1\u53F7: ${signal}` : `\u9000\u51FA\u7801: ${code ?? "\u672A\u77E5"}`;
|
|
155
|
+
const uptime = this.getProcessUptime();
|
|
156
|
+
this.log(`\u5B50\u8FDB\u7A0B\u9000\u51FA | ${exitType} | \u8FD0\u884C\u65F6\u95F4: ${uptime}`);
|
|
157
|
+
if (!this.isRestarting) {
|
|
158
|
+
this.stop();
|
|
159
|
+
}
|
|
57
160
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
var sendExit = async (port, token) => {
|
|
78
|
-
try {
|
|
79
|
-
const result = await fetch(`http://127.0.0.1:${port}/api/v1/exit`, {
|
|
80
|
-
method: "POST",
|
|
81
|
-
headers: {
|
|
82
|
-
authorization: `Bearer ${token}`
|
|
161
|
+
/**
|
|
162
|
+
* 终止子进程
|
|
163
|
+
*/
|
|
164
|
+
async terminateChildProcess(waitForTermination = true) {
|
|
165
|
+
if (!this.childProcess) return;
|
|
166
|
+
try {
|
|
167
|
+
const pid = this.childProcess.pid;
|
|
168
|
+
this.log(`\u53D1\u9001\u7EC8\u6B62\u4FE1\u53F7 | PID: ${pid} | \u4FE1\u53F7: SIGTERM`);
|
|
169
|
+
this.childProcess.kill("SIGTERM");
|
|
170
|
+
if (waitForTermination) {
|
|
171
|
+
this.log(`\u7B49\u5F85\u8FDB\u7A0B\u7EC8\u6B62 | PID: ${pid} | \u8D85\u65F6: ${this.RESTART_DELAY_MS}ms`);
|
|
172
|
+
await new Promise((resolve) => setTimeout(resolve, this.RESTART_DELAY_MS));
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
if (this.childProcess.pid) {
|
|
176
|
+
this.log(`\u786E\u4FDD\u8FDB\u7A0B\u7EC8\u6B62 | PID: ${pid} | \u53D1\u9001\u5F3A\u5236\u7EC8\u6B62\u4FE1\u53F7`);
|
|
177
|
+
process.kill(this.childProcess.pid);
|
|
178
|
+
}
|
|
179
|
+
} catch {
|
|
83
180
|
}
|
|
84
|
-
}
|
|
85
|
-
if (result.status === 200) {
|
|
86
|
-
console.log(await result.json());
|
|
87
|
-
} else {
|
|
88
|
-
console.log("\u53D1\u9001\u91CD\u542F\u8BF7\u6C42\u5931\u8D25:", result.status);
|
|
181
|
+
} catch {
|
|
89
182
|
}
|
|
90
|
-
await sleep(1e3);
|
|
91
|
-
} catch {
|
|
92
183
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
process.
|
|
184
|
+
/**
|
|
185
|
+
* 解析子进程入口文件路径
|
|
186
|
+
*/
|
|
187
|
+
resolveEntryPath() {
|
|
188
|
+
const currentFilePath = fileURLToPath(import.meta.url);
|
|
189
|
+
const currentDirPath = path.dirname(currentFilePath);
|
|
190
|
+
const isESM = import.meta.url.includes(".mjs");
|
|
191
|
+
const localEntryPath = path.join(currentDirPath, isESM ? "app.mjs" : "app.ts");
|
|
192
|
+
return fs.existsSync(localEntryPath) ? localEntryPath : path.join(process.cwd(), "node_modules", "node-karin", "dist", "start", "app.mjs");
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 获取当前时间戳,格式为 HH:MM:SS.mmm
|
|
196
|
+
*/
|
|
197
|
+
getTimestamp() {
|
|
198
|
+
const now = /* @__PURE__ */ new Date();
|
|
199
|
+
const hours = now.getHours().toString().padStart(2, "0");
|
|
200
|
+
const minutes = now.getMinutes().toString().padStart(2, "0");
|
|
201
|
+
const seconds = now.getSeconds().toString().padStart(2, "0");
|
|
202
|
+
const milliseconds = now.getMilliseconds().toString().padStart(3, "0");
|
|
203
|
+
return `${hours}:${minutes}:${seconds}.${milliseconds}`;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 创建日志前缀
|
|
207
|
+
*/
|
|
208
|
+
createLogPrefix(level) {
|
|
209
|
+
const timestamp = this.getTimestamp();
|
|
210
|
+
const prefix = `[Karin][${timestamp}][${level}]`;
|
|
211
|
+
return `${this.COLORS.green}${prefix}${this.COLORS.reset}`;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* 获取进程运行时间的友好字符串
|
|
215
|
+
*/
|
|
216
|
+
getProcessUptime() {
|
|
217
|
+
if (!this.childProcess?.pid) return "0s";
|
|
218
|
+
const uptime = (Date.now() - this.processStats.lastRestartTime) / 1e3;
|
|
219
|
+
if (uptime < 60) return `${uptime.toFixed(1)}s`;
|
|
220
|
+
if (uptime < 3600) return `${(uptime / 60).toFixed(1)}m`;
|
|
221
|
+
return `${(uptime / 3600).toFixed(1)}h`;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* 获取总运行时间的友好字符串
|
|
225
|
+
*/
|
|
226
|
+
getTotalUptime() {
|
|
227
|
+
const uptime = (Date.now() - this.startTime) / 1e3;
|
|
228
|
+
if (uptime < 60) return `${uptime.toFixed(1)}s`;
|
|
229
|
+
if (uptime < 3600) return `${(uptime / 60).toFixed(1)}m`;
|
|
230
|
+
return `${(uptime / 3600).toFixed(1)}h`;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* 输出系统信息
|
|
234
|
+
*/
|
|
235
|
+
logSystemInfo() {
|
|
236
|
+
const nodeVersion = process.version;
|
|
237
|
+
const platform = `${os.platform()} ${os.release()}`;
|
|
238
|
+
const cpus = os.cpus().length;
|
|
239
|
+
const memory = `${Math.round(os.totalmem() / 1024 / 1024 / 1024)}GB`;
|
|
240
|
+
this.log(`\u7CFB\u7EDF\u4FE1\u606F | Node: ${nodeVersion} | \u5E73\u53F0: ${platform} | CPU\u6838\u5FC3: ${cpus} | \u5185\u5B58: ${memory}`);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* 日志输出方法
|
|
244
|
+
*/
|
|
245
|
+
log(message) {
|
|
246
|
+
console.log(`${this.createLogPrefix("INFO" /* INFO */)} [${this.MODULE_NAME}] ${message}`);
|
|
247
|
+
}
|
|
248
|
+
logWarn(message) {
|
|
249
|
+
console.warn(`${this.createLogPrefix("WARN" /* WARN */)} [${this.MODULE_NAME}] ${message}`);
|
|
250
|
+
}
|
|
251
|
+
logError(message, error) {
|
|
252
|
+
console.error(`${this.createLogPrefix("ERROR" /* ERROR */)} [${this.MODULE_NAME}] ${message}`, error || "");
|
|
102
253
|
}
|
|
254
|
+
// private logDebug(message: string): void {
|
|
255
|
+
// console.debug(`${this.createLogPrefix(LogLevel.DEBUG)} [${this.MODULE_NAME}] ${message}`)
|
|
256
|
+
// }
|
|
103
257
|
};
|
|
104
|
-
|
|
105
|
-
start();
|
|
258
|
+
new ProcessManager().start();
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as t}from"./vendor-react-Nm7PvEim.js";import{P as r}from"./components-DoLdoU3_.js";import"./vendor-others-DBQ8m94B.js";import"./vendor-editor-B8hjWfkw.js";import"./vendor-ui-utils-5rYIvRjL.js";import"./vendor-heroui-LBurlY8q.js";import"./page-dashboard-B89Pi8YU.js";import"./hooks-9NHYpXid.js";import"./utils-CiCAgsgm.js";import"./vendor-visual-CVzPJKGy.js";const x=()=>t.jsx("div",{className:"min-h-screen flex items-center justify-center",children:t.jsx(r,{})});export{x as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{V as p}from"./vendor-react-Nm7PvEim.js";import{
|
|
1
|
+
import{V as p}from"./vendor-react-Nm7PvEim.js";import{a6 as g}from"./components-DoLdoU3_.js";const k=async(t,n,e,r)=>{const{setIsLogModalOpen:i,setTaskId:c,setTaskLogs:o,setTaskName:f}=n;f("更新插件");const a=["开始创建更新任务...",`options: ${JSON.stringify(t)}`];o(a);try{const s=await g(t);if(s.success&&s.taskId)c(s.taskId),o([...a,`
|
|
2
2
|
任务创建成功!`,`任务ID: ${s.taskId}`,"正在连接任务执行日志..."]),i(!0),typeof e=="function"&&e(),typeof r=="function"&&r();else throw new Error(s.message||"未知错误")}catch(s){console.error("更新失败:",s),p.error(`更新失败: ${s.message}`)}};export{k as c};
|
|
Binary file
|
package/dist/web/index.html
CHANGED
|
@@ -14,17 +14,17 @@
|
|
|
14
14
|
content="viewport-fit=cover, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
|
|
15
15
|
name="viewport" />
|
|
16
16
|
<link href="/web/assets/ico/favicon-BoqZd694.ico" rel="icon" />
|
|
17
|
-
<script type="module" crossorigin src="/web/assets/js/entry-
|
|
17
|
+
<script type="module" crossorigin src="/web/assets/js/entry-Cv-Gqd__.js"></script>
|
|
18
18
|
<link rel="modulepreload" crossorigin href="/web/assets/js/vendor-editor-B8hjWfkw.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="/web/assets/js/vendor-others-DBQ8m94B.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/web/assets/js/vendor-ui-utils-5rYIvRjL.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/web/assets/js/vendor-react-Nm7PvEim.js">
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/web/assets/js/vendor-heroui-
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/web/assets/js/hooks-
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/web/assets/js/vendor-heroui-LBurlY8q.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/web/assets/js/hooks-9NHYpXid.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/web/assets/js/vendor-visual-CVzPJKGy.js">
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/web/assets/js/components-
|
|
26
|
-
<link rel="modulepreload" crossorigin href="/web/assets/js/utils-
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/web/assets/js/page-dashboard-
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/web/assets/js/components-DoLdoU3_.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/web/assets/js/utils-CiCAgsgm.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/web/assets/js/page-dashboard-B89Pi8YU.js">
|
|
28
28
|
<link rel="stylesheet" crossorigin href="/web/assets/css/vendor-editor-CFbL2ovg.css">
|
|
29
29
|
<link rel="stylesheet" crossorigin href="/web/assets/css/vendor-others-ZgkIHsf0.css">
|
|
30
30
|
<link rel="stylesheet" crossorigin href="/web/assets/css/components-ep7vm38G.css">
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t}from"./vendor-react-Nm7PvEim.js";import{P as r}from"./components-CPNNGkNi.js";import"./vendor-others-DBQ8m94B.js";import"./vendor-editor-B8hjWfkw.js";import"./vendor-ui-utils-5rYIvRjL.js";import"./vendor-heroui-4BnFpRmu.js";import"./page-dashboard-CPp-Yb1A.js";import"./hooks-DBHKB0Wu.js";import"./utils-4g0tXjXS.js";import"./vendor-visual-CVzPJKGy.js";const x=()=>t.jsx("div",{className:"min-h-screen flex items-center justify-center",children:t.jsx(r,{})});export{x as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|