alemonjs 2.1.0-alpha.9 → 2.1.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.
Files changed (229) hide show
  1. package/README.md +3 -31
  2. package/README_CONFIG.md +62 -0
  3. package/bin/alemonc.js +23 -23
  4. package/bin/run.js +3 -3
  5. package/bin/start.js +16 -16
  6. package/bin/updateConfig.js +36 -36
  7. package/lib/{datastructure → app}/SinglyLinkedList.d.ts +2 -3
  8. package/lib/{datastructure → app}/SinglyLinkedList.js +16 -19
  9. package/lib/app/define-chidren.d.ts +2 -12
  10. package/lib/app/define-chidren.js +1 -7
  11. package/lib/app/define-middleware.d.ts +2 -0
  12. package/lib/app/define-middleware.js +8 -0
  13. package/lib/app/define-response.d.ts +3 -0
  14. package/lib/app/define-response.js +11 -0
  15. package/lib/app/event-group.d.ts +3 -0
  16. package/lib/app/event-group.js +22 -0
  17. package/lib/app/event-middleware.d.ts +3 -20
  18. package/lib/app/event-middleware.js +6 -11
  19. package/lib/app/event-processor-callHandler.d.ts +1 -0
  20. package/lib/app/event-processor-callHandler.js +72 -0
  21. package/lib/app/event-processor-cycle.d.ts +2 -0
  22. package/lib/app/event-processor-cycle.js +46 -46
  23. package/lib/app/event-processor-cycleFiles.d.ts +2 -0
  24. package/lib/app/event-processor-cycleFiles.js +91 -0
  25. package/lib/app/event-processor-cycleRoute.d.ts +2 -0
  26. package/lib/app/event-processor-cycleRoute.js +74 -0
  27. package/lib/app/event-processor-event.d.ts +2 -0
  28. package/lib/app/event-processor-event.js +12 -151
  29. package/lib/app/event-processor-middleware.d.ts +2 -0
  30. package/lib/app/event-processor-middleware.js +12 -154
  31. package/lib/app/event-processor-subscribe.d.ts +5 -0
  32. package/lib/app/event-processor-subscribe.js +8 -50
  33. package/lib/app/event-processor.d.ts +3 -21
  34. package/lib/app/event-processor.js +62 -49
  35. package/lib/app/event-response.d.ts +3 -12
  36. package/lib/app/event-response.js +5 -7
  37. package/lib/app/hook-use-api.d.ts +24 -101
  38. package/lib/app/hook-use-api.js +26 -187
  39. package/lib/app/hook-use-state.d.ts +3 -29
  40. package/lib/app/hook-use-state.js +4 -36
  41. package/lib/app/hook-use-subscribe.d.ts +12 -15
  42. package/lib/app/hook-use-subscribe.js +12 -48
  43. package/lib/app/index.d.ts +18 -0
  44. package/lib/app/index.js +19 -0
  45. package/lib/app/load_modules/index.d.ts +2 -0
  46. package/lib/app/load_modules/index.js +2 -0
  47. package/lib/app/load_modules/load.d.ts +2 -0
  48. package/lib/app/load_modules/load.js +34 -0
  49. package/lib/app/load_modules/loadChild.d.ts +2 -0
  50. package/lib/app/{load.js → load_modules/loadChild.js} +58 -42
  51. package/lib/app/message-api.d.ts +12 -28
  52. package/lib/app/message-api.js +17 -31
  53. package/lib/app/message-format.d.ts +13 -95
  54. package/lib/app/message-format.js +11 -151
  55. package/lib/app/store.d.ts +39 -55
  56. package/lib/app/store.js +91 -69
  57. package/lib/app.d.ts +18 -0
  58. package/lib/app.js +82 -0
  59. package/lib/cbp/connects/client.d.ts +2 -0
  60. package/lib/cbp/connects/client.js +150 -0
  61. package/lib/cbp/connects/connect.d.ts +9 -0
  62. package/lib/cbp/connects/connect.js +63 -0
  63. package/lib/cbp/connects/platform.d.ts +9 -0
  64. package/lib/cbp/connects/platform.js +142 -0
  65. package/lib/cbp/index.d.ts +3 -32
  66. package/lib/cbp/index.js +3 -348
  67. package/lib/cbp/processor/actions.d.ts +3 -0
  68. package/lib/cbp/{actions.js → processor/actions.js} +9 -17
  69. package/lib/cbp/processor/api.d.ts +3 -0
  70. package/lib/cbp/{api.js → processor/api.js} +9 -17
  71. package/lib/cbp/processor/config.d.ts +26 -0
  72. package/lib/cbp/{config.js → processor/config.js} +9 -19
  73. package/lib/cbp/processor/hello.html.d.ts +1 -0
  74. package/lib/cbp/processor/hello.html.js +47 -0
  75. package/lib/cbp/routers/hello.html.d.ts +2 -0
  76. package/lib/cbp/routers/hello.html.js +31 -0
  77. package/lib/cbp/routers/middleware.d.ts +2 -0
  78. package/lib/cbp/routers/middleware.js +40 -0
  79. package/lib/cbp/routers/router.d.ts +3 -0
  80. package/lib/cbp/routers/router.js +21 -0
  81. package/lib/cbp/routers/utils.d.ts +2 -0
  82. package/lib/cbp/routers/utils.js +39 -0
  83. package/lib/cbp/server/main.d.ts +1 -0
  84. package/lib/cbp/server/main.js +413 -0
  85. package/lib/cbp/server/testone.d.ts +8 -0
  86. package/lib/cbp/server/testone.js +270 -0
  87. package/lib/cbp/typings.d.ts +20 -0
  88. package/lib/cbp/typings.js +1 -0
  89. package/lib/client.d.ts +1 -0
  90. package/lib/client.js +87 -0
  91. package/lib/core/config.d.ts +4 -38
  92. package/lib/core/config.js +16 -51
  93. package/lib/core/index.d.ts +3 -0
  94. package/lib/core/index.js +3 -0
  95. package/lib/core/react.d.ts +28 -0
  96. package/lib/core/react.js +124 -0
  97. package/lib/core/utils.d.ts +12 -65
  98. package/lib/core/utils.js +6 -56
  99. package/lib/core/variable.d.ts +29 -0
  100. package/lib/core/variable.js +26 -29
  101. package/lib/global.d.ts +7 -65
  102. package/lib/global.js +0 -7
  103. package/lib/index.d.ts +6 -44
  104. package/lib/index.js +21 -13
  105. package/lib/main.d.ts +2 -42
  106. package/lib/main.js +55 -113
  107. package/lib/process/index.d.ts +2 -0
  108. package/lib/process/index.js +2 -0
  109. package/lib/process/module.d.ts +1 -0
  110. package/lib/process/module.js +105 -0
  111. package/lib/process/platform.d.ts +1 -0
  112. package/lib/process/platform.js +148 -0
  113. package/lib/server/main.d.ts +1 -0
  114. package/lib/server/main.js +30 -0
  115. package/lib/server/routers/hello.html.d.ts +2 -0
  116. package/lib/server/routers/hello.html.js +31 -0
  117. package/lib/server/routers/middleware.d.ts +2 -0
  118. package/lib/server/routers/middleware.js +40 -0
  119. package/lib/server/routers/router.d.ts +3 -0
  120. package/lib/server/routers/router.js +266 -0
  121. package/lib/server/routers/utils.d.ts +2 -0
  122. package/lib/server/routers/utils.js +39 -0
  123. package/lib/types/actions.d.ts +91 -0
  124. package/lib/types/actions.js +1 -0
  125. package/lib/{typing → types}/apis.d.ts +1 -9
  126. package/lib/types/apis.js +1 -0
  127. package/lib/types/client/index.d.ts +25 -0
  128. package/lib/types/client/index.js +1 -0
  129. package/lib/types/cycle/index.d.ts +16 -0
  130. package/lib/types/cycle/index.js +1 -0
  131. package/lib/{typing → types}/event/actions.d.ts +1 -3
  132. package/lib/{typing → types}/event/actions.js +0 -34
  133. package/lib/types/event/base/expansion.d.ts +3 -0
  134. package/lib/types/event/base/expansion.js +1 -0
  135. package/lib/types/event/base/guild.d.ts +7 -0
  136. package/lib/types/event/base/guild.js +1 -0
  137. package/lib/types/event/base/message.d.ts +11 -0
  138. package/lib/types/event/base/message.js +1 -0
  139. package/lib/types/event/base/platform.d.ts +5 -0
  140. package/lib/types/event/base/platform.js +1 -0
  141. package/lib/types/event/base/user.d.ts +8 -0
  142. package/lib/types/event/base/user.js +1 -0
  143. package/lib/types/event/channal/index.d.ts +10 -0
  144. package/lib/types/event/channal/index.js +1 -0
  145. package/lib/types/event/guild/index.d.ts +10 -0
  146. package/lib/types/event/guild/index.js +1 -0
  147. package/lib/types/event/index.d.ts +60 -0
  148. package/lib/types/event/index.js +1 -0
  149. package/lib/types/event/interaction/index.d.ts +11 -0
  150. package/lib/types/event/interaction/index.js +1 -0
  151. package/lib/{typing → types}/event/map.d.ts +13 -18
  152. package/lib/types/event/map.js +1 -0
  153. package/lib/types/event/member/index.d.ts +11 -0
  154. package/lib/types/event/member/index.js +1 -0
  155. package/lib/types/event/message/message.d.ts +20 -0
  156. package/lib/types/event/message/message.js +1 -0
  157. package/lib/types/event/message/private.message.d.ts +13 -0
  158. package/lib/types/event/message/private.message.js +1 -0
  159. package/lib/types/event/request/index.d.ts +10 -0
  160. package/lib/types/event/request/index.js +1 -0
  161. package/lib/types/index.d.ts +26 -0
  162. package/lib/types/index.js +1 -0
  163. package/lib/types/logger/index.d.ts +9 -0
  164. package/lib/types/logger/index.js +1 -0
  165. package/lib/{typing → types}/message/ark.d.ts +6 -8
  166. package/lib/types/message/ark.js +1 -0
  167. package/lib/{typing → types}/message/button.d.ts +7 -8
  168. package/lib/types/message/button.js +1 -0
  169. package/lib/types/message/image.d.ts +12 -0
  170. package/lib/types/message/image.js +1 -0
  171. package/lib/types/message/index.d.ts +16 -0
  172. package/lib/types/message/index.js +1 -0
  173. package/lib/{typing → types}/message/link.d.ts +1 -6
  174. package/lib/types/message/link.js +1 -0
  175. package/lib/types/message/markdown.d.ts +87 -0
  176. package/lib/types/message/markdown.js +1 -0
  177. package/lib/{typing → types}/message/mention.d.ts +3 -9
  178. package/lib/types/message/mention.js +1 -0
  179. package/lib/{typing → types}/message/text.d.ts +1 -6
  180. package/lib/types/message/text.js +1 -0
  181. package/lib/{typing → types}/package/index.d.ts +1 -3
  182. package/lib/types/package/index.js +1 -0
  183. package/lib/types/run.d.ts +13 -0
  184. package/lib/types/run.js +1 -0
  185. package/lib/types/state/index.d.ts +3 -0
  186. package/lib/types/state/index.js +1 -0
  187. package/lib/types/store/res.d.ts +41 -0
  188. package/lib/types/store/res.js +1 -0
  189. package/lib/types/subscribe/index.d.ts +21 -0
  190. package/lib/types/subscribe/index.js +1 -0
  191. package/lib/utils.d.ts +23 -37
  192. package/lib/utils.js +94 -48
  193. package/package.json +20 -12
  194. package/lib/app/define-bot.d.ts +0 -17
  195. package/lib/app/define-bot.js +0 -39
  196. package/lib/app/load.d.ts +0 -14
  197. package/lib/app/utils.d.ts +0 -77
  198. package/lib/app/utils.js +0 -162
  199. package/lib/cbp/connect.d.ts +0 -27
  200. package/lib/cbp/connect.js +0 -370
  201. package/lib/cbp/message.js +0 -9
  202. package/lib/cbp/router.js +0 -15
  203. package/lib/core/code.d.ts +0 -16
  204. package/lib/core/code.js +0 -17
  205. package/lib/jsx.d.ts +0 -142
  206. package/lib/jsx.js +0 -234
  207. package/lib/typing/actions.d.ts +0 -42
  208. package/lib/typing/client/index.d.ts +0 -67
  209. package/lib/typing/cycle/index.d.ts +0 -42
  210. package/lib/typing/event/base/guild.d.ts +0 -14
  211. package/lib/typing/event/base/message.d.ts +0 -28
  212. package/lib/typing/event/base/platform.d.ts +0 -16
  213. package/lib/typing/event/base/user.d.ts +0 -34
  214. package/lib/typing/event/channal/index.d.ts +0 -12
  215. package/lib/typing/event/guild/index.d.ts +0 -12
  216. package/lib/typing/event/index.d.ts +0 -82
  217. package/lib/typing/event/interaction/index.d.ts +0 -13
  218. package/lib/typing/event/map.js +0 -20
  219. package/lib/typing/event/member/index.d.ts +0 -13
  220. package/lib/typing/event/message/message.d.ts +0 -22
  221. package/lib/typing/event/message/private.message.d.ts +0 -15
  222. package/lib/typing/event/request/index.d.ts +0 -12
  223. package/lib/typing/logger/index.d.ts +0 -49
  224. package/lib/typing/message/image.d.ts +0 -23
  225. package/lib/typing/message/index.d.ts +0 -16
  226. package/lib/typing/message/markdown.d.ts +0 -81
  227. package/lib/typing/state/index.d.ts +0 -5
  228. package/lib/typing/store/res.d.ts +0 -75
  229. package/lib/typing/subscribe/index.d.ts +0 -30
package/README.md CHANGED
@@ -1,33 +1,5 @@
1
- # [https://alemonjs.com/](https://alemonjs.com/)
1
+ # ALemonJS
2
2
 
3
- 聊天机器人开发框架
3
+ [alemonjs](https://alemonjs.com) 是一个专门用于开发聊天机器人的 Node.js 框架,它提供了完整的事件驱动架构来处理各种聊天平台的消息和交互。
4
4
 
5
- ```sh
6
- yarn add alemonjs @alemonjs/gui -W
7
- ```
8
-
9
- - 启动
10
-
11
- > src/index.js
12
-
13
- ```js
14
- import { start } from 'alemonjs'
15
- start('src/index.js')
16
- ```
17
-
18
- - 响应
19
-
20
- > src/response/res.js
21
-
22
- ```js
23
- import { Text, useMessage } from 'alemonjs'
24
- // 创建事件类型
25
- export const selects = onSelects(['message.create'])
26
- // 导出响应
27
- export default onResponse(selects, event => {
28
- // 使用发送函数
29
- const [message] = useMessage(event)
30
- // 发送文本
31
- message.send(format(Text('Hello Word!')))
32
- })
33
- ```
5
+ https://alemonjs.com
@@ -0,0 +1,62 @@
1
+ # 环境变量
2
+
3
+ `platform`:`string` 平台
4
+
5
+ `login`:`string` 登录
6
+
7
+ `LOG_PATH`:`string` log 地址
8
+
9
+ `PKG_PATH`:`string` package.json 地址
10
+
11
+ `NODE_ENV`:`development | production` 环境判断
12
+
13
+ `CFG_PATH`: `string`
14
+
15
+ # 配置
16
+
17
+ ```yaml
18
+ # 常规配置
19
+ port: 17117 # 端口,快捷参数 --port
20
+ input: 'lib/index.js' # 入口地址,快捷参数 --input
21
+ login: 'discord' # 选择登录的平台,快捷参数 --login
22
+ url: 'ws://127.0.0.1:17117' # 连接阿柠檬服务URL,快捷参数 --url
23
+ is_full_receive: false # 不全量接收消息(用于分流处理)
24
+ # 禁用设置
25
+ disabled_text_regular: '/闭关' # 设置正则,若匹配则禁用
26
+ disabled_selects: # 禁用事件。若匹配则禁用
27
+ 'private.message.create': true # 禁用私聊
28
+ disabled_user_id:
29
+ '1715713638': true # 若匹配则禁用
30
+ disabled_user_key:
31
+ '123456': true # 多匹配则禁用
32
+ # 重定向:把指定的文本,转为指定的内容 (禁用规则比重定向优先)
33
+ redirect_text_regular: '^#' # 识别前缀 #
34
+ redirect_text_target: '/' # 替换为 /
35
+ # 映射规则
36
+ mapping_text:
37
+ - regular: '/开始游戏'
38
+ target: '/踏入仙途'
39
+ # ismaster 设置
40
+ master_id:
41
+ '1715713638': true
42
+ master_key:
43
+ '123456': true
44
+ # bot 设置
45
+ bot_id:
46
+ '1715713638': true # 把指定 id 视为 isBot
47
+ bot_key:
48
+ '123456': true # 把指定bot kye 视为 isBot
49
+ # 处理器
50
+ processor:
51
+ repeated_event_time: 60000 # 过滤掉 1分钟内出现相同 MessageId 的 event
52
+ repeated_user_time: 1000 # 过滤掉 1秒内出现相同UserId 的 event
53
+ # 加载子模块 (支持 array 写法)
54
+ apps:
55
+ 'alemonjs-openai': true
56
+ # 模块配置, 约定。
57
+ # 模块对应的配置名,应是模块名。
58
+ alemonjs-openai:
59
+ baseURL: 'https://api.deepseek.com'
60
+ apiKey: ''
61
+ model: 'deepseek-chat'
62
+ ```
package/bin/alemonc.js CHANGED
@@ -1,66 +1,66 @@
1
1
  #!/usr/bin/env node
2
- import { updateConfig } from './updateConfig.js'
3
- import { run } from './run.js'
4
- import { start } from './start.js'
5
- import { Command } from 'commander'
6
- const program = new Command()
2
+ import { updateConfig } from './updateConfig.js';
3
+ import { run } from './run.js';
4
+ import { start } from './start.js';
5
+ import { Command } from 'commander';
6
+ const program = new Command();
7
7
 
8
- program.name('alemonc').description('CLI to some alemonc actions and scripts').version('1.0.0')
8
+ program.name('alemonc').description('CLI to some alemonc actions and scripts').version('1.0.0');
9
9
 
10
10
  program
11
11
  .command('add <key> [values...]')
12
12
  .description('给key为数据的值添加元素')
13
13
  .action((key, values) => {
14
- updateConfig('add', key, values)
15
- })
14
+ updateConfig('add', key, values);
15
+ });
16
16
 
17
17
  program
18
18
  .command('remove <key> [values...]')
19
19
  .description('给key为数据的值移除元素')
20
20
  .action((key, values) => {
21
- updateConfig('remove', key, values)
22
- })
21
+ updateConfig('remove', key, values);
22
+ });
23
23
 
24
24
  program
25
25
  .command('set <key> [values...]')
26
26
  .description('给某个key设置值')
27
27
  .action((key, values) => {
28
- updateConfig('set', key, values)
29
- })
28
+ updateConfig('set', key, values);
29
+ });
30
30
 
31
31
  program
32
32
  .command('del <key>')
33
33
  .description('删除指定配置')
34
34
  .action(key => {
35
- updateConfig('del', key)
36
- })
35
+ updateConfig('del', key);
36
+ });
37
37
 
38
38
  program
39
39
  .command('get <key>')
40
40
  .description('获取指定配置')
41
41
  .action(key => {
42
- updateConfig('get', key)
43
- })
42
+ updateConfig('get', key);
43
+ });
44
44
 
45
45
  program
46
46
  .command('run [script]')
47
47
  .description('运行指定脚本')
48
48
  .action(script => {
49
- run(script)
50
- })
49
+ run(script);
50
+ });
51
51
 
52
52
  program
53
53
  .command('start')
54
54
  .description('启动 package.json 中的 main 入口')
55
55
  .action(() => {
56
- start()
57
- })
56
+ start();
57
+ });
58
58
 
59
59
  program
60
60
  .command('help')
61
61
  .description('获取帮助')
62
62
  .action(() => {
63
- program.help()
64
- })
63
+ program.help();
64
+ });
65
65
 
66
- program.parse(process.argv)
66
+ program.parse(process.argv);
package/bin/run.js CHANGED
@@ -6,6 +6,6 @@
6
6
  */
7
7
  export const run = dir => {
8
8
  import('../lib/index.js').then(res => {
9
- res.start(dir)
10
- })
11
- }
9
+ res.start(dir);
10
+ });
11
+ };
package/bin/start.js CHANGED
@@ -1,30 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import path from 'path'
4
- import fs from 'fs'
5
- import { createRequire } from 'module'
6
- const require = createRequire(import.meta.url)
3
+ import path from 'path';
4
+ import fs from 'fs';
5
+ import { createRequire } from 'module';
6
+ const require = createRequire(import.meta.url);
7
7
 
8
8
  const createExports = packageJson => {
9
9
  if (packageJson?.exports) {
10
10
  if (typeof packageJson.exports === 'string') {
11
- return packageJson.exports
11
+ return packageJson.exports;
12
12
  } else if (typeof packageJson.exports === 'object') {
13
- return packageJson.exports['.'] || packageJson.exports['./index.js']
13
+ return packageJson.exports['.'] || packageJson.exports['./index.js'];
14
14
  }
15
15
  }
16
- }
16
+ };
17
17
 
18
18
  const getInputExportPath = input => {
19
- const packageJsonPath = path.join(input ?? process.cwd(), 'package.json')
19
+ const packageJsonPath = path.join(input ?? process.cwd(), 'package.json');
20
20
  if (fs.existsSync(packageJsonPath)) {
21
- const packageJson = require(packageJsonPath)
22
- const main = packageJson?.main || createExports(packageJson)
21
+ const packageJson = require(packageJsonPath);
22
+ const main = packageJson?.main || createExports(packageJson);
23
23
  if (main) {
24
- return main
24
+ return main;
25
25
  }
26
26
  }
27
- }
27
+ };
28
28
 
29
29
  /**
30
30
  *
@@ -32,8 +32,8 @@ const getInputExportPath = input => {
32
32
  */
33
33
  export const start = () => {
34
34
  // 读取配置文件
35
- const main = getInputExportPath()
35
+ const main = getInputExportPath();
36
36
  import('../lib/index.js').then(res => {
37
- res.start(main)
38
- })
39
- }
37
+ res.start(main);
38
+ });
39
+ };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { join } from 'path'
3
- import fs from 'fs'
4
- import YAML from 'yaml'
5
- const configPath = join(process.cwd(), 'alemon.config.yaml')
2
+ import { join } from 'path';
3
+ import fs from 'fs';
4
+ import YAML from 'yaml';
5
+ const configPath = join(process.cwd(), 'alemon.config.yaml');
6
6
 
7
7
  /**
8
8
  * 更新配置
@@ -12,72 +12,72 @@ const configPath = join(process.cwd(), 'alemon.config.yaml')
12
12
  * @returns
13
13
  */
14
14
  export function updateConfig(action, key, value = []) {
15
- let config = {}
15
+ let config = {};
16
16
  if (fs.existsSync(configPath)) {
17
- const data = fs.readFileSync(configPath, 'utf8')
18
- config = YAML.parse(data) ?? {}
17
+ const data = fs.readFileSync(configPath, 'utf8');
18
+ config = YAML.parse(data) ?? {};
19
19
  }
20
- const keys = key.split('.')
21
- let current = config
20
+ const keys = key.split('.');
21
+ let current = config;
22
22
  if (action === 'add') {
23
23
  for (let i = 0; i < keys.length - 1; i++) {
24
- const currentKey = keys[i]
24
+ const currentKey = keys[i];
25
25
  if (current[currentKey] === null || typeof current[currentKey] !== 'object') {
26
- current[currentKey] = {} // 确保当前键的值是一个对象
26
+ current[currentKey] = {}; // 确保当前键的值是一个对象
27
27
  }
28
- current = current[currentKey]
28
+ current = current[currentKey];
29
29
  }
30
- const finalKey = keys[keys.length - 1]
30
+ const finalKey = keys[keys.length - 1];
31
31
  if (!Array.isArray(current[finalKey])) {
32
- current[finalKey] = [] // 如果最终键的值不是数组,则初始化为空数组
32
+ current[finalKey] = []; // 如果最终键的值不是数组,则初始化为空数组
33
33
  }
34
- current[finalKey] = [...new Set([...current[finalKey], ...value])] // 去重并添加新值
34
+ current[finalKey] = [...new Set([...current[finalKey], ...value])]; // 去重并添加新值
35
35
  } else if (action === 'remove') {
36
36
  for (let i = 0; i < keys.length - 1; i++) {
37
- const currentKey = keys[i]
37
+ const currentKey = keys[i];
38
38
  if (current[currentKey] === null || typeof current[currentKey] !== 'object') {
39
- return // 如果路径不存在,直接返回
39
+ return; // 如果路径不存在,直接返回
40
40
  }
41
- current = current[currentKey]
41
+ current = current[currentKey];
42
42
  }
43
- const finalKey = keys[keys.length - 1]
43
+ const finalKey = keys[keys.length - 1];
44
44
  if (Array.isArray(current[finalKey])) {
45
- current[finalKey] = current[finalKey].filter(item => !value.includes(item)) // 过滤掉要删除的值
45
+ current[finalKey] = current[finalKey].filter(item => !value.includes(item)); // 过滤掉要删除的值
46
46
  }
47
47
  } else if (action === 'set') {
48
48
  for (let i = 0; i < keys.length - 1; i++) {
49
- const currentKey = keys[i]
49
+ const currentKey = keys[i];
50
50
  if (current[currentKey] === null || typeof current[currentKey] !== 'object') {
51
- current[currentKey] = {} // 确保当前键的值是一个对象
51
+ current[currentKey] = {}; // 确保当前键的值是一个对象
52
52
  }
53
- current = current[currentKey]
53
+ current = current[currentKey];
54
54
  }
55
- current[keys[keys.length - 1]] = value[0]
55
+ current[keys[keys.length - 1]] = value[0];
56
56
  } else if (action === 'del') {
57
57
  for (let i = 0; i < keys.length - 1; i++) {
58
- const currentKey = keys[i]
58
+ const currentKey = keys[i];
59
59
  if (current[currentKey] === null || typeof current[currentKey] !== 'object') {
60
- return // 如果路径不存在,直接返回
60
+ return; // 如果路径不存在,直接返回
61
61
  }
62
- current = current[currentKey]
62
+ current = current[currentKey];
63
63
  }
64
- delete current[keys[keys.length - 1]]
64
+ delete current[keys[keys.length - 1]];
65
65
  } else if (action === 'get') {
66
66
  for (let i = 0; i < keys.length; i++) {
67
- const currentKey = keys[i]
67
+ const currentKey = keys[i];
68
68
  if (current[currentKey] === null || typeof current[currentKey] !== 'object') {
69
69
  if (i === keys.length - 1) {
70
- console.log(current[currentKey]) // 输出最终值
70
+ console.log(current[currentKey]); // 输出最终值
71
71
  } else {
72
- console.log(undefined) // 路径不存在
72
+ console.log(undefined); // 路径不存在
73
73
  }
74
- return
74
+ return;
75
75
  }
76
- current = current[currentKey]
76
+ current = current[currentKey];
77
77
  }
78
- console.log(current) // 输出最终值
79
- return
78
+ console.log(current); // 输出最终值
79
+ return;
80
80
  }
81
81
 
82
- fs.writeFileSync(configPath, YAML.stringify(config))
82
+ fs.writeFileSync(configPath, YAML.stringify(config));
83
83
  }
@@ -3,7 +3,7 @@ declare class ListNode<T> {
3
3
  next: ListNode<T> | null;
4
4
  constructor(data: T);
5
5
  }
6
- declare class SinglyLinkedList<T> {
6
+ export declare class SinglyLinkedList<T> {
7
7
  private head;
8
8
  private size;
9
9
  private current;
@@ -13,5 +13,4 @@ declare class SinglyLinkedList<T> {
13
13
  removeCurrent(): void;
14
14
  getSize(): number;
15
15
  }
16
-
17
- export { SinglyLinkedList };
16
+ export {};
@@ -1,24 +1,23 @@
1
1
  class ListNode {
2
- data; // 节点数据
3
- next; // 指向下一个节点的指针
2
+ data;
3
+ next;
4
4
  constructor(data) {
5
5
  this.data = data;
6
6
  this.next = null;
7
7
  }
8
8
  }
9
9
  class SinglyLinkedList {
10
- head; // 链表的头节点
11
- size; // 链表的大小
12
- current; // 当前节点指针
10
+ head;
11
+ size;
12
+ current;
13
13
  constructor(initialValues) {
14
14
  this.head = null;
15
15
  this.size = 0;
16
- this.current = null; // 初始化当前节点为 null
16
+ this.current = null;
17
17
  if (initialValues) {
18
- initialValues.forEach(value => this.append(value)); // 初始化链表
18
+ initialValues.forEach(value => this.append(value));
19
19
  }
20
20
  }
21
- // 在链表末尾添加新节点
22
21
  append(data) {
23
22
  const newNode = new ListNode(data);
24
23
  if (!this.head) {
@@ -33,23 +32,22 @@ class SinglyLinkedList {
33
32
  }
34
33
  this.size++;
35
34
  }
36
- // 获取下一个节点并移动指针
37
35
  popNext() {
38
36
  if (!this.current) {
39
- this.current = this.head; // 如果当前节点为 null,从头节点开始
37
+ this.current = this.head;
40
38
  }
41
39
  else {
42
- this.current = this.current.next; // 移动到下一个节点
40
+ this.current = this.current.next;
43
41
  }
44
- return this.current; // 返回当前节点
42
+ return this.current;
45
43
  }
46
- // 删除当前节点
47
44
  removeCurrent() {
48
- if (!this.head)
45
+ if (!this.head) {
49
46
  return;
47
+ }
50
48
  if (this.current === this.head) {
51
- this.head = this.head.next; // 移除头节点
52
- this.current = null; // 重置当前节点
49
+ this.head = this.head.next;
50
+ this.current = null;
53
51
  this.size--;
54
52
  return;
55
53
  }
@@ -58,12 +56,11 @@ class SinglyLinkedList {
58
56
  previous = previous.next;
59
57
  }
60
58
  if (previous && this.current) {
61
- previous.next = this.current.next; // 跳过当前节点
62
- this.current = null; // 重置当前节点
59
+ previous.next = this.current.next;
60
+ this.current = null;
63
61
  this.size--;
64
62
  }
65
63
  }
66
- // 获取链表的大小
67
64
  getSize() {
68
65
  return this.size;
69
66
  }
@@ -1,12 +1,2 @@
1
- import { DefineChildrenFunc } from '../typing/event/index.js';
2
- import '../global.js';
3
-
4
- /**
5
- * 定义子事件
6
- * @param callback
7
- * @throws {Error} - 如果 callback 无效,抛出错误。
8
- * @returns
9
- */
10
- declare const defineChildren: DefineChildrenFunc;
11
-
12
- export { defineChildren };
1
+ import { DefineChildrenFunc } from '../types';
2
+ export declare const defineChildren: DefineChildrenFunc;
@@ -1,11 +1,5 @@
1
- import { ResultCode } from '../core/code.js';
1
+ import { ResultCode } from '../core/variable.js';
2
2
 
3
- /**
4
- * 定义子事件
5
- * @param callback
6
- * @throws {Error} - 如果 callback 无效,抛出错误。
7
- * @returns
8
- */
9
3
  const defineChildren = callback => {
10
4
  if (typeof callback === 'function' || typeof callback === 'object') {
11
5
  return {
@@ -0,0 +1,2 @@
1
+ import { defineMiddlewareFunc } from '../types';
2
+ export declare const defineMiddleware: defineMiddlewareFunc;
@@ -0,0 +1,8 @@
1
+ const defineMiddleware = middleware => {
2
+ return {
3
+ current: middleware
4
+ };
5
+ };
6
+ global.defineMiddleware = defineMiddleware;
7
+
8
+ export { defineMiddleware };
@@ -0,0 +1,3 @@
1
+ import { DefineResponseFunc } from '../types';
2
+ export declare const lazy: (fnc: () => Promise<any>) => () => Promise<any>;
3
+ export declare const defineResponse: DefineResponseFunc;
@@ -0,0 +1,11 @@
1
+ const lazy = (fnc) => {
2
+ return async () => (await fnc()).default;
3
+ };
4
+ const defineResponse = responses => {
5
+ return {
6
+ current: responses
7
+ };
8
+ };
9
+ global.defineResponse = defineResponse;
10
+
11
+ export { defineResponse, lazy };
@@ -0,0 +1,3 @@
1
+ import { OnGroupFunc } from '../types';
2
+ declare const onGroup: OnGroupFunc;
3
+ export { onGroup };
@@ -0,0 +1,22 @@
1
+ const onGroup = (...calls) => {
2
+ if (calls.length === 0) {
3
+ throw new Error('onGroup: 至少需要一个响应或中间件');
4
+ }
5
+ const firstItem = calls[0];
6
+ const baseSelects = firstItem.select;
7
+ const currents = calls.reduce((acc, item) => {
8
+ if (Array.isArray(item.current)) {
9
+ return acc.concat(item.current);
10
+ }
11
+ else {
12
+ return acc.concat(item.current);
13
+ }
14
+ }, []);
15
+ return {
16
+ select: baseSelects,
17
+ current: currents
18
+ };
19
+ };
20
+ global.onGroup = onGroup;
21
+
22
+ export { onGroup };
@@ -1,20 +1,3 @@
1
- import { OnMiddlewareReversalFunc } from '../typing/event/index.js';
2
- import '../global.js';
3
-
4
- /**
5
- * @fileoverview 中间件
6
- * @module middleware
7
- * @author ningmengchongshui
8
- */
9
-
10
- /**
11
- * 中间件
12
- * @param select 事件选择
13
- * @param callback 回调函数,处理事件和 API
14
- * @throws {Error} - 如果 select 无效,抛出错误。
15
- * @throws {Error} - 如果 callback 无效,抛出错误。
16
- * @returns
17
- */
18
- declare const onMiddleware: OnMiddlewareReversalFunc;
19
-
20
- export { onMiddleware };
1
+ import { OnMiddlewareReversalFunc, OnMiddlewareReversalFuncBack } from '../types';
2
+ export declare const onMiddleware: OnMiddlewareReversalFunc;
3
+ export declare const OnMiddleware: OnMiddlewareReversalFuncBack;
@@ -1,15 +1,6 @@
1
- import { ResultCode } from '../core/code.js';
1
+ import { ResultCode } from '../core/variable.js';
2
2
 
3
- /**
4
- * 中间件
5
- * @param select 事件选择
6
- * @param callback 回调函数,处理事件和 API
7
- * @throws {Error} - 如果 select 无效,抛出错误。
8
- * @throws {Error} - 如果 callback 无效,抛出错误。
9
- * @returns
10
- */
11
3
  const onMiddleware = (select, callback) => {
12
- // 参数检查
13
4
  if (typeof callback !== 'function') {
14
5
  logger.error({
15
6
  code: ResultCode.FailParams,
@@ -29,5 +20,9 @@ const onMiddleware = (select, callback) => {
29
20
  throw new Error('Invalid select: select must be a string or object');
30
21
  };
31
22
  global.onMiddleware = onMiddleware;
23
+ const OnMiddleware = (callback, select) => {
24
+ return onMiddleware(select, callback);
25
+ };
26
+ global.OnMiddleware = OnMiddleware;
32
27
 
33
- export { onMiddleware };
28
+ export { OnMiddleware, onMiddleware };
@@ -0,0 +1 @@
1
+ export declare const createCallHandler: (valueEvent: any) => (currents: any, nextEvent: any) => void;