@lastshotlabs/bunshot 0.0.27 → 0.0.28

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 (742) hide show
  1. package/.oclif.manifest.json +39 -0
  2. package/README.md +8282 -2147
  3. package/dist/cli/commands/init.js +690 -0
  4. package/dist/cli/index.js +6 -0
  5. package/dist/cli.js +4 -4
  6. package/dist/packages/bunshot-admin/src/index.d.ts +15 -0
  7. package/dist/packages/bunshot-admin/src/index.js +11 -0
  8. package/dist/packages/bunshot-admin/src/lib/resourceTypes.d.ts +8 -0
  9. package/dist/packages/bunshot-admin/src/lib/resourceTypes.js +33 -0
  10. package/dist/packages/bunshot-admin/src/lib/typedRoute.d.ts +14 -0
  11. package/dist/packages/bunshot-admin/src/lib/typedRoute.js +17 -0
  12. package/dist/packages/bunshot-admin/src/plugin.d.ts +4 -0
  13. package/dist/packages/bunshot-admin/src/plugin.js +46 -0
  14. package/dist/packages/bunshot-admin/src/providers/auth0Access.d.ts +6 -0
  15. package/dist/packages/bunshot-admin/src/providers/auth0Access.js +32 -0
  16. package/dist/packages/bunshot-admin/src/routes/admin.d.ts +10 -0
  17. package/dist/packages/bunshot-admin/src/routes/admin.js +923 -0
  18. package/dist/packages/bunshot-admin/src/routes/mail.d.ts +6 -0
  19. package/dist/packages/bunshot-admin/src/routes/mail.js +114 -0
  20. package/dist/packages/bunshot-admin/src/routes/permissions.d.ts +8 -0
  21. package/dist/packages/bunshot-admin/src/routes/permissions.js +315 -0
  22. package/dist/packages/bunshot-admin/src/types/config.d.ts +16 -0
  23. package/dist/packages/bunshot-admin/src/types/config.js +37 -0
  24. package/dist/packages/bunshot-admin/src/types/env.d.ts +14 -0
  25. package/dist/packages/bunshot-admin/src/types/provider.d.ts +1 -0
  26. package/dist/packages/bunshot-admin/src/types/provider.js +4 -0
  27. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.d.ts +66 -0
  28. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.js +1063 -0
  29. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.d.ts +2 -0
  30. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.js +536 -0
  31. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.d.ts +88 -0
  32. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.js +1366 -0
  33. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.d.ts +2 -0
  34. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.js +23 -0
  35. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.d.ts +5 -0
  36. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.js +131 -0
  37. package/dist/packages/bunshot-auth/src/bootstrap.d.ts +38 -0
  38. package/dist/packages/bunshot-auth/src/bootstrap.js +384 -0
  39. package/dist/packages/bunshot-auth/src/config/appConfig.d.ts +3 -0
  40. package/dist/packages/bunshot-auth/src/config/appConfig.js +4 -0
  41. package/dist/packages/bunshot-auth/src/config/authConfig.d.ts +478 -0
  42. package/dist/packages/bunshot-auth/src/config/authConfig.js +46 -0
  43. package/dist/packages/bunshot-auth/src/config/configLock.d.ts +2 -0
  44. package/dist/packages/bunshot-auth/src/config/configLock.js +10 -0
  45. package/dist/packages/bunshot-auth/src/index.d.ts +25 -0
  46. package/dist/packages/bunshot-auth/src/index.js +23 -0
  47. package/dist/packages/bunshot-auth/src/infra/mongo.d.ts +15 -0
  48. package/dist/packages/bunshot-auth/src/infra/mongo.js +44 -0
  49. package/dist/packages/bunshot-auth/src/infra/queue.d.ts +14 -0
  50. package/dist/packages/bunshot-auth/src/infra/queue.js +27 -0
  51. package/dist/packages/bunshot-auth/src/infra/redis.d.ts +5 -0
  52. package/dist/packages/bunshot-auth/src/infra/redis.js +15 -0
  53. package/dist/packages/bunshot-auth/src/infra/signing.d.ts +7 -0
  54. package/dist/packages/bunshot-auth/src/infra/signing.js +8 -0
  55. package/dist/packages/bunshot-auth/src/lib/accountLockout.d.ts +34 -0
  56. package/dist/packages/bunshot-auth/src/lib/accountLockout.js +244 -0
  57. package/dist/packages/bunshot-auth/src/lib/adapterTiers.d.ts +1 -0
  58. package/dist/packages/bunshot-auth/src/lib/adapterTiers.js +1 -0
  59. package/dist/packages/bunshot-auth/src/lib/authAdapter.d.ts +1 -0
  60. package/dist/packages/bunshot-auth/src/lib/authAdapter.js +1 -0
  61. package/dist/packages/bunshot-auth/src/lib/authContext.d.ts +15 -0
  62. package/dist/packages/bunshot-auth/src/lib/authContext.js +1 -0
  63. package/dist/packages/bunshot-auth/src/lib/authEventBus.d.ts +4 -0
  64. package/dist/packages/bunshot-auth/src/lib/authEventBus.js +15 -0
  65. package/dist/packages/bunshot-auth/src/lib/authRateLimit.d.ts +28 -0
  66. package/dist/packages/bunshot-auth/src/lib/authRateLimit.js +205 -0
  67. package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.d.ts +8 -2
  68. package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.js +22 -9
  69. package/dist/packages/bunshot-auth/src/lib/cache.d.ts +12 -0
  70. package/dist/packages/bunshot-auth/src/lib/cache.js +120 -0
  71. package/dist/packages/bunshot-auth/src/lib/clientIp.d.ts +4 -0
  72. package/dist/{lib → packages/bunshot-auth/src/lib}/clientIp.js +14 -7
  73. package/dist/packages/bunshot-auth/src/lib/cookieOptions.d.ts +27 -0
  74. package/dist/packages/bunshot-auth/src/lib/cookieOptions.js +33 -0
  75. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.d.ts +40 -0
  76. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.js +221 -0
  77. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.d.ts +19 -0
  78. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.js +148 -0
  79. package/dist/packages/bunshot-auth/src/lib/emailTemplates.d.ts +23 -0
  80. package/dist/packages/bunshot-auth/src/lib/emailTemplates.js +265 -0
  81. package/dist/packages/bunshot-auth/src/lib/emailVerification.d.ts +30 -0
  82. package/dist/packages/bunshot-auth/src/lib/emailVerification.js +200 -0
  83. package/dist/packages/bunshot-auth/src/lib/env.d.ts +1 -0
  84. package/dist/packages/bunshot-auth/src/lib/env.js +3 -0
  85. package/dist/packages/bunshot-auth/src/lib/fingerprint.js +36 -0
  86. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.d.ts +15 -16
  87. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.js +22 -34
  88. package/dist/packages/bunshot-auth/src/lib/jwks.d.ts +28 -0
  89. package/dist/packages/bunshot-auth/src/lib/jwks.js +79 -0
  90. package/dist/packages/bunshot-auth/src/lib/jwt.d.ts +12 -0
  91. package/dist/packages/bunshot-auth/src/lib/jwt.js +86 -0
  92. package/dist/{lib → packages/bunshot-auth/src/lib}/logger.js +3 -3
  93. package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.d.ts +5 -4
  94. package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.js +6 -10
  95. package/dist/packages/bunshot-auth/src/lib/magicLink.d.ts +13 -0
  96. package/dist/packages/bunshot-auth/src/lib/magicLink.js +145 -0
  97. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.d.ts +60 -0
  98. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.js +419 -0
  99. package/dist/packages/bunshot-auth/src/lib/oauth.d.ts +82 -0
  100. package/dist/packages/bunshot-auth/src/lib/oauth.js +177 -0
  101. package/dist/packages/bunshot-auth/src/lib/oauthCode.d.ts +19 -0
  102. package/dist/packages/bunshot-auth/src/lib/oauthCode.js +182 -0
  103. package/dist/packages/bunshot-auth/src/lib/oauthReauth.d.ts +19 -0
  104. package/dist/packages/bunshot-auth/src/lib/oauthReauth.js +255 -0
  105. package/dist/packages/bunshot-auth/src/lib/organization.d.ts +66 -0
  106. package/dist/packages/bunshot-auth/src/lib/organization.js +225 -0
  107. package/dist/packages/bunshot-auth/src/lib/passwordHistory.d.ts +12 -0
  108. package/dist/packages/bunshot-auth/src/lib/passwordHistory.js +31 -0
  109. package/dist/packages/bunshot-auth/src/lib/resetPassword.d.ts +20 -0
  110. package/dist/packages/bunshot-auth/src/lib/resetPassword.js +148 -0
  111. package/dist/packages/bunshot-auth/src/lib/roles.d.ts +9 -0
  112. package/dist/packages/bunshot-auth/src/lib/roles.js +93 -0
  113. package/dist/packages/bunshot-auth/src/lib/saml.d.ts +29 -0
  114. package/dist/packages/bunshot-auth/src/lib/saml.js +73 -0
  115. package/dist/packages/bunshot-auth/src/lib/samlRequestId.d.ts +13 -0
  116. package/dist/packages/bunshot-auth/src/lib/samlRequestId.js +129 -0
  117. package/dist/{lib → packages/bunshot-auth/src/lib}/scim.d.ts +7 -7
  118. package/dist/{lib → packages/bunshot-auth/src/lib}/scim.js +15 -13
  119. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.d.ts +22 -0
  120. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.js +65 -0
  121. package/dist/packages/bunshot-auth/src/lib/session.d.ts +45 -0
  122. package/dist/packages/bunshot-auth/src/lib/session.js +1211 -0
  123. package/dist/packages/bunshot-auth/src/lib/storeInfra.d.ts +26 -0
  124. package/dist/packages/bunshot-auth/src/lib/storeInfra.js +18 -0
  125. package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.d.ts +3 -2
  126. package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.js +2 -5
  127. package/dist/packages/bunshot-auth/src/lib/validateAdapter.d.ts +16 -0
  128. package/dist/packages/bunshot-auth/src/lib/validateAdapter.js +161 -0
  129. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.d.ts +13 -0
  130. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.js +58 -0
  131. package/dist/{middleware → packages/bunshot-auth/src/middleware}/csrf.d.ts +5 -4
  132. package/dist/packages/bunshot-auth/src/middleware/csrf.js +138 -0
  133. package/dist/packages/bunshot-auth/src/middleware/identify.d.ts +4 -0
  134. package/dist/packages/bunshot-auth/src/middleware/identify.js +124 -0
  135. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.d.ts +2 -2
  136. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.js +10 -8
  137. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.d.ts +2 -2
  138. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.js +20 -16
  139. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.d.ts +2 -2
  140. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.js +6 -6
  141. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.d.ts +2 -2
  142. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.js +8 -7
  143. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.d.ts +2 -2
  144. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.js +7 -6
  145. package/dist/packages/bunshot-auth/src/middleware/scimAuth.d.ts +8 -0
  146. package/dist/packages/bunshot-auth/src/middleware/scimAuth.js +29 -0
  147. package/dist/packages/bunshot-auth/src/middleware/userAuth.d.ts +3 -0
  148. package/dist/packages/bunshot-auth/src/middleware/userAuth.js +6 -0
  149. package/dist/{models → packages/bunshot-auth/src/models}/AuthUser.d.ts +12 -8
  150. package/dist/packages/bunshot-auth/src/models/AuthUser.js +53 -0
  151. package/dist/packages/bunshot-auth/src/models/Group.d.ts +19 -0
  152. package/dist/packages/bunshot-auth/src/models/Group.js +22 -0
  153. package/dist/{models → packages/bunshot-auth/src/models}/GroupMembership.d.ts +6 -8
  154. package/dist/packages/bunshot-auth/src/models/GroupMembership.js +19 -0
  155. package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.d.ts +1 -1
  156. package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.js +5 -5
  157. package/dist/packages/bunshot-auth/src/models/TenantRole.d.ts +13 -0
  158. package/dist/packages/bunshot-auth/src/models/TenantRole.js +17 -0
  159. package/dist/packages/bunshot-auth/src/plugin.d.ts +4 -0
  160. package/dist/packages/bunshot-auth/src/plugin.js +274 -0
  161. package/dist/packages/bunshot-auth/src/routes/auth.d.ts +15 -0
  162. package/dist/packages/bunshot-auth/src/routes/auth.js +1624 -0
  163. package/dist/packages/bunshot-auth/src/routes/groups.d.ts +4 -0
  164. package/dist/packages/bunshot-auth/src/routes/groups.js +481 -0
  165. package/dist/packages/bunshot-auth/src/routes/m2m.d.ts +2 -0
  166. package/dist/packages/bunshot-auth/src/routes/m2m.js +145 -0
  167. package/dist/packages/bunshot-auth/src/routes/mfa.d.ts +6 -0
  168. package/dist/packages/bunshot-auth/src/routes/mfa.js +991 -0
  169. package/dist/packages/bunshot-auth/src/routes/oauth.d.ts +3 -0
  170. package/dist/packages/bunshot-auth/src/routes/oauth.js +1727 -0
  171. package/dist/packages/bunshot-auth/src/routes/oidc.d.ts +2 -0
  172. package/dist/packages/bunshot-auth/src/routes/oidc.js +84 -0
  173. package/dist/packages/bunshot-auth/src/routes/organizations.d.ts +3 -0
  174. package/dist/packages/bunshot-auth/src/routes/organizations.js +741 -0
  175. package/dist/packages/bunshot-auth/src/routes/passkey.d.ts +2 -0
  176. package/dist/packages/bunshot-auth/src/routes/passkey.js +199 -0
  177. package/dist/packages/bunshot-auth/src/routes/saml.d.ts +2 -0
  178. package/dist/packages/bunshot-auth/src/routes/saml.js +226 -0
  179. package/dist/packages/bunshot-auth/src/routes/scim.d.ts +3 -0
  180. package/dist/packages/bunshot-auth/src/routes/scim.js +588 -0
  181. package/dist/packages/bunshot-auth/src/runtime.d.ts +52 -0
  182. package/dist/packages/bunshot-auth/src/runtime.js +11 -0
  183. package/dist/{schemas → packages/bunshot-auth/src/schemas}/auth.d.ts +4 -5
  184. package/dist/packages/bunshot-auth/src/schemas/auth.js +24 -0
  185. package/dist/packages/bunshot-auth/src/schemas/error.d.ts +10 -0
  186. package/dist/packages/bunshot-auth/src/schemas/error.js +10 -0
  187. package/dist/packages/bunshot-auth/src/schemas/success.d.ts +10 -0
  188. package/dist/packages/bunshot-auth/src/schemas/success.js +10 -0
  189. package/dist/packages/bunshot-auth/src/services/auth.d.ts +39 -0
  190. package/dist/packages/bunshot-auth/src/services/auth.js +378 -0
  191. package/dist/{services → packages/bunshot-auth/src/services}/mfa.d.ts +41 -17
  192. package/dist/{services → packages/bunshot-auth/src/services}/mfa.js +259 -183
  193. package/dist/packages/bunshot-auth/src/testing.d.ts +31 -0
  194. package/dist/packages/bunshot-auth/src/testing.js +23 -0
  195. package/dist/packages/bunshot-auth/src/types/adapter.d.ts +1 -0
  196. package/dist/packages/bunshot-auth/src/types/adapter.js +1 -0
  197. package/dist/packages/bunshot-auth/src/types/config.d.ts +152 -0
  198. package/dist/packages/bunshot-auth/src/types/config.js +179 -0
  199. package/dist/{routes → packages/bunshot-auth/src/types}/groups.d.ts +2 -3
  200. package/dist/packages/bunshot-auth/src/types/groups.js +1 -0
  201. package/dist/packages/bunshot-auth/src/types/oauthCode.d.ts +6 -0
  202. package/dist/packages/bunshot-auth/src/types/oauthCode.js +1 -0
  203. package/dist/packages/bunshot-auth/src/types/oauthReauth.d.ts +13 -0
  204. package/dist/packages/bunshot-auth/src/types/oauthReauth.js +1 -0
  205. package/dist/packages/bunshot-auth/src/types/redis.d.ts +1 -0
  206. package/dist/packages/bunshot-auth/src/types/redis.js +1 -0
  207. package/dist/packages/bunshot-auth/src/types/saml.d.ts +10 -0
  208. package/dist/packages/bunshot-auth/src/types/saml.js +1 -0
  209. package/dist/packages/bunshot-auth/src/types/session.d.ts +18 -0
  210. package/dist/packages/bunshot-auth/src/types/session.js +1 -0
  211. package/dist/packages/bunshot-auth/src/types/store.d.ts +1 -0
  212. package/dist/packages/bunshot-auth/src/types/store.js +1 -0
  213. package/dist/packages/bunshot-core/src/adminProvider.d.ts +95 -0
  214. package/dist/packages/bunshot-core/src/adminProvider.js +1 -0
  215. package/dist/packages/bunshot-core/src/auditLog.d.ts +34 -0
  216. package/dist/packages/bunshot-core/src/auditLog.js +1 -0
  217. package/dist/packages/bunshot-core/src/auth-adapter.d.ts +227 -0
  218. package/dist/packages/bunshot-core/src/auth-adapter.js +4 -0
  219. package/dist/packages/bunshot-core/src/authVariables.d.ts +14 -0
  220. package/dist/packages/bunshot-core/src/authVariables.js +4 -0
  221. package/dist/packages/bunshot-core/src/cache.d.ts +12 -0
  222. package/dist/packages/bunshot-core/src/cache.js +21 -0
  223. package/dist/{lib → packages/bunshot-core/src}/captcha.d.ts +1 -10
  224. package/dist/packages/bunshot-core/src/captcha.js +1 -0
  225. package/dist/packages/bunshot-core/src/clearRegistry.d.ts +6 -0
  226. package/dist/packages/bunshot-core/src/clearRegistry.js +17 -0
  227. package/dist/packages/bunshot-core/src/clientIp.d.ts +3 -0
  228. package/dist/packages/bunshot-core/src/clientIp.js +45 -0
  229. package/dist/packages/bunshot-core/src/configLock.d.ts +4 -0
  230. package/dist/packages/bunshot-core/src/configLock.js +7 -0
  231. package/dist/packages/bunshot-core/src/configValidation.d.ts +22 -0
  232. package/dist/packages/bunshot-core/src/configValidation.js +39 -0
  233. package/dist/packages/bunshot-core/src/constants.js +10 -0
  234. package/dist/packages/bunshot-core/src/context/bunshotContext.d.ts +232 -0
  235. package/dist/packages/bunshot-core/src/context/bunshotContext.js +1 -0
  236. package/dist/packages/bunshot-core/src/context/contextAccess.d.ts +3 -0
  237. package/dist/packages/bunshot-core/src/context/contextAccess.js +16 -0
  238. package/dist/packages/bunshot-core/src/context/contextStore.d.ts +16 -0
  239. package/dist/packages/bunshot-core/src/context/contextStore.js +31 -0
  240. package/dist/packages/bunshot-core/src/context/frameworkConfig.d.ts +38 -0
  241. package/dist/packages/bunshot-core/src/context/frameworkConfig.js +1 -0
  242. package/dist/packages/bunshot-core/src/context/index.d.ts +4 -0
  243. package/dist/packages/bunshot-core/src/context/index.js +2 -0
  244. package/dist/packages/bunshot-core/src/context.d.ts +40 -0
  245. package/dist/packages/bunshot-core/src/context.js +35 -0
  246. package/dist/packages/bunshot-core/src/coreContracts.d.ts +47 -0
  247. package/dist/packages/bunshot-core/src/coreContracts.js +1 -0
  248. package/dist/packages/bunshot-core/src/coreRegistrar.d.ts +6 -0
  249. package/dist/packages/bunshot-core/src/coreRegistrar.js +42 -0
  250. package/dist/{lib → packages/bunshot-core/src}/createRoute.d.ts +4 -30
  251. package/dist/{lib → packages/bunshot-core/src}/createRoute.js +39 -88
  252. package/dist/packages/bunshot-core/src/cronRegistry.d.ts +11 -0
  253. package/dist/packages/bunshot-core/src/cronRegistry.js +1 -0
  254. package/dist/packages/bunshot-core/src/crypto.d.ts +43 -0
  255. package/dist/packages/bunshot-core/src/crypto.js +74 -0
  256. package/dist/packages/bunshot-core/src/csrf.d.ts +8 -0
  257. package/dist/packages/bunshot-core/src/csrf.js +1 -0
  258. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.d.ts +7 -0
  259. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.js +19 -0
  260. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.d.ts +6 -0
  261. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.js +40 -0
  262. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.d.ts +6 -0
  263. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.js +24 -0
  264. package/dist/packages/bunshot-core/src/emailTemplates.d.ts +5 -0
  265. package/dist/packages/bunshot-core/src/emailTemplates.js +10 -0
  266. package/dist/{lib/HttpError.d.ts → packages/bunshot-core/src/errors.d.ts} +4 -1
  267. package/dist/{lib/HttpError.js → packages/bunshot-core/src/errors.js} +7 -1
  268. package/dist/packages/bunshot-core/src/eventBus.d.ts +270 -0
  269. package/dist/packages/bunshot-core/src/eventBus.js +143 -0
  270. package/dist/packages/bunshot-core/src/idempotency.d.ts +18 -0
  271. package/dist/packages/bunshot-core/src/idempotency.js +1 -0
  272. package/dist/packages/bunshot-core/src/index.d.ts +60 -0
  273. package/dist/packages/bunshot-core/src/index.js +34 -0
  274. package/dist/packages/bunshot-core/src/mail.d.ts +14 -0
  275. package/dist/packages/bunshot-core/src/mail.js +8 -0
  276. package/dist/packages/bunshot-core/src/memoryEviction.d.ts +24 -0
  277. package/dist/packages/bunshot-core/src/memoryEviction.js +52 -0
  278. package/dist/packages/bunshot-core/src/pagination.d.ts +45 -0
  279. package/dist/packages/bunshot-core/src/pagination.js +61 -0
  280. package/dist/packages/bunshot-core/src/permissions.d.ts +64 -0
  281. package/dist/packages/bunshot-core/src/permissions.js +27 -0
  282. package/dist/packages/bunshot-core/src/plugin.d.ts +44 -0
  283. package/dist/packages/bunshot-core/src/plugin.js +1 -0
  284. package/dist/packages/bunshot-core/src/rateLimit.d.ts +5 -0
  285. package/dist/packages/bunshot-core/src/rateLimit.js +18 -0
  286. package/dist/packages/bunshot-core/src/redis.d.ts +21 -0
  287. package/dist/packages/bunshot-core/src/redis.js +1 -0
  288. package/dist/packages/bunshot-core/src/routeAuth.d.ts +5 -0
  289. package/dist/packages/bunshot-core/src/routeAuth.js +11 -0
  290. package/dist/packages/bunshot-core/src/routeOverrides.d.ts +24 -0
  291. package/dist/packages/bunshot-core/src/routeOverrides.js +25 -0
  292. package/dist/packages/bunshot-core/src/routerAdapter.d.ts +6 -0
  293. package/dist/packages/bunshot-core/src/routerAdapter.js +56 -0
  294. package/dist/packages/bunshot-core/src/secrets.d.ts +48 -0
  295. package/dist/packages/bunshot-core/src/secrets.js +8 -0
  296. package/dist/packages/bunshot-core/src/signing.d.ts +41 -0
  297. package/dist/packages/bunshot-core/src/signing.js +1 -0
  298. package/dist/packages/bunshot-core/src/sse.d.ts +36 -0
  299. package/dist/packages/bunshot-core/src/sse.js +1 -0
  300. package/dist/packages/bunshot-core/src/storageAdapter.js +1 -0
  301. package/dist/packages/bunshot-core/src/storeInfra.d.ts +44 -0
  302. package/dist/packages/bunshot-core/src/storeInfra.js +18 -0
  303. package/dist/packages/bunshot-core/src/storeType.d.ts +7 -0
  304. package/dist/packages/bunshot-core/src/storeType.js +1 -0
  305. package/dist/packages/bunshot-core/src/testing.d.ts +1 -0
  306. package/dist/packages/bunshot-core/src/testing.js +1 -0
  307. package/dist/packages/bunshot-core/src/uploadRegistry.d.ts +23 -0
  308. package/dist/packages/bunshot-core/src/uploadRegistry.js +4 -0
  309. package/dist/packages/bunshot-core/src/userResolver.d.ts +5 -0
  310. package/dist/packages/bunshot-core/src/userResolver.js +14 -0
  311. package/dist/packages/bunshot-core/src/wsMessages.d.ts +42 -0
  312. package/dist/packages/bunshot-core/src/wsMessages.js +4 -0
  313. package/dist/packages/bunshot-permissions/src/adapters/memory.d.ts +7 -0
  314. package/dist/packages/bunshot-permissions/src/adapters/memory.js +73 -0
  315. package/dist/packages/bunshot-permissions/src/index.d.ts +10 -0
  316. package/dist/packages/bunshot-permissions/src/index.js +5 -0
  317. package/dist/packages/bunshot-permissions/src/lib/bootstrap.d.ts +7 -0
  318. package/dist/packages/bunshot-permissions/src/lib/bootstrap.js +12 -0
  319. package/dist/packages/bunshot-permissions/src/lib/evaluator.d.ts +10 -0
  320. package/dist/packages/bunshot-permissions/src/lib/evaluator.js +165 -0
  321. package/dist/packages/bunshot-permissions/src/lib/registry.d.ts +2 -0
  322. package/dist/packages/bunshot-permissions/src/lib/registry.js +31 -0
  323. package/dist/packages/bunshot-permissions/src/lib/validation.d.ts +1 -0
  324. package/dist/packages/bunshot-permissions/src/lib/validation.js +1 -0
  325. package/dist/packages/bunshot-permissions/src/types/adapter.d.ts +1 -0
  326. package/dist/packages/bunshot-permissions/src/types/adapter.js +1 -0
  327. package/dist/packages/bunshot-permissions/src/types/evaluator.d.ts +1 -0
  328. package/dist/packages/bunshot-permissions/src/types/evaluator.js +1 -0
  329. package/dist/packages/bunshot-permissions/src/types/models.d.ts +1 -0
  330. package/dist/packages/bunshot-permissions/src/types/models.js +1 -0
  331. package/dist/packages/bunshot-permissions/src/types/registry.d.ts +1 -0
  332. package/dist/packages/bunshot-permissions/src/types/registry.js +1 -0
  333. package/dist/packages/bunshot-postgres/src/adapter.d.ts +6 -0
  334. package/dist/packages/bunshot-postgres/src/adapter.js +794 -0
  335. package/dist/packages/bunshot-postgres/src/connection.d.ts +15 -0
  336. package/dist/packages/bunshot-postgres/src/connection.js +16 -0
  337. package/dist/packages/bunshot-postgres/src/index.d.ts +4 -0
  338. package/dist/packages/bunshot-postgres/src/index.js +2 -0
  339. package/dist/packages/bunshot-postgres/src/schema.d.ts +997 -0
  340. package/dist/packages/bunshot-postgres/src/schema.js +105 -0
  341. package/dist/src/app.d.ts +230 -0
  342. package/dist/src/app.js +182 -0
  343. package/dist/src/cli/commands/init.d.ts +10 -0
  344. package/dist/src/cli/commands/init.js +709 -0
  345. package/dist/src/cli/index.d.ts +1 -0
  346. package/dist/src/cli/index.js +3 -0
  347. package/dist/src/entrypoints/mongo.d.ts +6 -0
  348. package/dist/src/entrypoints/mongo.js +4 -0
  349. package/dist/src/entrypoints/queue.d.ts +2 -0
  350. package/dist/src/entrypoints/queue.js +1 -0
  351. package/dist/src/entrypoints/redis.d.ts +1 -0
  352. package/dist/src/entrypoints/redis.js +1 -0
  353. package/dist/{adapters → src/framework/adapters}/localStorage.d.ts +1 -1
  354. package/dist/{adapters → src/framework/adapters}/localStorage.js +10 -10
  355. package/dist/src/framework/adapters/memoryStorage.d.ts +2 -0
  356. package/dist/src/framework/adapters/memoryStorage.js +45 -0
  357. package/dist/{adapters → src/framework/adapters}/s3Storage.d.ts +1 -1
  358. package/dist/{adapters → src/framework/adapters}/s3Storage.js +12 -12
  359. package/dist/src/framework/admin/bunshotAccess.d.ts +2 -0
  360. package/dist/src/framework/admin/bunshotAccess.js +23 -0
  361. package/dist/src/framework/admin/bunshotUsers.d.ts +2 -0
  362. package/dist/src/framework/admin/bunshotUsers.js +103 -0
  363. package/dist/src/framework/admin/index.d.ts +7 -0
  364. package/dist/src/framework/admin/index.js +21 -0
  365. package/dist/src/framework/boundaryAdapters/cacheFactories.d.ts +13 -0
  366. package/dist/src/framework/boundaryAdapters/cacheFactories.js +86 -0
  367. package/dist/src/framework/boundaryAdapters/index.d.ts +2 -0
  368. package/dist/src/framework/boundaryAdapters/index.js +1 -0
  369. package/dist/src/framework/boundaryAdapters.d.ts +17 -0
  370. package/dist/src/framework/boundaryAdapters.js +62 -0
  371. package/dist/src/framework/buildContext.d.ts +33 -0
  372. package/dist/src/framework/buildContext.js +119 -0
  373. package/dist/src/framework/config/schema.d.ts +447 -0
  374. package/dist/src/framework/config/schema.js +528 -0
  375. package/dist/src/framework/createInfrastructure.d.ts +76 -0
  376. package/dist/src/framework/createInfrastructure.js +221 -0
  377. package/dist/src/framework/lib/auditLog.d.ts +23 -0
  378. package/dist/src/framework/lib/auditLog.js +416 -0
  379. package/dist/src/framework/lib/captcha.d.ts +11 -0
  380. package/dist/{lib → src/framework/lib}/captcha.js +13 -10
  381. package/dist/{lib → src/framework/lib}/createDtoMapper.js +4 -4
  382. package/dist/src/framework/lib/createRoute.d.ts +1 -0
  383. package/dist/src/framework/lib/createRoute.js +2 -0
  384. package/dist/{lib → src/framework/lib}/idempotency.d.ts +2 -6
  385. package/dist/src/framework/lib/idempotency.js +74 -0
  386. package/dist/src/framework/lib/logger.d.ts +3 -0
  387. package/dist/src/framework/lib/logger.js +14 -0
  388. package/dist/src/framework/lib/metrics.d.ts +34 -0
  389. package/dist/{lib → src/framework/lib}/metrics.js +49 -57
  390. package/dist/src/framework/lib/pagination.d.ts +42 -0
  391. package/dist/src/framework/lib/pagination.js +51 -0
  392. package/dist/src/framework/lib/redisTransport.d.ts +38 -0
  393. package/dist/src/framework/lib/redisTransport.js +107 -0
  394. package/dist/src/framework/lib/resolveUserId.d.ts +2 -0
  395. package/dist/src/framework/lib/resolveUserId.js +5 -0
  396. package/dist/src/framework/lib/sseCollision.d.ts +6 -0
  397. package/dist/src/framework/lib/sseCollision.js +26 -0
  398. package/dist/src/framework/lib/storageAdapter.d.ts +1 -0
  399. package/dist/src/framework/lib/storageAdapter.js +1 -0
  400. package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.js +4 -4
  401. package/dist/src/framework/lib/tenant.d.ts +21 -0
  402. package/dist/src/framework/lib/tenant.js +70 -0
  403. package/dist/{lib → src/framework/lib}/upload.d.ts +11 -10
  404. package/dist/src/framework/lib/upload.js +132 -0
  405. package/dist/src/framework/lib/uploadRegistry.d.ts +23 -0
  406. package/dist/src/framework/lib/uploadRegistry.js +34 -0
  407. package/dist/{lib → src/framework/lib}/validate.d.ts +1 -1
  408. package/dist/{lib → src/framework/lib}/validate.js +2 -2
  409. package/dist/src/framework/lib/ws.d.ts +19 -0
  410. package/dist/src/framework/lib/ws.js +130 -0
  411. package/dist/src/framework/lib/wsHeartbeat.d.ts +12 -0
  412. package/dist/src/framework/lib/wsHeartbeat.js +53 -0
  413. package/dist/src/framework/lib/wsMessages.d.ts +25 -0
  414. package/dist/src/framework/lib/wsMessages.js +45 -0
  415. package/dist/src/framework/lib/wsNamespace.d.ts +17 -0
  416. package/dist/src/framework/lib/wsNamespace.js +19 -0
  417. package/dist/src/framework/lib/wsPresence.d.ts +17 -0
  418. package/dist/src/framework/lib/wsPresence.js +84 -0
  419. package/dist/src/framework/lib/wsTransport.d.ts +38 -0
  420. package/dist/src/framework/lib/wsTransport.js +9 -0
  421. package/dist/{lib → src/framework/lib}/zodToMongoose.d.ts +1 -1
  422. package/dist/{lib → src/framework/lib}/zodToMongoose.js +11 -11
  423. package/dist/{middleware → src/framework/middleware}/auditLog.d.ts +4 -3
  424. package/dist/src/framework/middleware/auditLog.js +42 -0
  425. package/dist/{middleware → src/framework/middleware}/botProtection.d.ts +2 -2
  426. package/dist/{middleware → src/framework/middleware}/botProtection.js +8 -9
  427. package/dist/src/framework/middleware/cacheResponse.d.ts +35 -0
  428. package/dist/src/framework/middleware/cacheResponse.js +126 -0
  429. package/dist/{middleware → src/framework/middleware}/captcha.d.ts +2 -3
  430. package/dist/src/framework/middleware/captcha.js +37 -0
  431. package/dist/{middleware → src/framework/middleware}/errorHandler.d.ts +1 -1
  432. package/dist/{middleware → src/framework/middleware}/errorHandler.js +2 -2
  433. package/dist/src/framework/middleware/index.js +1 -0
  434. package/dist/{middleware → src/framework/middleware}/logger.d.ts +1 -1
  435. package/dist/src/framework/middleware/metrics.d.ts +12 -0
  436. package/dist/src/framework/middleware/metrics.js +26 -0
  437. package/dist/{middleware → src/framework/middleware}/rateLimit.d.ts +2 -2
  438. package/dist/src/framework/middleware/rateLimit.js +22 -0
  439. package/dist/src/framework/middleware/requestId.d.ts +3 -0
  440. package/dist/{middleware → src/framework/middleware}/requestId.js +2 -2
  441. package/dist/{middleware → src/framework/middleware}/requestLogger.d.ts +3 -3
  442. package/dist/{middleware → src/framework/middleware}/requestLogger.js +17 -12
  443. package/dist/{middleware → src/framework/middleware}/requestSigning.d.ts +2 -2
  444. package/dist/{middleware → src/framework/middleware}/requestSigning.js +18 -20
  445. package/dist/src/framework/middleware/tenant.d.ts +14 -0
  446. package/dist/{middleware → src/framework/middleware}/tenant.js +31 -27
  447. package/dist/src/framework/middleware/upload.d.ts +5 -0
  448. package/dist/{middleware → src/framework/middleware}/upload.js +4 -4
  449. package/dist/{middleware → src/framework/middleware}/webhookAuth.d.ts +3 -3
  450. package/dist/{middleware → src/framework/middleware}/webhookAuth.js +11 -12
  451. package/dist/src/framework/models/AuditLog.d.ts +21 -0
  452. package/dist/src/framework/models/AuditLog.js +31 -0
  453. package/dist/src/framework/mountMiddleware.d.ts +91 -0
  454. package/dist/src/framework/mountMiddleware.js +128 -0
  455. package/dist/src/framework/mountOptionalEndpoints.d.ts +103 -0
  456. package/dist/src/framework/mountOptionalEndpoints.js +47 -0
  457. package/dist/src/framework/mountRoutes.d.ts +21 -0
  458. package/dist/src/framework/mountRoutes.js +144 -0
  459. package/dist/src/framework/persistence/cronRegistry.d.ts +28 -0
  460. package/dist/src/framework/persistence/cronRegistry.js +139 -0
  461. package/dist/src/framework/persistence/idempotency.d.ts +26 -0
  462. package/dist/src/framework/persistence/idempotency.js +178 -0
  463. package/dist/src/framework/persistence/index.d.ts +6 -0
  464. package/dist/src/framework/persistence/index.js +8 -0
  465. package/dist/src/framework/persistence/storeInfra.d.ts +9 -0
  466. package/dist/src/framework/persistence/storeInfra.js +1 -0
  467. package/dist/src/framework/persistence/uploadRegistry.d.ts +35 -0
  468. package/dist/src/framework/persistence/uploadRegistry.js +235 -0
  469. package/dist/src/framework/persistence/wsMessages.d.ts +22 -0
  470. package/dist/src/framework/persistence/wsMessages.js +296 -0
  471. package/dist/src/framework/preloadSchemas.d.ts +24 -0
  472. package/dist/src/framework/preloadSchemas.js +42 -0
  473. package/dist/src/framework/registerBoundaryAdapters.d.ts +23 -0
  474. package/dist/src/framework/registerBoundaryAdapters.js +46 -0
  475. package/dist/src/framework/routes/admin.d.ts +9 -0
  476. package/dist/src/framework/routes/admin.js +361 -0
  477. package/dist/src/framework/routes/health.d.ts +1 -0
  478. package/dist/src/framework/routes/health.js +21 -0
  479. package/dist/src/framework/routes/home.d.ts +1 -0
  480. package/dist/src/framework/routes/home.js +18 -0
  481. package/dist/src/framework/routes/jobs.d.ts +3 -0
  482. package/dist/{routes → src/framework/routes}/jobs.js +128 -103
  483. package/dist/src/framework/routes/metrics.d.ts +10 -0
  484. package/dist/src/framework/routes/metrics.js +57 -0
  485. package/dist/{routes → src/framework/routes}/uploads.d.ts +3 -3
  486. package/dist/src/framework/routes/uploads.js +262 -0
  487. package/dist/src/framework/runPluginLifecycle.d.ts +27 -0
  488. package/dist/src/framework/runPluginLifecycle.js +121 -0
  489. package/dist/src/framework/secrets/frameworkSecretSchema.d.ts +58 -0
  490. package/dist/src/framework/secrets/frameworkSecretSchema.js +20 -0
  491. package/dist/src/framework/secrets/index.d.ts +9 -0
  492. package/dist/src/framework/secrets/index.js +7 -0
  493. package/dist/src/framework/secrets/providers/envProvider.d.ts +15 -0
  494. package/dist/src/framework/secrets/providers/envProvider.js +18 -0
  495. package/dist/src/framework/secrets/providers/fileProvider.d.ts +8 -0
  496. package/dist/src/framework/secrets/providers/fileProvider.js +82 -0
  497. package/dist/src/framework/secrets/providers/ssmProvider.d.ts +20 -0
  498. package/dist/src/framework/secrets/providers/ssmProvider.js +127 -0
  499. package/dist/src/framework/secrets/resolveSecretBundle.d.ts +53 -0
  500. package/dist/src/framework/secrets/resolveSecretBundle.js +84 -0
  501. package/dist/src/framework/secrets/resolveSecrets.d.ts +18 -0
  502. package/dist/src/framework/secrets/resolveSecrets.js +34 -0
  503. package/dist/src/framework/sse/index.d.ts +21 -0
  504. package/dist/src/framework/sse/index.js +109 -0
  505. package/dist/src/framework/ws/index.d.ts +11 -0
  506. package/dist/src/framework/ws/index.js +8 -0
  507. package/dist/src/index.d.ts +87 -0
  508. package/dist/src/index.js +58 -0
  509. package/dist/src/lib/appConfig.d.ts +7 -0
  510. package/dist/src/lib/appConfig.js +27 -0
  511. package/dist/src/lib/appMeta.d.ts +7 -0
  512. package/dist/src/lib/appMeta.js +3 -0
  513. package/dist/src/lib/authConfig.d.ts +532 -0
  514. package/dist/{lib/appConfig.js → src/lib/authConfig.js} +75 -17
  515. package/dist/{lib → src/lib}/context.d.ts +6 -12
  516. package/dist/{lib → src/lib}/context.js +5 -5
  517. package/dist/src/lib/logger.d.ts +1 -0
  518. package/dist/src/lib/logger.js +1 -0
  519. package/dist/src/lib/mongo.d.ts +58 -0
  520. package/dist/src/lib/mongo.js +96 -0
  521. package/dist/src/lib/queue.d.ts +72 -0
  522. package/dist/src/lib/queue.js +152 -0
  523. package/dist/src/lib/redis.d.ts +28 -0
  524. package/dist/src/lib/redis.js +72 -0
  525. package/dist/{lib → src/lib}/signing.d.ts +2 -2
  526. package/dist/src/lib/signing.js +210 -0
  527. package/dist/src/lib/signingConfig.d.ts +40 -0
  528. package/dist/src/lib/signingConfig.js +28 -0
  529. package/dist/src/server.d.ts +146 -0
  530. package/dist/src/server.js +469 -0
  531. package/dist/src/shared/lib/HttpError.d.ts +1 -0
  532. package/dist/src/shared/lib/HttpError.js +2 -0
  533. package/dist/src/shared/lib/constants.d.ts +10 -0
  534. package/dist/src/shared/lib/crypto.d.ts +43 -0
  535. package/dist/src/shared/lib/crypto.js +74 -0
  536. package/dist/src/shared/lib/signing.d.ts +52 -0
  537. package/dist/{lib → src/shared/lib}/signing.js +35 -8
  538. package/dist/src/testing.d.ts +34 -0
  539. package/dist/src/testing.js +93 -0
  540. package/package.json +60 -24
  541. package/dist/adapters/memoryAuth.d.ts +0 -52
  542. package/dist/adapters/memoryAuth.js +0 -749
  543. package/dist/adapters/memoryStorage.d.ts +0 -3
  544. package/dist/adapters/memoryStorage.js +0 -44
  545. package/dist/adapters/mongoAuth.d.ts +0 -2
  546. package/dist/adapters/mongoAuth.js +0 -403
  547. package/dist/adapters/sqliteAuth.d.ts +0 -72
  548. package/dist/adapters/sqliteAuth.js +0 -858
  549. package/dist/app.d.ts +0 -559
  550. package/dist/app.js +0 -651
  551. package/dist/entrypoints/mongo.d.ts +0 -5
  552. package/dist/entrypoints/mongo.js +0 -4
  553. package/dist/entrypoints/queue.d.ts +0 -2
  554. package/dist/entrypoints/queue.js +0 -1
  555. package/dist/entrypoints/redis.d.ts +0 -1
  556. package/dist/entrypoints/redis.js +0 -1
  557. package/dist/index.d.ts +0 -117
  558. package/dist/index.js +0 -88
  559. package/dist/lib/appConfig.d.ts +0 -275
  560. package/dist/lib/auditLog.d.ts +0 -58
  561. package/dist/lib/auditLog.js +0 -218
  562. package/dist/lib/authAdapter.d.ts +0 -246
  563. package/dist/lib/authAdapter.js +0 -7
  564. package/dist/lib/authRateLimit.d.ts +0 -13
  565. package/dist/lib/authRateLimit.js +0 -117
  566. package/dist/lib/clientIp.d.ts +0 -14
  567. package/dist/lib/credentialStuffing.d.ts +0 -31
  568. package/dist/lib/credentialStuffing.js +0 -77
  569. package/dist/lib/crypto.d.ts +0 -11
  570. package/dist/lib/crypto.js +0 -22
  571. package/dist/lib/deletionCancelToken.d.ts +0 -12
  572. package/dist/lib/deletionCancelToken.js +0 -88
  573. package/dist/lib/emailVerification.d.ts +0 -19
  574. package/dist/lib/emailVerification.js +0 -129
  575. package/dist/lib/fingerprint.js +0 -36
  576. package/dist/lib/idempotency.js +0 -182
  577. package/dist/lib/jwks.d.ts +0 -25
  578. package/dist/lib/jwks.js +0 -51
  579. package/dist/lib/jwt.d.ts +0 -15
  580. package/dist/lib/jwt.js +0 -111
  581. package/dist/lib/metrics.d.ts +0 -14
  582. package/dist/lib/mfaChallenge.d.ts +0 -55
  583. package/dist/lib/mfaChallenge.js +0 -398
  584. package/dist/lib/mongo.d.ts +0 -39
  585. package/dist/lib/mongo.js +0 -124
  586. package/dist/lib/oauth.d.ts +0 -40
  587. package/dist/lib/oauth.js +0 -101
  588. package/dist/lib/oauthCode.d.ts +0 -15
  589. package/dist/lib/oauthCode.js +0 -95
  590. package/dist/lib/pagination.d.ts +0 -119
  591. package/dist/lib/pagination.js +0 -166
  592. package/dist/lib/queue.d.ts +0 -37
  593. package/dist/lib/queue.js +0 -117
  594. package/dist/lib/redis.d.ts +0 -9
  595. package/dist/lib/redis.js +0 -61
  596. package/dist/lib/resetPassword.d.ts +0 -12
  597. package/dist/lib/resetPassword.js +0 -93
  598. package/dist/lib/roles.d.ts +0 -7
  599. package/dist/lib/roles.js +0 -49
  600. package/dist/lib/saml.d.ts +0 -25
  601. package/dist/lib/saml.js +0 -64
  602. package/dist/lib/securityEvents.d.ts +0 -28
  603. package/dist/lib/securityEvents.js +0 -26
  604. package/dist/lib/session.d.ts +0 -49
  605. package/dist/lib/session.js +0 -597
  606. package/dist/lib/tenant.d.ts +0 -15
  607. package/dist/lib/tenant.js +0 -65
  608. package/dist/lib/upload.js +0 -112
  609. package/dist/lib/uploadRegistry.d.ts +0 -18
  610. package/dist/lib/uploadRegistry.js +0 -83
  611. package/dist/lib/ws.d.ts +0 -22
  612. package/dist/lib/ws.js +0 -96
  613. package/dist/lib/wsHeartbeat.d.ts +0 -12
  614. package/dist/lib/wsHeartbeat.js +0 -57
  615. package/dist/lib/wsMessages.d.ts +0 -40
  616. package/dist/lib/wsMessages.js +0 -330
  617. package/dist/lib/wsPresence.d.ts +0 -25
  618. package/dist/lib/wsPresence.js +0 -99
  619. package/dist/middleware/auditLog.js +0 -39
  620. package/dist/middleware/bearerAuth.d.ts +0 -2
  621. package/dist/middleware/bearerAuth.js +0 -11
  622. package/dist/middleware/cacheResponse.d.ts +0 -15
  623. package/dist/middleware/cacheResponse.js +0 -178
  624. package/dist/middleware/captcha.js +0 -36
  625. package/dist/middleware/csrf.js +0 -129
  626. package/dist/middleware/identify.d.ts +0 -3
  627. package/dist/middleware/identify.js +0 -122
  628. package/dist/middleware/index.js +0 -1
  629. package/dist/middleware/metrics.d.ts +0 -9
  630. package/dist/middleware/metrics.js +0 -26
  631. package/dist/middleware/rateLimit.js +0 -22
  632. package/dist/middleware/requestId.d.ts +0 -3
  633. package/dist/middleware/scimAuth.d.ts +0 -8
  634. package/dist/middleware/scimAuth.js +0 -29
  635. package/dist/middleware/tenant.d.ts +0 -5
  636. package/dist/middleware/upload.d.ts +0 -5
  637. package/dist/middleware/userAuth.d.ts +0 -3
  638. package/dist/middleware/userAuth.js +0 -6
  639. package/dist/models/AuditLog.d.ts +0 -30
  640. package/dist/models/AuditLog.js +0 -39
  641. package/dist/models/AuthUser.js +0 -55
  642. package/dist/models/Group.d.ts +0 -21
  643. package/dist/models/Group.js +0 -28
  644. package/dist/models/GroupMembership.js +0 -25
  645. package/dist/models/TenantRole.d.ts +0 -15
  646. package/dist/models/TenantRole.js +0 -23
  647. package/dist/routes/auth.d.ts +0 -12
  648. package/dist/routes/auth.js +0 -744
  649. package/dist/routes/groups.js +0 -346
  650. package/dist/routes/health.d.ts +0 -1
  651. package/dist/routes/health.js +0 -22
  652. package/dist/routes/home.d.ts +0 -1
  653. package/dist/routes/home.js +0 -16
  654. package/dist/routes/jobs.d.ts +0 -2
  655. package/dist/routes/m2m.d.ts +0 -2
  656. package/dist/routes/m2m.js +0 -72
  657. package/dist/routes/metrics.d.ts +0 -8
  658. package/dist/routes/metrics.js +0 -55
  659. package/dist/routes/mfa.d.ts +0 -5
  660. package/dist/routes/mfa.js +0 -628
  661. package/dist/routes/oauth.d.ts +0 -2
  662. package/dist/routes/oauth.js +0 -520
  663. package/dist/routes/oidc.d.ts +0 -2
  664. package/dist/routes/oidc.js +0 -29
  665. package/dist/routes/passkey.d.ts +0 -1
  666. package/dist/routes/passkey.js +0 -157
  667. package/dist/routes/saml.d.ts +0 -2
  668. package/dist/routes/saml.js +0 -86
  669. package/dist/routes/scim.d.ts +0 -2
  670. package/dist/routes/scim.js +0 -255
  671. package/dist/routes/uploads.js +0 -227
  672. package/dist/schemas/auth.js +0 -30
  673. package/dist/server.d.ts +0 -57
  674. package/dist/server.js +0 -112
  675. package/dist/services/auth.d.ts +0 -29
  676. package/dist/services/auth.js +0 -238
  677. package/dist/ws/index.d.ts +0 -10
  678. package/dist/ws/index.js +0 -39
  679. package/docs/sections/adding-middleware/full.md +0 -35
  680. package/docs/sections/adding-models/full.md +0 -125
  681. package/docs/sections/adding-models/overview.md +0 -13
  682. package/docs/sections/adding-routes/full.md +0 -182
  683. package/docs/sections/adding-routes/overview.md +0 -23
  684. package/docs/sections/auth-flow/full.md +0 -790
  685. package/docs/sections/auth-flow/overview.md +0 -10
  686. package/docs/sections/auth-security-examples/full.md +0 -388
  687. package/docs/sections/authentication/full.md +0 -130
  688. package/docs/sections/authentication/overview.md +0 -5
  689. package/docs/sections/cli/full.md +0 -42
  690. package/docs/sections/configuration/full.md +0 -172
  691. package/docs/sections/configuration/overview.md +0 -18
  692. package/docs/sections/configuration-example/full.md +0 -117
  693. package/docs/sections/configuration-example/overview.md +0 -30
  694. package/docs/sections/documentation/full.md +0 -171
  695. package/docs/sections/environment-variables/full.md +0 -55
  696. package/docs/sections/exports/full.md +0 -123
  697. package/docs/sections/extending-context/full.md +0 -59
  698. package/docs/sections/header.md +0 -3
  699. package/docs/sections/installation/full.md +0 -6
  700. package/docs/sections/jobs/full.md +0 -140
  701. package/docs/sections/jobs/overview.md +0 -15
  702. package/docs/sections/logging/full.md +0 -83
  703. package/docs/sections/metrics/full.md +0 -131
  704. package/docs/sections/mongodb-connections/full.md +0 -45
  705. package/docs/sections/mongodb-connections/overview.md +0 -7
  706. package/docs/sections/multi-tenancy/full.md +0 -66
  707. package/docs/sections/multi-tenancy/overview.md +0 -15
  708. package/docs/sections/oauth/full.md +0 -189
  709. package/docs/sections/oauth/overview.md +0 -16
  710. package/docs/sections/package-development/full.md +0 -7
  711. package/docs/sections/pagination/full.md +0 -93
  712. package/docs/sections/passkey-login/full.md +0 -90
  713. package/docs/sections/passkey-login/overview.md +0 -1
  714. package/docs/sections/peer-dependencies/full.md +0 -47
  715. package/docs/sections/quick-start/full.md +0 -43
  716. package/docs/sections/response-caching/full.md +0 -117
  717. package/docs/sections/response-caching/overview.md +0 -13
  718. package/docs/sections/roles/full.md +0 -225
  719. package/docs/sections/roles/overview.md +0 -14
  720. package/docs/sections/running-without-redis/full.md +0 -16
  721. package/docs/sections/running-without-redis-or-mongodb/full.md +0 -60
  722. package/docs/sections/signing/full.md +0 -203
  723. package/docs/sections/stack/full.md +0 -10
  724. package/docs/sections/uploads/full.md +0 -208
  725. package/docs/sections/versioning/full.md +0 -85
  726. package/docs/sections/webhook-auth/full.md +0 -100
  727. package/docs/sections/websocket/full.md +0 -196
  728. package/docs/sections/websocket/overview.md +0 -5
  729. package/docs/sections/websocket-rooms/full.md +0 -102
  730. package/docs/sections/websocket-rooms/overview.md +0 -5
  731. /package/dist/{lib/storageAdapter.js → packages/bunshot-admin/src/types/env.js} +0 -0
  732. /package/dist/{lib → packages/bunshot-auth/src/lib}/fingerprint.d.ts +0 -0
  733. /package/dist/{lib → packages/bunshot-auth/src/lib}/logger.d.ts +0 -0
  734. /package/dist/{lib → packages/bunshot-core/src}/constants.d.ts +0 -0
  735. /package/dist/{lib → packages/bunshot-core/src}/storageAdapter.d.ts +0 -0
  736. /package/dist/{lib → src/framework/lib}/createDtoMapper.d.ts +0 -0
  737. /package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.d.ts +0 -0
  738. /package/dist/{middleware → src/framework/middleware}/cors.d.ts +0 -0
  739. /package/dist/{middleware → src/framework/middleware}/cors.js +0 -0
  740. /package/dist/{middleware → src/framework/middleware}/index.d.ts +0 -0
  741. /package/dist/{middleware → src/framework/middleware}/logger.js +0 -0
  742. /package/dist/{lib → src/shared/lib}/constants.js +0 -0
package/dist/lib/mongo.js DELETED
@@ -1,124 +0,0 @@
1
- import { log } from "./logger";
2
- const isProd = process.env.NODE_ENV === "production";
3
- function requireMongoose() {
4
- try {
5
- // Bun supports require() in ESM; this defers the import to call time
6
- // eslint-disable-next-line @typescript-eslint/no-require-imports
7
- const mod = require("mongoose");
8
- return mod.default ?? mod;
9
- }
10
- catch {
11
- throw new Error("mongoose is not installed. Run: bun add mongoose");
12
- }
13
- }
14
- function buildUri(user, password, host, db) {
15
- const [hostPart, queryPart] = host.split("?");
16
- return `mongodb+srv://${encodeURIComponent(user)}:${encodeURIComponent(password)}@${hostPart.replace(/\/$/, "")}/${db}${queryPart ? `?${queryPart}` : ""}`;
17
- }
18
- // Internal mutable references — set inside connect functions
19
- let _authConn = null;
20
- let _appConn = null;
21
- let _mongoose = null;
22
- function makeConnectionProxy(label, getConn, setConn) {
23
- return new Proxy({}, {
24
- get(_, prop) {
25
- let conn = getConn();
26
- if (!conn) {
27
- // Lazily create a disconnected connection so appConnection.model() works at module
28
- // load time. Mongoose buffers queries until openUri() is called by connectMongo().
29
- conn = requireMongoose().createConnection();
30
- setConn(conn);
31
- }
32
- const val = conn[prop];
33
- return typeof val === "function" ? val.bind(conn) : val;
34
- },
35
- });
36
- }
37
- /**
38
- * Named connection used exclusively for auth data (AuthUser model).
39
- * Connected via connectAuthMongo() or connectMongo() (backward compat).
40
- */
41
- export const authConnection = makeConnectionProxy("auth", () => _authConn, (c) => { _authConn = c; });
42
- /**
43
- * Named connection for app/tenant data.
44
- * Connected via connectAppMongo() or connectMongo() (backward compat).
45
- * Use this when registering your own models: appConnection.model("Product", schema).
46
- */
47
- export const appConnection = makeConnectionProxy("app", () => _appConn, (c) => { _appConn = c; });
48
- /**
49
- * The mongoose instance. Available after connectMongo() / connectAuthMongo() is called.
50
- */
51
- export const mongoose = new Proxy({}, {
52
- get(_, prop) {
53
- const mg = _mongoose ?? requireMongoose();
54
- return mg[prop];
55
- },
56
- });
57
- /**
58
- * Connect the auth connection to its dedicated MongoDB server.
59
- * Uses MONGO_AUTH_USER_*, MONGO_AUTH_PW_*, MONGO_AUTH_HOST_*, MONGO_AUTH_DB_* env vars.
60
- */
61
- export const connectAuthMongo = async () => {
62
- const mg = requireMongoose();
63
- _mongoose = mg;
64
- if (!_authConn)
65
- _authConn = mg.createConnection();
66
- const user = isProd ? process.env.MONGO_AUTH_USER_PROD : process.env.MONGO_AUTH_USER_DEV;
67
- const password = isProd ? process.env.MONGO_AUTH_PW_PROD : process.env.MONGO_AUTH_PW_DEV;
68
- const host = isProd ? process.env.MONGO_AUTH_HOST_PROD : process.env.MONGO_AUTH_HOST_DEV;
69
- const db = isProd ? process.env.MONGO_AUTH_DB_PROD : process.env.MONGO_AUTH_DB_DEV;
70
- const uri = buildUri(user, password, host, db);
71
- await _authConn.openUri(uri);
72
- log(`[mongo] auth connected to ${host} as ${user}`);
73
- };
74
- /**
75
- * Connect the app connection to its MongoDB server.
76
- * Uses MONGO_USER_*, MONGO_PW_*, MONGO_HOST_*, MONGO_DB_* env vars.
77
- */
78
- export const connectAppMongo = async () => {
79
- const mg = requireMongoose();
80
- _mongoose = mg;
81
- if (!_appConn)
82
- _appConn = mg.createConnection();
83
- const user = isProd ? process.env.MONGO_USER_PROD : process.env.MONGO_USER_DEV;
84
- const password = isProd ? process.env.MONGO_PW_PROD : process.env.MONGO_PW_DEV;
85
- const host = isProd ? process.env.MONGO_HOST_PROD : process.env.MONGO_HOST_DEV;
86
- const db = isProd ? process.env.MONGO_DB_PROD : process.env.MONGO_DB_DEV;
87
- const uri = buildUri(user, password, host, db);
88
- await _appConn.openUri(uri);
89
- log(`[mongo] app connected to ${host} as ${user}`);
90
- };
91
- /**
92
- * Connect both auth and app connections to the same MongoDB server.
93
- * Backward-compatible shorthand for single-DB setups.
94
- * Uses MONGO_USER_*, MONGO_PW_*, MONGO_HOST_*, MONGO_DB_* env vars.
95
- */
96
- export const connectMongo = async () => {
97
- const mg = requireMongoose();
98
- _mongoose = mg;
99
- if (!_authConn)
100
- _authConn = mg.createConnection();
101
- if (!_appConn)
102
- _appConn = mg.createConnection();
103
- const user = isProd ? process.env.MONGO_USER_PROD : process.env.MONGO_USER_DEV;
104
- const password = isProd ? process.env.MONGO_PW_PROD : process.env.MONGO_PW_DEV;
105
- const host = isProd ? process.env.MONGO_HOST_PROD : process.env.MONGO_HOST_DEV;
106
- const db = isProd ? process.env.MONGO_DB_PROD : process.env.MONGO_DB_DEV;
107
- const uri = buildUri(user, password, host, db);
108
- await Promise.all([
109
- _authConn.openUri(uri),
110
- _appConn.openUri(uri),
111
- ]);
112
- log(`[mongo] connected to ${host} as ${user}`);
113
- };
114
- /**
115
- * Close both auth and app Mongo connections.
116
- * Useful for one-off scripts that need a clean exit.
117
- */
118
- export const disconnectMongo = async () => {
119
- await Promise.all([
120
- _authConn && _authConn.readyState !== 0 ? _authConn.close() : Promise.resolve(),
121
- _appConn && _appConn.readyState !== 0 ? _appConn.close() : Promise.resolve(),
122
- ]);
123
- log("[mongo] disconnected");
124
- };
@@ -1,40 +0,0 @@
1
- import { Google, Apple, MicrosoftEntraId, GitHub, generateState, generateCodeVerifier } from "arctic";
2
- export type OAuthProviderConfig = {
3
- google?: {
4
- clientId: string;
5
- clientSecret: string;
6
- redirectUri: string;
7
- };
8
- apple?: {
9
- clientId: string;
10
- teamId: string;
11
- keyId: string;
12
- privateKey: string;
13
- redirectUri: string;
14
- };
15
- microsoft?: {
16
- tenantId: string;
17
- clientId: string;
18
- clientSecret: string;
19
- redirectUri: string;
20
- };
21
- github?: {
22
- clientId: string;
23
- clientSecret: string;
24
- redirectUri: string;
25
- };
26
- };
27
- export declare const initOAuthProviders: (config: OAuthProviderConfig) => void;
28
- export declare const getGoogle: () => Google;
29
- export declare const getApple: () => Apple;
30
- export declare const getMicrosoft: () => MicrosoftEntraId;
31
- export declare const getGitHub: () => GitHub;
32
- export declare const getConfiguredOAuthProviders: () => string[];
33
- type OAuthStateStore = "redis" | "mongo" | "sqlite" | "memory";
34
- export declare const setOAuthStateStore: (store: OAuthStateStore) => void;
35
- export declare const storeOAuthState: (state: string, codeVerifier?: string, linkUserId?: string) => Promise<void>;
36
- export declare const consumeOAuthState: (state: string) => Promise<{
37
- codeVerifier?: string;
38
- linkUserId?: string;
39
- } | null>;
40
- export { generateState, generateCodeVerifier };
package/dist/lib/oauth.js DELETED
@@ -1,101 +0,0 @@
1
- import { Google, Apple, MicrosoftEntraId, GitHub, generateState, generateCodeVerifier } from "arctic";
2
- import { getRedis } from "./redis";
3
- import { appConnection, mongoose } from "./mongo";
4
- import { getAppName } from "./appConfig";
5
- import { sqliteStoreOAuthState, sqliteConsumeOAuthState } from "../adapters/sqliteAuth";
6
- import { memoryStoreOAuthState, memoryConsumeOAuthState } from "../adapters/memoryAuth";
7
- let _providers = {};
8
- export const initOAuthProviders = (config) => {
9
- if (config.google) {
10
- const { clientId, clientSecret, redirectUri } = config.google;
11
- _providers.google = new Google(clientId, clientSecret, redirectUri);
12
- }
13
- if (config.apple) {
14
- const { clientId, teamId, keyId, privateKey, redirectUri } = config.apple;
15
- _providers.apple = new Apple(clientId, teamId, keyId, new TextEncoder().encode(privateKey), redirectUri);
16
- }
17
- if (config.microsoft) {
18
- const { tenantId, clientId, clientSecret, redirectUri } = config.microsoft;
19
- _providers.microsoft = new MicrosoftEntraId(tenantId, clientId, clientSecret, redirectUri);
20
- }
21
- if (config.github) {
22
- const { clientId, clientSecret, redirectUri } = config.github;
23
- _providers.github = new GitHub(clientId, clientSecret, redirectUri);
24
- }
25
- };
26
- export const getGoogle = () => {
27
- if (!_providers.google)
28
- throw new Error("Google OAuth not configured");
29
- return _providers.google;
30
- };
31
- export const getApple = () => {
32
- if (!_providers.apple)
33
- throw new Error("Apple OAuth not configured");
34
- return _providers.apple;
35
- };
36
- export const getMicrosoft = () => {
37
- if (!_providers.microsoft)
38
- throw new Error("Microsoft Entra ID OAuth not configured");
39
- return _providers.microsoft;
40
- };
41
- export const getGitHub = () => {
42
- if (!_providers.github)
43
- throw new Error("GitHub OAuth not configured");
44
- return _providers.github;
45
- };
46
- export const getConfiguredOAuthProviders = () => Object.entries(_providers)
47
- .filter(([, v]) => v != null)
48
- .map(([k]) => k);
49
- function getOAuthStateModel() {
50
- if (appConnection.models["OAuthState"])
51
- return appConnection.models["OAuthState"];
52
- const { Schema } = mongoose;
53
- const oauthStateSchema = new Schema({
54
- state: { type: String, required: true, unique: true },
55
- codeVerifier: { type: String },
56
- linkUserId: { type: String },
57
- expiresAt: { type: Date, required: true, index: { expireAfterSeconds: 0 } },
58
- }, { collection: "oauth_states" });
59
- return appConnection.model("OAuthState", oauthStateSchema);
60
- }
61
- let _oauthStore = "redis";
62
- export const setOAuthStateStore = (store) => { _oauthStore = store; };
63
- // ---------------------------------------------------------------------------
64
- // State helpers
65
- // ---------------------------------------------------------------------------
66
- const STATE_TTL = 300; // 5 minutes
67
- export const storeOAuthState = async (state, codeVerifier, linkUserId) => {
68
- if (_oauthStore === "memory") {
69
- memoryStoreOAuthState(state, codeVerifier, linkUserId);
70
- return;
71
- }
72
- if (_oauthStore === "sqlite") {
73
- sqliteStoreOAuthState(state, codeVerifier, linkUserId);
74
- return;
75
- }
76
- if (_oauthStore === "mongo") {
77
- const expiresAt = new Date(Date.now() + STATE_TTL * 1000);
78
- await getOAuthStateModel().create({ state, codeVerifier, linkUserId, expiresAt });
79
- return;
80
- }
81
- await getRedis().set(`oauth:${getAppName()}:state:${state}`, JSON.stringify({ codeVerifier, linkUserId }), "EX", STATE_TTL);
82
- };
83
- export const consumeOAuthState = async (state) => {
84
- if (_oauthStore === "memory")
85
- return memoryConsumeOAuthState(state);
86
- if (_oauthStore === "sqlite")
87
- return sqliteConsumeOAuthState(state);
88
- if (_oauthStore === "mongo") {
89
- const doc = await getOAuthStateModel()
90
- .findOneAndDelete({ state, expiresAt: { $gt: new Date() } })
91
- .lean();
92
- return doc ? { codeVerifier: doc.codeVerifier, linkUserId: doc.linkUserId } : null;
93
- }
94
- const key = `oauth:${getAppName()}:state:${state}`;
95
- const value = await getRedis().get(key);
96
- if (!value)
97
- return null;
98
- await getRedis().del(key);
99
- return JSON.parse(value);
100
- };
101
- export { generateState, generateCodeVerifier };
@@ -1,15 +0,0 @@
1
- type OAuthCodeStore = "redis" | "mongo" | "sqlite" | "memory";
2
- export declare const setOAuthCodeStore: (store: OAuthCodeStore) => void;
3
- export interface OAuthCodePayload {
4
- token: string;
5
- userId: string;
6
- email?: string;
7
- refreshToken?: string;
8
- }
9
- /** Store a one-time authorization code. Returns the raw code (for the redirect URL).
10
- * Only the SHA-256 hash is persisted. */
11
- export declare const storeOAuthCode: (payload: OAuthCodePayload) => Promise<string>;
12
- /** Atomically consume an authorization code — returns its payload and deletes it.
13
- * Returns null if invalid, expired, or already used. */
14
- export declare const consumeOAuthCode: (code: string) => Promise<OAuthCodePayload | null>;
15
- export {};
@@ -1,95 +0,0 @@
1
- import { getRedis } from "./redis";
2
- import { appConnection, mongoose } from "./mongo";
3
- import { getAppName } from "./appConfig";
4
- import { sha256 } from "./crypto";
5
- import { memoryStoreOAuthCode, memoryConsumeOAuthCode, } from "../adapters/memoryAuth";
6
- import { sqliteStoreOAuthCode, sqliteConsumeOAuthCode, } from "../adapters/sqliteAuth";
7
- function getOAuthCodeModel() {
8
- if (appConnection.models["OAuthCode"])
9
- return appConnection.models["OAuthCode"];
10
- const { Schema } = mongoose;
11
- const schema = new Schema({
12
- codeHash: { type: String, required: true, unique: true },
13
- token: { type: String, required: true },
14
- userId: { type: String, required: true },
15
- email: { type: String },
16
- refreshToken: { type: String },
17
- expiresAt: { type: Date, required: true, index: { expireAfterSeconds: 0 } },
18
- }, { collection: "oauth_codes" });
19
- return appConnection.model("OAuthCode", schema);
20
- }
21
- // ---------------------------------------------------------------------------
22
- // Redis helpers
23
- // ---------------------------------------------------------------------------
24
- /** Atomically GET+DEL a key. Uses native GETDEL (Redis >= 6.2) with a Lua fallback. */
25
- async function redisGetDel(key) {
26
- const redis = getRedis();
27
- if (typeof redis.getdel === "function") {
28
- try {
29
- return await redis.getdel(key);
30
- }
31
- catch (err) {
32
- const msg = err?.message ?? "";
33
- if (!/unknown command|ERR unknown command/i.test(msg))
34
- throw err;
35
- }
36
- }
37
- const result = await redis.eval("local v = redis.call('GET', KEYS[1])\nif v then redis.call('DEL', KEYS[1]) end\nreturn v", 1, key);
38
- return result ?? null;
39
- }
40
- let _store = "redis";
41
- export const setOAuthCodeStore = (store) => { _store = store; };
42
- const CODE_TTL = 60; // 60 seconds
43
- // ---------------------------------------------------------------------------
44
- // Public API
45
- // ---------------------------------------------------------------------------
46
- /** Store a one-time authorization code. Returns the raw code (for the redirect URL).
47
- * Only the SHA-256 hash is persisted. */
48
- export const storeOAuthCode = async (payload) => {
49
- const bytes = new Uint8Array(32);
50
- crypto.getRandomValues(bytes);
51
- const code = Buffer.from(bytes).toString("base64url");
52
- const hash = sha256(code);
53
- if (_store === "memory") {
54
- memoryStoreOAuthCode(hash, payload, CODE_TTL);
55
- return code;
56
- }
57
- if (_store === "sqlite") {
58
- sqliteStoreOAuthCode(hash, payload, CODE_TTL);
59
- return code;
60
- }
61
- if (_store === "mongo") {
62
- await getOAuthCodeModel().create({
63
- codeHash: hash,
64
- ...payload,
65
- expiresAt: new Date(Date.now() + CODE_TTL * 1000),
66
- });
67
- return code;
68
- }
69
- // Redis
70
- await getRedis().set(`oauthcode:${getAppName()}:${hash}`, JSON.stringify(payload), "EX", CODE_TTL);
71
- return code;
72
- };
73
- /** Atomically consume an authorization code — returns its payload and deletes it.
74
- * Returns null if invalid, expired, or already used. */
75
- export const consumeOAuthCode = async (code) => {
76
- const hash = sha256(code);
77
- if (_store === "memory")
78
- return memoryConsumeOAuthCode(hash);
79
- if (_store === "sqlite")
80
- return sqliteConsumeOAuthCode(hash);
81
- if (_store === "mongo") {
82
- const doc = await getOAuthCodeModel()
83
- .findOneAndDelete({ codeHash: hash, expiresAt: { $gt: new Date() } })
84
- .lean();
85
- if (!doc)
86
- return null;
87
- return { token: doc.token, userId: doc.userId, email: doc.email, refreshToken: doc.refreshToken };
88
- }
89
- // Redis
90
- const key = `oauthcode:${getAppName()}:${hash}`;
91
- const raw = await redisGetDel(key);
92
- if (!raw)
93
- return null;
94
- return JSON.parse(raw);
95
- };
@@ -1,119 +0,0 @@
1
- import { z } from "zod";
2
- import type { ZodType } from "zod";
3
- export type { PaginationOpts, PaginatedResult } from "./groups";
4
- export interface OffsetParamDefaults {
5
- /** Default: 50 */
6
- limit?: number;
7
- /** Default: 200 */
8
- maxLimit?: number;
9
- /** Default: 0 */
10
- offset?: number;
11
- }
12
- export interface ParsedOffsetParams {
13
- limit: number;
14
- offset: number;
15
- }
16
- /**
17
- * Zod schema for offset pagination query params.
18
- * Fields are `z.string().optional()` — matches the existing query param
19
- * convention. Parse the values with `parseOffsetParams`.
20
- *
21
- * @example
22
- * createRoute({ ..., request: { query: offsetParams({ limit: 20 }) }, ... })
23
- */
24
- export declare function offsetParams(defaults?: OffsetParamDefaults): z.ZodObject<{
25
- limit: z.ZodOptional<z.ZodString>;
26
- offset: z.ZodOptional<z.ZodString>;
27
- }, z.core.$strip>;
28
- /**
29
- * Parses raw string query values into clamped integers.
30
- * - NaN (non-numeric strings) falls back to defaults
31
- * - limit clamped to [1, maxLimit]
32
- * - offset clamped to [0, ∞)
33
- *
34
- * @example
35
- * const { limit, offset } = parseOffsetParams(c.req.query(), { maxLimit: 100 });
36
- */
37
- export declare function parseOffsetParams(raw: {
38
- limit?: string;
39
- offset?: string;
40
- }, defaults?: OffsetParamDefaults): ParsedOffsetParams;
41
- /**
42
- * Zod schema factory for paginated offset responses.
43
- * Wraps `itemSchema` in `{ items, total, limit, offset }` and registers
44
- * the result as a named OpenAPI component.
45
- *
46
- * Throws if `name` was previously registered to a different schema instance.
47
- * Calling with the same `name` + `schema` pair is idempotent.
48
- *
49
- * @example
50
- * const PaginatedUsersResponse = paginatedResponse(UserSchema, "PaginatedUsers");
51
- */
52
- export declare function paginatedResponse<T extends ZodType>(itemSchema: T, name: string): z.ZodObject<{
53
- items: z.ZodArray<T>;
54
- total: z.ZodNumber;
55
- limit: z.ZodNumber;
56
- offset: z.ZodNumber;
57
- }, z.core.$strip>;
58
- export interface CursorParamDefaults {
59
- /** Default: 50 */
60
- limit?: number;
61
- /** Default: 200 */
62
- maxLimit?: number;
63
- }
64
- export interface ParsedCursorParams {
65
- limit: number;
66
- cursor: string | undefined;
67
- }
68
- export interface CursorResult<T> {
69
- items: T[];
70
- nextCursor: string | null;
71
- hasMore: boolean;
72
- }
73
- /**
74
- * Zod schema for cursor pagination query params.
75
- * Fields are `z.string().optional()`. Parse the values with `parseCursorParams`.
76
- *
77
- * @example
78
- * createRoute({ ..., request: { query: cursorParams() }, ... })
79
- */
80
- export declare function cursorParams(defaults?: CursorParamDefaults): z.ZodObject<{
81
- limit: z.ZodOptional<z.ZodString>;
82
- cursor: z.ZodOptional<z.ZodString>;
83
- }, z.core.$strip>;
84
- /**
85
- * Parses raw string query values into typed cursor params.
86
- * - limit: NaN falls back to default, clamped to [1, maxLimit]
87
- * - cursor: empty string normalized to `undefined`; non-empty is pass-through
88
- * - When `signing.cursors: true`, verifies the cursor HMAC — invalid cursor returns null
89
- *
90
- * @example
91
- * const { limit, cursor } = parseCursorParams(c.req.query());
92
- */
93
- export declare function parseCursorParams(raw: {
94
- limit?: string;
95
- cursor?: string;
96
- }, defaults?: CursorParamDefaults): ParsedCursorParams & {
97
- invalidCursor?: true;
98
- };
99
- /**
100
- * Sign a cursor value if `signing.cursors: true`. Otherwise returns the
101
- * cursor unchanged (current behavior).
102
- */
103
- export declare function maybeSignCursor(cursor: string | null): string | null;
104
- /**
105
- * Zod schema factory for cursor-paginated responses.
106
- * Wraps `itemSchema` in `{ items, nextCursor, hasMore }` and registers
107
- * the result as a named OpenAPI component.
108
- *
109
- * Throws if `name` was previously registered to a different schema instance.
110
- * Calling with the same `name` + `schema` pair is idempotent.
111
- *
112
- * @example
113
- * const PostsPage = cursorResponse(PostSchema, "PostsPage");
114
- */
115
- export declare function cursorResponse<T extends ZodType>(itemSchema: T, name: string): z.ZodObject<{
116
- items: z.ZodArray<T>;
117
- nextCursor: z.ZodNullable<z.ZodString>;
118
- hasMore: z.ZodBoolean;
119
- }, z.core.$strip>;
@@ -1,166 +0,0 @@
1
- import { z } from "zod";
2
- import { registerSchema } from "./createRoute";
3
- import { getSigningConfig, getSigningSecret } from "./appConfig";
4
- import { signCursor, verifyCursor } from "./signing";
5
- const _registered = new Map();
6
- function guardedRegister(name, itemSchema, buildWrapper) {
7
- const existing = _registered.get(name);
8
- if (existing !== undefined) {
9
- if (existing.itemSchema !== itemSchema) {
10
- throw new Error(`Pagination schema name "${name}" is already registered to a different schema`);
11
- }
12
- // Same item schema → idempotent, return the cached wrapper
13
- return existing.wrapper;
14
- }
15
- const wrapper = buildWrapper();
16
- _registered.set(name, { itemSchema, wrapper });
17
- registerSchema(name, wrapper);
18
- return wrapper;
19
- }
20
- /**
21
- * Zod schema for offset pagination query params.
22
- * Fields are `z.string().optional()` — matches the existing query param
23
- * convention. Parse the values with `parseOffsetParams`.
24
- *
25
- * @example
26
- * createRoute({ ..., request: { query: offsetParams({ limit: 20 }) }, ... })
27
- */
28
- export function offsetParams(defaults) {
29
- const defaultLimit = defaults?.limit ?? 50;
30
- const defaultOffset = defaults?.offset ?? 0;
31
- const maxLimit = defaults?.maxLimit ?? 200;
32
- return z.object({
33
- limit: z
34
- .string()
35
- .optional()
36
- .describe(`Number of items to return (1–${maxLimit}, default ${defaultLimit})`),
37
- offset: z
38
- .string()
39
- .optional()
40
- .describe(`Number of items to skip (default ${defaultOffset})`),
41
- });
42
- }
43
- /**
44
- * Parses raw string query values into clamped integers.
45
- * - NaN (non-numeric strings) falls back to defaults
46
- * - limit clamped to [1, maxLimit]
47
- * - offset clamped to [0, ∞)
48
- *
49
- * @example
50
- * const { limit, offset } = parseOffsetParams(c.req.query(), { maxLimit: 100 });
51
- */
52
- export function parseOffsetParams(raw, defaults) {
53
- const defaultLimit = defaults?.limit ?? 50;
54
- const maxLimit = defaults?.maxLimit ?? 200;
55
- const defaultOffset = defaults?.offset ?? 0;
56
- const rawLimit = parseInt(raw.limit ?? "", 10);
57
- const rawOffset = parseInt(raw.offset ?? "", 10);
58
- const limit = isNaN(rawLimit)
59
- ? defaultLimit
60
- : Math.min(Math.max(rawLimit, 1), maxLimit);
61
- const offset = isNaN(rawOffset) ? defaultOffset : Math.max(rawOffset, 0);
62
- return { limit, offset };
63
- }
64
- /**
65
- * Zod schema factory for paginated offset responses.
66
- * Wraps `itemSchema` in `{ items, total, limit, offset }` and registers
67
- * the result as a named OpenAPI component.
68
- *
69
- * Throws if `name` was previously registered to a different schema instance.
70
- * Calling with the same `name` + `schema` pair is idempotent.
71
- *
72
- * @example
73
- * const PaginatedUsersResponse = paginatedResponse(UserSchema, "PaginatedUsers");
74
- */
75
- export function paginatedResponse(itemSchema, name) {
76
- return guardedRegister(name, itemSchema, () => z.object({
77
- items: z.array(itemSchema),
78
- total: z.number().int().nonnegative(),
79
- limit: z.number().int().positive(),
80
- offset: z.number().int().nonnegative(),
81
- }));
82
- }
83
- /**
84
- * Zod schema for cursor pagination query params.
85
- * Fields are `z.string().optional()`. Parse the values with `parseCursorParams`.
86
- *
87
- * @example
88
- * createRoute({ ..., request: { query: cursorParams() }, ... })
89
- */
90
- export function cursorParams(defaults) {
91
- const defaultLimit = defaults?.limit ?? 50;
92
- const maxLimit = defaults?.maxLimit ?? 200;
93
- return z.object({
94
- limit: z
95
- .string()
96
- .optional()
97
- .describe(`Number of items to return (1–${maxLimit}, default ${defaultLimit})`),
98
- cursor: z
99
- .string()
100
- .optional()
101
- .describe("Opaque cursor from a previous response's nextCursor field"),
102
- });
103
- }
104
- /**
105
- * Parses raw string query values into typed cursor params.
106
- * - limit: NaN falls back to default, clamped to [1, maxLimit]
107
- * - cursor: empty string normalized to `undefined`; non-empty is pass-through
108
- * - When `signing.cursors: true`, verifies the cursor HMAC — invalid cursor returns null
109
- *
110
- * @example
111
- * const { limit, cursor } = parseCursorParams(c.req.query());
112
- */
113
- export function parseCursorParams(raw, defaults) {
114
- const defaultLimit = defaults?.limit ?? 50;
115
- const maxLimit = defaults?.maxLimit ?? 200;
116
- const rawLimit = parseInt(raw.limit ?? "", 10);
117
- const limit = isNaN(rawLimit)
118
- ? defaultLimit
119
- : Math.min(Math.max(rawLimit, 1), maxLimit);
120
- if (!raw.cursor)
121
- return { limit, cursor: undefined };
122
- const cfg = getSigningConfig();
123
- if (cfg?.cursors) {
124
- const secret = getSigningSecret();
125
- if (secret) {
126
- const verified = verifyCursor(raw.cursor, secret);
127
- if (verified === null)
128
- return { limit, cursor: undefined, invalidCursor: true };
129
- return { limit, cursor: verified };
130
- }
131
- }
132
- return { limit, cursor: raw.cursor };
133
- }
134
- /**
135
- * Sign a cursor value if `signing.cursors: true`. Otherwise returns the
136
- * cursor unchanged (current behavior).
137
- */
138
- export function maybeSignCursor(cursor) {
139
- if (!cursor)
140
- return cursor;
141
- const cfg = getSigningConfig();
142
- if (cfg?.cursors) {
143
- const secret = getSigningSecret();
144
- if (secret)
145
- return signCursor(cursor, secret);
146
- }
147
- return cursor;
148
- }
149
- /**
150
- * Zod schema factory for cursor-paginated responses.
151
- * Wraps `itemSchema` in `{ items, nextCursor, hasMore }` and registers
152
- * the result as a named OpenAPI component.
153
- *
154
- * Throws if `name` was previously registered to a different schema instance.
155
- * Calling with the same `name` + `schema` pair is idempotent.
156
- *
157
- * @example
158
- * const PostsPage = cursorResponse(PostSchema, "PostsPage");
159
- */
160
- export function cursorResponse(itemSchema, name) {
161
- return guardedRegister(name, itemSchema, () => z.object({
162
- items: z.array(itemSchema),
163
- nextCursor: z.string().nullable(),
164
- hasMore: z.boolean(),
165
- }));
166
- }