@jayfong/x-server 2.118.1 → 3.0.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 (290) hide show
  1. package/lib/_virtual/_rolldown/runtime.mjs +4 -0
  2. package/lib/cli/api_generator.d.mts +74 -0
  3. package/lib/cli/api_generator.mjs +310 -0
  4. package/lib/cli/build_util.d.mts +17 -0
  5. package/lib/cli/build_util.mjs +156 -0
  6. package/lib/cli/cli.d.mts +1 -0
  7. package/lib/cli/cli.mjs +355 -0
  8. package/lib/cli/css_register.d.mts +1 -0
  9. package/lib/cli/css_register.mjs +7 -0
  10. package/lib/cli/deploy_util.d.mts +23 -0
  11. package/lib/cli/deploy_util.mjs +70 -0
  12. package/lib/cli/dev_util.d.mts +7 -0
  13. package/lib/cli/dev_util.mjs +25 -0
  14. package/lib/cli/env_util.d.mts +45 -0
  15. package/lib/cli/env_util.mjs +207 -0
  16. package/lib/cli/esbuild_register.d.mts +1 -0
  17. package/lib/cli/esbuild_register.mjs +7 -0
  18. package/lib/cli/template_util.d.mts +18 -0
  19. package/lib/cli/template_util.mjs +85 -0
  20. package/lib/cli/templates/crons.ts +1 -1
  21. package/lib/cli/templates/handlers.ts +1 -1
  22. package/lib/cli/templates/hooks.ts +1 -1
  23. package/lib/cli/templates/models.ts +7 -7
  24. package/lib/cli/templates/package.json +11 -1
  25. package/lib/cli/templates/routes.ts +2 -1
  26. package/lib/core/ctx_storage.d.mts +3 -0
  27. package/lib/core/ctx_storage.mjs +4 -0
  28. package/lib/core/define_bus.d.mts +37 -0
  29. package/lib/core/define_bus.mjs +12 -0
  30. package/lib/core/{define_cron.d.ts → define_cron.d.mts} +2 -2
  31. package/lib/core/define_cron.mjs +11 -0
  32. package/lib/core/{define_handler.d.ts → define_handler.d.mts} +19 -19
  33. package/lib/core/define_handler.mjs +44 -0
  34. package/lib/core/define_hook.d.mts +2 -0
  35. package/lib/core/define_hook.mjs +6 -0
  36. package/lib/core/define_server.d.mts +3 -0
  37. package/lib/core/define_server.mjs +8 -0
  38. package/lib/core/{define_task.d.ts → define_task.d.mts} +2 -2
  39. package/lib/core/define_task.mjs +102 -0
  40. package/lib/core/get_handler_url.d.mts +2 -0
  41. package/lib/core/get_handler_url.mjs +7 -0
  42. package/lib/core/handler.d.mts +16 -0
  43. package/lib/core/handler.mjs +132 -0
  44. package/lib/core/http_error.d.mts +2 -0
  45. package/lib/core/http_error.mjs +1 -0
  46. package/lib/core/http_header.d.mts +856 -0
  47. package/lib/core/http_header.mjs +860 -0
  48. package/lib/core/http_method.d.mts +3 -0
  49. package/lib/core/http_method.mjs +10 -0
  50. package/lib/core/http_redirect.d.mts +5 -0
  51. package/lib/core/http_redirect.mjs +10 -0
  52. package/lib/core/server.d.mts +20 -0
  53. package/lib/core/server.mjs +186 -0
  54. package/lib/core/types.d.mts +256 -0
  55. package/lib/exports.d.mts +46 -0
  56. package/lib/exports.mjs +46 -0
  57. package/lib/index.d.mts +48 -0
  58. package/lib/index.mjs +45 -0
  59. package/lib/plugins/base.d.mts +4 -0
  60. package/lib/plugins/compress.d.mts +12 -0
  61. package/lib/plugins/compress.mjs +15 -0
  62. package/lib/plugins/cookie.d.mts +12 -0
  63. package/lib/plugins/cookie.mjs +15 -0
  64. package/lib/plugins/cors.d.mts +22 -0
  65. package/lib/plugins/cors.mjs +34 -0
  66. package/lib/plugins/file_parser.d.mts +15 -0
  67. package/lib/plugins/file_parser.mjs +24 -0
  68. package/lib/plugins/form_body_parser.d.mts +12 -0
  69. package/lib/plugins/form_body_parser.mjs +15 -0
  70. package/lib/plugins/ws_parser.d.mts +12 -0
  71. package/lib/plugins/ws_parser.mjs +15 -0
  72. package/lib/plugins/xml_parser.d.mts +19 -0
  73. package/lib/plugins/xml_parser.mjs +40 -0
  74. package/lib/services/ai.d.mts +31 -0
  75. package/lib/services/ai.mjs +44 -0
  76. package/lib/services/base.d.mts +4 -0
  77. package/lib/services/base.mjs +1 -0
  78. package/lib/services/cache.d.mts +165 -0
  79. package/lib/services/cache.mjs +323 -0
  80. package/lib/services/captcha.d.mts +65 -0
  81. package/lib/services/captcha.mjs +61 -0
  82. package/lib/services/{crypto.js → crypto.d.mts} +19 -78
  83. package/lib/services/crypto.mjs +141 -0
  84. package/lib/services/db_value.d.mts +60 -0
  85. package/lib/services/db_value.mjs +64 -0
  86. package/lib/services/dingtalk.d.mts +39 -0
  87. package/lib/services/dingtalk.mjs +44 -0
  88. package/lib/services/dispose.d.mts +17 -0
  89. package/lib/services/dispose.mjs +18 -0
  90. package/lib/services/emoji.d.mts +10 -0
  91. package/lib/services/emoji.mjs +2025 -0
  92. package/lib/services/file_store.d.mts +49 -0
  93. package/lib/services/file_store.mjs +58 -0
  94. package/lib/services/html.d.mts +11 -0
  95. package/lib/services/html.mjs +12 -0
  96. package/lib/services/jwt.d.mts +33 -0
  97. package/lib/services/jwt.mjs +42 -0
  98. package/lib/services/log.d.mts +37 -0
  99. package/lib/services/log.mjs +99 -0
  100. package/lib/services/mail.d.mts +22 -0
  101. package/lib/services/mail.mjs +28 -0
  102. package/lib/services/pay.d.mts +123 -0
  103. package/lib/services/pay.mjs +157 -0
  104. package/lib/services/random.d.mts +27 -0
  105. package/lib/services/random.mjs +42 -0
  106. package/lib/services/rate_limit.d.mts +37 -0
  107. package/lib/services/rate_limit.mjs +40 -0
  108. package/lib/services/redis.d.mts +11 -0
  109. package/lib/services/redis.mjs +6 -0
  110. package/lib/services/sensitive_words.d.mts +29 -0
  111. package/lib/services/sensitive_words.mjs +37 -0
  112. package/lib/services/sms.d.mts +40 -0
  113. package/lib/services/sms.mjs +30238 -0
  114. package/lib/types/dto.d.mts +30 -0
  115. package/lib/types/dto.mjs +1 -0
  116. package/lib/x.d.mts +11 -0
  117. package/lib/x.mjs +21 -0
  118. package/lib/x_init.d.mts +1 -0
  119. package/lib/x_init.mjs +10 -0
  120. package/package.json +99 -43
  121. package/lib/_cjs/cli/api_generator.js +0 -438
  122. package/lib/_cjs/cli/build_util.js +0 -243
  123. package/lib/_cjs/cli/cli.js +0 -378
  124. package/lib/_cjs/cli/css_register.js +0 -7
  125. package/lib/_cjs/cli/deploy_util.js +0 -76
  126. package/lib/_cjs/cli/dev_util.js +0 -25
  127. package/lib/_cjs/cli/env_util.js +0 -252
  128. package/lib/_cjs/cli/esbuild_register.js +0 -7
  129. package/lib/_cjs/cli/template_util.js +0 -101
  130. package/lib/_cjs/cli/templates/crons.ts +0 -2
  131. package/lib/_cjs/cli/templates/handlers.ts +0 -3
  132. package/lib/_cjs/cli/templates/hooks.ts +0 -2
  133. package/lib/_cjs/cli/templates/models.ts +0 -123
  134. package/lib/_cjs/cli/templates/package.json +0 -3
  135. package/lib/_cjs/cli/templates/routes.ts +0 -68
  136. package/lib/_cjs/core/ctx_storage.js +0 -6
  137. package/lib/_cjs/core/define_bus.js +0 -31
  138. package/lib/_cjs/core/define_cron.js +0 -13
  139. package/lib/_cjs/core/define_handler.js +0 -56
  140. package/lib/_cjs/core/define_hook.js +0 -8
  141. package/lib/_cjs/core/define_server.js +0 -10
  142. package/lib/_cjs/core/define_task.js +0 -113
  143. package/lib/_cjs/core/get_handler_url.js +0 -11
  144. package/lib/_cjs/core/handler.js +0 -216
  145. package/lib/_cjs/core/http_error.js +0 -6
  146. package/lib/_cjs/core/http_header.js +0 -142
  147. package/lib/_cjs/core/http_method.js +0 -12
  148. package/lib/_cjs/core/http_redirect.js +0 -11
  149. package/lib/_cjs/core/server.js +0 -221
  150. package/lib/_cjs/core/types.js +0 -8
  151. package/lib/_cjs/exports.js +0 -273
  152. package/lib/_cjs/index.js +0 -15
  153. package/lib/_cjs/plugins/base.js +0 -3
  154. package/lib/_cjs/plugins/compress.js +0 -18
  155. package/lib/_cjs/plugins/cookie.js +0 -18
  156. package/lib/_cjs/plugins/cors.js +0 -38
  157. package/lib/_cjs/plugins/file_parser.js +0 -28
  158. package/lib/_cjs/plugins/form_body_parser.js +0 -18
  159. package/lib/_cjs/plugins/ws_parser.js +0 -18
  160. package/lib/_cjs/plugins/xml_parser.js +0 -48
  161. package/lib/_cjs/services/ai.js +0 -48
  162. package/lib/_cjs/services/base.js +0 -3
  163. package/lib/_cjs/services/cache.js +0 -400
  164. package/lib/_cjs/services/captcha.js +0 -78
  165. package/lib/_cjs/services/crypto.js +0 -175
  166. package/lib/_cjs/services/db_value.js +0 -77
  167. package/lib/_cjs/services/dingtalk.js +0 -51
  168. package/lib/_cjs/services/dispose.js +0 -23
  169. package/lib/_cjs/services/emoji.js +0 -2034
  170. package/lib/_cjs/services/file_store.js +0 -67
  171. package/lib/_cjs/services/html.js +0 -17
  172. package/lib/_cjs/services/jwt.js +0 -65
  173. package/lib/_cjs/services/log.js +0 -108
  174. package/lib/_cjs/services/mail.js +0 -31
  175. package/lib/_cjs/services/pay.js +0 -191
  176. package/lib/_cjs/services/random.js +0 -51
  177. package/lib/_cjs/services/rate_limit.js +0 -54
  178. package/lib/_cjs/services/redis.js +0 -12
  179. package/lib/_cjs/services/sensitive_words.js +0 -62
  180. package/lib/_cjs/services/sms.js +0 -84
  181. package/lib/_cjs/types/dto.js +0 -3
  182. package/lib/_cjs/x.js +0 -35
  183. package/lib/cli/api_generator.d.ts +0 -74
  184. package/lib/cli/api_generator.js +0 -432
  185. package/lib/cli/build_util.d.ts +0 -17
  186. package/lib/cli/build_util.js +0 -236
  187. package/lib/cli/cli.d.ts +0 -2
  188. package/lib/cli/cli.js +0 -374
  189. package/lib/cli/css_register.js +0 -5
  190. package/lib/cli/deploy_util.d.ts +0 -23
  191. package/lib/cli/deploy_util.js +0 -70
  192. package/lib/cli/dev_util.d.ts +0 -8
  193. package/lib/cli/dev_util.js +0 -19
  194. package/lib/cli/env_util.d.ts +0 -45
  195. package/lib/cli/env_util.js +0 -246
  196. package/lib/cli/esbuild_register.js +0 -5
  197. package/lib/cli/template_util.d.ts +0 -18
  198. package/lib/cli/template_util.js +0 -95
  199. package/lib/core/ctx_storage.d.ts +0 -3
  200. package/lib/core/ctx_storage.js +0 -2
  201. package/lib/core/define_bus.d.ts +0 -37
  202. package/lib/core/define_bus.js +0 -27
  203. package/lib/core/define_cron.js +0 -9
  204. package/lib/core/define_handler.js +0 -48
  205. package/lib/core/define_hook.d.ts +0 -2
  206. package/lib/core/define_hook.js +0 -4
  207. package/lib/core/define_server.d.ts +0 -3
  208. package/lib/core/define_server.js +0 -6
  209. package/lib/core/define_task.js +0 -107
  210. package/lib/core/get_handler_url.d.ts +0 -2
  211. package/lib/core/get_handler_url.js +0 -7
  212. package/lib/core/handler.d.ts +0 -16
  213. package/lib/core/handler.js +0 -209
  214. package/lib/core/http_error.d.ts +0 -2
  215. package/lib/core/http_error.js +0 -2
  216. package/lib/core/http_header.d.ts +0 -856
  217. package/lib/core/http_header.js +0 -139
  218. package/lib/core/http_method.d.ts +0 -3
  219. package/lib/core/http_method.js +0 -8
  220. package/lib/core/http_redirect.d.ts +0 -5
  221. package/lib/core/http_redirect.js +0 -6
  222. package/lib/core/server.d.ts +0 -20
  223. package/lib/core/server.js +0 -215
  224. package/lib/core/types.d.ts +0 -265
  225. package/lib/core/types.js +0 -4
  226. package/lib/exports.d.ts +0 -45
  227. package/lib/exports.js +0 -47
  228. package/lib/index.d.ts +0 -2
  229. package/lib/index.js +0 -3
  230. package/lib/plugins/base.d.ts +0 -4
  231. package/lib/plugins/base.js +0 -1
  232. package/lib/plugins/compress.d.ts +0 -13
  233. package/lib/plugins/compress.js +0 -12
  234. package/lib/plugins/cookie.d.ts +0 -13
  235. package/lib/plugins/cookie.js +0 -12
  236. package/lib/plugins/cors.d.ts +0 -22
  237. package/lib/plugins/cors.js +0 -33
  238. package/lib/plugins/file_parser.d.ts +0 -16
  239. package/lib/plugins/file_parser.js +0 -22
  240. package/lib/plugins/form_body_parser.d.ts +0 -13
  241. package/lib/plugins/form_body_parser.js +0 -12
  242. package/lib/plugins/ws_parser.d.ts +0 -13
  243. package/lib/plugins/ws_parser.js +0 -12
  244. package/lib/plugins/xml_parser.d.ts +0 -19
  245. package/lib/plugins/xml_parser.js +0 -43
  246. package/lib/services/ai.d.ts +0 -31
  247. package/lib/services/ai.js +0 -43
  248. package/lib/services/base.d.ts +0 -4
  249. package/lib/services/base.js +0 -1
  250. package/lib/services/cache.d.ts +0 -173
  251. package/lib/services/cache.js +0 -394
  252. package/lib/services/captcha.d.ts +0 -65
  253. package/lib/services/captcha.js +0 -72
  254. package/lib/services/crypto.d.ts +0 -110
  255. package/lib/services/db_value.d.ts +0 -60
  256. package/lib/services/db_value.js +0 -72
  257. package/lib/services/dingtalk.d.ts +0 -39
  258. package/lib/services/dingtalk.js +0 -45
  259. package/lib/services/dispose.d.ts +0 -17
  260. package/lib/services/dispose.js +0 -17
  261. package/lib/services/emoji.d.ts +0 -10
  262. package/lib/services/emoji.js +0 -2029
  263. package/lib/services/file_store.d.ts +0 -49
  264. package/lib/services/file_store.js +0 -61
  265. package/lib/services/html.d.ts +0 -11
  266. package/lib/services/html.js +0 -12
  267. package/lib/services/jwt.d.ts +0 -34
  268. package/lib/services/jwt.js +0 -59
  269. package/lib/services/log.d.ts +0 -37
  270. package/lib/services/log.js +0 -102
  271. package/lib/services/mail.d.ts +0 -23
  272. package/lib/services/mail.js +0 -25
  273. package/lib/services/pay.d.ts +0 -123
  274. package/lib/services/pay.js +0 -185
  275. package/lib/services/random.d.ts +0 -27
  276. package/lib/services/random.js +0 -45
  277. package/lib/services/rate_limit.d.ts +0 -37
  278. package/lib/services/rate_limit.js +0 -49
  279. package/lib/services/redis.d.ts +0 -12
  280. package/lib/services/redis.js +0 -7
  281. package/lib/services/sensitive_words.d.ts +0 -30
  282. package/lib/services/sensitive_words.js +0 -57
  283. package/lib/services/sms.d.ts +0 -40
  284. package/lib/services/sms.js +0 -78
  285. package/lib/types/dto.d.ts +0 -86
  286. package/lib/types/dto.js +0 -1
  287. package/lib/x.d.ts +0 -17
  288. package/lib/x.js +0 -30
  289. /package/lib/{cli/css_register.d.ts → core/types.mjs} +0 -0
  290. /package/lib/{cli/esbuild_register.d.ts → plugins/base.mjs} +0 -0
@@ -1,8 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.defineHook = defineHook;
5
- var _handler = require("./handler");
6
- function defineHook(hook) {
7
- _handler.Handler.addHook(hook);
8
- }
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.defineServer = defineServer;
5
- var _server = require("./server");
6
- async function defineServer(options) {
7
- const server = new _server.Server(options);
8
- await server.start();
9
- return server;
10
- }
@@ -1,113 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- exports.__esModule = true;
5
- exports.defineSliceTask = defineSliceTask;
6
- exports.defineTask = defineTask;
7
- var _assert = _interopRequireDefault(require("assert"));
8
- var _bull = _interopRequireDefault(require("bull"));
9
- var _vtils = require("vtils");
10
- var _x = require("../x");
11
- function defineTask(options) {
12
- const queue = new _bull.default(options.name, {
13
- redis: {
14
- ..._x.x.redis.options,
15
- // https://github.com/OptimalBits/bull/issues/2186
16
- maxRetriesPerRequest: null,
17
- enableReadyCheck: false
18
- },
19
- prefix: `${_x.x.appId}_task`,
20
- defaultJobOptions: {
21
- // 都设为 true 防止占用内存
22
- removeOnComplete: true,
23
- removeOnFail: true
24
- }
25
- });
26
- queue.process(options.concurrency || 1, async job => {
27
- return options.handle(job.data);
28
- });
29
- return queue;
30
- }
31
- function defineSliceTask(options) {
32
- const task = defineTask({
33
- name: options.name,
34
- concurrency: 1,
35
- handle: async data => {
36
- const res = data.count ? await _x.x.redis.multi([['lrange', data.redisKey, `-${data.count}`, '-1'], ['ltrim', data.redisKey, '0', `-${data.count + 1}`]]).exec() : await _x.x.redis.multi([['lrange', data.redisKey, '0', '-1'], ['del', data.redisKey]]).exec();
37
- const list = res[0][1].reverse().map(item => JSON.parse(item));
38
- if (list.length) {
39
- return options.handle(list, data.key);
40
- }
41
- }
42
- });
43
- const addAction = async (data, addOptions) => {
44
- const redisKeyPrefix = `${_x.x.appId}_batch_task_${options.name}`;
45
- const key = addOptions?.key || '';
46
- const duration = addOptions?.duration != null ? (0, _vtils.ms)(addOptions.duration) : typeof options.duration === 'function' ? (0, _vtils.ms)(options.duration(key)) : options.duration && (0, _vtils.ms)(options.duration);
47
- const threshold = addOptions?.threshold || typeof options.threshold && (typeof options.threshold === 'function' ? options.threshold(key) : options.threshold);
48
- const thresholdTimeout = addOptions?.thresholdTimeout != null ? (0, _vtils.ms)(addOptions.thresholdTimeout) : typeof options.thresholdTimeout === 'function' ? (0, _vtils.ms)(options.thresholdTimeout(key)) : options.thresholdTimeout && (0, _vtils.ms)(options.thresholdTimeout);
49
- (0, _assert.default)(duration != null || threshold != null, '参数 threshold 和 duration 必须至少设置 1 个');
50
- const redisKey = !key ? redisKeyPrefix : `${redisKeyPrefix}_${key}`;
51
- const res = await _x.x.redis.multi([['llen', redisKey], ['lpush', redisKey, JSON.stringify(data)]]).exec();
52
- const count = parseInt(res[0][1], 10) + 1;
53
-
54
- // 仅时段
55
- // 1分钟内的合并推送
56
- if (duration != null) {
57
- if (count === 1) {
58
- await task.add({
59
- key: key,
60
- redisKey: redisKey
61
- }, {
62
- delay: duration
63
- });
64
- }
65
- }
66
- // 仅阈值
67
- // 满10条推送
68
- else if (threshold != null) {
69
- const delayTaskId = redisKey;
70
- const prevJob = await task.getJob(delayTaskId);
71
-
72
- // 到达阈值,立即发送
73
- if (count === threshold) {
74
- await prevJob?.remove();
75
- await task.add({
76
- key: key,
77
- redisKey: redisKey
78
- });
79
- }
80
- // 存在超时设置
81
- else if (thresholdTimeout) {
82
- if (!prevJob) {
83
- await task.add({
84
- key: key,
85
- redisKey: redisKey
86
- }, {
87
- jobId: delayTaskId,
88
- delay: thresholdTimeout
89
- });
90
- }
91
- }
92
- }
93
- };
94
- const addTask = defineTask({
95
- name: `${options.name}_add`,
96
- concurrency: 1,
97
- handle: async payload => {
98
- await addAction(payload.data, payload.options);
99
- }
100
- });
101
- const res = {
102
- add: async (data, addOptions) => {
103
- const delay = addOptions.delay && (0, _vtils.ms)(addOptions.delay) || 0;
104
- await addTask.add({
105
- data: data,
106
- options: addOptions
107
- }, {
108
- delay: delay
109
- });
110
- }
111
- };
112
- return res;
113
- }
@@ -1,11 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.getHandlerUrl = getHandlerUrl;
5
- var _vtils = require("vtils");
6
- var _x = require("../x");
7
- // @ts-ignore
8
-
9
- function getHandlerUrl(path, query) {
10
- return `${_x.x.env.APP_URL.replace(/\/+$/, '')}${path}${query ? `?${(0, _vtils.createUrlQueryString)(query)}` : ''}`;
11
- }
@@ -1,216 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
- exports.__esModule = true;
6
- exports.Handler = void 0;
7
- var _got = require("got");
8
- var _lzString = _interopRequireDefault(require("lz-string"));
9
- var _vtils = require("vtils");
10
- var vae = _interopRequireWildcard(require("vtils/vae"));
11
- var _validator = require("vtils/validator");
12
- var _http_error = require("../core/http_error");
13
- var _dispose = require("../services/dispose");
14
- var _ctx_storage = require("./ctx_storage");
15
- var _http_redirect = require("./http_redirect");
16
- var _server = require("./server");
17
- _validator.yup.setLocale((0, _validator.getZhCN)({
18
- getLabel: params => params.label || params.path
19
- }));
20
- class Handler {
21
- constructor(options) {
22
- this.options = options;
23
- this.requestDataSchema = void 0;
24
- this.requestDataSchemaVae = void 0;
25
- this.requestHandle = void 0;
26
- this.handle = async (data, ctx) => {
27
- // 前置 hook
28
- if (Handler.hooks.length) {
29
- await Promise.all(Handler.hooks.map(hook => hook(this.options, data, ctx)));
30
- }
31
- let useAsyncContext = !!_server.Server.options.useAsyncContext;
32
- if (this.options.useAsyncContext != null) {
33
- useAsyncContext = this.options.useAsyncContext;
34
- }
35
- ctx.setHeader('x-trace-id', ctx.traceId);
36
- if (this.options.requestMethod === 'WS') {
37
- return useAsyncContext ? _ctx_storage.ctxStorage.run(ctx, () => this.handleWs(data, ctx)) : this.handleWs(data, ctx);
38
- }
39
- return useAsyncContext ? _ctx_storage.ctxStorage.run(ctx, () => this.handleHttp(data, ctx)) : this.handleHttp(data, ctx);
40
- };
41
- this.handleHttp = async (data, ctx) => {
42
- // 请求数据解析
43
- if (this.options.parseRequestData) {
44
- data = await this.options.parseRequestData(data, ctx);
45
- }
46
- // 请求数据验证
47
- // vae
48
- if (this.requestDataSchemaVae) {
49
- const res = this.requestDataSchemaVae.parse(
50
- // @ts-ignore
51
- data, {
52
- abortEarly: true,
53
- preserveUnknownKeys: false
54
- });
55
- if (res.success) {
56
- // @ts-ignore
57
- data = res.data;
58
- } else {
59
- throw new _http_error.HttpError.BadRequest(
60
- // @ts-ignore
61
- res.issues[0].message);
62
- }
63
- }
64
- // yup
65
- else if (this.requestDataSchema) {
66
- try {
67
- data = await this.requestDataSchema.validate(data, {
68
- abortEarly: true,
69
- stripUnknown: true
70
- });
71
- } catch (err) {
72
- throw new _http_error.HttpError.BadRequest(err.message);
73
- }
74
- }
75
- try {
76
- let res = await this.requestHandle(data, ctx);
77
- if (res instanceof _http_redirect.HttpRedirect) {
78
- ctx.redirect(res.url, res.permanently);
79
- return {};
80
- }
81
-
82
- // 设置响应的 Content-Type 头
83
- if (this.options.responseContentType) {
84
- ctx.setHeader('Content-Type', this.options.responseContentType);
85
- }
86
-
87
- // 打包返回数据
88
- if (this.options.responseDataPack) {
89
- res = _vtils.DataPacker.packAsRawType(res);
90
- }
91
-
92
- // 混淆返回数据
93
- if (this.options.responseDataObfuscate) {
94
- res = {
95
- '_#': _lzString.default.compress(JSON.stringify(res))
96
- };
97
- }
98
-
99
- // 加密返回数据
100
- if (this.options.responseDataEncrypt && _server.Server.options.responseEncryptAlgorithm) {
101
- if (_server.Server.options.responseEncryptAlgorithm === 'simple') {
102
- res = {
103
- _$: (0, _vtils.rot13)((0, _vtils.base64UrlEncode)(`${Date.now()}${JSON.stringify(res)}`))
104
- };
105
- }
106
- }
107
- return res == null ? {} : res;
108
- } catch (err) {
109
- // 业务错误
110
- if (_http_error.HttpError.isHttpError(err)) {
111
- throw err;
112
- }
113
- // 网络错误
114
- if (err instanceof _got.HTTPError || err instanceof _got.RequestError || err instanceof _got.TimeoutError || err instanceof _got.ParseError) {
115
- console.error('网络请求错误', {
116
- error: `${err.code || ''}__${err.name || ''}__${err.message || ''}`,
117
- response: err.response?.body && err.options.responseType !== 'buffer' ? (0, _vtils.toSingleLineString)(String(err.response.body), 100) : '',
118
- method: err.options.method,
119
- url: err.options.url.toString(),
120
- headers: JSON.stringify(err.options.headers || {}),
121
- query: (err.options.search ?? err.options.searchParams?.toString()) || '',
122
- body: (err.options.json ? JSON.stringify(err.options.json) : err.options.form ? new URLSearchParams(err.options.form).toString() : err.options.body?.toString()) || ''
123
- });
124
- }
125
- // 服务器错误
126
- else {
127
- console.error('服务器错误', err);
128
- }
129
- throw new _http_error.HttpError.InternalServerError('服务异常,请稍后再试');
130
- }
131
- };
132
- this.handleWs = async (_data, ctx) => {
133
- const dispose = new _dispose.DisposeService();
134
- ctx.ws.socket.on('message', async payload => {
135
- try {
136
- const _ = JSON.parse(payload.toString('utf8'));
137
- const send = data => {
138
- ctx.ws.socket.send(JSON.stringify({
139
- id: _.id,
140
- data: data
141
- }));
142
- };
143
- const process = async (type, fn) => {
144
- if (_.type === type) {
145
- let sent = false;
146
- try {
147
- await fn({
148
- data: _.data,
149
- send: data => {
150
- sent = true;
151
- return send(data);
152
- },
153
- dispose: dispose
154
- });
155
- if (!sent) {
156
- send();
157
- }
158
- } catch (err) {
159
- const _err = _http_error.HttpError.isHttpError(err) ? err : new _http_error.HttpError.InternalServerError();
160
- send({
161
- statusCode: _err.statusCode,
162
- error: _err.name,
163
- message: _err.message
164
- });
165
- }
166
- }
167
- };
168
- if (_.type === 'ping') {
169
- send();
170
- } else {
171
- await this.options.handle(process, ctx);
172
- }
173
- } catch (err) {
174
- const _err = _http_error.HttpError.isHttpError(err) ? err : new _http_error.HttpError.InternalServerError();
175
- ctx.ws.socket.send(JSON.stringify({
176
- statusCode: _err.statusCode,
177
- error: _err.name,
178
- message: _err.message
179
- }));
180
- }
181
- });
182
- ctx.ws.socket.on('close', () => {
183
- dispose.dispose();
184
- });
185
- };
186
- if (options.requestDataSchemaVae) {
187
- const res = typeof options.requestDataSchemaVae === 'function' ? options.requestDataSchemaVae(new vae.VaeSchemaBuilder()) : options.requestDataSchemaVae;
188
- this.requestDataSchemaVae = res instanceof vae.VaeSchema ? res : new vae.VaeObjectSchema(res);
189
- } else if (options.requestDataSchema) {
190
- this.requestDataSchema = options.requestDataSchema(_validator.yup);
191
- }
192
- if (options.concurrency != null) {
193
- if (typeof options.concurrency === 'number') {
194
- this.requestHandle = (0, _vtils.asyncLimit)(async (data, ctx) => options.handle(data, ctx), {
195
- concurrency: options.concurrency
196
- });
197
- } else {
198
- const {
199
- count,
200
- groupBy
201
- } = options.concurrency;
202
- this.requestHandle = (0, _vtils.asyncLimit)(async (data, ctx) => options.handle(data, ctx), {
203
- concurrency: count,
204
- groupBy: groupBy
205
- });
206
- }
207
- } else {
208
- this.requestHandle = options.handle;
209
- }
210
- }
211
- static addHook(hook) {
212
- this.hooks.push(hook);
213
- }
214
- }
215
- exports.Handler = Handler;
216
- Handler.hooks = [];
@@ -1,6 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- exports.__esModule = true;
5
- var _httpErrors = _interopRequireDefault(require("http-errors"));
6
- exports.HttpError = _httpErrors.default;
@@ -1,142 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.HttpResponseHeader = exports.HttpRequestHeader = void 0;
5
- // https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
6
- /**
7
- [...$0.querySelectorAll('tr')].map(v => v.querySelector('td:nth-child(1)').innerText.trim().split(',').map(name => name.replace(/\[.*?\]/g, '').trim()).map((name) => ({
8
- name: name,
9
- description: v.querySelector('td:nth-child(2)').innerText.replace(/\[.*?\]/g, '').trim(),
10
- example: v.querySelector('td:nth-child(3)').innerText.trim(),
11
- pascalName: name.replace(/\-/g, '_').toUpperCase()
12
- }))).flat().map(item => `
13
- ${'/'}**
14
- * ${item.description}
15
- *
16
- * @example
17
- * ${item.example}
18
- *${'/'}
19
- ${item.pascalName} = '${item.name}',
20
- `).join('\n\n')
21
- */
22
- let HttpRequestHeader = exports.HttpRequestHeader = /*#__PURE__*/function (HttpRequestHeader) {
23
- HttpRequestHeader["A_IM"] = "A-IM";
24
- HttpRequestHeader["ACCEPT"] = "Accept";
25
- HttpRequestHeader["ACCEPT_CHARSET"] = "Accept-Charset";
26
- HttpRequestHeader["ACCEPT_DATETIME"] = "Accept-Datetime";
27
- HttpRequestHeader["ACCEPT_ENCODING"] = "Accept-Encoding";
28
- HttpRequestHeader["ACCEPT_LANGUAGE"] = "Accept-Language";
29
- HttpRequestHeader["ACCESS_CONTROL_REQUEST_METHOD"] = "Access-Control-Request-Method";
30
- HttpRequestHeader["ACCESS_CONTROL_REQUEST_HEADERS"] = "Access-Control-Request-Headers";
31
- HttpRequestHeader["AUTHORIZATION"] = "Authorization";
32
- HttpRequestHeader["CACHE_CONTROL"] = "Cache-Control";
33
- HttpRequestHeader["CONNECTION"] = "Connection";
34
- HttpRequestHeader["CONTENT_ENCODING"] = "Content-Encoding";
35
- HttpRequestHeader["CONTENT_LENGTH"] = "Content-Length";
36
- HttpRequestHeader["CONTENT_MD5"] = "Content-MD5";
37
- HttpRequestHeader["CONTENT_TYPE"] = "Content-Type";
38
- HttpRequestHeader["COOKIE"] = "Cookie";
39
- HttpRequestHeader["DATE"] = "Date";
40
- HttpRequestHeader["EXPECT"] = "Expect";
41
- HttpRequestHeader["FORWARDED"] = "Forwarded";
42
- HttpRequestHeader["FROM"] = "From";
43
- HttpRequestHeader["HOST"] = "Host";
44
- HttpRequestHeader["HTTP2_SETTINGS"] = "HTTP2-Settings";
45
- HttpRequestHeader["IF_MATCH"] = "If-Match";
46
- HttpRequestHeader["IF_MODIFIED_SINCE"] = "If-Modified-Since";
47
- HttpRequestHeader["IF_NONE_MATCH"] = "If-None-Match";
48
- HttpRequestHeader["IF_RANGE"] = "If-Range";
49
- HttpRequestHeader["IF_UNMODIFIED_SINCE"] = "If-Unmodified-Since";
50
- HttpRequestHeader["MAX_FORWARDS"] = "Max-Forwards";
51
- HttpRequestHeader["ORIGIN"] = "Origin";
52
- HttpRequestHeader["PRAGMA"] = "Pragma";
53
- HttpRequestHeader["PROXY_AUTHORIZATION"] = "Proxy-Authorization";
54
- HttpRequestHeader["RANGE"] = "Range";
55
- HttpRequestHeader["REFERER"] = "Referer";
56
- HttpRequestHeader["TE"] = "TE";
57
- HttpRequestHeader["TRAILER"] = "Trailer";
58
- HttpRequestHeader["TRANSFER_ENCODING"] = "Transfer-Encoding";
59
- HttpRequestHeader["USER_AGENT"] = "User-Agent";
60
- HttpRequestHeader["UPGRADE"] = "Upgrade";
61
- HttpRequestHeader["VIA"] = "Via";
62
- HttpRequestHeader["WARNING"] = "Warning";
63
- HttpRequestHeader["UPGRADE_INSECURE_REQUESTS"] = "Upgrade-Insecure-Requests";
64
- HttpRequestHeader["X_REQUESTED_WITH"] = "X-Requested-With";
65
- HttpRequestHeader["DNT"] = "DNT";
66
- HttpRequestHeader["X_FORWARDED_FOR"] = "X-Forwarded-For";
67
- HttpRequestHeader["X_FORWARDED_HOST"] = "X-Forwarded-Host";
68
- HttpRequestHeader["X_FORWARDED_PROTO"] = "X-Forwarded-Proto";
69
- HttpRequestHeader["FRONT_END_HTTPS"] = "Front-End-Https";
70
- HttpRequestHeader["X_HTTP_METHOD_OVERRIDE"] = "X-Http-Method-Override";
71
- HttpRequestHeader["X_ATT_DEVICEID"] = "X-ATT-DeviceId";
72
- HttpRequestHeader["X_WAP_PROFILE"] = "X-Wap-Profile";
73
- HttpRequestHeader["PROXY_CONNECTION"] = "Proxy-Connection";
74
- HttpRequestHeader["X_UIDH"] = "X-UIDH";
75
- HttpRequestHeader["X_CSRF_TOKEN"] = "X-Csrf-Token";
76
- HttpRequestHeader["X_REQUEST_ID"] = "X-Request-ID";
77
- HttpRequestHeader["X_CORRELATION_ID"] = "X-Correlation-ID";
78
- HttpRequestHeader["SAVE_DATA"] = "Save-Data";
79
- return HttpRequestHeader;
80
- }({});
81
- let HttpResponseHeader = exports.HttpResponseHeader = /*#__PURE__*/function (HttpResponseHeader) {
82
- HttpResponseHeader["ACCESS_CONTROL_ALLOW_ORIGIN"] = "Access-Control-Allow-Origin";
83
- HttpResponseHeader["ACCESS_CONTROL_ALLOW_CREDENTIALS"] = "Access-Control-Allow-Credentials";
84
- HttpResponseHeader["ACCESS_CONTROL_EXPOSE_HEADERS"] = "Access-Control-Expose-Headers";
85
- HttpResponseHeader["ACCESS_CONTROL_MAX_AGE"] = "Access-Control-Max-Age";
86
- HttpResponseHeader["ACCESS_CONTROL_ALLOW_METHODS"] = "Access-Control-Allow-Methods";
87
- HttpResponseHeader["ACCESS_CONTROL_ALLOW_HEADERS"] = "Access-Control-Allow-Headers";
88
- HttpResponseHeader["ACCEPT_PATCH"] = "Accept-Patch";
89
- HttpResponseHeader["ACCEPT_RANGES"] = "Accept-Ranges";
90
- HttpResponseHeader["AGE"] = "Age";
91
- HttpResponseHeader["ALLOW"] = "Allow";
92
- HttpResponseHeader["ALT_SVC"] = "Alt-Svc";
93
- HttpResponseHeader["CACHE_CONTROL"] = "Cache-Control";
94
- HttpResponseHeader["CONNECTION"] = "Connection";
95
- HttpResponseHeader["CONTENT_DISPOSITION"] = "Content-Disposition";
96
- HttpResponseHeader["CONTENT_ENCODING"] = "Content-Encoding";
97
- HttpResponseHeader["CONTENT_LANGUAGE"] = "Content-Language";
98
- HttpResponseHeader["CONTENT_LENGTH"] = "Content-Length";
99
- HttpResponseHeader["CONTENT_LOCATION"] = "Content-Location";
100
- HttpResponseHeader["CONTENT_MD5"] = "Content-MD5";
101
- HttpResponseHeader["CONTENT_RANGE"] = "Content-Range";
102
- HttpResponseHeader["CONTENT_TYPE"] = "Content-Type";
103
- HttpResponseHeader["DATE"] = "Date";
104
- HttpResponseHeader["DELTA_BASE"] = "Delta-Base";
105
- HttpResponseHeader["ETAG"] = "ETag";
106
- HttpResponseHeader["EXPIRES"] = "Expires";
107
- HttpResponseHeader["IM"] = "IM";
108
- HttpResponseHeader["LAST_MODIFIED"] = "Last-Modified";
109
- HttpResponseHeader["LINK"] = "Link";
110
- HttpResponseHeader["LOCATION"] = "Location";
111
- HttpResponseHeader["P3P"] = "P3P";
112
- HttpResponseHeader["PRAGMA"] = "Pragma";
113
- HttpResponseHeader["PROXY_AUTHENTICATE"] = "Proxy-Authenticate";
114
- HttpResponseHeader["PUBLIC_KEY_PINS"] = "Public-Key-Pins";
115
- HttpResponseHeader["RETRY_AFTER"] = "Retry-After";
116
- HttpResponseHeader["SERVER"] = "Server";
117
- HttpResponseHeader["SET_COOKIE"] = "Set-Cookie";
118
- HttpResponseHeader["STRICT_TRANSPORT_SECURITY"] = "Strict-Transport-Security";
119
- HttpResponseHeader["TRAILER"] = "Trailer";
120
- HttpResponseHeader["TRANSFER_ENCODING"] = "Transfer-Encoding";
121
- HttpResponseHeader["TK"] = "Tk";
122
- HttpResponseHeader["UPGRADE"] = "Upgrade";
123
- HttpResponseHeader["VARY"] = "Vary";
124
- HttpResponseHeader["VIA"] = "Via";
125
- HttpResponseHeader["WARNING"] = "Warning";
126
- HttpResponseHeader["WWW_AUTHENTICATE"] = "WWW-Authenticate";
127
- HttpResponseHeader["X_FRAME_OPTIONS"] = "X-Frame-Options";
128
- HttpResponseHeader["CONTENT_SECURITY_POLICY"] = "Content-Security-Policy";
129
- HttpResponseHeader["X_CONTENT_SECURITY_POLICY"] = "X-Content-Security-Policy";
130
- HttpResponseHeader["X_WEBKIT_CSP"] = "X-WebKit-CSP";
131
- HttpResponseHeader["REFRESH"] = "Refresh";
132
- HttpResponseHeader["STATUS"] = "Status";
133
- HttpResponseHeader["TIMING_ALLOW_ORIGIN"] = "Timing-Allow-Origin";
134
- HttpResponseHeader["X_CONTENT_DURATION"] = "X-Content-Duration";
135
- HttpResponseHeader["X_CONTENT_TYPE_OPTIONS"] = "X-Content-Type-Options";
136
- HttpResponseHeader["X_POWERED_BY"] = "X-Powered-By";
137
- HttpResponseHeader["X_REQUEST_ID"] = "X-Request-ID";
138
- HttpResponseHeader["X_CORRELATION_ID"] = "X-Correlation-ID";
139
- HttpResponseHeader["X_UA_COMPATIBLE"] = "X-UA-Compatible";
140
- HttpResponseHeader["X_XSS_PROTECTION"] = "X-XSS-Protection";
141
- return HttpResponseHeader;
142
- }({});
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.HandlerMethodToHttpMethod = void 0;
5
- const HandlerMethodToHttpMethod = exports.HandlerMethodToHttpMethod = {
6
- GET: 'GET',
7
- POST: 'POST',
8
- FILE: 'POST',
9
- WS: 'GET',
10
- XML: 'POST',
11
- ANY: 'POST'
12
- };
@@ -1,11 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.HttpRedirect = void 0;
5
- class HttpRedirect {
6
- constructor(url, permanently) {
7
- this.url = url;
8
- this.permanently = permanently;
9
- }
10
- }
11
- exports.HttpRedirect = HttpRedirect;