exisjs 0.6.1 → 0.7.1

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