@lastshotlabs/bunshot 0.0.27 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +211 -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 +277 -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 +64 -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 +100 -26
  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
@@ -0,0 +1,478 @@
1
+ import type { CaptchaConfig } from '../../../bunshot-core/src/index.js';
2
+ import type { EmailTemplate } from '../lib/emailTemplates';
3
+ import type { SamlProfile } from '../types/saml';
4
+ export type PrimaryField = 'email' | 'username' | 'phone';
5
+ export interface ConcealRegistrationConfig {
6
+ /**
7
+ * Called when a registration attempt is made for an email that already exists.
8
+ * Use to notify the existing user (e.g. "Someone tried to register with your email").
9
+ * Only valid when primaryField === "email" — startup throws otherwise.
10
+ */
11
+ onExistingAccount?: (identifier: string) => Promise<void>;
12
+ }
13
+ export interface EmailVerificationConfig {
14
+ /** Block login until email is verified. Defaults to false (soft gate — emailVerified returned in login response). */
15
+ required?: boolean;
16
+ /** Token time-to-live in seconds. Defaults to 86 400 (24 hours). */
17
+ tokenExpiry?: number;
18
+ }
19
+ export interface PasswordResetConfig {
20
+ /** Token time-to-live in seconds. Defaults to 3 600 (1 hour). */
21
+ tokenExpiry?: number;
22
+ }
23
+ export interface MagicLinkConfig {
24
+ /** Token time-to-live in seconds. Defaults to 900 (15 min). */
25
+ ttlSeconds?: number;
26
+ /** Base URL for the magic link (e.g. "https://app.com/auth/magic"). */
27
+ linkBaseUrl?: string;
28
+ /** Store backend for magic link tokens. Defaults to the sessions store. */
29
+ store?: 'memory' | 'redis' | 'sqlite' | 'mongo';
30
+ }
31
+ export interface PasswordPolicyConfig {
32
+ /** Minimum password length. Defaults to 8. */
33
+ minLength?: number;
34
+ /** Require at least one letter (a-z or A-Z). Defaults to true. */
35
+ requireLetter?: boolean;
36
+ /** Require at least one digit (0-9). Defaults to true. */
37
+ requireDigit?: boolean;
38
+ /** Require at least one special character. Defaults to false. */
39
+ requireSpecial?: boolean;
40
+ /** Number of previous password hashes to remember. Prevents password reuse. Default: disabled (0). */
41
+ preventReuse?: number;
42
+ }
43
+ export interface AuthCookieConfig {
44
+ sameSite?: 'Strict' | 'Lax' | 'None';
45
+ secure?: boolean;
46
+ domain?: string;
47
+ path?: string;
48
+ /** Max age in seconds. Default: 604800 (7 days). */
49
+ maxAge?: number;
50
+ }
51
+ export interface CsrfCookieConfig {
52
+ sameSite?: 'Strict' | 'Lax' | 'None';
53
+ secure?: boolean;
54
+ domain?: string;
55
+ path?: string;
56
+ /** Max age in seconds. Default: 31536000 (1 year). */
57
+ maxAge?: number;
58
+ }
59
+ /** Minimal session policy shape stored in the config. Matches AuthSessionPolicyConfig in app.ts. */
60
+ export interface SessionPolicySnapshot {
61
+ maxSessions?: number;
62
+ persistSessionMetadata?: boolean;
63
+ includeInactiveSessions?: boolean;
64
+ trackLastActive?: boolean;
65
+ absoluteTimeout?: number;
66
+ idleTimeout?: number;
67
+ onPasswordChange?: 'revoke_others' | 'revoke_all_and_reissue' | 'none';
68
+ }
69
+ export interface RefreshTokenConfig {
70
+ /** Access token expiry in seconds. Default: 900 (15 min). */
71
+ accessTokenExpiry?: number;
72
+ /** Refresh token expiry in seconds. Default: 2_592_000 (30 days). */
73
+ refreshTokenExpiry?: number;
74
+ /** Grace window in seconds where the old refresh token still works after rotation.
75
+ * Prevents lockout when the client's network drops mid-refresh. Default: 30. */
76
+ rotationGraceSeconds?: number;
77
+ }
78
+ export interface MfaEmailOtpConfig {
79
+ /** OTP code length. Default: 6. */
80
+ codeLength?: number;
81
+ }
82
+ export interface MfaWebAuthnConfig {
83
+ /** Relying Party ID - typically the domain (e.g. "example.com"). Required. */
84
+ rpId: string;
85
+ /** Relying Party name shown in browser prompts. Defaults to app name. */
86
+ rpName?: string;
87
+ /** Expected origin(s) - full origin URL(s) like "https://example.com". Required. */
88
+ origin: string | string[];
89
+ /** Supported attestation conveyance preference. Default: "none". */
90
+ attestationType?: 'none' | 'direct' | 'enterprise';
91
+ /** Authenticator attachment preference. Default: undefined (allows both platform + cross-platform). */
92
+ authenticatorAttachment?: 'platform' | 'cross-platform';
93
+ /** User verification requirement. Default: "preferred". */
94
+ userVerification?: 'required' | 'preferred' | 'discouraged';
95
+ /** Timeout for ceremonies in milliseconds. Default: 60000 (60s). */
96
+ timeout?: number;
97
+ /** Reject authentication when sign count goes backward (cloned key detection). Default: false (accept + warn). */
98
+ strictSignCount?: boolean;
99
+ /** Allow passwordless (first-factor) passkey login. When true, mounts POST /auth/passkey/login-options and POST /auth/passkey/login. Default: false. */
100
+ allowPasswordlessLogin?: boolean;
101
+ /** 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. */
102
+ passkeyMfaBypass?: boolean;
103
+ }
104
+ export interface MfaConfig {
105
+ /** Issuer name shown in authenticator apps. Defaults to app name. */
106
+ issuer?: string;
107
+ /** TOTP algorithm. Default: "SHA1" (most compatible). */
108
+ algorithm?: 'SHA1' | 'SHA256' | 'SHA512';
109
+ /** TOTP digits. Default: 6. */
110
+ digits?: number;
111
+ /** TOTP period in seconds. Default: 30. */
112
+ period?: number;
113
+ /** Number of recovery codes to generate. Default: 10. */
114
+ recoveryCodes?: number;
115
+ /** MFA challenge window in seconds. Default: 300 (5 min). */
116
+ challengeTtlSeconds?: number;
117
+ /** Email OTP configuration. When set, enables email-based MFA as an option. */
118
+ emailOtp?: MfaEmailOtpConfig;
119
+ /** WebAuthn/FIDO2 configuration. When set, enables security key MFA routes. */
120
+ webauthn?: MfaWebAuthnConfig;
121
+ /** When true, authenticated users must complete MFA setup before accessing non-auth endpoints. Default: false. */
122
+ required?: boolean;
123
+ }
124
+ export interface JwtConfig {
125
+ /** JWT issuer claim (`iss`). When set, added to all tokens and validated on verify. */
126
+ issuer?: string;
127
+ /** JWT audience claim (`aud`). When set, added to all tokens and validated on verify. */
128
+ audience?: string | string[];
129
+ /** JWT signing algorithm. Default: "HS256". Use "RS256" for OIDC. Requires OidcConfig when set to "RS256". */
130
+ algorithm?: 'HS256' | 'RS256';
131
+ }
132
+ export interface BreachedPasswordConfig {
133
+ /** Block registration/reset when password is breached. Default: true. */
134
+ block?: boolean;
135
+ /** Minimum breach count to consider breached. Default: 1. */
136
+ minBreachCount?: number;
137
+ /** Request timeout in ms. Default: 3000. */
138
+ timeout?: number;
139
+ /**
140
+ * What to do when the HIBP API is unavailable (timeout, network error, non-2xx).
141
+ * Default: `"allow"` (fail-open) — the password is accepted without a breach check.
142
+ *
143
+ * **Security note:** `"allow"` means an attacker who can block outbound HTTPS to
144
+ * api.pwnedpasswords.com can bypass this check entirely. Set to `"block"` for
145
+ * fail-closed behaviour: the registration or password-reset is rejected until the
146
+ * API is reachable again. Either way, a `security.breached_password.api_failure`
147
+ * event is emitted on every outage so you have observability regardless of policy.
148
+ */
149
+ onApiFailure?: 'allow' | 'block';
150
+ }
151
+ export interface OAuthReauthConfig {
152
+ /** Enable OAuth provider re-auth endpoints. Default: false. */
153
+ enabled?: boolean;
154
+ /**
155
+ * How to force re-authentication at the provider.
156
+ * - "login": force the user to re-enter credentials (default)
157
+ * - "consent": force a full consent screen (useful for Google/Microsoft)
158
+ * - "select_account": show account picker
159
+ */
160
+ promptType?: 'login' | 'consent' | 'select_account';
161
+ }
162
+ export interface StepUpConfig {
163
+ /** Max age in seconds since last MFA verification. Default: 300 (5 min). */
164
+ maxAge?: number;
165
+ }
166
+ export interface M2MConfig {
167
+ enabled?: boolean;
168
+ /** Access token expiry in seconds. Default: 3600 (1 hour). */
169
+ tokenExpiry?: number;
170
+ /** Allowed scopes for M2M clients. */
171
+ scopes?: string[];
172
+ }
173
+ export interface SamlConfig {
174
+ /** Service Provider entity ID (e.g. "https://yourapp.com/auth/saml"). */
175
+ entityId: string;
176
+ /** Assertion Consumer Service URL. */
177
+ acsUrl: string;
178
+ /** IdP metadata - XML string or URL. */
179
+ idpMetadata: string;
180
+ /** SP signing private key PEM. Optional. */
181
+ signingKey?: string;
182
+ /** SP signing certificate PEM. Optional. */
183
+ signingCert?: string;
184
+ /** Map IdP attribute names to profile fields. */
185
+ attributeMapping?: {
186
+ email?: string;
187
+ firstName?: string;
188
+ lastName?: string;
189
+ groups?: string;
190
+ };
191
+ /** Custom user lookup/creation. When provided, takes precedence over findOrCreateByProvider. */
192
+ onLogin?: (profile: SamlProfile) => Promise<{
193
+ userId: string;
194
+ }>;
195
+ /** Where to redirect after successful SAML login. Default: "/". */
196
+ postLoginRedirect?: string;
197
+ }
198
+ export interface OidcConfig {
199
+ enabled?: boolean;
200
+ /** JWT issuer - included in all tokens and OIDC discovery doc. Required. */
201
+ issuer: string;
202
+ /** RSA signing key. If not provided, a key pair is auto-generated on startup. */
203
+ signingKey?: {
204
+ privateKey: string;
205
+ publicKey: string;
206
+ kid?: string;
207
+ };
208
+ /** Previous signing keys for rotation (verification only). */
209
+ previousKeys?: Array<{
210
+ publicKey: string;
211
+ kid?: string;
212
+ }>;
213
+ /** Scopes advertised in the discovery document. Default: ["openid"]. */
214
+ scopes?: string[];
215
+ /** Token endpoint URL. Defaults to `${issuer}/oauth/token`. */
216
+ tokenEndpoint?: string;
217
+ }
218
+ export interface ScimConfig {
219
+ enabled?: boolean;
220
+ /** Bearer token(s) for SCIM endpoint authentication. Required. */
221
+ bearerTokens: string | string[];
222
+ /** Username mapping strategy. Default: "email". */
223
+ userMapping?: {
224
+ userName?: 'email' | 'username';
225
+ };
226
+ /** What to do when a user is deleted via SCIM. Default: "suspend". */
227
+ onDeprovision?: 'suspend' | 'delete' | ((userId: string) => Promise<void>);
228
+ }
229
+ export interface EmailTemplatesConfig {
230
+ /** App name used in all templates as {{appName}}. Falls back to the configured app name. */
231
+ appName?: string;
232
+ emailVerification?: Partial<EmailTemplate>;
233
+ passwordReset?: Partial<EmailTemplate>;
234
+ magicLink?: Partial<EmailTemplate>;
235
+ emailOtp?: Partial<EmailTemplate>;
236
+ welcomeEmail?: Partial<EmailTemplate>;
237
+ accountDeletion?: Partial<EmailTemplate>;
238
+ orgInvitation?: Partial<EmailTemplate>;
239
+ }
240
+ export interface BearerAuthClient {
241
+ /** Stable identifier for this API client (set on Hono context as `bearerClientId`). */
242
+ clientId: string;
243
+ /** The bearer token value. */
244
+ token: string;
245
+ /** Optional human-readable label (e.g. "CI/CD pipeline", "Mobile app"). */
246
+ description?: string;
247
+ /** When true, the token is rejected even if it matches. Soft-revoke without deletion. */
248
+ revoked?: boolean;
249
+ }
250
+ /**
251
+ * Bearer auth token config.
252
+ * - string: single token (legacy, env-var driven)
253
+ * - string[]: multiple tokens, no clientId tracking
254
+ * - BearerAuthClient[]: named clients with revocation and clientId context
255
+ */
256
+ export type BearerAuthConfig = string | string[] | BearerAuthClient[];
257
+ export interface HookContext {
258
+ ip?: string;
259
+ userAgent?: string;
260
+ requestId?: string;
261
+ }
262
+ export interface PostLoginResult {
263
+ customClaims?: Record<string, unknown>;
264
+ }
265
+ export interface AuthHooksConfig {
266
+ preRegister?: (data: {
267
+ identifier: string;
268
+ } & HookContext) => Promise<void>;
269
+ postRegister?: (data: {
270
+ userId: string;
271
+ identifier: string;
272
+ } & HookContext) => Promise<void>;
273
+ preLogin?: (data: {
274
+ identifier: string;
275
+ } & HookContext) => Promise<void>;
276
+ postLogin?: (data: {
277
+ userId: string;
278
+ sessionId: string;
279
+ } & HookContext) => Promise<PostLoginResult | void>;
280
+ prePasswordChange?: (data: {
281
+ userId: string;
282
+ } & HookContext) => Promise<void>;
283
+ postPasswordChange?: (data: {
284
+ userId: string;
285
+ } & HookContext) => Promise<void>;
286
+ preDeleteAccount?: (data: {
287
+ userId: string;
288
+ } & HookContext) => Promise<void>;
289
+ postDeleteAccount?: (data: {
290
+ userId: string;
291
+ } & HookContext) => Promise<void>;
292
+ }
293
+ export interface AuthRateLimitConfig {
294
+ /** Max login failures per window before the account is locked. Default: 10 per 15 min. */
295
+ login?: {
296
+ windowMs?: number;
297
+ max?: number;
298
+ };
299
+ /** Max registration attempts per IP per window. Default: 5 per hour. */
300
+ register?: {
301
+ windowMs?: number;
302
+ max?: number;
303
+ };
304
+ /** Max email verification attempts per IP per window. Default: 10 per 15 min. */
305
+ verifyEmail?: {
306
+ windowMs?: number;
307
+ max?: number;
308
+ };
309
+ /** Max resend-verification attempts per user per window. Default: 3 per hour. */
310
+ resendVerification?: {
311
+ windowMs?: number;
312
+ max?: number;
313
+ };
314
+ /** Max forgot-password requests per IP per window. Default: 5 per 15 min. */
315
+ forgotPassword?: {
316
+ windowMs?: number;
317
+ max?: number;
318
+ };
319
+ /** Max reset-password attempts per IP per window. Default: 10 per 15 min. */
320
+ resetPassword?: {
321
+ windowMs?: number;
322
+ max?: number;
323
+ };
324
+ /** Max account deletion attempts per user per window. Default: 3 per hour. */
325
+ deleteAccount?: {
326
+ windowMs?: number;
327
+ max?: number;
328
+ };
329
+ /** Max MFA verification attempts per IP per window. Default: 10 per 15 min. */
330
+ mfaVerify?: {
331
+ windowMs?: number;
332
+ max?: number;
333
+ };
334
+ /** Max email OTP initiation attempts per user per window. Default: 3 per 15 min. */
335
+ mfaEmailOtpInitiate?: {
336
+ windowMs?: number;
337
+ max?: number;
338
+ };
339
+ /** Max MFA email OTP resend attempts per IP per window. Default: 5 per minute. */
340
+ mfaResend?: {
341
+ windowMs?: number;
342
+ max?: number;
343
+ };
344
+ /** Max set-password (change password) attempts per user per window. Default: 5 per 15 min. */
345
+ setPassword?: {
346
+ windowMs?: number;
347
+ max?: number;
348
+ };
349
+ /** Max MFA disable attempts per user per window. Default: 5 per 15 min. */
350
+ mfaDisable?: {
351
+ windowMs?: number;
352
+ max?: number;
353
+ };
354
+ /** Max OAuth provider unlink attempts per user per window. Default: 5 per hour. */
355
+ oauthUnlink?: {
356
+ windowMs?: number;
357
+ max?: number;
358
+ };
359
+ /**
360
+ * Store backend for auth rate limit counters.
361
+ * Defaults to "redis" when Redis is enabled, otherwise "memory".
362
+ * Use "redis" for multi-instance deployments so limits are shared across servers.
363
+ */
364
+ store?: 'memory' | 'redis';
365
+ /** Credential stuffing detection. Tracks distinct accounts per IP and IPs per account. */
366
+ credentialStuffing?: {
367
+ maxAccountsPerIp?: {
368
+ count: number;
369
+ windowMs: number;
370
+ };
371
+ maxIpsPerAccount?: {
372
+ count: number;
373
+ windowMs: number;
374
+ };
375
+ onDetected?: (signal: {
376
+ type: 'ip' | 'account';
377
+ key: string;
378
+ count: number;
379
+ }) => void;
380
+ };
381
+ }
382
+ export interface AccountDeletionConfig {
383
+ /** Called before deletion. Throw to abort (e.g., active subscription check). */
384
+ onBeforeDelete?: (userId: string) => Promise<void>;
385
+ /** Called after auth data is deleted. Runs at execution time — query current state, not a snapshot. */
386
+ onAfterDelete?: (userId: string) => Promise<void>;
387
+ /** When true, deletion is queued as a BullMQ job instead of running synchronously. Requires Redis + BullMQ. */
388
+ queued?: boolean;
389
+ /** Grace period in seconds before queued deletion executes. Default: 0 (immediate). */
390
+ gracePeriod?: number;
391
+ /**
392
+ * When true, OAuth-only accounts (no password, no MFA) cannot delete their account via DELETE /auth/me
393
+ * because there is no verifiable factor. They must set a password or enable MFA first.
394
+ * When false (default), OAuth-only accounts can delete without verification.
395
+ */
396
+ requireVerification?: boolean;
397
+ }
398
+ export interface AuthSessionPolicyConfig {
399
+ /** Max simultaneous active sessions per user. Oldest is evicted when exceeded. Default: 6. */
400
+ maxSessions?: number;
401
+ /**
402
+ * Retain session metadata (IP, user-agent, timestamps) after a session expires or is deleted.
403
+ * Enables future novel-device/location detection. Default: true.
404
+ */
405
+ persistSessionMetadata?: boolean;
406
+ /**
407
+ * Include inactive (expired/deleted) sessions in GET /auth/sessions.
408
+ * Only meaningful when persistSessionMetadata is true. Default: false.
409
+ */
410
+ includeInactiveSessions?: boolean;
411
+ /**
412
+ * Update lastActiveAt on every authenticated request.
413
+ * Adds one DB write per auth'd request. Default: false.
414
+ * Automatically enabled when idleTimeout is set.
415
+ */
416
+ trackLastActive?: boolean;
417
+ /**
418
+ * Absolute session TTL in seconds. Sessions expire this long after creation regardless of activity.
419
+ * Default: 604800 (7 days). Also controls the auth cookie maxAge when not overridden by cookieConfig.
420
+ */
421
+ absoluteTimeout?: number;
422
+ /**
423
+ * Idle timeout in seconds. Sessions are revoked when lastActiveAt is older than this value.
424
+ * Requires trackLastActive to be meaningful — automatically enables it when set.
425
+ * Refresh token rotation counts as activity (rotateRefreshToken updates lastActiveAt).
426
+ */
427
+ idleTimeout?: number;
428
+ /**
429
+ * What to do with sessions after a successful password change via POST /auth/set-password.
430
+ * - "revoke_others" (default): revoke all sessions except the current one
431
+ * - "revoke_all_and_reissue": revoke all sessions, create a new session, return new token
432
+ * - "none": do nothing (not recommended)
433
+ */
434
+ onPasswordChange?: 'revoke_others' | 'revoke_all_and_reissue' | 'none';
435
+ }
436
+ /**
437
+ * Read-only snapshot of all auth config values. Built once during bootstrap,
438
+ * deep-frozen and attached to the runtime context.
439
+ */
440
+ export interface AuthResolvedConfig {
441
+ readonly appName: string;
442
+ readonly appRoles: readonly string[];
443
+ readonly defaultRole: string | null;
444
+ readonly primaryField: PrimaryField;
445
+ readonly concealRegistration: Readonly<ConcealRegistrationConfig> | null;
446
+ readonly emailVerification: Readonly<EmailVerificationConfig> | null;
447
+ readonly passwordReset: Readonly<PasswordResetConfig> | null;
448
+ readonly magicLink: Readonly<MagicLinkConfig> | null;
449
+ readonly passwordPolicy: Readonly<PasswordPolicyConfig>;
450
+ readonly authCookie: Readonly<AuthCookieConfig>;
451
+ readonly csrfCookie: Readonly<CsrfCookieConfig>;
452
+ readonly maxSessions: number;
453
+ readonly persistSessionMetadata: boolean;
454
+ readonly includeInactiveSessions: boolean;
455
+ readonly trackLastActive: boolean;
456
+ readonly sessionPolicy: Readonly<SessionPolicySnapshot>;
457
+ readonly refreshToken: Readonly<RefreshTokenConfig> | null;
458
+ readonly mfa: Readonly<MfaConfig> | null;
459
+ readonly csrfEnabled: boolean;
460
+ readonly jwt: Readonly<JwtConfig> | null;
461
+ readonly breachedPassword: Readonly<BreachedPasswordConfig> | null;
462
+ readonly oauthReauth: Readonly<OAuthReauthConfig> | null;
463
+ readonly stepUp: Readonly<StepUpConfig> | null;
464
+ readonly checkSuspensionOnIdentify: boolean;
465
+ readonly captcha: Readonly<CaptchaConfig> | null;
466
+ readonly m2m: Readonly<M2MConfig> | null;
467
+ readonly saml: Readonly<SamlConfig> | null;
468
+ readonly oidc: Readonly<OidcConfig> | null;
469
+ readonly scim: Readonly<ScimConfig> | null;
470
+ readonly emailTemplates: Readonly<EmailTemplatesConfig> | null;
471
+ readonly hooks: Readonly<AuthHooksConfig>;
472
+ }
473
+ export declare const DEFAULT_AUTH_CONFIG: AuthResolvedConfig;
474
+ /**
475
+ * Build a resolved auth config by merging partial overrides onto defaults.
476
+ * The returned config is deep-frozen.
477
+ */
478
+ export declare function buildAuthResolvedConfig(overrides: Partial<AuthResolvedConfig>): AuthResolvedConfig;
@@ -0,0 +1,46 @@
1
+ import { deepFreeze } from './configLock';
2
+ // ---------------------------------------------------------------------------
3
+ // Default config — immutable baseline
4
+ // ---------------------------------------------------------------------------
5
+ export const DEFAULT_AUTH_CONFIG = Object.freeze({
6
+ appName: 'Core API',
7
+ appRoles: [],
8
+ defaultRole: null,
9
+ primaryField: 'email',
10
+ concealRegistration: null,
11
+ emailVerification: null,
12
+ passwordReset: null,
13
+ magicLink: null,
14
+ passwordPolicy: {},
15
+ authCookie: {},
16
+ csrfCookie: {},
17
+ maxSessions: 6,
18
+ persistSessionMetadata: true,
19
+ includeInactiveSessions: false,
20
+ trackLastActive: false,
21
+ sessionPolicy: {},
22
+ refreshToken: null,
23
+ mfa: null,
24
+ csrfEnabled: false,
25
+ jwt: null,
26
+ breachedPassword: null,
27
+ oauthReauth: null,
28
+ stepUp: null,
29
+ checkSuspensionOnIdentify: false,
30
+ captcha: null,
31
+ m2m: null,
32
+ saml: null,
33
+ oidc: null,
34
+ scim: null,
35
+ emailTemplates: null,
36
+ hooks: {},
37
+ });
38
+ /**
39
+ * Build a resolved auth config by merging partial overrides onto defaults.
40
+ * The returned config is deep-frozen.
41
+ */
42
+ export function buildAuthResolvedConfig(overrides) {
43
+ const config = { ...DEFAULT_AUTH_CONFIG, ...overrides };
44
+ deepFreeze(config);
45
+ return config;
46
+ }
@@ -0,0 +1,2 @@
1
+ /** Deep-freeze an object and all nested objects. */
2
+ export declare function deepFreeze<T extends object>(obj: T): Readonly<T>;
@@ -0,0 +1,10 @@
1
+ /** Deep-freeze an object and all nested objects. */
2
+ export function deepFreeze(obj) {
3
+ Object.freeze(obj);
4
+ for (const value of Object.values(obj)) {
5
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
6
+ deepFreeze(value);
7
+ }
8
+ }
9
+ return obj;
10
+ }
@@ -0,0 +1,25 @@
1
+ export { createAuthPlugin } from './plugin';
2
+ export type { ResolvedStores } from './types/adapter';
3
+ export { authPluginConfigSchema } from './types/config';
4
+ export type { AuthPluginConfig, AuthDbConfig, AuthSecurityConfig, StoreType, AuthConfig, OAuthConfig, } from './types/config';
5
+ export { signToken, verifyToken } from './lib/jwt';
6
+ export { createSession, getSession, deleteSession, getUserSessions, getActiveSessionCount, evictOldestSession, updateSessionLastActive, setRefreshToken, getSessionByRefreshToken, rotateRefreshToken, getSessionFingerprint, setSessionFingerprint, setMfaVerifiedAt, getMfaVerifiedAt, sessionFactories, createSqliteSessionRepository, createRedisSessionRepository, createMongoSessionRepository, } from './lib/session';
7
+ export type { SessionStore } from './lib/session';
8
+ export type { AuthAdapter, IdentityProfile, UserRecord, UserQuery, WebAuthnCredential, } from './lib/authAdapter';
9
+ export type { CoreAuthAdapter, OAuthAdapter, MfaAdapter, WebAuthnAdapter, RolesAdapter, GroupsAdapter, SuspensionAdapter, EnterpriseAdapter, } from './lib/adapterTiers';
10
+ export { validateAdapterCapabilities } from './lib/validateAdapter';
11
+ export type { AdapterValidationConfig } from './lib/validateAdapter';
12
+ export { createMemoryAuthAdapter } from './adapters/memoryAuth';
13
+ export type { MemoryAuthStores } from './adapters/memoryAuth';
14
+ export { createMongoAuthAdapter } from './adapters/mongoAuth';
15
+ export { createSqliteAuthAdapter } from './adapters/sqliteAuth';
16
+ export { renderTemplate, templates } from './lib/emailTemplates';
17
+ export type { EmailTemplate, TemplateVariables } from './lib/emailTemplates';
18
+ export { buildAuthResolvedConfig } from './config/authConfig';
19
+ export type { AuthResolvedConfig } from './config/authConfig';
20
+ export { wireSecurityEventConfig } from './lib/securityEventWiring';
21
+ export type { SecurityEventsConfig, SecurityEvent } from './lib/securityEventWiring';
22
+ export { getAuthRuntimeContext, getAuthRuntimeFromRequest } from './runtime';
23
+ export type { AuthRuntimeContext } from './runtime';
24
+ export { createBunshotAuthAccessProvider } from './admin/bunshotAccess';
25
+ export { createBunshotManagedUserProvider } from './admin/bunshotUsers';
@@ -0,0 +1,23 @@
1
+ // packages/bunshot-auth/src/index.ts — Public API for @lastshotlabs/bunshot-auth
2
+ // Plugin factory
3
+ export { createAuthPlugin } from './plugin';
4
+ export { authPluginConfigSchema } from './types/config';
5
+ // Session / JWT
6
+ export { signToken, verifyToken } from './lib/jwt';
7
+ export { createSession, getSession, deleteSession, getUserSessions, getActiveSessionCount, evictOldestSession, updateSessionLastActive, setRefreshToken, getSessionByRefreshToken, rotateRefreshToken, getSessionFingerprint, setSessionFingerprint, setMfaVerifiedAt, getMfaVerifiedAt, sessionFactories, createSqliteSessionRepository, createRedisSessionRepository, createMongoSessionRepository, } from './lib/session';
8
+ export { validateAdapterCapabilities } from './lib/validateAdapter';
9
+ // Built-in adapters
10
+ export { createMemoryAuthAdapter } from './adapters/memoryAuth';
11
+ export { createMongoAuthAdapter } from './adapters/mongoAuth';
12
+ export { createSqliteAuthAdapter } from './adapters/sqliteAuth';
13
+ // Email templates
14
+ export { renderTemplate, templates } from './lib/emailTemplates';
15
+ // Config
16
+ export { buildAuthResolvedConfig } from './config/authConfig';
17
+ // Event bus utilities
18
+ export { wireSecurityEventConfig } from './lib/securityEventWiring';
19
+ // Runtime context
20
+ export { getAuthRuntimeContext, getAuthRuntimeFromRequest } from './runtime';
21
+ // Admin providers (moved from framework root)
22
+ export { createBunshotAuthAccessProvider } from './admin/bunshotAccess';
23
+ export { createBunshotManagedUserProvider } from './admin/bunshotUsers';
@@ -0,0 +1,15 @@
1
+ import type { Connection, Mongoose } from 'mongoose';
2
+ /**
3
+ * Lazily require mongoose if not provided explicitly.
4
+ */
5
+ export declare function resolveMongoose(mg?: Mongoose): Mongoose;
6
+ /**
7
+ * Create a proxy-based connection accessor that lazily resolves to the actual connection.
8
+ * Returns a Proxy that allows model registration at module load time before connections
9
+ * are established.
10
+ */
11
+ export declare function makeConnectionProxy(label: string, getConn: () => Connection | null, mongooseInstance?: Mongoose): Connection;
12
+ /**
13
+ * Create a mongoose proxy that lazily resolves the mongoose instance.
14
+ */
15
+ export declare function makeMongooseProxy(getMongoose: () => Mongoose): Mongoose;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Lazily require mongoose if not provided explicitly.
3
+ */
4
+ export function resolveMongoose(mg) {
5
+ if (mg)
6
+ return mg;
7
+ try {
8
+ const mod = require('mongoose');
9
+ return mod.default ?? mod;
10
+ }
11
+ catch {
12
+ throw new Error('mongoose is not installed. Run: bun add mongoose');
13
+ }
14
+ }
15
+ /**
16
+ * Create a proxy-based connection accessor that lazily resolves to the actual connection.
17
+ * Returns a Proxy that allows model registration at module load time before connections
18
+ * are established.
19
+ */
20
+ export function makeConnectionProxy(label, getConn, mongooseInstance) {
21
+ return new Proxy({}, {
22
+ get(_, prop) {
23
+ let conn = getConn();
24
+ if (!conn) {
25
+ // Lazily create a disconnected connection so .model() works at import time
26
+ const mg = resolveMongoose(mongooseInstance);
27
+ conn = mg.createConnection();
28
+ }
29
+ const val = conn[prop];
30
+ return typeof val === 'function' ? val.bind(conn) : val;
31
+ },
32
+ });
33
+ }
34
+ /**
35
+ * Create a mongoose proxy that lazily resolves the mongoose instance.
36
+ */
37
+ export function makeMongooseProxy(getMongoose) {
38
+ return new Proxy({}, {
39
+ get(_, prop) {
40
+ const mg = getMongoose();
41
+ return mg[prop];
42
+ },
43
+ });
44
+ }
@@ -0,0 +1,14 @@
1
+ import type { ConnectionOptions, Job, Processor, QueueOptions, Queue as QueueType, WorkerOptions, Worker as WorkerType } from 'bullmq';
2
+ import type * as IORedis from 'ioredis';
3
+ export interface AuthQueueFactory {
4
+ createQueue<T = unknown, R = unknown>(name: string, options?: Omit<QueueOptions, 'connection'>): AuthQueue<T, R>;
5
+ createWorker<T = unknown, R = unknown>(name: string, processor: Processor<T, R>, options?: Omit<WorkerOptions, 'connection'>): WorkerType<T, R>;
6
+ }
7
+ type BullMQRedisConnection = ConnectionOptions & IORedis.Redis;
8
+ type AuthQueue<T, R> = QueueType<T, R, string, T, R, string>;
9
+ /**
10
+ * Create a queue factory that captures Redis connection info once.
11
+ * All queues and workers created from this factory share the same connection.
12
+ */
13
+ export declare function createQueueFactory(getRedis: () => BullMQRedisConnection): AuthQueueFactory;
14
+ export type { Job };