wok-server 0.5.0 → 0.7.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 (380) hide show
  1. package/README.en.md +61 -0
  2. package/README.md +44 -29
  3. package/dist/cache/cache.js +98 -98
  4. package/dist/cache/config.js +19 -19
  5. package/dist/cache/index.js +27 -27
  6. package/dist/cache/purge-task.js +46 -46
  7. package/dist/cache/stat.js +47 -47
  8. package/dist/config/convert.js +36 -36
  9. package/dist/config/exception.js +14 -14
  10. package/dist/config/index.js +81 -81
  11. package/dist/http-client/index.js +136 -136
  12. package/dist/i18n/ar.js +17 -17
  13. package/dist/i18n/de.js +17 -17
  14. package/dist/i18n/en-us.js +17 -17
  15. package/dist/i18n/es.js +17 -17
  16. package/dist/i18n/fr.js +17 -17
  17. package/dist/i18n/i18n.js +231 -231
  18. package/dist/i18n/index.js +52 -52
  19. package/dist/i18n/ja.js +17 -17
  20. package/dist/i18n/ko.js +17 -17
  21. package/dist/i18n/msg.js +2 -2
  22. package/dist/i18n/pt.js +17 -17
  23. package/dist/i18n/ru.js +17 -17
  24. package/dist/i18n/tag.js +18 -18
  25. package/dist/i18n/zh-HK.js +17 -17
  26. package/dist/i18n/zh-TW.js +17 -17
  27. package/dist/i18n/zh-cn.js +17 -17
  28. package/dist/index.js +14 -14
  29. package/dist/lock/index.js +114 -114
  30. package/dist/log/config.js +35 -35
  31. package/dist/log/date.js +21 -21
  32. package/dist/log/file.js +198 -198
  33. package/dist/log/index.js +135 -135
  34. package/dist/log/level.js +33 -33
  35. package/dist/log/log.js +56 -56
  36. package/dist/log/store.js +19 -19
  37. package/dist/mongodb/collection.js +2 -2
  38. package/dist/mongodb/config.js +34 -34
  39. package/dist/mongodb/doc.js +2 -2
  40. package/dist/mongodb/exception.js +14 -14
  41. package/dist/mongodb/index.js +58 -58
  42. package/dist/mongodb/manager/base.js +563 -563
  43. package/dist/mongodb/manager/index.js +63 -63
  44. package/dist/mongodb/manager/tx-strict.js +84 -84
  45. package/dist/mongodb/manager/tx.js +30 -30
  46. package/dist/mongodb/migration.js +52 -52
  47. package/dist/mvc/access-log.js +33 -33
  48. package/dist/mvc/config.js +27 -27
  49. package/dist/mvc/exchange.js +113 -113
  50. package/dist/mvc/handler/index.js +7 -6
  51. package/dist/mvc/handler/json.js +65 -65
  52. package/dist/mvc/handler/restful.js +35 -35
  53. package/dist/mvc/handler/sse.js +65 -0
  54. package/dist/mvc/handler/upload.js +31 -31
  55. package/dist/mvc/index.js +50 -50
  56. package/dist/mvc/interceptor.js +2 -2
  57. package/dist/mvc/query.js +43 -43
  58. package/dist/mvc/render/file.js +132 -132
  59. package/dist/mvc/render/html/html.js +90 -90
  60. package/dist/mvc/render/html/index.js +18 -18
  61. package/dist/mvc/render/html/style.js +2 -2
  62. package/dist/mvc/render/index.js +7 -7
  63. package/dist/mvc/render/json.js +26 -26
  64. package/dist/mvc/render/text.js +16 -16
  65. package/dist/mvc/router.js +2 -2
  66. package/dist/mvc/server.js +272 -272
  67. package/dist/mvc/static/header.js +67 -67
  68. package/dist/mvc/static/index.js +6 -6
  69. package/dist/mvc/static/mime-type.js +84 -84
  70. package/dist/mvc/static/server-cache-config.js +66 -66
  71. package/dist/mvc/static/server-cache.js +133 -133
  72. package/dist/mvc/static/static-handler.js +372 -372
  73. package/dist/mysql/config.js +51 -51
  74. package/dist/mysql/exception.js +14 -14
  75. package/dist/mysql/index.js +87 -87
  76. package/dist/mysql/manager/base.js +278 -239
  77. package/dist/mysql/manager/index.js +107 -107
  78. package/dist/mysql/manager/ops/count.js +20 -20
  79. package/dist/mysql/manager/ops/criteria.js +381 -356
  80. package/dist/mysql/manager/ops/delete.js +59 -65
  81. package/dist/mysql/manager/ops/exist.js +26 -26
  82. package/dist/mysql/manager/ops/find.js +149 -169
  83. package/dist/mysql/manager/ops/index.js +16 -14
  84. package/dist/mysql/manager/ops/insert.js +132 -106
  85. package/dist/mysql/manager/ops/modify.js +10 -10
  86. package/dist/mysql/manager/ops/order-by.js +28 -0
  87. package/dist/mysql/manager/ops/paginate.js +48 -23
  88. package/dist/mysql/manager/ops/query.js +9 -9
  89. package/dist/mysql/manager/ops/update.js +222 -216
  90. package/dist/mysql/manager/ops/upsert.js +178 -0
  91. package/dist/mysql/manager/ops/utils.js +28 -24
  92. package/dist/mysql/manager/tx-strict.js +103 -103
  93. package/dist/mysql/manager/tx.js +30 -30
  94. package/dist/mysql/manager/utils.js +56 -56
  95. package/dist/mysql/migration.js +136 -136
  96. package/dist/mysql/table-info.js +8 -8
  97. package/dist/task/daily.js +59 -59
  98. package/dist/task/fixed-delay.js +38 -38
  99. package/dist/task/fixed-rate.js +42 -42
  100. package/dist/task/index.js +9 -9
  101. package/dist/task/task.js +56 -56
  102. package/dist/validation/exception.js +36 -36
  103. package/dist/validation/index.js +40 -40
  104. package/dist/validation/validator/array.js +34 -34
  105. package/dist/validation/validator/enum.js +28 -28
  106. package/dist/validation/validator/index.js +14 -14
  107. package/dist/validation/validator/length.js +40 -40
  108. package/dist/validation/validator/max-length.js +35 -35
  109. package/dist/validation/validator/max.js +29 -29
  110. package/dist/validation/validator/min-length.js +33 -33
  111. package/dist/validation/validator/min.js +29 -29
  112. package/dist/validation/validator/not-blank.js +33 -33
  113. package/dist/validation/validator/not-null.js +21 -21
  114. package/dist/validation/validator/plain-obj.js +32 -32
  115. package/dist/validation/validator/regexp.js +34 -34
  116. package/documentation/en/cache.md +56 -0
  117. package/documentation/en/config.md +96 -0
  118. package/documentation/en/engineering.md +256 -0
  119. package/documentation/en/http-client.md +32 -0
  120. package/documentation/en/i18n.md +143 -0
  121. package/documentation/en/index.md +24 -0
  122. package/documentation/en/lock.md +51 -0
  123. package/documentation/en/log.md +109 -0
  124. package/documentation/en/mongodb.md +256 -0
  125. package/documentation/en/mvc.md +688 -0
  126. package/documentation/en/mysql.md +682 -0
  127. package/documentation/en/task.md +45 -0
  128. package/documentation/en/test.md +56 -0
  129. package/documentation/en/validate.md +130 -0
  130. package/documentation/zh-cn/mvc.md +66 -24
  131. package/documentation/zh-cn/mysql.md +146 -17
  132. package/package.json +4 -1
  133. package/skills/wok-server-api-rules/SKILL.md +350 -0
  134. package/skills/wok-server-cache/SKILL.md +216 -0
  135. package/skills/wok-server-code-navigation/SKILL.md +153 -0
  136. package/skills/wok-server-config/SKILL.md +200 -0
  137. package/skills/wok-server-getting-started/SKILL.md +123 -0
  138. package/skills/wok-server-getting-started/references/engineering.md +169 -0
  139. package/skills/wok-server-http-client/SKILL.md +164 -0
  140. package/skills/wok-server-i18n/SKILL.md +214 -0
  141. package/skills/wok-server-lock/SKILL.md +144 -0
  142. package/skills/wok-server-log/SKILL.md +218 -0
  143. package/skills/wok-server-mongodb/SKILL.md +235 -0
  144. package/skills/wok-server-mvc/SKILL.md +251 -0
  145. package/skills/wok-server-mvc/references/respond-html.md +157 -0
  146. package/skills/wok-server-mvc/references/sse.md +121 -0
  147. package/skills/wok-server-mvc/references/static-files.md +47 -0
  148. package/skills/wok-server-mvc/references/upload.md +62 -0
  149. package/skills/wok-server-mvc/references/websocket.md +30 -0
  150. package/skills/wok-server-mysql/SKILL.md +388 -0
  151. package/skills/wok-server-mysql/references/multi-datasource.md +76 -0
  152. package/skills/wok-server-mysql/references/version-control.md +22 -0
  153. package/skills/wok-server-task/SKILL.md +158 -0
  154. package/skills/wok-server-validate/SKILL.md +167 -0
  155. package/src/cache/cache.ts +118 -0
  156. package/src/cache/config.ts +53 -0
  157. package/src/cache/index.ts +27 -0
  158. package/src/cache/purge-task.ts +53 -0
  159. package/src/cache/stat.ts +47 -0
  160. package/src/config/convert.ts +27 -0
  161. package/src/config/exception.ts +8 -0
  162. package/src/config/index.ts +92 -0
  163. package/src/http-client/index.ts +202 -0
  164. package/src/i18n/ar.ts +16 -0
  165. package/src/i18n/de.ts +16 -0
  166. package/src/i18n/en-us.ts +16 -0
  167. package/src/i18n/es.ts +16 -0
  168. package/src/i18n/fr.ts +16 -0
  169. package/src/i18n/i18n.ts +230 -0
  170. package/src/i18n/index.ts +50 -0
  171. package/src/i18n/ja.ts +16 -0
  172. package/src/i18n/ko.ts +16 -0
  173. package/src/i18n/msg.ts +50 -0
  174. package/src/i18n/pt.ts +16 -0
  175. package/src/i18n/ru.ts +16 -0
  176. package/src/i18n/tag.ts +18 -0
  177. package/src/i18n/zh-HK.ts +16 -0
  178. package/src/i18n/zh-TW.ts +16 -0
  179. package/src/i18n/zh-cn.ts +16 -0
  180. package/src/index.ts +11 -0
  181. package/src/lock/index.ts +164 -0
  182. package/src/log/config.ts +71 -0
  183. package/src/log/date.ts +19 -0
  184. package/src/log/file.ts +215 -0
  185. package/src/log/index.ts +136 -0
  186. package/src/log/level.ts +29 -0
  187. package/src/log/log.ts +77 -0
  188. package/src/log/store.ts +31 -0
  189. package/src/mongodb/collection.ts +25 -0
  190. package/src/mongodb/config.ts +69 -0
  191. package/src/mongodb/doc.ts +12 -0
  192. package/src/mongodb/exception.ts +8 -0
  193. package/src/mongodb/index.ts +71 -0
  194. package/src/mongodb/manager/base.ts +674 -0
  195. package/src/mongodb/manager/index.ts +80 -0
  196. package/src/mongodb/manager/tx-strict.ts +153 -0
  197. package/src/mongodb/manager/tx.ts +34 -0
  198. package/src/mongodb/migration.ts +66 -0
  199. package/src/mvc/access-log.ts +33 -0
  200. package/src/mvc/config.ts +70 -0
  201. package/src/mvc/exchange.ts +126 -0
  202. package/src/mvc/handler/index.ts +4 -0
  203. package/src/mvc/handler/json.ts +96 -0
  204. package/src/mvc/handler/restful.ts +39 -0
  205. package/src/mvc/handler/sse.ts +90 -0
  206. package/src/mvc/handler/upload.ts +54 -0
  207. package/src/mvc/index.ts +48 -0
  208. package/src/mvc/interceptor.ts +12 -0
  209. package/src/mvc/query.ts +36 -0
  210. package/src/mvc/render/file.ts +148 -0
  211. package/src/mvc/render/html/html.ts +187 -0
  212. package/src/mvc/render/html/index.ts +16 -0
  213. package/src/mvc/render/html/style.ts +1201 -0
  214. package/src/mvc/render/index.ts +4 -0
  215. package/src/mvc/render/json.ts +24 -0
  216. package/src/mvc/render/text.ts +14 -0
  217. package/src/mvc/router.ts +13 -0
  218. package/src/mvc/server.ts +315 -0
  219. package/src/mvc/static/header.ts +86 -0
  220. package/src/mvc/static/index.ts +3 -0
  221. package/src/mvc/static/mime-type.ts +81 -0
  222. package/src/mvc/static/server-cache-config.ts +92 -0
  223. package/src/mvc/static/server-cache.ts +171 -0
  224. package/src/mvc/static/static-handler.ts +445 -0
  225. package/src/mysql/config.ts +130 -0
  226. package/src/mysql/exception.ts +8 -0
  227. package/src/mysql/index.ts +88 -0
  228. package/src/mysql/manager/base.ts +332 -0
  229. package/src/mysql/manager/index.ts +112 -0
  230. package/src/mysql/manager/ops/count.ts +30 -0
  231. package/src/mysql/manager/ops/criteria.ts +446 -0
  232. package/src/mysql/manager/ops/delete.ts +91 -0
  233. package/src/mysql/manager/ops/exist.ts +41 -0
  234. package/src/mysql/manager/ops/find.ts +209 -0
  235. package/src/mysql/manager/ops/index.ts +13 -0
  236. package/src/mysql/manager/ops/insert.ts +158 -0
  237. package/src/mysql/manager/ops/modify.ts +14 -0
  238. package/src/mysql/manager/ops/order-by.ts +58 -0
  239. package/src/mysql/manager/ops/paginate.ts +100 -0
  240. package/src/mysql/manager/ops/query.ts +13 -0
  241. package/src/mysql/manager/ops/update.ts +318 -0
  242. package/src/mysql/manager/ops/upsert.ts +224 -0
  243. package/src/mysql/manager/ops/utils.ts +24 -0
  244. package/src/mysql/manager/tx-strict.ts +138 -0
  245. package/src/mysql/manager/tx.ts +31 -0
  246. package/src/mysql/manager/utils.ts +75 -0
  247. package/src/mysql/migration.ts +149 -0
  248. package/src/mysql/table-info.ts +41 -0
  249. package/src/task/daily.ts +70 -0
  250. package/src/task/fixed-delay.ts +45 -0
  251. package/src/task/fixed-rate.ts +49 -0
  252. package/src/task/index.ts +4 -0
  253. package/src/task/task.ts +70 -0
  254. package/src/validation/exception.ts +27 -0
  255. package/src/validation/index.ts +61 -0
  256. package/src/validation/validator/array.ts +32 -0
  257. package/src/validation/validator/enum.ts +25 -0
  258. package/src/validation/validator/index.ts +11 -0
  259. package/src/validation/validator/length.ts +42 -0
  260. package/src/validation/validator/max-length.ts +33 -0
  261. package/src/validation/validator/max.ts +26 -0
  262. package/src/validation/validator/min-length.ts +31 -0
  263. package/src/validation/validator/min.ts +26 -0
  264. package/src/validation/validator/not-blank.ts +31 -0
  265. package/src/validation/validator/not-null.ts +19 -0
  266. package/src/validation/validator/plain-obj.ts +30 -0
  267. package/src/validation/validator/regexp.ts +32 -0
  268. package/types/cache/cache.d.ts +52 -52
  269. package/types/cache/config.d.ts +32 -32
  270. package/types/cache/index.d.ts +2 -2
  271. package/types/cache/purge-task.d.ts +11 -11
  272. package/types/cache/stat.d.ts +26 -26
  273. package/types/config/convert.d.ts +6 -6
  274. package/types/config/exception.d.ts +7 -7
  275. package/types/config/index.d.ts +25 -25
  276. package/types/http-client/index.d.ts +71 -71
  277. package/types/i18n/ar.d.ts +2 -2
  278. package/types/i18n/de.d.ts +2 -2
  279. package/types/i18n/en-us.d.ts +2 -2
  280. package/types/i18n/es.d.ts +2 -2
  281. package/types/i18n/fr.d.ts +2 -2
  282. package/types/i18n/i18n.d.ts +102 -102
  283. package/types/i18n/index.d.ts +9 -9
  284. package/types/i18n/ja.d.ts +2 -2
  285. package/types/i18n/ko.d.ts +2 -2
  286. package/types/i18n/msg.d.ts +50 -50
  287. package/types/i18n/pt.d.ts +2 -2
  288. package/types/i18n/ru.d.ts +2 -2
  289. package/types/i18n/tag.d.ts +11 -11
  290. package/types/i18n/zh-HK.d.ts +2 -2
  291. package/types/i18n/zh-TW.d.ts +2 -2
  292. package/types/i18n/zh-cn.d.ts +2 -2
  293. package/types/index.d.ts +11 -11
  294. package/types/lock/index.d.ts +64 -64
  295. package/types/log/config.d.ts +35 -35
  296. package/types/log/date.d.ts +2 -2
  297. package/types/log/file.d.ts +13 -13
  298. package/types/log/index.d.ts +53 -53
  299. package/types/log/level.d.ts +14 -14
  300. package/types/log/log.d.ts +40 -40
  301. package/types/log/store.d.ts +19 -19
  302. package/types/mongodb/collection.d.ts +25 -25
  303. package/types/mongodb/config.d.ts +45 -45
  304. package/types/mongodb/doc.d.ts +11 -11
  305. package/types/mongodb/exception.d.ts +7 -7
  306. package/types/mongodb/index.d.ts +29 -29
  307. package/types/mongodb/manager/base.d.ts +188 -188
  308. package/types/mongodb/manager/index.d.ts +38 -38
  309. package/types/mongodb/manager/tx-strict.d.ts +41 -41
  310. package/types/mongodb/manager/tx.d.ts +21 -21
  311. package/types/mongodb/migration.d.ts +12 -12
  312. package/types/mvc/access-log.d.ts +7 -7
  313. package/types/mvc/config.d.ts +42 -42
  314. package/types/mvc/exchange.d.ts +72 -72
  315. package/types/mvc/handler/index.d.ts +4 -3
  316. package/types/mvc/handler/json.d.ts +44 -44
  317. package/types/mvc/handler/restful.d.ts +11 -11
  318. package/types/mvc/handler/sse.d.ts +34 -0
  319. package/types/mvc/handler/upload.d.ts +36 -36
  320. package/types/mvc/index.d.ts +22 -22
  321. package/types/mvc/interceptor.d.ts +11 -11
  322. package/types/mvc/query.d.ts +13 -13
  323. package/types/mvc/render/file.d.ts +10 -10
  324. package/types/mvc/render/html/html.d.ts +98 -98
  325. package/types/mvc/render/html/index.d.ts +11 -11
  326. package/types/mvc/render/html/style.d.ts +1201 -1201
  327. package/types/mvc/render/index.d.ts +4 -4
  328. package/types/mvc/render/json.d.ts +17 -17
  329. package/types/mvc/render/text.d.ts +10 -10
  330. package/types/mvc/router.d.ts +11 -11
  331. package/types/mvc/server.d.ts +90 -90
  332. package/types/mvc/static/header.d.ts +27 -27
  333. package/types/mvc/static/index.d.ts +3 -3
  334. package/types/mvc/static/mime-type.d.ts +2 -2
  335. package/types/mvc/static/server-cache-config.d.ts +30 -30
  336. package/types/mvc/static/server-cache.d.ts +76 -76
  337. package/types/mvc/static/static-handler.d.ts +77 -77
  338. package/types/mysql/config.d.ts +90 -90
  339. package/types/mysql/exception.d.ts +7 -7
  340. package/types/mysql/index.d.ts +16 -16
  341. package/types/mysql/manager/base.d.ts +196 -165
  342. package/types/mysql/manager/index.d.ts +36 -36
  343. package/types/mysql/manager/ops/count.d.ts +13 -13
  344. package/types/mysql/manager/ops/criteria.d.ts +144 -134
  345. package/types/mysql/manager/ops/delete.d.ts +47 -46
  346. package/types/mysql/manager/ops/exist.d.ts +6 -6
  347. package/types/mysql/manager/ops/find.d.ts +87 -86
  348. package/types/mysql/manager/ops/index.d.ts +12 -10
  349. package/types/mysql/manager/ops/insert.d.ts +32 -18
  350. package/types/mysql/manager/ops/modify.d.ts +3 -3
  351. package/types/mysql/manager/ops/order-by.d.ts +38 -0
  352. package/types/mysql/manager/ops/paginate.d.ts +53 -36
  353. package/types/mysql/manager/ops/query.d.ts +3 -3
  354. package/types/mysql/manager/ops/update.d.ts +99 -76
  355. package/types/mysql/manager/ops/upsert.d.ts +36 -0
  356. package/types/mysql/manager/ops/utils.d.ts +5 -5
  357. package/types/mysql/manager/tx-strict.d.ts +36 -36
  358. package/types/mysql/manager/tx.d.ts +15 -15
  359. package/types/mysql/manager/utils.d.ts +17 -17
  360. package/types/mysql/migration.d.ts +8 -8
  361. package/types/mysql/table-info.d.ts +36 -36
  362. package/types/task/daily.d.ts +16 -16
  363. package/types/task/fixed-delay.d.ts +9 -9
  364. package/types/task/fixed-rate.d.ts +9 -9
  365. package/types/task/index.d.ts +4 -4
  366. package/types/task/task.d.ts +34 -34
  367. package/types/validation/exception.d.ts +38 -38
  368. package/types/validation/index.d.ts +32 -32
  369. package/types/validation/validator/array.d.ts +5 -5
  370. package/types/validation/validator/enum.d.ts +8 -8
  371. package/types/validation/validator/index.d.ts +11 -11
  372. package/types/validation/validator/length.d.ts +10 -10
  373. package/types/validation/validator/max-length.d.ts +8 -8
  374. package/types/validation/validator/max.d.ts +7 -7
  375. package/types/validation/validator/min-length.d.ts +6 -6
  376. package/types/validation/validator/min.d.ts +7 -7
  377. package/types/validation/validator/not-blank.d.ts +7 -7
  378. package/types/validation/validator/not-null.d.ts +6 -6
  379. package/types/validation/validator/plain-obj.d.ts +7 -7
  380. package/types/validation/validator/regexp.d.ts +8 -8
@@ -0,0 +1,42 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+
4
+ /**
5
+ * length 校验,可用于字符串或数组.
6
+ * @returns
7
+ */
8
+ export function length<T>(opts: {
9
+ min?: number
10
+ max?: number
11
+ message?: string
12
+ }): PropValidator<T> {
13
+ const validator = 'length'
14
+ return val => {
15
+ // 不校验空
16
+ if (!val) {
17
+ return { ok: true }
18
+ }
19
+ if (typeof (val as any).length !== 'number') {
20
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-no-length') }
21
+ }
22
+ const { length } = val as any
23
+ if (typeof length !== 'number') {
24
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-length-not-number') }
25
+ }
26
+ if (typeof opts.min === 'number' && length < opts.min) {
27
+ return {
28
+ ok: false,
29
+ validator,
30
+ message: opts.message || getI18n().buildMsg('validate-err-min-length', `${opts.min}`)
31
+ }
32
+ }
33
+ if (typeof opts.max === 'number' && length > opts.max) {
34
+ return {
35
+ ok: false,
36
+ validator,
37
+ message: opts.message || getI18n().buildMsg('validate-err-max-length', `${opts.max}`)
38
+ }
39
+ }
40
+ return { ok: true }
41
+ }
42
+ }
@@ -0,0 +1,33 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+
4
+ /**
5
+ * 最大长度校验,可用于字符串或数组.
6
+ * @param maxLength
7
+ * @param message
8
+ * @returns
9
+ */
10
+ export function maxLength<T>(maxLength: number, message?: string): PropValidator<T> {
11
+ const validator = 'maxLength'
12
+ return val => {
13
+ // 不校验空
14
+ if (!val) {
15
+ return { ok: true }
16
+ }
17
+ if (typeof (val as any).length !== 'number') {
18
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-no-length') }
19
+ }
20
+ const { length } = val as any
21
+ if (typeof length !== 'number') {
22
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-length-not-number') }
23
+ }
24
+ if (length > maxLength) {
25
+ return {
26
+ ok: false,
27
+ validator,
28
+ message: message || getI18n().buildMsg('validate-err-max-length', `${maxLength}`)
29
+ }
30
+ }
31
+ return { ok: true }
32
+ }
33
+ }
@@ -0,0 +1,26 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+ /**
4
+ * 最大值校验.
5
+ * @param max 最大值
6
+ * @param msg 错误消息
7
+ */
8
+ export function max<T>(max: number, msg?: string): PropValidator<T> {
9
+ const validator = 'max'
10
+ return val => {
11
+ if (val == undefined || val === null) {
12
+ return { ok: true }
13
+ }
14
+ if (typeof val !== 'number') {
15
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-numer') }
16
+ }
17
+ if (val > max) {
18
+ return {
19
+ ok: false,
20
+ validator,
21
+ message: msg || getI18n().buildMsg('validate-err-max', `${max}`)
22
+ }
23
+ }
24
+ return { ok: true }
25
+ }
26
+ }
@@ -0,0 +1,31 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+
4
+ /**
5
+ * 最小长度校验,可用于字符串或数组.
6
+ * @returns
7
+ */
8
+ export function minLength<T>(minLength: number, message?: string): PropValidator<T> {
9
+ const validator = 'minLength'
10
+ return val => {
11
+ // 不校验空
12
+ if (!val) {
13
+ return { ok: true }
14
+ }
15
+ if (typeof (val as any).length !== 'number') {
16
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-no-length') }
17
+ }
18
+ const { length } = val as any
19
+ if (typeof length !== 'number') {
20
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-length-not-number') }
21
+ }
22
+ if (length < minLength) {
23
+ return {
24
+ ok: false,
25
+ validator,
26
+ message: message || getI18n().buildMsg('validate-err-min-length', `${minLength}`)
27
+ }
28
+ }
29
+ return { ok: true }
30
+ }
31
+ }
@@ -0,0 +1,26 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+ /**
4
+ * 最小值校验.
5
+ * @param min 最小值
6
+ * @param msg 错误消息
7
+ */
8
+ export function min<T>(min: number, msg?: string): PropValidator<T> {
9
+ const validator = 'min'
10
+ return val => {
11
+ if (val == undefined || val === null) {
12
+ return { ok: true }
13
+ }
14
+ if (typeof val !== 'number') {
15
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-numer') }
16
+ }
17
+ if (val < min) {
18
+ return {
19
+ ok: false,
20
+ validator,
21
+ message: msg || getI18n().buildMsg('validate-err-min', `${min}`)
22
+ }
23
+ }
24
+ return { ok: true }
25
+ }
26
+ }
@@ -0,0 +1,31 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+
4
+ /**
5
+ * 字符串非空校验,以下的情况不会通过校验:undefined,null,非 string 类型,空白字符串.
6
+ * @param message
7
+ * @returns
8
+ */
9
+ export function notBlank<T>(message?: string): PropValidator<T> {
10
+ const validator = 'notBlank'
11
+ return val => {
12
+ if (val === undefined || val === null) {
13
+ return {
14
+ ok: false,
15
+ validator,
16
+ message: message || getI18n().buildMsg('validate-err-empty')
17
+ }
18
+ }
19
+ if (typeof val !== 'string') {
20
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-string') }
21
+ }
22
+ if (!val.trim()) {
23
+ return {
24
+ ok: false,
25
+ validator,
26
+ message: message || getI18n().buildMsg('validate-err-empty')
27
+ }
28
+ }
29
+ return { ok: true }
30
+ }
31
+ }
@@ -0,0 +1,19 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+
4
+ /**
5
+ * 非空校验.
6
+ * @param message
7
+ */
8
+ export function notNull<T>(message?: string): PropValidator<T> {
9
+ return val => {
10
+ if (val === null || val === undefined) {
11
+ return {
12
+ ok: false,
13
+ message: message || getI18n().buildMsg('validate-err-empty'),
14
+ validator: 'notNull'
15
+ }
16
+ }
17
+ return { ok: true }
18
+ }
19
+ }
@@ -0,0 +1,30 @@
1
+ import { PropValidator, ValidationOpts } from '..'
2
+
3
+ /**
4
+ * 普通对象校验.
5
+ * @param opts
6
+ * @returns
7
+ */
8
+ export function plainObject<T>(opts: ValidationOpts<Exclude<T, undefined>>): PropValidator<T> {
9
+ const validator = 'plainObject'
10
+ return val => {
11
+ if (!val) {
12
+ return { ok: true }
13
+ }
14
+ for (const entry of Object.entries(opts)) {
15
+ const [prop, validators] = entry
16
+ const v = val[prop as keyof T]
17
+ for (const validate of validators as PropValidator<any>[]) {
18
+ const result = validate(v)
19
+ if (!result.ok) {
20
+ const propPath = [prop]
21
+ if (result.propPath) {
22
+ propPath.push(...result.propPath)
23
+ }
24
+ return { ok: false, validator, message: result.message, propPath }
25
+ }
26
+ }
27
+ }
28
+ return { ok: true }
29
+ }
30
+ }
@@ -0,0 +1,32 @@
1
+ import { PropValidator } from '..'
2
+ import { getI18n } from '../../i18n'
3
+
4
+ /**
5
+ * 正则校验
6
+ * @param pattern 正则表达式
7
+ * @param msg 错误消息
8
+ * @returns
9
+ */
10
+ export function regexp<T>(pattern: RegExp, msg?: string): PropValidator<T> {
11
+ const validator = 'regexp'
12
+ return val => {
13
+ if (val === undefined || val === null) {
14
+ return { ok: true }
15
+ }
16
+ if (typeof val !== 'string') {
17
+ return { ok: false, validator, message: getI18n().buildMsg('validate-err-string') }
18
+ }
19
+ // 跳过空串
20
+ if (!val) {
21
+ return { ok: true }
22
+ }
23
+ if (!pattern.test(val)) {
24
+ return {
25
+ ok: false,
26
+ validator,
27
+ message: msg || getI18n().buildMsg('validate-err-incorrect-format')
28
+ }
29
+ }
30
+ return { ok: true }
31
+ }
32
+ }
@@ -1,52 +1,52 @@
1
- import { CacheStat } from './stat';
2
- /**
3
- * 缓存内容
4
- */
5
- export interface CacheContent {
6
- /**
7
- * 保存的值
8
- */
9
- val: any;
10
- /**
11
- * 过期时间
12
- */
13
- expireAt: number;
14
- }
15
- export declare class Cache {
16
- private readonly valueMap;
17
- private readonly stat?;
18
- /**
19
- * promise 表,作用是处理异步并发问题,如果有相同的 key 同时请求,保证异步的 provider 只执行一次
20
- */
21
- private promiseMap;
22
- constructor(valueMap: Map<string, CacheContent>, stat?: CacheStat | undefined);
23
- /**
24
- * 放入缓存
25
- * @param key
26
- * @param val
27
- * @param expiresInSeconds
28
- */
29
- put(key: string, val: any, expiresInSeconds?: number): void;
30
- /**
31
- * 获取缓存值
32
- * @param key
33
- * @returns
34
- */
35
- get<T>(key: string): T | undefined;
36
- /**
37
- * 清除所有缓存
38
- */
39
- clear(): void;
40
- /**
41
- * 删除.
42
- * @param key
43
- */
44
- remove(key: string): void;
45
- /**
46
- * 在缓存值不存在时计算缓存的值,然后放入并返回.
47
- * @param key
48
- * @param provider
49
- * @param expiresInSeconds
50
- */
51
- computeIfAbsent<T>(key: string, provider: () => Promise<T> | T, expiresInSeconds?: number): Promise<T>;
52
- }
1
+ import { CacheStat } from './stat';
2
+ /**
3
+ * 缓存内容
4
+ */
5
+ export interface CacheContent {
6
+ /**
7
+ * 保存的值
8
+ */
9
+ val: any;
10
+ /**
11
+ * 过期时间
12
+ */
13
+ expireAt: number;
14
+ }
15
+ export declare class Cache {
16
+ private readonly valueMap;
17
+ private readonly stat?;
18
+ /**
19
+ * promise 表,作用是处理异步并发问题,如果有相同的 key 同时请求,保证异步的 provider 只执行一次
20
+ */
21
+ private promiseMap;
22
+ constructor(valueMap: Map<string, CacheContent>, stat?: CacheStat | undefined);
23
+ /**
24
+ * 放入缓存
25
+ * @param key
26
+ * @param val
27
+ * @param expiresInSeconds
28
+ */
29
+ put(key: string, val: any, expiresInSeconds?: number): void;
30
+ /**
31
+ * 获取缓存值
32
+ * @param key
33
+ * @returns
34
+ */
35
+ get<T>(key: string): T | undefined;
36
+ /**
37
+ * 清除所有缓存
38
+ */
39
+ clear(): void;
40
+ /**
41
+ * 删除.
42
+ * @param key
43
+ */
44
+ remove(key: string): void;
45
+ /**
46
+ * 在缓存值不存在时计算缓存的值,然后放入并返回.
47
+ * @param key
48
+ * @param provider
49
+ * @param expiresInSeconds
50
+ */
51
+ computeIfAbsent<T>(key: string, provider: () => Promise<T> | T, expiresInSeconds?: number): Promise<T>;
52
+ }
@@ -1,32 +1,32 @@
1
- /**
2
- * 缓存的配置
3
- */
4
- interface CacheConfig {
5
- /**
6
- * 默认的存活时长,取值:1-3600,默认 60。存活时间应该尽可能的短,尤其是当缓存的内容比较大时,
7
- * 否则缓存的内容长时间占用内存,会对 gc 造成影响。
8
- */
9
- defaultExpireInSeconds: number;
10
- /**
11
- * 是否启用统计任务,启用后每隔指定的时间打印一次缓存统计信息,用于了解缓存的情况.
12
- */
13
- statTaskEnabled: boolean;
14
- /**
15
- * 统计任务执行的周期,单位秒,取值 60-3600。统计周期也即是时间窗口,
16
- * 每个周期都是独立的,只统计这个周期内的缓存使用情况。
17
- */
18
- statInterval: number;
19
- /**
20
- * 最大元素数量,为了控制缓存占用的内存空间,可以将 maxElements 设置的低一些。
21
- */
22
- maxElements: number;
23
- /**
24
- * 数据清理任务执行周期,单位秒.取值 1-3600,清理任务完成两件事:删除过期数据和驱逐多余记录。
25
- * 如果项目规模小,缓存的内容非常少,可以将间隔设置长一些,降低频率.
26
- * 如果缓存的内容很多,频率需要高一些,及时将无效数据清理掉。
27
- * 否则缓存会长时间占用很高的内存无法被回收,回收器完成检查却需要很长时间,影响gc效率.
28
- */
29
- cleaningInterval: number;
30
- }
31
- export declare const config: CacheConfig;
32
- export {};
1
+ /**
2
+ * 缓存的配置
3
+ */
4
+ interface CacheConfig {
5
+ /**
6
+ * 默认的存活时长,取值:1-3600,默认 60。存活时间应该尽可能的短,尤其是当缓存的内容比较大时,
7
+ * 否则缓存的内容长时间占用内存,会对 gc 造成影响。
8
+ */
9
+ defaultExpireInSeconds: number;
10
+ /**
11
+ * 是否启用统计任务,启用后每隔指定的时间打印一次缓存统计信息,用于了解缓存的情况.
12
+ */
13
+ statTaskEnabled: boolean;
14
+ /**
15
+ * 统计任务执行的周期,单位秒,取值 60-3600。统计周期也即是时间窗口,
16
+ * 每个周期都是独立的,只统计这个周期内的缓存使用情况。
17
+ */
18
+ statInterval: number;
19
+ /**
20
+ * 最大元素数量,为了控制缓存占用的内存空间,可以将 maxElements 设置的低一些。
21
+ */
22
+ maxElements: number;
23
+ /**
24
+ * 数据清理任务执行周期,单位秒.取值 1-3600,清理任务完成两件事:删除过期数据和驱逐多余记录。
25
+ * 如果项目规模小,缓存的内容非常少,可以将间隔设置长一些,降低频率.
26
+ * 如果缓存的内容很多,频率需要高一些,及时将无效数据清理掉。
27
+ * 否则缓存会长时间占用很高的内存无法被回收,回收器完成检查却需要很长时间,影响gc效率.
28
+ */
29
+ cleaningInterval: number;
30
+ }
31
+ export declare const config: CacheConfig;
32
+ export {};
@@ -1,2 +1,2 @@
1
- import { Cache } from './cache';
2
- export declare function getCache(): Cache;
1
+ import { Cache } from './cache';
2
+ export declare function getCache(): Cache;
@@ -1,11 +1,11 @@
1
- import { Task } from '../task';
2
- import { CacheContent } from './cache';
3
- /**
4
- * 缓存清理任务
5
- */
6
- export declare class PurgeTask implements Task {
7
- private readonly valueMap;
8
- readonly name = "Cache purge";
9
- constructor(valueMap: Map<string, CacheContent>);
10
- run(): Promise<void>;
11
- }
1
+ import { Task } from '../task';
2
+ import { CacheContent } from './cache';
3
+ /**
4
+ * 缓存清理任务
5
+ */
6
+ export declare class PurgeTask implements Task {
7
+ private readonly valueMap;
8
+ readonly name = "Cache purge";
9
+ constructor(valueMap: Map<string, CacheContent>);
10
+ run(): Promise<void>;
11
+ }
@@ -1,26 +1,26 @@
1
- /**
2
- * 缓存统计.
3
- */
4
- export declare class CacheStat {
5
- private readonly valueMap;
6
- /**
7
- * 开始统计时间
8
- */
9
- private start;
10
- private totalGet;
11
- private totalHit;
12
- constructor(valueMap: Map<string, any>);
13
- /**
14
- * 添加 get 次数
15
- * @param hit 是否命中
16
- */
17
- addGet(hit: boolean): void;
18
- /**
19
- * 清空统计信息,重新开始统计.
20
- */
21
- clear(): void;
22
- /**
23
- * 输出日志
24
- */
25
- log(): void;
26
- }
1
+ /**
2
+ * 缓存统计.
3
+ */
4
+ export declare class CacheStat {
5
+ private readonly valueMap;
6
+ /**
7
+ * 开始统计时间
8
+ */
9
+ private start;
10
+ private totalGet;
11
+ private totalHit;
12
+ constructor(valueMap: Map<string, any>);
13
+ /**
14
+ * 添加 get 次数
15
+ * @param hit 是否命中
16
+ */
17
+ addGet(hit: boolean): void;
18
+ /**
19
+ * 清空统计信息,重新开始统计.
20
+ */
21
+ clear(): void;
22
+ /**
23
+ * 输出日志
24
+ */
25
+ log(): void;
26
+ }
@@ -1,6 +1,6 @@
1
- /**
2
- * 转换值.
3
- * @param val
4
- * @param defaultVal
5
- */
6
- export declare function convert(val: string, defaultVal: any): string | number | boolean;
1
+ /**
2
+ * 转换值.
3
+ * @param val
4
+ * @param defaultVal
5
+ */
6
+ export declare function convert(val: string, defaultVal: any): string | number | boolean;
@@ -1,7 +1,7 @@
1
- /**
2
- * 配置异常.
3
- */
4
- export declare class ConfigException extends Error {
5
- readonly message: string;
6
- constructor(message: string);
7
- }
1
+ /**
2
+ * 配置异常.
3
+ */
4
+ export declare class ConfigException extends Error {
5
+ readonly message: string;
6
+ constructor(message: string);
7
+ }
@@ -1,25 +1,25 @@
1
- import { ValidationOpts } from '../validation';
2
- /**
3
- * 获取配置
4
- * @param envPrefix
5
- */
6
- export declare function getConfig<T>(envPrefix: string): T | undefined;
7
- /**
8
- * 注册配置信息.
9
- * @param defaultConfig 默认值, 模块会根据默认值来映射环境变量,默认值所有的属性都不能是 undefined,否则无法映射.
10
- * @param envPrefix 环境变量前缀.
11
- * @param validation 校验规则,如果有值,初始化的时候会对配置进行校验
12
- * @returns 映射了环境变量后的配置
13
- */
14
- export declare function registerConfig<T extends {}>(defaultConfig: T, envPrefix: string, validation?: ValidationOpts<T>): T;
15
- /**
16
- * 根据环境变量来生成配置对象,与 registerConfig 的参数是一致的,和 registerConfig 不同的是
17
- * generateConfig 可以多次重复使用,方便在运行时更改环境变量后再生成配置,而调用 registerConfig
18
- * 一旦注册后不能再被更改。之所以这样设计是为了方便程序的测试,模拟不同的环境来运行程序,和其它的
19
- * 一些特殊需求。
20
- * @param defaultConfig
21
- * @param envPrefix
22
- * @param validation
23
- */
24
- export declare function generateConfig<T extends {}>(defaultConfig: T, envPrefix: string, validation?: ValidationOpts<T>): T;
25
- export * from './exception';
1
+ import { ValidationOpts } from '../validation';
2
+ /**
3
+ * 获取配置
4
+ * @param envPrefix
5
+ */
6
+ export declare function getConfig<T>(envPrefix: string): T | undefined;
7
+ /**
8
+ * 注册配置信息.
9
+ * @param defaultConfig 默认值, 模块会根据默认值来映射环境变量,默认值所有的属性都不能是 undefined,否则无法映射.
10
+ * @param envPrefix 环境变量前缀.
11
+ * @param validation 校验规则,如果有值,初始化的时候会对配置进行校验
12
+ * @returns 映射了环境变量后的配置
13
+ */
14
+ export declare function registerConfig<T extends {}>(defaultConfig: T, envPrefix: string, validation?: ValidationOpts<T>): T;
15
+ /**
16
+ * 根据环境变量来生成配置对象,与 registerConfig 的参数是一致的,和 registerConfig 不同的是
17
+ * generateConfig 可以多次重复使用,方便在运行时更改环境变量后再生成配置,而调用 registerConfig
18
+ * 一旦注册后不能再被更改。之所以这样设计是为了方便程序的测试,模拟不同的环境来运行程序,和其它的
19
+ * 一些特殊需求。
20
+ * @param defaultConfig
21
+ * @param envPrefix
22
+ * @param validation
23
+ */
24
+ export declare function generateConfig<T extends {}>(defaultConfig: T, envPrefix: string, validation?: ValidationOpts<T>): T;
25
+ export * from './exception';