@vlian/framework 1.2.19 → 1.2.37

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 (252) hide show
  1. package/dist/analytics.umd.js +208 -2395
  2. package/dist/analytics.umd.js.map +1 -1
  3. package/dist/core/error/ErrorHandler.cjs.map +1 -1
  4. package/dist/core/error/ErrorHandler.d.ts +1 -1
  5. package/dist/core/error/ErrorHandler.js.map +1 -1
  6. package/dist/core/index.cjs +0 -1
  7. package/dist/core/index.cjs.map +1 -1
  8. package/dist/core/index.d.ts +1 -2
  9. package/dist/core/index.js +0 -1
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/core/initialization/index.cjs.map +1 -1
  12. package/dist/core/initialization/index.d.ts +1 -1
  13. package/dist/core/initialization/index.js.map +1 -1
  14. package/dist/core/initialization/initialization.cjs +2 -147
  15. package/dist/core/initialization/initialization.cjs.map +1 -1
  16. package/dist/core/initialization/initialization.d.ts +0 -57
  17. package/dist/core/initialization/initialization.js +2 -148
  18. package/dist/core/initialization/initialization.js.map +1 -1
  19. package/dist/core/kernel/startKernel.cjs +1 -2
  20. package/dist/core/kernel/startKernel.cjs.map +1 -1
  21. package/dist/core/kernel/startKernel.js +1 -2
  22. package/dist/core/kernel/startKernel.js.map +1 -1
  23. package/dist/core/plugin.cjs +16 -16
  24. package/dist/core/plugin.cjs.map +1 -1
  25. package/dist/core/plugin.d.ts +5 -1
  26. package/dist/core/plugin.js +17 -17
  27. package/dist/core/plugin.js.map +1 -1
  28. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -1
  29. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
  30. package/dist/core/router/monitoring/RouterMonitoring.js +1 -1
  31. package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
  32. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +13 -8
  33. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +1 -1
  34. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +13 -8
  35. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +1 -1
  36. package/dist/core/router/utils/adapters/react-router/transform.cjs +4 -0
  37. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
  38. package/dist/core/router/utils/adapters/react-router/transform.js +4 -0
  39. package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
  40. package/dist/core/startup/initializeServices.cjs +1 -1
  41. package/dist/core/startup/initializeServices.cjs.map +1 -1
  42. package/dist/core/startup/initializeServices.d.ts +1 -1
  43. package/dist/core/startup/initializeServices.js +1 -1
  44. package/dist/core/startup/initializeServices.js.map +1 -1
  45. package/dist/core/startup/performanceTracker.cjs.map +1 -1
  46. package/dist/core/startup/performanceTracker.d.ts +1 -1
  47. package/dist/core/startup/performanceTracker.js.map +1 -1
  48. package/dist/core/startup/renderApp.cjs +1 -1
  49. package/dist/core/startup/renderApp.cjs.map +1 -1
  50. package/dist/core/startup/renderApp.d.ts +1 -1
  51. package/dist/core/startup/renderApp.js +1 -1
  52. package/dist/core/startup/renderApp.js.map +1 -1
  53. package/dist/core/startup/startApp.cjs +2 -4
  54. package/dist/core/startup/startApp.cjs.map +1 -1
  55. package/dist/core/startup/startApp.js +3 -5
  56. package/dist/core/startup/startApp.js.map +1 -1
  57. package/dist/core/types.d.ts +2 -6
  58. package/dist/core/types.js.map +1 -1
  59. package/dist/index.cjs +15 -2
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.ts +6 -4
  62. package/dist/index.js +5 -4
  63. package/dist/index.js.map +1 -1
  64. package/dist/index.umd.js +11758 -32895
  65. package/dist/index.umd.js.map +1 -1
  66. package/dist/kernel/constants.cjs +67 -0
  67. package/dist/kernel/constants.cjs.map +1 -0
  68. package/dist/kernel/constants.d.ts +5 -0
  69. package/dist/kernel/constants.js +43 -0
  70. package/dist/kernel/constants.js.map +1 -0
  71. package/dist/kernel/index.cjs +40 -0
  72. package/dist/kernel/index.cjs.map +1 -0
  73. package/dist/kernel/index.d.ts +3 -0
  74. package/dist/kernel/index.js +4 -0
  75. package/dist/kernel/index.js.map +1 -0
  76. package/dist/kernel/kernel.cjs +296 -0
  77. package/dist/kernel/kernel.cjs.map +1 -0
  78. package/dist/kernel/kernel.d.ts +40 -0
  79. package/dist/kernel/kernel.js +272 -0
  80. package/dist/kernel/kernel.js.map +1 -0
  81. package/dist/kernel/manager/cacheManager.cjs +46 -0
  82. package/dist/kernel/manager/cacheManager.cjs.map +1 -0
  83. package/dist/kernel/manager/cacheManager.d.ts +6 -0
  84. package/dist/kernel/manager/cacheManager.js +36 -0
  85. package/dist/kernel/manager/cacheManager.js.map +1 -0
  86. package/dist/kernel/manager/i18nManager.cjs +68 -0
  87. package/dist/kernel/manager/i18nManager.cjs.map +1 -0
  88. package/dist/kernel/manager/i18nManager.d.ts +8 -0
  89. package/dist/kernel/manager/i18nManager.js +58 -0
  90. package/dist/kernel/manager/i18nManager.js.map +1 -0
  91. package/dist/kernel/manager/index.cjs +30 -0
  92. package/dist/kernel/manager/index.cjs.map +1 -0
  93. package/dist/kernel/manager/index.d.ts +4 -0
  94. package/dist/kernel/manager/index.js +6 -0
  95. package/dist/kernel/manager/index.js.map +1 -0
  96. package/dist/kernel/manager/loggerManager.cjs +70 -0
  97. package/dist/kernel/manager/loggerManager.cjs.map +1 -0
  98. package/dist/kernel/manager/loggerManager.d.ts +14 -0
  99. package/dist/kernel/manager/loggerManager.js +60 -0
  100. package/dist/kernel/manager/loggerManager.js.map +1 -0
  101. package/dist/kernel/manager/persistence.cjs +93 -0
  102. package/dist/kernel/manager/persistence.cjs.map +1 -0
  103. package/dist/kernel/manager/persistence.d.ts +3 -0
  104. package/dist/kernel/manager/persistence.js +75 -0
  105. package/dist/kernel/manager/persistence.js.map +1 -0
  106. package/dist/kernel/manager/themeManager.cjs +85 -0
  107. package/dist/kernel/manager/themeManager.cjs.map +1 -0
  108. package/dist/kernel/manager/themeManager.d.ts +9 -0
  109. package/dist/kernel/manager/themeManager.js +75 -0
  110. package/dist/kernel/manager/themeManager.js.map +1 -0
  111. package/dist/kernel/types.cjs.map +1 -0
  112. package/dist/kernel/types.d.ts +72 -0
  113. package/dist/kernel/types.js.map +1 -0
  114. package/dist/library/storage/index.cjs +1 -1
  115. package/dist/library/storage/index.cjs.map +1 -1
  116. package/dist/library/storage/index.d.ts +1 -0
  117. package/dist/library/storage/index.js +1 -1
  118. package/dist/library/storage/index.js.map +1 -1
  119. package/dist/request/adapter.d.ts +1 -0
  120. package/dist/request/core.d.ts +1 -0
  121. package/dist/request/index.d.ts +1 -42
  122. package/dist/request/plugin/csrfPlugin.d.ts +2 -2
  123. package/dist/request/plugin/queue.d.ts +2 -2
  124. package/dist/request/plugin.d.ts +1 -0
  125. package/dist/request/runtime.d.ts +1 -0
  126. package/dist/request/types.d.ts +1 -394
  127. package/dist/request/utils.d.ts +1 -0
  128. package/dist/state.umd.js +1 -1
  129. package/dist/utils/csrf.cjs +13 -152
  130. package/dist/utils/csrf.cjs.map +1 -1
  131. package/dist/utils/csrf.d.ts +1 -72
  132. package/dist/utils/csrf.js +1 -142
  133. package/dist/utils/csrf.js.map +1 -1
  134. package/dist/utils/errors/ErrorCodes.cjs +6 -76
  135. package/dist/utils/errors/ErrorCodes.cjs.map +1 -1
  136. package/dist/utils/errors/ErrorCodes.d.ts +1 -45
  137. package/dist/utils/errors/ErrorCodes.js +1 -84
  138. package/dist/utils/errors/ErrorCodes.js.map +1 -1
  139. package/dist/utils/errors.cjs +15 -344
  140. package/dist/utils/errors.cjs.map +1 -1
  141. package/dist/utils/errors.d.ts +1 -183
  142. package/dist/utils/errors.js +1 -352
  143. package/dist/utils/errors.js.map +1 -1
  144. package/dist/utils/logger.cjs +5 -374
  145. package/dist/utils/logger.cjs.map +1 -1
  146. package/dist/utils/logger.d.ts +2 -189
  147. package/dist/utils/logger.js +1 -379
  148. package/dist/utils/logger.js.map +1 -1
  149. package/dist/utils/logger.types.cjs +3 -12
  150. package/dist/utils/logger.types.cjs.map +1 -1
  151. package/dist/utils/logger.types.d.ts +2 -57
  152. package/dist/utils/logger.types.js +1 -10
  153. package/dist/utils/logger.types.js.map +1 -1
  154. package/dist/utils/monitoring.cjs +11 -302
  155. package/dist/utils/monitoring.cjs.map +1 -1
  156. package/dist/utils/monitoring.d.ts +1 -163
  157. package/dist/utils/monitoring.js +1 -294
  158. package/dist/utils/monitoring.js.map +1 -1
  159. package/dist/utils/performance.cjs +5 -352
  160. package/dist/utils/performance.cjs.map +1 -1
  161. package/dist/utils/performance.d.ts +2 -246
  162. package/dist/utils/performance.js +1 -354
  163. package/dist/utils/performance.js.map +1 -1
  164. package/dist/utils/resourceLoader.cjs +5 -303
  165. package/dist/utils/resourceLoader.cjs.map +1 -1
  166. package/dist/utils/resourceLoader.d.ts +2 -130
  167. package/dist/utils/resourceLoader.js +1 -305
  168. package/dist/utils/resourceLoader.js.map +1 -1
  169. package/dist/utils/runtimeSecurity.cjs +2 -140
  170. package/dist/utils/runtimeSecurity.cjs.map +1 -1
  171. package/dist/utils/runtimeSecurity.d.ts +2 -104
  172. package/dist/utils/runtimeSecurity.js +1 -141
  173. package/dist/utils/runtimeSecurity.js.map +1 -1
  174. package/dist/utils/security.cjs +3 -314
  175. package/dist/utils/security.cjs.map +1 -1
  176. package/dist/utils/security.d.ts +2 -80
  177. package/dist/utils/security.js +1 -311
  178. package/dist/utils/security.js.map +1 -1
  179. package/dist/utils/traceId.cjs +10 -111
  180. package/dist/utils/traceId.cjs.map +1 -1
  181. package/dist/utils/traceId.d.ts +1 -63
  182. package/dist/utils/traceId.js +1 -116
  183. package/dist/utils/traceId.js.map +1 -1
  184. package/dist/utils/validation.cjs +3 -173
  185. package/dist/utils/validation.cjs.map +1 -1
  186. package/dist/utils/validation.d.ts +2 -110
  187. package/dist/utils/validation.js +1 -175
  188. package/dist/utils/validation.js.map +1 -1
  189. package/package.json +98 -13
  190. package/dist/core/ui-adapter/adapters.cjs +0 -45
  191. package/dist/core/ui-adapter/adapters.cjs.map +0 -1
  192. package/dist/core/ui-adapter/adapters.d.ts +0 -4
  193. package/dist/core/ui-adapter/adapters.js +0 -27
  194. package/dist/core/ui-adapter/adapters.js.map +0 -1
  195. package/dist/core/ui-adapter/index.cjs +0 -21
  196. package/dist/core/ui-adapter/index.cjs.map +0 -1
  197. package/dist/core/ui-adapter/index.d.ts +0 -2
  198. package/dist/core/ui-adapter/index.js +0 -3
  199. package/dist/core/ui-adapter/index.js.map +0 -1
  200. package/dist/core/ui-adapter/types.cjs.map +0 -1
  201. package/dist/core/ui-adapter/types.d.ts +0 -24
  202. package/dist/core/ui-adapter/types.js.map +0 -1
  203. package/dist/request/adapter/RequestAdapter.cjs +0 -78
  204. package/dist/request/adapter/RequestAdapter.cjs.map +0 -1
  205. package/dist/request/adapter/axiosAdapter.cjs +0 -164
  206. package/dist/request/adapter/axiosAdapter.cjs.map +0 -1
  207. package/dist/request/adapter/fetchAdapter.cjs +0 -134
  208. package/dist/request/adapter/fetchAdapter.cjs.map +0 -1
  209. package/dist/request/adapter/index.cjs +0 -80
  210. package/dist/request/adapter/index.cjs.map +0 -1
  211. package/dist/request/adapter/kyAdapter.cjs +0 -191
  212. package/dist/request/adapter/kyAdapter.cjs.map +0 -1
  213. package/dist/request/adapter/undiciAdapter.cjs +0 -213
  214. package/dist/request/adapter/undiciAdapter.cjs.map +0 -1
  215. package/dist/request/core/RequestClient.cjs +0 -558
  216. package/dist/request/core/RequestClient.cjs.map +0 -1
  217. package/dist/request/core/index.cjs +0 -15
  218. package/dist/request/core/index.cjs.map +0 -1
  219. package/dist/request/index.cjs +0 -149
  220. package/dist/request/index.cjs.map +0 -1
  221. package/dist/request/plugin/RequestPlugin.cjs +0 -218
  222. package/dist/request/plugin/RequestPlugin.cjs.map +0 -1
  223. package/dist/request/plugin/cache.cjs +0 -269
  224. package/dist/request/plugin/cache.cjs.map +0 -1
  225. package/dist/request/plugin/csrfPlugin.cjs +0 -40
  226. package/dist/request/plugin/csrfPlugin.cjs.map +0 -1
  227. package/dist/request/plugin/index.cjs +0 -53
  228. package/dist/request/plugin/index.cjs.map +0 -1
  229. package/dist/request/plugin/monitoring.cjs +0 -216
  230. package/dist/request/plugin/monitoring.cjs.map +0 -1
  231. package/dist/request/plugin/queue.cjs +0 -140
  232. package/dist/request/plugin/queue.cjs.map +0 -1
  233. package/dist/request/plugin/retry.cjs +0 -98
  234. package/dist/request/plugin/retry.cjs.map +0 -1
  235. package/dist/request/plugin/validation.cjs +0 -121
  236. package/dist/request/plugin/validation.cjs.map +0 -1
  237. package/dist/request/runtime/RequestContext.cjs +0 -77
  238. package/dist/request/runtime/RequestContext.cjs.map +0 -1
  239. package/dist/request/runtime/index.cjs +0 -32
  240. package/dist/request/runtime/index.cjs.map +0 -1
  241. package/dist/request/types.cjs +0 -112
  242. package/dist/request/types.cjs.map +0 -1
  243. package/dist/request/utils/RequestQueueManager.cjs +0 -168
  244. package/dist/request/utils/RequestQueueManager.cjs.map +0 -1
  245. package/dist/request/utils/dependencyCheck.cjs +0 -237
  246. package/dist/request/utils/dependencyCheck.cjs.map +0 -1
  247. package/dist/request/utils/index.cjs +0 -30
  248. package/dist/request/utils/index.cjs.map +0 -1
  249. package/dist/request.umd.js +0 -5392
  250. package/dist/request.umd.js.map +0 -1
  251. /package/dist/{core/ui-adapter → kernel}/types.cjs +0 -0
  252. /package/dist/{core/ui-adapter → kernel}/types.js +0 -0
@@ -1,118 +1,3 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
- /**
15
- * 日志追踪 ID 生成器
16
- * 用于生成唯一的请求追踪 ID,便于日志关联和问题排查
17
- */ /**
18
- * 追踪 ID 生成器
19
- */ export class TraceIdGenerator {
20
- /**
21
- * 获取单例实例
22
- */ static getInstance(prefix) {
23
- if (!TraceIdGenerator.instance) {
24
- TraceIdGenerator.instance = new TraceIdGenerator(prefix);
25
- }
26
- return TraceIdGenerator.instance;
27
- }
28
- /**
29
- * 生成追踪 ID
30
- */ generate() {
31
- const timestamp = Date.now();
32
- const random = Math.random().toString(36).substring(2, 9);
33
- const counter = (this.counter++).toString(36).padStart(4, '0');
34
- const parts = [
35
- timestamp.toString(36),
36
- random,
37
- counter
38
- ];
39
- if (this.prefix) {
40
- parts.unshift(this.prefix);
41
- }
42
- return parts.join('-');
43
- }
44
- /**
45
- * 从字符串解析追踪 ID(用于验证)
46
- */ static parse(traceId) {
47
- const parts = traceId.split('-');
48
- if (parts.length < 3) {
49
- return null;
50
- }
51
- try {
52
- const timestamp = parseInt(parts[parts.length - 3], 36);
53
- const random = parts[parts.length - 2];
54
- const counter = parseInt(parts[parts.length - 1], 36);
55
- return {
56
- prefix: parts.length > 3 ? parts.slice(0, -3).join('-') : undefined,
57
- timestamp,
58
- random,
59
- counter
60
- };
61
- } catch {
62
- return null;
63
- }
64
- }
65
- constructor(prefix = ''){
66
- _define_property(this, "counter", 0);
67
- _define_property(this, "prefix", void 0);
68
- this.prefix = prefix;
69
- }
70
- }
71
- _define_property(TraceIdGenerator, "instance", null);
72
- /**
73
- * 全局追踪 ID 生成器实例
74
- */ let globalTraceIdGenerator = null;
75
- /**
76
- * 初始化追踪 ID 生成器
77
- */ export function initTraceIdGenerator(prefix) {
78
- globalTraceIdGenerator = TraceIdGenerator.getInstance(prefix);
79
- return globalTraceIdGenerator;
80
- }
81
- /**
82
- * 获取全局追踪 ID 生成器
83
- */ export function getTraceIdGenerator() {
84
- if (!globalTraceIdGenerator) {
85
- globalTraceIdGenerator = TraceIdGenerator.getInstance();
86
- }
87
- return globalTraceIdGenerator;
88
- }
89
- /**
90
- * 生成追踪 ID
91
- */ export function generateTraceId() {
92
- return getTraceIdGenerator().generate();
93
- }
94
- /**
95
- * 解析追踪 ID
96
- */ export function parseTraceId(traceId) {
97
- return TraceIdGenerator.parse(traceId);
98
- }
99
- /**
100
- * 当前请求的追踪 ID(使用 AsyncLocalStorage 或全局变量)
101
- */ let currentTraceId = null;
102
- /**
103
- * 设置当前请求的追踪 ID
104
- */ export function setCurrentTraceId(traceId) {
105
- currentTraceId = traceId;
106
- }
107
- /**
108
- * 获取当前请求的追踪 ID
109
- */ export function getCurrentTraceId() {
110
- return currentTraceId;
111
- }
112
- /**
113
- * 清除当前请求的追踪 ID
114
- */ export function clearCurrentTraceId() {
115
- currentTraceId = null;
116
- }
1
+ export { TraceIdGenerator, initTraceIdGenerator, getTraceIdGenerator, generateTraceId, parseTraceId, setCurrentTraceId, getCurrentTraceId, clearCurrentTraceId } from "@vlian/logger";
117
2
 
118
3
  //# sourceMappingURL=traceId.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/traceId.ts"],"sourcesContent":["/**\n * 日志追踪 ID 生成器\n * 用于生成唯一的请求追踪 ID,便于日志关联和问题排查\n */\n\n/**\n * 追踪 ID 生成器\n */\nexport class TraceIdGenerator {\n private static instance: TraceIdGenerator | null = null;\n private counter: number = 0;\n private readonly prefix: string;\n\n private constructor(prefix: string = '') {\n this.prefix = prefix;\n }\n\n /**\n * 获取单例实例\n */\n static getInstance(prefix?: string): TraceIdGenerator {\n if (!TraceIdGenerator.instance) {\n TraceIdGenerator.instance = new TraceIdGenerator(prefix);\n }\n return TraceIdGenerator.instance;\n }\n\n /**\n * 生成追踪 ID\n */\n generate(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 9);\n const counter = (this.counter++).toString(36).padStart(4, '0');\n \n const parts = [timestamp.toString(36), random, counter];\n if (this.prefix) {\n parts.unshift(this.prefix);\n }\n \n return parts.join('-');\n }\n\n /**\n * 从字符串解析追踪 ID(用于验证)\n */\n static parse(traceId: string): {\n prefix?: string;\n timestamp: number;\n random: string;\n counter: number;\n } | null {\n const parts = traceId.split('-');\n if (parts.length < 3) {\n return null;\n }\n\n try {\n const timestamp = parseInt(parts[parts.length - 3], 36);\n const random = parts[parts.length - 2];\n const counter = parseInt(parts[parts.length - 1], 36);\n\n return {\n prefix: parts.length > 3 ? parts.slice(0, -3).join('-') : undefined,\n timestamp,\n random,\n counter,\n };\n } catch {\n return null;\n }\n }\n}\n\n/**\n * 全局追踪 ID 生成器实例\n */\nlet globalTraceIdGenerator: TraceIdGenerator | null = null;\n\n/**\n * 初始化追踪 ID 生成器\n */\nexport function initTraceIdGenerator(prefix?: string): TraceIdGenerator {\n globalTraceIdGenerator = TraceIdGenerator.getInstance(prefix);\n return globalTraceIdGenerator;\n}\n\n/**\n * 获取全局追踪 ID 生成器\n */\nexport function getTraceIdGenerator(): TraceIdGenerator {\n if (!globalTraceIdGenerator) {\n globalTraceIdGenerator = TraceIdGenerator.getInstance();\n }\n return globalTraceIdGenerator;\n}\n\n/**\n * 生成追踪 ID\n */\nexport function generateTraceId(): string {\n return getTraceIdGenerator().generate();\n}\n\n/**\n * 解析追踪 ID\n */\nexport function parseTraceId(traceId: string): {\n prefix?: string;\n timestamp: number;\n random: string;\n counter: number;\n} | null {\n return TraceIdGenerator.parse(traceId);\n}\n\n/**\n * 当前请求的追踪 ID(使用 AsyncLocalStorage 或全局变量)\n */\nlet currentTraceId: string | null = null;\n\n/**\n * 设置当前请求的追踪 ID\n */\nexport function setCurrentTraceId(traceId: string | null): void {\n currentTraceId = traceId;\n}\n\n/**\n * 获取当前请求的追踪 ID\n */\nexport function getCurrentTraceId(): string | null {\n return currentTraceId;\n}\n\n/**\n * 清除当前请求的追踪 ID\n */\nexport function clearCurrentTraceId(): void {\n currentTraceId = null;\n}\n"],"names":["TraceIdGenerator","getInstance","prefix","instance","generate","timestamp","Date","now","random","Math","toString","substring","counter","padStart","parts","unshift","join","parse","traceId","split","length","parseInt","slice","undefined","globalTraceIdGenerator","initTraceIdGenerator","getTraceIdGenerator","generateTraceId","parseTraceId","currentTraceId","setCurrentTraceId","getCurrentTraceId","clearCurrentTraceId"],"mappings":";;;;;;;;;;;;;AAAA;;;CAGC,GAED;;CAEC,GACD,OAAO,MAAMA;IASX;;GAEC,GACD,OAAOC,YAAYC,MAAe,EAAoB;QACpD,IAAI,CAACF,iBAAiBG,QAAQ,EAAE;YAC9BH,iBAAiBG,QAAQ,GAAG,IAAIH,iBAAiBE;QACnD;QACA,OAAOF,iBAAiBG,QAAQ;IAClC;IAEA;;GAEC,GACDC,WAAmB;QACjB,MAAMC,YAAYC,KAAKC,GAAG;QAC1B,MAAMC,SAASC,KAAKD,MAAM,GAAGE,QAAQ,CAAC,IAAIC,SAAS,CAAC,GAAG;QACvD,MAAMC,UAAU,AAAC,CAAA,IAAI,CAACA,OAAO,EAAC,EAAGF,QAAQ,CAAC,IAAIG,QAAQ,CAAC,GAAG;QAE1D,MAAMC,QAAQ;YAACT,UAAUK,QAAQ,CAAC;YAAKF;YAAQI;SAAQ;QACvD,IAAI,IAAI,CAACV,MAAM,EAAE;YACfY,MAAMC,OAAO,CAAC,IAAI,CAACb,MAAM;QAC3B;QAEA,OAAOY,MAAME,IAAI,CAAC;IACpB;IAEA;;GAEC,GACD,OAAOC,MAAMC,OAAe,EAKnB;QACP,MAAMJ,QAAQI,QAAQC,KAAK,CAAC;QAC5B,IAAIL,MAAMM,MAAM,GAAG,GAAG;YACpB,OAAO;QACT;QAEA,IAAI;YACF,MAAMf,YAAYgB,SAASP,KAAK,CAACA,MAAMM,MAAM,GAAG,EAAE,EAAE;YACpD,MAAMZ,SAASM,KAAK,CAACA,MAAMM,MAAM,GAAG,EAAE;YACtC,MAAMR,UAAUS,SAASP,KAAK,CAACA,MAAMM,MAAM,GAAG,EAAE,EAAE;YAElD,OAAO;gBACLlB,QAAQY,MAAMM,MAAM,GAAG,IAAIN,MAAMQ,KAAK,CAAC,GAAG,CAAC,GAAGN,IAAI,CAAC,OAAOO;gBAC1DlB;gBACAG;gBACAI;YACF;QACF,EAAE,OAAM;YACN,OAAO;QACT;IACF;IA1DA,YAAoBV,SAAiB,EAAE,CAAE;QAHzC,uBAAQU,WAAkB;QAC1B,uBAAiBV,UAAjB,KAAA;QAGE,IAAI,CAACA,MAAM,GAAGA;IAChB;AAyDF;AA/DE,iBADWF,kBACIG,YAAoC;AAiErD;;CAEC,GACD,IAAIqB,yBAAkD;AAEtD;;CAEC,GACD,OAAO,SAASC,qBAAqBvB,MAAe;IAClDsB,yBAAyBxB,iBAAiBC,WAAW,CAACC;IACtD,OAAOsB;AACT;AAEA;;CAEC,GACD,OAAO,SAASE;IACd,IAAI,CAACF,wBAAwB;QAC3BA,yBAAyBxB,iBAAiBC,WAAW;IACvD;IACA,OAAOuB;AACT;AAEA;;CAEC,GACD,OAAO,SAASG;IACd,OAAOD,sBAAsBtB,QAAQ;AACvC;AAEA;;CAEC,GACD,OAAO,SAASwB,aAAaV,OAAe;IAM1C,OAAOlB,iBAAiBiB,KAAK,CAACC;AAChC;AAEA;;CAEC,GACD,IAAIW,iBAAgC;AAEpC;;CAEC,GACD,OAAO,SAASC,kBAAkBZ,OAAsB;IACtDW,iBAAiBX;AACnB;AAEA;;CAEC,GACD,OAAO,SAASa;IACd,OAAOF;AACT;AAEA;;CAEC,GACD,OAAO,SAASG;IACdH,iBAAiB;AACnB"}
1
+ {"version":3,"sources":["../../src/utils/traceId.ts"],"sourcesContent":["export {\n TraceIdGenerator,\n initTraceIdGenerator,\n getTraceIdGenerator,\n generateTraceId,\n parseTraceId,\n setCurrentTraceId,\n getCurrentTraceId,\n clearCurrentTraceId,\n} from '@vlian/logger';\n"],"names":["TraceIdGenerator","initTraceIdGenerator","getTraceIdGenerator","generateTraceId","parseTraceId","setCurrentTraceId","getCurrentTraceId","clearCurrentTraceId"],"mappings":"AAAA,SACEA,gBAAgB,EAChBC,oBAAoB,EACpBC,mBAAmB,EACnBC,eAAe,EACfC,YAAY,EACZC,iBAAiB,EACjBC,iBAAiB,EACjBC,mBAAmB,QACd,gBAAgB"}
@@ -10,182 +10,12 @@ function _export(target, all) {
10
10
  }
11
11
  _export(exports, {
12
12
  get Validator () {
13
- return Validator;
13
+ return _utils.Validator;
14
14
  },
15
15
  get commonSchemas () {
16
- return commonSchemas;
16
+ return _utils.commonSchemas;
17
17
  }
18
18
  });
19
- const _zod = require("zod");
20
- const _errors = require("./errors");
21
- let Validator = class Validator {
22
- /**
23
- * 验证字符串
24
- */ static validateString(value, rule, fieldName = '字段') {
25
- const errors = [];
26
- // 类型检查
27
- if (rule.required && (value === undefined || value === null || value === '')) {
28
- errors.push(`${fieldName} 是必填项`);
29
- return {
30
- valid: false,
31
- errors
32
- };
33
- }
34
- if (value === undefined || value === null || value === '') {
35
- return {
36
- valid: true,
37
- errors: []
38
- };
39
- }
40
- if (typeof value !== 'string') {
41
- errors.push(`${fieldName} 必须是字符串类型`);
42
- return {
43
- valid: false,
44
- errors
45
- };
46
- }
47
- // 长度检查
48
- if (rule.minLength !== undefined && value.length < rule.minLength) {
49
- errors.push(`${fieldName} 长度不能少于 ${rule.minLength} 个字符`);
50
- }
51
- if (rule.maxLength !== undefined && value.length > rule.maxLength) {
52
- errors.push(`${fieldName} 长度不能超过 ${rule.maxLength} 个字符`);
53
- }
54
- // 正则表达式检查
55
- if (rule.pattern && !rule.pattern.test(value)) {
56
- errors.push(`${fieldName} 格式不正确`);
57
- }
58
- return {
59
- valid: errors.length === 0,
60
- errors
61
- };
62
- }
63
- /**
64
- * 验证数字
65
- */ static validateNumber(value, rule, fieldName = '字段') {
66
- const errors = [];
67
- // 类型检查
68
- if (rule.required && (value === undefined || value === null)) {
69
- errors.push(`${fieldName} 是必填项`);
70
- return {
71
- valid: false,
72
- errors
73
- };
74
- }
75
- if (value === undefined || value === null) {
76
- return {
77
- valid: true,
78
- errors: []
79
- };
80
- }
81
- if (typeof value !== 'number' || isNaN(value)) {
82
- errors.push(`${fieldName} 必须是数字类型`);
83
- return {
84
- valid: false,
85
- errors
86
- };
87
- }
88
- // 范围检查
89
- if (rule.min !== undefined && value < rule.min) {
90
- errors.push(`${fieldName} 不能小于 ${rule.min}`);
91
- }
92
- if (rule.max !== undefined && value > rule.max) {
93
- errors.push(`${fieldName} 不能大于 ${rule.max}`);
94
- }
95
- return {
96
- valid: errors.length === 0,
97
- errors
98
- };
99
- }
100
- /**
101
- * 验证对象(使用 Zod Schema)
102
- */ static validateObject(schema, data) {
103
- try {
104
- const result = schema.safeParse(data);
105
- if (result.success) {
106
- return {
107
- valid: true,
108
- data: result.data,
109
- errors: []
110
- };
111
- } else {
112
- return {
113
- valid: false,
114
- errors: result.error.issues.map((err)=>`${err.path.join('.')}: ${err.message}`)
115
- };
116
- }
117
- } catch (error) {
118
- return {
119
- valid: false,
120
- errors: [
121
- error instanceof Error ? error.message : '验证失败'
122
- ]
123
- };
124
- }
125
- }
126
- /**
127
- * 验证并抛出错误
128
- */ static validateOrThrow(schema, data, context) {
129
- const result = this.validateObject(schema, data);
130
- if (!result.valid) {
131
- throw new _errors.ValidationError(result.errors.join('; '), context);
132
- }
133
- return result.data;
134
- }
135
- /**
136
- * 验证 URL
137
- */ static validateUrl(value, fieldName = 'URL') {
138
- const errors = [];
139
- if (value === undefined || value === null || value === '') {
140
- errors.push(`${fieldName} 是必填项`);
141
- return {
142
- valid: false,
143
- errors
144
- };
145
- }
146
- if (typeof value !== 'string') {
147
- errors.push(`${fieldName} 必须是字符串类型`);
148
- return {
149
- valid: false,
150
- errors
151
- };
152
- }
153
- try {
154
- new URL(value);
155
- } catch {
156
- errors.push(`${fieldName} 格式不正确`);
157
- }
158
- return {
159
- valid: errors.length === 0,
160
- errors
161
- };
162
- }
163
- /**
164
- * 验证邮箱
165
- */ static validateEmail(value, fieldName = '邮箱') {
166
- const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
167
- return this.validateString(value, {
168
- required: true,
169
- pattern: emailPattern
170
- }, fieldName);
171
- }
172
- };
173
- const commonSchemas = {
174
- /**
175
- * 非空字符串
176
- */ nonEmptyString: _zod.z.string().min(1, '不能为空'),
177
- /**
178
- * 正整数
179
- */ positiveInteger: _zod.z.number().int().positive(),
180
- /**
181
- * 非负整数
182
- */ nonNegativeInteger: _zod.z.number().int().nonnegative(),
183
- /**
184
- * URL
185
- */ url: _zod.z.string().url('URL 格式不正确'),
186
- /**
187
- * 邮箱
188
- */ email: _zod.z.string().email('邮箱格式不正确')
189
- };
19
+ const _utils = require("@vlian/utils");
190
20
 
191
21
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/validation.ts"],"sourcesContent":["import { z } from 'zod';\nimport { ValidationError } from './errors';\n\n/**\n * 字符串验证规则\n */\nexport interface StringValidationRule {\n /**\n * 最小长度\n */\n minLength?: number;\n /**\n * 最大长度\n */\n maxLength?: number;\n /**\n * 正则表达式\n */\n pattern?: RegExp;\n /**\n * 是否必填\n */\n required?: boolean;\n}\n\n/**\n * 数字验证规则\n */\nexport interface NumberValidationRule {\n /**\n * 最小值\n */\n min?: number;\n /**\n * 最大值\n */\n max?: number;\n /**\n * 是否必填\n */\n required?: boolean;\n}\n\n/**\n * 验证结果\n */\nexport interface ValidationResult {\n /**\n * 是否有效\n */\n valid: boolean;\n /**\n * 错误信息\n */\n errors: string[];\n}\n\n/**\n * 验证工具类\n */\nexport class Validator {\n /**\n * 验证字符串\n */\n static validateString(\n value: unknown,\n rule: StringValidationRule,\n fieldName = '字段'\n ): ValidationResult {\n const errors: string[] = [];\n\n // 类型检查\n if (rule.required && (value === undefined || value === null || value === '')) {\n errors.push(`${fieldName} 是必填项`);\n return { valid: false, errors };\n }\n\n if (value === undefined || value === null || value === '') {\n return { valid: true, errors: [] };\n }\n\n if (typeof value !== 'string') {\n errors.push(`${fieldName} 必须是字符串类型`);\n return { valid: false, errors };\n }\n\n // 长度检查\n if (rule.minLength !== undefined && value.length < rule.minLength) {\n errors.push(`${fieldName} 长度不能少于 ${rule.minLength} 个字符`);\n }\n\n if (rule.maxLength !== undefined && value.length > rule.maxLength) {\n errors.push(`${fieldName} 长度不能超过 ${rule.maxLength} 个字符`);\n }\n\n // 正则表达式检查\n if (rule.pattern && !rule.pattern.test(value)) {\n errors.push(`${fieldName} 格式不正确`);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * 验证数字\n */\n static validateNumber(\n value: unknown,\n rule: NumberValidationRule,\n fieldName = '字段'\n ): ValidationResult {\n const errors: string[] = [];\n\n // 类型检查\n if (rule.required && (value === undefined || value === null)) {\n errors.push(`${fieldName} 是必填项`);\n return { valid: false, errors };\n }\n\n if (value === undefined || value === null) {\n return { valid: true, errors: [] };\n }\n\n if (typeof value !== 'number' || isNaN(value)) {\n errors.push(`${fieldName} 必须是数字类型`);\n return { valid: false, errors };\n }\n\n // 范围检查\n if (rule.min !== undefined && value < rule.min) {\n errors.push(`${fieldName} 不能小于 ${rule.min}`);\n }\n\n if (rule.max !== undefined && value > rule.max) {\n errors.push(`${fieldName} 不能大于 ${rule.max}`);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * 验证对象(使用 Zod Schema)\n */\n static validateObject<T>(schema: z.ZodSchema<T>, data: unknown): {\n valid: boolean;\n data?: T;\n errors: string[];\n } {\n try {\n const result = schema.safeParse(data);\n if (result.success) {\n return {\n valid: true,\n data: result.data,\n errors: [],\n };\n } else {\n return {\n valid: false,\n errors: result.error.issues.map((err) => `${err.path.join('.')}: ${err.message}`),\n };\n }\n } catch (error) {\n return {\n valid: false,\n errors: [error instanceof Error ? error.message : '验证失败'],\n };\n }\n }\n\n /**\n * 验证并抛出错误\n */\n static validateOrThrow<T>(schema: z.ZodSchema<T>, data: unknown, context?: Record<string, unknown>): T {\n const result = this.validateObject(schema, data);\n if (!result.valid) {\n throw new ValidationError(result.errors.join('; '), context);\n }\n return result.data!;\n }\n\n /**\n * 验证 URL\n */\n static validateUrl(value: unknown, fieldName = 'URL'): ValidationResult {\n const errors: string[] = [];\n\n if (value === undefined || value === null || value === '') {\n errors.push(`${fieldName} 是必填项`);\n return { valid: false, errors };\n }\n\n if (typeof value !== 'string') {\n errors.push(`${fieldName} 必须是字符串类型`);\n return { valid: false, errors };\n }\n\n try {\n new URL(value);\n } catch {\n errors.push(`${fieldName} 格式不正确`);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * 验证邮箱\n */\n static validateEmail(value: unknown, fieldName = '邮箱'): ValidationResult {\n const emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return this.validateString(value, {\n required: true,\n pattern: emailPattern,\n }, fieldName);\n }\n}\n\n/**\n * 常用验证 Schema\n */\nexport const commonSchemas = {\n /**\n * 非空字符串\n */\n nonEmptyString: z.string().min(1, '不能为空'),\n\n /**\n * 正整数\n */\n positiveInteger: z.number().int().positive(),\n\n /**\n * 非负整数\n */\n nonNegativeInteger: z.number().int().nonnegative(),\n\n /**\n * URL\n */\n url: z.string().url('URL 格式不正确'),\n\n /**\n * 邮箱\n */\n email: z.string().email('邮箱格式不正确'),\n};\n"],"names":["Validator","commonSchemas","validateString","value","rule","fieldName","errors","required","undefined","push","valid","minLength","length","maxLength","pattern","test","validateNumber","isNaN","min","max","validateObject","schema","data","result","safeParse","success","error","issues","map","err","path","join","message","Error","validateOrThrow","context","ValidationError","validateUrl","URL","validateEmail","emailPattern","nonEmptyString","z","string","positiveInteger","number","int","positive","nonNegativeInteger","nonnegative","url","email"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/validation.ts"],"sourcesContent":["export { Validator, commonSchemas } from '@vlian/utils';\nexport type { StringValidationRule, NumberValidationRule, ValidationResult } from '@vlian/utils';\n"],"names":["Validator","commonSchemas"],"mappings":";;;;;;;;;;;QAASA;eAAAA,gBAAS;;QAAEC;eAAAA,oBAAa;;;uBAAQ"}
@@ -1,110 +1,2 @@
1
- import { z } from 'zod';
2
- /**
3
- * 字符串验证规则
4
- */
5
- export interface StringValidationRule {
6
- /**
7
- * 最小长度
8
- */
9
- minLength?: number;
10
- /**
11
- * 最大长度
12
- */
13
- maxLength?: number;
14
- /**
15
- * 正则表达式
16
- */
17
- pattern?: RegExp;
18
- /**
19
- * 是否必填
20
- */
21
- required?: boolean;
22
- }
23
- /**
24
- * 数字验证规则
25
- */
26
- export interface NumberValidationRule {
27
- /**
28
- * 最小值
29
- */
30
- min?: number;
31
- /**
32
- * 最大值
33
- */
34
- max?: number;
35
- /**
36
- * 是否必填
37
- */
38
- required?: boolean;
39
- }
40
- /**
41
- * 验证结果
42
- */
43
- export interface ValidationResult {
44
- /**
45
- * 是否有效
46
- */
47
- valid: boolean;
48
- /**
49
- * 错误信息
50
- */
51
- errors: string[];
52
- }
53
- /**
54
- * 验证工具类
55
- */
56
- export declare class Validator {
57
- /**
58
- * 验证字符串
59
- */
60
- static validateString(value: unknown, rule: StringValidationRule, fieldName?: string): ValidationResult;
61
- /**
62
- * 验证数字
63
- */
64
- static validateNumber(value: unknown, rule: NumberValidationRule, fieldName?: string): ValidationResult;
65
- /**
66
- * 验证对象(使用 Zod Schema)
67
- */
68
- static validateObject<T>(schema: z.ZodSchema<T>, data: unknown): {
69
- valid: boolean;
70
- data?: T;
71
- errors: string[];
72
- };
73
- /**
74
- * 验证并抛出错误
75
- */
76
- static validateOrThrow<T>(schema: z.ZodSchema<T>, data: unknown, context?: Record<string, unknown>): T;
77
- /**
78
- * 验证 URL
79
- */
80
- static validateUrl(value: unknown, fieldName?: string): ValidationResult;
81
- /**
82
- * 验证邮箱
83
- */
84
- static validateEmail(value: unknown, fieldName?: string): ValidationResult;
85
- }
86
- /**
87
- * 常用验证 Schema
88
- */
89
- export declare const commonSchemas: {
90
- /**
91
- * 非空字符串
92
- */
93
- nonEmptyString: z.ZodString;
94
- /**
95
- * 正整数
96
- */
97
- positiveInteger: z.ZodNumber;
98
- /**
99
- * 非负整数
100
- */
101
- nonNegativeInteger: z.ZodNumber;
102
- /**
103
- * URL
104
- */
105
- url: z.ZodString;
106
- /**
107
- * 邮箱
108
- */
109
- email: z.ZodString;
110
- };
1
+ export { Validator, commonSchemas } from '@vlian/utils';
2
+ export type { StringValidationRule, NumberValidationRule, ValidationResult } from '@vlian/utils';
@@ -1,177 +1,3 @@
1
- import { z } from "zod";
2
- import { ValidationError } from "./errors";
3
- /**
4
- * 验证工具类
5
- */ export class Validator {
6
- /**
7
- * 验证字符串
8
- */ static validateString(value, rule, fieldName = '字段') {
9
- const errors = [];
10
- // 类型检查
11
- if (rule.required && (value === undefined || value === null || value === '')) {
12
- errors.push(`${fieldName} 是必填项`);
13
- return {
14
- valid: false,
15
- errors
16
- };
17
- }
18
- if (value === undefined || value === null || value === '') {
19
- return {
20
- valid: true,
21
- errors: []
22
- };
23
- }
24
- if (typeof value !== 'string') {
25
- errors.push(`${fieldName} 必须是字符串类型`);
26
- return {
27
- valid: false,
28
- errors
29
- };
30
- }
31
- // 长度检查
32
- if (rule.minLength !== undefined && value.length < rule.minLength) {
33
- errors.push(`${fieldName} 长度不能少于 ${rule.minLength} 个字符`);
34
- }
35
- if (rule.maxLength !== undefined && value.length > rule.maxLength) {
36
- errors.push(`${fieldName} 长度不能超过 ${rule.maxLength} 个字符`);
37
- }
38
- // 正则表达式检查
39
- if (rule.pattern && !rule.pattern.test(value)) {
40
- errors.push(`${fieldName} 格式不正确`);
41
- }
42
- return {
43
- valid: errors.length === 0,
44
- errors
45
- };
46
- }
47
- /**
48
- * 验证数字
49
- */ static validateNumber(value, rule, fieldName = '字段') {
50
- const errors = [];
51
- // 类型检查
52
- if (rule.required && (value === undefined || value === null)) {
53
- errors.push(`${fieldName} 是必填项`);
54
- return {
55
- valid: false,
56
- errors
57
- };
58
- }
59
- if (value === undefined || value === null) {
60
- return {
61
- valid: true,
62
- errors: []
63
- };
64
- }
65
- if (typeof value !== 'number' || isNaN(value)) {
66
- errors.push(`${fieldName} 必须是数字类型`);
67
- return {
68
- valid: false,
69
- errors
70
- };
71
- }
72
- // 范围检查
73
- if (rule.min !== undefined && value < rule.min) {
74
- errors.push(`${fieldName} 不能小于 ${rule.min}`);
75
- }
76
- if (rule.max !== undefined && value > rule.max) {
77
- errors.push(`${fieldName} 不能大于 ${rule.max}`);
78
- }
79
- return {
80
- valid: errors.length === 0,
81
- errors
82
- };
83
- }
84
- /**
85
- * 验证对象(使用 Zod Schema)
86
- */ static validateObject(schema, data) {
87
- try {
88
- const result = schema.safeParse(data);
89
- if (result.success) {
90
- return {
91
- valid: true,
92
- data: result.data,
93
- errors: []
94
- };
95
- } else {
96
- return {
97
- valid: false,
98
- errors: result.error.issues.map((err)=>`${err.path.join('.')}: ${err.message}`)
99
- };
100
- }
101
- } catch (error) {
102
- return {
103
- valid: false,
104
- errors: [
105
- error instanceof Error ? error.message : '验证失败'
106
- ]
107
- };
108
- }
109
- }
110
- /**
111
- * 验证并抛出错误
112
- */ static validateOrThrow(schema, data, context) {
113
- const result = this.validateObject(schema, data);
114
- if (!result.valid) {
115
- throw new ValidationError(result.errors.join('; '), context);
116
- }
117
- return result.data;
118
- }
119
- /**
120
- * 验证 URL
121
- */ static validateUrl(value, fieldName = 'URL') {
122
- const errors = [];
123
- if (value === undefined || value === null || value === '') {
124
- errors.push(`${fieldName} 是必填项`);
125
- return {
126
- valid: false,
127
- errors
128
- };
129
- }
130
- if (typeof value !== 'string') {
131
- errors.push(`${fieldName} 必须是字符串类型`);
132
- return {
133
- valid: false,
134
- errors
135
- };
136
- }
137
- try {
138
- new URL(value);
139
- } catch {
140
- errors.push(`${fieldName} 格式不正确`);
141
- }
142
- return {
143
- valid: errors.length === 0,
144
- errors
145
- };
146
- }
147
- /**
148
- * 验证邮箱
149
- */ static validateEmail(value, fieldName = '邮箱') {
150
- const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
151
- return this.validateString(value, {
152
- required: true,
153
- pattern: emailPattern
154
- }, fieldName);
155
- }
156
- }
157
- /**
158
- * 常用验证 Schema
159
- */ export const commonSchemas = {
160
- /**
161
- * 非空字符串
162
- */ nonEmptyString: z.string().min(1, '不能为空'),
163
- /**
164
- * 正整数
165
- */ positiveInteger: z.number().int().positive(),
166
- /**
167
- * 非负整数
168
- */ nonNegativeInteger: z.number().int().nonnegative(),
169
- /**
170
- * URL
171
- */ url: z.string().url('URL 格式不正确'),
172
- /**
173
- * 邮箱
174
- */ email: z.string().email('邮箱格式不正确')
175
- };
1
+ export { Validator, commonSchemas } from "@vlian/utils";
176
2
 
177
3
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/validation.ts"],"sourcesContent":["import { z } from 'zod';\nimport { ValidationError } from './errors';\n\n/**\n * 字符串验证规则\n */\nexport interface StringValidationRule {\n /**\n * 最小长度\n */\n minLength?: number;\n /**\n * 最大长度\n */\n maxLength?: number;\n /**\n * 正则表达式\n */\n pattern?: RegExp;\n /**\n * 是否必填\n */\n required?: boolean;\n}\n\n/**\n * 数字验证规则\n */\nexport interface NumberValidationRule {\n /**\n * 最小值\n */\n min?: number;\n /**\n * 最大值\n */\n max?: number;\n /**\n * 是否必填\n */\n required?: boolean;\n}\n\n/**\n * 验证结果\n */\nexport interface ValidationResult {\n /**\n * 是否有效\n */\n valid: boolean;\n /**\n * 错误信息\n */\n errors: string[];\n}\n\n/**\n * 验证工具类\n */\nexport class Validator {\n /**\n * 验证字符串\n */\n static validateString(\n value: unknown,\n rule: StringValidationRule,\n fieldName = '字段'\n ): ValidationResult {\n const errors: string[] = [];\n\n // 类型检查\n if (rule.required && (value === undefined || value === null || value === '')) {\n errors.push(`${fieldName} 是必填项`);\n return { valid: false, errors };\n }\n\n if (value === undefined || value === null || value === '') {\n return { valid: true, errors: [] };\n }\n\n if (typeof value !== 'string') {\n errors.push(`${fieldName} 必须是字符串类型`);\n return { valid: false, errors };\n }\n\n // 长度检查\n if (rule.minLength !== undefined && value.length < rule.minLength) {\n errors.push(`${fieldName} 长度不能少于 ${rule.minLength} 个字符`);\n }\n\n if (rule.maxLength !== undefined && value.length > rule.maxLength) {\n errors.push(`${fieldName} 长度不能超过 ${rule.maxLength} 个字符`);\n }\n\n // 正则表达式检查\n if (rule.pattern && !rule.pattern.test(value)) {\n errors.push(`${fieldName} 格式不正确`);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * 验证数字\n */\n static validateNumber(\n value: unknown,\n rule: NumberValidationRule,\n fieldName = '字段'\n ): ValidationResult {\n const errors: string[] = [];\n\n // 类型检查\n if (rule.required && (value === undefined || value === null)) {\n errors.push(`${fieldName} 是必填项`);\n return { valid: false, errors };\n }\n\n if (value === undefined || value === null) {\n return { valid: true, errors: [] };\n }\n\n if (typeof value !== 'number' || isNaN(value)) {\n errors.push(`${fieldName} 必须是数字类型`);\n return { valid: false, errors };\n }\n\n // 范围检查\n if (rule.min !== undefined && value < rule.min) {\n errors.push(`${fieldName} 不能小于 ${rule.min}`);\n }\n\n if (rule.max !== undefined && value > rule.max) {\n errors.push(`${fieldName} 不能大于 ${rule.max}`);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * 验证对象(使用 Zod Schema)\n */\n static validateObject<T>(schema: z.ZodSchema<T>, data: unknown): {\n valid: boolean;\n data?: T;\n errors: string[];\n } {\n try {\n const result = schema.safeParse(data);\n if (result.success) {\n return {\n valid: true,\n data: result.data,\n errors: [],\n };\n } else {\n return {\n valid: false,\n errors: result.error.issues.map((err) => `${err.path.join('.')}: ${err.message}`),\n };\n }\n } catch (error) {\n return {\n valid: false,\n errors: [error instanceof Error ? error.message : '验证失败'],\n };\n }\n }\n\n /**\n * 验证并抛出错误\n */\n static validateOrThrow<T>(schema: z.ZodSchema<T>, data: unknown, context?: Record<string, unknown>): T {\n const result = this.validateObject(schema, data);\n if (!result.valid) {\n throw new ValidationError(result.errors.join('; '), context);\n }\n return result.data!;\n }\n\n /**\n * 验证 URL\n */\n static validateUrl(value: unknown, fieldName = 'URL'): ValidationResult {\n const errors: string[] = [];\n\n if (value === undefined || value === null || value === '') {\n errors.push(`${fieldName} 是必填项`);\n return { valid: false, errors };\n }\n\n if (typeof value !== 'string') {\n errors.push(`${fieldName} 必须是字符串类型`);\n return { valid: false, errors };\n }\n\n try {\n new URL(value);\n } catch {\n errors.push(`${fieldName} 格式不正确`);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * 验证邮箱\n */\n static validateEmail(value: unknown, fieldName = '邮箱'): ValidationResult {\n const emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return this.validateString(value, {\n required: true,\n pattern: emailPattern,\n }, fieldName);\n }\n}\n\n/**\n * 常用验证 Schema\n */\nexport const commonSchemas = {\n /**\n * 非空字符串\n */\n nonEmptyString: z.string().min(1, '不能为空'),\n\n /**\n * 正整数\n */\n positiveInteger: z.number().int().positive(),\n\n /**\n * 非负整数\n */\n nonNegativeInteger: z.number().int().nonnegative(),\n\n /**\n * URL\n */\n url: z.string().url('URL 格式不正确'),\n\n /**\n * 邮箱\n */\n email: z.string().email('邮箱格式不正确'),\n};\n"],"names":["z","ValidationError","Validator","validateString","value","rule","fieldName","errors","required","undefined","push","valid","minLength","length","maxLength","pattern","test","validateNumber","isNaN","min","max","validateObject","schema","data","result","safeParse","success","error","issues","map","err","path","join","message","Error","validateOrThrow","context","validateUrl","URL","validateEmail","emailPattern","commonSchemas","nonEmptyString","string","positiveInteger","number","int","positive","nonNegativeInteger","nonnegative","url","email"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/validation.ts"],"sourcesContent":["export { Validator, commonSchemas } from '@vlian/utils';\nexport type { StringValidationRule, NumberValidationRule, ValidationResult } from '@vlian/utils';\n"],"names":["Validator","commonSchemas"],"mappings":"AAAA,SAASA,SAAS,EAAEC,aAAa,QAAQ,eAAe"}