@lastshotlabs/bunshot 0.0.25 → 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 (725) 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/packages/bunshot-auth/src/lib/breachedPassword.d.ts +19 -0
  68. package/dist/packages/bunshot-auth/src/lib/breachedPassword.js +61 -0
  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/packages/bunshot-auth/src/lib/logger.d.ts +3 -0
  93. package/dist/packages/bunshot-auth/src/lib/logger.js +13 -0
  94. package/dist/packages/bunshot-auth/src/lib/m2m.d.ts +30 -0
  95. package/dist/packages/bunshot-auth/src/lib/m2m.js +44 -0
  96. package/dist/packages/bunshot-auth/src/lib/magicLink.d.ts +13 -0
  97. package/dist/packages/bunshot-auth/src/lib/magicLink.js +145 -0
  98. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.d.ts +60 -0
  99. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.js +419 -0
  100. package/dist/packages/bunshot-auth/src/lib/oauth.d.ts +82 -0
  101. package/dist/packages/bunshot-auth/src/lib/oauth.js +177 -0
  102. package/dist/packages/bunshot-auth/src/lib/oauthCode.d.ts +19 -0
  103. package/dist/packages/bunshot-auth/src/lib/oauthCode.js +182 -0
  104. package/dist/packages/bunshot-auth/src/lib/oauthReauth.d.ts +19 -0
  105. package/dist/packages/bunshot-auth/src/lib/oauthReauth.js +255 -0
  106. package/dist/packages/bunshot-auth/src/lib/organization.d.ts +66 -0
  107. package/dist/packages/bunshot-auth/src/lib/organization.js +225 -0
  108. package/dist/packages/bunshot-auth/src/lib/passwordHistory.d.ts +12 -0
  109. package/dist/packages/bunshot-auth/src/lib/passwordHistory.js +31 -0
  110. package/dist/packages/bunshot-auth/src/lib/resetPassword.d.ts +20 -0
  111. package/dist/packages/bunshot-auth/src/lib/resetPassword.js +148 -0
  112. package/dist/packages/bunshot-auth/src/lib/roles.d.ts +9 -0
  113. package/dist/packages/bunshot-auth/src/lib/roles.js +93 -0
  114. package/dist/packages/bunshot-auth/src/lib/saml.d.ts +29 -0
  115. package/dist/packages/bunshot-auth/src/lib/saml.js +73 -0
  116. package/dist/packages/bunshot-auth/src/lib/samlRequestId.d.ts +13 -0
  117. package/dist/packages/bunshot-auth/src/lib/samlRequestId.js +129 -0
  118. package/dist/packages/bunshot-auth/src/lib/scim.d.ts +44 -0
  119. package/dist/packages/bunshot-auth/src/lib/scim.js +56 -0
  120. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.d.ts +22 -0
  121. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.js +65 -0
  122. package/dist/packages/bunshot-auth/src/lib/session.d.ts +45 -0
  123. package/dist/packages/bunshot-auth/src/lib/session.js +1211 -0
  124. package/dist/packages/bunshot-auth/src/lib/storeInfra.d.ts +26 -0
  125. package/dist/packages/bunshot-auth/src/lib/storeInfra.js +18 -0
  126. package/dist/packages/bunshot-auth/src/lib/suspension.d.ts +14 -0
  127. package/dist/packages/bunshot-auth/src/lib/suspension.js +20 -0
  128. package/dist/packages/bunshot-auth/src/lib/validateAdapter.d.ts +16 -0
  129. package/dist/packages/bunshot-auth/src/lib/validateAdapter.js +161 -0
  130. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.d.ts +13 -0
  131. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.js +58 -0
  132. package/dist/{middleware → packages/bunshot-auth/src/middleware}/csrf.d.ts +5 -4
  133. package/dist/packages/bunshot-auth/src/middleware/csrf.js +138 -0
  134. package/dist/packages/bunshot-auth/src/middleware/identify.d.ts +4 -0
  135. package/dist/packages/bunshot-auth/src/middleware/identify.js +124 -0
  136. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.d.ts +2 -2
  137. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.js +10 -7
  138. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.d.ts +2 -2
  139. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.js +20 -16
  140. package/dist/packages/bunshot-auth/src/middleware/requireScope.d.ts +10 -0
  141. package/dist/packages/bunshot-auth/src/middleware/requireScope.js +25 -0
  142. package/dist/packages/bunshot-auth/src/middleware/requireStepUp.d.ts +18 -0
  143. package/dist/packages/bunshot-auth/src/middleware/requireStepUp.js +30 -0
  144. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.d.ts +2 -2
  145. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.js +7 -6
  146. package/dist/packages/bunshot-auth/src/middleware/scimAuth.d.ts +8 -0
  147. package/dist/packages/bunshot-auth/src/middleware/scimAuth.js +29 -0
  148. package/dist/packages/bunshot-auth/src/middleware/userAuth.d.ts +3 -0
  149. package/dist/packages/bunshot-auth/src/middleware/userAuth.js +6 -0
  150. package/dist/{models → packages/bunshot-auth/src/models}/AuthUser.d.ts +19 -8
  151. package/dist/packages/bunshot-auth/src/models/AuthUser.js +53 -0
  152. package/dist/packages/bunshot-auth/src/models/Group.d.ts +19 -0
  153. package/dist/packages/bunshot-auth/src/models/Group.js +22 -0
  154. package/dist/{models → packages/bunshot-auth/src/models}/GroupMembership.d.ts +6 -8
  155. package/dist/packages/bunshot-auth/src/models/GroupMembership.js +19 -0
  156. package/dist/packages/bunshot-auth/src/models/M2MClient.d.ts +18 -0
  157. package/dist/packages/bunshot-auth/src/models/M2MClient.js +18 -0
  158. package/dist/packages/bunshot-auth/src/models/TenantRole.d.ts +13 -0
  159. package/dist/packages/bunshot-auth/src/models/TenantRole.js +17 -0
  160. package/dist/packages/bunshot-auth/src/plugin.d.ts +4 -0
  161. package/dist/packages/bunshot-auth/src/plugin.js +274 -0
  162. package/dist/packages/bunshot-auth/src/routes/auth.d.ts +15 -0
  163. package/dist/packages/bunshot-auth/src/routes/auth.js +1624 -0
  164. package/dist/packages/bunshot-auth/src/routes/groups.d.ts +4 -0
  165. package/dist/packages/bunshot-auth/src/routes/groups.js +481 -0
  166. package/dist/packages/bunshot-auth/src/routes/m2m.d.ts +2 -0
  167. package/dist/packages/bunshot-auth/src/routes/m2m.js +145 -0
  168. package/dist/packages/bunshot-auth/src/routes/mfa.d.ts +6 -0
  169. package/dist/packages/bunshot-auth/src/routes/mfa.js +991 -0
  170. package/dist/packages/bunshot-auth/src/routes/oauth.d.ts +3 -0
  171. package/dist/packages/bunshot-auth/src/routes/oauth.js +1727 -0
  172. package/dist/packages/bunshot-auth/src/routes/oidc.d.ts +2 -0
  173. package/dist/packages/bunshot-auth/src/routes/oidc.js +84 -0
  174. package/dist/packages/bunshot-auth/src/routes/organizations.d.ts +3 -0
  175. package/dist/packages/bunshot-auth/src/routes/organizations.js +741 -0
  176. package/dist/packages/bunshot-auth/src/routes/passkey.d.ts +2 -0
  177. package/dist/packages/bunshot-auth/src/routes/passkey.js +199 -0
  178. package/dist/packages/bunshot-auth/src/routes/saml.d.ts +2 -0
  179. package/dist/packages/bunshot-auth/src/routes/saml.js +226 -0
  180. package/dist/packages/bunshot-auth/src/routes/scim.d.ts +3 -0
  181. package/dist/packages/bunshot-auth/src/routes/scim.js +588 -0
  182. package/dist/packages/bunshot-auth/src/runtime.d.ts +52 -0
  183. package/dist/packages/bunshot-auth/src/runtime.js +11 -0
  184. package/dist/{schemas → packages/bunshot-auth/src/schemas}/auth.d.ts +4 -5
  185. package/dist/packages/bunshot-auth/src/schemas/auth.js +24 -0
  186. package/dist/packages/bunshot-auth/src/schemas/error.d.ts +10 -0
  187. package/dist/packages/bunshot-auth/src/schemas/error.js +10 -0
  188. package/dist/packages/bunshot-auth/src/schemas/success.d.ts +10 -0
  189. package/dist/packages/bunshot-auth/src/schemas/success.js +10 -0
  190. package/dist/packages/bunshot-auth/src/services/auth.d.ts +39 -0
  191. package/dist/packages/bunshot-auth/src/services/auth.js +378 -0
  192. package/dist/{services → packages/bunshot-auth/src/services}/mfa.d.ts +41 -17
  193. package/dist/{services → packages/bunshot-auth/src/services}/mfa.js +259 -183
  194. package/dist/packages/bunshot-auth/src/testing.d.ts +31 -0
  195. package/dist/packages/bunshot-auth/src/testing.js +23 -0
  196. package/dist/packages/bunshot-auth/src/types/adapter.d.ts +1 -0
  197. package/dist/packages/bunshot-auth/src/types/adapter.js +1 -0
  198. package/dist/packages/bunshot-auth/src/types/config.d.ts +152 -0
  199. package/dist/packages/bunshot-auth/src/types/config.js +179 -0
  200. package/dist/{routes → packages/bunshot-auth/src/types}/groups.d.ts +2 -3
  201. package/dist/packages/bunshot-auth/src/types/groups.js +1 -0
  202. package/dist/packages/bunshot-auth/src/types/oauthCode.d.ts +6 -0
  203. package/dist/packages/bunshot-auth/src/types/oauthCode.js +1 -0
  204. package/dist/packages/bunshot-auth/src/types/oauthReauth.d.ts +13 -0
  205. package/dist/packages/bunshot-auth/src/types/oauthReauth.js +1 -0
  206. package/dist/packages/bunshot-auth/src/types/redis.d.ts +1 -0
  207. package/dist/packages/bunshot-auth/src/types/redis.js +1 -0
  208. package/dist/packages/bunshot-auth/src/types/saml.d.ts +10 -0
  209. package/dist/packages/bunshot-auth/src/types/saml.js +1 -0
  210. package/dist/packages/bunshot-auth/src/types/session.d.ts +18 -0
  211. package/dist/packages/bunshot-auth/src/types/session.js +1 -0
  212. package/dist/packages/bunshot-auth/src/types/store.d.ts +1 -0
  213. package/dist/packages/bunshot-auth/src/types/store.js +1 -0
  214. package/dist/packages/bunshot-core/src/adminProvider.d.ts +95 -0
  215. package/dist/packages/bunshot-core/src/adminProvider.js +1 -0
  216. package/dist/packages/bunshot-core/src/auditLog.d.ts +34 -0
  217. package/dist/packages/bunshot-core/src/auditLog.js +1 -0
  218. package/dist/packages/bunshot-core/src/auth-adapter.d.ts +227 -0
  219. package/dist/packages/bunshot-core/src/auth-adapter.js +4 -0
  220. package/dist/packages/bunshot-core/src/authVariables.d.ts +14 -0
  221. package/dist/packages/bunshot-core/src/authVariables.js +4 -0
  222. package/dist/packages/bunshot-core/src/cache.d.ts +12 -0
  223. package/dist/packages/bunshot-core/src/cache.js +21 -0
  224. package/dist/packages/bunshot-core/src/captcha.d.ts +16 -0
  225. package/dist/packages/bunshot-core/src/captcha.js +1 -0
  226. package/dist/packages/bunshot-core/src/clearRegistry.d.ts +6 -0
  227. package/dist/packages/bunshot-core/src/clearRegistry.js +17 -0
  228. package/dist/packages/bunshot-core/src/clientIp.d.ts +3 -0
  229. package/dist/packages/bunshot-core/src/clientIp.js +45 -0
  230. package/dist/packages/bunshot-core/src/configLock.d.ts +4 -0
  231. package/dist/packages/bunshot-core/src/configLock.js +7 -0
  232. package/dist/packages/bunshot-core/src/configValidation.d.ts +22 -0
  233. package/dist/packages/bunshot-core/src/configValidation.js +39 -0
  234. package/dist/packages/bunshot-core/src/constants.js +10 -0
  235. package/dist/packages/bunshot-core/src/context/bunshotContext.d.ts +232 -0
  236. package/dist/packages/bunshot-core/src/context/bunshotContext.js +1 -0
  237. package/dist/packages/bunshot-core/src/context/contextAccess.d.ts +3 -0
  238. package/dist/packages/bunshot-core/src/context/contextAccess.js +16 -0
  239. package/dist/packages/bunshot-core/src/context/contextStore.d.ts +16 -0
  240. package/dist/packages/bunshot-core/src/context/contextStore.js +31 -0
  241. package/dist/packages/bunshot-core/src/context/frameworkConfig.d.ts +38 -0
  242. package/dist/packages/bunshot-core/src/context/frameworkConfig.js +1 -0
  243. package/dist/packages/bunshot-core/src/context/index.d.ts +4 -0
  244. package/dist/packages/bunshot-core/src/context/index.js +2 -0
  245. package/dist/packages/bunshot-core/src/context.d.ts +40 -0
  246. package/dist/packages/bunshot-core/src/context.js +35 -0
  247. package/dist/packages/bunshot-core/src/coreContracts.d.ts +47 -0
  248. package/dist/packages/bunshot-core/src/coreContracts.js +1 -0
  249. package/dist/packages/bunshot-core/src/coreRegistrar.d.ts +6 -0
  250. package/dist/packages/bunshot-core/src/coreRegistrar.js +42 -0
  251. package/dist/{lib → packages/bunshot-core/src}/createRoute.d.ts +4 -30
  252. package/dist/{lib → packages/bunshot-core/src}/createRoute.js +39 -88
  253. package/dist/packages/bunshot-core/src/cronRegistry.d.ts +11 -0
  254. package/dist/packages/bunshot-core/src/cronRegistry.js +1 -0
  255. package/dist/packages/bunshot-core/src/crypto.d.ts +43 -0
  256. package/dist/packages/bunshot-core/src/crypto.js +74 -0
  257. package/dist/packages/bunshot-core/src/csrf.d.ts +8 -0
  258. package/dist/packages/bunshot-core/src/csrf.js +1 -0
  259. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.d.ts +7 -0
  260. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.js +19 -0
  261. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.d.ts +6 -0
  262. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.js +40 -0
  263. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.d.ts +6 -0
  264. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.js +24 -0
  265. package/dist/packages/bunshot-core/src/emailTemplates.d.ts +5 -0
  266. package/dist/packages/bunshot-core/src/emailTemplates.js +10 -0
  267. package/dist/packages/bunshot-core/src/errors.d.ts +13 -0
  268. package/dist/packages/bunshot-core/src/errors.js +22 -0
  269. package/dist/packages/bunshot-core/src/eventBus.d.ts +270 -0
  270. package/dist/packages/bunshot-core/src/eventBus.js +143 -0
  271. package/dist/packages/bunshot-core/src/idempotency.d.ts +18 -0
  272. package/dist/packages/bunshot-core/src/idempotency.js +1 -0
  273. package/dist/packages/bunshot-core/src/index.d.ts +60 -0
  274. package/dist/packages/bunshot-core/src/index.js +34 -0
  275. package/dist/packages/bunshot-core/src/mail.d.ts +14 -0
  276. package/dist/packages/bunshot-core/src/mail.js +8 -0
  277. package/dist/packages/bunshot-core/src/memoryEviction.d.ts +24 -0
  278. package/dist/packages/bunshot-core/src/memoryEviction.js +52 -0
  279. package/dist/packages/bunshot-core/src/pagination.d.ts +45 -0
  280. package/dist/packages/bunshot-core/src/pagination.js +61 -0
  281. package/dist/packages/bunshot-core/src/permissions.d.ts +64 -0
  282. package/dist/packages/bunshot-core/src/permissions.js +27 -0
  283. package/dist/packages/bunshot-core/src/plugin.d.ts +44 -0
  284. package/dist/packages/bunshot-core/src/plugin.js +1 -0
  285. package/dist/packages/bunshot-core/src/rateLimit.d.ts +5 -0
  286. package/dist/packages/bunshot-core/src/rateLimit.js +18 -0
  287. package/dist/packages/bunshot-core/src/redis.d.ts +21 -0
  288. package/dist/packages/bunshot-core/src/redis.js +1 -0
  289. package/dist/packages/bunshot-core/src/routeAuth.d.ts +5 -0
  290. package/dist/packages/bunshot-core/src/routeAuth.js +11 -0
  291. package/dist/packages/bunshot-core/src/routeOverrides.d.ts +24 -0
  292. package/dist/packages/bunshot-core/src/routeOverrides.js +25 -0
  293. package/dist/packages/bunshot-core/src/routerAdapter.d.ts +6 -0
  294. package/dist/packages/bunshot-core/src/routerAdapter.js +56 -0
  295. package/dist/packages/bunshot-core/src/secrets.d.ts +48 -0
  296. package/dist/packages/bunshot-core/src/secrets.js +8 -0
  297. package/dist/packages/bunshot-core/src/signing.d.ts +41 -0
  298. package/dist/packages/bunshot-core/src/signing.js +1 -0
  299. package/dist/packages/bunshot-core/src/sse.d.ts +36 -0
  300. package/dist/packages/bunshot-core/src/sse.js +1 -0
  301. package/dist/packages/bunshot-core/src/storageAdapter.js +1 -0
  302. package/dist/packages/bunshot-core/src/storeInfra.d.ts +44 -0
  303. package/dist/packages/bunshot-core/src/storeInfra.js +18 -0
  304. package/dist/packages/bunshot-core/src/storeType.d.ts +7 -0
  305. package/dist/packages/bunshot-core/src/storeType.js +1 -0
  306. package/dist/packages/bunshot-core/src/testing.d.ts +1 -0
  307. package/dist/packages/bunshot-core/src/testing.js +1 -0
  308. package/dist/packages/bunshot-core/src/uploadRegistry.d.ts +23 -0
  309. package/dist/packages/bunshot-core/src/uploadRegistry.js +4 -0
  310. package/dist/packages/bunshot-core/src/userResolver.d.ts +5 -0
  311. package/dist/packages/bunshot-core/src/userResolver.js +14 -0
  312. package/dist/packages/bunshot-core/src/wsMessages.d.ts +42 -0
  313. package/dist/packages/bunshot-core/src/wsMessages.js +4 -0
  314. package/dist/packages/bunshot-permissions/src/adapters/memory.d.ts +7 -0
  315. package/dist/packages/bunshot-permissions/src/adapters/memory.js +73 -0
  316. package/dist/packages/bunshot-permissions/src/index.d.ts +10 -0
  317. package/dist/packages/bunshot-permissions/src/index.js +5 -0
  318. package/dist/packages/bunshot-permissions/src/lib/bootstrap.d.ts +7 -0
  319. package/dist/packages/bunshot-permissions/src/lib/bootstrap.js +12 -0
  320. package/dist/packages/bunshot-permissions/src/lib/evaluator.d.ts +10 -0
  321. package/dist/packages/bunshot-permissions/src/lib/evaluator.js +165 -0
  322. package/dist/packages/bunshot-permissions/src/lib/registry.d.ts +2 -0
  323. package/dist/packages/bunshot-permissions/src/lib/registry.js +31 -0
  324. package/dist/packages/bunshot-permissions/src/lib/validation.d.ts +1 -0
  325. package/dist/packages/bunshot-permissions/src/lib/validation.js +1 -0
  326. package/dist/packages/bunshot-permissions/src/types/adapter.d.ts +1 -0
  327. package/dist/packages/bunshot-permissions/src/types/adapter.js +1 -0
  328. package/dist/packages/bunshot-permissions/src/types/evaluator.d.ts +1 -0
  329. package/dist/packages/bunshot-permissions/src/types/evaluator.js +1 -0
  330. package/dist/packages/bunshot-permissions/src/types/models.d.ts +1 -0
  331. package/dist/packages/bunshot-permissions/src/types/models.js +1 -0
  332. package/dist/packages/bunshot-permissions/src/types/registry.d.ts +1 -0
  333. package/dist/packages/bunshot-permissions/src/types/registry.js +1 -0
  334. package/dist/packages/bunshot-postgres/src/adapter.d.ts +6 -0
  335. package/dist/packages/bunshot-postgres/src/adapter.js +794 -0
  336. package/dist/packages/bunshot-postgres/src/connection.d.ts +15 -0
  337. package/dist/packages/bunshot-postgres/src/connection.js +16 -0
  338. package/dist/packages/bunshot-postgres/src/index.d.ts +4 -0
  339. package/dist/packages/bunshot-postgres/src/index.js +2 -0
  340. package/dist/packages/bunshot-postgres/src/schema.d.ts +997 -0
  341. package/dist/packages/bunshot-postgres/src/schema.js +105 -0
  342. package/dist/src/app.d.ts +230 -0
  343. package/dist/src/app.js +182 -0
  344. package/dist/src/cli/commands/init.d.ts +10 -0
  345. package/dist/src/cli/commands/init.js +709 -0
  346. package/dist/src/cli/index.d.ts +1 -0
  347. package/dist/src/cli/index.js +3 -0
  348. package/dist/src/entrypoints/mongo.d.ts +6 -0
  349. package/dist/src/entrypoints/mongo.js +4 -0
  350. package/dist/src/entrypoints/queue.d.ts +2 -0
  351. package/dist/src/entrypoints/queue.js +1 -0
  352. package/dist/src/entrypoints/redis.d.ts +1 -0
  353. package/dist/src/entrypoints/redis.js +1 -0
  354. package/dist/{adapters → src/framework/adapters}/localStorage.d.ts +1 -1
  355. package/dist/{adapters → src/framework/adapters}/localStorage.js +23 -8
  356. package/dist/src/framework/adapters/memoryStorage.d.ts +2 -0
  357. package/dist/src/framework/adapters/memoryStorage.js +45 -0
  358. package/dist/{adapters → src/framework/adapters}/s3Storage.d.ts +1 -1
  359. package/dist/{adapters → src/framework/adapters}/s3Storage.js +12 -12
  360. package/dist/src/framework/admin/bunshotAccess.d.ts +2 -0
  361. package/dist/src/framework/admin/bunshotAccess.js +23 -0
  362. package/dist/src/framework/admin/bunshotUsers.d.ts +2 -0
  363. package/dist/src/framework/admin/bunshotUsers.js +103 -0
  364. package/dist/src/framework/admin/index.d.ts +7 -0
  365. package/dist/src/framework/admin/index.js +21 -0
  366. package/dist/src/framework/boundaryAdapters/cacheFactories.d.ts +13 -0
  367. package/dist/src/framework/boundaryAdapters/cacheFactories.js +86 -0
  368. package/dist/src/framework/boundaryAdapters/index.d.ts +2 -0
  369. package/dist/src/framework/boundaryAdapters/index.js +1 -0
  370. package/dist/src/framework/boundaryAdapters.d.ts +17 -0
  371. package/dist/src/framework/boundaryAdapters.js +62 -0
  372. package/dist/src/framework/buildContext.d.ts +33 -0
  373. package/dist/src/framework/buildContext.js +119 -0
  374. package/dist/src/framework/config/schema.d.ts +447 -0
  375. package/dist/src/framework/config/schema.js +528 -0
  376. package/dist/src/framework/createInfrastructure.d.ts +76 -0
  377. package/dist/src/framework/createInfrastructure.js +221 -0
  378. package/dist/src/framework/lib/auditLog.d.ts +23 -0
  379. package/dist/src/framework/lib/auditLog.js +416 -0
  380. package/dist/src/framework/lib/captcha.d.ts +11 -0
  381. package/dist/src/framework/lib/captcha.js +40 -0
  382. package/dist/{lib → src/framework/lib}/createDtoMapper.js +4 -4
  383. package/dist/src/framework/lib/createRoute.d.ts +1 -0
  384. package/dist/src/framework/lib/createRoute.js +2 -0
  385. package/dist/{lib → src/framework/lib}/idempotency.d.ts +2 -6
  386. package/dist/src/framework/lib/idempotency.js +74 -0
  387. package/dist/src/framework/lib/logger.d.ts +3 -0
  388. package/dist/src/framework/lib/logger.js +14 -0
  389. package/dist/src/framework/lib/metrics.d.ts +34 -0
  390. package/dist/{lib → src/framework/lib}/metrics.js +49 -57
  391. package/dist/src/framework/lib/pagination.d.ts +42 -0
  392. package/dist/src/framework/lib/pagination.js +51 -0
  393. package/dist/src/framework/lib/redisTransport.d.ts +38 -0
  394. package/dist/src/framework/lib/redisTransport.js +107 -0
  395. package/dist/src/framework/lib/resolveUserId.d.ts +2 -0
  396. package/dist/src/framework/lib/resolveUserId.js +5 -0
  397. package/dist/src/framework/lib/sseCollision.d.ts +6 -0
  398. package/dist/src/framework/lib/sseCollision.js +26 -0
  399. package/dist/src/framework/lib/storageAdapter.d.ts +1 -0
  400. package/dist/src/framework/lib/storageAdapter.js +1 -0
  401. package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.js +4 -4
  402. package/dist/src/framework/lib/tenant.d.ts +21 -0
  403. package/dist/src/framework/lib/tenant.js +70 -0
  404. package/dist/{lib → src/framework/lib}/upload.d.ts +14 -9
  405. package/dist/src/framework/lib/upload.js +132 -0
  406. package/dist/src/framework/lib/uploadRegistry.d.ts +23 -0
  407. package/dist/src/framework/lib/uploadRegistry.js +34 -0
  408. package/dist/{lib → src/framework/lib}/validate.d.ts +1 -1
  409. package/dist/{lib → src/framework/lib}/validate.js +2 -2
  410. package/dist/src/framework/lib/ws.d.ts +19 -0
  411. package/dist/src/framework/lib/ws.js +130 -0
  412. package/dist/src/framework/lib/wsHeartbeat.d.ts +12 -0
  413. package/dist/src/framework/lib/wsHeartbeat.js +53 -0
  414. package/dist/src/framework/lib/wsMessages.d.ts +25 -0
  415. package/dist/src/framework/lib/wsMessages.js +45 -0
  416. package/dist/src/framework/lib/wsNamespace.d.ts +17 -0
  417. package/dist/src/framework/lib/wsNamespace.js +19 -0
  418. package/dist/src/framework/lib/wsPresence.d.ts +17 -0
  419. package/dist/src/framework/lib/wsPresence.js +84 -0
  420. package/dist/src/framework/lib/wsTransport.d.ts +38 -0
  421. package/dist/src/framework/lib/wsTransport.js +9 -0
  422. package/dist/{lib → src/framework/lib}/zodToMongoose.d.ts +1 -1
  423. package/dist/{lib → src/framework/lib}/zodToMongoose.js +11 -11
  424. package/dist/{middleware → src/framework/middleware}/auditLog.d.ts +4 -3
  425. package/dist/src/framework/middleware/auditLog.js +42 -0
  426. package/dist/{middleware → src/framework/middleware}/botProtection.d.ts +2 -2
  427. package/dist/{middleware → src/framework/middleware}/botProtection.js +8 -9
  428. package/dist/src/framework/middleware/cacheResponse.d.ts +35 -0
  429. package/dist/src/framework/middleware/cacheResponse.js +126 -0
  430. package/dist/src/framework/middleware/captcha.d.ts +9 -0
  431. package/dist/src/framework/middleware/captcha.js +37 -0
  432. package/dist/{middleware → src/framework/middleware}/errorHandler.d.ts +1 -1
  433. package/dist/src/framework/middleware/errorHandler.js +16 -0
  434. package/dist/src/framework/middleware/index.js +1 -0
  435. package/dist/{middleware → src/framework/middleware}/logger.d.ts +1 -1
  436. package/dist/src/framework/middleware/metrics.d.ts +12 -0
  437. package/dist/src/framework/middleware/metrics.js +26 -0
  438. package/dist/{middleware → src/framework/middleware}/rateLimit.d.ts +2 -2
  439. package/dist/src/framework/middleware/rateLimit.js +22 -0
  440. package/dist/src/framework/middleware/requestId.d.ts +3 -0
  441. package/dist/{middleware → src/framework/middleware}/requestId.js +2 -2
  442. package/dist/{middleware → src/framework/middleware}/requestLogger.d.ts +3 -3
  443. package/dist/{middleware → src/framework/middleware}/requestLogger.js +17 -12
  444. package/dist/{middleware → src/framework/middleware}/requestSigning.d.ts +2 -2
  445. package/dist/{middleware → src/framework/middleware}/requestSigning.js +18 -19
  446. package/dist/src/framework/middleware/tenant.d.ts +14 -0
  447. package/dist/{middleware → src/framework/middleware}/tenant.js +31 -27
  448. package/dist/src/framework/middleware/upload.d.ts +5 -0
  449. package/dist/{middleware → src/framework/middleware}/upload.js +4 -4
  450. package/dist/{middleware → src/framework/middleware}/webhookAuth.d.ts +3 -3
  451. package/dist/{middleware → src/framework/middleware}/webhookAuth.js +11 -11
  452. package/dist/src/framework/models/AuditLog.d.ts +21 -0
  453. package/dist/src/framework/models/AuditLog.js +31 -0
  454. package/dist/src/framework/mountMiddleware.d.ts +91 -0
  455. package/dist/src/framework/mountMiddleware.js +128 -0
  456. package/dist/src/framework/mountOptionalEndpoints.d.ts +103 -0
  457. package/dist/src/framework/mountOptionalEndpoints.js +47 -0
  458. package/dist/src/framework/mountRoutes.d.ts +21 -0
  459. package/dist/src/framework/mountRoutes.js +144 -0
  460. package/dist/src/framework/persistence/cronRegistry.d.ts +28 -0
  461. package/dist/src/framework/persistence/cronRegistry.js +139 -0
  462. package/dist/src/framework/persistence/idempotency.d.ts +26 -0
  463. package/dist/src/framework/persistence/idempotency.js +178 -0
  464. package/dist/src/framework/persistence/index.d.ts +6 -0
  465. package/dist/src/framework/persistence/index.js +8 -0
  466. package/dist/src/framework/persistence/storeInfra.d.ts +9 -0
  467. package/dist/src/framework/persistence/storeInfra.js +1 -0
  468. package/dist/src/framework/persistence/uploadRegistry.d.ts +35 -0
  469. package/dist/src/framework/persistence/uploadRegistry.js +235 -0
  470. package/dist/src/framework/persistence/wsMessages.d.ts +22 -0
  471. package/dist/src/framework/persistence/wsMessages.js +296 -0
  472. package/dist/src/framework/preloadSchemas.d.ts +24 -0
  473. package/dist/src/framework/preloadSchemas.js +42 -0
  474. package/dist/src/framework/registerBoundaryAdapters.d.ts +23 -0
  475. package/dist/src/framework/registerBoundaryAdapters.js +46 -0
  476. package/dist/src/framework/routes/admin.d.ts +9 -0
  477. package/dist/src/framework/routes/admin.js +361 -0
  478. package/dist/src/framework/routes/health.d.ts +1 -0
  479. package/dist/src/framework/routes/health.js +21 -0
  480. package/dist/src/framework/routes/home.d.ts +1 -0
  481. package/dist/src/framework/routes/home.js +18 -0
  482. package/dist/src/framework/routes/jobs.d.ts +3 -0
  483. package/dist/src/framework/routes/jobs.js +315 -0
  484. package/dist/src/framework/routes/metrics.d.ts +10 -0
  485. package/dist/src/framework/routes/metrics.js +57 -0
  486. package/dist/src/framework/routes/uploads.d.ts +14 -0
  487. package/dist/src/framework/routes/uploads.js +262 -0
  488. package/dist/src/framework/runPluginLifecycle.d.ts +27 -0
  489. package/dist/src/framework/runPluginLifecycle.js +121 -0
  490. package/dist/src/framework/secrets/frameworkSecretSchema.d.ts +58 -0
  491. package/dist/src/framework/secrets/frameworkSecretSchema.js +20 -0
  492. package/dist/src/framework/secrets/index.d.ts +9 -0
  493. package/dist/src/framework/secrets/index.js +7 -0
  494. package/dist/src/framework/secrets/providers/envProvider.d.ts +15 -0
  495. package/dist/src/framework/secrets/providers/envProvider.js +18 -0
  496. package/dist/src/framework/secrets/providers/fileProvider.d.ts +8 -0
  497. package/dist/src/framework/secrets/providers/fileProvider.js +82 -0
  498. package/dist/src/framework/secrets/providers/ssmProvider.d.ts +20 -0
  499. package/dist/src/framework/secrets/providers/ssmProvider.js +127 -0
  500. package/dist/src/framework/secrets/resolveSecretBundle.d.ts +53 -0
  501. package/dist/src/framework/secrets/resolveSecretBundle.js +84 -0
  502. package/dist/src/framework/secrets/resolveSecrets.d.ts +18 -0
  503. package/dist/src/framework/secrets/resolveSecrets.js +34 -0
  504. package/dist/src/framework/sse/index.d.ts +21 -0
  505. package/dist/src/framework/sse/index.js +109 -0
  506. package/dist/src/framework/ws/index.d.ts +11 -0
  507. package/dist/src/framework/ws/index.js +8 -0
  508. package/dist/src/index.d.ts +87 -0
  509. package/dist/src/index.js +58 -0
  510. package/dist/src/lib/appConfig.d.ts +7 -0
  511. package/dist/src/lib/appConfig.js +27 -0
  512. package/dist/src/lib/appMeta.d.ts +7 -0
  513. package/dist/src/lib/appMeta.js +3 -0
  514. package/dist/src/lib/authConfig.d.ts +532 -0
  515. package/dist/src/lib/authConfig.js +179 -0
  516. package/dist/{lib → src/lib}/context.d.ts +6 -7
  517. package/dist/{lib → src/lib}/context.js +5 -5
  518. package/dist/src/lib/logger.d.ts +1 -0
  519. package/dist/src/lib/logger.js +1 -0
  520. package/dist/src/lib/mongo.d.ts +58 -0
  521. package/dist/src/lib/mongo.js +96 -0
  522. package/dist/src/lib/queue.d.ts +72 -0
  523. package/dist/src/lib/queue.js +152 -0
  524. package/dist/src/lib/redis.d.ts +28 -0
  525. package/dist/src/lib/redis.js +72 -0
  526. package/dist/{lib → src/lib}/signing.d.ts +2 -2
  527. package/dist/src/lib/signing.js +210 -0
  528. package/dist/src/lib/signingConfig.d.ts +40 -0
  529. package/dist/src/lib/signingConfig.js +28 -0
  530. package/dist/src/server.d.ts +146 -0
  531. package/dist/src/server.js +469 -0
  532. package/dist/src/shared/lib/HttpError.d.ts +1 -0
  533. package/dist/src/shared/lib/HttpError.js +2 -0
  534. package/dist/src/shared/lib/constants.d.ts +10 -0
  535. package/dist/src/shared/lib/crypto.d.ts +43 -0
  536. package/dist/src/shared/lib/crypto.js +74 -0
  537. package/dist/src/shared/lib/signing.d.ts +52 -0
  538. package/dist/{lib → src/shared/lib}/signing.js +40 -10
  539. package/dist/src/testing.d.ts +34 -0
  540. package/dist/src/testing.js +93 -0
  541. package/package.json +62 -25
  542. package/dist/adapters/memoryAuth.d.ts +0 -46
  543. package/dist/adapters/memoryAuth.js +0 -634
  544. package/dist/adapters/memoryStorage.d.ts +0 -3
  545. package/dist/adapters/memoryStorage.js +0 -44
  546. package/dist/adapters/mongoAuth.d.ts +0 -2
  547. package/dist/adapters/mongoAuth.js +0 -307
  548. package/dist/adapters/sqliteAuth.d.ts +0 -49
  549. package/dist/adapters/sqliteAuth.js +0 -707
  550. package/dist/app.d.ts +0 -456
  551. package/dist/app.js +0 -548
  552. package/dist/entrypoints/mongo.d.ts +0 -5
  553. package/dist/entrypoints/mongo.js +0 -4
  554. package/dist/entrypoints/queue.d.ts +0 -2
  555. package/dist/entrypoints/queue.js +0 -1
  556. package/dist/entrypoints/redis.d.ts +0 -1
  557. package/dist/entrypoints/redis.js +0 -1
  558. package/dist/index.d.ts +0 -98
  559. package/dist/index.js +0 -77
  560. package/dist/lib/HttpError.d.ts +0 -9
  561. package/dist/lib/HttpError.js +0 -14
  562. package/dist/lib/appConfig.d.ts +0 -162
  563. package/dist/lib/appConfig.js +0 -83
  564. package/dist/lib/auditLog.d.ts +0 -52
  565. package/dist/lib/auditLog.js +0 -201
  566. package/dist/lib/authAdapter.d.ts +0 -176
  567. package/dist/lib/authAdapter.js +0 -7
  568. package/dist/lib/authRateLimit.d.ts +0 -13
  569. package/dist/lib/authRateLimit.js +0 -81
  570. package/dist/lib/clientIp.d.ts +0 -14
  571. package/dist/lib/crypto.d.ts +0 -11
  572. package/dist/lib/crypto.js +0 -22
  573. package/dist/lib/deletionCancelToken.d.ts +0 -12
  574. package/dist/lib/deletionCancelToken.js +0 -88
  575. package/dist/lib/emailVerification.d.ts +0 -13
  576. package/dist/lib/emailVerification.js +0 -86
  577. package/dist/lib/fingerprint.js +0 -36
  578. package/dist/lib/idempotency.js +0 -182
  579. package/dist/lib/jwt.d.ts +0 -2
  580. package/dist/lib/jwt.js +0 -24
  581. package/dist/lib/logger.d.ts +0 -1
  582. package/dist/lib/logger.js +0 -7
  583. package/dist/lib/metrics.d.ts +0 -14
  584. package/dist/lib/mfaChallenge.d.ts +0 -42
  585. package/dist/lib/mfaChallenge.js +0 -293
  586. package/dist/lib/mongo.d.ts +0 -39
  587. package/dist/lib/mongo.js +0 -124
  588. package/dist/lib/oauth.d.ts +0 -40
  589. package/dist/lib/oauth.js +0 -101
  590. package/dist/lib/oauthCode.d.ts +0 -15
  591. package/dist/lib/oauthCode.js +0 -90
  592. package/dist/lib/pagination.d.ts +0 -119
  593. package/dist/lib/pagination.js +0 -166
  594. package/dist/lib/queue.d.ts +0 -37
  595. package/dist/lib/queue.js +0 -117
  596. package/dist/lib/redis.d.ts +0 -9
  597. package/dist/lib/redis.js +0 -61
  598. package/dist/lib/resetPassword.d.ts +0 -12
  599. package/dist/lib/resetPassword.js +0 -91
  600. package/dist/lib/roles.d.ts +0 -7
  601. package/dist/lib/roles.js +0 -49
  602. package/dist/lib/session.d.ts +0 -39
  603. package/dist/lib/session.js +0 -535
  604. package/dist/lib/tenant.d.ts +0 -15
  605. package/dist/lib/tenant.js +0 -65
  606. package/dist/lib/upload.js +0 -87
  607. package/dist/lib/ws.d.ts +0 -22
  608. package/dist/lib/ws.js +0 -89
  609. package/dist/lib/wsHeartbeat.d.ts +0 -12
  610. package/dist/lib/wsHeartbeat.js +0 -57
  611. package/dist/lib/wsMessages.d.ts +0 -40
  612. package/dist/lib/wsMessages.js +0 -330
  613. package/dist/lib/wsPresence.d.ts +0 -25
  614. package/dist/lib/wsPresence.js +0 -99
  615. package/dist/middleware/auditLog.js +0 -39
  616. package/dist/middleware/bearerAuth.d.ts +0 -2
  617. package/dist/middleware/bearerAuth.js +0 -11
  618. package/dist/middleware/cacheResponse.d.ts +0 -15
  619. package/dist/middleware/cacheResponse.js +0 -178
  620. package/dist/middleware/csrf.js +0 -125
  621. package/dist/middleware/errorHandler.js +0 -13
  622. package/dist/middleware/identify.d.ts +0 -3
  623. package/dist/middleware/identify.js +0 -95
  624. package/dist/middleware/index.js +0 -1
  625. package/dist/middleware/metrics.d.ts +0 -9
  626. package/dist/middleware/metrics.js +0 -26
  627. package/dist/middleware/rateLimit.js +0 -22
  628. package/dist/middleware/requestId.d.ts +0 -3
  629. package/dist/middleware/tenant.d.ts +0 -5
  630. package/dist/middleware/upload.d.ts +0 -5
  631. package/dist/middleware/userAuth.d.ts +0 -3
  632. package/dist/middleware/userAuth.js +0 -6
  633. package/dist/models/AuditLog.d.ts +0 -30
  634. package/dist/models/AuditLog.js +0 -39
  635. package/dist/models/AuthUser.js +0 -48
  636. package/dist/models/Group.d.ts +0 -21
  637. package/dist/models/Group.js +0 -28
  638. package/dist/models/GroupMembership.js +0 -25
  639. package/dist/models/TenantRole.d.ts +0 -15
  640. package/dist/models/TenantRole.js +0 -23
  641. package/dist/routes/auth.d.ts +0 -11
  642. package/dist/routes/auth.js +0 -605
  643. package/dist/routes/groups.js +0 -346
  644. package/dist/routes/health.d.ts +0 -1
  645. package/dist/routes/health.js +0 -22
  646. package/dist/routes/home.d.ts +0 -1
  647. package/dist/routes/home.js +0 -16
  648. package/dist/routes/jobs.d.ts +0 -2
  649. package/dist/routes/jobs.js +0 -272
  650. package/dist/routes/metrics.d.ts +0 -7
  651. package/dist/routes/metrics.js +0 -52
  652. package/dist/routes/mfa.d.ts +0 -5
  653. package/dist/routes/mfa.js +0 -620
  654. package/dist/routes/oauth.d.ts +0 -2
  655. package/dist/routes/oauth.js +0 -514
  656. package/dist/routes/uploads.d.ts +0 -2
  657. package/dist/routes/uploads.js +0 -135
  658. package/dist/schemas/auth.js +0 -30
  659. package/dist/server.d.ts +0 -57
  660. package/dist/server.js +0 -112
  661. package/dist/services/auth.d.ts +0 -27
  662. package/dist/services/auth.js +0 -159
  663. package/dist/ws/index.d.ts +0 -10
  664. package/dist/ws/index.js +0 -38
  665. package/docs/sections/adding-middleware/full.md +0 -35
  666. package/docs/sections/adding-models/full.md +0 -125
  667. package/docs/sections/adding-models/overview.md +0 -13
  668. package/docs/sections/adding-routes/full.md +0 -182
  669. package/docs/sections/adding-routes/overview.md +0 -23
  670. package/docs/sections/auth-flow/full.md +0 -779
  671. package/docs/sections/auth-flow/overview.md +0 -10
  672. package/docs/sections/auth-security-examples/full.md +0 -365
  673. package/docs/sections/authentication/full.md +0 -130
  674. package/docs/sections/authentication/overview.md +0 -5
  675. package/docs/sections/cli/full.md +0 -42
  676. package/docs/sections/configuration/full.md +0 -172
  677. package/docs/sections/configuration/overview.md +0 -18
  678. package/docs/sections/configuration-example/full.md +0 -117
  679. package/docs/sections/configuration-example/overview.md +0 -30
  680. package/docs/sections/documentation/full.md +0 -171
  681. package/docs/sections/environment-variables/full.md +0 -55
  682. package/docs/sections/exports/full.md +0 -123
  683. package/docs/sections/extending-context/full.md +0 -59
  684. package/docs/sections/header.md +0 -3
  685. package/docs/sections/installation/full.md +0 -6
  686. package/docs/sections/jobs/full.md +0 -140
  687. package/docs/sections/jobs/overview.md +0 -15
  688. package/docs/sections/logging/full.md +0 -83
  689. package/docs/sections/metrics/full.md +0 -127
  690. package/docs/sections/mongodb-connections/full.md +0 -45
  691. package/docs/sections/mongodb-connections/overview.md +0 -7
  692. package/docs/sections/multi-tenancy/full.md +0 -66
  693. package/docs/sections/multi-tenancy/overview.md +0 -15
  694. package/docs/sections/oauth/full.md +0 -189
  695. package/docs/sections/oauth/overview.md +0 -16
  696. package/docs/sections/package-development/full.md +0 -7
  697. package/docs/sections/pagination/full.md +0 -93
  698. package/docs/sections/peer-dependencies/full.md +0 -47
  699. package/docs/sections/quick-start/full.md +0 -43
  700. package/docs/sections/response-caching/full.md +0 -117
  701. package/docs/sections/response-caching/overview.md +0 -13
  702. package/docs/sections/roles/full.md +0 -225
  703. package/docs/sections/roles/overview.md +0 -14
  704. package/docs/sections/running-without-redis/full.md +0 -16
  705. package/docs/sections/running-without-redis-or-mongodb/full.md +0 -60
  706. package/docs/sections/signing/full.md +0 -203
  707. package/docs/sections/stack/full.md +0 -10
  708. package/docs/sections/uploads/full.md +0 -199
  709. package/docs/sections/versioning/full.md +0 -85
  710. package/docs/sections/webhook-auth/full.md +0 -100
  711. package/docs/sections/websocket/full.md +0 -184
  712. package/docs/sections/websocket/overview.md +0 -5
  713. package/docs/sections/websocket-rooms/full.md +0 -102
  714. package/docs/sections/websocket-rooms/overview.md +0 -5
  715. /package/dist/{lib/storageAdapter.js → packages/bunshot-admin/src/types/env.js} +0 -0
  716. /package/dist/{lib → packages/bunshot-auth/src/lib}/fingerprint.d.ts +0 -0
  717. /package/dist/{lib → packages/bunshot-core/src}/constants.d.ts +0 -0
  718. /package/dist/{lib → packages/bunshot-core/src}/storageAdapter.d.ts +0 -0
  719. /package/dist/{lib → src/framework/lib}/createDtoMapper.d.ts +0 -0
  720. /package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.d.ts +0 -0
  721. /package/dist/{middleware → src/framework/middleware}/cors.d.ts +0 -0
  722. /package/dist/{middleware → src/framework/middleware}/cors.js +0 -0
  723. /package/dist/{middleware → src/framework/middleware}/index.d.ts +0 -0
  724. /package/dist/{middleware → src/framework/middleware}/logger.js +0 -0
  725. /package/dist/{lib → src/shared/lib}/constants.js +0 -0
@@ -0,0 +1,532 @@
1
+ import type { SamlProfile } from "../../packages/bunshot-auth/src/lib/saml";
2
+ import type { EmailTemplate } from "../../packages/bunshot-auth/src/lib/emailTemplates";
3
+ import type { DataEncryptionKey } from "../shared/lib/crypto";
4
+ export type PrimaryField = "email" | "username" | "phone";
5
+ export declare const setPrimaryField: (field: PrimaryField) => void;
6
+ export declare const getPrimaryField: () => PrimaryField;
7
+ export interface ConcealRegistrationConfig {
8
+ /**
9
+ * Called when a registration attempt is made for an email that already exists.
10
+ * Use to notify the existing user (e.g. "Someone tried to register with your email").
11
+ * Only valid when primaryField === "email" — startup throws otherwise.
12
+ */
13
+ onExistingAccount?: (identifier: string) => Promise<void>;
14
+ }
15
+ export declare const setConcealRegistrationConfig: (config: ConcealRegistrationConfig | null) => void;
16
+ export declare const getConcealRegistrationConfig: () => ConcealRegistrationConfig | null;
17
+ export interface EmailVerificationConfig {
18
+ /** Block login until email is verified. Defaults to false (soft gate — emailVerified returned in login response). */
19
+ required?: boolean;
20
+ /** Token time-to-live in seconds. Defaults to 86 400 (24 hours). */
21
+ tokenExpiry?: number;
22
+ }
23
+ export declare const setEmailVerificationConfig: (config: EmailVerificationConfig | null) => void;
24
+ export declare const getEmailVerificationConfig: () => EmailVerificationConfig | null;
25
+ export declare const getTokenExpiry: () => number;
26
+ export interface PasswordResetConfig {
27
+ /** Token time-to-live in seconds. Defaults to 3 600 (1 hour). */
28
+ tokenExpiry?: number;
29
+ }
30
+ export declare const setPasswordResetConfig: (config: PasswordResetConfig | null) => void;
31
+ export declare const getPasswordResetConfig: () => PasswordResetConfig | null;
32
+ export declare const getResetTokenExpiry: () => number;
33
+ export interface MagicLinkConfig {
34
+ /** Token time-to-live in seconds. Defaults to 900 (15 min). */
35
+ ttlSeconds?: number;
36
+ /** Base URL for the magic link (e.g. "https://app.com/auth/magic"). */
37
+ linkBaseUrl?: string;
38
+ /** Store backend for magic link tokens. Defaults to the sessions store. */
39
+ store?: "memory" | "redis" | "sqlite" | "mongo";
40
+ }
41
+ export declare const setMagicLinkConfig: (config: MagicLinkConfig | null) => void;
42
+ export declare const getMagicLinkConfig: () => MagicLinkConfig | null;
43
+ export declare const getMagicLinkTtl: () => number;
44
+ export interface PasswordPolicyConfig {
45
+ /** Minimum password length. Defaults to 8. */
46
+ minLength?: number;
47
+ /** Require at least one letter (a-z or A-Z). Defaults to true. */
48
+ requireLetter?: boolean;
49
+ /** Require at least one digit (0-9). Defaults to true. */
50
+ requireDigit?: boolean;
51
+ /** Require at least one special character. Defaults to false. */
52
+ requireSpecial?: boolean;
53
+ /** Number of previous password hashes to remember. Prevents password reuse. Default: disabled (0). */
54
+ preventReuse?: number;
55
+ }
56
+ export declare const setPasswordPolicy: (config: PasswordPolicyConfig) => void;
57
+ export declare const getPasswordPolicy: () => PasswordPolicyConfig;
58
+ export declare const getPasswordPolicyPreventReuse: () => number;
59
+ export interface AuthCookieConfig {
60
+ sameSite?: "Strict" | "Lax" | "None";
61
+ secure?: boolean;
62
+ domain?: string;
63
+ path?: string;
64
+ /** Max age in seconds. Default: 604800 (7 days). */
65
+ maxAge?: number;
66
+ }
67
+ export interface CsrfCookieConfig {
68
+ sameSite?: "Strict" | "Lax" | "None";
69
+ secure?: boolean;
70
+ domain?: string;
71
+ path?: string;
72
+ /** Max age in seconds. Default: 31536000 (1 year). */
73
+ maxAge?: number;
74
+ }
75
+ export declare function setAuthCookieConfig(c: AuthCookieConfig): void;
76
+ export declare function getAuthCookieConfig(): AuthCookieConfig;
77
+ export declare function setCsrfCookieConfig(c: CsrfCookieConfig): void;
78
+ export declare function getCsrfCookieConfig(): CsrfCookieConfig;
79
+ /** Minimal session policy shape stored in the singleton. Matches AuthSessionPolicyConfig in app.ts. */
80
+ export interface SessionPolicySnapshot {
81
+ maxSessions?: number;
82
+ persistSessionMetadata?: boolean;
83
+ includeInactiveSessions?: boolean;
84
+ trackLastActive?: boolean;
85
+ absoluteTimeout?: number;
86
+ idleTimeout?: number;
87
+ onPasswordChange?: "revoke_others" | "revoke_all_and_reissue" | "none";
88
+ }
89
+ export declare const setMaxSessions: (n: number) => void;
90
+ export declare const getMaxSessions: () => number;
91
+ export declare const setPersistSessionMetadata: (v: boolean) => void;
92
+ export declare const getPersistSessionMetadata: () => boolean;
93
+ export declare const setIncludeInactiveSessions: (v: boolean) => void;
94
+ export declare const getIncludeInactiveSessions: () => boolean;
95
+ export declare const setTrackLastActive: (v: boolean) => void;
96
+ export declare const getTrackLastActive: () => boolean;
97
+ export declare function setSessionPolicyConfig(p: SessionPolicySnapshot): void;
98
+ export declare function getSessionPolicyConfig(): SessionPolicySnapshot;
99
+ export interface RefreshTokenConfig {
100
+ /** Access token expiry in seconds. Default: 900 (15 min). */
101
+ accessTokenExpiry?: number;
102
+ /** Refresh token expiry in seconds. Default: 2_592_000 (30 days). */
103
+ refreshTokenExpiry?: number;
104
+ /** Grace window in seconds where the old refresh token still works after rotation.
105
+ * Prevents lockout when the client's network drops mid-refresh. Default: 30. */
106
+ rotationGraceSeconds?: number;
107
+ }
108
+ export declare const setRefreshTokenConfig: (config: RefreshTokenConfig | null) => void;
109
+ export declare const getRefreshTokenConfig: () => RefreshTokenConfig | null;
110
+ export declare const getAccessTokenExpiry: () => number;
111
+ export declare const getRefreshTokenExpiry: () => number;
112
+ export declare const getRotationGraceSeconds: () => number;
113
+ export interface MfaEmailOtpConfig {
114
+ /** OTP code length. Default: 6. */
115
+ codeLength?: number;
116
+ }
117
+ export interface MfaWebAuthnConfig {
118
+ /** Relying Party ID - typically the domain (e.g. "example.com"). Required. */
119
+ rpId: string;
120
+ /** Relying Party name shown in browser prompts. Defaults to app name. */
121
+ rpName?: string;
122
+ /** Expected origin(s) - full origin URL(s) like "https://example.com". Required. */
123
+ origin: string | string[];
124
+ /** Supported attestation conveyance preference. Default: "none". */
125
+ attestationType?: "none" | "direct" | "enterprise";
126
+ /** Authenticator attachment preference. Default: undefined (allows both platform + cross-platform). */
127
+ authenticatorAttachment?: "platform" | "cross-platform";
128
+ /** User verification requirement. Default: "preferred". */
129
+ userVerification?: "required" | "preferred" | "discouraged";
130
+ /** Timeout for ceremonies in milliseconds. Default: 60000 (60s). */
131
+ timeout?: number;
132
+ /** Reject authentication when sign count goes backward (cloned key detection). Default: false (accept + warn). */
133
+ strictSignCount?: boolean;
134
+ /** Allow passwordless (first-factor) passkey login. When true, mounts POST /auth/passkey/login-options and POST /auth/passkey/login. Default: false. */
135
+ allowPasswordlessLogin?: boolean;
136
+ /** When true (default), a verified passkey login satisfies MFA - no subsequent TOTP/OTP prompt even if the user has MFA enabled. Set false to require MFA after passkey login. */
137
+ passkeyMfaBypass?: boolean;
138
+ }
139
+ export interface MfaConfig {
140
+ /** Issuer name shown in authenticator apps. Defaults to app name. */
141
+ issuer?: string;
142
+ /** TOTP algorithm. Default: "SHA1" (most compatible). */
143
+ algorithm?: "SHA1" | "SHA256" | "SHA512";
144
+ /** TOTP digits. Default: 6. */
145
+ digits?: number;
146
+ /** TOTP period in seconds. Default: 30. */
147
+ period?: number;
148
+ /** Number of recovery codes to generate. Default: 10. */
149
+ recoveryCodes?: number;
150
+ /** MFA challenge window in seconds. Default: 300 (5 min). */
151
+ challengeTtlSeconds?: number;
152
+ /** Email OTP configuration. When set, enables email-based MFA as an option. */
153
+ emailOtp?: MfaEmailOtpConfig;
154
+ /** WebAuthn/FIDO2 configuration. When set, enables security key MFA routes. */
155
+ webauthn?: MfaWebAuthnConfig;
156
+ /** When true, authenticated users must complete MFA setup before accessing non-auth endpoints. Default: false. */
157
+ required?: boolean;
158
+ }
159
+ export declare const setMfaConfig: (config: MfaConfig | null) => void;
160
+ export declare const getMfaConfig: () => MfaConfig | null;
161
+ export declare const getMfaIssuer: () => string;
162
+ export declare const getMfaAlgorithm: () => string;
163
+ export declare const getMfaDigits: () => number;
164
+ export declare const getMfaPeriod: () => number;
165
+ export declare const getMfaRecoveryCodeCount: () => number;
166
+ export declare const getMfaChallengeTtl: () => number;
167
+ export declare const getMfaEmailOtpConfig: () => MfaEmailOtpConfig | null;
168
+ export declare const getMfaEmailOtpCodeLength: () => number;
169
+ export declare const getMfaWebAuthnConfig: () => MfaWebAuthnConfig | null;
170
+ export declare const getMfaRequired: () => boolean;
171
+ export declare const getMfaWebAuthnAllowPasswordlessLogin: () => boolean;
172
+ export declare const getMfaWebAuthnPasskeyMfaBypass: () => boolean;
173
+ export declare const setCsrfEnabled: (v: boolean) => void;
174
+ export declare const getCsrfEnabled: () => boolean;
175
+ export interface SigningConfig {
176
+ /**
177
+ * HMAC secret. Defaults to JWT_SECRET_DEV/JWT_SECRET_PROD env var if omitted.
178
+ * Pass string[] to support key rotation - first element signs, all elements verify.
179
+ */
180
+ secret?: string | string[];
181
+ /** Sign/verify cookie values set via exported helpers. Default: false. */
182
+ cookies?: boolean;
183
+ /** Sign pagination cursor tokens to prevent client tampering. Default: false. */
184
+ cursors?: boolean;
185
+ /** HMAC-based stateless presigned URLs (no DB lookup). Default: false. */
186
+ presignedUrls?: boolean | {
187
+ defaultExpiry?: number;
188
+ };
189
+ /** Require clients to HMAC-sign requests (method+path+timestamp+body). Default: false. */
190
+ requestSigning?: boolean | {
191
+ tolerance?: number;
192
+ header?: string;
193
+ timestampHeader?: string;
194
+ };
195
+ /** Hash idempotency keys before storage. Default: false. */
196
+ idempotencyKeys?: boolean;
197
+ /** Bind sessions to client IP+UA fingerprint. Default: false. */
198
+ sessionBinding?: boolean | {
199
+ fields?: Array<"ip" | "ua" | "accept-language">;
200
+ onMismatch?: "unauthenticate" | "reject" | "log-only";
201
+ };
202
+ }
203
+ export declare const setSigningConfig: (config: SigningConfig | null) => void;
204
+ export declare const getSigningConfig: () => SigningConfig | null;
205
+ export declare const isSigningConfigured: () => boolean;
206
+ /**
207
+ * Returns the active signing secret: signing.secret -> JWT_SECRET_PROD/DEV env var.
208
+ * Returns null when neither is configured - callers must handle this gracefully.
209
+ */
210
+ export declare const getSigningSecret: () => string | string[] | null;
211
+ export interface JwtConfig {
212
+ /** JWT issuer claim (`iss`). When set, added to all tokens and validated on verify. */
213
+ issuer?: string;
214
+ /** JWT audience claim (`aud`). When set, added to all tokens and validated on verify. */
215
+ audience?: string | string[];
216
+ /** JWT signing algorithm. Default: "HS256". Use "RS256" for OIDC. Requires OidcConfig when set to "RS256". */
217
+ algorithm?: "HS256" | "RS256";
218
+ }
219
+ export declare const setJwtConfig: (config: JwtConfig | null) => void;
220
+ export declare const getJwtConfig: () => JwtConfig | null;
221
+ export declare const getJwtIssuer: () => string | undefined;
222
+ export declare const getJwtAudience: () => string | string[] | undefined;
223
+ export interface BreachedPasswordConfig {
224
+ /** Block registration/reset when password is breached. Default: true. */
225
+ block?: boolean;
226
+ /** Minimum breach count to consider breached. Default: 1. */
227
+ minBreachCount?: number;
228
+ /** Request timeout in ms. Default: 3000. */
229
+ timeout?: number;
230
+ /** What to do when the HIBP API is unavailable. Default: "allow". */
231
+ onApiFailure?: "allow" | "block";
232
+ }
233
+ export declare const setBreachedPasswordConfig: (config: BreachedPasswordConfig | null) => void;
234
+ export declare const getBreachedPasswordConfig: () => BreachedPasswordConfig | null;
235
+ export interface OAuthReauthConfig {
236
+ /** Enable OAuth provider re-auth endpoints. Default: false. */
237
+ enabled?: boolean;
238
+ /**
239
+ * How to force re-authentication at the provider.
240
+ * - "login": force the user to re-enter credentials (default)
241
+ * - "consent": force a full consent screen (useful for Google/Microsoft)
242
+ * - "select_account": show account picker
243
+ */
244
+ promptType?: "login" | "consent" | "select_account";
245
+ }
246
+ export declare const setOAuthReauthConfig: (config: OAuthReauthConfig | null) => void;
247
+ export declare const getOAuthReauthConfig: () => OAuthReauthConfig | null;
248
+ export declare const getOAuthReauthEnabled: () => boolean;
249
+ export declare const getOAuthReauthPromptType: () => "login" | "consent" | "select_account";
250
+ export interface StepUpConfig {
251
+ /** Max age in seconds since last MFA verification. Default: 300 (5 min). */
252
+ maxAge?: number;
253
+ }
254
+ export declare const setStepUpConfig: (config: StepUpConfig | null) => void;
255
+ export declare const getStepUpConfig: () => StepUpConfig | null;
256
+ export declare const setCheckSuspensionOnIdentify: (v: boolean) => void;
257
+ export declare const getCheckSuspensionOnIdentify: () => boolean;
258
+ export declare const setCaptchaConfig: (config: import("../framework/lib/captcha").CaptchaConfig | null) => void;
259
+ export declare const getCaptchaConfig: () => import("../../packages/bunshot-core/src/index.js").CaptchaConfig | null;
260
+ export interface M2MConfig {
261
+ enabled?: boolean;
262
+ /** Access token expiry in seconds. Default: 3600 (1 hour). */
263
+ tokenExpiry?: number;
264
+ /** Allowed scopes for M2M clients. */
265
+ scopes?: string[];
266
+ }
267
+ export declare const setM2MConfig: (config: M2MConfig | null) => void;
268
+ export declare const getM2MConfig: () => M2MConfig | null;
269
+ export declare const getM2MTokenExpiry: () => number;
270
+ export interface SamlConfig {
271
+ /** Service Provider entity ID (e.g. "https://yourapp.com/auth/saml"). */
272
+ entityId: string;
273
+ /** Assertion Consumer Service URL. */
274
+ acsUrl: string;
275
+ /** IdP metadata - XML string or URL. */
276
+ idpMetadata: string;
277
+ /** SP signing private key PEM. Optional. */
278
+ signingKey?: string;
279
+ /** SP signing certificate PEM. Optional. */
280
+ signingCert?: string;
281
+ /** Map IdP attribute names to profile fields. */
282
+ attributeMapping?: {
283
+ email?: string;
284
+ firstName?: string;
285
+ lastName?: string;
286
+ groups?: string;
287
+ };
288
+ /** Custom user lookup/creation. When provided, takes precedence over findOrCreateByProvider. */
289
+ onLogin?: (profile: SamlProfile) => Promise<{
290
+ userId: string;
291
+ }>;
292
+ /** Where to redirect after successful SAML login. Default: "/". */
293
+ postLoginRedirect?: string;
294
+ }
295
+ export declare const setSamlConfig: (config: SamlConfig | null) => void;
296
+ export declare const getSamlConfig: () => SamlConfig | null;
297
+ export interface OidcConfig {
298
+ enabled?: boolean;
299
+ /** JWT issuer - included in all tokens and OIDC discovery doc. Required. */
300
+ issuer: string;
301
+ /** RSA signing key. If not provided, a key pair is auto-generated on startup. */
302
+ signingKey?: {
303
+ privateKey: string;
304
+ publicKey: string;
305
+ kid?: string;
306
+ };
307
+ /** Previous signing keys for rotation (verification only). */
308
+ previousKeys?: Array<{
309
+ publicKey: string;
310
+ kid?: string;
311
+ }>;
312
+ /** Scopes advertised in the discovery document. Default: ["openid"]. */
313
+ scopes?: string[];
314
+ /** Token endpoint URL. Defaults to `${issuer}/oauth/token`. */
315
+ tokenEndpoint?: string;
316
+ }
317
+ export declare const setOidcConfig: (config: OidcConfig | null) => void;
318
+ export declare const getOidcConfig: () => OidcConfig | null;
319
+ export interface ScimConfig {
320
+ enabled?: boolean;
321
+ /** Bearer token(s) for SCIM endpoint authentication. Required. */
322
+ bearerTokens: string | string[];
323
+ /** Username mapping strategy. Default: "email". */
324
+ userMapping?: {
325
+ userName?: "email" | "username";
326
+ };
327
+ /** What to do when a user is deleted via SCIM. Default: "suspend". */
328
+ onDeprovision?: "suspend" | "delete" | ((userId: string) => Promise<void>);
329
+ }
330
+ export declare const setScimConfig: (config: ScimConfig | null) => void;
331
+ export declare const getScimConfig: () => ScimConfig | null;
332
+ export interface EmailTemplatesConfig {
333
+ /** App name used in all templates as {{appName}}. Falls back to the configured app name. */
334
+ appName?: string;
335
+ emailVerification?: Partial<EmailTemplate>;
336
+ passwordReset?: Partial<EmailTemplate>;
337
+ magicLink?: Partial<EmailTemplate>;
338
+ emailOtp?: Partial<EmailTemplate>;
339
+ welcomeEmail?: Partial<EmailTemplate>;
340
+ accountDeletion?: Partial<EmailTemplate>;
341
+ orgInvitation?: Partial<EmailTemplate>;
342
+ }
343
+ export declare const setEmailTemplatesConfig: (config: EmailTemplatesConfig | null) => void;
344
+ export declare const getEmailTemplatesConfig: () => EmailTemplatesConfig | null;
345
+ export interface BearerAuthClient {
346
+ /** Stable identifier for this API client (set on Hono context as `bearerClientId`). */
347
+ clientId: string;
348
+ /** The bearer token value. */
349
+ token: string;
350
+ /** Optional human-readable label (e.g. "CI/CD pipeline", "Mobile app"). */
351
+ description?: string;
352
+ /** When true, the token is rejected even if it matches. Soft-revoke without deletion. */
353
+ revoked?: boolean;
354
+ }
355
+ /**
356
+ * Bearer auth token config.
357
+ * - string: single token (legacy, env-var driven)
358
+ * - string[]: multiple tokens, no clientId tracking
359
+ * - BearerAuthClient[]: named clients with revocation and clientId context
360
+ */
361
+ export type BearerAuthConfig = string | string[] | BearerAuthClient[];
362
+ export interface HookContext {
363
+ ip?: string;
364
+ userAgent?: string;
365
+ requestId?: string;
366
+ }
367
+ export interface PostLoginResult {
368
+ customClaims?: Record<string, unknown>;
369
+ }
370
+ export interface AuthHooksConfig {
371
+ preRegister?: (data: {
372
+ identifier: string;
373
+ } & HookContext) => Promise<void>;
374
+ postRegister?: (data: {
375
+ userId: string;
376
+ identifier: string;
377
+ } & HookContext) => Promise<void>;
378
+ preLogin?: (data: {
379
+ identifier: string;
380
+ } & HookContext) => Promise<void>;
381
+ postLogin?: (data: {
382
+ userId: string;
383
+ sessionId: string;
384
+ } & HookContext) => Promise<PostLoginResult | void>;
385
+ prePasswordChange?: (data: {
386
+ userId: string;
387
+ } & HookContext) => Promise<void>;
388
+ postPasswordChange?: (data: {
389
+ userId: string;
390
+ } & HookContext) => Promise<void>;
391
+ preDeleteAccount?: (data: {
392
+ userId: string;
393
+ } & HookContext) => Promise<void>;
394
+ postDeleteAccount?: (data: {
395
+ userId: string;
396
+ } & HookContext) => Promise<void>;
397
+ }
398
+ export declare function setHooksConfig(h: AuthHooksConfig): void;
399
+ export declare function getHooksConfig(): AuthHooksConfig;
400
+ export interface AuthRateLimitConfig {
401
+ /** Max login failures per window before the account is locked. Default: 10 per 15 min. */
402
+ login?: {
403
+ windowMs?: number;
404
+ max?: number;
405
+ };
406
+ /** Max registration attempts per IP per window. Default: 5 per hour. */
407
+ register?: {
408
+ windowMs?: number;
409
+ max?: number;
410
+ };
411
+ /** Max email verification attempts per IP per window. Default: 10 per 15 min. */
412
+ verifyEmail?: {
413
+ windowMs?: number;
414
+ max?: number;
415
+ };
416
+ /** Max resend-verification attempts per user per window. Default: 3 per hour. */
417
+ resendVerification?: {
418
+ windowMs?: number;
419
+ max?: number;
420
+ };
421
+ /** Max forgot-password requests per IP per window. Default: 5 per 15 min. */
422
+ forgotPassword?: {
423
+ windowMs?: number;
424
+ max?: number;
425
+ };
426
+ /** Max reset-password attempts per IP per window. Default: 10 per 15 min. */
427
+ resetPassword?: {
428
+ windowMs?: number;
429
+ max?: number;
430
+ };
431
+ /** Max account deletion attempts per user per window. Default: 3 per hour. */
432
+ deleteAccount?: {
433
+ windowMs?: number;
434
+ max?: number;
435
+ };
436
+ /** Max MFA verification attempts per IP per window. Default: 10 per 15 min. */
437
+ mfaVerify?: {
438
+ windowMs?: number;
439
+ max?: number;
440
+ };
441
+ /** Max MFA email OTP resend attempts per IP per window. Default: 5 per minute. */
442
+ mfaResend?: {
443
+ windowMs?: number;
444
+ max?: number;
445
+ };
446
+ /**
447
+ * Store backend for auth rate limit counters.
448
+ * Defaults to "redis" when Redis is enabled, otherwise "memory".
449
+ * Use "redis" for multi-instance deployments so limits are shared across servers.
450
+ */
451
+ store?: "memory" | "redis";
452
+ /** Credential stuffing detection. Tracks distinct accounts per IP and IPs per account. */
453
+ credentialStuffing?: {
454
+ maxAccountsPerIp?: {
455
+ count: number;
456
+ windowMs: number;
457
+ };
458
+ maxIpsPerAccount?: {
459
+ count: number;
460
+ windowMs: number;
461
+ };
462
+ onDetected?: (signal: {
463
+ type: "ip" | "account";
464
+ key: string;
465
+ count: number;
466
+ }) => void;
467
+ };
468
+ }
469
+ export interface AccountDeletionConfig {
470
+ /** Called before deletion. Throw to abort (e.g., active subscription check). */
471
+ onBeforeDelete?: (userId: string) => Promise<void>;
472
+ /** Called after auth data is deleted. Runs at execution time — query current state, not a snapshot. */
473
+ onAfterDelete?: (userId: string) => Promise<void>;
474
+ /** When true, deletion is queued as a BullMQ job instead of running synchronously. Requires Redis + BullMQ. */
475
+ queued?: boolean;
476
+ /** Grace period in seconds before queued deletion executes. Default: 0 (immediate). */
477
+ gracePeriod?: number;
478
+ /**
479
+ * When true, OAuth-only accounts (no password, no MFA) cannot delete their account via DELETE /auth/me
480
+ * because there is no verifiable factor. They must set a password or enable MFA first.
481
+ * When false (default), OAuth-only accounts can delete without verification.
482
+ */
483
+ requireVerification?: boolean;
484
+ }
485
+ export interface AuthSessionPolicyConfig {
486
+ /** Max simultaneous active sessions per user. Oldest is evicted when exceeded. Default: 6. */
487
+ maxSessions?: number;
488
+ /**
489
+ * Retain session metadata (IP, user-agent, timestamps) after a session expires or is deleted.
490
+ * Enables future novel-device/location detection. Default: true.
491
+ */
492
+ persistSessionMetadata?: boolean;
493
+ /**
494
+ * Include inactive (expired/deleted) sessions in GET /auth/sessions.
495
+ * Only meaningful when persistSessionMetadata is true. Default: false.
496
+ */
497
+ includeInactiveSessions?: boolean;
498
+ /**
499
+ * Update lastActiveAt on every authenticated request.
500
+ * Adds one DB write per auth'd request. Default: false.
501
+ * Automatically enabled when idleTimeout is set.
502
+ */
503
+ trackLastActive?: boolean;
504
+ /**
505
+ * Absolute session TTL in seconds. Sessions expire this long after creation regardless of activity.
506
+ * Default: 604800 (7 days). Also controls the auth cookie maxAge when not overridden by cookieConfig.
507
+ */
508
+ absoluteTimeout?: number;
509
+ /**
510
+ * Idle timeout in seconds. Sessions are revoked when lastActiveAt is older than this value.
511
+ * Requires trackLastActive to be meaningful — automatically enables it when set.
512
+ * Refresh token rotation counts as activity (rotateRefreshToken updates lastActiveAt).
513
+ */
514
+ idleTimeout?: number;
515
+ /**
516
+ * What to do with sessions after a successful password change via POST /auth/set-password.
517
+ * - "revoke_others" (default): revoke all sessions except the current one
518
+ * - "revoke_all_and_reissue": revoke all sessions, create a new session, return new token
519
+ * - "none": do nothing (not recommended)
520
+ */
521
+ onPasswordChange?: "revoke_others" | "revoke_all_and_reissue" | "none";
522
+ }
523
+ export type { DataEncryptionKey } from "../shared/lib/crypto";
524
+ /**
525
+ * Parse data encryption keys from the BUNSHOT_DATA_ENCRYPTION_KEY env var.
526
+ * Env var format: comma-separated "keyId:base64key" pairs, first is active.
527
+ * Example: "v1:base64key1,v0:base64key0"
528
+ * Respects DEV/PROD split: BUNSHOT_DATA_ENCRYPTION_KEY_DEV / BUNSHOT_DATA_ENCRYPTION_KEY_PROD.
529
+ * Falls back to BUNSHOT_DATA_ENCRYPTION_KEY (no suffix).
530
+ * Returns [] when not set.
531
+ */
532
+ export declare function getDataEncryptionKeys(): DataEncryptionKey[];