exisjs 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/build.js +11 -9
  3. package/dist/cli/commands/build.js.map +1 -1
  4. package/dist/cli/commands/dev.d.ts.map +1 -1
  5. package/dist/cli/commands/dev.js +34 -36
  6. package/dist/cli/commands/dev.js.map +1 -1
  7. package/dist/cli/commands/exports.d.ts.map +1 -1
  8. package/dist/cli/commands/exports.js +5 -32
  9. package/dist/cli/commands/exports.js.map +1 -1
  10. package/dist/cli/commands/generate.d.ts +2 -13
  11. package/dist/cli/commands/generate.d.ts.map +1 -1
  12. package/dist/cli/commands/generate.js +27 -60
  13. package/dist/cli/commands/generate.js.map +1 -1
  14. package/dist/cli/commands/init.d.ts.map +1 -1
  15. package/dist/cli/commands/init.js +4 -4
  16. package/dist/cli/commands/init.js.map +1 -1
  17. package/dist/cli/commands/start.d.ts.map +1 -1
  18. package/dist/cli/commands/start.js +2 -6
  19. package/dist/cli/commands/start.js.map +1 -1
  20. package/dist/cli/index.js +11 -23
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/routes.d.ts.map +1 -1
  23. package/dist/cli/routes.js +20 -8
  24. package/dist/cli/routes.js.map +1 -1
  25. package/dist/config/config.d.ts +2 -1
  26. package/dist/config/config.d.ts.map +1 -1
  27. package/dist/config/config.js +3 -2
  28. package/dist/config/config.js.map +1 -1
  29. package/dist/config/types.d.ts +7 -2
  30. package/dist/config/types.d.ts.map +1 -1
  31. package/dist/decorators/constants.d.ts +2 -2
  32. package/dist/decorators/constants.d.ts.map +1 -1
  33. package/dist/decorators/constants.js +2 -2
  34. package/dist/decorators/constants.js.map +1 -1
  35. package/dist/decorators/core.d.ts +4 -3
  36. package/dist/decorators/core.d.ts.map +1 -1
  37. package/dist/decorators/core.js +7 -4
  38. package/dist/decorators/core.js.map +1 -1
  39. package/dist/decorators/middleware.d.ts +0 -10
  40. package/dist/decorators/middleware.d.ts.map +1 -1
  41. package/dist/decorators/middleware.js +0 -25
  42. package/dist/decorators/middleware.js.map +1 -1
  43. package/dist/decorators/routing.d.ts +0 -2
  44. package/dist/decorators/routing.d.ts.map +1 -1
  45. package/dist/decorators/routing.js +1 -3
  46. package/dist/decorators/routing.js.map +1 -1
  47. package/dist/di/inject.d.ts +1 -2
  48. package/dist/di/inject.d.ts.map +1 -1
  49. package/dist/di/inject.js.map +1 -1
  50. package/dist/docs/ARCHITECTURE.md +46 -285
  51. package/dist/docs/BENCHMARKS.md +5 -5
  52. package/dist/docs/README.md +8 -11
  53. package/dist/docs/content/boundaries.mdx +151 -0
  54. package/dist/docs/content/cli/commands.mdx +66 -104
  55. package/dist/docs/content/cli/overview.mdx +37 -47
  56. package/dist/docs/content/cli/usage.mdx +29 -15
  57. package/dist/docs/content/decorators.mdx +107 -80
  58. package/dist/docs/content/installation.mdx +20 -1
  59. package/dist/docs/content/middleware.mdx +65 -291
  60. package/dist/docs/content/security.mdx +44 -246
  61. package/dist/docs/content/structure.mdx +227 -100
  62. package/dist/docs/content/validation.mdx +0 -17
  63. package/dist/docs/reference/decorators.mdx +24 -217
  64. package/dist/docs/reference/middleware.mdx +41 -217
  65. package/dist/docs/reference/validator.mdx +2 -5
  66. package/dist/error/errors.d.ts.map +1 -1
  67. package/dist/error/errors.js +16 -0
  68. package/dist/error/errors.js.map +1 -1
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +5 -2
  72. package/dist/index.js.map +1 -1
  73. package/dist/lib/start-repl.js +2 -4
  74. package/dist/lib/start-repl.js.map +1 -1
  75. package/dist/lib/start-server.js +12 -4
  76. package/dist/lib/start-server.js.map +1 -1
  77. package/dist/logger/index.d.ts +81 -0
  78. package/dist/logger/index.d.ts.map +1 -0
  79. package/dist/logger/index.js +142 -0
  80. package/dist/logger/index.js.map +1 -0
  81. package/dist/middleware/dedupe.d.ts +1 -1
  82. package/dist/middleware/dedupe.js +1 -1
  83. package/dist/middleware/middleware.d.ts +3 -5
  84. package/dist/middleware/middleware.d.ts.map +1 -1
  85. package/dist/middleware/middleware.js +2 -6
  86. package/dist/middleware/middleware.js.map +1 -1
  87. package/dist/router/{gateway.d.ts → boundary.d.ts} +21 -13
  88. package/dist/router/boundary.d.ts.map +1 -0
  89. package/dist/router/boundary.js +11 -0
  90. package/dist/router/boundary.js.map +1 -0
  91. package/dist/router/index.d.ts +3 -6
  92. package/dist/router/index.d.ts.map +1 -1
  93. package/dist/router/index.js +3 -7
  94. package/dist/router/index.js.map +1 -1
  95. package/dist/router/route-builder.d.ts +0 -28
  96. package/dist/router/route-builder.d.ts.map +1 -1
  97. package/dist/router/route-builder.js +0 -4
  98. package/dist/router/route-builder.js.map +1 -1
  99. package/dist/router/route-scanner.d.ts +1 -2
  100. package/dist/router/route-scanner.d.ts.map +1 -1
  101. package/dist/router/route-scanner.js +216 -193
  102. package/dist/router/route-scanner.js.map +1 -1
  103. package/dist/router/router.d.ts +4 -6
  104. package/dist/router/router.d.ts.map +1 -1
  105. package/dist/router/router.js +36 -72
  106. package/dist/router/router.js.map +1 -1
  107. package/dist/router/types.d.ts +2 -6
  108. package/dist/router/types.d.ts.map +1 -1
  109. package/dist/server/{bun-adapter.d.ts → adapters/bun-adapter.d.ts} +1 -1
  110. package/dist/server/adapters/bun-adapter.d.ts.map +1 -0
  111. package/dist/server/{bun-adapter.js → adapters/bun-adapter.js} +2 -24
  112. package/dist/server/adapters/bun-adapter.js.map +1 -0
  113. package/dist/server/{uws-adapter.d.ts → adapters/uws-adapter.d.ts} +1 -1
  114. package/dist/server/adapters/uws-adapter.d.ts.map +1 -0
  115. package/dist/server/{uws-adapter.js → adapters/uws-adapter.js} +1 -28
  116. package/dist/server/adapters/uws-adapter.js.map +1 -0
  117. package/dist/server/app.d.ts +9 -30
  118. package/dist/server/app.d.ts.map +1 -1
  119. package/dist/server/app.js +19 -134
  120. package/dist/server/app.js.map +1 -1
  121. package/dist/server/bootstrapper.d.ts +4 -15
  122. package/dist/server/bootstrapper.d.ts.map +1 -1
  123. package/dist/server/bootstrapper.js +31 -222
  124. package/dist/server/bootstrapper.js.map +1 -1
  125. package/dist/server/define.d.ts +2 -2
  126. package/dist/server/define.d.ts.map +1 -1
  127. package/dist/server/define.js +3 -3
  128. package/dist/server/define.js.map +1 -1
  129. package/dist/server/engines/bun-engine.d.ts +16 -0
  130. package/dist/server/engines/bun-engine.d.ts.map +1 -0
  131. package/dist/server/engines/bun-engine.js +41 -0
  132. package/dist/server/engines/bun-engine.js.map +1 -0
  133. package/dist/server/engines/engine.d.ts +16 -0
  134. package/dist/server/engines/engine.d.ts.map +1 -0
  135. package/dist/{queue/types.js → server/engines/engine.js} +1 -1
  136. package/dist/server/engines/engine.js.map +1 -0
  137. package/dist/server/engines/node-engine.d.ts +22 -0
  138. package/dist/server/engines/node-engine.d.ts.map +1 -0
  139. package/dist/server/engines/node-engine.js +130 -0
  140. package/dist/server/engines/node-engine.js.map +1 -0
  141. package/dist/server/engines/uws-engine.d.ts +16 -0
  142. package/dist/server/engines/uws-engine.d.ts.map +1 -0
  143. package/dist/server/engines/uws-engine.js +48 -0
  144. package/dist/server/engines/uws-engine.js.map +1 -0
  145. package/dist/server/request-handler.d.ts +0 -1
  146. package/dist/server/request-handler.d.ts.map +1 -1
  147. package/dist/server/request-handler.js +74 -48
  148. package/dist/server/request-handler.js.map +1 -1
  149. package/dist/server/request.d.ts +0 -8
  150. package/dist/server/request.d.ts.map +1 -1
  151. package/dist/server/request.js +0 -16
  152. package/dist/server/request.js.map +1 -1
  153. package/dist/utils/time.d.ts +6 -0
  154. package/dist/utils/time.d.ts.map +1 -0
  155. package/dist/utils/time.js +15 -0
  156. package/dist/utils/time.js.map +1 -0
  157. package/dist/validator/index.d.ts +1 -7
  158. package/dist/validator/index.d.ts.map +1 -1
  159. package/dist/validator/index.js +1 -5
  160. package/dist/validator/index.js.map +1 -1
  161. package/dist/validator/tex-types.d.ts +15 -2
  162. package/dist/validator/tex-types.d.ts.map +1 -1
  163. package/dist/validator/tex-types.js +8 -0
  164. package/dist/validator/tex-types.js.map +1 -1
  165. package/dist/validator/tex.d.ts.map +1 -1
  166. package/dist/validator/tex.js +21 -2
  167. package/dist/validator/tex.js.map +1 -1
  168. package/package.json +9 -151
  169. package/dist/adapters/aws-lambda.d.ts +0 -21
  170. package/dist/adapters/aws-lambda.d.ts.map +0 -1
  171. package/dist/adapters/aws-lambda.js +0 -125
  172. package/dist/adapters/aws-lambda.js.map +0 -1
  173. package/dist/adapters/bun.d.ts +0 -9
  174. package/dist/adapters/bun.d.ts.map +0 -1
  175. package/dist/adapters/bun.js +0 -23
  176. package/dist/adapters/bun.js.map +0 -1
  177. package/dist/adapters/cloudflare.d.ts +0 -10
  178. package/dist/adapters/cloudflare.d.ts.map +0 -1
  179. package/dist/adapters/cloudflare.js +0 -22
  180. package/dist/adapters/cloudflare.js.map +0 -1
  181. package/dist/adapters/deno.d.ts +0 -7
  182. package/dist/adapters/deno.d.ts.map +0 -1
  183. package/dist/adapters/deno.js +0 -21
  184. package/dist/adapters/deno.js.map +0 -1
  185. package/dist/adapters/fastly.d.ts +0 -6
  186. package/dist/adapters/fastly.d.ts.map +0 -1
  187. package/dist/adapters/fastly.js +0 -20
  188. package/dist/adapters/fastly.js.map +0 -1
  189. package/dist/adapters/fetch.d.ts +0 -30
  190. package/dist/adapters/fetch.d.ts.map +0 -1
  191. package/dist/adapters/fetch.js +0 -119
  192. package/dist/adapters/fetch.js.map +0 -1
  193. package/dist/adapters/index.d.ts +0 -9
  194. package/dist/adapters/index.d.ts.map +0 -1
  195. package/dist/adapters/index.js +0 -28
  196. package/dist/adapters/index.js.map +0 -1
  197. package/dist/adapters/netlify.d.ts +0 -8
  198. package/dist/adapters/netlify.d.ts.map +0 -1
  199. package/dist/adapters/netlify.js +0 -20
  200. package/dist/adapters/netlify.js.map +0 -1
  201. package/dist/adapters/vercel.d.ts +0 -17
  202. package/dist/adapters/vercel.d.ts.map +0 -1
  203. package/dist/adapters/vercel.js +0 -23
  204. package/dist/adapters/vercel.js.map +0 -1
  205. package/dist/auth/index.d.ts +0 -8
  206. package/dist/auth/index.d.ts.map +0 -1
  207. package/dist/auth/index.js +0 -49
  208. package/dist/auth/index.js.map +0 -1
  209. package/dist/auth/jwt.d.ts +0 -20
  210. package/dist/auth/jwt.d.ts.map +0 -1
  211. package/dist/auth/jwt.js +0 -59
  212. package/dist/auth/jwt.js.map +0 -1
  213. package/dist/auth/oauth/core.d.ts +0 -96
  214. package/dist/auth/oauth/core.d.ts.map +0 -1
  215. package/dist/auth/oauth/core.js +0 -203
  216. package/dist/auth/oauth/core.js.map +0 -1
  217. package/dist/auth/oauth/index.d.ts +0 -45
  218. package/dist/auth/oauth/index.d.ts.map +0 -1
  219. package/dist/auth/oauth/index.js +0 -64
  220. package/dist/auth/oauth/index.js.map +0 -1
  221. package/dist/auth/oauth/middleware.d.ts +0 -63
  222. package/dist/auth/oauth/middleware.d.ts.map +0 -1
  223. package/dist/auth/oauth/middleware.js +0 -164
  224. package/dist/auth/oauth/middleware.js.map +0 -1
  225. package/dist/auth/oauth/providers/custom.d.ts +0 -41
  226. package/dist/auth/oauth/providers/custom.d.ts.map +0 -1
  227. package/dist/auth/oauth/providers/custom.js +0 -204
  228. package/dist/auth/oauth/providers/custom.js.map +0 -1
  229. package/dist/auth/oauth/providers/discord.d.ts +0 -23
  230. package/dist/auth/oauth/providers/discord.d.ts.map +0 -1
  231. package/dist/auth/oauth/providers/discord.js +0 -130
  232. package/dist/auth/oauth/providers/discord.js.map +0 -1
  233. package/dist/auth/oauth/providers/facebook.d.ts +0 -28
  234. package/dist/auth/oauth/providers/facebook.d.ts.map +0 -1
  235. package/dist/auth/oauth/providers/facebook.js +0 -124
  236. package/dist/auth/oauth/providers/facebook.js.map +0 -1
  237. package/dist/auth/oauth/providers/github.d.ts +0 -25
  238. package/dist/auth/oauth/providers/github.d.ts.map +0 -1
  239. package/dist/auth/oauth/providers/github.js +0 -132
  240. package/dist/auth/oauth/providers/github.js.map +0 -1
  241. package/dist/auth/oauth/providers/google.d.ts +0 -23
  242. package/dist/auth/oauth/providers/google.d.ts.map +0 -1
  243. package/dist/auth/oauth/providers/google.js +0 -134
  244. package/dist/auth/oauth/providers/google.js.map +0 -1
  245. package/dist/auth/oauth/providers/microsoft.d.ts +0 -28
  246. package/dist/auth/oauth/providers/microsoft.d.ts.map +0 -1
  247. package/dist/auth/oauth/providers/microsoft.js +0 -136
  248. package/dist/auth/oauth/providers/microsoft.js.map +0 -1
  249. package/dist/auth/oauth/types.d.ts +0 -158
  250. package/dist/auth/oauth/types.d.ts.map +0 -1
  251. package/dist/auth/oauth/types.js +0 -4
  252. package/dist/auth/oauth/types.js.map +0 -1
  253. package/dist/auth/password.d.ts +0 -25
  254. package/dist/auth/password.d.ts.map +0 -1
  255. package/dist/auth/password.js +0 -93
  256. package/dist/auth/password.js.map +0 -1
  257. package/dist/auth/rbac.d.ts +0 -10
  258. package/dist/auth/rbac.d.ts.map +0 -1
  259. package/dist/auth/rbac.js +0 -34
  260. package/dist/auth/rbac.js.map +0 -1
  261. package/dist/auth/session.d.ts +0 -26
  262. package/dist/auth/session.d.ts.map +0 -1
  263. package/dist/auth/session.js +0 -134
  264. package/dist/auth/session.js.map +0 -1
  265. package/dist/cache/index.d.ts +0 -4
  266. package/dist/cache/index.d.ts.map +0 -1
  267. package/dist/cache/index.js +0 -25
  268. package/dist/cache/index.js.map +0 -1
  269. package/dist/cache/store.d.ts +0 -58
  270. package/dist/cache/store.d.ts.map +0 -1
  271. package/dist/cache/store.js +0 -298
  272. package/dist/cache/store.js.map +0 -1
  273. package/dist/cron/parser.d.ts +0 -2
  274. package/dist/cron/parser.d.ts.map +0 -1
  275. package/dist/cron/parser.js +0 -52
  276. package/dist/cron/parser.js.map +0 -1
  277. package/dist/cron/scheduler.d.ts +0 -23
  278. package/dist/cron/scheduler.d.ts.map +0 -1
  279. package/dist/cron/scheduler.js +0 -114
  280. package/dist/cron/scheduler.js.map +0 -1
  281. package/dist/database/adapters/mongodb.d.ts +0 -58
  282. package/dist/database/adapters/mongodb.d.ts.map +0 -1
  283. package/dist/database/adapters/mongodb.js +0 -264
  284. package/dist/database/adapters/mongodb.js.map +0 -1
  285. package/dist/database/adapters/mysql.d.ts +0 -27
  286. package/dist/database/adapters/mysql.d.ts.map +0 -1
  287. package/dist/database/adapters/mysql.js +0 -188
  288. package/dist/database/adapters/mysql.js.map +0 -1
  289. package/dist/database/adapters/postgres.d.ts +0 -28
  290. package/dist/database/adapters/postgres.d.ts.map +0 -1
  291. package/dist/database/adapters/postgres.js +0 -174
  292. package/dist/database/adapters/postgres.js.map +0 -1
  293. package/dist/database/adapters/sqlite.d.ts +0 -27
  294. package/dist/database/adapters/sqlite.d.ts.map +0 -1
  295. package/dist/database/adapters/sqlite.js +0 -149
  296. package/dist/database/adapters/sqlite.js.map +0 -1
  297. package/dist/database/index.d.ts +0 -42
  298. package/dist/database/index.d.ts.map +0 -1
  299. package/dist/database/index.js +0 -58
  300. package/dist/database/index.js.map +0 -1
  301. package/dist/database/manager.d.ts +0 -141
  302. package/dist/database/manager.d.ts.map +0 -1
  303. package/dist/database/manager.js +0 -337
  304. package/dist/database/manager.js.map +0 -1
  305. package/dist/database/migration.d.ts +0 -57
  306. package/dist/database/migration.d.ts.map +0 -1
  307. package/dist/database/migration.js +0 -329
  308. package/dist/database/migration.js.map +0 -1
  309. package/dist/database/query-builder.d.ts +0 -95
  310. package/dist/database/query-builder.d.ts.map +0 -1
  311. package/dist/database/query-builder.js +0 -404
  312. package/dist/database/query-builder.js.map +0 -1
  313. package/dist/database/sql/index.d.ts +0 -18
  314. package/dist/database/sql/index.d.ts.map +0 -1
  315. package/dist/database/sql/index.js +0 -74
  316. package/dist/database/sql/index.js.map +0 -1
  317. package/dist/database/sql/schema.d.ts +0 -38
  318. package/dist/database/sql/schema.d.ts.map +0 -1
  319. package/dist/database/sql/schema.js +0 -80
  320. package/dist/database/sql/schema.js.map +0 -1
  321. package/dist/database/synchronizer.d.ts +0 -12
  322. package/dist/database/synchronizer.d.ts.map +0 -1
  323. package/dist/database/synchronizer.js +0 -82
  324. package/dist/database/synchronizer.js.map +0 -1
  325. package/dist/database/types.d.ts +0 -184
  326. package/dist/database/types.d.ts.map +0 -1
  327. package/dist/database/types.js +0 -4
  328. package/dist/database/types.js.map +0 -1
  329. package/dist/dataloader/dataloader.d.ts +0 -23
  330. package/dist/dataloader/dataloader.d.ts.map +0 -1
  331. package/dist/dataloader/dataloader.js +0 -98
  332. package/dist/dataloader/dataloader.js.map +0 -1
  333. package/dist/dataloader/index.d.ts +0 -3
  334. package/dist/dataloader/index.d.ts.map +0 -1
  335. package/dist/dataloader/index.js +0 -19
  336. package/dist/dataloader/index.js.map +0 -1
  337. package/dist/dataloader/registry.d.ts +0 -17
  338. package/dist/dataloader/registry.d.ts.map +0 -1
  339. package/dist/dataloader/registry.js +0 -47
  340. package/dist/dataloader/registry.js.map +0 -1
  341. package/dist/dev/dep-graph.d.ts +0 -2
  342. package/dist/dev/dep-graph.d.ts.map +0 -1
  343. package/dist/dev/dep-graph.js +0 -111
  344. package/dist/dev/dep-graph.js.map +0 -1
  345. package/dist/dev/hot-reload.d.ts +0 -30
  346. package/dist/dev/hot-reload.d.ts.map +0 -1
  347. package/dist/dev/hot-reload.js +0 -262
  348. package/dist/dev/hot-reload.js.map +0 -1
  349. package/dist/docs/content/adapters.mdx +0 -199
  350. package/dist/docs/content/cache.mdx +0 -239
  351. package/dist/docs/content/circuit-breaker.mdx +0 -130
  352. package/dist/docs/content/cron.mdx +0 -109
  353. package/dist/docs/content/database.mdx +0 -278
  354. package/dist/docs/content/gateways.mdx +0 -376
  355. package/dist/docs/content/oauth.mdx +0 -179
  356. package/dist/docs/content/queues.mdx +0 -177
  357. package/dist/docs/content/rpc.mdx +0 -146
  358. package/dist/docs/content/sse.mdx +0 -159
  359. package/dist/docs/content/websockets.mdx +0 -289
  360. package/dist/docs/integrations/README.md +0 -23
  361. package/dist/docs/integrations/jwt.mdx +0 -151
  362. package/dist/docs/integrations/mongo.mdx +0 -183
  363. package/dist/docs/integrations/observability.mdx +0 -125
  364. package/dist/docs/integrations/openai.mdx +0 -108
  365. package/dist/docs/integrations/postgres.mdx +0 -190
  366. package/dist/docs/integrations/posthog.mdx +0 -122
  367. package/dist/docs/integrations/redis.mdx +0 -141
  368. package/dist/docs/integrations/resend.mdx +0 -117
  369. package/dist/docs/integrations/s3.mdx +0 -122
  370. package/dist/docs/integrations/swagger.mdx +0 -113
  371. package/dist/docs/reference/adapters.mdx +0 -130
  372. package/dist/docs/reference/auth.mdx +0 -183
  373. package/dist/docs/reference/cache.mdx +0 -132
  374. package/dist/docs/reference/circuit-breaker.mdx +0 -71
  375. package/dist/docs/reference/queue.mdx +0 -155
  376. package/dist/docs/reference/storage.mdx +0 -116
  377. package/dist/docs/reference/swagger.mdx +0 -132
  378. package/dist/integrations/drizzle.d.ts +0 -10
  379. package/dist/integrations/drizzle.d.ts.map +0 -1
  380. package/dist/integrations/drizzle.js +0 -34
  381. package/dist/integrations/drizzle.js.map +0 -1
  382. package/dist/integrations/jwt.d.ts +0 -12
  383. package/dist/integrations/jwt.d.ts.map +0 -1
  384. package/dist/integrations/jwt.js +0 -29
  385. package/dist/integrations/jwt.js.map +0 -1
  386. package/dist/integrations/mongodb.d.ts +0 -13
  387. package/dist/integrations/mongodb.d.ts.map +0 -1
  388. package/dist/integrations/mongodb.js +0 -48
  389. package/dist/integrations/mongodb.js.map +0 -1
  390. package/dist/integrations/mongoose.d.ts +0 -13
  391. package/dist/integrations/mongoose.d.ts.map +0 -1
  392. package/dist/integrations/mongoose.js +0 -84
  393. package/dist/integrations/mongoose.js.map +0 -1
  394. package/dist/integrations/openai.d.ts +0 -12
  395. package/dist/integrations/openai.d.ts.map +0 -1
  396. package/dist/integrations/openai.js +0 -47
  397. package/dist/integrations/openai.js.map +0 -1
  398. package/dist/integrations/postgres.d.ts +0 -13
  399. package/dist/integrations/postgres.d.ts.map +0 -1
  400. package/dist/integrations/postgres.js +0 -55
  401. package/dist/integrations/postgres.js.map +0 -1
  402. package/dist/integrations/posthog.d.ts +0 -13
  403. package/dist/integrations/posthog.d.ts.map +0 -1
  404. package/dist/integrations/posthog.js +0 -49
  405. package/dist/integrations/posthog.js.map +0 -1
  406. package/dist/integrations/prisma.d.ts +0 -10
  407. package/dist/integrations/prisma.d.ts.map +0 -1
  408. package/dist/integrations/prisma.js +0 -39
  409. package/dist/integrations/prisma.js.map +0 -1
  410. package/dist/integrations/redis.d.ts +0 -12
  411. package/dist/integrations/redis.d.ts.map +0 -1
  412. package/dist/integrations/redis.js +0 -48
  413. package/dist/integrations/redis.js.map +0 -1
  414. package/dist/integrations/resend.d.ts +0 -12
  415. package/dist/integrations/resend.d.ts.map +0 -1
  416. package/dist/integrations/resend.js +0 -47
  417. package/dist/integrations/resend.js.map +0 -1
  418. package/dist/integrations/s3.d.ts +0 -15
  419. package/dist/integrations/s3.d.ts.map +0 -1
  420. package/dist/integrations/s3.js +0 -60
  421. package/dist/integrations/s3.js.map +0 -1
  422. package/dist/integrations/supabase.d.ts +0 -13
  423. package/dist/integrations/supabase.d.ts.map +0 -1
  424. package/dist/integrations/supabase.js +0 -51
  425. package/dist/integrations/supabase.js.map +0 -1
  426. package/dist/middleware/cache.d.ts +0 -21
  427. package/dist/middleware/cache.d.ts.map +0 -1
  428. package/dist/middleware/cache.js +0 -156
  429. package/dist/middleware/cache.js.map +0 -1
  430. package/dist/observability/health.d.ts +0 -23
  431. package/dist/observability/health.d.ts.map +0 -1
  432. package/dist/observability/health.js +0 -49
  433. package/dist/observability/health.js.map +0 -1
  434. package/dist/observability/index.d.ts +0 -4
  435. package/dist/observability/index.d.ts.map +0 -1
  436. package/dist/observability/index.js +0 -10
  437. package/dist/observability/index.js.map +0 -1
  438. package/dist/observability/metrics.d.ts +0 -6
  439. package/dist/observability/metrics.d.ts.map +0 -1
  440. package/dist/observability/metrics.js +0 -60
  441. package/dist/observability/metrics.js.map +0 -1
  442. package/dist/observability/otel.d.ts +0 -27
  443. package/dist/observability/otel.d.ts.map +0 -1
  444. package/dist/observability/otel.js +0 -45
  445. package/dist/observability/otel.js.map +0 -1
  446. package/dist/observability/prometheus.d.ts +0 -30
  447. package/dist/observability/prometheus.d.ts.map +0 -1
  448. package/dist/observability/prometheus.js +0 -31
  449. package/dist/observability/prometheus.js.map +0 -1
  450. package/dist/queue/client.d.ts +0 -13
  451. package/dist/queue/client.d.ts.map +0 -1
  452. package/dist/queue/client.js +0 -83
  453. package/dist/queue/client.js.map +0 -1
  454. package/dist/queue/drivers/MemoryDriver.d.ts +0 -21
  455. package/dist/queue/drivers/MemoryDriver.d.ts.map +0 -1
  456. package/dist/queue/drivers/MemoryDriver.js +0 -176
  457. package/dist/queue/drivers/MemoryDriver.js.map +0 -1
  458. package/dist/queue/drivers/RedisDriver.d.ts +0 -19
  459. package/dist/queue/drivers/RedisDriver.d.ts.map +0 -1
  460. package/dist/queue/drivers/RedisDriver.js +0 -130
  461. package/dist/queue/drivers/RedisDriver.js.map +0 -1
  462. package/dist/queue/index.d.ts +0 -18
  463. package/dist/queue/index.d.ts.map +0 -1
  464. package/dist/queue/index.js +0 -37
  465. package/dist/queue/index.js.map +0 -1
  466. package/dist/queue/manager.d.ts +0 -18
  467. package/dist/queue/manager.d.ts.map +0 -1
  468. package/dist/queue/manager.js +0 -59
  469. package/dist/queue/manager.js.map +0 -1
  470. package/dist/queue/types.d.ts +0 -55
  471. package/dist/queue/types.d.ts.map +0 -1
  472. package/dist/queue/types.js.map +0 -1
  473. package/dist/queue/worker.d.ts +0 -18
  474. package/dist/queue/worker.d.ts.map +0 -1
  475. package/dist/queue/worker.js +0 -176
  476. package/dist/queue/worker.js.map +0 -1
  477. package/dist/router/gateway.d.ts.map +0 -1
  478. package/dist/router/gateway.js +0 -11
  479. package/dist/router/gateway.js.map +0 -1
  480. package/dist/server/bun-adapter.d.ts.map +0 -1
  481. package/dist/server/bun-adapter.js.map +0 -1
  482. package/dist/server/sse.d.ts +0 -16
  483. package/dist/server/sse.d.ts.map +0 -1
  484. package/dist/server/sse.js +0 -51
  485. package/dist/server/sse.js.map +0 -1
  486. package/dist/server/uws-adapter.d.ts.map +0 -1
  487. package/dist/server/uws-adapter.js.map +0 -1
  488. package/dist/storage/index.d.ts +0 -15
  489. package/dist/storage/index.d.ts.map +0 -1
  490. package/dist/storage/index.js +0 -7
  491. package/dist/storage/index.js.map +0 -1
  492. package/dist/swagger/index.d.ts +0 -9
  493. package/dist/swagger/index.d.ts.map +0 -1
  494. package/dist/swagger/index.js +0 -165
  495. package/dist/swagger/index.js.map +0 -1
  496. package/dist/threads/pool.d.ts +0 -14
  497. package/dist/threads/pool.d.ts.map +0 -1
  498. package/dist/threads/pool.js +0 -93
  499. package/dist/threads/pool.js.map +0 -1
  500. package/dist/threads/worker-runner.d.ts +0 -2
  501. package/dist/threads/worker-runner.d.ts.map +0 -1
  502. package/dist/threads/worker-runner.js +0 -71
  503. package/dist/threads/worker-runner.js.map +0 -1
  504. package/dist/validator/validator.d.ts +0 -360
  505. package/dist/validator/validator.d.ts.map +0 -1
  506. package/dist/validator/validator.js +0 -931
  507. package/dist/validator/validator.js.map +0 -1
  508. package/dist/websocket/orchestrator.d.ts +0 -11
  509. package/dist/websocket/orchestrator.d.ts.map +0 -1
  510. package/dist/websocket/orchestrator.js +0 -238
  511. package/dist/websocket/orchestrator.js.map +0 -1
  512. package/dist/websocket/server.d.ts +0 -66
  513. package/dist/websocket/server.d.ts.map +0 -1
  514. package/dist/websocket/server.js +0 -158
  515. package/dist/websocket/server.js.map +0 -1
  516. package/dist/websocket/socket.d.ts +0 -119
  517. package/dist/websocket/socket.d.ts.map +0 -1
  518. package/dist/websocket/socket.js +0 -242
  519. package/dist/websocket/socket.js.map +0 -1
@@ -1,931 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.v = exports.FileValidator = exports.AnyValidator = exports.RecordValidator = exports.DateValidator = exports.UnionValidator = exports.LiteralValidator = exports.EnumValidator = exports.ArrayValidator = exports.ObjectValidator = exports.CoerceBooleanValidator = exports.BooleanValidator = exports.CoerceNumberValidator = exports.NumberValidator = exports.StringValidator = exports.AsyncRefineValidator = exports.TransformValidator = exports.RefineValidator = exports.ValidatorType = exports.ValidatorError = void 0;
4
- class ValidatorError extends Error {
5
- constructor(errors) {
6
- super('Validation Error: ' +
7
- errors.map((e) => `${e.path}: ${e.message}`).join(', '));
8
- this.errors = errors;
9
- this.name = 'ValidatorError';
10
- }
11
- }
12
- exports.ValidatorError = ValidatorError;
13
- class ValidatorType {
14
- constructor() {
15
- this.isOptional = false;
16
- this._hasDefault = false;
17
- this._isUnique = false;
18
- this._index = false;
19
- this._sanitizers = [];
20
- }
21
- optional() {
22
- this.isOptional = true;
23
- return this;
24
- }
25
- default(val) {
26
- this.isOptional = true;
27
- this._hasDefault = true;
28
- this.defaultValue = val;
29
- return this;
30
- }
31
- unique() {
32
- this._isUnique = true;
33
- return this;
34
- }
35
- index() {
36
- this._index = true;
37
- return this;
38
- }
39
- refine(check, message = 'Invalid value') {
40
- return new RefineValidator(this, check, message);
41
- }
42
- sanitize(...sanitizers) {
43
- this._sanitizers.push(...sanitizers);
44
- return this;
45
- }
46
- transform(fn) {
47
- return new TransformValidator(this, fn);
48
- }
49
- or(other) {
50
- return new UnionValidator([this, other]);
51
- }
52
- /**
53
- * Converts this validator into a Mongoose-compatible schema field definition.
54
- * Override in subclasses for specific type mappings.
55
- */
56
- toMongoField() {
57
- const field = { type: 'Mixed' };
58
- if (!this.isOptional)
59
- field.required = true;
60
- if (this._hasDefault) {
61
- field.default =
62
- typeof this.defaultValue === 'function'
63
- ? this.defaultValue
64
- : this.defaultValue;
65
- }
66
- if (this._isUnique)
67
- field.unique = true;
68
- if (this._index)
69
- field.index = true;
70
- return field;
71
- }
72
- async _validateAsync(value, path) {
73
- return this._validate(value, path);
74
- }
75
- validate(value, path = '') {
76
- if (this._hasDefault && value === undefined) {
77
- const def = typeof this.defaultValue === 'function'
78
- ? this.defaultValue()
79
- : this.defaultValue;
80
- return { success: true, data: def };
81
- }
82
- return this._validate(value, path);
83
- }
84
- async validateAsync(value, path = '') {
85
- if (this._hasDefault && value === undefined) {
86
- const def = typeof this.defaultValue === 'function'
87
- ? this.defaultValue()
88
- : this.defaultValue;
89
- return { success: true, data: def };
90
- }
91
- return this._validateAsync(value, path);
92
- }
93
- refineAsync(check, message = 'Invalid value') {
94
- return new AsyncRefineValidator(this, check, message);
95
- }
96
- parse(value) {
97
- const result = this.validate(value, '');
98
- if (!result.success)
99
- throw new ValidatorError(result.errors);
100
- return result.data;
101
- }
102
- async parseAsync(value) {
103
- const result = await this.validateAsync(value, '');
104
- if (!result.success)
105
- throw new ValidatorError(result.errors);
106
- return result.data;
107
- }
108
- }
109
- exports.ValidatorType = ValidatorType;
110
- class RefineValidator extends ValidatorType {
111
- constructor(base, check, message) {
112
- super();
113
- this.base = base;
114
- this.check = check;
115
- this.message = message;
116
- }
117
- toOpenApi() {
118
- return this.base.toOpenApi();
119
- }
120
- _validate(value, path) {
121
- const res = this.base._validate(value, path);
122
- if (!res.success)
123
- return res;
124
- if (res.data !== undefined) {
125
- if (!this.check(res.data)) {
126
- const msg = typeof this.message === 'function'
127
- ? this.message(res.data)
128
- : this.message;
129
- return { success: false, errors: [{ path, message: msg }] };
130
- }
131
- }
132
- return res;
133
- }
134
- }
135
- exports.RefineValidator = RefineValidator;
136
- class TransformValidator extends ValidatorType {
137
- constructor(base, fn) {
138
- super();
139
- this.base = base;
140
- this.fn = fn;
141
- }
142
- toOpenApi() {
143
- return this.base.toOpenApi();
144
- }
145
- _validate(value, path) {
146
- const res = this.base._validate(value, path);
147
- if (!res.success)
148
- return res;
149
- if (res.data !== undefined) {
150
- try {
151
- const transformed = this.fn(res.data);
152
- return { success: true, data: transformed };
153
- }
154
- catch (err) {
155
- return {
156
- success: false,
157
- errors: [
158
- {
159
- path,
160
- message: err instanceof Error ? err.message : 'Transform failed',
161
- },
162
- ],
163
- };
164
- }
165
- }
166
- return { success: true, data: res.data };
167
- }
168
- }
169
- exports.TransformValidator = TransformValidator;
170
- class AsyncRefineValidator extends ValidatorType {
171
- constructor(base, check, message) {
172
- super();
173
- this.base = base;
174
- this.check = check;
175
- this.message = message;
176
- }
177
- toOpenApi() {
178
- return this.base.toOpenApi();
179
- }
180
- _validate(_value, _path) {
181
- throw new Error('Async validation requires parseAsync() to be used');
182
- }
183
- async _validateAsync(value, path) {
184
- const res = await this.base.validateAsync(value, path);
185
- if (!res.success)
186
- return res;
187
- if (res.data !== undefined) {
188
- if (!(await this.check(res.data))) {
189
- const msg = typeof this.message === 'function'
190
- ? this.message(res.data)
191
- : this.message;
192
- return { success: false, errors: [{ path, message: msg }] };
193
- }
194
- }
195
- return res;
196
- }
197
- }
198
- exports.AsyncRefineValidator = AsyncRefineValidator;
199
- class StringValidator extends ValidatorType {
200
- min(len, message) {
201
- this.minLen = len;
202
- this.minMsg = message;
203
- return this;
204
- }
205
- max(len, message) {
206
- this.maxLen = len;
207
- this.maxMsg = message;
208
- return this;
209
- }
210
- email(message) {
211
- this.isEmail = true;
212
- this.emailMsg = message;
213
- return this;
214
- }
215
- regex(pattern, message) {
216
- this.regexPattern = pattern;
217
- this.regexMsg = message;
218
- return this;
219
- }
220
- toOpenApi() {
221
- const schema = { type: 'string' };
222
- if (this.minLen !== undefined)
223
- schema.minLength = this.minLen;
224
- if (this.maxLen !== undefined)
225
- schema.maxLength = this.maxLen;
226
- if (this.isEmail)
227
- schema.format = 'email';
228
- return schema;
229
- }
230
- toMongoField() {
231
- const field = { type: String };
232
- if (!this.isOptional)
233
- field.required = true;
234
- if (this._hasDefault)
235
- field.default = this.defaultValue;
236
- if (this._isUnique)
237
- field.unique = true;
238
- if (this._index)
239
- field.index = true;
240
- if (this.minLen !== undefined)
241
- field.minlength = this.minLen;
242
- if (this.maxLen !== undefined)
243
- field.maxlength = this.maxLen;
244
- if (this.regexPattern)
245
- field.match = this.regexPattern;
246
- return field;
247
- }
248
- _validate(value, path) {
249
- if (value === undefined || value === null) {
250
- if (this.isOptional)
251
- return { success: true, data: undefined };
252
- return { success: false, errors: [{ path, message: 'Required' }] };
253
- }
254
- if (typeof value !== 'string')
255
- return { success: false, errors: [{ path, message: 'Expected string' }] };
256
- let typedVal = value;
257
- for (const s of this._sanitizers)
258
- typedVal = s(typedVal);
259
- if (this.minLen !== undefined && typedVal.length < this.minLen)
260
- return {
261
- success: false,
262
- errors: [
263
- {
264
- path,
265
- message: this.minMsg ??
266
- `String must be at least ${this.minLen} characters`,
267
- },
268
- ],
269
- };
270
- if (this.maxLen !== undefined && typedVal.length > this.maxLen)
271
- return {
272
- success: false,
273
- errors: [
274
- {
275
- path,
276
- message: this.maxMsg ?? `String must be at most ${this.maxLen} characters`,
277
- },
278
- ],
279
- };
280
- if (this.isEmail && !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(typedVal))
281
- return {
282
- success: false,
283
- errors: [{ path, message: this.emailMsg ?? 'Invalid email' }],
284
- };
285
- if (this.regexPattern !== undefined && !this.regexPattern.test(typedVal))
286
- return {
287
- success: false,
288
- errors: [{ path, message: this.regexMsg ?? 'Invalid format' }],
289
- };
290
- return { success: true, data: typedVal };
291
- }
292
- }
293
- exports.StringValidator = StringValidator;
294
- class NumberValidator extends ValidatorType {
295
- min(val, message) {
296
- this.minVal = val;
297
- this.minMsg = message;
298
- return this;
299
- }
300
- max(val, message) {
301
- this.maxVal = val;
302
- this.maxMsg = message;
303
- return this;
304
- }
305
- toOpenApi() {
306
- const schema = { type: 'number' };
307
- if (this.minVal !== undefined)
308
- schema.minimum = this.minVal;
309
- if (this.maxVal !== undefined)
310
- schema.maximum = this.maxVal;
311
- return schema;
312
- }
313
- toMongoField() {
314
- const field = { type: Number };
315
- if (!this.isOptional)
316
- field.required = true;
317
- if (this._hasDefault)
318
- field.default = this.defaultValue;
319
- if (this._isUnique)
320
- field.unique = true;
321
- if (this._index)
322
- field.index = true;
323
- if (this.minVal !== undefined)
324
- field.min = this.minVal;
325
- if (this.maxVal !== undefined)
326
- field.max = this.maxVal;
327
- return field;
328
- }
329
- _validate(value, path) {
330
- if (value === undefined || value === null) {
331
- if (this.isOptional)
332
- return { success: true, data: undefined };
333
- return { success: false, errors: [{ path, message: 'Required' }] };
334
- }
335
- if (typeof value === 'boolean' ||
336
- (typeof value === 'string' && value.trim() === '')) {
337
- return { success: false, errors: [{ path, message: 'Expected number' }] };
338
- }
339
- const num = Number(value);
340
- if (isNaN(num))
341
- return {
342
- success: false,
343
- errors: [{ path, message: 'Expected valid number' }],
344
- };
345
- if (this.minVal !== undefined && num < this.minVal)
346
- return {
347
- success: false,
348
- errors: [
349
- {
350
- path,
351
- message: this.minMsg ?? `Number must be at least ${this.minVal}`,
352
- },
353
- ],
354
- };
355
- if (this.maxVal !== undefined && num > this.maxVal)
356
- return {
357
- success: false,
358
- errors: [
359
- {
360
- path,
361
- message: this.maxMsg ?? `Number must be at most ${this.maxVal}`,
362
- },
363
- ],
364
- };
365
- return { success: true, data: num };
366
- }
367
- }
368
- exports.NumberValidator = NumberValidator;
369
- class CoerceNumberValidator extends NumberValidator {
370
- _validate(value, path) {
371
- if (value === undefined || value === null) {
372
- if (this.isOptional)
373
- return { success: true, data: undefined };
374
- return { success: false, errors: [{ path, message: 'Required' }] };
375
- }
376
- if (typeof value === 'boolean' ||
377
- (typeof value === 'string' && value.trim() === '')) {
378
- return { success: false, errors: [{ path, message: 'Expected number' }] };
379
- }
380
- const num = Number(value);
381
- return super._validate(num, path);
382
- }
383
- }
384
- exports.CoerceNumberValidator = CoerceNumberValidator;
385
- class BooleanValidator extends ValidatorType {
386
- toOpenApi() {
387
- return { type: 'boolean' };
388
- }
389
- toMongoField() {
390
- const field = { type: Boolean };
391
- if (!this.isOptional)
392
- field.required = true;
393
- if (this._hasDefault)
394
- field.default = this.defaultValue;
395
- return field;
396
- }
397
- _validate(value, path) {
398
- if (value === undefined || value === null) {
399
- if (this.isOptional)
400
- return { success: true, data: undefined };
401
- return { success: false, errors: [{ path, message: 'Required' }] };
402
- }
403
- if (typeof value === 'boolean') {
404
- let typedVal = value;
405
- for (const s of this._sanitizers)
406
- typedVal = s(typedVal);
407
- return { success: true, data: typedVal };
408
- }
409
- if (value === 'true' || value === '1') {
410
- let typedVal = true;
411
- for (const s of this._sanitizers)
412
- typedVal = s(typedVal);
413
- return { success: true, data: typedVal };
414
- }
415
- if (value === 'false' || value === '0')
416
- return { success: true, data: false };
417
- return { success: false, errors: [{ path, message: 'Expected boolean' }] };
418
- }
419
- }
420
- exports.BooleanValidator = BooleanValidator;
421
- class CoerceBooleanValidator extends BooleanValidator {
422
- _validate(value, path) {
423
- if (value === undefined || value === null) {
424
- if (this.isOptional)
425
- return { success: true, data: undefined };
426
- return { success: false, errors: [{ path, message: 'Required' }] };
427
- }
428
- if (typeof value === 'boolean') {
429
- let typedVal = value;
430
- for (const s of this._sanitizers)
431
- typedVal = s(typedVal);
432
- return { success: true, data: typedVal };
433
- }
434
- if (value === 'true' || value === '1') {
435
- let typedVal = true;
436
- for (const s of this._sanitizers)
437
- typedVal = s(typedVal);
438
- return { success: true, data: typedVal };
439
- }
440
- if (value === 'false' || value === '0')
441
- return { success: true, data: false };
442
- return { success: false, errors: [{ path, message: 'Expected boolean' }] };
443
- }
444
- }
445
- exports.CoerceBooleanValidator = CoerceBooleanValidator;
446
- class ObjectValidator extends ValidatorType {
447
- constructor(shape) {
448
- super();
449
- this.shape = shape;
450
- this._keys = Object.keys(shape);
451
- }
452
- partial() {
453
- const newShape = {};
454
- for (const key of this._keys) {
455
- newShape[key] = this.shape[key].optional();
456
- }
457
- return new ObjectValidator(newShape);
458
- }
459
- pick(keys) {
460
- const newShape = {};
461
- for (const key of keys) {
462
- if (key in this.shape) {
463
- newShape[key] = this.shape[key];
464
- }
465
- }
466
- return new ObjectValidator(newShape);
467
- }
468
- omit(keys) {
469
- const newShape = {};
470
- for (const key of this._keys) {
471
- if (!keys.includes(key)) {
472
- newShape[key] = this.shape[key];
473
- }
474
- }
475
- return new ObjectValidator(newShape);
476
- }
477
- toOpenApi() {
478
- const properties = {};
479
- const required = [];
480
- for (const key of this._keys) {
481
- const validator = this.shape[key];
482
- properties[key] = validator.toOpenApi();
483
- if (!validator.isOptional) {
484
- required.push(key);
485
- }
486
- }
487
- const schema = {
488
- type: 'object',
489
- properties,
490
- };
491
- if (required.length > 0)
492
- schema.required = required;
493
- return schema;
494
- }
495
- /**
496
- * Converts this tex.object() schema into a Mongoose-compatible schema definition.
497
- * Pass the result directly to `new mongoose.Schema()`.
498
- *
499
- * @example
500
- * const UserSchema = tex.object({ name: tex.string(), email: tex.email() })
501
- * const User = mongoose.model('User', new mongoose.Schema(UserSchema.toMongoSchema()))
502
- */
503
- toMongoSchema() {
504
- const schemaDef = {};
505
- for (const key of this._keys) {
506
- const validator = this.shape[key];
507
- schemaDef[key] = validator.toMongoField();
508
- }
509
- return schemaDef;
510
- }
511
- toMongoField() {
512
- // Nested object — return the shape as a sub-document definition
513
- const nested = {};
514
- for (const key of this._keys) {
515
- nested[key] = this.shape[key].toMongoField();
516
- }
517
- return nested;
518
- }
519
- _validate(value, path) {
520
- if (value === undefined || value === null) {
521
- if (this.isOptional)
522
- return { success: true, data: undefined };
523
- return { success: false, errors: [{ path, message: 'Required' }] };
524
- }
525
- if (typeof value !== 'object' || Array.isArray(value))
526
- return { success: false, errors: [{ path, message: 'Expected object' }] };
527
- const errors = [];
528
- const data = {};
529
- for (const key of this._keys) {
530
- const validator = this.shape[key];
531
- const fieldPath = path ? `${path}.${key}` : key;
532
- const result = validator.validate(value[key], fieldPath);
533
- if (result.success) {
534
- if (result.data !== undefined)
535
- data[key] = result.data;
536
- }
537
- else {
538
- for (const error of result.errors) {
539
- errors.push(error);
540
- }
541
- }
542
- }
543
- if (errors.length > 0)
544
- return { success: false, errors };
545
- let typedVal = data;
546
- for (const s of this._sanitizers)
547
- typedVal = s(typedVal);
548
- return { success: true, data: typedVal };
549
- }
550
- async _validateAsync(value, path) {
551
- if (value === undefined || value === null) {
552
- if (this.isOptional)
553
- return { success: true, data: undefined };
554
- return { success: false, errors: [{ path, message: 'Required' }] };
555
- }
556
- if (typeof value !== 'object' || Array.isArray(value))
557
- return { success: false, errors: [{ path, message: 'Expected object' }] };
558
- const errors = [];
559
- const data = {};
560
- await Promise.all(this._keys.map(async (key) => {
561
- const validator = this.shape[key];
562
- const fieldPath = path ? `${path}.${key}` : key;
563
- const result = await validator.validateAsync(value[key], fieldPath);
564
- if (result.success) {
565
- if (result.data !== undefined)
566
- data[key] = result.data;
567
- }
568
- else {
569
- for (const error of result.errors) {
570
- errors.push(error);
571
- }
572
- }
573
- }));
574
- if (errors.length > 0)
575
- return { success: false, errors };
576
- let typedVal = data;
577
- for (const s of this._sanitizers)
578
- typedVal = s(typedVal);
579
- return { success: true, data: typedVal };
580
- }
581
- }
582
- exports.ObjectValidator = ObjectValidator;
583
- class ArrayValidator extends ValidatorType {
584
- constructor(schema) {
585
- super();
586
- this.schema = schema;
587
- }
588
- min(len, message) {
589
- this.minLen = len;
590
- this.minMsg = message;
591
- return this;
592
- }
593
- max(len, message) {
594
- this.maxLen = len;
595
- this.maxMsg = message;
596
- return this;
597
- }
598
- toOpenApi() {
599
- const schema = {
600
- type: 'array',
601
- items: this.schema.toOpenApi(),
602
- };
603
- if (this.minLen !== undefined)
604
- schema.minItems = this.minLen;
605
- if (this.maxLen !== undefined)
606
- schema.maxItems = this.maxLen;
607
- return schema;
608
- }
609
- toMongoField() {
610
- // Return as Mongoose array syntax: [{ type: String }]
611
- const innerField = this.schema.toMongoField();
612
- return [innerField];
613
- }
614
- _validate(value, path) {
615
- if (value === undefined || value === null) {
616
- if (this.isOptional)
617
- return { success: true, data: undefined };
618
- return { success: false, errors: [{ path, message: 'Required' }] };
619
- }
620
- if (!Array.isArray(value))
621
- return { success: false, errors: [{ path, message: 'Expected array' }] };
622
- if (this.minLen !== undefined && value.length < this.minLen)
623
- return {
624
- success: false,
625
- errors: [
626
- {
627
- path,
628
- message: this.minMsg ?? `Array must have at least ${this.minLen} items`,
629
- },
630
- ],
631
- };
632
- if (this.maxLen !== undefined && value.length > this.maxLen)
633
- return {
634
- success: false,
635
- errors: [
636
- {
637
- path,
638
- message: this.maxMsg ?? `Array must have at most ${this.maxLen} items`,
639
- },
640
- ],
641
- };
642
- const errors = [];
643
- const data = [];
644
- for (let i = 0; i < value.length; i++) {
645
- const res = this.schema.validate(value[i], path ? `${path}[${i}]` : `[${i}]`);
646
- if (res.success) {
647
- data.push(res.data);
648
- }
649
- else {
650
- for (const error of res.errors) {
651
- errors.push(error);
652
- }
653
- }
654
- }
655
- if (errors.length > 0)
656
- return { success: false, errors };
657
- return { success: true, data: data };
658
- }
659
- }
660
- exports.ArrayValidator = ArrayValidator;
661
- class EnumValidator extends ValidatorType {
662
- constructor(values) {
663
- super();
664
- this.values = values;
665
- }
666
- toOpenApi() {
667
- return { type: 'string', enum: this.values };
668
- }
669
- toMongoField() {
670
- const field = {
671
- type: String,
672
- enum: [...this.values],
673
- };
674
- if (!this.isOptional)
675
- field.required = true;
676
- if (this._hasDefault)
677
- field.default = this.defaultValue;
678
- if (this._isUnique)
679
- field.unique = true;
680
- if (this._index)
681
- field.index = true;
682
- return field;
683
- }
684
- _validate(value, path) {
685
- if (value === undefined || value === null) {
686
- if (this.isOptional)
687
- return { success: true, data: undefined };
688
- return { success: false, errors: [{ path, message: 'Required' }] };
689
- }
690
- if (typeof value !== 'string')
691
- return { success: false, errors: [{ path, message: 'Expected string' }] };
692
- let typedVal = value;
693
- for (const s of this._sanitizers)
694
- typedVal = s(typedVal);
695
- if (!this.values.includes(typedVal))
696
- return {
697
- success: false,
698
- errors: [
699
- { path, message: `Expected one of: ${this.values.join(', ')}` },
700
- ],
701
- };
702
- return { success: true, data: typedVal };
703
- }
704
- }
705
- exports.EnumValidator = EnumValidator;
706
- class LiteralValidator extends ValidatorType {
707
- constructor(exact) {
708
- super();
709
- this.exact = exact;
710
- }
711
- toOpenApi() {
712
- return { type: typeof this.exact, enum: [this.exact] };
713
- }
714
- _validate(value, path) {
715
- if (value === undefined || value === null) {
716
- if (this.isOptional)
717
- return { success: true, data: undefined };
718
- return { success: false, errors: [{ path, message: 'Required' }] };
719
- }
720
- if (value !== this.exact)
721
- return {
722
- success: false,
723
- errors: [{ path, message: `Expected literal ${this.exact}` }],
724
- };
725
- return { success: true, data: value };
726
- }
727
- }
728
- exports.LiteralValidator = LiteralValidator;
729
- class UnionValidator extends ValidatorType {
730
- constructor(schemas) {
731
- super();
732
- this.schemas = schemas;
733
- }
734
- toOpenApi() {
735
- return { anyOf: this.schemas.map((s) => s.toOpenApi()) };
736
- }
737
- _validate(value, path) {
738
- if (value === undefined || value === null) {
739
- if (this.isOptional)
740
- return { success: true, data: undefined };
741
- return { success: false, errors: [{ path, message: 'Required' }] };
742
- }
743
- const errors = [];
744
- for (const schema of this.schemas) {
745
- const res = schema.validate(value, path);
746
- if (res.success)
747
- return res;
748
- errors.push(...res.errors);
749
- }
750
- return {
751
- success: false,
752
- errors: [{ path, message: 'Invalid union value' }],
753
- };
754
- }
755
- }
756
- exports.UnionValidator = UnionValidator;
757
- class DateValidator extends ValidatorType {
758
- toOpenApi() {
759
- return { type: 'string', format: 'date-time' };
760
- }
761
- toMongoField() {
762
- const field = { type: Date };
763
- if (!this.isOptional)
764
- field.required = true;
765
- if (this._hasDefault)
766
- field.default = this.defaultValue;
767
- if (this._index)
768
- field.index = true;
769
- return field;
770
- }
771
- _validate(value, path) {
772
- if (value === undefined || value === null) {
773
- if (this.isOptional)
774
- return { success: true, data: undefined };
775
- return { success: false, errors: [{ path, message: 'Required' }] };
776
- }
777
- let date;
778
- if (value instanceof Date) {
779
- date = value;
780
- }
781
- else if (typeof value === 'string' || typeof value === 'number') {
782
- date = new Date(value);
783
- }
784
- else {
785
- return {
786
- success: false,
787
- errors: [{ path, message: 'Expected date string or object' }],
788
- };
789
- }
790
- if (isNaN(date.getTime())) {
791
- return { success: false, errors: [{ path, message: 'Invalid date' }] };
792
- }
793
- return { success: true, data: date };
794
- }
795
- }
796
- exports.DateValidator = DateValidator;
797
- class RecordValidator extends ValidatorType {
798
- constructor(schema) {
799
- super();
800
- this.schema = schema;
801
- }
802
- toOpenApi() {
803
- return { type: 'object', additionalProperties: this.schema.toOpenApi() };
804
- }
805
- _validate(value, path) {
806
- if (value === undefined || value === null) {
807
- if (this.isOptional)
808
- return { success: true, data: undefined };
809
- return { success: false, errors: [{ path, message: 'Required' }] };
810
- }
811
- if (typeof value !== 'object' || Array.isArray(value))
812
- return { success: false, errors: [{ path, message: 'Expected object' }] };
813
- const errors = [];
814
- const data = {};
815
- for (const key in value) {
816
- const fieldPath = path ? `${path}.${key}` : key;
817
- const res = this.schema.validate(value[key], fieldPath);
818
- if (res.success) {
819
- data[key] = res.data;
820
- }
821
- else {
822
- for (const error of res.errors) {
823
- errors.push(error);
824
- }
825
- }
826
- }
827
- if (errors.length > 0)
828
- return { success: false, errors };
829
- return { success: true, data: data };
830
- }
831
- }
832
- exports.RecordValidator = RecordValidator;
833
- // ─── Any Validator ─────────────────────────────────────────────────────────────
834
- class AnyValidator extends ValidatorType {
835
- toOpenApi() {
836
- return {};
837
- }
838
- _validate(value) {
839
- return { success: true, data: value };
840
- }
841
- }
842
- exports.AnyValidator = AnyValidator;
843
- class FileValidator extends ValidatorType {
844
- maxSize(bytes) {
845
- this._maxSize = bytes;
846
- return this;
847
- }
848
- mimeTypes(types) {
849
- this._mimeTypes = types;
850
- return this;
851
- }
852
- toOpenApi() {
853
- return { type: 'string', format: 'binary' };
854
- }
855
- _validate(value, path) {
856
- if (value === undefined || value === null) {
857
- if (this.isOptional)
858
- return { success: true, data: undefined };
859
- return { success: false, errors: [{ path, message: 'Required' }] };
860
- }
861
- // We expect the busboy parsed object: { filename, mimeType, buffer }
862
- if (typeof value === 'object' &&
863
- value !== null &&
864
- 'buffer' in value &&
865
- Buffer.isBuffer(value.buffer)) {
866
- const file = value;
867
- if (this._maxSize && file.buffer.length > this._maxSize) {
868
- return {
869
- success: false,
870
- errors: [
871
- { path, message: `File size exceeds ${this._maxSize} bytes` },
872
- ],
873
- };
874
- }
875
- if (this._mimeTypes && !this._mimeTypes.includes(file.mimeType)) {
876
- return {
877
- success: false,
878
- errors: [
879
- {
880
- path,
881
- message: `Invalid mime type. Expected one of: ${this._mimeTypes.join(', ')}`,
882
- },
883
- ],
884
- };
885
- }
886
- return { success: true, data: file };
887
- }
888
- return { success: false, errors: [{ path, message: 'Expected file' }] };
889
- }
890
- }
891
- exports.FileValidator = FileValidator;
892
- /**
893
- * @deprecated The `v` validation engine is deprecated in favor of the new string-based `@exisjs/tex` validation engine.
894
- * Please migrate to `tex.type({ ... })` for native Rust-powered validation.
895
- */
896
- exports.v = {
897
- string: () => new StringValidator(),
898
- number: () => new NumberValidator(),
899
- boolean: () => new BooleanValidator(),
900
- object: (shape) => new ObjectValidator(shape),
901
- array: (schema) => new ArrayValidator(schema),
902
- enum: (values) => new EnumValidator(values),
903
- literal: (exact) => new LiteralValidator(exact),
904
- union: (schemas) => new UnionValidator(schemas),
905
- date: () => new DateValidator(),
906
- record: (schema) => new RecordValidator(schema),
907
- any: () => new AnyValidator(),
908
- file: () => new FileValidator(),
909
- env: (schema) => {
910
- // Skip validation during build phase — env vars aren't available at build time
911
- if (process.env.__EXIS_BUILD === 'true') {
912
- return new Proxy({}, {
913
- get: (_target, prop) => process.env[prop],
914
- });
915
- }
916
- const result = schema.validate(process.env, 'process.env');
917
- if (!result.success) {
918
- const messages = result.errors
919
- .map((e) => ` - ${e.path.replace('process.env.', '')}: ${e.message}`)
920
- .join('\n');
921
- console.error(`\x1b[31m Environment Validation Failed:\x1b[0m\n${messages}`);
922
- process.exit(1);
923
- }
924
- return result.data;
925
- },
926
- coerce: {
927
- number: () => new CoerceNumberValidator(),
928
- boolean: () => new CoerceBooleanValidator(),
929
- },
930
- };
931
- //# sourceMappingURL=validator.js.map