wok-server 0.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 (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/cache/cache.js +94 -0
  4. package/dist/cache/config.js +19 -0
  5. package/dist/cache/index.js +27 -0
  6. package/dist/cache/purge-task.js +56 -0
  7. package/dist/cache/stat.js +47 -0
  8. package/dist/config/convert.js +36 -0
  9. package/dist/config/exception.js +14 -0
  10. package/dist/config/index.js +67 -0
  11. package/dist/http-client/index.js +132 -0
  12. package/dist/i18n/ar.js +17 -0
  13. package/dist/i18n/de.js +17 -0
  14. package/dist/i18n/en-us.js +17 -0
  15. package/dist/i18n/es.js +17 -0
  16. package/dist/i18n/fr.js +17 -0
  17. package/dist/i18n/i18n.js +231 -0
  18. package/dist/i18n/index.js +52 -0
  19. package/dist/i18n/ja.js +17 -0
  20. package/dist/i18n/ko.js +17 -0
  21. package/dist/i18n/msg.js +2 -0
  22. package/dist/i18n/pt.js +17 -0
  23. package/dist/i18n/ru.js +17 -0
  24. package/dist/i18n/tag.js +18 -0
  25. package/dist/i18n/zh-HK.js +17 -0
  26. package/dist/i18n/zh-TW.js +17 -0
  27. package/dist/i18n/zh-cn.js +17 -0
  28. package/dist/index.js +13 -0
  29. package/dist/log/config.js +28 -0
  30. package/dist/log/date.js +21 -0
  31. package/dist/log/file.js +79 -0
  32. package/dist/log/index.js +109 -0
  33. package/dist/log/level.js +39 -0
  34. package/dist/log/store.js +16 -0
  35. package/dist/mongodb/collection.js +2 -0
  36. package/dist/mongodb/config.js +34 -0
  37. package/dist/mongodb/doc.js +2 -0
  38. package/dist/mongodb/exception.js +14 -0
  39. package/dist/mongodb/index.js +58 -0
  40. package/dist/mongodb/manager/base.js +563 -0
  41. package/dist/mongodb/manager/index.js +63 -0
  42. package/dist/mongodb/manager/tx-strict.js +84 -0
  43. package/dist/mongodb/manager/tx.js +30 -0
  44. package/dist/mongodb/migration.js +52 -0
  45. package/dist/mvc/access-log.js +31 -0
  46. package/dist/mvc/config.js +20 -0
  47. package/dist/mvc/exchange.js +113 -0
  48. package/dist/mvc/handler/index.js +6 -0
  49. package/dist/mvc/handler/json.js +33 -0
  50. package/dist/mvc/handler/restful.js +35 -0
  51. package/dist/mvc/handler/upload.js +33 -0
  52. package/dist/mvc/index.js +316 -0
  53. package/dist/mvc/interceptor.js +2 -0
  54. package/dist/mvc/query.js +43 -0
  55. package/dist/mvc/render/file.js +177 -0
  56. package/dist/mvc/render/html/html.js +90 -0
  57. package/dist/mvc/render/html/index.js +18 -0
  58. package/dist/mvc/render/html/style.js +2 -0
  59. package/dist/mvc/render/index.js +7 -0
  60. package/dist/mvc/render/json.js +26 -0
  61. package/dist/mvc/render/text.js +16 -0
  62. package/dist/mvc/router.js +2 -0
  63. package/dist/mysql/config.js +49 -0
  64. package/dist/mysql/exception.js +14 -0
  65. package/dist/mysql/index.js +85 -0
  66. package/dist/mysql/manager/base.js +233 -0
  67. package/dist/mysql/manager/index.js +107 -0
  68. package/dist/mysql/manager/ops/count.js +20 -0
  69. package/dist/mysql/manager/ops/criteria.js +326 -0
  70. package/dist/mysql/manager/ops/delete.js +65 -0
  71. package/dist/mysql/manager/ops/exist.js +26 -0
  72. package/dist/mysql/manager/ops/find.js +111 -0
  73. package/dist/mysql/manager/ops/index.js +14 -0
  74. package/dist/mysql/manager/ops/insert.js +101 -0
  75. package/dist/mysql/manager/ops/modify.js +10 -0
  76. package/dist/mysql/manager/ops/paginate.js +23 -0
  77. package/dist/mysql/manager/ops/query.js +9 -0
  78. package/dist/mysql/manager/ops/update.js +201 -0
  79. package/dist/mysql/manager/tx-strict.js +98 -0
  80. package/dist/mysql/manager/tx.js +30 -0
  81. package/dist/mysql/manager/utils.js +56 -0
  82. package/dist/mysql/migration.js +136 -0
  83. package/dist/mysql/table-info.js +8 -0
  84. package/dist/task/daily.js +58 -0
  85. package/dist/task/fixed-delay.js +33 -0
  86. package/dist/task/fixed-rate.js +37 -0
  87. package/dist/task/index.js +9 -0
  88. package/dist/task/task.js +39 -0
  89. package/dist/validation/exception.js +44 -0
  90. package/dist/validation/index.js +29 -0
  91. package/dist/validation/validator/array.js +38 -0
  92. package/dist/validation/validator/enum.js +28 -0
  93. package/dist/validation/validator/index.js +14 -0
  94. package/dist/validation/validator/length.js +40 -0
  95. package/dist/validation/validator/max-length.js +35 -0
  96. package/dist/validation/validator/max.js +29 -0
  97. package/dist/validation/validator/min-length.js +33 -0
  98. package/dist/validation/validator/min.js +29 -0
  99. package/dist/validation/validator/not-blank.js +33 -0
  100. package/dist/validation/validator/not-null.js +21 -0
  101. package/dist/validation/validator/plain-obj.js +32 -0
  102. package/dist/validation/validator/regexp.js +30 -0
  103. package/documentation/en/index.md +1 -0
  104. package/documentation/zh-cn/cache.md +59 -0
  105. package/documentation/zh-cn/config.md +68 -0
  106. package/documentation/zh-cn/http-client.md +33 -0
  107. package/documentation/zh-cn/i18n.md +154 -0
  108. package/documentation/zh-cn/index.md +25 -0
  109. package/documentation/zh-cn/log.md +40 -0
  110. package/documentation/zh-cn/mongodb.md +262 -0
  111. package/documentation/zh-cn/mvc.md +430 -0
  112. package/documentation/zh-cn/mysql.md +389 -0
  113. package/documentation/zh-cn/task.md +50 -0
  114. package/documentation/zh-cn/test.md +57 -0
  115. package/documentation/zh-cn/validate.md +125 -0
  116. package/package.json +46 -0
  117. package/types/cache/cache.d.ts +52 -0
  118. package/types/cache/config.d.ts +32 -0
  119. package/types/cache/index.d.ts +2 -0
  120. package/types/cache/purge-task.d.ts +11 -0
  121. package/types/cache/stat.d.ts +26 -0
  122. package/types/config/convert.d.ts +6 -0
  123. package/types/config/exception.d.ts +7 -0
  124. package/types/config/index.d.ts +15 -0
  125. package/types/http-client/index.d.ts +71 -0
  126. package/types/i18n/ar.d.ts +2 -0
  127. package/types/i18n/de.d.ts +2 -0
  128. package/types/i18n/en-us.d.ts +2 -0
  129. package/types/i18n/es.d.ts +2 -0
  130. package/types/i18n/fr.d.ts +2 -0
  131. package/types/i18n/i18n.d.ts +102 -0
  132. package/types/i18n/index.d.ts +9 -0
  133. package/types/i18n/ja.d.ts +2 -0
  134. package/types/i18n/ko.d.ts +2 -0
  135. package/types/i18n/msg.d.ts +50 -0
  136. package/types/i18n/pt.d.ts +2 -0
  137. package/types/i18n/ru.d.ts +2 -0
  138. package/types/i18n/tag.d.ts +11 -0
  139. package/types/i18n/zh-HK.d.ts +2 -0
  140. package/types/i18n/zh-TW.d.ts +2 -0
  141. package/types/i18n/zh-cn.d.ts +2 -0
  142. package/types/index.d.ts +10 -0
  143. package/types/log/config.d.ts +27 -0
  144. package/types/log/date.d.ts +2 -0
  145. package/types/log/file.d.ts +5 -0
  146. package/types/log/index.d.ts +34 -0
  147. package/types/log/level.d.ts +15 -0
  148. package/types/log/store.d.ts +12 -0
  149. package/types/mongodb/collection.d.ts +25 -0
  150. package/types/mongodb/config.d.ts +45 -0
  151. package/types/mongodb/doc.d.ts +11 -0
  152. package/types/mongodb/exception.d.ts +7 -0
  153. package/types/mongodb/index.d.ts +29 -0
  154. package/types/mongodb/manager/base.d.ts +188 -0
  155. package/types/mongodb/manager/index.d.ts +38 -0
  156. package/types/mongodb/manager/tx-strict.d.ts +41 -0
  157. package/types/mongodb/manager/tx.d.ts +21 -0
  158. package/types/mongodb/migration.d.ts +12 -0
  159. package/types/mvc/access-log.d.ts +7 -0
  160. package/types/mvc/config.d.ts +30 -0
  161. package/types/mvc/exchange.d.ts +72 -0
  162. package/types/mvc/handler/index.d.ts +3 -0
  163. package/types/mvc/handler/json.d.ts +23 -0
  164. package/types/mvc/handler/restful.d.ts +11 -0
  165. package/types/mvc/handler/upload.d.ts +40 -0
  166. package/types/mvc/index.d.ts +49 -0
  167. package/types/mvc/interceptor.d.ts +11 -0
  168. package/types/mvc/query.d.ts +13 -0
  169. package/types/mvc/render/file.d.ts +10 -0
  170. package/types/mvc/render/html/html.d.ts +98 -0
  171. package/types/mvc/render/html/index.d.ts +11 -0
  172. package/types/mvc/render/html/style.d.ts +1201 -0
  173. package/types/mvc/render/index.d.ts +4 -0
  174. package/types/mvc/render/json.d.ts +17 -0
  175. package/types/mvc/render/text.d.ts +10 -0
  176. package/types/mvc/router.d.ts +11 -0
  177. package/types/mysql/config.d.ts +86 -0
  178. package/types/mysql/exception.d.ts +7 -0
  179. package/types/mysql/index.d.ts +16 -0
  180. package/types/mysql/manager/base.d.ts +158 -0
  181. package/types/mysql/manager/index.d.ts +36 -0
  182. package/types/mysql/manager/ops/count.d.ts +13 -0
  183. package/types/mysql/manager/ops/criteria.d.ts +120 -0
  184. package/types/mysql/manager/ops/delete.d.ts +46 -0
  185. package/types/mysql/manager/ops/exist.d.ts +6 -0
  186. package/types/mysql/manager/ops/find.d.ts +66 -0
  187. package/types/mysql/manager/ops/index.d.ts +10 -0
  188. package/types/mysql/manager/ops/insert.d.ts +18 -0
  189. package/types/mysql/manager/ops/modify.d.ts +3 -0
  190. package/types/mysql/manager/ops/paginate.d.ts +36 -0
  191. package/types/mysql/manager/ops/query.d.ts +3 -0
  192. package/types/mysql/manager/ops/update.d.ts +70 -0
  193. package/types/mysql/manager/tx-strict.d.ts +34 -0
  194. package/types/mysql/manager/tx.d.ts +15 -0
  195. package/types/mysql/manager/utils.d.ts +17 -0
  196. package/types/mysql/migration.d.ts +8 -0
  197. package/types/mysql/table-info.d.ts +36 -0
  198. package/types/task/daily.d.ts +15 -0
  199. package/types/task/fixed-delay.d.ts +8 -0
  200. package/types/task/fixed-rate.d.ts +8 -0
  201. package/types/task/index.d.ts +4 -0
  202. package/types/task/task.d.ts +33 -0
  203. package/types/validation/exception.d.ts +43 -0
  204. package/types/validation/index.d.ts +32 -0
  205. package/types/validation/validator/array.d.ts +5 -0
  206. package/types/validation/validator/enum.d.ts +8 -0
  207. package/types/validation/validator/index.d.ts +11 -0
  208. package/types/validation/validator/length.d.ts +10 -0
  209. package/types/validation/validator/max-length.d.ts +8 -0
  210. package/types/validation/validator/max.d.ts +7 -0
  211. package/types/validation/validator/min-length.d.ts +6 -0
  212. package/types/validation/validator/min.d.ts +7 -0
  213. package/types/validation/validator/not-blank.d.ts +7 -0
  214. package/types/validation/validator/not-null.d.ts +6 -0
  215. package/types/validation/validator/plain-obj.d.ts +7 -0
  216. package/types/validation/validator/regexp.d.ts +8 -0
@@ -0,0 +1,70 @@
1
+ import { PoolConnection } from 'mysql2';
2
+ import { Table } from '../../table-info';
3
+ import { MixCriteria } from './criteria';
4
+ import { MysqlConfig } from '../../config';
5
+ /**
6
+ * 更新
7
+ * @param config
8
+ * @param connection
9
+ * @param mapping
10
+ * @param data
11
+ * @returns
12
+ */
13
+ export declare function update<T>(config: MysqlConfig, connection: PoolConnection, table: Table<T>, data: T): Promise<T>;
14
+ /**
15
+ * 更新器
16
+ */
17
+ export type Updater<T> = Partial<{
18
+ [key in keyof T]: T[key] | undefined | ['setNull'] | ['inc', number];
19
+ }>;
20
+ /**
21
+ * 部分更新
22
+ * @param connection
23
+ * @param mapping
24
+ * @param type
25
+ * @param data
26
+ */
27
+ export declare function partialUpdate<T>(config: MysqlConfig, connection: PoolConnection, table: Table<T>, data: Updater<T>): Promise<boolean>;
28
+ /**
29
+ * 更新指定的一条记录
30
+ * @param config
31
+ * @param connection
32
+ * @param table
33
+ * @param query
34
+ * @param data
35
+ */
36
+ export declare function updateOne<T>(config: MysqlConfig, connection: PoolConnection, table: Table<T>, query: Partial<T>, updater: Updater<T>): Promise<boolean>;
37
+ /**
38
+ * 更新选项
39
+ */
40
+ export interface UpdateOpts<T> {
41
+ /**
42
+ * 表
43
+ */
44
+ table: Table<T>;
45
+ /**
46
+ * 查询条件
47
+ */
48
+ query: MixCriteria<T>;
49
+ /**
50
+ * 限制数量
51
+ */
52
+ limit?: number;
53
+ /**
54
+ * 排序规则,按先后顺序放入,每个规则是一个元组,第一个元素是字段名称,第二个元素是顺序
55
+ */
56
+ orderBy?: Array<[keyof T, 'asc' | 'desc']>;
57
+ /**
58
+ * 更新设置
59
+ */
60
+ updater: Updater<T>;
61
+ }
62
+ /**
63
+ * 更新所有匹配条件的记录
64
+ * @param config
65
+ * @param connection 连接
66
+ * @param table 表
67
+ * @param query 查询条件
68
+ * @param updater 更新操作,支持置空和递增(需要使用元组)
69
+ */
70
+ export declare function updateMany<T>(config: MysqlConfig, connection: PoolConnection, opts: UpdateOpts<T>): Promise<number>;
@@ -0,0 +1,34 @@
1
+ import { PoolConnection } from 'mysql2';
2
+ import { MysqlConfig } from '../config';
3
+ import { MysqlTxSession } from './tx';
4
+ import { Table } from '../table-info';
5
+ import { DeleteManyOpts, FindOpts, MixCriteria, MysqlPage, MysqlPaginateOpts, UpdateOpts, Updater } from './ops';
6
+ /**
7
+ * 严格 mysql 事务会话,会禁用一些操作.
8
+ */
9
+ export declare class MysqlStrictTxSession extends MysqlTxSession {
10
+ #private;
11
+ constructor(config: MysqlConfig, conn: PoolConnection);
12
+ findById<T>(table: Table<T>, id: string | number): Promise<T | null>;
13
+ findByIdIn<T>(table: Table<T>, ids: (string | number)[]): Promise<T[]>;
14
+ existsBy<T>(table: Table<T>, criteria?: MixCriteria<T> | undefined): Promise<boolean>;
15
+ existsById<T>(table: Table<T>, id: string | number): Promise<boolean>;
16
+ deleteById<T>(table: Table<T>, id: string | number): Promise<boolean>;
17
+ deleteOne<T>(table: Table<T>, criteria: Partial<T>): Promise<boolean>;
18
+ deleteMany<T>(opts: DeleteManyOpts<T>): Promise<number>;
19
+ findAll<T>(table: Table<T>): Promise<T[]>;
20
+ findFirst<T>(table: Table<T>, criteria?: MixCriteria<T> | undefined): Promise<T | null>;
21
+ insert<T>(table: Table<T>, data: T): Promise<T>;
22
+ insertMany<T>(table: Table<T>, list: T[]): Promise<void>;
23
+ update<T>(table: Table<T>, data: T): Promise<T>;
24
+ updateMany<T>(opts: UpdateOpts<T>): Promise<number>;
25
+ updateOne<T>(table: Table<T>, query: Partial<T>, updater: Partial<{
26
+ [key in keyof T]: ['setNull'] | ['inc', number] | T[key] | undefined;
27
+ }>): Promise<boolean>;
28
+ partialUpdate<T>(table: Table<T>, data: Updater<T>): Promise<boolean>;
29
+ find<T>(opts: FindOpts<T>): Promise<T[]>;
30
+ count<T>(table: Table<T>, criteria?: MixCriteria<T> | undefined): Promise<number>;
31
+ paginate<T>(opts: MysqlPaginateOpts<T>): Promise<MysqlPage<T>>;
32
+ query<T>(sql: string, values?: any[] | undefined): Promise<T[]>;
33
+ modify(sql: string, values?: any[] | undefined): Promise<number>;
34
+ }
@@ -0,0 +1,15 @@
1
+ import { PoolConnection } from 'mysql2';
2
+ import { BaseMysqlManager } from './base';
3
+ import { MysqlConfig } from '../config';
4
+ /**
5
+ * mysql 事务会话.
6
+ */
7
+ export declare class MysqlTxSession extends BaseMysqlManager {
8
+ #private;
9
+ constructor(config: MysqlConfig, conn: PoolConnection);
10
+ protected queryWithConnection<T>(queryFn: (conn: PoolConnection) => Promise<T>): Promise<T>;
11
+ /**
12
+ * 中止,被中止后的会话不能再进行任何操作
13
+ */
14
+ abort(): void;
15
+ }
@@ -0,0 +1,17 @@
1
+ import { Connection, OkPacket, Pool, PoolConnection, ResultSetHeader, RowDataPacket } from 'mysql2';
2
+ import { MysqlConfig } from '../config';
3
+ /**
4
+ * 查询,适用于各种 sql 的执行
5
+ * @param config
6
+ * @param conn
7
+ * @param sql
8
+ * @param values
9
+ * @returns
10
+ */
11
+ export declare function promiseQuery(config: MysqlConfig, conn: Connection, sql: string, values?: any[]): Promise<OkPacket | ResultSetHeader | RowDataPacket[] | [RowDataPacket[], ResultSetHeader] | ResultSetHeader[] | RowDataPacket[][] | OkPacket[]>;
12
+ /**
13
+ * 获取连接
14
+ * @param pool
15
+ * @returns
16
+ */
17
+ export declare function promiseGetConnection(pool: Pool): Promise<PoolConnection>;
@@ -0,0 +1,8 @@
1
+ import { Connection } from 'mysql2';
2
+ import { MysqlConfig } from './config';
3
+ /**
4
+ * 迁移.
5
+ * @param config
6
+ * @param conn
7
+ */
8
+ export declare function migrate(config: MysqlConfig, conn: Connection): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { ValidationOpts } from '../validation';
2
+ /**
3
+ * 表信息. 表的字段分为三个部分:主键、普通列、时间列,分别对应的属性是:id、columns
4
+ * 和 createDate 还有 updatedDate,这三部分配置的字段名称不允许有重叠,否则会产生错误.
5
+ */
6
+ export interface Table<T> {
7
+ /**
8
+ * 表名.
9
+ */
10
+ tableName: string;
11
+ /**
12
+ * id 字段名称.
13
+ */
14
+ id: keyof T;
15
+ /**
16
+ * 列字段名称.只有配置了名称的字段才会参与数据库的查询与更新,没有配置的其它字段可作其它用途。
17
+ * 注意:columns 配置的字段不能和 id 或更新时间和创建时间重叠,否则在更新时产生错误,将数据改错。
18
+ * 程序本身是不会做检查的,编写的时候必须要注意。
19
+ */
20
+ columns: Array<keyof T>;
21
+ /**
22
+ * 创建时间字段信息.
23
+ */
24
+ createdDate?: {
25
+ column: keyof T;
26
+ type: 'number' | 'date';
27
+ };
28
+ /**
29
+ * 更新时间字段信息.
30
+ */
31
+ updatedDate?: {
32
+ column: keyof T;
33
+ type: 'number' | 'date';
34
+ };
35
+ }
36
+ export declare const tableValidation: ValidationOpts<Table<any>>;
@@ -0,0 +1,15 @@
1
+ import { Task, TaskController } from './task';
2
+ /**
3
+ * 每日任务.
4
+ * @param hours 时
5
+ * @param minutes 分
6
+ * @param task 要执行的任务
7
+ * @returns
8
+ */
9
+ export declare function scheduleDailyTask(hours: number, minutes: number, task: Task): TaskController;
10
+ /**
11
+ * 计算到下次指定时间点的延迟
12
+ * @param hours
13
+ * @param minutes
14
+ */
15
+ export declare function dailyTaskDelay(hours: number, minutes: number): number;
@@ -0,0 +1,8 @@
1
+ import { Task, TaskController } from './task';
2
+ /**
3
+ * 固定延迟执行任务
4
+ * @param initialDelay 第一次执行延迟的时间,单位秒
5
+ * @param delay 每次的延迟时间,单位秒
6
+ * @param task 任务
7
+ */
8
+ export declare function scheduleWithFixedDelay(initialDelay: number, delay: number, task: Task): TaskController;
@@ -0,0 +1,8 @@
1
+ import { Task, TaskController } from './task';
2
+ /**
3
+ * 固定延迟执行任务
4
+ * @param initialDelay 第一次执行延迟的时间,单位秒
5
+ * @param period 每次的延迟时间,单位秒
6
+ * @param task 任务
7
+ */
8
+ export declare function scheduleWithFixedRate(initialDelay: number, period: number, task: Task): TaskController;
@@ -0,0 +1,4 @@
1
+ export { Task, TaskController } from './task';
2
+ export * from './fixed-delay';
3
+ export * from './fixed-rate';
4
+ export * from './daily';
@@ -0,0 +1,33 @@
1
+ /**
2
+ * 任务.
3
+ */
4
+ export interface Task {
5
+ /**
6
+ * 任务的名称,用于跟踪任务的执行情况,定位错误.
7
+ * 当任务执行时间过长或任务失败时,相关的错误提示信息会显示名称,以便于排查.
8
+ */
9
+ name: string;
10
+ /**
11
+ * 任务运行.
12
+ * @returns
13
+ */
14
+ run: () => Promise<void>;
15
+ }
16
+ /**
17
+ * 任务控制器
18
+ */
19
+ export declare class TaskController {
20
+ #private;
21
+ isStopped(): boolean;
22
+ stop(): void;
23
+ }
24
+ /**
25
+ * 任务执行,封装任务执行过程中的一些通用信息输出和异常控制.
26
+ * @param task
27
+ * @returns
28
+ */
29
+ export declare function execTask(task: Task): Promise<{
30
+ start: number;
31
+ cost: number;
32
+ end: number;
33
+ }>;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 校验异常.
3
+ */
4
+ export declare class ValidationException {
5
+ /**
6
+ * 异常信息,如 “不能为空” 之类的.
7
+ */
8
+ readonly errMsg: string;
9
+ /**
10
+ * 校验器名称,如 length 、notNull 之类的.
11
+ */
12
+ readonly validator: string;
13
+ /**
14
+ * 校验出错的路径.
15
+ */
16
+ readonly propertyPath: string;
17
+ /**
18
+ * 值
19
+ */
20
+ readonly val: any;
21
+ constructor(
22
+ /**
23
+ * 异常信息,如 “不能为空” 之类的.
24
+ */
25
+ errMsg: string,
26
+ /**
27
+ * 校验器名称,如 length 、notNull 之类的.
28
+ */
29
+ validator: string,
30
+ /**
31
+ * 校验出错的路径.
32
+ */
33
+ propertyPath: string,
34
+ /**
35
+ * 值
36
+ */
37
+ val: any);
38
+ /**
39
+ * 对错误的完整描述信息,用于日志记录.
40
+ */
41
+ desc(): string;
42
+ get message(): string;
43
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 校验结果。message:错误信息,反馈给调用处;validator 校验器名称,用于记录错误信息来自哪个校验器,
3
+ * 以便于程序在出错时知道信息来自哪里。
4
+ */
5
+ export type ValidationResult = {
6
+ ok: true;
7
+ } | {
8
+ ok: false;
9
+ message: string;
10
+ validator: string;
11
+ /**
12
+ * 如果校验的是层级深的对象,内部的属性发生了错误,可用于标记属性的路径
13
+ */
14
+ propPath?: string[];
15
+ };
16
+ /**
17
+ * 校验器.
18
+ */
19
+ export type PropValidator<T> = (val: T) => ValidationResult;
20
+ /**
21
+ * 对象的校验选项
22
+ */
23
+ export type ValidationOpts<T> = Partial<{
24
+ [key in keyof T]: PropValidator<T[key]>[];
25
+ }>;
26
+ /**
27
+ * 校验对象.
28
+ * @param obj
29
+ */
30
+ export declare function validate<T>(obj: T, opts: ValidationOpts<T>): void;
31
+ export * from './exception';
32
+ export * from './validator';
@@ -0,0 +1,5 @@
1
+ import { PropValidator, ValidationOpts } from '..';
2
+ /**
3
+ * 校验数组的条目.
4
+ */
5
+ export declare function array<J>(opts: ValidationOpts<J>): PropValidator<J[]>;
@@ -0,0 +1,8 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 枚举,校验值必须是指定列表中的一个.
4
+ * @param list 支持的值列表,仅支持数字和字符串类型
5
+ * @param msg
6
+ * @returns
7
+ */
8
+ export declare function enumerate<T>(list: (number | string)[], msg?: string): PropValidator<T>;
@@ -0,0 +1,11 @@
1
+ export * from './not-null';
2
+ export * from './not-blank';
3
+ export * from './max';
4
+ export * from './min';
5
+ export * from './regexp';
6
+ export * from './length';
7
+ export * from './enum';
8
+ export * from './array';
9
+ export * from './plain-obj';
10
+ export * from './max-length';
11
+ export * from './min-length';
@@ -0,0 +1,10 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * length 校验,可用于字符串或数组.
4
+ * @returns
5
+ */
6
+ export declare function length<T>(opts: {
7
+ min?: number;
8
+ max?: number;
9
+ message?: string;
10
+ }): PropValidator<T>;
@@ -0,0 +1,8 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 最大长度校验,可用于字符串或数组.
4
+ * @param maxLength
5
+ * @param message
6
+ * @returns
7
+ */
8
+ export declare function maxLength<T>(maxLength: number, message?: string): PropValidator<T>;
@@ -0,0 +1,7 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 最大值校验.
4
+ * @param max 最大值
5
+ * @param msg 错误消息
6
+ */
7
+ export declare function max<T>(max: number, msg?: string): PropValidator<T>;
@@ -0,0 +1,6 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 最小长度校验,可用于字符串或数组.
4
+ * @returns
5
+ */
6
+ export declare function minLength<T>(minLength: number, message?: string): PropValidator<T>;
@@ -0,0 +1,7 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 最大值校验.
4
+ * @param max 最大值
5
+ * @param msg 错误消息
6
+ */
7
+ export declare function min<T>(min: number, msg?: string): PropValidator<T>;
@@ -0,0 +1,7 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 字符串非空校验,以下的情况不会通过校验:undefined,null,非 string 类型,空白字符串.
4
+ * @param message
5
+ * @returns
6
+ */
7
+ export declare function notBlank<T>(message?: string): PropValidator<T>;
@@ -0,0 +1,6 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 非空校验.
4
+ * @param message
5
+ */
6
+ export declare function notNull<T>(message?: string): PropValidator<T>;
@@ -0,0 +1,7 @@
1
+ import { PropValidator, ValidationOpts } from '..';
2
+ /**
3
+ * 普通对象校验.
4
+ * @param opts
5
+ * @returns
6
+ */
7
+ export declare function plainObject<T>(opts: ValidationOpts<T>): PropValidator<T>;
@@ -0,0 +1,8 @@
1
+ import { PropValidator } from '..';
2
+ /**
3
+ * 正则校验
4
+ * @param pattern 正则表达式
5
+ * @param msg 错误消息
6
+ * @returns
7
+ */
8
+ export declare function regexp<T>(pattern: RegExp, msg?: string): PropValidator<T>;