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,27 +1,25 @@
1
1
  # Decorators
2
2
 
3
- ExisJS provides standard ES6 decorators for developers who prefer the Object-Oriented Programming (OOP) paradigm (inspired by NestJS).
3
+ ExisJS provides standard ECMAScript decorators for developers who prefer the Object-Oriented Programming (OOP) paradigm.
4
4
 
5
- Because ExisJS does not rely on reflection libraries like `reflect-metadata`, these decorators are fast and memory-efficient.
5
+ Because ExisJS does not rely on reflection libraries like `reflect-metadata`, these decorators are fast, lightweight, and memory-efficient.
6
6
 
7
7
  All decorators can be imported directly from `exisjs/decorators`.
8
8
 
9
9
  ---
10
10
 
11
- ## 1. Servers & Gateways
11
+ ## 1. Application & Boundary Decorators
12
12
 
13
- ExisJS allows you to configure your root application and directory-scoped gateways using decorators, replacing the need for functional `exis()` and `defineGateway()` wrappers if you prefer OOP.
13
+ ExisJS allows you to configure your root application and directory-scoped boundaries using decorators.
14
14
 
15
15
  ### `@Server(config)`
16
- Used exclusively in your `src/http/server.ts` file to bootstrap the application.
16
+ Used in your entry point (e.g. `src/http/server.ts`) to configure plugins and root providers in an OOP style:
17
17
 
18
18
  ```typescript filename="src/http/server.ts"
19
19
  import { Server } from 'exisjs/decorators'
20
- import { metricsPlugin } from './plugins/metrics'
21
20
  import type { App } from 'exisjs'
22
21
 
23
22
  @Server({
24
- plugins: [metricsPlugin],
25
23
  providers: [['Logger', { useValue: console }]]
26
24
  })
27
25
  export default class RootServer {
@@ -31,44 +29,65 @@ export default class RootServer {
31
29
  }
32
30
  ```
33
31
 
34
- ### `@Gateway(config)`
35
- Used inside any folder (e.g. `src/http/admin/gateway.ts`) to act as a gatekeeper for all routes within that directory and its subdirectories.
32
+ ### `@Boundary(config)`
33
+ Used inside any folder (e.g. `src/http/admin/boundary.ts`) to configure folder-scoped CORS, headers, exclusions, and DI providers:
36
34
 
37
- ```typescript filename="src/http/admin/gateway.ts"
38
- import { Gateway } from 'exisjs/decorators'
39
- import { requireAuth } from '../../middleware/auth'
35
+ ```typescript filename="src/http/admin/boundary.ts"
36
+ import { Boundary } from 'exisjs/decorators'
37
+ import type { Request, Response, Next, BoundaryContext } from 'exisjs/router'
38
+ import { UnauthorizedError } from 'exisjs/error'
40
39
 
41
- @Gateway({
42
- middleware: [requireAuth],
43
- cors: { origin: 'https://admin.com' },
44
- timeout: 10000,
45
- metadata: { openapi: { tags: ['Admin'] } }
40
+ @Boundary({
41
+ cors: { origin: 'https://admin.yourdomain.com', credentials: true },
42
+ headers: { 'X-Admin-Api-Version': '2.0' },
43
+ exclude: ['/admin/health'],
46
44
  })
47
- export default class AdminGateway {}
45
+ export default class AdminBoundary {
46
+ // Chain step auto-detected by (req, res, next) signature
47
+ requireAuth(req: Request, res: Response, next: Next) {
48
+ if (!req.headers['x-api-key']) {
49
+ throw new UnauthorizedError('Missing API key')
50
+ }
51
+ next()
52
+ }
53
+
54
+ // Request wrapper auto-detected by handle(ctx, next)
55
+ async handle(ctx: BoundaryContext, next: Next) {
56
+ const start = Date.now()
57
+ const result = await next()
58
+ ctx.res.setHeader('X-Response-Time', `${Date.now() - start}ms`)
59
+ return result
60
+ }
61
+ }
48
62
  ```
49
63
 
50
64
  ---
51
65
 
52
- ## 1. Controllers & Routing
66
+ ## 2. Controllers & Routing
53
67
 
54
- To map a class to a route prefix, use the `@Controller()` decorator. You can then use HTTP Method decorators to map class methods to specific endpoints.
68
+ To map a class to a route prefix, use the `@Controller()` decorator. HTTP method decorators then map class methods to specific endpoints.
55
69
 
56
70
  ```typescript filename="src/http/users/route.ts"
57
- import { Controller, Get, Post, Put, Delete } from 'exisjs/decorators'
71
+ import { Controller, Get, Post, Put, Patch, Delete } from 'exisjs/decorators'
72
+ import { UserParamsSchema, CreateUserSchema } from './schema'
58
73
 
59
74
  @Controller('/users')
60
75
  export default class UsersController {
61
-
62
76
  @Get('/')
63
77
  async listUsers() {
64
78
  return { users: [] }
65
79
  }
66
80
 
67
- @Post('/create')
81
+ @Get('/:id', UserParamsSchema)
82
+ async getUser() {
83
+ return { id: 1 }
84
+ }
85
+
86
+ @Post('/', CreateUserSchema)
68
87
  async createUser() {
69
88
  return { success: true }
70
89
  }
71
-
90
+
72
91
  @Delete('/:id')
73
92
  async deleteUser() {}
74
93
  }
@@ -82,22 +101,21 @@ export default class UsersController {
82
101
  - `@Delete(path?, schema?)`
83
102
  - `@Options(path?, schema?)`
84
103
  - `@Head(path?, schema?)`
104
+ - `@Connect(path?, schema?)`
105
+ - `@Trace(path?, schema?)`
85
106
  - `@All(path?, schema?)`
86
- - `@Ws(path?, schema?)` (For WebSockets)
87
- - `@Sse(path?, schema?)` (For Server-Sent Events)
88
107
 
89
108
  ---
90
109
 
91
- ## 2. Request Parameters
110
+ ## 3. Request Parameters
92
111
 
93
- Instead of manually digging through the `req` object, ExisJS allows you to inject request properties directly into your method parameters.
112
+ Parameter decorators extract request properties and inject them directly into your method parameters:
94
113
 
95
114
  ```typescript filename="src/http/users/route.ts"
96
115
  import { Controller, Post, Body, Param, Headers, Req, Res } from 'exisjs/decorators'
97
116
 
98
117
  @Controller('/users')
99
118
  export default class UsersController {
100
-
101
119
  @Post('/:id')
102
120
  async update(
103
121
  @Param('id') id: string,
@@ -112,93 +130,102 @@ export default class UsersController {
112
130
  ```
113
131
 
114
132
  ### Available Parameter Decorators
115
- - `@Body(key?)` - Extracts `req.body` or a specific key.
116
- - `@Param(key?)` - Extracts `req.params` or a specific key.
117
- - `@Query(key?)` - Extracts `req.query` or a specific key.
118
- - `@Headers(key?)` - Extracts `req.headers` or a specific key.
119
- - `@Req()` - Injects the underlying `ExisRequest` object.
120
- - `@Res({ passthrough?: boolean })` - Injects the underlying `ExisResponse` object.
121
- - `@Ip()` - Extracts the client IP address.
122
- - `@Next()` - Injects the `next()` function for middleware bypass.
123
- - `@Session()` - Injects `req.session` (if a session plugin is active).
124
- - `@Socket()` - Injects the `ExisWebSocket` (only valid in `@Ws` routes).
125
- - `@Stream()` - Injects the `ExisSSE` stream (only valid in `@Sse` routes).
126
- - `@UploadedFile()` / `@UploadedFiles()` - Automatically extracts multipart form-data files.
133
+ - `@Body(nameOrPipe?)` — Extracts `req.body` or runs through a validation schema/pipe.
134
+ - `@Param(nameOrPipe?)` — Extracts a route path param (e.g. `:id`).
135
+ - `@Headers(nameOrPipe?)` — Extracts a request header by name.
136
+ - `@HostParam(nameOrPipe?)` — Extracts a host subdomain parameter.
137
+ - `@Req()` — Injects the raw request object.
138
+ - `@Res(options?)` — Injects the response object (e.g. `{ passthrough: true }`).
139
+ - `@Ip()` — Injects the client IP address.
140
+ - `@Next()` — Injects the `next` function.
127
141
 
128
142
  ---
129
143
 
130
- ## 3. Middleware & Lifecycles
144
+ ## 4. Middleware & Pipeline Decorators
131
145
 
132
- You can bind Middleware, Guards, Exception Filters, and Interceptors directly to your Controllers or individual methods using decorators.
146
+ You can bind middleware, rate limiting, and idempotency to controllers or route methods using `@Use()` and utility decorators:
133
147
 
134
- ```typescript filename="src/http/admin/route.ts"
135
- import { Controller, Get, Use, UseGuards, UseFilters } from 'exisjs/decorators'
148
+ ```typescript filename="src/http/checkout/route.ts"
149
+ import { Controller, Post, Use, Idempotent } from 'exisjs/decorators'
136
150
  import { requireAuth } from '../../middleware/auth'
137
- import { RoleGuard } from '../../guards/role'
138
- import { AdminErrorFilter } from '../../filters/admin'
139
-
140
- @Controller('/admin')
141
- @Use(requireAuth) // Applies to the entire class
142
- @UseFilters(AdminErrorFilter) // Applies to the entire class
143
- export default class AdminController {
144
-
145
- @Get('/dashboard')
146
- @UseGuards(RoleGuard) // Applies ONLY to this method
147
- async getDashboard() {
148
- return { secret: 'data' }
151
+
152
+ @Controller('/checkout')
153
+ @Use(requireAuth) // Applies to all routes in this controller
154
+ export default class CheckoutController {
155
+ @Post('/')
156
+ @Idempotent({ ttlMs: 86400000 }) // In-memory off-heap idempotency protection
157
+ async processPayment() {
158
+ return { success: true }
149
159
  }
150
160
  }
151
161
  ```
152
162
 
153
- ### Available Lifecycle Decorators
154
- - `@Use(...middlewares)` - Binds standard Express-style middleware.
155
- - `@UseGuards(...guards)` - Binds ExisJS authorization Guards.
156
- - `@UseInterceptors(...interceptors)` - Binds response Interceptors.
157
- - `@UseFilters(...filters)` - Binds Exception Filters.
163
+ ### Available Lifecycle & Middleware Decorators
164
+ - `@Use(...middlewares)` — Attaches middleware functions to a class or method.
165
+ - `@Idempotent(options?)` — Caches responses based on the `Idempotency-Key` header using off-heap native memory.
158
166
 
159
167
  ---
160
168
 
161
- ## 4. Response Modifiers
169
+ ## 5. Response Modifiers
162
170
 
163
- Sometimes you need to modify the HTTP Response (like changing the status code or adding a header) without injecting the raw `@Res()` object.
171
+ Modify HTTP response status codes, redirect clients, or set headers declaratively:
164
172
 
165
173
  ```typescript filename="src/http/api/route.ts"
166
- import { Controller, Post, HttpCode, Header, Redirect } from 'exisjs/decorators'
174
+ import { Controller, Post, Get, HttpCode, Header, Redirect } from 'exisjs/decorators'
167
175
 
168
176
  @Controller('/api')
169
177
  export default class ApiController {
170
-
171
178
  @Post('/create')
172
- @HttpCode(201) // Forces the response status to 201 Created
173
- @Header('X-Custom-Version', '2.0') // Appends a custom header
179
+ @HttpCode(201) // Forces 201 Created
180
+ @Header('X-Custom-Version', '2.0')
174
181
  async create() {
175
182
  return { success: true }
176
183
  }
177
-
184
+
178
185
  @Get('/legacy')
179
- @Redirect('/new-api', 301) // Automatically redirects the client
186
+ @Redirect('/new-api', 301)
180
187
  async legacy() {}
181
188
  }
182
189
  ```
183
190
 
184
191
  ### Available Response & Metadata Decorators
185
- - `@HttpCode(code: number)`
186
- - `@Header(name: string, value: string)`
187
- - `@Redirect(url: string, statusCode?: number)`
188
- - `@Hosts(...hosts: string[])` - Restricts a route/controller to a specific Host header (e.g. `api.example.com`).
189
- - `@Permissions(...permissions: string[])` - Restricts a route/controller to users with specific permissions.
192
+ - `@HttpCode(code: number)` — Sets the response HTTP status code.
193
+ - `@Header(name: string, value: string)` — Injects a response header.
194
+ - `@Returns(schema)` — Attaches response schema for OpenAPI/Swagger generation.
195
+ - `@Redirect(url: string, statusCode?: number)` — Redirects the client.
196
+ - `@Permissions(...permissions: string[])` — Attaches route permissions metadata.
197
+ - `@Hosts(...hosts: string[])` — Restricts route/controller to specific Host headers.
190
198
 
191
199
  ---
192
200
 
193
- ## 5. Dependency Injection
201
+ ## 6. Dependency Injection
194
202
 
195
- To mark a class as a service that can be injected into your controllers, use the `@Injectable()` decorator.
203
+ To mark a service class as an injectable provider for the IoC container, use the `@Injectable()` decorator:
196
204
 
197
- ```typescript filename="src/services/db.ts"
205
+ ```typescript filename="src/http/users/service.ts"
198
206
  import { Injectable } from 'exisjs/decorators'
199
207
 
200
208
  @Injectable({ scope: 'singleton' })
201
- export class DatabaseService {
202
- async findUser() { ... }
209
+ export class UserService {
210
+ async fetchUser(id: string) {
211
+ return { id, name: 'Alice' }
212
+ }
213
+ }
214
+ ```
215
+
216
+ Inside your route classes or controllers, inject services via constructor injection:
217
+
218
+ ```typescript filename="src/http/users/route.ts"
219
+ import { Controller, Get, Param } from 'exisjs/decorators'
220
+ import { UserService } from './service'
221
+
222
+ @Controller('/users')
223
+ export default class UsersController {
224
+ constructor(private userService: UserService) {}
225
+
226
+ @Get('/:id')
227
+ async getUser(@Param('id') id: string) {
228
+ return this.userService.fetchUser(id)
229
+ }
203
230
  }
204
231
  ```
@@ -20,9 +20,28 @@ Please make sure that **Node.js (version >= 20)** is installed on your operating
20
20
  Setting up a new project can be done using our CLI tool. Open your terminal and run the following command to scaffold a new ExisJS project:
21
21
 
22
22
  <div className="my-6 max-w-lg">
23
- <CopyCommand command="npx @exisjs/create@latest my-backend" />
23
+ <CopyCommand command="npm create exisjs@latest my-backend" />
24
24
  </div>
25
25
 
26
+ You can also use your package manager of choice:
27
+
28
+ ```bash
29
+ # npm
30
+ $ npm create exisjs@latest my-backend
31
+
32
+ # pnpm
33
+ $ pnpm create exisjs my-backend
34
+
35
+ # yarn
36
+ $ yarn create exisjs my-backend
37
+
38
+ # bun
39
+ $ bun create exisjs my-backend
40
+
41
+ # npx
42
+ $ npx create-exisjs@latest my-backend
43
+ ```
44
+
26
45
  The CLI will prompt you with a few simple questions to customize your project:
27
46
 
28
47
  ```text filename="Terminal"