@jayfong/x-server 2.119.0 → 3.1.1

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 (288) hide show
  1. package/lib/_virtual/_rolldown/runtime.mjs +4 -0
  2. package/lib/cli/api_generator.d.mts +75 -0
  3. package/lib/cli/api_generator.mjs +334 -0
  4. package/lib/cli/build_util.d.mts +15 -0
  5. package/lib/cli/build_util.mjs +101 -0
  6. package/lib/cli/cli.d.mts +1 -0
  7. package/lib/cli/cli.mjs +345 -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 +9 -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/template_util.d.mts +18 -0
  17. package/lib/cli/template_util.mjs +85 -0
  18. package/lib/cli/templates/crons.ts +1 -1
  19. package/lib/cli/templates/handlers.ts +1 -1
  20. package/lib/cli/templates/hooks.ts +1 -1
  21. package/lib/cli/templates/models.ts +7 -7
  22. package/lib/cli/templates/package.json +11 -1
  23. package/lib/cli/templates/routes.ts +2 -2
  24. package/lib/core/ctx_storage.d.mts +3 -0
  25. package/lib/core/ctx_storage.mjs +4 -0
  26. package/lib/core/define_bus.d.mts +37 -0
  27. package/lib/core/define_bus.mjs +12 -0
  28. package/lib/core/{define_cron.d.ts → define_cron.d.mts} +2 -2
  29. package/lib/core/define_cron.mjs +11 -0
  30. package/lib/core/{define_handler.d.ts → define_handler.d.mts} +19 -19
  31. package/lib/core/define_handler.mjs +44 -0
  32. package/lib/core/define_hook.d.mts +2 -0
  33. package/lib/core/define_hook.mjs +6 -0
  34. package/lib/core/define_server.d.mts +3 -0
  35. package/lib/core/define_server.mjs +8 -0
  36. package/lib/core/{define_task.d.ts → define_task.d.mts} +2 -2
  37. package/lib/core/define_task.mjs +106 -0
  38. package/lib/core/get_handler_url.d.mts +2 -0
  39. package/lib/core/get_handler_url.mjs +7 -0
  40. package/lib/core/handler.d.mts +16 -0
  41. package/lib/core/handler.mjs +132 -0
  42. package/lib/core/http_error.d.mts +2 -0
  43. package/lib/core/http_error.mjs +1 -0
  44. package/lib/core/http_header.d.mts +856 -0
  45. package/lib/core/http_header.mjs +860 -0
  46. package/lib/core/http_method.d.mts +3 -0
  47. package/lib/core/http_method.mjs +10 -0
  48. package/lib/core/http_redirect.d.mts +5 -0
  49. package/lib/core/http_redirect.mjs +10 -0
  50. package/lib/core/server.d.mts +20 -0
  51. package/lib/core/server.mjs +186 -0
  52. package/lib/core/types.d.mts +256 -0
  53. package/lib/exports.d.mts +46 -0
  54. package/lib/exports.mjs +46 -0
  55. package/lib/index.d.mts +48 -0
  56. package/lib/index.mjs +45 -0
  57. package/lib/plugins/base.d.mts +4 -0
  58. package/lib/plugins/compress.d.mts +12 -0
  59. package/lib/plugins/compress.mjs +15 -0
  60. package/lib/plugins/cookie.d.mts +12 -0
  61. package/lib/plugins/cookie.mjs +15 -0
  62. package/lib/plugins/cors.d.mts +22 -0
  63. package/lib/plugins/cors.mjs +34 -0
  64. package/lib/plugins/file_parser.d.mts +15 -0
  65. package/lib/plugins/file_parser.mjs +24 -0
  66. package/lib/plugins/form_body_parser.d.mts +12 -0
  67. package/lib/plugins/form_body_parser.mjs +15 -0
  68. package/lib/plugins/ws_parser.d.mts +12 -0
  69. package/lib/plugins/ws_parser.mjs +15 -0
  70. package/lib/plugins/xml_parser.d.mts +19 -0
  71. package/lib/plugins/xml_parser.mjs +40 -0
  72. package/lib/services/ai.d.mts +31 -0
  73. package/lib/services/ai.mjs +44 -0
  74. package/lib/services/base.d.mts +4 -0
  75. package/lib/services/base.mjs +1 -0
  76. package/lib/services/cache.d.mts +165 -0
  77. package/lib/services/cache.mjs +323 -0
  78. package/lib/services/captcha.d.mts +65 -0
  79. package/lib/services/captcha.mjs +61 -0
  80. package/lib/services/{crypto.js → crypto.d.mts} +19 -78
  81. package/lib/services/crypto.mjs +141 -0
  82. package/lib/services/db_value.d.mts +60 -0
  83. package/lib/services/db_value.mjs +64 -0
  84. package/lib/services/dingtalk.d.mts +39 -0
  85. package/lib/services/dingtalk.mjs +44 -0
  86. package/lib/services/dispose.d.mts +17 -0
  87. package/lib/services/dispose.mjs +18 -0
  88. package/lib/services/emoji.d.mts +10 -0
  89. package/lib/services/emoji.mjs +2025 -0
  90. package/lib/services/file_store.d.mts +49 -0
  91. package/lib/services/file_store.mjs +58 -0
  92. package/lib/services/html.d.mts +11 -0
  93. package/lib/services/html.mjs +12 -0
  94. package/lib/services/jwt.d.mts +33 -0
  95. package/lib/services/jwt.mjs +42 -0
  96. package/lib/services/log.d.mts +37 -0
  97. package/lib/services/log.mjs +99 -0
  98. package/lib/services/mail.d.mts +22 -0
  99. package/lib/services/mail.mjs +28 -0
  100. package/lib/services/pay.d.mts +123 -0
  101. package/lib/services/pay.mjs +157 -0
  102. package/lib/services/random.d.mts +27 -0
  103. package/lib/services/random.mjs +42 -0
  104. package/lib/services/rate_limit.d.mts +37 -0
  105. package/lib/services/rate_limit.mjs +40 -0
  106. package/lib/services/redis.d.mts +11 -0
  107. package/lib/services/redis.mjs +6 -0
  108. package/lib/services/sensitive_words.d.mts +29 -0
  109. package/lib/services/sensitive_words.mjs +37 -0
  110. package/lib/services/sms.d.mts +40 -0
  111. package/lib/services/sms.mjs +30238 -0
  112. package/lib/types/dto.d.mts +30 -0
  113. package/lib/types/dto.mjs +1 -0
  114. package/lib/x.d.mts +11 -0
  115. package/lib/x.mjs +21 -0
  116. package/lib/x_init.d.mts +1 -0
  117. package/lib/x_init.mjs +10 -0
  118. package/package.json +82 -32
  119. package/lib/_cjs/cli/api_generator.js +0 -458
  120. package/lib/_cjs/cli/build_util.js +0 -243
  121. package/lib/_cjs/cli/cli.js +0 -378
  122. package/lib/_cjs/cli/css_register.js +0 -7
  123. package/lib/_cjs/cli/deploy_util.js +0 -76
  124. package/lib/_cjs/cli/dev_util.js +0 -26
  125. package/lib/_cjs/cli/env_util.js +0 -252
  126. package/lib/_cjs/cli/esbuild_register.js +0 -7
  127. package/lib/_cjs/cli/template_util.js +0 -101
  128. package/lib/_cjs/cli/templates/crons.ts +0 -2
  129. package/lib/_cjs/cli/templates/handlers.ts +0 -3
  130. package/lib/_cjs/cli/templates/hooks.ts +0 -2
  131. package/lib/_cjs/cli/templates/models.ts +0 -123
  132. package/lib/_cjs/cli/templates/package.json +0 -3
  133. package/lib/_cjs/cli/templates/routes.ts +0 -68
  134. package/lib/_cjs/core/ctx_storage.js +0 -6
  135. package/lib/_cjs/core/define_bus.js +0 -31
  136. package/lib/_cjs/core/define_cron.js +0 -13
  137. package/lib/_cjs/core/define_handler.js +0 -56
  138. package/lib/_cjs/core/define_hook.js +0 -8
  139. package/lib/_cjs/core/define_server.js +0 -10
  140. package/lib/_cjs/core/define_task.js +0 -113
  141. package/lib/_cjs/core/get_handler_url.js +0 -11
  142. package/lib/_cjs/core/handler.js +0 -216
  143. package/lib/_cjs/core/http_error.js +0 -6
  144. package/lib/_cjs/core/http_header.js +0 -142
  145. package/lib/_cjs/core/http_method.js +0 -12
  146. package/lib/_cjs/core/http_redirect.js +0 -11
  147. package/lib/_cjs/core/server.js +0 -219
  148. package/lib/_cjs/core/types.js +0 -8
  149. package/lib/_cjs/exports.js +0 -273
  150. package/lib/_cjs/index.js +0 -15
  151. package/lib/_cjs/plugins/base.js +0 -3
  152. package/lib/_cjs/plugins/compress.js +0 -18
  153. package/lib/_cjs/plugins/cookie.js +0 -18
  154. package/lib/_cjs/plugins/cors.js +0 -38
  155. package/lib/_cjs/plugins/file_parser.js +0 -28
  156. package/lib/_cjs/plugins/form_body_parser.js +0 -18
  157. package/lib/_cjs/plugins/ws_parser.js +0 -18
  158. package/lib/_cjs/plugins/xml_parser.js +0 -48
  159. package/lib/_cjs/services/ai.js +0 -48
  160. package/lib/_cjs/services/base.js +0 -3
  161. package/lib/_cjs/services/cache.js +0 -400
  162. package/lib/_cjs/services/captcha.js +0 -78
  163. package/lib/_cjs/services/crypto.js +0 -175
  164. package/lib/_cjs/services/db_value.js +0 -77
  165. package/lib/_cjs/services/dingtalk.js +0 -51
  166. package/lib/_cjs/services/dispose.js +0 -23
  167. package/lib/_cjs/services/emoji.js +0 -2034
  168. package/lib/_cjs/services/file_store.js +0 -67
  169. package/lib/_cjs/services/html.js +0 -17
  170. package/lib/_cjs/services/jwt.js +0 -65
  171. package/lib/_cjs/services/log.js +0 -108
  172. package/lib/_cjs/services/mail.js +0 -31
  173. package/lib/_cjs/services/pay.js +0 -191
  174. package/lib/_cjs/services/random.js +0 -51
  175. package/lib/_cjs/services/rate_limit.js +0 -54
  176. package/lib/_cjs/services/redis.js +0 -12
  177. package/lib/_cjs/services/sensitive_words.js +0 -61
  178. package/lib/_cjs/services/sms.js +0 -84
  179. package/lib/_cjs/types/dto.js +0 -3
  180. package/lib/_cjs/x.js +0 -35
  181. package/lib/cli/api_generator.d.ts +0 -74
  182. package/lib/cli/api_generator.js +0 -452
  183. package/lib/cli/build_util.d.ts +0 -17
  184. package/lib/cli/build_util.js +0 -236
  185. package/lib/cli/cli.d.ts +0 -2
  186. package/lib/cli/cli.js +0 -374
  187. package/lib/cli/css_register.js +0 -5
  188. package/lib/cli/deploy_util.d.ts +0 -23
  189. package/lib/cli/deploy_util.js +0 -70
  190. package/lib/cli/dev_util.d.ts +0 -8
  191. package/lib/cli/dev_util.js +0 -20
  192. package/lib/cli/env_util.d.ts +0 -45
  193. package/lib/cli/env_util.js +0 -246
  194. package/lib/cli/esbuild_register.js +0 -5
  195. package/lib/cli/template_util.d.ts +0 -18
  196. package/lib/cli/template_util.js +0 -95
  197. package/lib/core/ctx_storage.d.ts +0 -3
  198. package/lib/core/ctx_storage.js +0 -2
  199. package/lib/core/define_bus.d.ts +0 -37
  200. package/lib/core/define_bus.js +0 -27
  201. package/lib/core/define_cron.js +0 -9
  202. package/lib/core/define_handler.js +0 -48
  203. package/lib/core/define_hook.d.ts +0 -2
  204. package/lib/core/define_hook.js +0 -4
  205. package/lib/core/define_server.d.ts +0 -3
  206. package/lib/core/define_server.js +0 -6
  207. package/lib/core/define_task.js +0 -107
  208. package/lib/core/get_handler_url.d.ts +0 -2
  209. package/lib/core/get_handler_url.js +0 -7
  210. package/lib/core/handler.d.ts +0 -16
  211. package/lib/core/handler.js +0 -209
  212. package/lib/core/http_error.d.ts +0 -2
  213. package/lib/core/http_error.js +0 -2
  214. package/lib/core/http_header.d.ts +0 -856
  215. package/lib/core/http_header.js +0 -139
  216. package/lib/core/http_method.d.ts +0 -3
  217. package/lib/core/http_method.js +0 -8
  218. package/lib/core/http_redirect.d.ts +0 -5
  219. package/lib/core/http_redirect.js +0 -6
  220. package/lib/core/server.d.ts +0 -20
  221. package/lib/core/server.js +0 -213
  222. package/lib/core/types.d.ts +0 -265
  223. package/lib/core/types.js +0 -4
  224. package/lib/exports.d.ts +0 -45
  225. package/lib/exports.js +0 -47
  226. package/lib/index.d.ts +0 -2
  227. package/lib/index.js +0 -3
  228. package/lib/plugins/base.d.ts +0 -4
  229. package/lib/plugins/base.js +0 -1
  230. package/lib/plugins/compress.d.ts +0 -13
  231. package/lib/plugins/compress.js +0 -12
  232. package/lib/plugins/cookie.d.ts +0 -13
  233. package/lib/plugins/cookie.js +0 -12
  234. package/lib/plugins/cors.d.ts +0 -22
  235. package/lib/plugins/cors.js +0 -32
  236. package/lib/plugins/file_parser.d.ts +0 -16
  237. package/lib/plugins/file_parser.js +0 -22
  238. package/lib/plugins/form_body_parser.d.ts +0 -13
  239. package/lib/plugins/form_body_parser.js +0 -12
  240. package/lib/plugins/ws_parser.d.ts +0 -13
  241. package/lib/plugins/ws_parser.js +0 -12
  242. package/lib/plugins/xml_parser.d.ts +0 -19
  243. package/lib/plugins/xml_parser.js +0 -43
  244. package/lib/services/ai.d.ts +0 -31
  245. package/lib/services/ai.js +0 -43
  246. package/lib/services/base.d.ts +0 -4
  247. package/lib/services/base.js +0 -1
  248. package/lib/services/cache.d.ts +0 -173
  249. package/lib/services/cache.js +0 -394
  250. package/lib/services/captcha.d.ts +0 -65
  251. package/lib/services/captcha.js +0 -72
  252. package/lib/services/crypto.d.ts +0 -110
  253. package/lib/services/db_value.d.ts +0 -60
  254. package/lib/services/db_value.js +0 -72
  255. package/lib/services/dingtalk.d.ts +0 -39
  256. package/lib/services/dingtalk.js +0 -45
  257. package/lib/services/dispose.d.ts +0 -17
  258. package/lib/services/dispose.js +0 -17
  259. package/lib/services/emoji.d.ts +0 -10
  260. package/lib/services/emoji.js +0 -2029
  261. package/lib/services/file_store.d.ts +0 -49
  262. package/lib/services/file_store.js +0 -61
  263. package/lib/services/html.d.ts +0 -11
  264. package/lib/services/html.js +0 -12
  265. package/lib/services/jwt.d.ts +0 -34
  266. package/lib/services/jwt.js +0 -59
  267. package/lib/services/log.d.ts +0 -37
  268. package/lib/services/log.js +0 -102
  269. package/lib/services/mail.d.ts +0 -23
  270. package/lib/services/mail.js +0 -25
  271. package/lib/services/pay.d.ts +0 -123
  272. package/lib/services/pay.js +0 -185
  273. package/lib/services/random.d.ts +0 -27
  274. package/lib/services/random.js +0 -45
  275. package/lib/services/rate_limit.d.ts +0 -37
  276. package/lib/services/rate_limit.js +0 -49
  277. package/lib/services/redis.d.ts +0 -12
  278. package/lib/services/redis.js +0 -7
  279. package/lib/services/sensitive_words.d.ts +0 -29
  280. package/lib/services/sensitive_words.js +0 -56
  281. package/lib/services/sms.d.ts +0 -40
  282. package/lib/services/sms.js +0 -78
  283. package/lib/types/dto.d.ts +0 -86
  284. package/lib/types/dto.js +0 -1
  285. package/lib/x.d.ts +0 -17
  286. package/lib/x.js +0 -30
  287. /package/lib/{cli/css_register.d.ts → core/types.mjs} +0 -0
  288. /package/lib/{cli/esbuild_register.d.ts → plugins/base.mjs} +0 -0
@@ -0,0 +1,27 @@
1
+ import { BaseService } from "./base.mjs";
2
+ export declare class RandomService implements BaseService {
3
+ serviceName: string;
4
+ /**
5
+ * 24位。
6
+ *
7
+ * @see https://github.com/paralleldrive/cuid2
8
+ */
9
+ cuid2(): string;
10
+ /**
11
+ * [0-9 a-z A-Z]
12
+ */
13
+ generateAlphanumeric(length: number): string;
14
+ /**
15
+ * [a-z A-Z]
16
+ */
17
+ generateAlphabetic(length: number): string;
18
+ /**
19
+ * [0-9]
20
+ */
21
+ generateNumeric(length: number): string;
22
+ }
23
+ declare module '../x.mjs' {
24
+ interface X {
25
+ random: RandomService;
26
+ }
27
+ }
@@ -0,0 +1,42 @@
1
+ import { createId } from "@paralleldrive/cuid2";
2
+ import randomstring from "randomstring";
3
+ // src/services/random.ts
4
+ var RandomService = class {
5
+ serviceName = "random";
6
+ /**
7
+ * 24位。
8
+ *
9
+ * @see https://github.com/paralleldrive/cuid2
10
+ */
11
+ cuid2() {
12
+ return createId();
13
+ }
14
+ /**
15
+ * [0-9 a-z A-Z]
16
+ */
17
+ generateAlphanumeric(length) {
18
+ return randomstring.generate({
19
+ charset: "alphanumeric",
20
+ length
21
+ });
22
+ }
23
+ /**
24
+ * [a-z A-Z]
25
+ */
26
+ generateAlphabetic(length) {
27
+ return randomstring.generate({
28
+ charset: "alphabetic",
29
+ length
30
+ });
31
+ }
32
+ /**
33
+ * [0-9]
34
+ */
35
+ generateNumeric(length) {
36
+ return randomstring.generate({
37
+ charset: "numeric",
38
+ length
39
+ });
40
+ }
41
+ };
42
+ export { RandomService };
@@ -0,0 +1,37 @@
1
+ import { BaseService } from "./base.mjs";
2
+ import { MsValue } from "vtils";
3
+ export interface RateLimitServiceLimitByCountOptions {
4
+ key: string;
5
+ ttl: MsValue;
6
+ count: number;
7
+ }
8
+ export interface RateLimitServiceLimitByCountOrFailOptions extends RateLimitServiceLimitByCountOptions {
9
+ message?: string;
10
+ }
11
+ export interface RateLimitServiceLimitByManyCountOptions {
12
+ key: string;
13
+ limits: Array<{
14
+ ttl: MsValue;
15
+ count: number;
16
+ }>;
17
+ }
18
+ export interface RateLimitServiceLimitByManyCountOrFailOptions extends RateLimitServiceLimitByManyCountOptions {
19
+ message?: string;
20
+ limits: Array<{
21
+ ttl: MsValue;
22
+ count: number;
23
+ message?: string;
24
+ }>;
25
+ }
26
+ export declare class RateLimitService implements BaseService {
27
+ serviceName: string;
28
+ limitByCount(options: RateLimitServiceLimitByCountOptions): Promise<number>;
29
+ limitByCountOrFail(options: RateLimitServiceLimitByCountOrFailOptions): Promise<number>;
30
+ limitByManyCount(options: RateLimitServiceLimitByManyCountOptions): Promise<true | number>;
31
+ limitByManyCountOrFail(options: RateLimitServiceLimitByManyCountOrFailOptions): Promise<void>;
32
+ }
33
+ declare module '../x.mjs' {
34
+ interface X {
35
+ rateLimit: RateLimitService;
36
+ }
37
+ }
@@ -0,0 +1,40 @@
1
+ import { HttpError } from "../core/http_error.mjs";
2
+ import { x } from "../x.mjs";
3
+ import { ms } from "vtils";
4
+ // src/services/rate_limit.ts
5
+ var RateLimitService = class {
6
+ serviceName = "rateLimit";
7
+ async limitByCount(options) {
8
+ const cacheKey = `rateLimit_${options.key}`;
9
+ const remainingCount = await x.cache.get(cacheKey);
10
+ if (remainingCount == null) {
11
+ await x.cache.set(cacheKey, options.count, options.ttl);
12
+ return options.count;
13
+ }
14
+ if (remainingCount === 0) return 0;
15
+ await x.cache.decrease(cacheKey);
16
+ return remainingCount - 1;
17
+ }
18
+ async limitByCountOrFail(options) {
19
+ const count = await this.limitByCount(options);
20
+ if (count === 0) throw new HttpError.Forbidden(options.message);
21
+ return count;
22
+ }
23
+ async limitByManyCount(options) {
24
+ for (let i = 0; i < options.limits.length; i++) {
25
+ const item = options.limits[i];
26
+ const ttl = ms(item.ttl);
27
+ if (await this.limitByCount({
28
+ key: `${options.key}_${ttl}`,
29
+ ttl,
30
+ count: item.count
31
+ }) === 0) return i;
32
+ }
33
+ return true;
34
+ }
35
+ async limitByManyCountOrFail(options) {
36
+ const pass = await this.limitByManyCount(options);
37
+ if (pass !== true) throw new HttpError.Forbidden(options.limits[pass].message ?? options.message);
38
+ }
39
+ };
40
+ export { RateLimitService };
@@ -0,0 +1,11 @@
1
+ import { BaseService } from "./base.mjs";
2
+ import { Redis, RedisOptions } from "ioredis";
3
+ export interface RedisServiceOptions extends RedisOptions {}
4
+ export declare class RedisService extends Redis implements BaseService {
5
+ serviceName: string;
6
+ }
7
+ declare module '../x.mjs' {
8
+ interface X {
9
+ redis: RedisService;
10
+ }
11
+ }
@@ -0,0 +1,6 @@
1
+ import { Redis } from "ioredis";
2
+ // src/services/redis.ts
3
+ var RedisService = class extends Redis {
4
+ serviceName = "redis";
5
+ };
6
+ export { RedisService };
@@ -0,0 +1,29 @@
1
+ import { BaseService } from "./base.mjs";
2
+ export interface SensitiveWordsServiceOptions {
3
+ /** 敏感词列表 */
4
+ words: string[];
5
+ }
6
+ /**
7
+ * 敏感词服务。
8
+ */
9
+ export declare class SensitiveWordsService implements BaseService {
10
+ serviceName: string;
11
+ private sensitiveWords;
12
+ constructor(options: SensitiveWordsServiceOptions);
13
+ /**
14
+ * 文本转换。
15
+ */
16
+ private transform;
17
+ /**
18
+ * 验证文本是否包含敏感词。
19
+ */
20
+ validate(text: string, every?: boolean): Promise<{
21
+ pass: boolean;
22
+ words: string[];
23
+ }>;
24
+ }
25
+ declare module '../x.mjs' {
26
+ interface X {
27
+ sensitiveWords: SensitiveWordsService;
28
+ }
29
+ }
@@ -0,0 +1,37 @@
1
+ import { memoize, removeBlankChars, removeNonWordChars, toHalfWidthString, uniq } from "vtils";
2
+ import { phoneNumberRegExpBuilder } from "vtils/regexp";
3
+ // src/services/sensitive_words.ts
4
+ const phoneNumberRegExp = phoneNumberRegExpBuilder.build();
5
+ const toRegExp = memoize((re) => new RegExp(re.substring(1, re.length - 1)), (re) => re);
6
+ /**
7
+ * 敏感词服务。
8
+ */
9
+ var SensitiveWordsService = class {
10
+ serviceName = "sensitiveWords";
11
+ sensitiveWords = [];
12
+ constructor(options) {
13
+ this.sensitiveWords = uniq(options.words.map((word) => word.toLowerCase()));
14
+ }
15
+ /**
16
+ * 文本转换。
17
+ */
18
+ transform(text) {
19
+ return removeBlankChars(removeNonWordChars(toHalfWidthString(text))).toLowerCase().replace(/([^a-zA-Z0-9])\1+/g, "$1");
20
+ }
21
+ /**
22
+ * 验证文本是否包含敏感词。
23
+ */
24
+ async validate(text, every) {
25
+ text = this.transform(text);
26
+ const words = [];
27
+ for (const word of this.sensitiveWords) if (word === "<手机号>" ? phoneNumberRegExp.test(text) : word[0] === "/" && word[word.length - 1] === "/" ? toRegExp(word).test(text) : text.includes(word)) {
28
+ words.push(word);
29
+ if (!every) break;
30
+ }
31
+ return {
32
+ pass: !words.length,
33
+ words
34
+ };
35
+ }
36
+ };
37
+ export { SensitiveWordsService };
@@ -0,0 +1,40 @@
1
+ import { BaseService } from "./base.mjs";
2
+ export type SmsServiceProvider = 'tencentCloud';
3
+ export type SmsServiceOptions = {
4
+ provider: 'tencentCloud';
5
+ providerOptions: {
6
+ appId: string;
7
+ secretId: string;
8
+ secretKey: string;
9
+ };
10
+ };
11
+ export type SmsServiceSendPayload = {
12
+ provider: SmsServiceProvider;
13
+ signature: string;
14
+ templateId: string;
15
+ templateParamValues: string[];
16
+ phoneNumber: string;
17
+ };
18
+ export type SmsServiceSendResult = {
19
+ success: boolean;
20
+ message: string;
21
+ smsId: string;
22
+ };
23
+ export type SmsServiceErrorType = 'TEXT_INTERCEPTION' | 'PROVIDER_EXCEPTION' | 'RATE_LIMITATION' | 'NUMBER_EXCEPTION' | 'USER_REJECTION' | 'OTHERS';
24
+ export declare class SmsService implements BaseService {
25
+ private options;
26
+ serviceName: string;
27
+ constructor(options: SmsServiceOptions);
28
+ send(payload: SmsServiceSendPayload): Promise<SmsServiceSendResult>;
29
+ /**
30
+ * 推断错误类型
31
+ *
32
+ * @param errMsg 错误信息
33
+ */
34
+ static inferErrorType(errMsg: string): SmsServiceErrorType;
35
+ }
36
+ declare module '../x.mjs' {
37
+ interface X {
38
+ sms: SmsService;
39
+ }
40
+ }