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,175 +1,76 @@
1
1
  ---
2
- nextUrl: "/docs/circuit-breaker"
3
- nextTitle: "Circuit Breaker"
2
+ nextUrl: "/docs/structure"
3
+ nextTitle: "Project Structure"
4
4
  ---
5
5
 
6
- # Security & Authentication
6
+ # Security & Edge Middleware
7
7
 
8
- ExisJS includes native implementations for Cryptography, JWT generation, Role-Based Access Control (RBAC), and Edge Security.
8
+ ExisJS provides native, zero-dependency edge and request security middleware built directly into core.
9
9
 
10
10
  ---
11
11
 
12
- ## 1. Password Hashing (Scrypt)
12
+ ## 1. Edge Security Middlewares
13
13
 
14
- ExisJS includes a password hashing engine powered by Node.js's built-in `crypto.scrypt`.
14
+ The following security middlewares are available from `exisjs/middleware` and can be registered globally in `server.ts` or scoped to route trees via `boundary.ts`:
15
15
 
16
- It automatically generates a secure salt, derives the key, and formats the output into a single safely-storable string (`scrypt:cost:blockSize:parallelization:keyLength:salt:hash`).
16
+ - `helmet(options?)`: Sets 14+ secure HTTP headers (Strict-Transport-Security, X-Content-Type-Options: nosniff, X-Frame-Options: DENY, and CSP).
17
+ - `csrf(options)`: Enforces the Signed Double Submit Cookie pattern to protect state-changing requests (POST, PUT, DELETE) from CSRF attacks.
18
+ - `hpp()`: Protects against HTTP Parameter Pollution attacks by ensuring array query parameters/form fields are safely handled.
19
+ - `dbSanitize(options?)`: Protects against NoSQL query operator injection (`$where` and other malicious keys) before reaching database layers.
20
+ - `timeout(ms)`: Automatically terminates requests that exceed the specified timeout limit, returning a 503 response.
17
21
 
18
- #### Functional Paradigm
19
-
20
- ```typescript filename="src/http/auth/route.ts"
21
- import { controller, route } from 'exisjs/router'
22
- import { Password } from 'exisjs/auth'
23
-
24
- export default controller({
25
- register: route.post('/register', {
26
- async handle(req, res) {
27
- const plaintext = req.body.password
28
-
29
- // 1. Hash the password
30
- // Uses secure defaults (cost: 16384, block: 8)
31
- const hashedPassword = await Password.hashPassword(plaintext)
32
-
33
- await db.users.create({ password: hashedPassword })
34
- return { success: true }
35
- }
36
- }),
37
-
38
- login: route.post('/login', {
39
- async handle(req, res) {
40
- const user = await db.users.findByEmail(req.body.email)
41
-
42
- // 2. Verify the hash (timing-safe)
43
- const isValid = await Password.verifyPassword(req.body.password, user.password)
44
-
45
- if (!isValid) throw new Error("Invalid credentials")
46
- return { success: true }
47
- }
48
- })
49
- })
50
- ```
51
-
52
- #### Class-Based (OOP) Paradigm
53
-
54
- ```typescript filename="src/http/auth/route.ts"
55
- import { Controller, Post, Body } from 'exisjs/decorators'
56
- import { Password } from 'exisjs/auth'
57
-
58
- @Controller()
59
- export default class AuthController {
60
- @Post('/register')
61
- async register(@Body() body: any) {
62
- const plaintext = body.password
63
-
64
- // 1. Hash the password
65
- // Uses secure defaults (cost: 16384, block: 8)
66
- const hashedPassword = await Password.hashPassword(plaintext)
67
-
68
- await db.users.create({ password: hashedPassword })
69
- return { success: true }
70
- }
22
+ ```typescript filename="src/http/server.ts"
23
+ import { exis } from 'exisjs'
24
+ import { helmet, csrf, timeout, hpp } from 'exisjs/middleware'
71
25
 
72
- @Post('/login')
73
- async login(@Body() body: any) {
74
- const user = await db.users.findByEmail(body.email)
75
-
76
- // 2. Verify the hash (timing-safe)
77
- const isValid = await Password.verifyPassword(body.password, user.password)
78
-
79
- if (!isValid) throw new Error("Invalid credentials")
80
- return { success: true }
26
+ export default exis({
27
+ async onStart(app) {
28
+ app.use(helmet())
29
+ app.use(timeout(10000))
30
+ app.use(hpp())
81
31
  }
82
- }
32
+ })
83
33
  ```
84
34
 
85
35
  ---
86
36
 
87
- ## 2. JSON Web Tokens (JWT)
88
-
89
- ExisJS provides a JWT engine using native `createHmac('sha256')`.
90
-
91
- ```typescript filename="src/http/auth/route.ts"
92
- import { JWT } from 'exisjs/auth'
37
+ ## 2. In-Memory Rate Limiting
93
38
 
94
- // Generate a Token (Expires in 24 hours)
95
- const token = JWT.signJWT({ userId: 123, role: 'admin' }, process.env.JWT_SECRET, {
96
- expiresIn: 86400
97
- })
98
-
99
- // Verify a Token
100
- // Automatically throws 401 Unauthorized or TokenExpiredError if invalid
101
- const payload = JWT.verifyJWT<{ userId: number, role: string }>(token, process.env.JWT_SECRET)
102
- ```
39
+ The core `rateLimit` middleware provides high-performance in-memory and off-heap native rate limiting:
103
40
 
104
- ### Creating an Auth Middleware
105
-
106
- You can wrap this in a gateway middleware to protect entire folders:
107
-
108
- #### Functional Paradigm
41
+ ```typescript filename="src/http/boundary.ts"
42
+ import { defineBoundary } from 'exisjs/router'
43
+ import { rateLimit } from 'exisjs/middleware'
109
44
 
110
- ```typescript filename="src/http/admin/gateway.ts"
111
- import { defineGateway } from 'exisjs/router'
112
- import { JWT } from 'exisjs/auth'
45
+ export const config = defineBoundary({})
113
46
 
114
- export default defineGateway({
115
- middlewares: [
116
- (req, res, next) => {
117
- const token = req.headers.authorization?.split(' ')[1]
118
- // Verifies the token and attaches the payload to the request
119
- req.user = JWT.verifyJWT(token, process.env.JWT_SECRET)
120
- next()
121
- }
122
- ]
47
+ // Apply rate limiting chain step across the boundary
48
+ export const limiter = rateLimit({
49
+ windowMs: 60 * 1000, // 1 minute
50
+ max: 100, // 100 requests per minute
51
+ message: 'Too many requests from this IP, please try again after a minute'
123
52
  })
124
53
  ```
125
54
 
126
- #### Class-Based (OOP) Paradigm
127
-
128
- ```typescript filename="src/http/admin/gateway.ts"
129
- import { Gateway } from 'exisjs/decorators'
130
- import { JWT } from 'exisjs/auth'
131
-
132
- @Gateway({
133
- middlewares: [
134
- (req, res, next) => {
135
- const token = req.headers.authorization?.split(' ')[1]
136
- req.user = JWT.verifyJWT(token, process.env.JWT_SECRET)
137
- next()
138
- }
139
- ]
140
- })
141
- export default class AdminGateway {}
142
- ```
55
+ > [!NOTE]
56
+ > The core `rateLimit` middleware runs using an in-memory native off-heap store. For distributed, multi-instance rate limiting backed by Redis, use `@exisjs/cache`.
143
57
 
144
58
  ---
145
59
 
146
- ## 3. Role-Based Access Control (RBAC)
60
+ ## 3. Role-Based Access Control (RBAC) Metadata
147
61
 
148
- Once your user is authenticated and their payload is attached to `req.user`, ExisJS provides native Role-Based Access Control right inside the route configuration. You don't need any custom middlewares for this.
62
+ ExisJS allows declarative permission metadata to be attached to routes:
149
63
 
150
64
  #### Functional Paradigm
151
65
 
152
66
  ```typescript filename="src/http/admin/route.ts"
153
67
  import { controller, route } from 'exisjs/router'
154
- import { parseUser } from '../middlewares/auth.js'
155
68
 
156
69
  export default controller({
157
- // Intercepts the request and checks req.user.permissions (or req.user.role)
158
- // before the handler even executes. Throws 403 Forbidden if missing.
159
- deleteDatabase: route.delete('/db', {
160
- permissions: ['superadmin'],
161
- middleware: [parseUser()],
162
- handle() {
163
- return { success: true }
164
- }
165
- }),
166
-
167
- // Accepts an array of allowed permissions
168
- viewDashboard: route.get('/dashboard', {
169
- permissions: ['admin', 'superadmin', 'manager'],
170
- middleware: [parseUser()],
171
- handle() {
172
- return { metrics: [] }
70
+ deleteItem: route.delete('/:id', {
71
+ permissions: ['admin'],
72
+ handle({ params }) {
73
+ return { success: true, deleted: params.id }
173
74
  }
174
75
  })
175
76
  })
@@ -178,117 +79,14 @@ export default controller({
178
79
  #### Class-Based (OOP) Paradigm
179
80
 
180
81
  ```typescript filename="src/http/admin/route.ts"
181
- import { Controller, Delete, Get, Use, Permissions } from 'exisjs/decorators'
182
- import { parseUser } from '../middlewares/auth.js'
82
+ import { Controller, Delete, Param, Permissions } from 'exisjs/decorators'
183
83
 
184
- @Use(parseUser())
185
84
  @Controller()
186
85
  export default class AdminController {
187
- // Only users with superadmin permission can access this
188
- @Permissions('superadmin')
189
- @Delete('/db')
190
- async deleteDatabase() {
191
- return { success: true }
192
- }
193
-
194
- // Accepts an array of allowed permissions
195
- @Permissions(['admin', 'superadmin', 'manager'])
196
- @Get('/dashboard')
197
- async viewDashboard() {
198
- return { metrics: [] }
86
+ @Permissions('admin')
87
+ @Delete('/:id')
88
+ async deleteItem(@Param('id') id: string) {
89
+ return { success: true, deleted: id }
199
90
  }
200
91
  }
201
92
  ```
202
-
203
- ---
204
-
205
- ## 4. Stateful Sessions
206
-
207
- If you prefer stateful authentication over JWTs, ExisJS ships with a secure session middleware. It securely signs the session cookie (`exis_sid`) and automatically persists changes to `req.session` back to the active store.
208
-
209
- By default, it uses a `MemorySessionStore`, but you can plug in any distributed store (like Redis) by implementing the `SessionStore` interface.
210
-
211
- #### Functional Paradigm
212
-
213
- ```typescript filename="src/http/server.ts"
214
- import { exis } from 'exisjs'
215
- import { session } from 'exisjs/auth'
216
-
217
- export default exis({
218
- async onStart(app) {
219
- // 1. Mount the session globally
220
- app.use(session({
221
- secret: process.env.SESSION_SECRET_KEY, // Must be 32+ chars
222
- ttl: 86400 * 1000 // 1 day
223
- }))
224
- }
225
- })
226
- ```
227
-
228
- #### Class-Based (OOP) Paradigm
229
-
230
- ```typescript filename="src/http/server.ts"
231
- import { Server } from 'exisjs/decorators'
232
- import { session } from 'exisjs/auth'
233
- import type { App } from 'exisjs'
234
-
235
- @Server()
236
- export default class RootServer {
237
- async onStart(app: App) {
238
- // 1. Mount the session globally
239
- app.use(session({
240
- secret: process.env.SESSION_SECRET_KEY, // Must be 32+ chars
241
- ttl: 86400 * 1000 // 1 day
242
- }))
243
- }
244
- }
245
- ```
246
-
247
- #### Functional Paradigm
248
-
249
- ```typescript filename="src/http/cart/route.ts"
250
- import { controller, route } from 'exisjs/router'
251
-
252
- export default controller({
253
- addItem: route.post('/', {
254
- handle(req, res) {
255
- // 2. Read and Write natively to req.session
256
- // ExisJS automatically saves this back to the Store when the request ends
257
- if (!req.session.cart) req.session.cart = []
258
-
259
- req.session.cart.push(req.body.itemId)
260
- return { cart: req.session.cart }
261
- }
262
- })
263
- })
264
- ```
265
-
266
- #### Class-Based (OOP) Paradigm
267
-
268
- ```typescript filename="src/http/cart/route.ts"
269
- import { Controller, Post, Req, Body } from 'exisjs/decorators'
270
-
271
- @Controller()
272
- export default class CartController {
273
- @Post('/')
274
- async addItem(@Req() req: any, @Body() body: any) {
275
- // 2. Read and Write natively to req.session
276
- // ExisJS automatically saves this back to the Store when the request ends
277
- if (!req.session.cart) req.session.cart = []
278
-
279
- req.session.cart.push(body.itemId)
280
- return { cart: req.session.cart }
281
- }
282
- }
283
- ```
284
-
285
- ---
286
-
287
- ## 5. Edge Security Middleware
288
-
289
- As mentioned in the [Middleware Guide](/docs/middleware), you should strongly consider registering the following global security middleware in your `server.ts`:
290
-
291
- - `helmet()`: Enforces Strict-Transport-Security (HSTS), X-Content-Type-Options (nosniff), and prevents Clickjacking (`X-Frame-Options: DENY`).
292
- - `dbSanitize({ mongo: true })`: A universal scraper that strips NoSQL operators (`$where`) to provide defense-in-depth for MongoDB databases.
293
- - `csrf({ secret })`: Enforces the Signed Double Submit Cookie pattern to protect state-changing requests (POST, PUT, DELETE) from Cookie Tossing attacks.
294
- - `hpp()`: HTTP Parameter Pollution protection (removes duplicate array keys).