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,96 +0,0 @@
1
- /**
2
- * OAuth Manager — The core orchestration engine.
3
- *
4
- * Manages OAuth provider registrations, generates authorization URLs with
5
- * PKCE + state, handles the token exchange callback, and normalizes user profiles.
6
- *
7
- * Usage:
8
- * import { OAuth } from 'exisjs/auth'
9
- *
10
- * OAuth.configure({
11
- * google: { clientId: '...', clientSecret: '...', redirectUri: '...' },
12
- * github: { clientId: '...', clientSecret: '...', redirectUri: '...' },
13
- * })
14
- *
15
- * const { url, state, codeVerifier } = OAuth.getAuthUrl('google')
16
- * const { profile, tokens } = await OAuth.handleCallback('google', code, codeVerifier)
17
- */
18
- import type { OAuthProviderConfig, OAuthProviderAdapter, OAuthTokens, OAuthUserProfile, OAuthFlowState, CustomOAuthProviderConfig } from './types';
19
- /**
20
- * Generate a cryptographically random code verifier for PKCE.
21
- */
22
- declare function generateCodeVerifier(): string;
23
- /**
24
- * Derive the code challenge from a code verifier using S256 method.
25
- */
26
- declare function generateCodeChallenge(verifier: string): string;
27
- /**
28
- * Generate a cryptographically random state token for CSRF protection.
29
- */
30
- declare function generateState(): string;
31
- export declare class OAuthManager {
32
- private providers;
33
- /**
34
- * Configure multiple OAuth providers at once.
35
- */
36
- configure(providers: Record<string, OAuthProviderConfig>): this;
37
- /**
38
- * Register a single OAuth provider.
39
- */
40
- register(name: string, config: OAuthProviderConfig): this;
41
- /**
42
- * Register a custom OAuth provider.
43
- */
44
- custom(config: CustomOAuthProviderConfig): this;
45
- /**
46
- * Register a fully custom provider adapter directly.
47
- */
48
- registerAdapter(name: string, adapter: OAuthProviderAdapter): this;
49
- /**
50
- * Generate the authorization URL for a provider.
51
- * Returns the URL, state token, and PKCE code verifier.
52
- */
53
- getAuthUrl(provider: string, options?: {
54
- usePKCE?: boolean;
55
- additionalParams?: Record<string, string>;
56
- }): {
57
- url: string;
58
- state: string;
59
- codeVerifier?: string;
60
- flowState: OAuthFlowState;
61
- };
62
- /**
63
- * Handle the OAuth callback — exchange the authorization code for tokens
64
- * and fetch the user profile.
65
- */
66
- handleCallback(provider: string, code: string, codeVerifier?: string): Promise<{
67
- profile: OAuthUserProfile;
68
- tokens: OAuthTokens;
69
- }>;
70
- /**
71
- * Refresh an expired access token.
72
- */
73
- refreshAccessToken(provider: string, refreshToken: string): Promise<OAuthTokens>;
74
- /**
75
- * Revoke a token.
76
- */
77
- revokeToken(provider: string, token: string): Promise<void>;
78
- /**
79
- * Get a registered provider adapter.
80
- */
81
- getProvider(name: string): OAuthProviderAdapter;
82
- /**
83
- * Check if a provider is registered.
84
- */
85
- hasProvider(name: string): boolean;
86
- /**
87
- * Get all registered provider names.
88
- */
89
- getProviderNames(): string[];
90
- }
91
- /**
92
- * Default global OAuthManager instance.
93
- */
94
- export declare const OAuth: OAuthManager;
95
- export { generateCodeVerifier, generateCodeChallenge, generateState };
96
- //# sourceMappingURL=core.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAEV,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AA2ChB;;GAEG;AACH,iBAAS,oBAAoB,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,iBAAS,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,iBAAS,aAAa,IAAI,MAAM,CAE/B;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAA0C;IAE3D;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI;IAO/D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAMzD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI;IAQ/C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAKlE;;;OAGG;IACH,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GACzE;QACD,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,cAAc,CAAA;KAC1B;IAkCD;;;OAGG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC;IAY9D;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC;IAKvB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAU/C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;CAG7B;AAID;;GAEG;AACH,eAAO,MAAM,KAAK,cAAqB,CAAA;AAGvC,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAA"}
@@ -1,203 +0,0 @@
1
- "use strict";
2
- /**
3
- * OAuth Manager — The core orchestration engine.
4
- *
5
- * Manages OAuth provider registrations, generates authorization URLs with
6
- * PKCE + state, handles the token exchange callback, and normalizes user profiles.
7
- *
8
- * Usage:
9
- * import { OAuth } from 'exisjs/auth'
10
- *
11
- * OAuth.configure({
12
- * google: { clientId: '...', clientSecret: '...', redirectUri: '...' },
13
- * github: { clientId: '...', clientSecret: '...', redirectUri: '...' },
14
- * })
15
- *
16
- * const { url, state, codeVerifier } = OAuth.getAuthUrl('google')
17
- * const { profile, tokens } = await OAuth.handleCallback('google', code, codeVerifier)
18
- */
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.OAuth = exports.OAuthManager = void 0;
21
- exports.generateCodeVerifier = generateCodeVerifier;
22
- exports.generateCodeChallenge = generateCodeChallenge;
23
- exports.generateState = generateState;
24
- const node_crypto_1 = require("node:crypto");
25
- // ─── Provider Factories ──────────────────────────────────────────────────────
26
- function createBuiltInProvider(name, config) {
27
- switch (name) {
28
- case 'google': {
29
- // eslint-disable-next-line @typescript-eslint/no-require-imports
30
- const { GoogleProvider } = require('./providers/google');
31
- return new GoogleProvider(config);
32
- }
33
- case 'github': {
34
- // eslint-disable-next-line @typescript-eslint/no-require-imports
35
- const { GithubProvider } = require('./providers/github');
36
- return new GithubProvider(config);
37
- }
38
- case 'microsoft': {
39
- // eslint-disable-next-line @typescript-eslint/no-require-imports
40
- const { MicrosoftProvider } = require('./providers/microsoft');
41
- return new MicrosoftProvider(config);
42
- }
43
- case 'discord': {
44
- // eslint-disable-next-line @typescript-eslint/no-require-imports
45
- const { DiscordProvider } = require('./providers/discord');
46
- return new DiscordProvider(config);
47
- }
48
- case 'facebook': {
49
- // eslint-disable-next-line @typescript-eslint/no-require-imports
50
- const { FacebookProvider } = require('./providers/facebook');
51
- return new FacebookProvider(config);
52
- }
53
- default:
54
- throw new Error(`Unknown OAuth provider '${name}'. Use OAuth.custom() for custom providers.`);
55
- }
56
- }
57
- // ─── PKCE Helpers ────────────────────────────────────────────────────────────
58
- /**
59
- * Generate a cryptographically random code verifier for PKCE.
60
- */
61
- function generateCodeVerifier() {
62
- return (0, node_crypto_1.randomBytes)(32).toString('base64url');
63
- }
64
- /**
65
- * Derive the code challenge from a code verifier using S256 method.
66
- */
67
- function generateCodeChallenge(verifier) {
68
- return (0, node_crypto_1.createHash)('sha256').update(verifier).digest('base64url');
69
- }
70
- /**
71
- * Generate a cryptographically random state token for CSRF protection.
72
- */
73
- function generateState() {
74
- return (0, node_crypto_1.randomBytes)(24).toString('base64url');
75
- }
76
- // ─── OAuth Manager ───────────────────────────────────────────────────────────
77
- class OAuthManager {
78
- constructor() {
79
- this.providers = new Map();
80
- }
81
- /**
82
- * Configure multiple OAuth providers at once.
83
- */
84
- configure(providers) {
85
- for (const [name, config] of Object.entries(providers)) {
86
- this.register(name, config);
87
- }
88
- return this;
89
- }
90
- /**
91
- * Register a single OAuth provider.
92
- */
93
- register(name, config) {
94
- const adapter = createBuiltInProvider(name, config);
95
- this.providers.set(name, adapter);
96
- return this;
97
- }
98
- /**
99
- * Register a custom OAuth provider.
100
- */
101
- custom(config) {
102
- // eslint-disable-next-line @typescript-eslint/no-require-imports
103
- const { CustomProvider } = require('./providers/custom');
104
- const adapter = new CustomProvider(config);
105
- this.providers.set(config.name, adapter);
106
- return this;
107
- }
108
- /**
109
- * Register a fully custom provider adapter directly.
110
- */
111
- registerAdapter(name, adapter) {
112
- this.providers.set(name, adapter);
113
- return this;
114
- }
115
- /**
116
- * Generate the authorization URL for a provider.
117
- * Returns the URL, state token, and PKCE code verifier.
118
- */
119
- getAuthUrl(provider, options) {
120
- const adapter = this.getProvider(provider);
121
- const state = generateState();
122
- const usePKCE = options?.usePKCE !== false; // PKCE on by default
123
- let codeVerifier;
124
- let url;
125
- if (usePKCE) {
126
- codeVerifier = generateCodeVerifier();
127
- url = adapter.getAuthorizationUrl(state, codeVerifier);
128
- }
129
- else {
130
- url = adapter.getAuthorizationUrl(state);
131
- }
132
- // Append any additional query params
133
- if (options?.additionalParams) {
134
- const urlObj = new URL(url);
135
- for (const [key, value] of Object.entries(options.additionalParams)) {
136
- urlObj.searchParams.set(key, value);
137
- }
138
- url = urlObj.toString();
139
- }
140
- const flowState = {
141
- state,
142
- codeVerifier,
143
- provider,
144
- createdAt: Date.now(),
145
- };
146
- return { url, state, codeVerifier, flowState };
147
- }
148
- /**
149
- * Handle the OAuth callback — exchange the authorization code for tokens
150
- * and fetch the user profile.
151
- */
152
- async handleCallback(provider, code, codeVerifier) {
153
- const adapter = this.getProvider(provider);
154
- // Exchange the code for tokens
155
- const tokens = await adapter.exchangeCode(code, codeVerifier);
156
- // Fetch the user profile
157
- const profile = await adapter.getUserProfile(tokens);
158
- return { profile, tokens };
159
- }
160
- /**
161
- * Refresh an expired access token.
162
- */
163
- async refreshAccessToken(provider, refreshToken) {
164
- const adapter = this.getProvider(provider);
165
- return adapter.refreshToken(refreshToken);
166
- }
167
- /**
168
- * Revoke a token.
169
- */
170
- async revokeToken(provider, token) {
171
- const adapter = this.getProvider(provider);
172
- return adapter.revokeToken(token);
173
- }
174
- /**
175
- * Get a registered provider adapter.
176
- */
177
- getProvider(name) {
178
- const adapter = this.providers.get(name);
179
- if (!adapter) {
180
- throw new Error(`OAuth provider '${name}' is not registered. Call OAuth.register() or OAuth.configure() first.`);
181
- }
182
- return adapter;
183
- }
184
- /**
185
- * Check if a provider is registered.
186
- */
187
- hasProvider(name) {
188
- return this.providers.has(name);
189
- }
190
- /**
191
- * Get all registered provider names.
192
- */
193
- getProviderNames() {
194
- return Array.from(this.providers.keys());
195
- }
196
- }
197
- exports.OAuthManager = OAuthManager;
198
- // ─── Singleton & Exports ─────────────────────────────────────────────────────
199
- /**
200
- * Default global OAuthManager instance.
201
- */
202
- exports.OAuth = new OAuthManager();
203
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/auth/oauth/core.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * ExisJS OAuth Provider System
3
- *
4
- * A complete OAuth 2.0 / OpenID Connect implementation with built-in providers
5
- * for Google, GitHub, Microsoft, Discord, and Facebook. Includes PKCE support,
6
- * state validation, profile normalization, and route middleware helpers.
7
- *
8
- * @example
9
- * ```ts
10
- * import { OAuth } from 'exisjs/auth'
11
- *
12
- * // Configure providers
13
- * OAuth.configure({
14
- * google: {
15
- * clientId: process.env.GOOGLE_CLIENT_ID!,
16
- * clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
17
- * redirectUri: 'http://localhost:3000/auth/google/callback',
18
- * },
19
- * github: {
20
- * clientId: process.env.GITHUB_CLIENT_ID!,
21
- * clientSecret: process.env.GITHUB_CLIENT_SECRET!,
22
- * redirectUri: 'http://localhost:3000/auth/github/callback',
23
- * },
24
- * })
25
- *
26
- * // Use middleware
27
- * app.get('/auth/google', oauthRedirect('google'))
28
- * app.get('/auth/google/callback', oauthCallback('google', {
29
- * onSuccess: async (req, res, profile) => {
30
- * req.session.userId = profile.id
31
- * res.redirect('/dashboard')
32
- * },
33
- * }))
34
- * ```
35
- */
36
- export { OAuthManager, OAuth, generateCodeVerifier, generateCodeChallenge, generateState, } from './core';
37
- export { oauthRedirect, oauthCallback, requireAuth } from './middleware';
38
- export { GoogleProvider } from './providers/google';
39
- export { GithubProvider } from './providers/github';
40
- export { MicrosoftProvider } from './providers/microsoft';
41
- export { DiscordProvider } from './providers/discord';
42
- export { FacebookProvider } from './providers/facebook';
43
- export { CustomProvider } from './providers/custom';
44
- export type { OAuthProvider, OAuthProviderConfig, OAuthProviderAdapter, OAuthTokens, OAuthUserProfile, OAuthCallbackOptions, OAuthFlowState, CustomOAuthProviderConfig, } from './types';
45
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EACL,YAAY,EACZ,KAAK,EACL,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,GACd,MAAM,QAAQ,CAAA;AAGf,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,yBAAyB,GAC1B,MAAM,SAAS,CAAA"}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- /**
3
- * ExisJS OAuth Provider System
4
- *
5
- * A complete OAuth 2.0 / OpenID Connect implementation with built-in providers
6
- * for Google, GitHub, Microsoft, Discord, and Facebook. Includes PKCE support,
7
- * state validation, profile normalization, and route middleware helpers.
8
- *
9
- * @example
10
- * ```ts
11
- * import { OAuth } from 'exisjs/auth'
12
- *
13
- * // Configure providers
14
- * OAuth.configure({
15
- * google: {
16
- * clientId: process.env.GOOGLE_CLIENT_ID!,
17
- * clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
18
- * redirectUri: 'http://localhost:3000/auth/google/callback',
19
- * },
20
- * github: {
21
- * clientId: process.env.GITHUB_CLIENT_ID!,
22
- * clientSecret: process.env.GITHUB_CLIENT_SECRET!,
23
- * redirectUri: 'http://localhost:3000/auth/github/callback',
24
- * },
25
- * })
26
- *
27
- * // Use middleware
28
- * app.get('/auth/google', oauthRedirect('google'))
29
- * app.get('/auth/google/callback', oauthCallback('google', {
30
- * onSuccess: async (req, res, profile) => {
31
- * req.session.userId = profile.id
32
- * res.redirect('/dashboard')
33
- * },
34
- * }))
35
- * ```
36
- */
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.CustomProvider = exports.FacebookProvider = exports.DiscordProvider = exports.MicrosoftProvider = exports.GithubProvider = exports.GoogleProvider = exports.requireAuth = exports.oauthCallback = exports.oauthRedirect = exports.generateState = exports.generateCodeChallenge = exports.generateCodeVerifier = exports.OAuth = exports.OAuthManager = void 0;
39
- // ─── Core ────────────────────────────────────────────────────────────────────
40
- var core_1 = require("./core");
41
- Object.defineProperty(exports, "OAuthManager", { enumerable: true, get: function () { return core_1.OAuthManager; } });
42
- Object.defineProperty(exports, "OAuth", { enumerable: true, get: function () { return core_1.OAuth; } });
43
- Object.defineProperty(exports, "generateCodeVerifier", { enumerable: true, get: function () { return core_1.generateCodeVerifier; } });
44
- Object.defineProperty(exports, "generateCodeChallenge", { enumerable: true, get: function () { return core_1.generateCodeChallenge; } });
45
- Object.defineProperty(exports, "generateState", { enumerable: true, get: function () { return core_1.generateState; } });
46
- // ─── Middleware ───────────────────────────────────────────────────────────────
47
- var middleware_1 = require("./middleware");
48
- Object.defineProperty(exports, "oauthRedirect", { enumerable: true, get: function () { return middleware_1.oauthRedirect; } });
49
- Object.defineProperty(exports, "oauthCallback", { enumerable: true, get: function () { return middleware_1.oauthCallback; } });
50
- Object.defineProperty(exports, "requireAuth", { enumerable: true, get: function () { return middleware_1.requireAuth; } });
51
- // ─── Providers ───────────────────────────────────────────────────────────────
52
- var google_1 = require("./providers/google");
53
- Object.defineProperty(exports, "GoogleProvider", { enumerable: true, get: function () { return google_1.GoogleProvider; } });
54
- var github_1 = require("./providers/github");
55
- Object.defineProperty(exports, "GithubProvider", { enumerable: true, get: function () { return github_1.GithubProvider; } });
56
- var microsoft_1 = require("./providers/microsoft");
57
- Object.defineProperty(exports, "MicrosoftProvider", { enumerable: true, get: function () { return microsoft_1.MicrosoftProvider; } });
58
- var discord_1 = require("./providers/discord");
59
- Object.defineProperty(exports, "DiscordProvider", { enumerable: true, get: function () { return discord_1.DiscordProvider; } });
60
- var facebook_1 = require("./providers/facebook");
61
- Object.defineProperty(exports, "FacebookProvider", { enumerable: true, get: function () { return facebook_1.FacebookProvider; } });
62
- var custom_1 = require("./providers/custom");
63
- Object.defineProperty(exports, "CustomProvider", { enumerable: true, get: function () { return custom_1.CustomProvider; } });
64
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/oauth/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;;;AAEH,gFAAgF;AAChF,+BAMe;AALb,oGAAA,YAAY,OAAA;AACZ,6FAAA,KAAK,OAAA;AACL,4GAAA,oBAAoB,OAAA;AACpB,6GAAA,qBAAqB,OAAA;AACrB,qGAAA,aAAa,OAAA;AAGf,iFAAiF;AACjF,2CAAwE;AAA/D,2GAAA,aAAa,OAAA;AAAE,2GAAA,aAAa,OAAA;AAAE,yGAAA,WAAW,OAAA;AAElD,gFAAgF;AAChF,6CAAmD;AAA1C,wGAAA,cAAc,OAAA;AACvB,6CAAmD;AAA1C,wGAAA,cAAc,OAAA;AACvB,mDAAyD;AAAhD,8GAAA,iBAAiB,OAAA;AAC1B,+CAAqD;AAA5C,0GAAA,eAAe,OAAA;AACxB,iDAAuD;AAA9C,4GAAA,gBAAgB,OAAA;AACzB,6CAAmD;AAA1C,wGAAA,cAAc,OAAA"}
@@ -1,63 +0,0 @@
1
- /**
2
- * OAuth Middleware Helpers.
3
- *
4
- * Express-style middleware functions for handling OAuth redirects, callbacks,
5
- * and authentication guards in ExisJS route handlers.
6
- *
7
- * @example
8
- * ```ts
9
- * import { oauthRedirect, oauthCallback, requireAuth } from 'exisjs/auth/oauth'
10
- *
11
- * app.get('/auth/google', oauthRedirect('google'))
12
- * app.get('/auth/google/callback', oauthCallback('google', {
13
- * onSuccess: async (req, res, profile, tokens) => {
14
- * // Create or update user in your database
15
- * req.session.userId = profile.id
16
- * res.redirect('/dashboard')
17
- * },
18
- * }))
19
- *
20
- * // Protect routes
21
- * app.get('/dashboard', requireAuth(), (req, res) => {
22
- * res.json({ user: req.user })
23
- * })
24
- * ```
25
- */
26
- import type { Request, Response, NextFunction } from '../../types';
27
- import type { OAuthCallbackOptions } from './types';
28
- /**
29
- * Middleware that redirects the user to an OAuth provider's login page.
30
- * Stores the state and code verifier in the user's session for validation on callback.
31
- *
32
- * @param provider The OAuth provider name (e.g. 'google', 'github')
33
- * @param options Optional settings like additional params or disabling PKCE
34
- */
35
- export declare function oauthRedirect(provider: string, options?: {
36
- usePKCE?: boolean;
37
- additionalParams?: Record<string, string>;
38
- stateKey?: string;
39
- }): (req: Request, res: Response, _next: NextFunction) => void;
40
- /**
41
- * Middleware that handles the OAuth callback from a provider.
42
- * Validates the state, exchanges the authorization code for tokens,
43
- * fetches the user profile, and calls the onSuccess callback.
44
- *
45
- * @param provider The OAuth provider name
46
- * @param options Callback options including onSuccess and onError handlers
47
- */
48
- export declare function oauthCallback(provider: string, options: OAuthCallbackOptions): (req: Request, res: Response, next: NextFunction) => Promise<void>;
49
- /**
50
- * Guard middleware that ensures the user is authenticated.
51
- * Checks for `req.user` or `req.session.userId` to determine authentication status.
52
- *
53
- * @param options Configuration options
54
- */
55
- export declare function requireAuth(options?: {
56
- /** Custom function to check if the request is authenticated */
57
- isAuthenticated?: (req: Request) => boolean;
58
- /** URL to redirect to if not authenticated (for browser requests). If not set, returns 401 JSON */
59
- redirectTo?: string;
60
- /** Custom error message */
61
- message?: string;
62
- }): (req: Request, res: Response, next: NextFunction) => void;
63
- //# sourceMappingURL=middleware.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGlE,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,SAAS,CAAA;AAKnE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,IAEO,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,YAAY,UAuBzD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,IAG7D,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAkF9D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IACpC,+DAA+D;IAC/D,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAA;IAC3C,mGAAmG;IACnG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,IACS,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UA0BxD"}
@@ -1,164 +0,0 @@
1
- "use strict";
2
- /**
3
- * OAuth Middleware Helpers.
4
- *
5
- * Express-style middleware functions for handling OAuth redirects, callbacks,
6
- * and authentication guards in ExisJS route handlers.
7
- *
8
- * @example
9
- * ```ts
10
- * import { oauthRedirect, oauthCallback, requireAuth } from 'exisjs/auth/oauth'
11
- *
12
- * app.get('/auth/google', oauthRedirect('google'))
13
- * app.get('/auth/google/callback', oauthCallback('google', {
14
- * onSuccess: async (req, res, profile, tokens) => {
15
- * // Create or update user in your database
16
- * req.session.userId = profile.id
17
- * res.redirect('/dashboard')
18
- * },
19
- * }))
20
- *
21
- * // Protect routes
22
- * app.get('/dashboard', requireAuth(), (req, res) => {
23
- * res.json({ user: req.user })
24
- * })
25
- * ```
26
- */
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.oauthRedirect = oauthRedirect;
29
- exports.oauthCallback = oauthCallback;
30
- exports.requireAuth = requireAuth;
31
- const errors_1 = require("../../error/errors");
32
- const core_1 = require("./core");
33
- const DEFAULT_STATE_KEY = '_exis_oauth_state';
34
- const STATE_MAX_AGE_MS = 10 * 60 * 1000; // 10 minutes
35
- /**
36
- * Middleware that redirects the user to an OAuth provider's login page.
37
- * Stores the state and code verifier in the user's session for validation on callback.
38
- *
39
- * @param provider The OAuth provider name (e.g. 'google', 'github')
40
- * @param options Optional settings like additional params or disabling PKCE
41
- */
42
- function oauthRedirect(provider, options) {
43
- return (req, res, _next) => {
44
- const stateKey = options?.stateKey || DEFAULT_STATE_KEY;
45
- const { url, flowState } = core_1.OAuth.getAuthUrl(provider, {
46
- usePKCE: options?.usePKCE,
47
- additionalParams: options?.additionalParams,
48
- });
49
- // Store the flow state in session
50
- if (req.session) {
51
- req.session[stateKey] = flowState;
52
- }
53
- else {
54
- // If no session middleware, store in a signed cookie
55
- res.cookie(stateKey, JSON.stringify(flowState), {
56
- httpOnly: true,
57
- secure: process.env.NODE_ENV === 'production',
58
- sameSite: 'Lax',
59
- maxAge: STATE_MAX_AGE_MS / 1000,
60
- path: '/',
61
- });
62
- }
63
- res.redirect(url);
64
- };
65
- }
66
- /**
67
- * Middleware that handles the OAuth callback from a provider.
68
- * Validates the state, exchanges the authorization code for tokens,
69
- * fetches the user profile, and calls the onSuccess callback.
70
- *
71
- * @param provider The OAuth provider name
72
- * @param options Callback options including onSuccess and onError handlers
73
- */
74
- function oauthCallback(provider, options) {
75
- const stateKey = options.stateKey || DEFAULT_STATE_KEY;
76
- return async (req, res, next) => {
77
- try {
78
- // 1. Extract code and state from the callback query params
79
- const code = req.query?.code;
80
- const returnedState = req.query?.state;
81
- const error = req.query?.error;
82
- // Handle provider-side errors
83
- if (error) {
84
- const errorDesc = req.query?.error_description || error;
85
- throw new Error(`OAuth error from ${provider}: ${errorDesc}`);
86
- }
87
- if (!code) {
88
- throw errors_1.HttpError.badRequest('Missing authorization code in OAuth callback');
89
- }
90
- // 2. Retrieve and validate the stored state
91
- let flowState;
92
- if (req.session && req.session[stateKey]) {
93
- flowState = req.session[stateKey];
94
- // Clean up
95
- delete req.session[stateKey];
96
- }
97
- else if (req.cookies?.[stateKey]) {
98
- try {
99
- flowState = JSON.parse(req.cookies[stateKey]);
100
- }
101
- catch {
102
- // Invalid cookie
103
- }
104
- // Clear the cookie
105
- res.cookie(stateKey, '', { maxAge: 0, path: '/' });
106
- }
107
- if (!flowState) {
108
- throw errors_1.HttpError.badRequest('OAuth state not found. The session may have expired. Please try again.');
109
- }
110
- // Validate state matches
111
- if (flowState.state !== returnedState) {
112
- throw errors_1.HttpError.badRequest('OAuth state mismatch. This may be a CSRF attack. Please try again.');
113
- }
114
- // Validate state age
115
- if (Date.now() - flowState.createdAt > STATE_MAX_AGE_MS) {
116
- throw errors_1.HttpError.badRequest('OAuth state has expired. Please try again.');
117
- }
118
- // Validate provider
119
- if (flowState.provider !== provider) {
120
- throw errors_1.HttpError.badRequest(`OAuth provider mismatch. Expected '${flowState.provider}', got '${provider}'.`);
121
- }
122
- // 3. Exchange code for tokens and get the user profile
123
- const { profile, tokens } = await core_1.OAuth.handleCallback(provider, code, flowState.codeVerifier);
124
- // 4. Call the success handler
125
- await options.onSuccess(req, res, profile, tokens);
126
- }
127
- catch (err) {
128
- if (options.onError) {
129
- await options.onError(req, res, err instanceof Error ? err : new Error(String(err)));
130
- }
131
- else {
132
- next(err);
133
- }
134
- }
135
- };
136
- }
137
- /**
138
- * Guard middleware that ensures the user is authenticated.
139
- * Checks for `req.user` or `req.session.userId` to determine authentication status.
140
- *
141
- * @param options Configuration options
142
- */
143
- function requireAuth(options) {
144
- return (req, res, next) => {
145
- let authenticated;
146
- if (options?.isAuthenticated) {
147
- authenticated = options.isAuthenticated(req);
148
- }
149
- else {
150
- // Default check: req.user exists or session has a userId
151
- authenticated = !!(req.user ||
152
- (req.session && req.session.userId));
153
- }
154
- if (authenticated) {
155
- return next();
156
- }
157
- // Not authenticated
158
- if (options?.redirectTo && req.headers.accept?.includes('text/html')) {
159
- return res.redirect(options.redirectTo);
160
- }
161
- return next(errors_1.HttpError.unauthorized(options?.message || 'Authentication required'));
162
- };
163
- }
164
- //# sourceMappingURL=middleware.js.map