exisjs 0.6.1 → 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 (517) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/build.js +2 -8
  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 +33 -44
  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-server.js +10 -0
  74. package/dist/lib/start-server.js.map +1 -1
  75. package/dist/logger/index.d.ts +81 -0
  76. package/dist/logger/index.d.ts.map +1 -0
  77. package/dist/logger/index.js +142 -0
  78. package/dist/logger/index.js.map +1 -0
  79. package/dist/middleware/dedupe.d.ts +1 -1
  80. package/dist/middleware/dedupe.js +1 -1
  81. package/dist/middleware/middleware.d.ts +3 -5
  82. package/dist/middleware/middleware.d.ts.map +1 -1
  83. package/dist/middleware/middleware.js +2 -6
  84. package/dist/middleware/middleware.js.map +1 -1
  85. package/dist/router/{gateway.d.ts → boundary.d.ts} +21 -13
  86. package/dist/router/boundary.d.ts.map +1 -0
  87. package/dist/router/boundary.js +11 -0
  88. package/dist/router/boundary.js.map +1 -0
  89. package/dist/router/index.d.ts +3 -6
  90. package/dist/router/index.d.ts.map +1 -1
  91. package/dist/router/index.js +3 -7
  92. package/dist/router/index.js.map +1 -1
  93. package/dist/router/route-builder.d.ts +0 -28
  94. package/dist/router/route-builder.d.ts.map +1 -1
  95. package/dist/router/route-builder.js +0 -4
  96. package/dist/router/route-builder.js.map +1 -1
  97. package/dist/router/route-scanner.d.ts +1 -2
  98. package/dist/router/route-scanner.d.ts.map +1 -1
  99. package/dist/router/route-scanner.js +216 -193
  100. package/dist/router/route-scanner.js.map +1 -1
  101. package/dist/router/router.d.ts +4 -6
  102. package/dist/router/router.d.ts.map +1 -1
  103. package/dist/router/router.js +36 -72
  104. package/dist/router/router.js.map +1 -1
  105. package/dist/router/types.d.ts +2 -6
  106. package/dist/router/types.d.ts.map +1 -1
  107. package/dist/server/{bun-adapter.d.ts → adapters/bun-adapter.d.ts} +1 -1
  108. package/dist/server/adapters/bun-adapter.d.ts.map +1 -0
  109. package/dist/server/{bun-adapter.js → adapters/bun-adapter.js} +2 -24
  110. package/dist/server/adapters/bun-adapter.js.map +1 -0
  111. package/dist/server/{uws-adapter.d.ts → adapters/uws-adapter.d.ts} +1 -1
  112. package/dist/server/adapters/uws-adapter.d.ts.map +1 -0
  113. package/dist/server/{uws-adapter.js → adapters/uws-adapter.js} +1 -28
  114. package/dist/server/adapters/uws-adapter.js.map +1 -0
  115. package/dist/server/app.d.ts +9 -30
  116. package/dist/server/app.d.ts.map +1 -1
  117. package/dist/server/app.js +19 -134
  118. package/dist/server/app.js.map +1 -1
  119. package/dist/server/bootstrapper.d.ts +4 -15
  120. package/dist/server/bootstrapper.d.ts.map +1 -1
  121. package/dist/server/bootstrapper.js +30 -229
  122. package/dist/server/bootstrapper.js.map +1 -1
  123. package/dist/server/define.d.ts +2 -2
  124. package/dist/server/define.d.ts.map +1 -1
  125. package/dist/server/define.js +3 -3
  126. package/dist/server/define.js.map +1 -1
  127. package/dist/server/engines/bun-engine.d.ts +16 -0
  128. package/dist/server/engines/bun-engine.d.ts.map +1 -0
  129. package/dist/server/engines/bun-engine.js +41 -0
  130. package/dist/server/engines/bun-engine.js.map +1 -0
  131. package/dist/server/engines/engine.d.ts +16 -0
  132. package/dist/server/engines/engine.d.ts.map +1 -0
  133. package/dist/{queue/types.js → server/engines/engine.js} +1 -1
  134. package/dist/server/engines/engine.js.map +1 -0
  135. package/dist/server/engines/node-engine.d.ts +22 -0
  136. package/dist/server/engines/node-engine.d.ts.map +1 -0
  137. package/dist/server/engines/node-engine.js +130 -0
  138. package/dist/server/engines/node-engine.js.map +1 -0
  139. package/dist/server/engines/uws-engine.d.ts +16 -0
  140. package/dist/server/engines/uws-engine.d.ts.map +1 -0
  141. package/dist/server/engines/uws-engine.js +48 -0
  142. package/dist/server/engines/uws-engine.js.map +1 -0
  143. package/dist/server/request-handler.d.ts +0 -1
  144. package/dist/server/request-handler.d.ts.map +1 -1
  145. package/dist/server/request-handler.js +74 -48
  146. package/dist/server/request-handler.js.map +1 -1
  147. package/dist/server/request.d.ts +0 -8
  148. package/dist/server/request.d.ts.map +1 -1
  149. package/dist/server/request.js +0 -16
  150. package/dist/server/request.js.map +1 -1
  151. package/dist/utils/time.d.ts +6 -0
  152. package/dist/utils/time.d.ts.map +1 -0
  153. package/dist/utils/time.js +15 -0
  154. package/dist/utils/time.js.map +1 -0
  155. package/dist/validator/index.d.ts +1 -7
  156. package/dist/validator/index.d.ts.map +1 -1
  157. package/dist/validator/index.js +1 -5
  158. package/dist/validator/index.js.map +1 -1
  159. package/dist/validator/tex-types.d.ts +15 -2
  160. package/dist/validator/tex-types.d.ts.map +1 -1
  161. package/dist/validator/tex-types.js +8 -0
  162. package/dist/validator/tex-types.js.map +1 -1
  163. package/dist/validator/tex.d.ts.map +1 -1
  164. package/dist/validator/tex.js +21 -2
  165. package/dist/validator/tex.js.map +1 -1
  166. package/package.json +9 -151
  167. package/dist/adapters/aws-lambda.d.ts +0 -21
  168. package/dist/adapters/aws-lambda.d.ts.map +0 -1
  169. package/dist/adapters/aws-lambda.js +0 -125
  170. package/dist/adapters/aws-lambda.js.map +0 -1
  171. package/dist/adapters/bun.d.ts +0 -9
  172. package/dist/adapters/bun.d.ts.map +0 -1
  173. package/dist/adapters/bun.js +0 -23
  174. package/dist/adapters/bun.js.map +0 -1
  175. package/dist/adapters/cloudflare.d.ts +0 -10
  176. package/dist/adapters/cloudflare.d.ts.map +0 -1
  177. package/dist/adapters/cloudflare.js +0 -22
  178. package/dist/adapters/cloudflare.js.map +0 -1
  179. package/dist/adapters/deno.d.ts +0 -7
  180. package/dist/adapters/deno.d.ts.map +0 -1
  181. package/dist/adapters/deno.js +0 -21
  182. package/dist/adapters/deno.js.map +0 -1
  183. package/dist/adapters/fastly.d.ts +0 -6
  184. package/dist/adapters/fastly.d.ts.map +0 -1
  185. package/dist/adapters/fastly.js +0 -20
  186. package/dist/adapters/fastly.js.map +0 -1
  187. package/dist/adapters/fetch.d.ts +0 -30
  188. package/dist/adapters/fetch.d.ts.map +0 -1
  189. package/dist/adapters/fetch.js +0 -119
  190. package/dist/adapters/fetch.js.map +0 -1
  191. package/dist/adapters/index.d.ts +0 -9
  192. package/dist/adapters/index.d.ts.map +0 -1
  193. package/dist/adapters/index.js +0 -28
  194. package/dist/adapters/index.js.map +0 -1
  195. package/dist/adapters/netlify.d.ts +0 -8
  196. package/dist/adapters/netlify.d.ts.map +0 -1
  197. package/dist/adapters/netlify.js +0 -20
  198. package/dist/adapters/netlify.js.map +0 -1
  199. package/dist/adapters/vercel.d.ts +0 -17
  200. package/dist/adapters/vercel.d.ts.map +0 -1
  201. package/dist/adapters/vercel.js +0 -23
  202. package/dist/adapters/vercel.js.map +0 -1
  203. package/dist/auth/index.d.ts +0 -8
  204. package/dist/auth/index.d.ts.map +0 -1
  205. package/dist/auth/index.js +0 -49
  206. package/dist/auth/index.js.map +0 -1
  207. package/dist/auth/jwt.d.ts +0 -20
  208. package/dist/auth/jwt.d.ts.map +0 -1
  209. package/dist/auth/jwt.js +0 -59
  210. package/dist/auth/jwt.js.map +0 -1
  211. package/dist/auth/oauth/core.d.ts +0 -96
  212. package/dist/auth/oauth/core.d.ts.map +0 -1
  213. package/dist/auth/oauth/core.js +0 -203
  214. package/dist/auth/oauth/core.js.map +0 -1
  215. package/dist/auth/oauth/index.d.ts +0 -45
  216. package/dist/auth/oauth/index.d.ts.map +0 -1
  217. package/dist/auth/oauth/index.js +0 -64
  218. package/dist/auth/oauth/index.js.map +0 -1
  219. package/dist/auth/oauth/middleware.d.ts +0 -63
  220. package/dist/auth/oauth/middleware.d.ts.map +0 -1
  221. package/dist/auth/oauth/middleware.js +0 -164
  222. package/dist/auth/oauth/middleware.js.map +0 -1
  223. package/dist/auth/oauth/providers/custom.d.ts +0 -41
  224. package/dist/auth/oauth/providers/custom.d.ts.map +0 -1
  225. package/dist/auth/oauth/providers/custom.js +0 -204
  226. package/dist/auth/oauth/providers/custom.js.map +0 -1
  227. package/dist/auth/oauth/providers/discord.d.ts +0 -23
  228. package/dist/auth/oauth/providers/discord.d.ts.map +0 -1
  229. package/dist/auth/oauth/providers/discord.js +0 -130
  230. package/dist/auth/oauth/providers/discord.js.map +0 -1
  231. package/dist/auth/oauth/providers/facebook.d.ts +0 -28
  232. package/dist/auth/oauth/providers/facebook.d.ts.map +0 -1
  233. package/dist/auth/oauth/providers/facebook.js +0 -124
  234. package/dist/auth/oauth/providers/facebook.js.map +0 -1
  235. package/dist/auth/oauth/providers/github.d.ts +0 -25
  236. package/dist/auth/oauth/providers/github.d.ts.map +0 -1
  237. package/dist/auth/oauth/providers/github.js +0 -132
  238. package/dist/auth/oauth/providers/github.js.map +0 -1
  239. package/dist/auth/oauth/providers/google.d.ts +0 -23
  240. package/dist/auth/oauth/providers/google.d.ts.map +0 -1
  241. package/dist/auth/oauth/providers/google.js +0 -134
  242. package/dist/auth/oauth/providers/google.js.map +0 -1
  243. package/dist/auth/oauth/providers/microsoft.d.ts +0 -28
  244. package/dist/auth/oauth/providers/microsoft.d.ts.map +0 -1
  245. package/dist/auth/oauth/providers/microsoft.js +0 -136
  246. package/dist/auth/oauth/providers/microsoft.js.map +0 -1
  247. package/dist/auth/oauth/types.d.ts +0 -158
  248. package/dist/auth/oauth/types.d.ts.map +0 -1
  249. package/dist/auth/oauth/types.js +0 -4
  250. package/dist/auth/oauth/types.js.map +0 -1
  251. package/dist/auth/password.d.ts +0 -25
  252. package/dist/auth/password.d.ts.map +0 -1
  253. package/dist/auth/password.js +0 -93
  254. package/dist/auth/password.js.map +0 -1
  255. package/dist/auth/rbac.d.ts +0 -10
  256. package/dist/auth/rbac.d.ts.map +0 -1
  257. package/dist/auth/rbac.js +0 -34
  258. package/dist/auth/rbac.js.map +0 -1
  259. package/dist/auth/session.d.ts +0 -26
  260. package/dist/auth/session.d.ts.map +0 -1
  261. package/dist/auth/session.js +0 -134
  262. package/dist/auth/session.js.map +0 -1
  263. package/dist/cache/index.d.ts +0 -4
  264. package/dist/cache/index.d.ts.map +0 -1
  265. package/dist/cache/index.js +0 -25
  266. package/dist/cache/index.js.map +0 -1
  267. package/dist/cache/store.d.ts +0 -58
  268. package/dist/cache/store.d.ts.map +0 -1
  269. package/dist/cache/store.js +0 -298
  270. package/dist/cache/store.js.map +0 -1
  271. package/dist/cron/parser.d.ts +0 -2
  272. package/dist/cron/parser.d.ts.map +0 -1
  273. package/dist/cron/parser.js +0 -52
  274. package/dist/cron/parser.js.map +0 -1
  275. package/dist/cron/scheduler.d.ts +0 -23
  276. package/dist/cron/scheduler.d.ts.map +0 -1
  277. package/dist/cron/scheduler.js +0 -114
  278. package/dist/cron/scheduler.js.map +0 -1
  279. package/dist/database/adapters/mongodb.d.ts +0 -58
  280. package/dist/database/adapters/mongodb.d.ts.map +0 -1
  281. package/dist/database/adapters/mongodb.js +0 -264
  282. package/dist/database/adapters/mongodb.js.map +0 -1
  283. package/dist/database/adapters/mysql.d.ts +0 -27
  284. package/dist/database/adapters/mysql.d.ts.map +0 -1
  285. package/dist/database/adapters/mysql.js +0 -188
  286. package/dist/database/adapters/mysql.js.map +0 -1
  287. package/dist/database/adapters/postgres.d.ts +0 -28
  288. package/dist/database/adapters/postgres.d.ts.map +0 -1
  289. package/dist/database/adapters/postgres.js +0 -174
  290. package/dist/database/adapters/postgres.js.map +0 -1
  291. package/dist/database/adapters/sqlite.d.ts +0 -27
  292. package/dist/database/adapters/sqlite.d.ts.map +0 -1
  293. package/dist/database/adapters/sqlite.js +0 -149
  294. package/dist/database/adapters/sqlite.js.map +0 -1
  295. package/dist/database/index.d.ts +0 -42
  296. package/dist/database/index.d.ts.map +0 -1
  297. package/dist/database/index.js +0 -58
  298. package/dist/database/index.js.map +0 -1
  299. package/dist/database/manager.d.ts +0 -141
  300. package/dist/database/manager.d.ts.map +0 -1
  301. package/dist/database/manager.js +0 -337
  302. package/dist/database/manager.js.map +0 -1
  303. package/dist/database/migration.d.ts +0 -57
  304. package/dist/database/migration.d.ts.map +0 -1
  305. package/dist/database/migration.js +0 -329
  306. package/dist/database/migration.js.map +0 -1
  307. package/dist/database/query-builder.d.ts +0 -95
  308. package/dist/database/query-builder.d.ts.map +0 -1
  309. package/dist/database/query-builder.js +0 -404
  310. package/dist/database/query-builder.js.map +0 -1
  311. package/dist/database/sql/index.d.ts +0 -18
  312. package/dist/database/sql/index.d.ts.map +0 -1
  313. package/dist/database/sql/index.js +0 -74
  314. package/dist/database/sql/index.js.map +0 -1
  315. package/dist/database/sql/schema.d.ts +0 -38
  316. package/dist/database/sql/schema.d.ts.map +0 -1
  317. package/dist/database/sql/schema.js +0 -80
  318. package/dist/database/sql/schema.js.map +0 -1
  319. package/dist/database/synchronizer.d.ts +0 -12
  320. package/dist/database/synchronizer.d.ts.map +0 -1
  321. package/dist/database/synchronizer.js +0 -82
  322. package/dist/database/synchronizer.js.map +0 -1
  323. package/dist/database/types.d.ts +0 -184
  324. package/dist/database/types.d.ts.map +0 -1
  325. package/dist/database/types.js +0 -4
  326. package/dist/database/types.js.map +0 -1
  327. package/dist/dataloader/dataloader.d.ts +0 -23
  328. package/dist/dataloader/dataloader.d.ts.map +0 -1
  329. package/dist/dataloader/dataloader.js +0 -98
  330. package/dist/dataloader/dataloader.js.map +0 -1
  331. package/dist/dataloader/index.d.ts +0 -3
  332. package/dist/dataloader/index.d.ts.map +0 -1
  333. package/dist/dataloader/index.js +0 -19
  334. package/dist/dataloader/index.js.map +0 -1
  335. package/dist/dataloader/registry.d.ts +0 -17
  336. package/dist/dataloader/registry.d.ts.map +0 -1
  337. package/dist/dataloader/registry.js +0 -47
  338. package/dist/dataloader/registry.js.map +0 -1
  339. package/dist/dev/dep-graph.d.ts +0 -2
  340. package/dist/dev/dep-graph.d.ts.map +0 -1
  341. package/dist/dev/dep-graph.js +0 -111
  342. package/dist/dev/dep-graph.js.map +0 -1
  343. package/dist/dev/hot-reload.d.ts +0 -30
  344. package/dist/dev/hot-reload.d.ts.map +0 -1
  345. package/dist/dev/hot-reload.js +0 -262
  346. package/dist/dev/hot-reload.js.map +0 -1
  347. package/dist/docs/content/adapters.mdx +0 -199
  348. package/dist/docs/content/cache.mdx +0 -239
  349. package/dist/docs/content/circuit-breaker.mdx +0 -130
  350. package/dist/docs/content/cron.mdx +0 -109
  351. package/dist/docs/content/database.mdx +0 -278
  352. package/dist/docs/content/gateways.mdx +0 -376
  353. package/dist/docs/content/oauth.mdx +0 -179
  354. package/dist/docs/content/queues.mdx +0 -177
  355. package/dist/docs/content/rpc.mdx +0 -146
  356. package/dist/docs/content/sse.mdx +0 -159
  357. package/dist/docs/content/websockets.mdx +0 -289
  358. package/dist/docs/integrations/README.md +0 -23
  359. package/dist/docs/integrations/jwt.mdx +0 -151
  360. package/dist/docs/integrations/mongo.mdx +0 -183
  361. package/dist/docs/integrations/observability.mdx +0 -125
  362. package/dist/docs/integrations/openai.mdx +0 -108
  363. package/dist/docs/integrations/postgres.mdx +0 -190
  364. package/dist/docs/integrations/posthog.mdx +0 -122
  365. package/dist/docs/integrations/redis.mdx +0 -141
  366. package/dist/docs/integrations/resend.mdx +0 -117
  367. package/dist/docs/integrations/s3.mdx +0 -122
  368. package/dist/docs/integrations/swagger.mdx +0 -113
  369. package/dist/docs/reference/adapters.mdx +0 -130
  370. package/dist/docs/reference/auth.mdx +0 -183
  371. package/dist/docs/reference/cache.mdx +0 -132
  372. package/dist/docs/reference/circuit-breaker.mdx +0 -71
  373. package/dist/docs/reference/queue.mdx +0 -155
  374. package/dist/docs/reference/storage.mdx +0 -116
  375. package/dist/docs/reference/swagger.mdx +0 -132
  376. package/dist/integrations/drizzle.d.ts +0 -10
  377. package/dist/integrations/drizzle.d.ts.map +0 -1
  378. package/dist/integrations/drizzle.js +0 -34
  379. package/dist/integrations/drizzle.js.map +0 -1
  380. package/dist/integrations/jwt.d.ts +0 -12
  381. package/dist/integrations/jwt.d.ts.map +0 -1
  382. package/dist/integrations/jwt.js +0 -29
  383. package/dist/integrations/jwt.js.map +0 -1
  384. package/dist/integrations/mongodb.d.ts +0 -13
  385. package/dist/integrations/mongodb.d.ts.map +0 -1
  386. package/dist/integrations/mongodb.js +0 -48
  387. package/dist/integrations/mongodb.js.map +0 -1
  388. package/dist/integrations/mongoose.d.ts +0 -13
  389. package/dist/integrations/mongoose.d.ts.map +0 -1
  390. package/dist/integrations/mongoose.js +0 -84
  391. package/dist/integrations/mongoose.js.map +0 -1
  392. package/dist/integrations/openai.d.ts +0 -12
  393. package/dist/integrations/openai.d.ts.map +0 -1
  394. package/dist/integrations/openai.js +0 -47
  395. package/dist/integrations/openai.js.map +0 -1
  396. package/dist/integrations/postgres.d.ts +0 -13
  397. package/dist/integrations/postgres.d.ts.map +0 -1
  398. package/dist/integrations/postgres.js +0 -55
  399. package/dist/integrations/postgres.js.map +0 -1
  400. package/dist/integrations/posthog.d.ts +0 -13
  401. package/dist/integrations/posthog.d.ts.map +0 -1
  402. package/dist/integrations/posthog.js +0 -49
  403. package/dist/integrations/posthog.js.map +0 -1
  404. package/dist/integrations/prisma.d.ts +0 -10
  405. package/dist/integrations/prisma.d.ts.map +0 -1
  406. package/dist/integrations/prisma.js +0 -39
  407. package/dist/integrations/prisma.js.map +0 -1
  408. package/dist/integrations/redis.d.ts +0 -12
  409. package/dist/integrations/redis.d.ts.map +0 -1
  410. package/dist/integrations/redis.js +0 -48
  411. package/dist/integrations/redis.js.map +0 -1
  412. package/dist/integrations/resend.d.ts +0 -12
  413. package/dist/integrations/resend.d.ts.map +0 -1
  414. package/dist/integrations/resend.js +0 -47
  415. package/dist/integrations/resend.js.map +0 -1
  416. package/dist/integrations/s3.d.ts +0 -15
  417. package/dist/integrations/s3.d.ts.map +0 -1
  418. package/dist/integrations/s3.js +0 -60
  419. package/dist/integrations/s3.js.map +0 -1
  420. package/dist/integrations/supabase.d.ts +0 -13
  421. package/dist/integrations/supabase.d.ts.map +0 -1
  422. package/dist/integrations/supabase.js +0 -51
  423. package/dist/integrations/supabase.js.map +0 -1
  424. package/dist/middleware/cache.d.ts +0 -21
  425. package/dist/middleware/cache.d.ts.map +0 -1
  426. package/dist/middleware/cache.js +0 -156
  427. package/dist/middleware/cache.js.map +0 -1
  428. package/dist/observability/health.d.ts +0 -23
  429. package/dist/observability/health.d.ts.map +0 -1
  430. package/dist/observability/health.js +0 -49
  431. package/dist/observability/health.js.map +0 -1
  432. package/dist/observability/index.d.ts +0 -4
  433. package/dist/observability/index.d.ts.map +0 -1
  434. package/dist/observability/index.js +0 -10
  435. package/dist/observability/index.js.map +0 -1
  436. package/dist/observability/metrics.d.ts +0 -6
  437. package/dist/observability/metrics.d.ts.map +0 -1
  438. package/dist/observability/metrics.js +0 -60
  439. package/dist/observability/metrics.js.map +0 -1
  440. package/dist/observability/otel.d.ts +0 -27
  441. package/dist/observability/otel.d.ts.map +0 -1
  442. package/dist/observability/otel.js +0 -45
  443. package/dist/observability/otel.js.map +0 -1
  444. package/dist/observability/prometheus.d.ts +0 -30
  445. package/dist/observability/prometheus.d.ts.map +0 -1
  446. package/dist/observability/prometheus.js +0 -31
  447. package/dist/observability/prometheus.js.map +0 -1
  448. package/dist/queue/client.d.ts +0 -13
  449. package/dist/queue/client.d.ts.map +0 -1
  450. package/dist/queue/client.js +0 -83
  451. package/dist/queue/client.js.map +0 -1
  452. package/dist/queue/drivers/MemoryDriver.d.ts +0 -21
  453. package/dist/queue/drivers/MemoryDriver.d.ts.map +0 -1
  454. package/dist/queue/drivers/MemoryDriver.js +0 -176
  455. package/dist/queue/drivers/MemoryDriver.js.map +0 -1
  456. package/dist/queue/drivers/RedisDriver.d.ts +0 -19
  457. package/dist/queue/drivers/RedisDriver.d.ts.map +0 -1
  458. package/dist/queue/drivers/RedisDriver.js +0 -130
  459. package/dist/queue/drivers/RedisDriver.js.map +0 -1
  460. package/dist/queue/index.d.ts +0 -18
  461. package/dist/queue/index.d.ts.map +0 -1
  462. package/dist/queue/index.js +0 -37
  463. package/dist/queue/index.js.map +0 -1
  464. package/dist/queue/manager.d.ts +0 -18
  465. package/dist/queue/manager.d.ts.map +0 -1
  466. package/dist/queue/manager.js +0 -59
  467. package/dist/queue/manager.js.map +0 -1
  468. package/dist/queue/types.d.ts +0 -55
  469. package/dist/queue/types.d.ts.map +0 -1
  470. package/dist/queue/types.js.map +0 -1
  471. package/dist/queue/worker.d.ts +0 -18
  472. package/dist/queue/worker.d.ts.map +0 -1
  473. package/dist/queue/worker.js +0 -176
  474. package/dist/queue/worker.js.map +0 -1
  475. package/dist/router/gateway.d.ts.map +0 -1
  476. package/dist/router/gateway.js +0 -11
  477. package/dist/router/gateway.js.map +0 -1
  478. package/dist/server/bun-adapter.d.ts.map +0 -1
  479. package/dist/server/bun-adapter.js.map +0 -1
  480. package/dist/server/sse.d.ts +0 -16
  481. package/dist/server/sse.d.ts.map +0 -1
  482. package/dist/server/sse.js +0 -51
  483. package/dist/server/sse.js.map +0 -1
  484. package/dist/server/uws-adapter.d.ts.map +0 -1
  485. package/dist/server/uws-adapter.js.map +0 -1
  486. package/dist/storage/index.d.ts +0 -15
  487. package/dist/storage/index.d.ts.map +0 -1
  488. package/dist/storage/index.js +0 -7
  489. package/dist/storage/index.js.map +0 -1
  490. package/dist/swagger/index.d.ts +0 -9
  491. package/dist/swagger/index.d.ts.map +0 -1
  492. package/dist/swagger/index.js +0 -165
  493. package/dist/swagger/index.js.map +0 -1
  494. package/dist/threads/pool.d.ts +0 -14
  495. package/dist/threads/pool.d.ts.map +0 -1
  496. package/dist/threads/pool.js +0 -93
  497. package/dist/threads/pool.js.map +0 -1
  498. package/dist/threads/worker-runner.d.ts +0 -2
  499. package/dist/threads/worker-runner.d.ts.map +0 -1
  500. package/dist/threads/worker-runner.js +0 -71
  501. package/dist/threads/worker-runner.js.map +0 -1
  502. package/dist/validator/validator.d.ts +0 -360
  503. package/dist/validator/validator.d.ts.map +0 -1
  504. package/dist/validator/validator.js +0 -931
  505. package/dist/validator/validator.js.map +0 -1
  506. package/dist/websocket/orchestrator.d.ts +0 -11
  507. package/dist/websocket/orchestrator.d.ts.map +0 -1
  508. package/dist/websocket/orchestrator.js +0 -238
  509. package/dist/websocket/orchestrator.js.map +0 -1
  510. package/dist/websocket/server.d.ts +0 -66
  511. package/dist/websocket/server.d.ts.map +0 -1
  512. package/dist/websocket/server.js +0 -158
  513. package/dist/websocket/server.js.map +0 -1
  514. package/dist/websocket/socket.d.ts +0 -119
  515. package/dist/websocket/socket.d.ts.map +0 -1
  516. package/dist/websocket/socket.js +0 -242
  517. 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