node-karin 1.8.12 → 1.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +95 -0
  3. package/dist/index.d.ts +7 -2
  4. package/dist/index.mjs +21 -7
  5. package/dist/web/assets/js/components-9RKTV4LX.js.br +0 -0
  6. package/dist/web/assets/js/entry-CzDSdA4M.js.br +0 -0
  7. package/dist/web/assets/js/hooks-D65eaS4p.js.br +0 -0
  8. package/dist/web/assets/js/page-404.tsx-BNti6Z2J.js +1 -0
  9. package/dist/web/assets/js/page-dashboard-BewrlGFW.js.br +0 -0
  10. package/dist/web/assets/js/page-loading.tsx-CJaYj8cR.js.br +0 -0
  11. package/dist/web/assets/js/page-login.tsx-DkO-XzeU.js.br +0 -0
  12. package/dist/web/assets/js/{utils-BuR6hXd1.js → utils-DqFE1yN-.js} +1 -1
  13. package/dist/web/assets/js/vendor-heroui-WfpTlnyv.js.br +0 -0
  14. package/dist/web/assets/js/vendor-others-B6NXaB-r.js.br +0 -0
  15. package/dist/web/assets/js/vendor-react-Hg1DVPZt.js.br +0 -0
  16. package/dist/web/assets/js/vendor-visual-mzxhMYK3.js.br +0 -0
  17. package/dist/web/index.html +9 -9
  18. package/package.json +1 -1
  19. package/dist/web/assets/js/components-xTgkEKOh.js.br +0 -0
  20. package/dist/web/assets/js/entry-DDp2aDp1.js.br +0 -0
  21. package/dist/web/assets/js/hooks-BVOSuufY.js.br +0 -0
  22. package/dist/web/assets/js/page-404.tsx-CQfJwMNP.js +0 -1
  23. package/dist/web/assets/js/page-dashboard-Cg6WjwPD.js.br +0 -0
  24. package/dist/web/assets/js/page-loading.tsx-DU5QaX5f.js.br +0 -0
  25. package/dist/web/assets/js/page-login.tsx-C_MXRUuZ.js.br +0 -0
  26. package/dist/web/assets/js/vendor-heroui-Blyb7kuN.js.br +0 -0
  27. package/dist/web/assets/js/vendor-others-CpZ3FDDG.js.br +0 -0
  28. package/dist/web/assets/js/vendor-react-Z2UfPrqC.js.br +0 -0
  29. package/dist/web/assets/js/vendor-visual-DQREh7WM.js.br +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # 更新日志
2
2
 
3
+ ## [1.8.13](https://github.com/KarinJS/Karin/compare/core-v1.8.12...core-v1.8.13) (2025-05-09)
4
+
5
+
6
+ ### 🐛 Bug Fixes
7
+
8
+ * clearCache ([#418](https://github.com/KarinJS/Karin/issues/418)) ([652b8fd](https://github.com/KarinJS/Karin/commit/652b8fdd65bf461fbbe85c3ba7b4dfc948cce915))
9
+ * restart ([#415](https://github.com/KarinJS/Karin/issues/415)) ([790ccdd](https://github.com/KarinJS/Karin/commit/790ccddf3c09ef1c91e5b344d3ff9afa7d116e8e))
10
+
11
+
12
+ ### 🎡 Continuous Integration
13
+
14
+ * ban publish-minimal-repro ([#417](https://github.com/KarinJS/Karin/issues/417)) ([6ddcf80](https://github.com/KarinJS/Karin/commit/6ddcf803c99bac68662dbd95902f02bc8b6078cd))
15
+
3
16
  ## [1.8.12](https://github.com/KarinJS/Karin/compare/core-v1.8.11...core-v1.8.12) (2025-05-08)
4
17
 
5
18
 
package/README.md ADDED
@@ -0,0 +1,95 @@
1
+ ![karin](https://socialify.git.ci/karinjs/karin/image?description=1&font=Bitter&forks=1&issues=1&language=1&logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F162426977%3Fs%3D200%26v%3D4&name=1&owner=1&pulls=1&stargazers=1&theme=Auto)
2
+
3
+ ## 项目介绍
4
+
5
+ `karin`(卡琳)是一款灵活、现代、极易扩展的 Node.js 插件化应用框架,专为开发者打造,助你轻松构建属于自己的高效工具链和自动化服务。
6
+
7
+ ✨ **主要特性**:
8
+ - 插件化架构,支持热插拔,生态丰富
9
+ - 一行命令即可初始化项目,快速上手
10
+ - 丰富的 Web UI(基于 React + HeroUI),颜值与功能并存
11
+ - 支持多种自动化场景、任务调度、依赖管理
12
+ - 轻松集成第三方服务,打造属于你的"数字助理"
13
+ - 社区活跃,持续更新,文档完善
14
+
15
+ > 🦄 让开发变得像魔法一样有趣!
16
+
17
+ ## 🚀 稳定长期维护
18
+
19
+ 自 `1.8.0` 版本起,Karin 已进入**稳定长期维护阶段**。我们承诺持续修复 bug、优化体验,并欢迎社区力量共同完善生态。
20
+
21
+ ## 快速开始
22
+
23
+ [📚 查看最新文档](https://karin.fun/)
24
+
25
+ 一键初始化:`pnpm create karin`
26
+
27
+ > 当前文档可能存在滞后性,欢迎加入交流群(967068507)一起玩耍、提建议!
28
+
29
+ ## 温馨提示
30
+
31
+ > Karin 现已稳定,放心食用!遇到问题欢迎提 Issue 或加群讨论,我们会持续优化。
32
+
33
+ ## 文档站说明
34
+
35
+ 我们提供多个文档站点供您访问,解决可能出现的访问困难:
36
+
37
+ - **主文档站**: [https://karin.fun](https://karin.fun) (基于 GitHub Pages)
38
+ - **镜像站点**:
39
+ - 憨憨镜像: [https://karin.hanhanz.top](https://karin.hanhanz.top) (**推荐访问**)
40
+ - Vercel 镜像: [https://docs.karin.fun](https://docs.karin.fun) (**推荐访问**)
41
+ - Deno 镜像: [https://karin.deno.dev](https://karin.deno.dev) (**推荐访问**)
42
+
43
+ > 💡 主文档站托管在 GitHub 上,如访问不畅,推荐使用 Deno 镜像站
44
+
45
+ ## 鸣谢
46
+
47
+ - webui: [bietiaop](https://github.com/bietiaop)
48
+ - docs: [ikenxuan](https://github.com/ikenxuan)
49
+ - name: [fuqiuluo](https://github.com/fuqiuluo)
50
+
51
+ > 🧙‍♂️ 感谢三位大佬的魔法加持!
52
+
53
+ ### 贡献者
54
+
55
+ > 🌟 星光闪烁,你们的智慧如同璀璨的夜空。感谢所有为 **Karin** 做出贡献的人!
56
+
57
+ [![贡献者](https://contributors-img.web.app/image?repo=KarinJS/Karin)](https://github.com/KarinJS/Karin/graphs/contributors)
58
+
59
+ ![Alt](https://repobeats.axiom.co/api/embed/aaaa2759c8885691443a4d80e5753f975d4f250e.svg "Repobeats analytics image")
60
+
61
+ ---
62
+
63
+ 🎉 **加入我们,让 Karin 成为你开发路上的贴心伙伴!**
64
+
65
+ ## 常见问题
66
+
67
+ - 文档没看懂?[点我提问](https://github.com/KarinJS/Karin/issues) 或加群 967068507
68
+ - 插件不会写?欢迎参考[插件开发文档](https://karin.fun/plugins/)
69
+ - 遇到 bug?大胆提 Issue,我们超快响应!
70
+
71
+ ## 如何参与贡献(PR)
72
+
73
+ 1. Fork 本仓库,创建你的分支
74
+ 2. 提交你的更改,附上简要说明
75
+ 3. 发起 Pull Request,耐心等待 Review
76
+ 4. 你的名字将出现在贡献者列表,收获一份开源荣誉!
77
+
78
+ > 💡 欢迎任何形式的贡献,无论是代码、文档、建议还是灵感!
79
+
80
+ ## Issue 指南
81
+
82
+ - 提交前请先搜索是否有类似问题
83
+ - 尽量提供详细的复现步骤、环境信息和截图
84
+ - 标题简明扼要,正文描述清晰
85
+ - 遇到安全相关问题请私信维护者
86
+
87
+ ## 开源协议
88
+
89
+ 本项目基于 [MIT License](./LICENSE) 开源,欢迎自由使用、修改和分发。
90
+
91
+ > 📢 记得给个 Star 支持我们,你的支持是我们最大的动力!
92
+
93
+ ## 更新日志
94
+
95
+ 我们定期发布更新,查看 [CHANGELOG](https://github.com/KarinJS/Karin/releases) 了解最新变化。
package/dist/index.d.ts CHANGED
@@ -12115,8 +12115,11 @@ declare const createCount: () => Record<string, {
12115
12115
  declare const getCacheCfg: <T>(cache: Record<string, T>, count: ReturnType<typeof createCount>, keys: string[]) => T;
12116
12116
  /**
12117
12117
  * 定时清理缓存
12118
+ * @param data 数据
12119
+ * @param count 计数器
12120
+ * @param cache 缓存
12118
12121
  */
12119
- declare const clearCache: <T>(count: ReturnType<typeof createCount>, cache: Record<string, T>) => void;
12122
+ declare const clearCache: <T extends GroupsObjectValue | PrivatesObjectValue>(data: Record<string, T>, count: ReturnType<typeof createCount>, cache: Record<string, T>) => void;
12120
12123
 
12121
12124
  /**
12122
12125
  * @description 默认配置
@@ -12270,7 +12273,9 @@ declare const writeEnv: (data: {
12270
12273
  * @description 获取群聊、频道配置
12271
12274
  * @returns 群聊、频道配置
12272
12275
  */
12273
- declare const groups: () => Record<string, GroupsObjectValue>;
12276
+ declare const groups: () => {
12277
+ get: () => Record<string, GroupsObjectValue>;
12278
+ };
12274
12279
  /**
12275
12280
  * @public 公开Api
12276
12281
  * @description 获取指定群聊配置
package/dist/index.mjs CHANGED
@@ -3247,10 +3247,14 @@ var init_tools = __esm({
3247
3247
  });
3248
3248
  return cache12.default;
3249
3249
  };
3250
- clearCache = (count3, cache12) => {
3250
+ clearCache = (data, count3, cache12) => {
3251
3251
  setInterval(() => {
3252
3252
  Object.keys(count3).forEach((key) => {
3253
3253
  if (count3[key].count - count3[key].start < 10) {
3254
+ if (data[key]) {
3255
+ delete count3[key];
3256
+ return;
3257
+ }
3254
3258
  delete count3[key];
3255
3259
  delete cache12[key];
3256
3260
  } else {
@@ -11173,7 +11177,11 @@ var init_restart = __esm({
11173
11177
  const db2 = await createDB2();
11174
11178
  await db2.set(key, options);
11175
11179
  if (isFront && process.send) {
11176
- process.send("restart");
11180
+ process.send(JSON.stringify({
11181
+ type: "restart",
11182
+ port: process.env.HTTP_PORT,
11183
+ token: process.env.HTTP_AUTH_KEY
11184
+ }));
11177
11185
  return { status: "success", data: "\u5DF2\u53D1\u9001\u91CD\u542F\u4FE1\u53F7" };
11178
11186
  }
11179
11187
  if (process.env.PM2_RESTART === "true") process.exit();
@@ -16702,16 +16710,21 @@ var init_groups4 = __esm({
16702
16710
  const name = "groups.json";
16703
16711
  const file = `${dir2}/${name}`;
16704
16712
  const data = requireFileSync(file, { type: "json" });
16705
- cache8 = isOld(data) ? migrate(file, data) : format2(data);
16713
+ const DATA = isOld(data) ? migrate(file, data) : format2(data);
16714
+ cache8 = DATA;
16706
16715
  watch(file, async (old, data2) => {
16707
16716
  cache8 = format2(data2);
16708
16717
  const options = { file: name, old, data: cache8 };
16709
16718
  listeners.emit(FILE_CHANGE, options);
16710
16719
  listeners.emit(`${FILE_CHANGE}:${name}`, options);
16711
16720
  }, { type: "json" });
16712
- clearCache(count, cache8);
16721
+ clearCache(DATA, count, cache8);
16722
+ };
16723
+ groups = () => {
16724
+ return {
16725
+ get: () => cache8
16726
+ };
16713
16727
  };
16714
- groups = () => cache8;
16715
16728
  getGroupCfg = (groupId, selfId) => {
16716
16729
  const keys = [
16717
16730
  `Bot:${selfId}:${groupId}`,
@@ -16778,14 +16791,15 @@ var init_privates = __esm({
16778
16791
  const name = "privates.json";
16779
16792
  const file = `${dir2}/${name}`;
16780
16793
  const data = requireFileSync(file, { type: "json" });
16781
- cache9 = isOld2(data) ? migrate2(file, data) : format3(data);
16794
+ const DATA = isOld2(data) ? migrate2(file, data) : format3(data);
16795
+ cache9 = DATA;
16782
16796
  watch(file, async (old, data2) => {
16783
16797
  cache9 = format3(data2);
16784
16798
  const options = { file: name, old, data: cache9 };
16785
16799
  listeners.emit(FILE_CHANGE, options);
16786
16800
  listeners.emit(`${FILE_CHANGE}:${name}`, options);
16787
16801
  }, { type: "json" });
16788
- clearCache(count2, cache9);
16802
+ clearCache(DATA, count2, cache9);
16789
16803
  };
16790
16804
  privates = () => cache9;
16791
16805
  getFriendCfg = (userId, selfId) => {
@@ -0,0 +1 @@
1
+ import{j as t}from"./vendor-react-Hg1DVPZt.js";import{P as r}from"./components-9RKTV4LX.js";import"./vendor-others-B6NXaB-r.js";import"./vendor-editor-B8hjWfkw.js";import"./vendor-ui-utils-5rYIvRjL.js";import"./vendor-heroui-WfpTlnyv.js";import"./page-dashboard-BewrlGFW.js";import"./hooks-D65eaS4p.js";import"./utils-DqFE1yN-.js";import"./vendor-visual-mzxhMYK3.js";const x=()=>t.jsx("div",{className:"min-h-screen flex items-center justify-center",children:t.jsx(r,{})});export{x as default};
@@ -1,2 +1,2 @@
1
- import{V as p}from"./vendor-react-Z2UfPrqC.js";import{a5 as g}from"./components-xTgkEKOh.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,`
1
+ import{V as p}from"./vendor-react-Hg1DVPZt.js";import{a5 as g}from"./components-9RKTV4LX.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};
@@ -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-DDp2aDp1.js"></script>
17
+ <script type="module" crossorigin src="/web/assets/js/entry-CzDSdA4M.js"></script>
18
18
  <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-editor-B8hjWfkw.js">
19
- <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-others-CpZ3FDDG.js">
19
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-others-B6NXaB-r.js">
20
20
  <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-ui-utils-5rYIvRjL.js">
21
- <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-react-Z2UfPrqC.js">
22
- <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-heroui-Blyb7kuN.js">
23
- <link rel="modulepreload" crossorigin href="/web/assets/js/hooks-BVOSuufY.js">
24
- <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-visual-DQREh7WM.js">
25
- <link rel="modulepreload" crossorigin href="/web/assets/js/components-xTgkEKOh.js">
26
- <link rel="modulepreload" crossorigin href="/web/assets/js/utils-BuR6hXd1.js">
27
- <link rel="modulepreload" crossorigin href="/web/assets/js/page-dashboard-Cg6WjwPD.js">
21
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-react-Hg1DVPZt.js">
22
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-heroui-WfpTlnyv.js">
23
+ <link rel="modulepreload" crossorigin href="/web/assets/js/hooks-D65eaS4p.js">
24
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-visual-mzxhMYK3.js">
25
+ <link rel="modulepreload" crossorigin href="/web/assets/js/components-9RKTV4LX.js">
26
+ <link rel="modulepreload" crossorigin href="/web/assets/js/utils-DqFE1yN-.js">
27
+ <link rel="modulepreload" crossorigin href="/web/assets/js/page-dashboard-BewrlGFW.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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-karin",
3
- "version": "1.8.12",
3
+ "version": "1.8.13",
4
4
  "description": "Lightweight, efficient, concise, and stable robot framework.",
5
5
  "keywords": [
6
6
  "node",
@@ -1 +0,0 @@
1
- import{j as t}from"./vendor-react-Z2UfPrqC.js";import{P as r}from"./components-xTgkEKOh.js";import"./vendor-others-CpZ3FDDG.js";import"./vendor-editor-B8hjWfkw.js";import"./vendor-ui-utils-5rYIvRjL.js";import"./vendor-heroui-Blyb7kuN.js";import"./page-dashboard-Cg6WjwPD.js";import"./hooks-BVOSuufY.js";import"./utils-BuR6hXd1.js";import"./vendor-visual-DQREh7WM.js";const x=()=>t.jsx("div",{className:"min-h-screen flex items-center justify-center",children:t.jsx(r,{})});export{x as default};