exisjs 0.7.5 → 0.7.7

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 (321) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/build.js +12 -0
  3. package/dist/cli/commands/build.js.map +1 -1
  4. package/dist/cli/commands/clean.d.ts +5 -0
  5. package/dist/cli/commands/clean.d.ts.map +1 -0
  6. package/dist/cli/commands/clean.js +30 -0
  7. package/dist/cli/commands/clean.js.map +1 -0
  8. package/dist/cli/commands/dev.d.ts.map +1 -1
  9. package/dist/cli/commands/dev.js +171 -86
  10. package/dist/cli/commands/dev.js.map +1 -1
  11. package/dist/cli/commands/generate.d.ts +6 -1
  12. package/dist/cli/commands/generate.d.ts.map +1 -1
  13. package/dist/cli/commands/generate.js +57 -2
  14. package/dist/cli/commands/generate.js.map +1 -1
  15. package/dist/cli/commands/start.d.ts.map +1 -1
  16. package/dist/cli/commands/start.js +54 -16
  17. package/dist/cli/commands/start.js.map +1 -1
  18. package/dist/cli/index.js +26 -3
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/manifest.d.ts +1 -0
  21. package/dist/cli/manifest.d.ts.map +1 -1
  22. package/dist/cli/manifest.js +264 -33
  23. package/dist/cli/manifest.js.map +1 -1
  24. package/dist/cli/resolve-aliases.d.ts +1 -1
  25. package/dist/cli/resolve-aliases.d.ts.map +1 -1
  26. package/dist/cli/resolve-aliases.js +30 -13
  27. package/dist/cli/resolve-aliases.js.map +1 -1
  28. package/dist/config/config.d.ts +3 -1
  29. package/dist/config/config.d.ts.map +1 -1
  30. package/dist/config/config.js +9 -0
  31. package/dist/config/config.js.map +1 -1
  32. package/dist/config/types.d.ts +6 -0
  33. package/dist/config/types.d.ts.map +1 -1
  34. package/dist/cron/expressions.d.ts +45 -0
  35. package/dist/cron/expressions.d.ts.map +1 -0
  36. package/dist/cron/expressions.js +87 -0
  37. package/dist/cron/expressions.js.map +1 -0
  38. package/dist/cron/index.d.ts +6 -0
  39. package/dist/cron/index.d.ts.map +1 -0
  40. package/dist/cron/index.js +22 -0
  41. package/dist/cron/index.js.map +1 -0
  42. package/dist/cron/job.d.ts +50 -0
  43. package/dist/cron/job.d.ts.map +1 -0
  44. package/dist/cron/job.js +247 -0
  45. package/dist/cron/job.js.map +1 -0
  46. package/dist/cron/manager.d.ts +105 -0
  47. package/dist/cron/manager.d.ts.map +1 -0
  48. package/dist/cron/manager.js +245 -0
  49. package/dist/cron/manager.js.map +1 -0
  50. package/dist/cron/parser.d.ts +22 -0
  51. package/dist/cron/parser.d.ts.map +1 -0
  52. package/dist/cron/parser.js +269 -0
  53. package/dist/cron/parser.js.map +1 -0
  54. package/dist/cron/types.d.ts +76 -0
  55. package/dist/cron/types.d.ts.map +1 -0
  56. package/dist/cron/types.js +3 -0
  57. package/dist/cron/types.js.map +1 -0
  58. package/dist/decorators/constants.d.ts +2 -0
  59. package/dist/decorators/constants.d.ts.map +1 -1
  60. package/dist/decorators/constants.js +3 -1
  61. package/dist/decorators/constants.js.map +1 -1
  62. package/dist/decorators/core.d.ts +29 -11
  63. package/dist/decorators/core.d.ts.map +1 -1
  64. package/dist/decorators/core.js +49 -11
  65. package/dist/decorators/core.js.map +1 -1
  66. package/dist/decorators/cron.d.ts +57 -0
  67. package/dist/decorators/cron.d.ts.map +1 -0
  68. package/dist/decorators/cron.js +143 -0
  69. package/dist/decorators/cron.js.map +1 -0
  70. package/dist/decorators/index.d.ts +2 -0
  71. package/dist/decorators/index.d.ts.map +1 -1
  72. package/dist/decorators/index.js +2 -0
  73. package/dist/decorators/index.js.map +1 -1
  74. package/dist/decorators/middleware.d.ts +65 -2
  75. package/dist/decorators/middleware.d.ts.map +1 -1
  76. package/dist/decorators/middleware.js +148 -62
  77. package/dist/decorators/middleware.js.map +1 -1
  78. package/dist/decorators/params.d.ts +102 -2
  79. package/dist/decorators/params.d.ts.map +1 -1
  80. package/dist/decorators/params.js +105 -3
  81. package/dist/decorators/params.js.map +1 -1
  82. package/dist/decorators/response.d.ts.map +1 -1
  83. package/dist/decorators/response.js +32 -22
  84. package/dist/decorators/response.js.map +1 -1
  85. package/dist/decorators/routing.d.ts +81 -16
  86. package/dist/decorators/routing.d.ts.map +1 -1
  87. package/dist/decorators/routing.js +81 -16
  88. package/dist/decorators/routing.js.map +1 -1
  89. package/dist/di/container.d.ts.map +1 -1
  90. package/dist/di/container.js +6 -1
  91. package/dist/di/container.js.map +1 -1
  92. package/dist/docs/content/cli/commands.mdx +1 -1
  93. package/dist/docs/content/controllers.mdx +127 -10
  94. package/dist/docs/content/cron.mdx +196 -0
  95. package/dist/docs/content/decorators.mdx +22 -4
  96. package/dist/docs/content/errors.mdx +58 -9
  97. package/dist/docs/content/introduction.mdx +7 -7
  98. package/dist/docs/content/middleware.mdx +269 -6
  99. package/dist/docs/content/requests.mdx +180 -6
  100. package/dist/docs/content/responses.mdx +283 -32
  101. package/dist/docs/content/routing.mdx +46 -0
  102. package/dist/docs/content/swagger.mdx +228 -0
  103. package/dist/docs/content/validation.mdx +190 -11
  104. package/dist/docs/reference/context.mdx +11 -0
  105. package/dist/docs/reference/cron.mdx +300 -0
  106. package/dist/docs/reference/decorators.mdx +22 -4
  107. package/dist/docs/reference/error.mdx +88 -0
  108. package/dist/docs/reference/logger.mdx +175 -43
  109. package/dist/docs/reference/middleware.mdx +31 -0
  110. package/dist/docs/reference/router.mdx +22 -0
  111. package/dist/docs/reference/swagger.mdx +143 -0
  112. package/dist/docs/reference/validator.mdx +83 -23
  113. package/dist/error/errors.d.ts.map +1 -1
  114. package/dist/error/errors.js +95 -43
  115. package/dist/error/errors.js.map +1 -1
  116. package/dist/error/index.d.ts +1 -0
  117. package/dist/error/index.d.ts.map +1 -1
  118. package/dist/error/index.js +11 -1
  119. package/dist/error/index.js.map +1 -1
  120. package/dist/error/overlay.d.ts +42 -0
  121. package/dist/error/overlay.d.ts.map +1 -0
  122. package/dist/error/overlay.js +306 -0
  123. package/dist/error/overlay.js.map +1 -0
  124. package/dist/index.d.ts +1 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +22 -1
  127. package/dist/index.js.map +1 -1
  128. package/dist/lib/start-server.js +33 -7
  129. package/dist/lib/start-server.js.map +1 -1
  130. package/dist/logger/index.d.ts +1 -1
  131. package/dist/logger/index.d.ts.map +1 -1
  132. package/dist/logger/index.js +9 -1
  133. package/dist/logger/index.js.map +1 -1
  134. package/dist/middleware/guard.d.ts +2 -2
  135. package/dist/middleware/guard.d.ts.map +1 -1
  136. package/dist/middleware/guard.js.map +1 -1
  137. package/dist/middleware/ip-filter.d.ts +1 -0
  138. package/dist/middleware/ip-filter.d.ts.map +1 -1
  139. package/dist/middleware/ip-filter.js +2 -0
  140. package/dist/middleware/ip-filter.js.map +1 -1
  141. package/dist/middleware/middleware.d.ts +2 -2
  142. package/dist/middleware/middleware.d.ts.map +1 -1
  143. package/dist/middleware/middleware.js +20 -2
  144. package/dist/middleware/middleware.js.map +1 -1
  145. package/dist/middleware/security.d.ts +43 -1
  146. package/dist/middleware/security.d.ts.map +1 -1
  147. package/dist/middleware/security.js +101 -0
  148. package/dist/middleware/security.js.map +1 -1
  149. package/dist/response/index.d.ts +229 -6
  150. package/dist/response/index.d.ts.map +1 -1
  151. package/dist/response/index.js +272 -2
  152. package/dist/response/index.js.map +1 -1
  153. package/dist/router/boundary.d.ts +41 -11
  154. package/dist/router/boundary.d.ts.map +1 -1
  155. package/dist/router/boundary.js +24 -2
  156. package/dist/router/boundary.js.map +1 -1
  157. package/dist/router/controller-registrar.d.ts.map +1 -1
  158. package/dist/router/controller-registrar.js +108 -4
  159. package/dist/router/controller-registrar.js.map +1 -1
  160. package/dist/router/index.d.ts +2 -2
  161. package/dist/router/index.d.ts.map +1 -1
  162. package/dist/router/index.js +2 -1
  163. package/dist/router/index.js.map +1 -1
  164. package/dist/router/route-builder.d.ts +262 -65
  165. package/dist/router/route-builder.d.ts.map +1 -1
  166. package/dist/router/route-builder.js +181 -23
  167. package/dist/router/route-builder.js.map +1 -1
  168. package/dist/router/route-scanner.d.ts +6 -0
  169. package/dist/router/route-scanner.d.ts.map +1 -1
  170. package/dist/router/route-scanner.js +71 -792
  171. package/dist/router/route-scanner.js.map +1 -1
  172. package/dist/router/router.d.ts.map +1 -1
  173. package/dist/router/router.js +62 -17
  174. package/dist/router/router.js.map +1 -1
  175. package/dist/router/scanner/boundary-loader.d.ts +18 -0
  176. package/dist/router/scanner/boundary-loader.d.ts.map +1 -0
  177. package/dist/router/scanner/boundary-loader.js +539 -0
  178. package/dist/router/scanner/boundary-loader.js.map +1 -0
  179. package/dist/router/scanner/cron-mounter.d.ts +15 -0
  180. package/dist/router/scanner/cron-mounter.d.ts.map +1 -0
  181. package/dist/router/scanner/cron-mounter.js +216 -0
  182. package/dist/router/scanner/cron-mounter.js.map +1 -0
  183. package/dist/router/scanner/error-mounter.d.ts +14 -0
  184. package/dist/router/scanner/error-mounter.d.ts.map +1 -0
  185. package/dist/router/scanner/error-mounter.js +200 -0
  186. package/dist/router/scanner/error-mounter.js.map +1 -0
  187. package/dist/router/scanner/fs-scanner.d.ts +25 -0
  188. package/dist/router/scanner/fs-scanner.d.ts.map +1 -0
  189. package/dist/router/scanner/fs-scanner.js +115 -0
  190. package/dist/router/scanner/fs-scanner.js.map +1 -0
  191. package/dist/router/scanner/functional-compiler.d.ts +9 -0
  192. package/dist/router/scanner/functional-compiler.d.ts.map +1 -0
  193. package/dist/router/scanner/functional-compiler.js +233 -0
  194. package/dist/router/scanner/functional-compiler.js.map +1 -0
  195. package/dist/router/scanner/index.d.ts +9 -0
  196. package/dist/router/scanner/index.d.ts.map +1 -0
  197. package/dist/router/scanner/index.js +19 -0
  198. package/dist/router/scanner/index.js.map +1 -0
  199. package/dist/router/types.d.ts +23 -0
  200. package/dist/router/types.d.ts.map +1 -1
  201. package/dist/server/app.d.ts +3 -0
  202. package/dist/server/app.d.ts.map +1 -1
  203. package/dist/server/app.js +13 -0
  204. package/dist/server/app.js.map +1 -1
  205. package/dist/server/bootstrapper.d.ts.map +1 -1
  206. package/dist/server/bootstrapper.js +91 -30
  207. package/dist/server/bootstrapper.js.map +1 -1
  208. package/dist/server/cluster.d.ts.map +1 -1
  209. package/dist/server/cluster.js +13 -2
  210. package/dist/server/cluster.js.map +1 -1
  211. package/dist/server/context.d.ts +8 -0
  212. package/dist/server/context.d.ts.map +1 -1
  213. package/dist/server/context.js +50 -6
  214. package/dist/server/context.js.map +1 -1
  215. package/dist/server/helpers/body-parser.d.ts +18 -0
  216. package/dist/server/helpers/body-parser.d.ts.map +1 -0
  217. package/dist/server/helpers/body-parser.js +246 -0
  218. package/dist/server/helpers/body-parser.js.map +1 -0
  219. package/dist/server/helpers/cookie.d.ts +4 -0
  220. package/dist/server/helpers/cookie.d.ts.map +1 -0
  221. package/dist/server/helpers/cookie.js +61 -0
  222. package/dist/server/helpers/cookie.js.map +1 -0
  223. package/dist/server/helpers/etag.d.ts +3 -0
  224. package/dist/server/helpers/etag.d.ts.map +1 -0
  225. package/dist/server/helpers/etag.js +25 -0
  226. package/dist/server/helpers/etag.js.map +1 -0
  227. package/dist/server/helpers/index.d.ts +6 -0
  228. package/dist/server/helpers/index.d.ts.map +1 -0
  229. package/dist/server/helpers/index.js +21 -0
  230. package/dist/server/helpers/index.js.map +1 -0
  231. package/dist/server/helpers/ip.d.ts +9 -0
  232. package/dist/server/helpers/ip.d.ts.map +1 -0
  233. package/dist/server/helpers/ip.js +62 -0
  234. package/dist/server/helpers/ip.js.map +1 -0
  235. package/dist/server/helpers/stream.d.ts +4 -0
  236. package/dist/server/helpers/stream.d.ts.map +1 -0
  237. package/dist/server/helpers/stream.js +193 -0
  238. package/dist/server/helpers/stream.js.map +1 -0
  239. package/dist/server/lifecycle.d.ts +22 -0
  240. package/dist/server/lifecycle.d.ts.map +1 -0
  241. package/dist/server/lifecycle.js +106 -0
  242. package/dist/server/lifecycle.js.map +1 -0
  243. package/dist/server/request-handler.d.ts +1 -0
  244. package/dist/server/request-handler.d.ts.map +1 -1
  245. package/dist/server/request-handler.js +27 -17
  246. package/dist/server/request-handler.js.map +1 -1
  247. package/dist/server/request.d.ts +1 -139
  248. package/dist/server/request.d.ts.map +1 -1
  249. package/dist/server/request.js +37 -433
  250. package/dist/server/request.js.map +1 -1
  251. package/dist/server/response.d.ts +112 -156
  252. package/dist/server/response.d.ts.map +1 -1
  253. package/dist/server/response.js +129 -279
  254. package/dist/server/response.js.map +1 -1
  255. package/dist/swagger/decorators.d.ts +81 -0
  256. package/dist/swagger/decorators.d.ts.map +1 -0
  257. package/dist/swagger/decorators.js +172 -0
  258. package/dist/swagger/decorators.js.map +1 -0
  259. package/dist/swagger/generator.d.ts +19 -0
  260. package/dist/swagger/generator.d.ts.map +1 -0
  261. package/dist/swagger/generator.js +344 -0
  262. package/dist/swagger/generator.js.map +1 -0
  263. package/dist/swagger/index.d.ts +31 -0
  264. package/dist/swagger/index.d.ts.map +1 -0
  265. package/dist/swagger/index.js +53 -0
  266. package/dist/swagger/index.js.map +1 -0
  267. package/dist/swagger/mounter.d.ts +7 -0
  268. package/dist/swagger/mounter.d.ts.map +1 -0
  269. package/dist/swagger/mounter.js +56 -0
  270. package/dist/swagger/mounter.js.map +1 -0
  271. package/dist/swagger/types.d.ts +190 -0
  272. package/dist/swagger/types.d.ts.map +1 -0
  273. package/dist/swagger/types.js +3 -0
  274. package/dist/swagger/types.js.map +1 -0
  275. package/dist/swagger/ui.d.ts +6 -0
  276. package/dist/swagger/ui.d.ts.map +1 -0
  277. package/dist/swagger/ui.js +118 -0
  278. package/dist/swagger/ui.js.map +1 -0
  279. package/dist/testing/index.d.ts.map +1 -1
  280. package/dist/testing/index.js +6 -1
  281. package/dist/testing/index.js.map +1 -1
  282. package/dist/testing/mocks.d.ts.map +1 -1
  283. package/dist/testing/mocks.js +15 -3
  284. package/dist/testing/mocks.js.map +1 -1
  285. package/dist/utils/logger.d.ts +8 -0
  286. package/dist/utils/logger.d.ts.map +1 -1
  287. package/dist/utils/logger.js +184 -1
  288. package/dist/utils/logger.js.map +1 -1
  289. package/dist/validator/builder.d.ts +223 -0
  290. package/dist/validator/builder.d.ts.map +1 -0
  291. package/dist/validator/builder.js +517 -0
  292. package/dist/validator/builder.js.map +1 -0
  293. package/dist/validator/engine.d.ts +19 -0
  294. package/dist/validator/engine.d.ts.map +1 -0
  295. package/dist/validator/engine.js +568 -0
  296. package/dist/validator/engine.js.map +1 -0
  297. package/dist/validator/error.d.ts +12 -0
  298. package/dist/validator/error.d.ts.map +1 -0
  299. package/dist/validator/error.js +63 -0
  300. package/dist/validator/error.js.map +1 -0
  301. package/dist/validator/pagination.d.ts +40 -0
  302. package/dist/validator/pagination.d.ts.map +1 -0
  303. package/dist/validator/pagination.js +60 -0
  304. package/dist/validator/pagination.js.map +1 -0
  305. package/dist/validator/tex-types.d.ts +2 -1
  306. package/dist/validator/tex-types.d.ts.map +1 -1
  307. package/dist/validator/tex-types.js +2 -1
  308. package/dist/validator/tex-types.js.map +1 -1
  309. package/dist/validator/tex.d.ts +6 -142
  310. package/dist/validator/tex.d.ts.map +1 -1
  311. package/dist/validator/tex.js +14 -733
  312. package/dist/validator/tex.js.map +1 -1
  313. package/dist/validator/types.d.ts +83 -0
  314. package/dist/validator/types.d.ts.map +1 -0
  315. package/dist/validator/types.js +3 -0
  316. package/dist/validator/types.js.map +1 -0
  317. package/package.json +8 -4
  318. package/dist/dev/error-overlay.d.ts +0 -3
  319. package/dist/dev/error-overlay.d.ts.map +0 -1
  320. package/dist/dev/error-overlay.js +0 -118
  321. package/dist/dev/error-overlay.js.map +0 -1
@@ -0,0 +1,568 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TexEngine = void 0;
4
+ const rs_1 = require("@exisjs/rs");
5
+ const tex_types_1 = require("./tex-types");
6
+ const error_1 = require("./error");
7
+ class TexEngine {
8
+ constructor(schema, rawSchema, strict = false, isOptional = false) {
9
+ this._isOptional = false;
10
+ this.schema = schema;
11
+ this.rawSchema = rawSchema;
12
+ this.strict = strict;
13
+ this._isOptional = isOptional;
14
+ this.validator = new rs_1.TexValidator(schema, strict);
15
+ }
16
+ getCompiledSchema() {
17
+ return this.schema;
18
+ }
19
+ optional() {
20
+ return new TexEngine(this.schema, this.rawSchema, this.strict, true);
21
+ }
22
+ partial() {
23
+ const newSchema = {};
24
+ const newRaw = {};
25
+ for (const [key, val] of Object.entries(this.schema)) {
26
+ newSchema[key] = val.includes('?') ? val : `${val}?`;
27
+ const rawVal = this.rawSchema[key];
28
+ if (rawVal instanceof tex_types_1.TexType) {
29
+ newRaw[key] = new tex_types_1.TexType(newSchema[key]);
30
+ newRaw[key].sanitizers = rawVal.sanitizers;
31
+ newRaw[key].refinements = rawVal.refinements;
32
+ }
33
+ else if (rawVal instanceof TexEngine) {
34
+ newRaw[key] = rawVal.optional();
35
+ }
36
+ else {
37
+ newRaw[key] = newSchema[key];
38
+ }
39
+ }
40
+ return new TexEngine(newSchema, newRaw, this.strict, this._isOptional);
41
+ }
42
+ pick(keys) {
43
+ const newSchema = {};
44
+ const newRaw = {};
45
+ for (const key of keys) {
46
+ if (this.schema[key]) {
47
+ newSchema[key] = this.schema[key];
48
+ newRaw[key] = this.rawSchema[key];
49
+ }
50
+ }
51
+ return new TexEngine(newSchema, newRaw, this.strict, this._isOptional);
52
+ }
53
+ omit(keys) {
54
+ const newSchema = {};
55
+ const newRaw = {};
56
+ for (const [key, val] of Object.entries(this.schema)) {
57
+ if (!keys.includes(key)) {
58
+ newSchema[key] = val;
59
+ newRaw[key] = this.rawSchema[key];
60
+ }
61
+ }
62
+ return new TexEngine(newSchema, newRaw, this.strict, this._isOptional);
63
+ }
64
+ parse(data) {
65
+ // 1. Apply defaults and run pre-validation sanitizers on the raw payload (if it's an object)
66
+ if (data && typeof data === 'object') {
67
+ for (const [key, val] of Object.entries(this.rawSchema)) {
68
+ // Apply default value / lazy factory function if field is omitted or undefined
69
+ if (data[key] === undefined) {
70
+ if (val instanceof tex_types_1.TexType && val.defaultValue !== undefined) {
71
+ data[key] =
72
+ typeof val.defaultValue === 'function'
73
+ ? val.defaultValue()
74
+ : val.defaultValue;
75
+ }
76
+ }
77
+ if (typeof data[key] === 'string' && data[key].trim() === '') {
78
+ const raw = val instanceof tex_types_1.TexType ? val._raw : String(val);
79
+ if (raw.includes('optional') ||
80
+ raw.includes('nullable') ||
81
+ raw.includes('nullish') ||
82
+ raw.includes('?') ||
83
+ val?._isOptional) {
84
+ if (raw.includes('nullable') &&
85
+ !raw.includes('optional') &&
86
+ !raw.includes('nullish')) {
87
+ data[key] = null;
88
+ }
89
+ else {
90
+ delete data[key];
91
+ // If deleted but default is defined, apply default
92
+ if (val instanceof tex_types_1.TexType && val.defaultValue !== undefined) {
93
+ data[key] =
94
+ typeof val.defaultValue === 'function'
95
+ ? val.defaultValue()
96
+ : val.defaultValue;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ if (data[key] !== undefined && data[key] !== null) {
102
+ if (val instanceof tex_types_1.TexType && val._raw.startsWith('date')) {
103
+ if (val._raw.includes('coerce')) {
104
+ if (typeof data[key] === 'string' ||
105
+ typeof data[key] === 'number') {
106
+ const d = new Date(data[key]);
107
+ if (isNaN(d.getTime())) {
108
+ throw new error_1.ValidatorError([
109
+ {
110
+ path: key,
111
+ message: 'Must be a valid date',
112
+ expected: 'valid date string or timestamp',
113
+ received: (0, error_1.formatReceivedValue)(data[key]),
114
+ code: 'INVALID_DATE',
115
+ },
116
+ ]);
117
+ }
118
+ data[key] = d;
119
+ }
120
+ }
121
+ if (!(data[key] instanceof Date) &&
122
+ typeof data[key] !== 'string' &&
123
+ typeof data[key] !== 'number') {
124
+ throw new error_1.ValidatorError([
125
+ {
126
+ path: key,
127
+ message: 'Must be a valid date',
128
+ expected: 'valid date or date string',
129
+ received: (0, error_1.formatReceivedValue)(data[key]),
130
+ code: 'INVALID_TYPE',
131
+ },
132
+ ]);
133
+ }
134
+ if (data[key] instanceof Date && isNaN(data[key].getTime())) {
135
+ throw new error_1.ValidatorError([
136
+ {
137
+ path: key,
138
+ message: 'Must be a valid date',
139
+ expected: 'valid date string or timestamp',
140
+ received: (0, error_1.formatReceivedValue)(data[key]),
141
+ code: 'INVALID_DATE',
142
+ },
143
+ ]);
144
+ }
145
+ if (val._raw.includes('minDate:')) {
146
+ const minStr = val._raw.match(/minDate:([^\s|]+)/)?.[1];
147
+ if (minStr &&
148
+ new Date(data[key]).getTime() < new Date(minStr).getTime()) {
149
+ throw new error_1.ValidatorError([
150
+ {
151
+ path: key,
152
+ message: `Date must be after ${minStr}`,
153
+ expected: `>= ${minStr}`,
154
+ received: (0, error_1.formatReceivedValue)(data[key]),
155
+ code: 'DATE_TOO_EARLY',
156
+ },
157
+ ]);
158
+ }
159
+ }
160
+ if (val._raw.includes('maxDate:')) {
161
+ const maxStr = val._raw.match(/maxDate:([^\s|]+)/)?.[1];
162
+ if (maxStr &&
163
+ new Date(data[key]).getTime() > new Date(maxStr).getTime()) {
164
+ throw new error_1.ValidatorError([
165
+ {
166
+ path: key,
167
+ message: `Date must be before ${maxStr}`,
168
+ expected: `<= ${maxStr}`,
169
+ received: (0, error_1.formatReceivedValue)(data[key]),
170
+ code: 'DATE_TOO_LATE',
171
+ },
172
+ ]);
173
+ }
174
+ }
175
+ }
176
+ if (val instanceof tex_types_1.TexType &&
177
+ val._raw.startsWith('array<') &&
178
+ val._raw.includes('coerce')) {
179
+ if (!Array.isArray(data[key])) {
180
+ if (typeof data[key] === 'string') {
181
+ const parts = data[key].includes(',')
182
+ ? data[key].split(',').map((s) => s.trim())
183
+ : [data[key]];
184
+ if (val._raw.startsWith('array<number')) {
185
+ data[key] = parts.map((p) => {
186
+ const n = Number(p);
187
+ return isNaN(n) ? p : n;
188
+ });
189
+ }
190
+ else if (val._raw.startsWith('array<boolean')) {
191
+ data[key] = parts.map((p) => {
192
+ if (p.toLowerCase() === 'true')
193
+ return true;
194
+ if (p.toLowerCase() === 'false')
195
+ return false;
196
+ return p;
197
+ });
198
+ }
199
+ else {
200
+ data[key] = parts;
201
+ }
202
+ }
203
+ else {
204
+ data[key] = [data[key]];
205
+ }
206
+ }
207
+ else {
208
+ if (val._raw.startsWith('array<number')) {
209
+ data[key] = data[key].map((item) => {
210
+ if (typeof item === 'string') {
211
+ const n = Number(item);
212
+ return isNaN(n) ? item : n;
213
+ }
214
+ return item;
215
+ });
216
+ }
217
+ else if (val._raw.startsWith('array<boolean')) {
218
+ data[key] = data[key].map((item) => {
219
+ if (typeof item === 'string') {
220
+ if (item.toLowerCase() === 'true')
221
+ return true;
222
+ if (item.toLowerCase() === 'false')
223
+ return false;
224
+ }
225
+ return item;
226
+ });
227
+ }
228
+ }
229
+ }
230
+ if (val instanceof tex_types_1.TexType && val.sanitizers.length > 0) {
231
+ for (const s of val.sanitizers) {
232
+ if (data[key] === undefined || data[key] === null)
233
+ break;
234
+ data[key] = s(data[key]);
235
+ }
236
+ }
237
+ const itemSchema = val?._item;
238
+ if (itemSchema && Array.isArray(data[key])) {
239
+ if (itemSchema instanceof tex_types_1.TexType &&
240
+ itemSchema.sanitizers.length > 0) {
241
+ for (let i = 0; i < data[key].length; i++) {
242
+ if (data[key][i] !== undefined && data[key][i] !== null) {
243
+ for (const s of itemSchema.sanitizers) {
244
+ if (data[key][i] === undefined || data[key][i] === null)
245
+ break;
246
+ data[key][i] = s(data[key][i]);
247
+ }
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }
253
+ }
254
+ }
255
+ // 2. Rust Validation
256
+ let parsedData;
257
+ try {
258
+ parsedData = this.validator.parse(data);
259
+ }
260
+ catch (err) {
261
+ if (data === process.env &&
262
+ (process.env.__EXIS_SKIP_ENV_CHECK === 'true' ||
263
+ process.env.EXIS_SKIP_ENV_CHECK === 'true')) {
264
+ const mock = { ...data };
265
+ for (const [key, val] of Object.entries(this.rawSchema)) {
266
+ if (mock[key] === undefined) {
267
+ const raw = val instanceof tex_types_1.TexType ? val._raw : String(val);
268
+ if (raw.includes('number'))
269
+ mock[key] = 0;
270
+ else if (raw.includes('boolean'))
271
+ mock[key] = false;
272
+ else if (raw.includes('array'))
273
+ mock[key] = [];
274
+ else
275
+ mock[key] = `mock_${key}`;
276
+ }
277
+ }
278
+ return mock;
279
+ }
280
+ let path = 'root';
281
+ let message = err.message || 'Validation failed';
282
+ let expected;
283
+ let code = 'VALIDATION_ERROR';
284
+ if (message.startsWith('Missing required field: ')) {
285
+ path = message.replace('Missing required field: ', '').trim();
286
+ message = 'Expected value, received undefined';
287
+ expected = 'defined';
288
+ code = 'MISSING_REQUIRED_FIELD';
289
+ }
290
+ else if (message.startsWith("Field '")) {
291
+ const match = message.match(/Field '([^']+)' (.+)/);
292
+ if (match) {
293
+ path = match[1];
294
+ const constraint = match[2];
295
+ message = constraint.charAt(0).toUpperCase() + constraint.slice(1);
296
+ if (constraint.startsWith('must be a string')) {
297
+ expected = 'string';
298
+ code = 'INVALID_TYPE';
299
+ }
300
+ else if (constraint.startsWith('must be a number')) {
301
+ expected = 'number';
302
+ code = 'INVALID_TYPE';
303
+ }
304
+ else if (constraint.startsWith('must be a boolean')) {
305
+ expected = 'boolean';
306
+ code = 'INVALID_TYPE';
307
+ }
308
+ else if (constraint.startsWith('must be an array') ||
309
+ constraint.includes('array must have') ||
310
+ constraint.includes('array exceeds')) {
311
+ expected = 'array';
312
+ code = constraint.includes('array must have')
313
+ ? 'ARRAY_TOO_SHORT'
314
+ : constraint.includes('array exceeds')
315
+ ? 'ARRAY_TOO_LONG'
316
+ : 'INVALID_TYPE';
317
+ }
318
+ else if (constraint.startsWith('must be an object')) {
319
+ expected = 'object';
320
+ code = 'INVALID_TYPE';
321
+ }
322
+ else if (constraint.startsWith('must be a valid email')) {
323
+ expected = 'valid email address';
324
+ code = 'INVALID_EMAIL';
325
+ }
326
+ else if (constraint.startsWith('must be one of')) {
327
+ expected = constraint.replace('must be one of', '').trim();
328
+ code = 'INVALID_ENUM_VALUE';
329
+ }
330
+ else if (constraint.startsWith('must be at least') ||
331
+ constraint.startsWith('must be >=')) {
332
+ expected = constraint;
333
+ code = 'VALUE_TOO_SMALL';
334
+ }
335
+ else if (constraint.startsWith('must be at most') ||
336
+ constraint.startsWith('must be <=')) {
337
+ expected = constraint;
338
+ code = 'VALUE_TOO_LARGE';
339
+ }
340
+ else if (constraint.startsWith('must contain a number')) {
341
+ expected = 'must contain at least one digit';
342
+ code = 'PASSWORD_REQUIRES_NUMBER';
343
+ }
344
+ else if (constraint.startsWith('must contain an uppercase')) {
345
+ expected = 'must contain at least one uppercase letter';
346
+ code = 'PASSWORD_REQUIRES_UPPERCASE';
347
+ }
348
+ else if (constraint.startsWith('must contain a lowercase')) {
349
+ expected = 'must contain at least one lowercase letter';
350
+ code = 'PASSWORD_REQUIRES_LOWERCASE';
351
+ }
352
+ else if (constraint.startsWith('must contain a symbol')) {
353
+ expected = 'must contain at least one symbol';
354
+ code = 'PASSWORD_REQUIRES_SYMBOL';
355
+ }
356
+ else {
357
+ expected = constraint;
358
+ }
359
+ }
360
+ }
361
+ else if (message.startsWith("Strict mode error: Unknown field '")) {
362
+ const match = message.match(/Strict mode error: Unknown field '([^']+)'(?: at path '([^']*)')?/);
363
+ if (match) {
364
+ const key = match[1];
365
+ const parentPath = match[2];
366
+ path =
367
+ parentPath && parentPath.length > 0 ? `${parentPath}.${key}` : key;
368
+ message = 'Unknown field not allowed in strict mode';
369
+ expected = 'undefined (field omitted)';
370
+ code = 'UNRECOGNIZED_KEYS';
371
+ }
372
+ }
373
+ const receivedRaw = (0, error_1.getNestedValue)(data, path);
374
+ const received = (0, error_1.formatReceivedValue)(receivedRaw);
375
+ throw new error_1.ValidatorError([{ path, message, expected, received, code }]);
376
+ }
377
+ // Preserve Date objects and ensure defaults are applied
378
+ if (parsedData && typeof parsedData === 'object') {
379
+ for (const [key, val] of Object.entries(this.rawSchema)) {
380
+ if (parsedData[key] === undefined &&
381
+ val instanceof tex_types_1.TexType &&
382
+ val.defaultValue !== undefined) {
383
+ parsedData[key] =
384
+ typeof val.defaultValue === 'function'
385
+ ? val.defaultValue()
386
+ : val.defaultValue;
387
+ }
388
+ if (val instanceof tex_types_1.TexType &&
389
+ val._raw.startsWith('date') &&
390
+ data &&
391
+ data[key] instanceof Date) {
392
+ parsedData[key] = data[key];
393
+ }
394
+ }
395
+ }
396
+ // 3. Post-validation synchronous refinements
397
+ const errors = [];
398
+ if (parsedData && typeof parsedData === 'object') {
399
+ for (const [key, val] of Object.entries(this.rawSchema)) {
400
+ if (parsedData[key] !== undefined) {
401
+ const isNullableField = val instanceof tex_types_1.TexType &&
402
+ (val._raw.includes('nullable') || val._raw.includes('nullish'));
403
+ if (parsedData[key] === null && isNullableField) {
404
+ continue;
405
+ }
406
+ if (val instanceof tex_types_1.TexType && val.refinements.length > 0) {
407
+ for (const r of val.refinements) {
408
+ if (!r.async && !r.fn(parsedData[key])) {
409
+ const msg = typeof r.message === 'function'
410
+ ? r.message(parsedData[key])
411
+ : r.message || 'Invalid value';
412
+ errors.push({
413
+ path: key,
414
+ message: msg,
415
+ expected: 'custom refinement rule',
416
+ received: (0, error_1.formatReceivedValue)(parsedData[key]),
417
+ code: 'CUSTOM_VALIDATION',
418
+ });
419
+ }
420
+ }
421
+ }
422
+ const itemSchema = val?._item;
423
+ if (itemSchema && Array.isArray(parsedData[key])) {
424
+ if (itemSchema instanceof tex_types_1.TexType &&
425
+ itemSchema.refinements.length > 0) {
426
+ const isItemNullable = itemSchema._raw.includes('nullable') ||
427
+ itemSchema._raw.includes('nullish');
428
+ for (let i = 0; i < parsedData[key].length; i++) {
429
+ if (parsedData[key][i] === null && isItemNullable)
430
+ continue;
431
+ for (const r of itemSchema.refinements) {
432
+ if (!r.async && !r.fn(parsedData[key][i])) {
433
+ const msg = typeof r.message === 'function'
434
+ ? r.message(parsedData[key][i])
435
+ : r.message || 'Invalid value';
436
+ errors.push({
437
+ path: `${key}[${i}]`,
438
+ message: msg,
439
+ expected: 'custom refinement rule',
440
+ received: (0, error_1.formatReceivedValue)(parsedData[key][i]),
441
+ code: 'CUSTOM_VALIDATION',
442
+ });
443
+ }
444
+ }
445
+ }
446
+ }
447
+ }
448
+ }
449
+ }
450
+ }
451
+ if (errors.length > 0)
452
+ throw new error_1.ValidatorError(errors);
453
+ return parsedData;
454
+ }
455
+ async parseAsync(data) {
456
+ const parsed = this.parse(data); // Handles sync sanitizers + rust + sync refine
457
+ const errors = [];
458
+ if (parsed && typeof parsed === 'object') {
459
+ await Promise.all(Object.entries(this.rawSchema).map(async ([key, val]) => {
460
+ const valData = parsed[key];
461
+ const isNullableField = val instanceof tex_types_1.TexType &&
462
+ (val._raw.includes('nullable') || val._raw.includes('nullish'));
463
+ if (valData === null && isNullableField)
464
+ return;
465
+ if (valData !== undefined &&
466
+ val instanceof tex_types_1.TexType &&
467
+ val.refinements.length > 0) {
468
+ for (const r of val.refinements) {
469
+ if (r.async && !(await r.fn(valData))) {
470
+ const msg = typeof r.message === 'function'
471
+ ? r.message(valData)
472
+ : r.message || 'Invalid value';
473
+ errors.push({
474
+ path: key,
475
+ message: msg,
476
+ expected: 'custom async refinement rule',
477
+ received: (0, error_1.formatReceivedValue)(valData),
478
+ code: 'CUSTOM_VALIDATION',
479
+ });
480
+ }
481
+ }
482
+ }
483
+ }));
484
+ }
485
+ if (errors.length > 0)
486
+ throw new error_1.ValidatorError(errors);
487
+ return parsed;
488
+ }
489
+ toMongoSchema() {
490
+ const schemaDef = {};
491
+ for (const [key, rawDef] of Object.entries(this.schema)) {
492
+ const typeStr = rawDef.split('|')[0].trim();
493
+ const isOptional = typeStr.endsWith('?');
494
+ const baseType = typeStr.replace('?', '');
495
+ const field = {};
496
+ if (baseType.startsWith('string') ||
497
+ baseType.startsWith('email') ||
498
+ baseType.startsWith('uuid') ||
499
+ baseType.startsWith('cuid') ||
500
+ baseType.startsWith('password')) {
501
+ field.type = String;
502
+ }
503
+ else if (baseType.startsWith('number')) {
504
+ field.type = Number;
505
+ }
506
+ else if (baseType.startsWith('boolean')) {
507
+ field.type = Boolean;
508
+ }
509
+ else if (baseType.startsWith('date')) {
510
+ field.type = Date;
511
+ }
512
+ else {
513
+ field.type = Object; // 'Mixed' essentially or nested
514
+ }
515
+ if (!isOptional)
516
+ field.required = true;
517
+ schemaDef[key] = field;
518
+ }
519
+ return schemaDef;
520
+ }
521
+ toOpenApi() {
522
+ const properties = {};
523
+ const required = [];
524
+ for (const [key, rawDef] of Object.entries(this.schema)) {
525
+ const typeStr = rawDef.split('|')[0].trim();
526
+ const isOptional = typeStr.endsWith('?');
527
+ const baseType = typeStr.replace('?', '');
528
+ const prop = {};
529
+ if (baseType.startsWith('string') ||
530
+ baseType.startsWith('uuid') ||
531
+ baseType.startsWith('cuid') ||
532
+ baseType.startsWith('password')) {
533
+ prop.type = 'string';
534
+ }
535
+ else if (baseType.startsWith('email')) {
536
+ prop.type = 'string';
537
+ prop.format = 'email';
538
+ }
539
+ else if (baseType.startsWith('number')) {
540
+ prop.type = 'number';
541
+ }
542
+ else if (baseType.startsWith('boolean')) {
543
+ prop.type = 'boolean';
544
+ }
545
+ else if (baseType.startsWith('date')) {
546
+ prop.type = 'string';
547
+ }
548
+ else if (baseType.startsWith('array<')) {
549
+ prop.type = 'array';
550
+ }
551
+ else if (baseType.startsWith('enum:')) {
552
+ prop.type = 'string';
553
+ }
554
+ else {
555
+ prop.type = 'object';
556
+ }
557
+ properties[key] = prop;
558
+ if (!isOptional)
559
+ required.push(key);
560
+ }
561
+ const result = { type: 'object', properties };
562
+ if (required.length > 0)
563
+ result.required = required;
564
+ return result;
565
+ }
566
+ }
567
+ exports.TexEngine = TexEngine;
568
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/validator/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ValidationErrorDescriptor } from './types';
2
+ export declare function getNestedValue(obj: any, path: string): any;
3
+ export declare function formatReceivedValue(val: any): string;
4
+ export declare class ValidatorError extends Error {
5
+ readonly errors: ValidationErrorDescriptor[];
6
+ httpPart?: string;
7
+ routePath?: string;
8
+ routeMethod?: string;
9
+ received?: any;
10
+ constructor(errors: ValidationErrorDescriptor[]);
11
+ }
12
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/validator/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAExD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAc1D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAsBpD;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,MAAM,EAAE,yBAAyB,EAAE,CAAA;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAA;gBAET,MAAM,EAAE,yBAAyB,EAAE;CAQhD"}