node-karin 0.12.2-5.pr.206.f697b50 → 0.12.2-5.pr.206.fd03f9f

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.
@@ -3,7 +3,7 @@
3
3
  "apps": [
4
4
  {
5
5
  "name": "karin",
6
- "script": "index.js",
6
+ "script": "./node_modules/node-karin/dist/cli/pm2.js",
7
7
  "autorestart": true,
8
8
  "max_restarts": 60,
9
9
  "max_memory_restart": "1G",
@@ -39,6 +39,12 @@ var start = () => {
39
39
  process.exit(1);
40
40
  }
41
41
  console.log("[pm2] \u542F\u52A8\u4E2D...");
42
+ const data = JSON.parse(fs2__default.default.readFileSync(pm2Dir, "utf-8"));
43
+ const script = "./node_modules/node-karin/dist/cli/pm2.js";
44
+ if (data.apps[0].script !== script) {
45
+ data.apps[0].script = script;
46
+ fs2__default.default.writeFileSync(pm2Dir, JSON.stringify(data, null, 2));
47
+ }
42
48
  const { error } = execSync(`pm2 start ${pm2Dir}`, { cwd: process.cwd() });
43
49
  if (error) {
44
50
  console.log("[pm2] \u542F\u52A8\u5931\u8D25");
@@ -62,7 +68,7 @@ var log = () => {
62
68
  const data = JSON.parse(fs2__default.default.readFileSync(pm2Dir, "utf-8"));
63
69
  try {
64
70
  const prefix = process.platform === "win32" ? "pm2.cmd" : "pm2";
65
- child_process.spawn(prefix, ["logs", data.name, "--lines", data.lines || 1e3], { stdio: "inherit", shell: true });
71
+ child_process.spawn(prefix, ["logs", data.apps[0].name, "--lines", data.lines || 1e3], { stdio: "inherit", shell: true });
66
72
  } catch (error) {
67
73
  console.error("[pm2] \u53D1\u751F\u672A\u77E5\u9519\u8BEF: \u8BF7\u68C0\u67E5pm2\u662F\u5426\u5B89\u88C5 \u3010npm install -g pm2\u3011");
68
74
  console.error(error);
@@ -76,7 +82,7 @@ var stop = () => {
76
82
  process.exit(1);
77
83
  }
78
84
  const data = JSON.parse(fs2__default.default.readFileSync(pm2Dir, "utf-8"));
79
- execSync(`pm2 stop ${data.name}`, { cwd: process.cwd() });
85
+ execSync(`pm2 stop ${data.apps[0].name}`, { cwd: process.cwd() });
80
86
  console.log("[pm2] \u505C\u6B62\u6210\u529F");
81
87
  process.exit(0);
82
88
  };
@@ -293,7 +299,7 @@ var loadEnv = (env) => {
293
299
  files.forEach((file) => {
294
300
  if (!fs2__default.default.existsSync(`${dir2}/${file}`)) {
295
301
  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`);
302
+ console.error(`\u672A\u627E\u5230${file}\u6587\u4EF6\uFF0C\u8BF7\u4F7F\u7528 npx karin init \u8FDB\u884C\u521D\u59CB\u5316\u9879\u76EE`);
297
303
  } else {
298
304
  console.error(`\u672A\u627E\u5230${file}\u6587\u4EF6\uFF0C\u8BF7\u5C06\u5176\u653E\u7F6E\u5728\u9879\u76EE\u6839\u76EE\u5F55`);
299
305
  }
@@ -326,14 +332,11 @@ var dev = async (env) => {
326
332
  };
327
333
  var tsStart = async (env) => {
328
334
  loadEnv(env);
335
+ process.env.RUNTIME = "tsx";
329
336
  process.env.NODE_ENV = "development";
330
337
  const index = "../root.js";
331
338
  const { karinMain } = await import(index);
332
339
  const child = child_process.spawn("npx", ["tsx", karinMain], {
333
- env: {
334
- ...process.env,
335
- RUNTIME: "tsx"
336
- },
337
340
  stdio: "inherit",
338
341
  shell: true
339
342
  });
@@ -359,12 +362,9 @@ var tsWatch = async (options) => {
359
362
  args.push("--clear-screen=false");
360
363
  }
361
364
  args.push(karinMain);
365
+ process.env.RUNTIME = "tsx";
366
+ process.env.TSX_WATCH = "true";
362
367
  const child = child_process.spawn("npx", args, {
363
- env: {
364
- ...process.env,
365
- RUNTIME: "tsx",
366
- TSX_WATCH: "true"
367
- },
368
368
  stdio: "inherit",
369
369
  shell: true
370
370
  });
@@ -487,7 +487,6 @@ var addEnvOption = (command) => {
487
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
488
  };
489
489
  var getVersion = () => {
490
- if (process.env.npm_package_version) return process.env.npm_package_version;
491
490
  try {
492
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))));
493
492
  const packageJson = JSON.parse(fs2__default.default.readFileSync(file, "utf-8"));
package/dist/cli/index.js CHANGED
@@ -30,6 +30,12 @@ var start = () => {
30
30
  process.exit(1);
31
31
  }
32
32
  console.log("[pm2] \u542F\u52A8\u4E2D...");
33
+ const data = JSON.parse(fs2.readFileSync(pm2Dir, "utf-8"));
34
+ const script = "./node_modules/node-karin/dist/cli/pm2.js";
35
+ if (data.apps[0].script !== script) {
36
+ data.apps[0].script = script;
37
+ fs2.writeFileSync(pm2Dir, JSON.stringify(data, null, 2));
38
+ }
33
39
  const { error } = execSync(`pm2 start ${pm2Dir}`, { cwd: process.cwd() });
34
40
  if (error) {
35
41
  console.log("[pm2] \u542F\u52A8\u5931\u8D25");
@@ -53,7 +59,7 @@ var log = () => {
53
59
  const data = JSON.parse(fs2.readFileSync(pm2Dir, "utf-8"));
54
60
  try {
55
61
  const prefix = process.platform === "win32" ? "pm2.cmd" : "pm2";
56
- spawn(prefix, ["logs", data.name, "--lines", data.lines || 1e3], { stdio: "inherit", shell: true });
62
+ spawn(prefix, ["logs", data.apps[0].name, "--lines", data.lines || 1e3], { stdio: "inherit", shell: true });
57
63
  } catch (error) {
58
64
  console.error("[pm2] \u53D1\u751F\u672A\u77E5\u9519\u8BEF: \u8BF7\u68C0\u67E5pm2\u662F\u5426\u5B89\u88C5 \u3010npm install -g pm2\u3011");
59
65
  console.error(error);
@@ -67,7 +73,7 @@ var stop = () => {
67
73
  process.exit(1);
68
74
  }
69
75
  const data = JSON.parse(fs2.readFileSync(pm2Dir, "utf-8"));
70
- execSync(`pm2 stop ${data.name}`, { cwd: process.cwd() });
76
+ execSync(`pm2 stop ${data.apps[0].name}`, { cwd: process.cwd() });
71
77
  console.log("[pm2] \u505C\u6B62\u6210\u529F");
72
78
  process.exit(0);
73
79
  };
@@ -284,7 +290,7 @@ var loadEnv = (env) => {
284
290
  files.forEach((file) => {
285
291
  if (!fs2.existsSync(`${dir2}/${file}`)) {
286
292
  if (file === ".env") {
287
- console.error(`\u672A\u627E\u5230${file}\u6587\u4EF6\uFF0C\u8BF7\u4F7F\u7528 pnpm init \u8FDB\u884C\u521D\u59CB\u5316\u9879\u76EE`);
293
+ console.error(`\u672A\u627E\u5230${file}\u6587\u4EF6\uFF0C\u8BF7\u4F7F\u7528 npx karin init \u8FDB\u884C\u521D\u59CB\u5316\u9879\u76EE`);
288
294
  } else {
289
295
  console.error(`\u672A\u627E\u5230${file}\u6587\u4EF6\uFF0C\u8BF7\u5C06\u5176\u653E\u7F6E\u5728\u9879\u76EE\u6839\u76EE\u5F55`);
290
296
  }
@@ -317,14 +323,11 @@ var dev = async (env) => {
317
323
  };
318
324
  var tsStart = async (env) => {
319
325
  loadEnv(env);
326
+ process.env.RUNTIME = "tsx";
320
327
  process.env.NODE_ENV = "development";
321
328
  const index = "../root.js";
322
329
  const { karinMain } = await import(index);
323
330
  const child = spawn("npx", ["tsx", karinMain], {
324
- env: {
325
- ...process.env,
326
- RUNTIME: "tsx"
327
- },
328
331
  stdio: "inherit",
329
332
  shell: true
330
333
  });
@@ -350,12 +353,9 @@ var tsWatch = async (options) => {
350
353
  args.push("--clear-screen=false");
351
354
  }
352
355
  args.push(karinMain);
356
+ process.env.RUNTIME = "tsx";
357
+ process.env.TSX_WATCH = "true";
353
358
  const child = spawn("npx", args, {
354
- env: {
355
- ...process.env,
356
- RUNTIME: "tsx",
357
- TSX_WATCH: "true"
358
- },
359
359
  stdio: "inherit",
360
360
  shell: true
361
361
  });
@@ -478,7 +478,6 @@ var addEnvOption = (command) => {
478
478
  return command.option("-e, --env <files>", "\u6307\u5B9A\u73AF\u5883\u53D8\u91CF\u6587\u4EF6\uFF0C\u591A\u4E2A\u6587\u4EF6\u7528\u9017\u53F7\u5206\u9694");
479
479
  };
480
480
  var getVersion = () => {
481
- if (process.env.npm_package_version) return process.env.npm_package_version;
482
481
  try {
483
482
  const file = fileURLToPath(new URL("../../package.json", import.meta.url));
484
483
  const packageJson = JSON.parse(fs2.readFileSync(file, "utf-8"));
@@ -0,0 +1 @@
1
+ import 'node-karin'
package/dist/index.js CHANGED
@@ -408,8 +408,8 @@ var init_file = __esm({
408
408
  copyConfigSync = (defaulPath, userPath, suffixs = [], isThrow = false) => {
409
409
  try {
410
410
  const files = getFiles(defaulPath, suffixs);
411
- fs4.mkdirSync(userPath);
412
- fs4.mkdirSync(defaulPath);
411
+ fs4.mkdirSync(userPath, { recursive: true });
412
+ fs4.mkdirSync(defaulPath, { recursive: true });
413
413
  copyFilesSync(files, defaulPath, userPath);
414
414
  return true;
415
415
  } catch (error) {
@@ -2005,7 +2005,7 @@ var init_list = __esm({
2005
2005
  return;
2006
2006
  }
2007
2007
  if (type === "git" || type === "root") {
2008
- const file = path7.join(pluginDir, name);
2008
+ const file = type === "root" ? process.cwd() : path7.join(pluginDir, name);
2009
2009
  await getGitInfo(info, file, name, ext);
2010
2010
  return;
2011
2011
  }
@@ -4073,6 +4073,7 @@ var loader_exports = {};
4073
4073
  __export(loader_exports, {
4074
4074
  LoaderPlugin: () => LoaderPlugin
4075
4075
  });
4076
+ import fs14 from "node:fs";
4076
4077
  import lodash5 from "lodash";
4077
4078
  import path11 from "node:path";
4078
4079
  import util2 from "node:util";
@@ -4127,11 +4128,15 @@ var init_loader = __esm({
4127
4128
  if (pkg3.type !== "app") {
4128
4129
  if (isTsx() && ((_c = (_b = pkg3 == null ? void 0 : pkg3.pkgData) == null ? void 0 : _b.karin) == null ? void 0 : _c.main)) {
4129
4130
  const file = path11.join(pkg3.dir, pkg3.pkgData.karin.main);
4130
- entryPromises.push(this.loaderMain(pkg3.name, file));
4131
+ if (fs14.existsSync(file)) {
4132
+ entryPromises.push(this.loaderMain(pkg3.name, file));
4133
+ }
4131
4134
  }
4132
4135
  if ((_d = pkg3 == null ? void 0 : pkg3.pkgData) == null ? void 0 : _d.main) {
4133
4136
  const file = path11.join(pkg3.dir, pkg3.pkgData.main);
4134
- entryPromises.push(this.loaderMain(pkg3.name, file));
4137
+ if (fs14.existsSync(file)) {
4138
+ entryPromises.push(this.loaderMain(pkg3.name, file));
4139
+ }
4135
4140
  }
4136
4141
  }
4137
4142
  if (pkg3.type !== "app" && ((_f = (_e = pkg3 == null ? void 0 : pkg3.pkgData) == null ? void 0 : _e.karin) == null ? void 0 : _f.static)) {
@@ -4554,7 +4559,7 @@ var init_ip = __esm({
4554
4559
  });
4555
4560
 
4556
4561
  // src/server/api/console.ts
4557
- import fs14 from "node:fs";
4562
+ import fs15 from "node:fs";
4558
4563
  import path13 from "node:path";
4559
4564
  var consoleRouter;
4560
4565
  var init_console = __esm({
@@ -4595,11 +4600,11 @@ var init_console = __esm({
4595
4600
  }
4596
4601
  }
4597
4602
  const file = path13.join(consolePath, name);
4598
- if (!fs14.existsSync(file)) {
4603
+ if (!fs15.existsSync(file)) {
4599
4604
  res.status(404).json({ error: "\u6587\u4EF6\u4E0D\u5B58\u5728", message: "\u6587\u4EF6\u4E0D\u5B58\u5728" });
4600
4605
  return;
4601
4606
  }
4602
- const data = fs14.readFileSync(file);
4607
+ const data = fs15.readFileSync(file);
4603
4608
  if (!data) {
4604
4609
  res.status(500).json({ error: "\u5185\u90E8\u9519\u8BEF", message: "\u8BFB\u53D6\u5931\u8D25" });
4605
4610
  return;
@@ -6212,6 +6217,7 @@ var init_groups2 = __esm({
6212
6217
  App.next = () => {
6213
6218
  next = true;
6214
6219
  };
6220
+ App.reply = App.e.reply.bind(App.e);
6215
6221
  const result = await App[plugin.file.method](App.e);
6216
6222
  if (next === false && result === false) next = true;
6217
6223
  }
@@ -6324,6 +6330,7 @@ var init_private = __esm({
6324
6330
  App.next = () => {
6325
6331
  next = true;
6326
6332
  };
6333
+ App.reply = App.e.reply.bind(App.e);
6327
6334
  const result = await App[plugin.file.method](App.e);
6328
6335
  if (next === false && result === false) next = true;
6329
6336
  }
@@ -8507,7 +8514,7 @@ var init_event = __esm({
8507
8514
  });
8508
8515
 
8509
8516
  // src/adapter/input/index.ts
8510
- import fs15 from "node:fs";
8517
+ import fs16 from "node:fs";
8511
8518
  import path14 from "node:path";
8512
8519
  var index2, botID, AdapterConsole, adapter2;
8513
8520
  var init_input = __esm({
@@ -8619,7 +8626,7 @@ var init_input = __esm({
8619
8626
  const cfg = adapter();
8620
8627
  const name = (++index2).toString();
8621
8628
  const file = path14.join(consolePath, `${name}${ext}`);
8622
- await fs15.promises.writeFile(file, await buffer(data));
8629
+ await fs16.promises.writeFile(file, await buffer(data));
8623
8630
  if (cfg.console.isLocal) {
8624
8631
  return `http://127.0.0.1:${process.env.HTTP_PORT}/console/${name}${ext}`;
8625
8632
  }
@@ -8762,7 +8769,7 @@ var init_cache2 = __esm({
8762
8769
  });
8763
8770
 
8764
8771
  // src/adapter/render/admin/template.ts
8765
- import fs16 from "node:fs";
8772
+ import fs17 from "node:fs";
8766
8773
  import path15 from "node:path";
8767
8774
  import chokidar3 from "chokidar";
8768
8775
  import template from "art-template";
@@ -8784,7 +8791,7 @@ var init_template = __esm({
8784
8791
  const tplData = getCacheData(file);
8785
8792
  const renderData = template.render(tplData, options.data);
8786
8793
  const outputPath = getOutputPath(options.file, renderData, options.name);
8787
- fs16.writeFileSync(outputPath, renderData);
8794
+ fs17.writeFileSync(outputPath, renderData);
8788
8795
  delete options.data;
8789
8796
  delete options.name;
8790
8797
  options.file = `file://${outputPath}`;
@@ -8802,7 +8809,7 @@ var init_template = __esm({
8802
8809
  if (CachingData) {
8803
8810
  return CachingData;
8804
8811
  }
8805
- const tplData = fs16.readFileSync(file, "utf-8");
8812
+ const tplData = fs17.readFileSync(file, "utf-8");
8806
8813
  watch2(file, tplData);
8807
8814
  return tplData;
8808
8815
  };
@@ -8812,7 +8819,7 @@ var init_template = __esm({
8812
8819
  const fileDir = path15.join(htmlPath, name || "render");
8813
8820
  const filePath = path15.join(fileDir, `${basename}-${Date.now()}${extname}`);
8814
8821
  existToMkdirSync(fileDir);
8815
- fs16.writeFileSync(filePath, data);
8822
+ fs17.writeFileSync(filePath, data);
8816
8823
  return filePath;
8817
8824
  };
8818
8825
  watch2 = async (file, data) => {
@@ -8821,7 +8828,7 @@ var init_template = __esm({
8821
8828
  const watcher = chokidar3.watch(file);
8822
8829
  watcherCache.set(file, watcher);
8823
8830
  watcher.on("change", () => {
8824
- cache11.set(file, fs16.readFileSync(file, "utf-8"));
8831
+ cache11.set(file, fs17.readFileSync(file, "utf-8"));
8825
8832
  logger.info(`[\u6587\u4EF6\u53D8\u52A8] html\u6A21\u677F\u53D1\u9001\u53D8\u52A8: ${file}`);
8826
8833
  });
8827
8834
  watcher.on("unlink", () => {
@@ -8843,14 +8850,277 @@ var init_types = __esm({
8843
8850
  }
8844
8851
  });
8845
8852
 
8853
+ // src/utils/fs/static.ts
8854
+ var isStatic;
8855
+ var init_static = __esm({
8856
+ "src/utils/fs/static.ts"() {
8857
+ "use strict";
8858
+ init_esm_shims();
8859
+ init_cache();
8860
+ init_path();
8861
+ isStatic = (filePath) => {
8862
+ try {
8863
+ for (const item of cache9.static) {
8864
+ if (isSubPath(item, filePath)) {
8865
+ return true;
8866
+ }
8867
+ }
8868
+ return false;
8869
+ } catch (error) {
8870
+ logger.error("isStatic", error);
8871
+ return false;
8872
+ }
8873
+ };
8874
+ }
8875
+ });
8876
+
8877
+ // src/adapter/render/connect/ws.ts
8878
+ import fs18 from "node:fs";
8879
+ import crypto from "node:crypto";
8880
+ var WebSocketRender;
8881
+ var init_ws2 = __esm({
8882
+ "src/adapter/render/connect/ws.ts"() {
8883
+ "use strict";
8884
+ init_esm_shims();
8885
+ init_template();
8886
+ init_cache2();
8887
+ init_static();
8888
+ WebSocketRender = class {
8889
+ /** websocket实例 */
8890
+ socket;
8891
+ /** 唯一标识符 */
8892
+ echo = 0;
8893
+ /** 索引 */
8894
+ index;
8895
+ constructor(socket) {
8896
+ this.socket = socket;
8897
+ this.index = -1;
8898
+ }
8899
+ async init() {
8900
+ this.socket.on("close", () => {
8901
+ unregisterRender(this.index);
8902
+ this.socket.removeAllListeners();
8903
+ this.socket.close();
8904
+ });
8905
+ this.socket.on("message", (event) => {
8906
+ const raw2 = event.toString();
8907
+ const { echo, action, status, data } = JSON.parse(raw2);
8908
+ logger.debug(`[WebSocket] ${echo} ${action} ${status}`);
8909
+ logger.trace(`[WebSocket] ${echo} ${raw2}`);
8910
+ if (action === "response") {
8911
+ this.socket.emit(echo, { action, status, data });
8912
+ } else if (action === "close") {
8913
+ logger.error(`[WebSocket] \u6536\u5230\u65AD\u5F00\u8FDE\u63A5\u8BF7\u6C42: ${raw2}`);
8914
+ this.socket.close();
8915
+ } else if (action === "static") {
8916
+ return this.static(echo, data);
8917
+ } else {
8918
+ logger.error(`[WebSocket] \u672A\u77E5\u7684\u8BF7\u6C42: ${raw2}`);
8919
+ }
8920
+ });
8921
+ this.index = registerRender("puppeteer", this.render.bind(this));
8922
+ }
8923
+ /**
8924
+ * @description 鉴权
8925
+ * @param token
8926
+ * @param targetToken 目标的token
8927
+ * @returns 是否鉴权成功
8928
+ */
8929
+ auth(token, targetToken) {
8930
+ if (token !== targetToken) {
8931
+ if (token.length !== 32) {
8932
+ token = crypto.createHash("md5").update(`Bearer ${token}`).digest("hex");
8933
+ }
8934
+ if (targetToken.length !== 32) {
8935
+ targetToken = crypto.createHash("md5").update(`Bearer ${targetToken}`).digest("hex");
8936
+ }
8937
+ if (token !== targetToken) {
8938
+ return false;
8939
+ }
8940
+ }
8941
+ return true;
8942
+ }
8943
+ /**
8944
+ * @description 处理静态资源请求
8945
+ * @param echo 唯一标识符
8946
+ * @param data 数据
8947
+ */
8948
+ async static(echo, data) {
8949
+ const result = isStatic(data.file);
8950
+ if (!result) {
8951
+ logger.warn(`[WebSocket] \u8BBF\u95EE\u7684\u8DEF\u5F84\u975E\u6CD5: echo: ${echo} data: ${JSON.stringify(data)}`);
8952
+ return this.socket.send(JSON.stringify({ echo, status: "error", data: "\u975E\u6CD5\u7684\u8BBF\u95EE\u8DEF\u5F84" }));
8953
+ }
8954
+ const fileData = fs18.readFileSync(data.file);
8955
+ return this.socket.send(JSON.stringify({ echo, status: "ok", data: fileData }));
8956
+ }
8957
+ render(data) {
8958
+ const options = renderTpl(data);
8959
+ return this.sendApi("render", options);
8960
+ }
8961
+ async sendApi(action, data) {
8962
+ const echo = ++this.echo;
8963
+ const str = JSON.stringify({ echo, action, data });
8964
+ logger.debug(`[sendApi][WebSocket] ${echo} ${action} ${str}`);
8965
+ this.socket.send(str);
8966
+ return new Promise((resolve, reject) => {
8967
+ const timeoutId = setTimeout(() => {
8968
+ reject(new Error(`[sendApi] \u8BF7\u6C42\u9519\u8BEF:
8969
+ action: ${action}
8970
+ params: ${str}
8971
+ error: \u8BF7\u6C42\u8D85\u65F6}`));
8972
+ }, 120 * 1e3);
8973
+ this.socket.once(echo + "", ({ status, data: data2 }) => {
8974
+ clearTimeout(timeoutId);
8975
+ if (status === "ok") {
8976
+ return resolve(data2);
8977
+ }
8978
+ reject(new Error(`[sendApi] \u8BF7\u6C42\u9519\u8BEF:
8979
+ action: ${action}
8980
+ params: ${str}
8981
+ error: ${data2}}`));
8982
+ });
8983
+ });
8984
+ }
8985
+ };
8986
+ }
8987
+ });
8988
+
8989
+ // src/adapter/render/connect/client.ts
8990
+ import WebSocket from "ws";
8991
+ var init_client = __esm({
8992
+ async "src/adapter/render/connect/client.ts"() {
8993
+ "use strict";
8994
+ init_esm_shims();
8995
+ init_ws2();
8996
+ await init_render();
8997
+ }
8998
+ });
8999
+
9000
+ // src/adapter/render/connect/server.ts
9001
+ var WebSocketServerRenderer;
9002
+ var init_server2 = __esm({
9003
+ async "src/adapter/render/connect/server.ts"() {
9004
+ "use strict";
9005
+ init_esm_shims();
9006
+ init_ws2();
9007
+ await init_render();
9008
+ init_internal();
9009
+ WebSocketServerRenderer = class extends WebSocketRender {
9010
+ /** 请求实例 */
9011
+ request;
9012
+ constructor(socket, request) {
9013
+ super(socket);
9014
+ this.request = request;
9015
+ }
9016
+ connection() {
9017
+ const cfg = render();
9018
+ if (!cfg.ws_server.enable) {
9019
+ logger.warn("[WebSocket] \u53CD\u5411ws\u672A\u542F\u7528");
9020
+ this.socket.close();
9021
+ return false;
9022
+ }
9023
+ const url = `ws://${this.request.headers.host}${this.request.url}`;
9024
+ if (process.env.WS_SERVER_AUTH_KEY) {
9025
+ const token = this.request.headers["authorization"];
9026
+ if (!token || !this.auth(process.env.WS_SERVER_AUTH_KEY, token)) {
9027
+ logger.error(`[WebSocket] \u9274\u6743\u5931\u8D25: authorization: ${token} url: ${url}`);
9028
+ this.socket.close();
9029
+ return false;
9030
+ }
9031
+ }
9032
+ logger.info(`[WebSocket] \u8FDE\u63A5\u6210\u529F: url: ${url}`);
9033
+ return true;
9034
+ }
9035
+ };
9036
+ listeners.on("ws:connection:puppeteer", (socket, request) => {
9037
+ const server2 = new WebSocketServerRenderer(socket, request);
9038
+ if (!server2.connection()) return;
9039
+ server2.init();
9040
+ });
9041
+ }
9042
+ });
9043
+
9044
+ // src/adapter/render/connect/http.ts
9045
+ import axios4 from "axios";
9046
+ import crypto2 from "node:crypto";
9047
+ var createHttpRenderClient;
9048
+ var init_http = __esm({
9049
+ async "src/adapter/render/connect/http.ts"() {
9050
+ "use strict";
9051
+ init_esm_shims();
9052
+ init_cache2();
9053
+ await init_render();
9054
+ createHttpRenderClient = () => {
9055
+ const cfg = render();
9056
+ if (!cfg.http_server || !Array.isArray(cfg.http_server) || cfg.http_server.length === 0) {
9057
+ logger.trace("[render][http] \u672A\u914D\u7F6E\u4EFB\u4F55\u6B63\u5411HTTP \u5DF2\u8DF3\u8FC7\u521B\u5EFA");
9058
+ return;
9059
+ }
9060
+ return Promise.allSettled(cfg.http_server.map(async (item) => {
9061
+ let { url, token, enable } = item;
9062
+ if (!enable) return;
9063
+ url = url.replace("/puppeteer", "");
9064
+ const headers = { authorization: crypto2.createHash("md5").update(`Bearer ${token}`).digest("hex") };
9065
+ try {
9066
+ const result = await axios4.get(`${url}/ping`, { timeout: 5e3 });
9067
+ if (result.status !== 200 || String(result.data.status) !== "200") {
9068
+ logger.error(`[render][http] \u521B\u5EFA\u6E32\u67D3\u5668\u5931\u8D25: \u65E0\u6CD5\u8FDE\u63A5 ${url}`);
9069
+ }
9070
+ const auth2 = await axios4.get(`${url}/auth`, { headers, timeout: 5e3 });
9071
+ if (auth2.status !== 200 || String(auth2.data.status) !== "200") {
9072
+ logger.error(`[render][http] \u521B\u5EFA\u6E32\u67D3\u5668\u5931\u8D25: \u9274\u6743\u9519\u8BEF ${url}`);
9073
+ return;
9074
+ }
9075
+ } catch (error) {
9076
+ if (axios4.isAxiosError(error)) {
9077
+ const { response } = error;
9078
+ logger.error(`[render][http] \u521B\u5EFA\u6E32\u67D3\u5668\u5931\u8D25: ${response == null ? void 0 : response.status} ${response == null ? void 0 : response.statusText} - ${JSON.stringify((response == null ? void 0 : response.data) || "\u672A\u77E5\u9519\u8BEF")}`);
9079
+ } else {
9080
+ logger.error(`[render][http] \u521B\u5EFA\u6E32\u67D3\u5668\u5931\u8D25: ${error}`);
9081
+ }
9082
+ return;
9083
+ }
9084
+ const index4 = registerRender("puppeteer", async (options) => {
9085
+ var _a;
9086
+ try {
9087
+ const result = await axios4.post(`${url}/puppeteer`, options, { headers });
9088
+ if (result.status !== 200) {
9089
+ throw new Error(`[render][http] \u6E32\u67D3\u5931\u8D25: ${result.status} ${result.statusText} - ${((_a = result.data) == null ? void 0 : _a.message) || "\u672A\u77E5\u9519\u8BEF"}`);
9090
+ }
9091
+ return result.data;
9092
+ } catch (error) {
9093
+ if (axios4.isAxiosError(error)) {
9094
+ if (!error.response) {
9095
+ unregisterRender(index4);
9096
+ throw new Error(`[render][http] \u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25: ${error.message}`);
9097
+ }
9098
+ const { response } = error;
9099
+ throw new Error(`[render][http] \u6E32\u67D3\u5931\u8D25: ${response == null ? void 0 : response.status} ${response == null ? void 0 : response.statusText} - ${JSON.stringify((response == null ? void 0 : response.data) || "\u672A\u77E5\u9519\u8BEF")}`);
9100
+ }
9101
+ if (error instanceof Error) {
9102
+ throw error;
9103
+ }
9104
+ throw new Error(`[render][unknown] \u672A\u77E5\u9519\u8BEF: ${error}`);
9105
+ }
9106
+ });
9107
+ }));
9108
+ };
9109
+ }
9110
+ });
9111
+
8846
9112
  // src/adapter/render/index.ts
8847
9113
  var init_render2 = __esm({
8848
- "src/adapter/render/index.ts"() {
9114
+ async "src/adapter/render/index.ts"() {
8849
9115
  "use strict";
8850
9116
  init_esm_shims();
8851
9117
  init_cache2();
8852
9118
  init_template();
8853
9119
  init_types();
9120
+ await init_client();
9121
+ await init_server2();
9122
+ await init_http();
9123
+ createHttpRenderClient();
8854
9124
  }
8855
9125
  });
8856
9126
 
@@ -9170,7 +9440,7 @@ var button2 = (reg, fnc2, options = {}) => {
9170
9440
 
9171
9441
  // src/core/karin/render.ts
9172
9442
  init_esm_shims();
9173
- init_render2();
9443
+ await init_render2();
9174
9444
  var render3 = (options, multiPageOrId, id) => {
9175
9445
  if (options === "opt") {
9176
9446
  return callRender(multiPageOrId, id);
@@ -9625,26 +9895,7 @@ init_json();
9625
9895
  init_path();
9626
9896
  init_pkg();
9627
9897
  init_require();
9628
-
9629
- // src/utils/fs/static.ts
9630
- init_esm_shims();
9631
- init_cache();
9632
- init_path();
9633
- var isStatic = (filePath) => {
9634
- try {
9635
- for (const item of cache9.static) {
9636
- if (isSubPath(item, filePath)) {
9637
- return true;
9638
- }
9639
- }
9640
- return false;
9641
- } catch (error) {
9642
- logger.error("isStatic", error);
9643
- return false;
9644
- }
9645
- };
9646
-
9647
- // src/utils/fs/fs.ts
9898
+ init_static();
9648
9899
  init_yaml();
9649
9900
  init_watch();
9650
9901
  init_lock();
@@ -9772,7 +10023,7 @@ init_esm_shims();
9772
10023
  init_exec();
9773
10024
  init_require();
9774
10025
  init_list();
9775
- import fs17 from "node:fs";
10026
+ import fs19 from "node:fs";
9776
10027
  var getPkg = (isForcibly = false) => {
9777
10028
  return requireFile("package.json", { force: isForcibly });
9778
10029
  };
@@ -9902,8 +10153,8 @@ var checkGitPluginUpdate = async (filePath, time2 = 120) => {
9902
10153
  var _a;
9903
10154
  const logger3 = (global == null ? void 0 : global.logger) || console;
9904
10155
  try {
9905
- if (!fs17.existsSync(filePath)) return { status: "error", data: new Error("\u8DEF\u5F84\u4E0D\u5B58\u5728") };
9906
- if (!fs17.existsSync(`${filePath}/.git`)) return { status: "error", data: new Error("\u8BE5\u8DEF\u5F84\u4E0D\u662F\u4E00\u4E2Agit\u4ED3\u5E93") };
10156
+ if (!fs19.existsSync(filePath)) return { status: "error", data: new Error("\u8DEF\u5F84\u4E0D\u5B58\u5728") };
10157
+ if (!fs19.existsSync(`${filePath}/.git`)) return { status: "error", data: new Error("\u8BE5\u8DEF\u5F84\u4E0D\u662F\u4E00\u4E2Agit\u4ED3\u5E93") };
9907
10158
  const timer = setTimeout(() => {
9908
10159
  return { status: "failed", data: "\u6267\u884C\u8D85\u65F6" };
9909
10160
  }, time2 * 1e3);
@@ -9954,8 +10205,8 @@ var getTime = async (filePath) => {
9954
10205
  var updateGitPlugin = async (filePath, cmd = "git pull", time2 = 120) => {
9955
10206
  const logger3 = (global == null ? void 0 : global.logger) || console;
9956
10207
  try {
9957
- if (!fs17.existsSync(filePath)) return { status: "failed", data: "\u8DEF\u5F84\u4E0D\u5B58\u5728" };
9958
- if (!fs17.existsSync(`${filePath}/.git`)) return { status: "failed", data: "\u8BE5\u8DEF\u5F84\u4E0D\u662F\u4E00\u4E2Agit\u4ED3\u5E93" };
10208
+ if (!fs19.existsSync(filePath)) return { status: "failed", data: "\u8DEF\u5F84\u4E0D\u5B58\u5728" };
10209
+ if (!fs19.existsSync(`${filePath}/.git`)) return { status: "failed", data: "\u8BE5\u8DEF\u5F84\u4E0D\u662F\u4E00\u4E2Agit\u4ED3\u5E93" };
9959
10210
  const timer = setTimeout(() => {
9960
10211
  return { status: "failed", data: "\u6267\u884C\u8D85\u65F6" };
9961
10212
  }, time2 * 1e3);
@@ -10216,7 +10467,7 @@ init_esm_shims();
10216
10467
  // src/adapter/onebot/core/convert.ts
10217
10468
  init_esm_shims();
10218
10469
  init_message2();
10219
- import fs18 from "node:fs";
10470
+ import fs20 from "node:fs";
10220
10471
  var buildError = (selfId, action, request, error) => {
10221
10472
  if (error) {
10222
10473
  const err = JSON.stringify(error, null, 2).replace(/\\n/g, "\n");
@@ -10281,7 +10532,7 @@ var fileToBase64 = (file, url) => {
10281
10532
  if (!url || !file.startsWith("file://")) return file;
10282
10533
  const list4 = ["127.0.0.1", "localhost"];
10283
10534
  const link = new URL(url);
10284
- return list4.includes(link.hostname) ? file : `base64://${fs18.readFileSync(file.replace("file://", "")).toString("base64")}`;
10535
+ return list4.includes(link.hostname) ? file : `base64://${fs20.readFileSync(file.replace("file://", "")).toString("base64")}`;
10285
10536
  };
10286
10537
  var KarinConvertAdapter = (data, onebot) => {
10287
10538
  var _a, _b, _c;
@@ -12078,7 +12329,7 @@ var WsAdapterOneBot11 = class extends AdapterOneBot {
12078
12329
 
12079
12330
  // src/adapter/onebot/connect/http.ts
12080
12331
  init_esm_shims();
12081
- import axios4 from "axios";
12332
+ import axios5 from "axios";
12082
12333
  init_listeners();
12083
12334
  init_bot();
12084
12335
  var HttpAdapterOneBot11 = class extends AdapterOneBot {
@@ -12141,13 +12392,13 @@ var HttpAdapterOneBot11 = class extends AdapterOneBot {
12141
12392
  logger.bot("debug", this.selfId, `\u53D1\u9001Api\u8BF7\u6C42 ${action}: ${request}`);
12142
12393
  try {
12143
12394
  const headers = this.#token ? { Authorization: `Bearer ${this.#token}` } : {};
12144
- const { data } = await axios4.post(`${this.adapter.address}/${action}`, params, { headers, timeout: time2 * 1e3 });
12395
+ const { data } = await axios5.post(`${this.adapter.address}/${action}`, params, { headers, timeout: time2 * 1e3 });
12145
12396
  if (data.status === "ok") {
12146
12397
  return data.data;
12147
12398
  }
12148
12399
  throw buildError(this.selfId, action, request, data);
12149
12400
  } catch (error) {
12150
- if (axios4.isAxiosError(error) && error.code === "ECONNABORTED") {
12401
+ if (axios5.isAxiosError(error) && error.code === "ECONNABORTED") {
12151
12402
  throw buildError(this.selfId, action, request, "\u8BF7\u6C42\u8D85\u65F6");
12152
12403
  }
12153
12404
  buildError(this.selfId, action, request);
@@ -12158,7 +12409,7 @@ var HttpAdapterOneBot11 = class extends AdapterOneBot {
12158
12409
 
12159
12410
  // src/adapter/onebot/connect/client.ts
12160
12411
  init_esm_shims();
12161
- import WebSocket from "ws";
12412
+ import WebSocket2 from "ws";
12162
12413
  init_bot();
12163
12414
  var AdapterClientOneBot11 = class _AdapterClientOneBot11 extends WsAdapterOneBot11 {
12164
12415
  token;
@@ -12179,7 +12430,7 @@ var AdapterClientOneBot11 = class _AdapterClientOneBot11 extends WsAdapterOneBot
12179
12430
  }
12180
12431
  static async init(url, token) {
12181
12432
  const authorization = token ? `Bearer ${token}` : void 0;
12182
- const socket = authorization ? new WebSocket(url, { headers: { authorization } }) : new WebSocket(url);
12433
+ const socket = authorization ? new WebSocket2(url, { headers: { authorization } }) : new WebSocket2(url);
12183
12434
  socket.on("open", async () => {
12184
12435
  await new _AdapterClientOneBot11(socket, token).init("\u83B7\u53D6\u4E2D...", url, "webSocketClient");
12185
12436
  });
@@ -12394,7 +12645,6 @@ var Plugin = class {
12394
12645
  this.desc = options.desc || "\u65E0\u63CF\u8FF0";
12395
12646
  this.event = options.event || "message";
12396
12647
  this.priority = options.priority || 1e4;
12397
- this.reply = this.e.reply.bind(this.e);
12398
12648
  }
12399
12649
  /**
12400
12650
  * 快速回复合并转发
@@ -10,86 +10,6 @@ var express__default = /*#__PURE__*/_interopDefault(express);
10
10
 
11
11
 
12
12
 
13
- Object.defineProperty(exports, "Application", {
14
- enumerable: true,
15
- get: function () { return express.Application; }
16
- });
17
- Object.defineProperty(exports, "CookieOptions", {
18
- enumerable: true,
19
- get: function () { return express.CookieOptions; }
20
- });
21
- Object.defineProperty(exports, "Errback", {
22
- enumerable: true,
23
- get: function () { return express.Errback; }
24
- });
25
- Object.defineProperty(exports, "ErrorRequestHandler", {
26
- enumerable: true,
27
- get: function () { return express.ErrorRequestHandler; }
28
- });
29
- Object.defineProperty(exports, "Express", {
30
- enumerable: true,
31
- get: function () { return express.Express; }
32
- });
33
- Object.defineProperty(exports, "Handler", {
34
- enumerable: true,
35
- get: function () { return express.Handler; }
36
- });
37
- Object.defineProperty(exports, "IRoute", {
38
- enumerable: true,
39
- get: function () { return express.IRoute; }
40
- });
41
- Object.defineProperty(exports, "IRouter", {
42
- enumerable: true,
43
- get: function () { return express.IRouter; }
44
- });
45
- Object.defineProperty(exports, "IRouterHandler", {
46
- enumerable: true,
47
- get: function () { return express.IRouterHandler; }
48
- });
49
- Object.defineProperty(exports, "IRouterMatcher", {
50
- enumerable: true,
51
- get: function () { return express.IRouterMatcher; }
52
- });
53
- Object.defineProperty(exports, "Locals", {
54
- enumerable: true,
55
- get: function () { return express.Locals; }
56
- });
57
- Object.defineProperty(exports, "MediaType", {
58
- enumerable: true,
59
- get: function () { return express.MediaType; }
60
- });
61
- Object.defineProperty(exports, "NextFunction", {
62
- enumerable: true,
63
- get: function () { return express.NextFunction; }
64
- });
65
- Object.defineProperty(exports, "Request", {
66
- enumerable: true,
67
- get: function () { return express.Request; }
68
- });
69
- Object.defineProperty(exports, "RequestHandler", {
70
- enumerable: true,
71
- get: function () { return express.RequestHandler; }
72
- });
73
- Object.defineProperty(exports, "RequestParamHandler", {
74
- enumerable: true,
75
- get: function () { return express.RequestParamHandler; }
76
- });
77
- Object.defineProperty(exports, "Response", {
78
- enumerable: true,
79
- get: function () { return express.Response; }
80
- });
81
- Object.defineProperty(exports, "Router", {
82
- enumerable: true,
83
- get: function () { return express.Router; }
84
- });
85
- Object.defineProperty(exports, "RouterOptions", {
86
- enumerable: true,
87
- get: function () { return express.RouterOptions; }
88
- });
89
- Object.defineProperty(exports, "Send", {
90
- enumerable: true,
91
- get: function () { return express.Send; }
92
- });
93
13
  Object.defineProperty(exports, "default", {
94
14
  enumerable: true,
95
15
  get: function () { return express__default.default; }
@@ -1 +1 @@
1
- export { Application, CookieOptions, Errback, ErrorRequestHandler, Express, Handler, IRoute, IRouter, IRouterHandler, IRouterMatcher, Locals, MediaType, NextFunction, Request, RequestHandler, RequestParamHandler, Response, Router, RouterOptions, Send, default, json, query, raw, text } from 'express';
1
+ export { default, json, query, raw, text } from 'express';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-karin",
3
- "version": "0.12.25.pr.206.f697b50",
3
+ "version": "0.12.25.pr.206.fd03f9f",
4
4
  "description": "Lightweight, efficient, concise, and stable robot framework.",
5
5
  "keywords": [
6
6
  "node",