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