node-karin 0.12.1 → 0.12.2-5.pr.206.02ba956

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 (256) hide show
  1. package/CHANGELOG.md +1029 -0
  2. package/default/comment/config.json +34 -0
  3. package/default/comment/friendDirect.json +10 -0
  4. package/default/comment/groupGuild.json +11 -0
  5. package/default/comment/server.json +17 -0
  6. package/default/config/adapter.json +28 -0
  7. package/default/config/config.json +45 -0
  8. package/default/config/groups.json +47 -0
  9. package/default/config/groups.yaml +70 -0
  10. package/default/config/pm2.json +16 -0
  11. package/default/config/privates.json +23 -0
  12. package/default/config/privates.yaml +31 -0
  13. package/default/config/redis.json +10 -0
  14. package/default/config/render.json +19 -0
  15. package/default/view/group.yaml +73 -0
  16. package/dist/cli/index.cjs +526 -0
  17. package/{lib/cli/init.d.ts → dist/cli/index.d.ts} +0 -1
  18. package/dist/cli/index.js +517 -0
  19. package/dist/index.d.ts +9869 -0
  20. package/dist/index.js +12651 -0
  21. package/dist/module/art-template.cjs +11 -0
  22. package/dist/module/art-template.d.ts +1 -0
  23. package/dist/module/axios.cjs +22 -0
  24. package/dist/module/axios.d.ts +2 -0
  25. package/dist/module/chalk.cjs +22 -0
  26. package/dist/module/chalk.d.ts +2 -0
  27. package/dist/module/chokidar.cjs +22 -0
  28. package/dist/module/chokidar.d.ts +2 -0
  29. package/dist/module/commander.cjs +35 -0
  30. package/dist/module/commander.d.ts +3 -0
  31. package/dist/module/commander.js +3 -0
  32. package/dist/module/dotenv.cjs +22 -0
  33. package/dist/module/dotenv.d.ts +2 -0
  34. package/dist/module/dotenv.js +2 -0
  35. package/dist/module/express.cjs +32 -0
  36. package/dist/module/express.d.ts +1 -0
  37. package/dist/module/express.js +1 -0
  38. package/dist/module/level.cjs +22 -0
  39. package/dist/module/level.d.ts +2 -0
  40. package/dist/module/lodash.cjs +11 -0
  41. package/dist/module/lodash.d.ts +1 -0
  42. package/dist/module/log4js.cjs +22 -0
  43. package/dist/module/log4js.d.ts +2 -0
  44. package/dist/module/moment.cjs +11 -0
  45. package/dist/module/moment.d.ts +1 -0
  46. package/dist/module/node-schedule.cjs +22 -0
  47. package/dist/module/node-schedule.d.ts +2 -0
  48. package/dist/module/redis.cjs +22 -0
  49. package/dist/module/redis.d.ts +2 -0
  50. package/dist/module/ws.cjs +28 -0
  51. package/dist/module/ws.d.ts +1 -0
  52. package/dist/module/ws.js +1 -0
  53. package/dist/module/yaml.cjs +22 -0
  54. package/dist/module/yaml.d.ts +2 -0
  55. package/dist/root.d.ts +40 -0
  56. package/dist/root.js +44 -0
  57. package/package.json +150 -129
  58. package/LICENSE +0 -674
  59. package/README.md +0 -56
  60. package/config/defSet/App.yaml +0 -42
  61. package/config/defSet/config.yaml +0 -65
  62. package/config/defSet/group.yaml +0 -56
  63. package/config/defSet/pm2.yaml +0 -21
  64. package/config/defSet/redis.yaml +0 -18
  65. package/config/defSet/server.yaml +0 -42
  66. package/config/view/group.yaml +0 -92
  67. package/lib/adapter/index.d.ts +0 -2
  68. package/lib/adapter/index.js +0 -2
  69. package/lib/adapter/input/index.d.ts +0 -78
  70. package/lib/adapter/input/index.js +0 -205
  71. package/lib/adapter/onebot/11/convert.d.ts +0 -12
  72. package/lib/adapter/onebot/11/convert.js +0 -167
  73. package/lib/adapter/onebot/11/event.d.ts +0 -25
  74. package/lib/adapter/onebot/11/event.js +0 -442
  75. package/lib/adapter/onebot/11/index.d.ts +0 -508
  76. package/lib/adapter/onebot/11/index.js +0 -1047
  77. package/lib/cli/index.d.ts +0 -92
  78. package/lib/cli/index.js +0 -307
  79. package/lib/cli/init.js +0 -22
  80. package/lib/cli/karin.d.ts +0 -2
  81. package/lib/cli/karin.js +0 -16
  82. package/lib/cli/pkg.d.ts +0 -4
  83. package/lib/cli/pkg.js +0 -14
  84. package/lib/cli/start.d.ts +0 -1
  85. package/lib/cli/start.js +0 -8
  86. package/lib/core/index.d.ts +0 -10
  87. package/lib/core/index.js +0 -10
  88. package/lib/core/init/config.d.ts +0 -43
  89. package/lib/core/init/config.js +0 -201
  90. package/lib/core/init/dir.d.ts +0 -4
  91. package/lib/core/init/dir.js +0 -7
  92. package/lib/core/init/init.d.ts +0 -1
  93. package/lib/core/init/init.js +0 -47
  94. package/lib/core/karin/karin.d.ts +0 -198
  95. package/lib/core/karin/karin.js +0 -226
  96. package/lib/core/listener/listener.d.ts +0 -145
  97. package/lib/core/listener/listener.js +0 -235
  98. package/lib/core/plugin/base.d.ts +0 -156
  99. package/lib/core/plugin/base.js +0 -131
  100. package/lib/core/plugin/loader.d.ts +0 -141
  101. package/lib/core/plugin/loader.js +0 -618
  102. package/lib/core/process/process.d.ts +0 -18
  103. package/lib/core/process/process.js +0 -96
  104. package/lib/core/server/server.d.ts +0 -25
  105. package/lib/core/server/server.js +0 -295
  106. package/lib/db/index.d.ts +0 -2
  107. package/lib/db/index.js +0 -2
  108. package/lib/db/level/level.d.ts +0 -19
  109. package/lib/db/level/level.js +0 -36
  110. package/lib/db/redis/redis.d.ts +0 -2
  111. package/lib/db/redis/redis.js +0 -135
  112. package/lib/db/redis/redis_level.d.ts +0 -112
  113. package/lib/db/redis/redis_level.js +0 -281
  114. package/lib/event/handler/base.d.ts +0 -42
  115. package/lib/event/handler/base.js +0 -200
  116. package/lib/event/handler/message.d.ts +0 -25
  117. package/lib/event/handler/message.js +0 -302
  118. package/lib/event/handler/notice.d.ts +0 -18
  119. package/lib/event/handler/notice.js +0 -214
  120. package/lib/event/handler/request.d.ts +0 -18
  121. package/lib/event/handler/request.js +0 -115
  122. package/lib/event/handler/review.d.ts +0 -55
  123. package/lib/event/handler/review.js +0 -386
  124. package/lib/event/index.d.ts +0 -5
  125. package/lib/event/index.js +0 -5
  126. package/lib/index.d.ts +0 -8
  127. package/lib/index.js +0 -8
  128. package/lib/modules/art-template.d.ts +0 -1
  129. package/lib/modules/axios.d.ts +0 -2
  130. package/lib/modules/chalk.d.ts +0 -2
  131. package/lib/modules/chokidar.d.ts +0 -2
  132. package/lib/modules/commander.d.ts +0 -2
  133. package/lib/modules/commander.js +0 -2
  134. package/lib/modules/express.d.ts +0 -3
  135. package/lib/modules/express.js +0 -3
  136. package/lib/modules/level.d.ts +0 -2
  137. package/lib/modules/lodash.d.ts +0 -1
  138. package/lib/modules/log4js.d.ts +0 -2
  139. package/lib/modules/moment.d.ts +0 -1
  140. package/lib/modules/node-schedule.d.ts +0 -2
  141. package/lib/modules/redis.d.ts +0 -2
  142. package/lib/modules/ws.d.ts +0 -3
  143. package/lib/modules/ws.js +0 -3
  144. package/lib/modules/yaml.d.ts +0 -2
  145. package/lib/modules.d.ts +0 -15
  146. package/lib/modules.js +0 -15
  147. package/lib/render/app.d.ts +0 -56
  148. package/lib/render/app.js +0 -120
  149. package/lib/render/base.d.ts +0 -30
  150. package/lib/render/base.js +0 -69
  151. package/lib/render/client.d.ts +0 -41
  152. package/lib/render/client.js +0 -238
  153. package/lib/render/http.d.ts +0 -19
  154. package/lib/render/http.js +0 -50
  155. package/lib/render/index.d.ts +0 -6
  156. package/lib/render/index.js +0 -6
  157. package/lib/render/server.d.ts +0 -25
  158. package/lib/render/server.js +0 -101
  159. package/lib/render/wormhole.d.ts +0 -1
  160. package/lib/render/wormhole.js +0 -156
  161. package/lib/types/adapter/api.d.ts +0 -399
  162. package/lib/types/adapter/api.js +0 -1
  163. package/lib/types/adapter/base.d.ts +0 -560
  164. package/lib/types/adapter/base.js +0 -1
  165. package/lib/types/config/config.d.ts +0 -379
  166. package/lib/types/config/config.js +0 -1
  167. package/lib/types/element/element.d.ts +0 -565
  168. package/lib/types/element/element.js +0 -1
  169. package/lib/types/element/qqbot.d.ts +0 -123
  170. package/lib/types/element/qqbot.js +0 -1
  171. package/lib/types/event/contact.d.ts +0 -28
  172. package/lib/types/event/contact.js +0 -1
  173. package/lib/types/event/event.d.ts +0 -305
  174. package/lib/types/event/event.js +0 -1
  175. package/lib/types/event/index.d.ts +0 -12
  176. package/lib/types/event/index.js +0 -7
  177. package/lib/types/event/message.d.ts +0 -109
  178. package/lib/types/event/message.js +0 -74
  179. package/lib/types/event/notice.d.ts +0 -513
  180. package/lib/types/event/notice.js +0 -52
  181. package/lib/types/event/reply.d.ts +0 -50
  182. package/lib/types/event/reply.js +0 -1
  183. package/lib/types/event/request.d.ts +0 -126
  184. package/lib/types/event/request.js +0 -52
  185. package/lib/types/event/sender.d.ts +0 -44
  186. package/lib/types/event/sender.js +0 -1
  187. package/lib/types/index.d.ts +0 -13
  188. package/lib/types/index.js +0 -13
  189. package/lib/types/logger/logger.d.ts +0 -110
  190. package/lib/types/logger/logger.js +0 -1
  191. package/lib/types/onebot11/api.d.ts +0 -53
  192. package/lib/types/onebot11/api.js +0 -1
  193. package/lib/types/onebot11/event.d.ts +0 -619
  194. package/lib/types/onebot11/event.js +0 -2
  195. package/lib/types/onebot11/index.d.ts +0 -6
  196. package/lib/types/onebot11/index.js +0 -6
  197. package/lib/types/onebot11/params.d.ts +0 -609
  198. package/lib/types/onebot11/params.js +0 -1
  199. package/lib/types/onebot11/response.d.ts +0 -516
  200. package/lib/types/onebot11/response.js +0 -1
  201. package/lib/types/onebot11/segment.d.ts +0 -269
  202. package/lib/types/onebot11/segment.js +0 -1
  203. package/lib/types/onebot11/sender.d.ts +0 -59
  204. package/lib/types/onebot11/sender.js +0 -1
  205. package/lib/types/plugin/app.d.ts +0 -71
  206. package/lib/types/plugin/app.js +0 -1
  207. package/lib/types/plugin/plugin.d.ts +0 -473
  208. package/lib/types/plugin/plugin.js +0 -1
  209. package/lib/types/render/render.d.ts +0 -118
  210. package/lib/types/render/render.js +0 -1
  211. package/lib/types/type/global.d.ts +0 -25
  212. package/lib/types/type/global.js +0 -1
  213. package/lib/utils/common/common.d.ts +0 -236
  214. package/lib/utils/common/common.js +0 -708
  215. package/lib/utils/config/config.d.ts +0 -193
  216. package/lib/utils/config/config.js +0 -328
  217. package/lib/utils/config/updateVersion.d.ts +0 -33
  218. package/lib/utils/config/updateVersion.js +0 -145
  219. package/lib/utils/config/yamlEditor.d.ts +0 -101
  220. package/lib/utils/config/yamlEditor.js +0 -330
  221. package/lib/utils/core/handler.d.ts +0 -18
  222. package/lib/utils/core/handler.js +0 -46
  223. package/lib/utils/core/logger.d.ts +0 -3
  224. package/lib/utils/core/logger.js +0 -105
  225. package/lib/utils/core/segment.d.ts +0 -279
  226. package/lib/utils/core/segment.js +0 -451
  227. package/lib/utils/index.d.ts +0 -13
  228. package/lib/utils/index.js +0 -13
  229. package/lib/utils/tools/button.d.ts +0 -2
  230. package/lib/utils/tools/button.js +0 -27
  231. package/lib/utils/tools/exec.d.ts +0 -20
  232. package/lib/utils/tools/exec.js +0 -54
  233. package/lib/utils/tools/ffmpeg.d.ts +0 -12
  234. package/lib/utils/tools/ffmpeg.js +0 -25
  235. package/lib/utils/tools/restart.d.ts +0 -15
  236. package/lib/utils/tools/restart.js +0 -39
  237. package/lib/utils/tools/stop.d.ts +0 -7
  238. package/lib/utils/tools/stop.js +0 -13
  239. package/lib/utils/tools/update.d.ts +0 -67
  240. package/lib/utils/tools/update.js +0 -151
  241. /package/{config → default}/view/App.yaml +0 -0
  242. /package/{config → default}/view/config.yaml +0 -0
  243. /package/{config → default}/view/pm2.yaml +0 -0
  244. /package/{config → default}/view/redis.yaml +0 -0
  245. /package/{config → default}/view/server.yaml +0 -0
  246. /package/{lib/modules → dist/module}/art-template.js +0 -0
  247. /package/{lib/modules → dist/module}/axios.js +0 -0
  248. /package/{lib/modules → dist/module}/chalk.js +0 -0
  249. /package/{lib/modules → dist/module}/chokidar.js +0 -0
  250. /package/{lib/modules → dist/module}/level.js +0 -0
  251. /package/{lib/modules → dist/module}/lodash.js +0 -0
  252. /package/{lib/modules → dist/module}/log4js.js +0 -0
  253. /package/{lib/modules → dist/module}/moment.js +0 -0
  254. /package/{lib/modules → dist/module}/node-schedule.js +0 -0
  255. /package/{lib/modules → dist/module}/redis.js +0 -0
  256. /package/{lib/modules → dist/module}/yaml.js +0 -0
@@ -0,0 +1,526 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ var fs2 = require('fs');
5
+ var url = require('url');
6
+ var path2 = require('path');
7
+ var child_process = require('child_process');
8
+ var dotenv = require('dotenv');
9
+ var commander = require('commander');
10
+
11
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
+
14
+ var fs2__default = /*#__PURE__*/_interopDefault(fs2);
15
+ var path2__default = /*#__PURE__*/_interopDefault(path2);
16
+ var dotenv__default = /*#__PURE__*/_interopDefault(dotenv);
17
+
18
+ var execSync = (cmd, options = {}) => {
19
+ try {
20
+ const result = child_process.execSync(cmd, options);
21
+ return { status: true, error: null, stdout: result.toString(), stderr: "" };
22
+ } catch (error) {
23
+ return { status: false, error, stdout: "", stderr: "" };
24
+ }
25
+ };
26
+ var exec = (cmd, options = {}) => {
27
+ return new Promise((resolve) => {
28
+ child_process.exec(cmd, options, (error, stdout, stderr) => {
29
+ const status = !error;
30
+ resolve({ status, error, stdout, stderr });
31
+ });
32
+ });
33
+ };
34
+ var pm2Dir = path2__default.default.join(process.cwd(), "./@karinjs/config/pm2.json");
35
+ var start = () => {
36
+ if (!fs2__default.default.existsSync(pm2Dir)) {
37
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
38
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
39
+ process.exit(1);
40
+ }
41
+ console.log("[pm2] \u542F\u52A8\u4E2D...");
42
+ const { error } = execSync(`pm2 start ${pm2Dir}`, { cwd: process.cwd() });
43
+ if (error) {
44
+ console.log("[pm2] \u542F\u52A8\u5931\u8D25");
45
+ console.log(error);
46
+ process.exit(1);
47
+ }
48
+ console.log("[pm2] \u542F\u52A8\u6210\u529F");
49
+ console.log("[pm2] \u91CD\u542F\u670D\u52A1: pnpm rs");
50
+ console.log("[pm2] \u67E5\u770B\u65E5\u5FD7: pnpm log");
51
+ console.log("[pm2] \u505C\u6B62\u670D\u52A1: pnpm stop");
52
+ console.log("[pm2] \u67E5\u770B\u76D1\u63A7: pm2 monit");
53
+ console.log("[pm2] \u67E5\u770B\u5217\u8868: pm2 list");
54
+ process.exit(0);
55
+ };
56
+ var log = () => {
57
+ if (!fs2__default.default.existsSync(pm2Dir)) {
58
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
59
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
60
+ process.exit(1);
61
+ }
62
+ const data = JSON.parse(fs2__default.default.readFileSync(pm2Dir, "utf-8"));
63
+ try {
64
+ const prefix = process.platform === "win32" ? "pm2.cmd" : "pm2";
65
+ child_process.spawn(prefix, ["logs", data.name, "--lines", data.lines || 1e3], { stdio: "inherit", shell: true });
66
+ } catch (error) {
67
+ console.error("[pm2] \u53D1\u751F\u672A\u77E5\u9519\u8BEF: \u8BF7\u68C0\u67E5pm2\u662F\u5426\u5B89\u88C5 \u3010npm install -g pm2\u3011");
68
+ console.error(error);
69
+ process.exit(1);
70
+ }
71
+ };
72
+ var stop = () => {
73
+ if (!fs2__default.default.existsSync(pm2Dir)) {
74
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
75
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
76
+ process.exit(1);
77
+ }
78
+ const data = JSON.parse(fs2__default.default.readFileSync(pm2Dir, "utf-8"));
79
+ execSync(`pm2 stop ${data.name}`, { cwd: process.cwd() });
80
+ console.log("[pm2] \u505C\u6B62\u6210\u529F");
81
+ process.exit(0);
82
+ };
83
+ var restart = () => {
84
+ if (!fs2__default.default.existsSync(pm2Dir)) {
85
+ console.log(`[pm2] \u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728 \u8BF7\u68C0\u67E5 ${pm2Dir} \u662F\u5426\u5B58\u5728`);
86
+ console.log("[pm2] \u5982\u679C\u662F\u65B0\u9879\u76EE\uFF0C\u8BF7\u5148\u524D\u53F0\u542F\u52A8\u751F\u6210\u914D\u7F6E\u6587\u4EF6: pnpm app");
87
+ process.exit(1);
88
+ }
89
+ };
90
+ var pm2 = {
91
+ start,
92
+ log,
93
+ stop,
94
+ restart
95
+ };
96
+ var dir = process.env.INIT_CWD || process.cwd();
97
+ var pkgDir = url.fileURLToPath(new url.URL("../..", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
98
+ var createDir = () => {
99
+ const list = [
100
+ path2__default.default.join(dir, "logs"),
101
+ path2__default.default.join(dir, "plugins", "karin-plugin-example"),
102
+ path2__default.default.join(dir, "@karinjs", "config"),
103
+ path2__default.default.join(dir, "@karinjs", "data"),
104
+ path2__default.default.join(dir, "@karinjs", "temp", "console"),
105
+ path2__default.default.join(dir, "@karinjs", "temp", "html"),
106
+ path2__default.default.join(dir, "@karinjs", "resource")
107
+ ];
108
+ list.forEach((item) => {
109
+ if (!fs2__default.default.existsSync(item)) fs2__default.default.mkdirSync(item, { recursive: true });
110
+ });
111
+ };
112
+ var createPnpmFile = (dir2) => {
113
+ const pnpmfile = path2__default.default.join(dir2, ".pnpmfile.cjs");
114
+ if (fs2__default.default.existsSync(pnpmfile)) return;
115
+ const content = [
116
+ "// \u6E05\u7A7A\u5BF9\u7B49\u4F9D\u8D56\u4E2D\u7684node-karin",
117
+ "function readPackage (pkg, context) {",
118
+ " if (pkg?.['peerDependencies']?.['node-karin'] && pkg['peerDependencies']['node-karin'] !== 'file:./lib') {",
119
+ " delete pkg['peerDependencies']['node-karin']",
120
+ " }",
121
+ " return pkg",
122
+ "}",
123
+ "module.exports = {",
124
+ " hooks: {",
125
+ " readPackage",
126
+ " },",
127
+ "}"
128
+ ].join("\n");
129
+ fs2__default.default.writeFileSync(pnpmfile, content);
130
+ };
131
+ var shouldSkipNpmrc = () => {
132
+ const { stdout } = execSync("npm config get registry");
133
+ if (stdout.includes("registry.npmjs.org")) return true;
134
+ const { stdout: proxy } = execSync("npm config get proxy");
135
+ return !!proxy;
136
+ };
137
+ var createOrUpdateNpmrc = (dir2) => {
138
+ const list = [
139
+ "node_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/sqlite3",
140
+ "better_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/better-sqlite3",
141
+ "sass_binary_site=https://registry.npmmirror.com/-/binary/node-sass",
142
+ "sharp_binary_host=https://registry.npmmirror.com/-/binary/sharp",
143
+ "sharp_libvips_binary_host=https://registry.npmmirror.com/-/binary/sharp-libvips",
144
+ "canvas_binary_host_mirror=https://registry.npmmirror.com/-/binary/canvas",
145
+ "# 19\u4EE5\u4E0B\u7248\u672C",
146
+ "puppeteer_download_host=https://registry.npmmirror.com/mirrors",
147
+ "# 20\u4EE5\u4E0A\u7248\u672C",
148
+ "PUPPETEER_DOWNLOAD_BASE_URL = https://registry.npmmirror.com/binaries/chrome-for-testing"
149
+ ];
150
+ const npmrc = path2__default.default.join(dir2, ".npmrc");
151
+ if (!fs2__default.default.existsSync(npmrc)) {
152
+ fs2__default.default.writeFileSync(npmrc, list.join("\n"));
153
+ return;
154
+ }
155
+ const data = fs2__default.default.readFileSync(npmrc, "utf-8");
156
+ const newEntries = list.filter((item) => {
157
+ const key = item.split("=")[0];
158
+ return !data.includes(key);
159
+ });
160
+ if (newEntries.length > 0) {
161
+ fs2__default.default.appendFileSync(npmrc, "\n" + newEntries.join("\n"));
162
+ }
163
+ };
164
+ var createOrUpdateEnv = (dir2) => {
165
+ const generateRandomKey = () => {
166
+ const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
167
+ return Array.from({ length: 6 }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join("");
168
+ };
169
+ const envData = [
170
+ "# \u662F\u5426\u542F\u7528HTTP",
171
+ "HTTP_ENABLE=true",
172
+ "# HTTP\u76D1\u542C\u7AEF\u53E3",
173
+ "HTTP_PORT=7777",
174
+ "# HTTP\u76D1\u542C\u5730\u5740",
175
+ "HTTP_HOST=0.0.0.0",
176
+ "# HTTP\u9274\u6743\u79D8\u94A5 \u4EC5\u7528\u4E8Ekarin\u81EA\u8EABApi",
177
+ `HTTP_AUTH_KEY=${generateRandomKey()}`,
178
+ "# ws_server\u9274\u6743\u79D8\u94A5",
179
+ `WS_SERVER_AUTH_KEY=${generateRandomKey()}`,
180
+ "\n",
181
+ "# \u662F\u5426\u542F\u7528Redis \u5173\u95ED\u540E\u5C06\u4F7F\u7528\u5185\u90E8\u865A\u62DFRedis",
182
+ "REDIS_ENABLE=true",
183
+ "# \u91CD\u542F\u662F\u5426\u8C03\u7528pm2 \u5982\u679C\u4E0D\u8C03\u7528\u5219\u4F1A\u76F4\u63A5\u5173\u673A \u6B64\u914D\u7F6E\u9002\u5408\u6709\u8FDB\u7A0B\u5B88\u62A4\u7684\u7A0B\u5E8F",
184
+ "PM2_RESTART=true",
185
+ "\n",
186
+ "# \u65E5\u5FD7\u7B49\u7EA7",
187
+ "LOG_LEVEL=info",
188
+ "# \u65E5\u5FD7\u4FDD\u7559\u5929\u6570",
189
+ "LOG_DAYS_TO_KEEP=7",
190
+ "# \u65E5\u5FD7\u6587\u4EF6\u6700\u5927\u5927\u5C0F \u5982\u679C\u6B64\u9879\u5927\u4E8E0\u5219\u542F\u7528\u65E5\u5FD7\u5206\u5272",
191
+ "LOG_MAX_LOG_SIZE=0",
192
+ "# logger.fnc\u989C\u8272",
193
+ 'LOG_FNC_COLOR="#E1D919"',
194
+ "\n",
195
+ "# ffmpeg",
196
+ "FFMPEG_PATH=",
197
+ "# ffprobe",
198
+ "FFPROBE_PATH=",
199
+ "# ffplay",
200
+ "FFPLAY_PATH=",
201
+ "\n",
202
+ "# \u8FD9\u91CC\u8BF7\u52FF\u4FEE\u6539",
203
+ "RUNTIME=node"
204
+ ];
205
+ const env = path2__default.default.join(dir2, ".env");
206
+ if (!fs2__default.default.existsSync(env)) {
207
+ fs2__default.default.writeFileSync(env, envData.join("\n"));
208
+ return;
209
+ }
210
+ const value = fs2__default.default.readFileSync(env, "utf-8");
211
+ const newEntries = envData.filter((item) => {
212
+ if (item.includes("#")) return false;
213
+ const key = item.split("=")[0];
214
+ return !value.includes(key);
215
+ });
216
+ if (newEntries.length > 0) {
217
+ fs2__default.default.appendFileSync(env, "\n" + newEntries.join("\n"));
218
+ }
219
+ };
220
+ var createWorkspace = (dir2) => {
221
+ const workspace = path2__default.default.join(dir2, "pnpm-workspace.yaml");
222
+ if (fs2__default.default.existsSync(workspace)) return;
223
+ const content = "packages:\n - 'plugins/**'\n";
224
+ fs2__default.default.writeFileSync(workspace, content);
225
+ };
226
+ var createOtherFile = async () => {
227
+ createPnpmFile(dir);
228
+ createWorkspace(dir);
229
+ if (!shouldSkipNpmrc()) {
230
+ createOrUpdateNpmrc(dir);
231
+ }
232
+ createOrUpdateEnv(dir);
233
+ };
234
+ var createConfig = () => {
235
+ const defCfg = path2__default.default.join(pkgDir, "default", "config");
236
+ const files = fs2__default.default.readdirSync(defCfg);
237
+ files.forEach((file) => {
238
+ if (!file.endsWith(".json")) return;
239
+ const filePath = path2__default.default.join(defCfg, file);
240
+ const targetPath = path2__default.default.join(dir, "@karinjs", "config");
241
+ const targetFile = path2__default.default.join(targetPath, file);
242
+ if (!fs2__default.default.existsSync(targetFile)) {
243
+ fs2__default.default.copyFileSync(filePath, targetFile);
244
+ return;
245
+ }
246
+ const defData = fs2__default.default.readFileSync(filePath, "utf-8");
247
+ const targetData = fs2__default.default.readFileSync(targetFile, "utf-8");
248
+ const mergedData = { ...JSON.parse(defData), ...JSON.parse(targetData) };
249
+ fs2__default.default.writeFileSync(targetFile, JSON.stringify(mergedData, null, 2));
250
+ });
251
+ };
252
+ var modifyPackageJson = () => {
253
+ const pkg = fs2__default.default.readFileSync(path2__default.default.join(dir, "package.json"), "utf-8");
254
+ const data = JSON.parse(pkg);
255
+ data.type = "module";
256
+ data.scripts.karin = "karin";
257
+ const list = [
258
+ "app",
259
+ "start",
260
+ "pm2",
261
+ "stop",
262
+ "rs",
263
+ "log",
264
+ "up",
265
+ "init",
266
+ "dev",
267
+ "ts",
268
+ "watch"
269
+ ];
270
+ list.forEach((v) => {
271
+ data.scripts[v] = `karin ${v}`;
272
+ });
273
+ fs2__default.default.writeFileSync(path2__default.default.join(dir, "package.json"), JSON.stringify(data, null, 2));
274
+ return data;
275
+ };
276
+ var init = async () => {
277
+ createDir();
278
+ await createOtherFile();
279
+ createConfig();
280
+ modifyPackageJson();
281
+ process.exit(0);
282
+ };
283
+ var parseEnvFiles = (env) => {
284
+ if (!env) return [".env"];
285
+ return env.split(",").map((file) => file.trim());
286
+ };
287
+ var loadEnv = (env) => {
288
+ const dir2 = process.cwd();
289
+ const files = parseEnvFiles(env);
290
+ if (!files.includes(".env")) {
291
+ files.unshift(".env");
292
+ }
293
+ files.forEach((file) => {
294
+ if (!fs2__default.default.existsSync(`${dir2}/${file}`)) {
295
+ if (file === ".env") {
296
+ console.error(`\u672A\u627E\u5230${file}\u6587\u4EF6\uFF0C\u8BF7\u4F7F\u7528 pnpm init \u8FDB\u884C\u521D\u59CB\u5316\u9879\u76EE`);
297
+ } else {
298
+ console.error(`\u672A\u627E\u5230${file}\u6587\u4EF6\uFF0C\u8BF7\u5C06\u5176\u653E\u7F6E\u5728\u9879\u76EE\u6839\u76EE\u5F55`);
299
+ }
300
+ process.exit(1);
301
+ }
302
+ });
303
+ const paths = files.map((file) => `${dir2}/${file}`);
304
+ dotenv__default.default.config({ path: paths, override: true });
305
+ };
306
+ var start2 = async (env) => {
307
+ loadEnv(env);
308
+ const index = "../root.js";
309
+ const { karinMain } = await import(index);
310
+ const child = child_process.fork(karinMain);
311
+ child.on("message", (message) => {
312
+ if (message === "restart") {
313
+ child.kill();
314
+ child.removeAllListeners();
315
+ start2(env);
316
+ }
317
+ });
318
+ child.on("exit", (code) => process.exit(code));
319
+ };
320
+ var dev = async (env) => {
321
+ loadEnv(env);
322
+ const index = "../root.js";
323
+ process.env.NODE_ENV = "development";
324
+ const { karinMain } = await import(index);
325
+ await import(url.pathToFileURL(karinMain).toString());
326
+ };
327
+ var tsStart = async (env) => {
328
+ loadEnv(env);
329
+ process.env.NODE_ENV = "development";
330
+ const index = "../root.js";
331
+ const { karinMain } = await import(index);
332
+ const child = child_process.spawn("npx", ["tsx", karinMain], {
333
+ env: {
334
+ ...process.env,
335
+ RUNTIME: "tsx"
336
+ },
337
+ stdio: "inherit",
338
+ shell: true
339
+ });
340
+ child.on("exit", (code) => process.exit(code ?? 0));
341
+ };
342
+ var tsWatch = async (options) => {
343
+ loadEnv(options.env);
344
+ process.env.NODE_ENV = "development";
345
+ const index = "../root.js";
346
+ const { karinMain } = await import(index);
347
+ const args = ["tsx", "watch"];
348
+ if (options.include) {
349
+ options.include.split(",").forEach((pattern) => {
350
+ args.push("--include", pattern.trim());
351
+ });
352
+ }
353
+ if (options.exclude) {
354
+ options.exclude.split(",").forEach((pattern) => {
355
+ args.push("--exclude", pattern.trim());
356
+ });
357
+ }
358
+ if (!options.clearScreen) {
359
+ args.push("--clear-screen=false");
360
+ }
361
+ args.push(karinMain);
362
+ const child = child_process.spawn("npx", args, {
363
+ env: {
364
+ ...process.env,
365
+ RUNTIME: "tsx",
366
+ TSX_WATCH: "true"
367
+ },
368
+ stdio: "inherit",
369
+ shell: true
370
+ });
371
+ child.on("exit", (code) => process.exit(code ?? 0));
372
+ };
373
+ var checkGitInstalled = async () => {
374
+ try {
375
+ const { status } = await exec("git --version");
376
+ return status;
377
+ } catch {
378
+ return false;
379
+ }
380
+ };
381
+ var updateDependencies = async (packagePath) => {
382
+ try {
383
+ const packageJson = JSON.parse(fs2__default.default.readFileSync(packagePath, "utf-8"));
384
+ const dependencies = packageJson.dependencies || {};
385
+ const packagesToUpdate = [];
386
+ const checkVersionTasks = Object.entries(dependencies).map(async ([pkg, version]) => {
387
+ if (pkg.startsWith("@types/")) {
388
+ return;
389
+ }
390
+ try {
391
+ const { stdout: pkgInfoStr } = await exec(`pnpm view ${pkg} --json`);
392
+ const pkgInfo = JSON.parse(pkgInfoStr.trim());
393
+ if (!pkgInfo.karin) return;
394
+ const currentVersion = version.replace(/[\^~]/g, "");
395
+ const { stdout: distTagsStr } = await exec(`pnpm view ${pkg} dist-tags --json`);
396
+ const distTags = JSON.parse(distTagsStr.trim());
397
+ const isPreRelease = /[-+]/.test(currentVersion);
398
+ const latestVersion = distTags.latest;
399
+ console.log(`[npm] ${pkg}:`);
400
+ console.log(` \u5F53\u524D\u7248\u672C: ${currentVersion}${isPreRelease ? " (\u9884\u53D1\u5E03\u7248\u672C)" : ""}`);
401
+ console.log(` \u6700\u65B0\u7248\u672C: ${latestVersion}`);
402
+ if (isPreRelease || currentVersion !== latestVersion) {
403
+ console.log(`[npm] \u53D1\u73B0\u65B0\u7248\u672C ${pkg}: ${currentVersion} -> ${latestVersion}`);
404
+ packagesToUpdate.push(`${pkg}@latest`);
405
+ } else {
406
+ console.log(`[npm] ${pkg} \u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u672C`);
407
+ }
408
+ } catch (error) {
409
+ console.error(`[npm] \u68C0\u67E5 ${pkg} \u7248\u672C\u5931\u8D25:`, error);
410
+ }
411
+ });
412
+ await Promise.all(checkVersionTasks);
413
+ if (packagesToUpdate.length > 0) {
414
+ console.log("[npm] \u5F00\u59CB\u66F4\u65B0\u4EE5\u4E0B\u5305:\n", packagesToUpdate.join("\n"));
415
+ try {
416
+ const { status, error } = await exec(`pnpm update ${packagesToUpdate.join(" ")}`);
417
+ if (status) {
418
+ console.log("[npm] \u6240\u6709\u63D2\u4EF6\u66F4\u65B0\u5B8C\u6210");
419
+ } else {
420
+ console.error("[npm] \u6279\u91CF\u66F4\u65B0\u5931\u8D25:", error);
421
+ }
422
+ } catch (error) {
423
+ console.error("[npm] \u6279\u91CF\u66F4\u65B0\u5931\u8D25:", error);
424
+ }
425
+ } else {
426
+ console.log("[npm] \u6240\u6709\u63D2\u4EF6\u90FD\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u672C");
427
+ }
428
+ } catch (error) {
429
+ console.error("[npm] \u66F4\u65B0\u4F9D\u8D56\u5931\u8D25:", error);
430
+ }
431
+ };
432
+ var updatePlugins = async (pluginsPath) => {
433
+ if (!await checkGitInstalled()) {
434
+ console.error("[git] \u8BF7\u5148\u5B89\u88C5git");
435
+ return;
436
+ }
437
+ if (!fs2__default.default.existsSync(pluginsPath)) {
438
+ console.error("[git] plugins\u76EE\u5F55\u4E0D\u5B58\u5728");
439
+ return;
440
+ }
441
+ const isDirectory = (await fs2__default.default.promises.stat(pluginsPath)).isDirectory();
442
+ if (!isDirectory) {
443
+ console.error("[git] plugins\u8DEF\u5F84\u4E0D\u662F\u4E00\u4E2A\u76EE\u5F55");
444
+ return;
445
+ }
446
+ const dirs = await fs2__default.default.promises.readdir(pluginsPath);
447
+ const updateTasks = dirs.map(async (dir2) => {
448
+ const pluginPath = path2.join(pluginsPath, dir2);
449
+ const gitPath = path2.join(pluginPath, ".git");
450
+ const packageJsonPath = path2.join(pluginPath, "package.json");
451
+ if (!dir2.startsWith("karin-plugin-") || !(await fs2__default.default.promises.stat(pluginPath)).isDirectory()) {
452
+ return;
453
+ }
454
+ if (!fs2__default.default.existsSync(gitPath)) {
455
+ console.log(`[git] ${dir2} \u4E0D\u662Fgit\u4ED3\u5E93\uFF0C\u8DF3\u8FC7`);
456
+ return;
457
+ }
458
+ try {
459
+ const packageJson = JSON.parse(fs2__default.default.readFileSync(packageJsonPath, "utf-8"));
460
+ if (!packageJson.karin) {
461
+ console.log(`[git] ${dir2} \u7684package.json\u4E2D\u6CA1\u6709karin\u5B57\u6BB5\uFF0C\u8DF3\u8FC7`);
462
+ return;
463
+ }
464
+ console.log(`[git] \u6B63\u5728\u66F4\u65B0 ${dir2}...`);
465
+ const { status, error } = await exec("git pull", { cwd: pluginPath });
466
+ if (!status) {
467
+ console.error(`[git] \u66F4\u65B0 ${dir2} \u5931\u8D25:`, error);
468
+ }
469
+ } catch (error) {
470
+ console.error(`[git] \u66F4\u65B0 ${dir2} \u5931\u8D25:`, error);
471
+ }
472
+ });
473
+ await Promise.all(updateTasks);
474
+ };
475
+ var updateAll = async () => {
476
+ try {
477
+ console.log("[all] \u5F00\u59CB\u6267\u884C\u66F4\u65B0\u4EFB\u52A1\n");
478
+ await Promise.all([updateDependencies("./package.json"), updatePlugins("./plugins")]);
479
+ console.log("\n[all] \u66F4\u65B0\u4EFB\u52A1\u6267\u884C\u5B8C\u6210");
480
+ } finally {
481
+ process.exit(0);
482
+ }
483
+ };
484
+ var _a;
485
+ if (!((_a = process.argv) == null ? undefined : _a[2])) process.argv.push("-h");
486
+ var addEnvOption = (command) => {
487
+ return command.option("-e, --env <files>", "\u6307\u5B9A\u73AF\u5883\u53D8\u91CF\u6587\u4EF6\uFF0C\u591A\u4E2A\u6587\u4EF6\u7528\u9017\u53F7\u5206\u9694");
488
+ };
489
+ var getVersion = () => {
490
+ try {
491
+ const file = url.fileURLToPath(new URL("../../package.json", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
492
+ const packageJson = JSON.parse(fs2__default.default.readFileSync(file, "utf-8"));
493
+ return packageJson.version;
494
+ } catch {
495
+ return "unknown";
496
+ }
497
+ };
498
+ commander.program.version(getVersion(), "-v, --version", "\u663E\u793A\u7248\u672C\u53F7");
499
+ commander.program.command("pm2").description("\u540E\u53F0\u8FD0\u884C").action(pm2.start);
500
+ commander.program.command("stop").description("\u505C\u6B62\u540E\u53F0\u8FD0\u884C").action(pm2.stop);
501
+ commander.program.command("rs").description("\u91CD\u542Fpm2\u670D\u52A1").action(pm2.restart);
502
+ commander.program.command("log").description("\u67E5\u770B\u65E5\u5FD7").action(pm2.log);
503
+ commander.program.command("up").description("\u66F4\u65B0\u63D2\u4EF6").action(updateAll);
504
+ commander.program.command("init").description("\u521D\u59CB\u5316\u9879\u76EE").action(init);
505
+ addEnvOption(commander.program.command(".").description("\u524D\u53F0\u542F\u52A8")).action((options) => start2(options.env));
506
+ addEnvOption(commander.program.command("app").description("\u524D\u53F0\u542F\u52A8")).action((options) => start2(options.env));
507
+ addEnvOption(commander.program.command("start").description("\u524D\u53F0\u542F\u52A8")).action((options) => start2(options.env));
508
+ addEnvOption(commander.program.command("dev").description("JavaScript\u5F00\u53D1\u6A21\u5F0F")).action((options) => dev(options.env));
509
+ addEnvOption(
510
+ commander.program.command("ts").description("TypeScript\u5F00\u53D1\u6A21\u5F0F").addHelpText("after", `
511
+ \u793A\u4F8B:
512
+ $ karin ts # \u4F7F\u7528\u9ED8\u8BA4 .env \u6587\u4EF6\u542F\u52A8
513
+ $ karin ts -e .env.dev # \u4F7F\u7528\u6307\u5B9A\u7684\u73AF\u5883\u53D8\u91CF\u6587\u4EF6\u542F\u52A8
514
+ $ karin ts -e .env.dev,.env.local # \u4F7F\u7528\u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u6587\u4EF6\u542F\u52A8
515
+ `)
516
+ ).action((options) => tsStart(options.env));
517
+ addEnvOption(
518
+ commander.program.command("watch").description("TypeScript\u76D1\u89C6\u6A21\u5F0F").option("--include <patterns>", "\u6DFB\u52A0\u8981\u76D1\u89C6\u7684\u6587\u4EF6/\u76EE\u5F55\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694").option("--exclude <patterns>", "\u6392\u9664\u8981\u76D1\u89C6\u7684\u6587\u4EF6/\u76EE\u5F55\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694").option("--clear-screen", "\u91CD\u65B0\u8FD0\u884C\u65F6\u662F\u5426\u6E05\u5C4F", true).addHelpText("after", `
519
+ \u793A\u4F8B:
520
+ $ karin watch # \u9ED8\u8BA4\u76D1\u89C6\u6A21\u5F0F
521
+ $ karin watch --include src # \u76D1\u89C6 src \u76EE\u5F55
522
+ $ karin watch --exclude node_modules,dist # \u6392\u9664\u6307\u5B9A\u76EE\u5F55
523
+ $ karin watch --no-clear-screen # \u7981\u7528\u6E05\u5C4F
524
+ `)
525
+ ).action((options) => tsWatch(options));
526
+ commander.program.parse(process.argv);
@@ -1,2 +1 @@
1
1
  #!/usr/bin/env node
2
- export {};