@lastshotlabs/bunshot 0.0.27 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (742) hide show
  1. package/.oclif.manifest.json +39 -0
  2. package/README.md +8282 -2147
  3. package/dist/cli/commands/init.js +690 -0
  4. package/dist/cli/index.js +6 -0
  5. package/dist/cli.js +4 -4
  6. package/dist/packages/bunshot-admin/src/index.d.ts +15 -0
  7. package/dist/packages/bunshot-admin/src/index.js +11 -0
  8. package/dist/packages/bunshot-admin/src/lib/resourceTypes.d.ts +8 -0
  9. package/dist/packages/bunshot-admin/src/lib/resourceTypes.js +33 -0
  10. package/dist/packages/bunshot-admin/src/lib/typedRoute.d.ts +14 -0
  11. package/dist/packages/bunshot-admin/src/lib/typedRoute.js +17 -0
  12. package/dist/packages/bunshot-admin/src/plugin.d.ts +4 -0
  13. package/dist/packages/bunshot-admin/src/plugin.js +46 -0
  14. package/dist/packages/bunshot-admin/src/providers/auth0Access.d.ts +6 -0
  15. package/dist/packages/bunshot-admin/src/providers/auth0Access.js +32 -0
  16. package/dist/packages/bunshot-admin/src/routes/admin.d.ts +10 -0
  17. package/dist/packages/bunshot-admin/src/routes/admin.js +923 -0
  18. package/dist/packages/bunshot-admin/src/routes/mail.d.ts +6 -0
  19. package/dist/packages/bunshot-admin/src/routes/mail.js +114 -0
  20. package/dist/packages/bunshot-admin/src/routes/permissions.d.ts +8 -0
  21. package/dist/packages/bunshot-admin/src/routes/permissions.js +315 -0
  22. package/dist/packages/bunshot-admin/src/types/config.d.ts +16 -0
  23. package/dist/packages/bunshot-admin/src/types/config.js +37 -0
  24. package/dist/packages/bunshot-admin/src/types/env.d.ts +14 -0
  25. package/dist/packages/bunshot-admin/src/types/provider.d.ts +1 -0
  26. package/dist/packages/bunshot-admin/src/types/provider.js +4 -0
  27. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.d.ts +66 -0
  28. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.js +1063 -0
  29. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.d.ts +2 -0
  30. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.js +536 -0
  31. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.d.ts +88 -0
  32. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.js +1366 -0
  33. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.d.ts +2 -0
  34. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.js +23 -0
  35. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.d.ts +5 -0
  36. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.js +131 -0
  37. package/dist/packages/bunshot-auth/src/bootstrap.d.ts +38 -0
  38. package/dist/packages/bunshot-auth/src/bootstrap.js +384 -0
  39. package/dist/packages/bunshot-auth/src/config/appConfig.d.ts +3 -0
  40. package/dist/packages/bunshot-auth/src/config/appConfig.js +4 -0
  41. package/dist/packages/bunshot-auth/src/config/authConfig.d.ts +478 -0
  42. package/dist/packages/bunshot-auth/src/config/authConfig.js +46 -0
  43. package/dist/packages/bunshot-auth/src/config/configLock.d.ts +2 -0
  44. package/dist/packages/bunshot-auth/src/config/configLock.js +10 -0
  45. package/dist/packages/bunshot-auth/src/index.d.ts +25 -0
  46. package/dist/packages/bunshot-auth/src/index.js +23 -0
  47. package/dist/packages/bunshot-auth/src/infra/mongo.d.ts +15 -0
  48. package/dist/packages/bunshot-auth/src/infra/mongo.js +44 -0
  49. package/dist/packages/bunshot-auth/src/infra/queue.d.ts +14 -0
  50. package/dist/packages/bunshot-auth/src/infra/queue.js +27 -0
  51. package/dist/packages/bunshot-auth/src/infra/redis.d.ts +5 -0
  52. package/dist/packages/bunshot-auth/src/infra/redis.js +15 -0
  53. package/dist/packages/bunshot-auth/src/infra/signing.d.ts +7 -0
  54. package/dist/packages/bunshot-auth/src/infra/signing.js +8 -0
  55. package/dist/packages/bunshot-auth/src/lib/accountLockout.d.ts +34 -0
  56. package/dist/packages/bunshot-auth/src/lib/accountLockout.js +244 -0
  57. package/dist/packages/bunshot-auth/src/lib/adapterTiers.d.ts +1 -0
  58. package/dist/packages/bunshot-auth/src/lib/adapterTiers.js +1 -0
  59. package/dist/packages/bunshot-auth/src/lib/authAdapter.d.ts +1 -0
  60. package/dist/packages/bunshot-auth/src/lib/authAdapter.js +1 -0
  61. package/dist/packages/bunshot-auth/src/lib/authContext.d.ts +15 -0
  62. package/dist/packages/bunshot-auth/src/lib/authContext.js +1 -0
  63. package/dist/packages/bunshot-auth/src/lib/authEventBus.d.ts +4 -0
  64. package/dist/packages/bunshot-auth/src/lib/authEventBus.js +15 -0
  65. package/dist/packages/bunshot-auth/src/lib/authRateLimit.d.ts +28 -0
  66. package/dist/packages/bunshot-auth/src/lib/authRateLimit.js +205 -0
  67. package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.d.ts +8 -2
  68. package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.js +22 -9
  69. package/dist/packages/bunshot-auth/src/lib/cache.d.ts +12 -0
  70. package/dist/packages/bunshot-auth/src/lib/cache.js +120 -0
  71. package/dist/packages/bunshot-auth/src/lib/clientIp.d.ts +4 -0
  72. package/dist/{lib → packages/bunshot-auth/src/lib}/clientIp.js +14 -7
  73. package/dist/packages/bunshot-auth/src/lib/cookieOptions.d.ts +27 -0
  74. package/dist/packages/bunshot-auth/src/lib/cookieOptions.js +33 -0
  75. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.d.ts +40 -0
  76. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.js +221 -0
  77. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.d.ts +19 -0
  78. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.js +148 -0
  79. package/dist/packages/bunshot-auth/src/lib/emailTemplates.d.ts +23 -0
  80. package/dist/packages/bunshot-auth/src/lib/emailTemplates.js +265 -0
  81. package/dist/packages/bunshot-auth/src/lib/emailVerification.d.ts +30 -0
  82. package/dist/packages/bunshot-auth/src/lib/emailVerification.js +200 -0
  83. package/dist/packages/bunshot-auth/src/lib/env.d.ts +1 -0
  84. package/dist/packages/bunshot-auth/src/lib/env.js +3 -0
  85. package/dist/packages/bunshot-auth/src/lib/fingerprint.js +36 -0
  86. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.d.ts +15 -16
  87. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.js +22 -34
  88. package/dist/packages/bunshot-auth/src/lib/jwks.d.ts +28 -0
  89. package/dist/packages/bunshot-auth/src/lib/jwks.js +79 -0
  90. package/dist/packages/bunshot-auth/src/lib/jwt.d.ts +12 -0
  91. package/dist/packages/bunshot-auth/src/lib/jwt.js +86 -0
  92. package/dist/{lib → packages/bunshot-auth/src/lib}/logger.js +3 -3
  93. package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.d.ts +5 -4
  94. package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.js +6 -10
  95. package/dist/packages/bunshot-auth/src/lib/magicLink.d.ts +13 -0
  96. package/dist/packages/bunshot-auth/src/lib/magicLink.js +145 -0
  97. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.d.ts +60 -0
  98. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.js +419 -0
  99. package/dist/packages/bunshot-auth/src/lib/oauth.d.ts +82 -0
  100. package/dist/packages/bunshot-auth/src/lib/oauth.js +177 -0
  101. package/dist/packages/bunshot-auth/src/lib/oauthCode.d.ts +19 -0
  102. package/dist/packages/bunshot-auth/src/lib/oauthCode.js +182 -0
  103. package/dist/packages/bunshot-auth/src/lib/oauthReauth.d.ts +19 -0
  104. package/dist/packages/bunshot-auth/src/lib/oauthReauth.js +255 -0
  105. package/dist/packages/bunshot-auth/src/lib/organization.d.ts +66 -0
  106. package/dist/packages/bunshot-auth/src/lib/organization.js +225 -0
  107. package/dist/packages/bunshot-auth/src/lib/passwordHistory.d.ts +12 -0
  108. package/dist/packages/bunshot-auth/src/lib/passwordHistory.js +31 -0
  109. package/dist/packages/bunshot-auth/src/lib/resetPassword.d.ts +20 -0
  110. package/dist/packages/bunshot-auth/src/lib/resetPassword.js +148 -0
  111. package/dist/packages/bunshot-auth/src/lib/roles.d.ts +9 -0
  112. package/dist/packages/bunshot-auth/src/lib/roles.js +93 -0
  113. package/dist/packages/bunshot-auth/src/lib/saml.d.ts +29 -0
  114. package/dist/packages/bunshot-auth/src/lib/saml.js +73 -0
  115. package/dist/packages/bunshot-auth/src/lib/samlRequestId.d.ts +13 -0
  116. package/dist/packages/bunshot-auth/src/lib/samlRequestId.js +129 -0
  117. package/dist/{lib → packages/bunshot-auth/src/lib}/scim.d.ts +7 -7
  118. package/dist/{lib → packages/bunshot-auth/src/lib}/scim.js +15 -13
  119. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.d.ts +22 -0
  120. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.js +65 -0
  121. package/dist/packages/bunshot-auth/src/lib/session.d.ts +45 -0
  122. package/dist/packages/bunshot-auth/src/lib/session.js +1211 -0
  123. package/dist/packages/bunshot-auth/src/lib/storeInfra.d.ts +26 -0
  124. package/dist/packages/bunshot-auth/src/lib/storeInfra.js +18 -0
  125. package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.d.ts +3 -2
  126. package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.js +2 -5
  127. package/dist/packages/bunshot-auth/src/lib/validateAdapter.d.ts +16 -0
  128. package/dist/packages/bunshot-auth/src/lib/validateAdapter.js +161 -0
  129. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.d.ts +13 -0
  130. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.js +58 -0
  131. package/dist/{middleware → packages/bunshot-auth/src/middleware}/csrf.d.ts +5 -4
  132. package/dist/packages/bunshot-auth/src/middleware/csrf.js +138 -0
  133. package/dist/packages/bunshot-auth/src/middleware/identify.d.ts +4 -0
  134. package/dist/packages/bunshot-auth/src/middleware/identify.js +124 -0
  135. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.d.ts +2 -2
  136. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.js +10 -8
  137. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.d.ts +2 -2
  138. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.js +20 -16
  139. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.d.ts +2 -2
  140. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.js +6 -6
  141. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.d.ts +2 -2
  142. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.js +8 -7
  143. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.d.ts +2 -2
  144. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.js +7 -6
  145. package/dist/packages/bunshot-auth/src/middleware/scimAuth.d.ts +8 -0
  146. package/dist/packages/bunshot-auth/src/middleware/scimAuth.js +29 -0
  147. package/dist/packages/bunshot-auth/src/middleware/userAuth.d.ts +3 -0
  148. package/dist/packages/bunshot-auth/src/middleware/userAuth.js +6 -0
  149. package/dist/{models → packages/bunshot-auth/src/models}/AuthUser.d.ts +12 -8
  150. package/dist/packages/bunshot-auth/src/models/AuthUser.js +53 -0
  151. package/dist/packages/bunshot-auth/src/models/Group.d.ts +19 -0
  152. package/dist/packages/bunshot-auth/src/models/Group.js +22 -0
  153. package/dist/{models → packages/bunshot-auth/src/models}/GroupMembership.d.ts +6 -8
  154. package/dist/packages/bunshot-auth/src/models/GroupMembership.js +19 -0
  155. package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.d.ts +1 -1
  156. package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.js +5 -5
  157. package/dist/packages/bunshot-auth/src/models/TenantRole.d.ts +13 -0
  158. package/dist/packages/bunshot-auth/src/models/TenantRole.js +17 -0
  159. package/dist/packages/bunshot-auth/src/plugin.d.ts +4 -0
  160. package/dist/packages/bunshot-auth/src/plugin.js +274 -0
  161. package/dist/packages/bunshot-auth/src/routes/auth.d.ts +15 -0
  162. package/dist/packages/bunshot-auth/src/routes/auth.js +1624 -0
  163. package/dist/packages/bunshot-auth/src/routes/groups.d.ts +4 -0
  164. package/dist/packages/bunshot-auth/src/routes/groups.js +481 -0
  165. package/dist/packages/bunshot-auth/src/routes/m2m.d.ts +2 -0
  166. package/dist/packages/bunshot-auth/src/routes/m2m.js +145 -0
  167. package/dist/packages/bunshot-auth/src/routes/mfa.d.ts +6 -0
  168. package/dist/packages/bunshot-auth/src/routes/mfa.js +991 -0
  169. package/dist/packages/bunshot-auth/src/routes/oauth.d.ts +3 -0
  170. package/dist/packages/bunshot-auth/src/routes/oauth.js +1727 -0
  171. package/dist/packages/bunshot-auth/src/routes/oidc.d.ts +2 -0
  172. package/dist/packages/bunshot-auth/src/routes/oidc.js +84 -0
  173. package/dist/packages/bunshot-auth/src/routes/organizations.d.ts +3 -0
  174. package/dist/packages/bunshot-auth/src/routes/organizations.js +741 -0
  175. package/dist/packages/bunshot-auth/src/routes/passkey.d.ts +2 -0
  176. package/dist/packages/bunshot-auth/src/routes/passkey.js +199 -0
  177. package/dist/packages/bunshot-auth/src/routes/saml.d.ts +2 -0
  178. package/dist/packages/bunshot-auth/src/routes/saml.js +226 -0
  179. package/dist/packages/bunshot-auth/src/routes/scim.d.ts +3 -0
  180. package/dist/packages/bunshot-auth/src/routes/scim.js +588 -0
  181. package/dist/packages/bunshot-auth/src/runtime.d.ts +52 -0
  182. package/dist/packages/bunshot-auth/src/runtime.js +11 -0
  183. package/dist/{schemas → packages/bunshot-auth/src/schemas}/auth.d.ts +4 -5
  184. package/dist/packages/bunshot-auth/src/schemas/auth.js +24 -0
  185. package/dist/packages/bunshot-auth/src/schemas/error.d.ts +10 -0
  186. package/dist/packages/bunshot-auth/src/schemas/error.js +10 -0
  187. package/dist/packages/bunshot-auth/src/schemas/success.d.ts +10 -0
  188. package/dist/packages/bunshot-auth/src/schemas/success.js +10 -0
  189. package/dist/packages/bunshot-auth/src/services/auth.d.ts +39 -0
  190. package/dist/packages/bunshot-auth/src/services/auth.js +378 -0
  191. package/dist/{services → packages/bunshot-auth/src/services}/mfa.d.ts +41 -17
  192. package/dist/{services → packages/bunshot-auth/src/services}/mfa.js +259 -183
  193. package/dist/packages/bunshot-auth/src/testing.d.ts +31 -0
  194. package/dist/packages/bunshot-auth/src/testing.js +23 -0
  195. package/dist/packages/bunshot-auth/src/types/adapter.d.ts +1 -0
  196. package/dist/packages/bunshot-auth/src/types/adapter.js +1 -0
  197. package/dist/packages/bunshot-auth/src/types/config.d.ts +152 -0
  198. package/dist/packages/bunshot-auth/src/types/config.js +179 -0
  199. package/dist/{routes → packages/bunshot-auth/src/types}/groups.d.ts +2 -3
  200. package/dist/packages/bunshot-auth/src/types/groups.js +1 -0
  201. package/dist/packages/bunshot-auth/src/types/oauthCode.d.ts +6 -0
  202. package/dist/packages/bunshot-auth/src/types/oauthCode.js +1 -0
  203. package/dist/packages/bunshot-auth/src/types/oauthReauth.d.ts +13 -0
  204. package/dist/packages/bunshot-auth/src/types/oauthReauth.js +1 -0
  205. package/dist/packages/bunshot-auth/src/types/redis.d.ts +1 -0
  206. package/dist/packages/bunshot-auth/src/types/redis.js +1 -0
  207. package/dist/packages/bunshot-auth/src/types/saml.d.ts +10 -0
  208. package/dist/packages/bunshot-auth/src/types/saml.js +1 -0
  209. package/dist/packages/bunshot-auth/src/types/session.d.ts +18 -0
  210. package/dist/packages/bunshot-auth/src/types/session.js +1 -0
  211. package/dist/packages/bunshot-auth/src/types/store.d.ts +1 -0
  212. package/dist/packages/bunshot-auth/src/types/store.js +1 -0
  213. package/dist/packages/bunshot-core/src/adminProvider.d.ts +95 -0
  214. package/dist/packages/bunshot-core/src/adminProvider.js +1 -0
  215. package/dist/packages/bunshot-core/src/auditLog.d.ts +34 -0
  216. package/dist/packages/bunshot-core/src/auditLog.js +1 -0
  217. package/dist/packages/bunshot-core/src/auth-adapter.d.ts +227 -0
  218. package/dist/packages/bunshot-core/src/auth-adapter.js +4 -0
  219. package/dist/packages/bunshot-core/src/authVariables.d.ts +14 -0
  220. package/dist/packages/bunshot-core/src/authVariables.js +4 -0
  221. package/dist/packages/bunshot-core/src/cache.d.ts +12 -0
  222. package/dist/packages/bunshot-core/src/cache.js +21 -0
  223. package/dist/{lib → packages/bunshot-core/src}/captcha.d.ts +1 -10
  224. package/dist/packages/bunshot-core/src/captcha.js +1 -0
  225. package/dist/packages/bunshot-core/src/clearRegistry.d.ts +6 -0
  226. package/dist/packages/bunshot-core/src/clearRegistry.js +17 -0
  227. package/dist/packages/bunshot-core/src/clientIp.d.ts +3 -0
  228. package/dist/packages/bunshot-core/src/clientIp.js +45 -0
  229. package/dist/packages/bunshot-core/src/configLock.d.ts +4 -0
  230. package/dist/packages/bunshot-core/src/configLock.js +7 -0
  231. package/dist/packages/bunshot-core/src/configValidation.d.ts +22 -0
  232. package/dist/packages/bunshot-core/src/configValidation.js +39 -0
  233. package/dist/packages/bunshot-core/src/constants.js +10 -0
  234. package/dist/packages/bunshot-core/src/context/bunshotContext.d.ts +232 -0
  235. package/dist/packages/bunshot-core/src/context/bunshotContext.js +1 -0
  236. package/dist/packages/bunshot-core/src/context/contextAccess.d.ts +3 -0
  237. package/dist/packages/bunshot-core/src/context/contextAccess.js +16 -0
  238. package/dist/packages/bunshot-core/src/context/contextStore.d.ts +16 -0
  239. package/dist/packages/bunshot-core/src/context/contextStore.js +31 -0
  240. package/dist/packages/bunshot-core/src/context/frameworkConfig.d.ts +38 -0
  241. package/dist/packages/bunshot-core/src/context/frameworkConfig.js +1 -0
  242. package/dist/packages/bunshot-core/src/context/index.d.ts +4 -0
  243. package/dist/packages/bunshot-core/src/context/index.js +2 -0
  244. package/dist/packages/bunshot-core/src/context.d.ts +40 -0
  245. package/dist/packages/bunshot-core/src/context.js +35 -0
  246. package/dist/packages/bunshot-core/src/coreContracts.d.ts +47 -0
  247. package/dist/packages/bunshot-core/src/coreContracts.js +1 -0
  248. package/dist/packages/bunshot-core/src/coreRegistrar.d.ts +6 -0
  249. package/dist/packages/bunshot-core/src/coreRegistrar.js +42 -0
  250. package/dist/{lib → packages/bunshot-core/src}/createRoute.d.ts +4 -30
  251. package/dist/{lib → packages/bunshot-core/src}/createRoute.js +39 -88
  252. package/dist/packages/bunshot-core/src/cronRegistry.d.ts +11 -0
  253. package/dist/packages/bunshot-core/src/cronRegistry.js +1 -0
  254. package/dist/packages/bunshot-core/src/crypto.d.ts +43 -0
  255. package/dist/packages/bunshot-core/src/crypto.js +74 -0
  256. package/dist/packages/bunshot-core/src/csrf.d.ts +8 -0
  257. package/dist/packages/bunshot-core/src/csrf.js +1 -0
  258. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.d.ts +7 -0
  259. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.js +19 -0
  260. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.d.ts +6 -0
  261. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.js +40 -0
  262. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.d.ts +6 -0
  263. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.js +24 -0
  264. package/dist/packages/bunshot-core/src/emailTemplates.d.ts +5 -0
  265. package/dist/packages/bunshot-core/src/emailTemplates.js +10 -0
  266. package/dist/{lib/HttpError.d.ts → packages/bunshot-core/src/errors.d.ts} +4 -1
  267. package/dist/{lib/HttpError.js → packages/bunshot-core/src/errors.js} +7 -1
  268. package/dist/packages/bunshot-core/src/eventBus.d.ts +270 -0
  269. package/dist/packages/bunshot-core/src/eventBus.js +143 -0
  270. package/dist/packages/bunshot-core/src/idempotency.d.ts +18 -0
  271. package/dist/packages/bunshot-core/src/idempotency.js +1 -0
  272. package/dist/packages/bunshot-core/src/index.d.ts +60 -0
  273. package/dist/packages/bunshot-core/src/index.js +34 -0
  274. package/dist/packages/bunshot-core/src/mail.d.ts +14 -0
  275. package/dist/packages/bunshot-core/src/mail.js +8 -0
  276. package/dist/packages/bunshot-core/src/memoryEviction.d.ts +24 -0
  277. package/dist/packages/bunshot-core/src/memoryEviction.js +52 -0
  278. package/dist/packages/bunshot-core/src/pagination.d.ts +45 -0
  279. package/dist/packages/bunshot-core/src/pagination.js +61 -0
  280. package/dist/packages/bunshot-core/src/permissions.d.ts +64 -0
  281. package/dist/packages/bunshot-core/src/permissions.js +27 -0
  282. package/dist/packages/bunshot-core/src/plugin.d.ts +44 -0
  283. package/dist/packages/bunshot-core/src/plugin.js +1 -0
  284. package/dist/packages/bunshot-core/src/rateLimit.d.ts +5 -0
  285. package/dist/packages/bunshot-core/src/rateLimit.js +18 -0
  286. package/dist/packages/bunshot-core/src/redis.d.ts +21 -0
  287. package/dist/packages/bunshot-core/src/redis.js +1 -0
  288. package/dist/packages/bunshot-core/src/routeAuth.d.ts +5 -0
  289. package/dist/packages/bunshot-core/src/routeAuth.js +11 -0
  290. package/dist/packages/bunshot-core/src/routeOverrides.d.ts +24 -0
  291. package/dist/packages/bunshot-core/src/routeOverrides.js +25 -0
  292. package/dist/packages/bunshot-core/src/routerAdapter.d.ts +6 -0
  293. package/dist/packages/bunshot-core/src/routerAdapter.js +56 -0
  294. package/dist/packages/bunshot-core/src/secrets.d.ts +48 -0
  295. package/dist/packages/bunshot-core/src/secrets.js +8 -0
  296. package/dist/packages/bunshot-core/src/signing.d.ts +41 -0
  297. package/dist/packages/bunshot-core/src/signing.js +1 -0
  298. package/dist/packages/bunshot-core/src/sse.d.ts +36 -0
  299. package/dist/packages/bunshot-core/src/sse.js +1 -0
  300. package/dist/packages/bunshot-core/src/storageAdapter.js +1 -0
  301. package/dist/packages/bunshot-core/src/storeInfra.d.ts +44 -0
  302. package/dist/packages/bunshot-core/src/storeInfra.js +18 -0
  303. package/dist/packages/bunshot-core/src/storeType.d.ts +7 -0
  304. package/dist/packages/bunshot-core/src/storeType.js +1 -0
  305. package/dist/packages/bunshot-core/src/testing.d.ts +1 -0
  306. package/dist/packages/bunshot-core/src/testing.js +1 -0
  307. package/dist/packages/bunshot-core/src/uploadRegistry.d.ts +23 -0
  308. package/dist/packages/bunshot-core/src/uploadRegistry.js +4 -0
  309. package/dist/packages/bunshot-core/src/userResolver.d.ts +5 -0
  310. package/dist/packages/bunshot-core/src/userResolver.js +14 -0
  311. package/dist/packages/bunshot-core/src/wsMessages.d.ts +42 -0
  312. package/dist/packages/bunshot-core/src/wsMessages.js +4 -0
  313. package/dist/packages/bunshot-permissions/src/adapters/memory.d.ts +7 -0
  314. package/dist/packages/bunshot-permissions/src/adapters/memory.js +73 -0
  315. package/dist/packages/bunshot-permissions/src/index.d.ts +10 -0
  316. package/dist/packages/bunshot-permissions/src/index.js +5 -0
  317. package/dist/packages/bunshot-permissions/src/lib/bootstrap.d.ts +7 -0
  318. package/dist/packages/bunshot-permissions/src/lib/bootstrap.js +12 -0
  319. package/dist/packages/bunshot-permissions/src/lib/evaluator.d.ts +10 -0
  320. package/dist/packages/bunshot-permissions/src/lib/evaluator.js +165 -0
  321. package/dist/packages/bunshot-permissions/src/lib/registry.d.ts +2 -0
  322. package/dist/packages/bunshot-permissions/src/lib/registry.js +31 -0
  323. package/dist/packages/bunshot-permissions/src/lib/validation.d.ts +1 -0
  324. package/dist/packages/bunshot-permissions/src/lib/validation.js +1 -0
  325. package/dist/packages/bunshot-permissions/src/types/adapter.d.ts +1 -0
  326. package/dist/packages/bunshot-permissions/src/types/adapter.js +1 -0
  327. package/dist/packages/bunshot-permissions/src/types/evaluator.d.ts +1 -0
  328. package/dist/packages/bunshot-permissions/src/types/evaluator.js +1 -0
  329. package/dist/packages/bunshot-permissions/src/types/models.d.ts +1 -0
  330. package/dist/packages/bunshot-permissions/src/types/models.js +1 -0
  331. package/dist/packages/bunshot-permissions/src/types/registry.d.ts +1 -0
  332. package/dist/packages/bunshot-permissions/src/types/registry.js +1 -0
  333. package/dist/packages/bunshot-postgres/src/adapter.d.ts +6 -0
  334. package/dist/packages/bunshot-postgres/src/adapter.js +794 -0
  335. package/dist/packages/bunshot-postgres/src/connection.d.ts +15 -0
  336. package/dist/packages/bunshot-postgres/src/connection.js +16 -0
  337. package/dist/packages/bunshot-postgres/src/index.d.ts +4 -0
  338. package/dist/packages/bunshot-postgres/src/index.js +2 -0
  339. package/dist/packages/bunshot-postgres/src/schema.d.ts +997 -0
  340. package/dist/packages/bunshot-postgres/src/schema.js +105 -0
  341. package/dist/src/app.d.ts +230 -0
  342. package/dist/src/app.js +182 -0
  343. package/dist/src/cli/commands/init.d.ts +10 -0
  344. package/dist/src/cli/commands/init.js +709 -0
  345. package/dist/src/cli/index.d.ts +1 -0
  346. package/dist/src/cli/index.js +3 -0
  347. package/dist/src/entrypoints/mongo.d.ts +6 -0
  348. package/dist/src/entrypoints/mongo.js +4 -0
  349. package/dist/src/entrypoints/queue.d.ts +2 -0
  350. package/dist/src/entrypoints/queue.js +1 -0
  351. package/dist/src/entrypoints/redis.d.ts +1 -0
  352. package/dist/src/entrypoints/redis.js +1 -0
  353. package/dist/{adapters → src/framework/adapters}/localStorage.d.ts +1 -1
  354. package/dist/{adapters → src/framework/adapters}/localStorage.js +10 -10
  355. package/dist/src/framework/adapters/memoryStorage.d.ts +2 -0
  356. package/dist/src/framework/adapters/memoryStorage.js +45 -0
  357. package/dist/{adapters → src/framework/adapters}/s3Storage.d.ts +1 -1
  358. package/dist/{adapters → src/framework/adapters}/s3Storage.js +12 -12
  359. package/dist/src/framework/admin/bunshotAccess.d.ts +2 -0
  360. package/dist/src/framework/admin/bunshotAccess.js +23 -0
  361. package/dist/src/framework/admin/bunshotUsers.d.ts +2 -0
  362. package/dist/src/framework/admin/bunshotUsers.js +103 -0
  363. package/dist/src/framework/admin/index.d.ts +7 -0
  364. package/dist/src/framework/admin/index.js +21 -0
  365. package/dist/src/framework/boundaryAdapters/cacheFactories.d.ts +13 -0
  366. package/dist/src/framework/boundaryAdapters/cacheFactories.js +86 -0
  367. package/dist/src/framework/boundaryAdapters/index.d.ts +2 -0
  368. package/dist/src/framework/boundaryAdapters/index.js +1 -0
  369. package/dist/src/framework/boundaryAdapters.d.ts +17 -0
  370. package/dist/src/framework/boundaryAdapters.js +62 -0
  371. package/dist/src/framework/buildContext.d.ts +33 -0
  372. package/dist/src/framework/buildContext.js +119 -0
  373. package/dist/src/framework/config/schema.d.ts +447 -0
  374. package/dist/src/framework/config/schema.js +528 -0
  375. package/dist/src/framework/createInfrastructure.d.ts +76 -0
  376. package/dist/src/framework/createInfrastructure.js +221 -0
  377. package/dist/src/framework/lib/auditLog.d.ts +23 -0
  378. package/dist/src/framework/lib/auditLog.js +416 -0
  379. package/dist/src/framework/lib/captcha.d.ts +11 -0
  380. package/dist/{lib → src/framework/lib}/captcha.js +13 -10
  381. package/dist/{lib → src/framework/lib}/createDtoMapper.js +4 -4
  382. package/dist/src/framework/lib/createRoute.d.ts +1 -0
  383. package/dist/src/framework/lib/createRoute.js +2 -0
  384. package/dist/{lib → src/framework/lib}/idempotency.d.ts +2 -6
  385. package/dist/src/framework/lib/idempotency.js +74 -0
  386. package/dist/src/framework/lib/logger.d.ts +3 -0
  387. package/dist/src/framework/lib/logger.js +14 -0
  388. package/dist/src/framework/lib/metrics.d.ts +34 -0
  389. package/dist/{lib → src/framework/lib}/metrics.js +49 -57
  390. package/dist/src/framework/lib/pagination.d.ts +42 -0
  391. package/dist/src/framework/lib/pagination.js +51 -0
  392. package/dist/src/framework/lib/redisTransport.d.ts +38 -0
  393. package/dist/src/framework/lib/redisTransport.js +107 -0
  394. package/dist/src/framework/lib/resolveUserId.d.ts +2 -0
  395. package/dist/src/framework/lib/resolveUserId.js +5 -0
  396. package/dist/src/framework/lib/sseCollision.d.ts +6 -0
  397. package/dist/src/framework/lib/sseCollision.js +26 -0
  398. package/dist/src/framework/lib/storageAdapter.d.ts +1 -0
  399. package/dist/src/framework/lib/storageAdapter.js +1 -0
  400. package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.js +4 -4
  401. package/dist/src/framework/lib/tenant.d.ts +21 -0
  402. package/dist/src/framework/lib/tenant.js +70 -0
  403. package/dist/{lib → src/framework/lib}/upload.d.ts +11 -10
  404. package/dist/src/framework/lib/upload.js +132 -0
  405. package/dist/src/framework/lib/uploadRegistry.d.ts +23 -0
  406. package/dist/src/framework/lib/uploadRegistry.js +34 -0
  407. package/dist/{lib → src/framework/lib}/validate.d.ts +1 -1
  408. package/dist/{lib → src/framework/lib}/validate.js +2 -2
  409. package/dist/src/framework/lib/ws.d.ts +19 -0
  410. package/dist/src/framework/lib/ws.js +130 -0
  411. package/dist/src/framework/lib/wsHeartbeat.d.ts +12 -0
  412. package/dist/src/framework/lib/wsHeartbeat.js +53 -0
  413. package/dist/src/framework/lib/wsMessages.d.ts +25 -0
  414. package/dist/src/framework/lib/wsMessages.js +45 -0
  415. package/dist/src/framework/lib/wsNamespace.d.ts +17 -0
  416. package/dist/src/framework/lib/wsNamespace.js +19 -0
  417. package/dist/src/framework/lib/wsPresence.d.ts +17 -0
  418. package/dist/src/framework/lib/wsPresence.js +84 -0
  419. package/dist/src/framework/lib/wsTransport.d.ts +38 -0
  420. package/dist/src/framework/lib/wsTransport.js +9 -0
  421. package/dist/{lib → src/framework/lib}/zodToMongoose.d.ts +1 -1
  422. package/dist/{lib → src/framework/lib}/zodToMongoose.js +11 -11
  423. package/dist/{middleware → src/framework/middleware}/auditLog.d.ts +4 -3
  424. package/dist/src/framework/middleware/auditLog.js +42 -0
  425. package/dist/{middleware → src/framework/middleware}/botProtection.d.ts +2 -2
  426. package/dist/{middleware → src/framework/middleware}/botProtection.js +8 -9
  427. package/dist/src/framework/middleware/cacheResponse.d.ts +35 -0
  428. package/dist/src/framework/middleware/cacheResponse.js +126 -0
  429. package/dist/{middleware → src/framework/middleware}/captcha.d.ts +2 -3
  430. package/dist/src/framework/middleware/captcha.js +37 -0
  431. package/dist/{middleware → src/framework/middleware}/errorHandler.d.ts +1 -1
  432. package/dist/{middleware → src/framework/middleware}/errorHandler.js +2 -2
  433. package/dist/src/framework/middleware/index.js +1 -0
  434. package/dist/{middleware → src/framework/middleware}/logger.d.ts +1 -1
  435. package/dist/src/framework/middleware/metrics.d.ts +12 -0
  436. package/dist/src/framework/middleware/metrics.js +26 -0
  437. package/dist/{middleware → src/framework/middleware}/rateLimit.d.ts +2 -2
  438. package/dist/src/framework/middleware/rateLimit.js +22 -0
  439. package/dist/src/framework/middleware/requestId.d.ts +3 -0
  440. package/dist/{middleware → src/framework/middleware}/requestId.js +2 -2
  441. package/dist/{middleware → src/framework/middleware}/requestLogger.d.ts +3 -3
  442. package/dist/{middleware → src/framework/middleware}/requestLogger.js +17 -12
  443. package/dist/{middleware → src/framework/middleware}/requestSigning.d.ts +2 -2
  444. package/dist/{middleware → src/framework/middleware}/requestSigning.js +18 -20
  445. package/dist/src/framework/middleware/tenant.d.ts +14 -0
  446. package/dist/{middleware → src/framework/middleware}/tenant.js +31 -27
  447. package/dist/src/framework/middleware/upload.d.ts +5 -0
  448. package/dist/{middleware → src/framework/middleware}/upload.js +4 -4
  449. package/dist/{middleware → src/framework/middleware}/webhookAuth.d.ts +3 -3
  450. package/dist/{middleware → src/framework/middleware}/webhookAuth.js +11 -12
  451. package/dist/src/framework/models/AuditLog.d.ts +21 -0
  452. package/dist/src/framework/models/AuditLog.js +31 -0
  453. package/dist/src/framework/mountMiddleware.d.ts +91 -0
  454. package/dist/src/framework/mountMiddleware.js +128 -0
  455. package/dist/src/framework/mountOptionalEndpoints.d.ts +103 -0
  456. package/dist/src/framework/mountOptionalEndpoints.js +47 -0
  457. package/dist/src/framework/mountRoutes.d.ts +21 -0
  458. package/dist/src/framework/mountRoutes.js +144 -0
  459. package/dist/src/framework/persistence/cronRegistry.d.ts +28 -0
  460. package/dist/src/framework/persistence/cronRegistry.js +139 -0
  461. package/dist/src/framework/persistence/idempotency.d.ts +26 -0
  462. package/dist/src/framework/persistence/idempotency.js +178 -0
  463. package/dist/src/framework/persistence/index.d.ts +6 -0
  464. package/dist/src/framework/persistence/index.js +8 -0
  465. package/dist/src/framework/persistence/storeInfra.d.ts +9 -0
  466. package/dist/src/framework/persistence/storeInfra.js +1 -0
  467. package/dist/src/framework/persistence/uploadRegistry.d.ts +35 -0
  468. package/dist/src/framework/persistence/uploadRegistry.js +235 -0
  469. package/dist/src/framework/persistence/wsMessages.d.ts +22 -0
  470. package/dist/src/framework/persistence/wsMessages.js +296 -0
  471. package/dist/src/framework/preloadSchemas.d.ts +24 -0
  472. package/dist/src/framework/preloadSchemas.js +42 -0
  473. package/dist/src/framework/registerBoundaryAdapters.d.ts +23 -0
  474. package/dist/src/framework/registerBoundaryAdapters.js +46 -0
  475. package/dist/src/framework/routes/admin.d.ts +9 -0
  476. package/dist/src/framework/routes/admin.js +361 -0
  477. package/dist/src/framework/routes/health.d.ts +1 -0
  478. package/dist/src/framework/routes/health.js +21 -0
  479. package/dist/src/framework/routes/home.d.ts +1 -0
  480. package/dist/src/framework/routes/home.js +18 -0
  481. package/dist/src/framework/routes/jobs.d.ts +3 -0
  482. package/dist/{routes → src/framework/routes}/jobs.js +128 -103
  483. package/dist/src/framework/routes/metrics.d.ts +10 -0
  484. package/dist/src/framework/routes/metrics.js +57 -0
  485. package/dist/{routes → src/framework/routes}/uploads.d.ts +3 -3
  486. package/dist/src/framework/routes/uploads.js +262 -0
  487. package/dist/src/framework/runPluginLifecycle.d.ts +27 -0
  488. package/dist/src/framework/runPluginLifecycle.js +121 -0
  489. package/dist/src/framework/secrets/frameworkSecretSchema.d.ts +58 -0
  490. package/dist/src/framework/secrets/frameworkSecretSchema.js +20 -0
  491. package/dist/src/framework/secrets/index.d.ts +9 -0
  492. package/dist/src/framework/secrets/index.js +7 -0
  493. package/dist/src/framework/secrets/providers/envProvider.d.ts +15 -0
  494. package/dist/src/framework/secrets/providers/envProvider.js +18 -0
  495. package/dist/src/framework/secrets/providers/fileProvider.d.ts +8 -0
  496. package/dist/src/framework/secrets/providers/fileProvider.js +82 -0
  497. package/dist/src/framework/secrets/providers/ssmProvider.d.ts +20 -0
  498. package/dist/src/framework/secrets/providers/ssmProvider.js +127 -0
  499. package/dist/src/framework/secrets/resolveSecretBundle.d.ts +53 -0
  500. package/dist/src/framework/secrets/resolveSecretBundle.js +84 -0
  501. package/dist/src/framework/secrets/resolveSecrets.d.ts +18 -0
  502. package/dist/src/framework/secrets/resolveSecrets.js +34 -0
  503. package/dist/src/framework/sse/index.d.ts +21 -0
  504. package/dist/src/framework/sse/index.js +109 -0
  505. package/dist/src/framework/ws/index.d.ts +11 -0
  506. package/dist/src/framework/ws/index.js +8 -0
  507. package/dist/src/index.d.ts +87 -0
  508. package/dist/src/index.js +58 -0
  509. package/dist/src/lib/appConfig.d.ts +7 -0
  510. package/dist/src/lib/appConfig.js +27 -0
  511. package/dist/src/lib/appMeta.d.ts +7 -0
  512. package/dist/src/lib/appMeta.js +3 -0
  513. package/dist/src/lib/authConfig.d.ts +532 -0
  514. package/dist/{lib/appConfig.js → src/lib/authConfig.js} +75 -17
  515. package/dist/{lib → src/lib}/context.d.ts +6 -12
  516. package/dist/{lib → src/lib}/context.js +5 -5
  517. package/dist/src/lib/logger.d.ts +1 -0
  518. package/dist/src/lib/logger.js +1 -0
  519. package/dist/src/lib/mongo.d.ts +58 -0
  520. package/dist/src/lib/mongo.js +96 -0
  521. package/dist/src/lib/queue.d.ts +72 -0
  522. package/dist/src/lib/queue.js +152 -0
  523. package/dist/src/lib/redis.d.ts +28 -0
  524. package/dist/src/lib/redis.js +72 -0
  525. package/dist/{lib → src/lib}/signing.d.ts +2 -2
  526. package/dist/src/lib/signing.js +210 -0
  527. package/dist/src/lib/signingConfig.d.ts +40 -0
  528. package/dist/src/lib/signingConfig.js +28 -0
  529. package/dist/src/server.d.ts +146 -0
  530. package/dist/src/server.js +469 -0
  531. package/dist/src/shared/lib/HttpError.d.ts +1 -0
  532. package/dist/src/shared/lib/HttpError.js +2 -0
  533. package/dist/src/shared/lib/constants.d.ts +10 -0
  534. package/dist/src/shared/lib/crypto.d.ts +43 -0
  535. package/dist/src/shared/lib/crypto.js +74 -0
  536. package/dist/src/shared/lib/signing.d.ts +52 -0
  537. package/dist/{lib → src/shared/lib}/signing.js +35 -8
  538. package/dist/src/testing.d.ts +34 -0
  539. package/dist/src/testing.js +93 -0
  540. package/package.json +60 -24
  541. package/dist/adapters/memoryAuth.d.ts +0 -52
  542. package/dist/adapters/memoryAuth.js +0 -749
  543. package/dist/adapters/memoryStorage.d.ts +0 -3
  544. package/dist/adapters/memoryStorage.js +0 -44
  545. package/dist/adapters/mongoAuth.d.ts +0 -2
  546. package/dist/adapters/mongoAuth.js +0 -403
  547. package/dist/adapters/sqliteAuth.d.ts +0 -72
  548. package/dist/adapters/sqliteAuth.js +0 -858
  549. package/dist/app.d.ts +0 -559
  550. package/dist/app.js +0 -651
  551. package/dist/entrypoints/mongo.d.ts +0 -5
  552. package/dist/entrypoints/mongo.js +0 -4
  553. package/dist/entrypoints/queue.d.ts +0 -2
  554. package/dist/entrypoints/queue.js +0 -1
  555. package/dist/entrypoints/redis.d.ts +0 -1
  556. package/dist/entrypoints/redis.js +0 -1
  557. package/dist/index.d.ts +0 -117
  558. package/dist/index.js +0 -88
  559. package/dist/lib/appConfig.d.ts +0 -275
  560. package/dist/lib/auditLog.d.ts +0 -58
  561. package/dist/lib/auditLog.js +0 -218
  562. package/dist/lib/authAdapter.d.ts +0 -246
  563. package/dist/lib/authAdapter.js +0 -7
  564. package/dist/lib/authRateLimit.d.ts +0 -13
  565. package/dist/lib/authRateLimit.js +0 -117
  566. package/dist/lib/clientIp.d.ts +0 -14
  567. package/dist/lib/credentialStuffing.d.ts +0 -31
  568. package/dist/lib/credentialStuffing.js +0 -77
  569. package/dist/lib/crypto.d.ts +0 -11
  570. package/dist/lib/crypto.js +0 -22
  571. package/dist/lib/deletionCancelToken.d.ts +0 -12
  572. package/dist/lib/deletionCancelToken.js +0 -88
  573. package/dist/lib/emailVerification.d.ts +0 -19
  574. package/dist/lib/emailVerification.js +0 -129
  575. package/dist/lib/fingerprint.js +0 -36
  576. package/dist/lib/idempotency.js +0 -182
  577. package/dist/lib/jwks.d.ts +0 -25
  578. package/dist/lib/jwks.js +0 -51
  579. package/dist/lib/jwt.d.ts +0 -15
  580. package/dist/lib/jwt.js +0 -111
  581. package/dist/lib/metrics.d.ts +0 -14
  582. package/dist/lib/mfaChallenge.d.ts +0 -55
  583. package/dist/lib/mfaChallenge.js +0 -398
  584. package/dist/lib/mongo.d.ts +0 -39
  585. package/dist/lib/mongo.js +0 -124
  586. package/dist/lib/oauth.d.ts +0 -40
  587. package/dist/lib/oauth.js +0 -101
  588. package/dist/lib/oauthCode.d.ts +0 -15
  589. package/dist/lib/oauthCode.js +0 -95
  590. package/dist/lib/pagination.d.ts +0 -119
  591. package/dist/lib/pagination.js +0 -166
  592. package/dist/lib/queue.d.ts +0 -37
  593. package/dist/lib/queue.js +0 -117
  594. package/dist/lib/redis.d.ts +0 -9
  595. package/dist/lib/redis.js +0 -61
  596. package/dist/lib/resetPassword.d.ts +0 -12
  597. package/dist/lib/resetPassword.js +0 -93
  598. package/dist/lib/roles.d.ts +0 -7
  599. package/dist/lib/roles.js +0 -49
  600. package/dist/lib/saml.d.ts +0 -25
  601. package/dist/lib/saml.js +0 -64
  602. package/dist/lib/securityEvents.d.ts +0 -28
  603. package/dist/lib/securityEvents.js +0 -26
  604. package/dist/lib/session.d.ts +0 -49
  605. package/dist/lib/session.js +0 -597
  606. package/dist/lib/tenant.d.ts +0 -15
  607. package/dist/lib/tenant.js +0 -65
  608. package/dist/lib/upload.js +0 -112
  609. package/dist/lib/uploadRegistry.d.ts +0 -18
  610. package/dist/lib/uploadRegistry.js +0 -83
  611. package/dist/lib/ws.d.ts +0 -22
  612. package/dist/lib/ws.js +0 -96
  613. package/dist/lib/wsHeartbeat.d.ts +0 -12
  614. package/dist/lib/wsHeartbeat.js +0 -57
  615. package/dist/lib/wsMessages.d.ts +0 -40
  616. package/dist/lib/wsMessages.js +0 -330
  617. package/dist/lib/wsPresence.d.ts +0 -25
  618. package/dist/lib/wsPresence.js +0 -99
  619. package/dist/middleware/auditLog.js +0 -39
  620. package/dist/middleware/bearerAuth.d.ts +0 -2
  621. package/dist/middleware/bearerAuth.js +0 -11
  622. package/dist/middleware/cacheResponse.d.ts +0 -15
  623. package/dist/middleware/cacheResponse.js +0 -178
  624. package/dist/middleware/captcha.js +0 -36
  625. package/dist/middleware/csrf.js +0 -129
  626. package/dist/middleware/identify.d.ts +0 -3
  627. package/dist/middleware/identify.js +0 -122
  628. package/dist/middleware/index.js +0 -1
  629. package/dist/middleware/metrics.d.ts +0 -9
  630. package/dist/middleware/metrics.js +0 -26
  631. package/dist/middleware/rateLimit.js +0 -22
  632. package/dist/middleware/requestId.d.ts +0 -3
  633. package/dist/middleware/scimAuth.d.ts +0 -8
  634. package/dist/middleware/scimAuth.js +0 -29
  635. package/dist/middleware/tenant.d.ts +0 -5
  636. package/dist/middleware/upload.d.ts +0 -5
  637. package/dist/middleware/userAuth.d.ts +0 -3
  638. package/dist/middleware/userAuth.js +0 -6
  639. package/dist/models/AuditLog.d.ts +0 -30
  640. package/dist/models/AuditLog.js +0 -39
  641. package/dist/models/AuthUser.js +0 -55
  642. package/dist/models/Group.d.ts +0 -21
  643. package/dist/models/Group.js +0 -28
  644. package/dist/models/GroupMembership.js +0 -25
  645. package/dist/models/TenantRole.d.ts +0 -15
  646. package/dist/models/TenantRole.js +0 -23
  647. package/dist/routes/auth.d.ts +0 -12
  648. package/dist/routes/auth.js +0 -744
  649. package/dist/routes/groups.js +0 -346
  650. package/dist/routes/health.d.ts +0 -1
  651. package/dist/routes/health.js +0 -22
  652. package/dist/routes/home.d.ts +0 -1
  653. package/dist/routes/home.js +0 -16
  654. package/dist/routes/jobs.d.ts +0 -2
  655. package/dist/routes/m2m.d.ts +0 -2
  656. package/dist/routes/m2m.js +0 -72
  657. package/dist/routes/metrics.d.ts +0 -8
  658. package/dist/routes/metrics.js +0 -55
  659. package/dist/routes/mfa.d.ts +0 -5
  660. package/dist/routes/mfa.js +0 -628
  661. package/dist/routes/oauth.d.ts +0 -2
  662. package/dist/routes/oauth.js +0 -520
  663. package/dist/routes/oidc.d.ts +0 -2
  664. package/dist/routes/oidc.js +0 -29
  665. package/dist/routes/passkey.d.ts +0 -1
  666. package/dist/routes/passkey.js +0 -157
  667. package/dist/routes/saml.d.ts +0 -2
  668. package/dist/routes/saml.js +0 -86
  669. package/dist/routes/scim.d.ts +0 -2
  670. package/dist/routes/scim.js +0 -255
  671. package/dist/routes/uploads.js +0 -227
  672. package/dist/schemas/auth.js +0 -30
  673. package/dist/server.d.ts +0 -57
  674. package/dist/server.js +0 -112
  675. package/dist/services/auth.d.ts +0 -29
  676. package/dist/services/auth.js +0 -238
  677. package/dist/ws/index.d.ts +0 -10
  678. package/dist/ws/index.js +0 -39
  679. package/docs/sections/adding-middleware/full.md +0 -35
  680. package/docs/sections/adding-models/full.md +0 -125
  681. package/docs/sections/adding-models/overview.md +0 -13
  682. package/docs/sections/adding-routes/full.md +0 -182
  683. package/docs/sections/adding-routes/overview.md +0 -23
  684. package/docs/sections/auth-flow/full.md +0 -790
  685. package/docs/sections/auth-flow/overview.md +0 -10
  686. package/docs/sections/auth-security-examples/full.md +0 -388
  687. package/docs/sections/authentication/full.md +0 -130
  688. package/docs/sections/authentication/overview.md +0 -5
  689. package/docs/sections/cli/full.md +0 -42
  690. package/docs/sections/configuration/full.md +0 -172
  691. package/docs/sections/configuration/overview.md +0 -18
  692. package/docs/sections/configuration-example/full.md +0 -117
  693. package/docs/sections/configuration-example/overview.md +0 -30
  694. package/docs/sections/documentation/full.md +0 -171
  695. package/docs/sections/environment-variables/full.md +0 -55
  696. package/docs/sections/exports/full.md +0 -123
  697. package/docs/sections/extending-context/full.md +0 -59
  698. package/docs/sections/header.md +0 -3
  699. package/docs/sections/installation/full.md +0 -6
  700. package/docs/sections/jobs/full.md +0 -140
  701. package/docs/sections/jobs/overview.md +0 -15
  702. package/docs/sections/logging/full.md +0 -83
  703. package/docs/sections/metrics/full.md +0 -131
  704. package/docs/sections/mongodb-connections/full.md +0 -45
  705. package/docs/sections/mongodb-connections/overview.md +0 -7
  706. package/docs/sections/multi-tenancy/full.md +0 -66
  707. package/docs/sections/multi-tenancy/overview.md +0 -15
  708. package/docs/sections/oauth/full.md +0 -189
  709. package/docs/sections/oauth/overview.md +0 -16
  710. package/docs/sections/package-development/full.md +0 -7
  711. package/docs/sections/pagination/full.md +0 -93
  712. package/docs/sections/passkey-login/full.md +0 -90
  713. package/docs/sections/passkey-login/overview.md +0 -1
  714. package/docs/sections/peer-dependencies/full.md +0 -47
  715. package/docs/sections/quick-start/full.md +0 -43
  716. package/docs/sections/response-caching/full.md +0 -117
  717. package/docs/sections/response-caching/overview.md +0 -13
  718. package/docs/sections/roles/full.md +0 -225
  719. package/docs/sections/roles/overview.md +0 -14
  720. package/docs/sections/running-without-redis/full.md +0 -16
  721. package/docs/sections/running-without-redis-or-mongodb/full.md +0 -60
  722. package/docs/sections/signing/full.md +0 -203
  723. package/docs/sections/stack/full.md +0 -10
  724. package/docs/sections/uploads/full.md +0 -208
  725. package/docs/sections/versioning/full.md +0 -85
  726. package/docs/sections/webhook-auth/full.md +0 -100
  727. package/docs/sections/websocket/full.md +0 -196
  728. package/docs/sections/websocket/overview.md +0 -5
  729. package/docs/sections/websocket-rooms/full.md +0 -102
  730. package/docs/sections/websocket-rooms/overview.md +0 -5
  731. /package/dist/{lib/storageAdapter.js → packages/bunshot-admin/src/types/env.js} +0 -0
  732. /package/dist/{lib → packages/bunshot-auth/src/lib}/fingerprint.d.ts +0 -0
  733. /package/dist/{lib → packages/bunshot-auth/src/lib}/logger.d.ts +0 -0
  734. /package/dist/{lib → packages/bunshot-core/src}/constants.d.ts +0 -0
  735. /package/dist/{lib → packages/bunshot-core/src}/storageAdapter.d.ts +0 -0
  736. /package/dist/{lib → src/framework/lib}/createDtoMapper.d.ts +0 -0
  737. /package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.d.ts +0 -0
  738. /package/dist/{middleware → src/framework/middleware}/cors.d.ts +0 -0
  739. /package/dist/{middleware → src/framework/middleware}/cors.js +0 -0
  740. /package/dist/{middleware → src/framework/middleware}/index.d.ts +0 -0
  741. /package/dist/{middleware → src/framework/middleware}/logger.js +0 -0
  742. /package/dist/{lib → src/shared/lib}/constants.js +0 -0
@@ -0,0 +1,127 @@
1
+ export function createSsmSecretRepository(opts) {
2
+ const { pathPrefix, region, withDecryption = true } = opts;
3
+ const cacheTtl = opts.cacheTtlMs ?? 300_000;
4
+ // Closure-owned state — no module globals
5
+ const cache = new Map();
6
+ let ssmClient = null;
7
+ async function requireSsm() {
8
+ try {
9
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval
10
+ return await new Function('specifier', 'return import(specifier)')('@aws-sdk/client-ssm');
11
+ }
12
+ catch {
13
+ throw new Error('SSM secret repository requires @aws-sdk/client-ssm to be installed');
14
+ }
15
+ }
16
+ async function getClient() {
17
+ if (ssmClient)
18
+ return ssmClient;
19
+ const { SSMClient } = await requireSsm();
20
+ ssmClient = new SSMClient({ region: region ?? process.env.AWS_REGION ?? 'us-east-1' });
21
+ return ssmClient;
22
+ }
23
+ function stripPrefix(name) {
24
+ return name.startsWith(pathPrefix) ? name.slice(pathPrefix.length) : name;
25
+ }
26
+ function getCached(key) {
27
+ const entry = cache.get(key);
28
+ if (!entry)
29
+ return null;
30
+ if (entry.expiresAt <= Date.now()) {
31
+ cache.delete(key);
32
+ return null;
33
+ }
34
+ return entry.value;
35
+ }
36
+ function setCache(key, value) {
37
+ cache.set(key, { value, expiresAt: Date.now() + cacheTtl });
38
+ }
39
+ return {
40
+ name: 'ssm',
41
+ async initialize() {
42
+ const client = await getClient();
43
+ const { GetParametersByPathCommand } = await requireSsm();
44
+ let nextToken;
45
+ do {
46
+ const cmd = new GetParametersByPathCommand({
47
+ Path: pathPrefix,
48
+ Recursive: true,
49
+ WithDecryption: withDecryption,
50
+ NextToken: nextToken,
51
+ });
52
+ const resp = await client.send(cmd);
53
+ for (const param of resp.Parameters ?? []) {
54
+ if (param.Name && param.Value) {
55
+ setCache(stripPrefix(param.Name), param.Value);
56
+ }
57
+ }
58
+ nextToken = resp.NextToken;
59
+ } while (nextToken);
60
+ },
61
+ async get(key) {
62
+ const cached = getCached(key);
63
+ if (cached !== null)
64
+ return cached;
65
+ const client = await getClient();
66
+ const { GetParameterCommand } = await requireSsm();
67
+ try {
68
+ const cmd = new GetParameterCommand({
69
+ Name: pathPrefix + key,
70
+ WithDecryption: withDecryption,
71
+ });
72
+ const resp = await client.send(cmd);
73
+ const value = resp.Parameter?.Value ?? null;
74
+ if (value !== null)
75
+ setCache(key, value);
76
+ return value;
77
+ }
78
+ catch (err) {
79
+ if (err.name === 'ParameterNotFound')
80
+ return null;
81
+ throw err;
82
+ }
83
+ },
84
+ async getMany(keys) {
85
+ const result = new Map();
86
+ const uncached = [];
87
+ for (const key of keys) {
88
+ const cached = getCached(key);
89
+ if (cached !== null) {
90
+ result.set(key, cached);
91
+ }
92
+ else {
93
+ uncached.push(key);
94
+ }
95
+ }
96
+ if (uncached.length > 0) {
97
+ const client = await getClient();
98
+ const { GetParametersCommand } = await requireSsm();
99
+ // GetParameters supports max 10 names per call
100
+ for (let i = 0; i < uncached.length; i += 10) {
101
+ const batch = uncached.slice(i, i + 10);
102
+ const cmd = new GetParametersCommand({
103
+ Names: batch.map(k => pathPrefix + k),
104
+ WithDecryption: withDecryption,
105
+ });
106
+ const resp = await client.send(cmd);
107
+ for (const param of resp.Parameters ?? []) {
108
+ if (param.Name && param.Value) {
109
+ const key = stripPrefix(param.Name);
110
+ setCache(key, param.Value);
111
+ result.set(key, param.Value);
112
+ }
113
+ }
114
+ }
115
+ }
116
+ return result;
117
+ },
118
+ async refresh() {
119
+ cache.clear();
120
+ await this.initialize?.();
121
+ },
122
+ async destroy() {
123
+ cache.clear();
124
+ ssmClient = null;
125
+ },
126
+ };
127
+ }
@@ -0,0 +1,53 @@
1
+ import type { ISecretRepository, ResolvedSecrets, SecretSchema, SecretStoreType } from '../../../packages/bunshot-core/src/index.js';
2
+ import { frameworkSecretSchema } from './frameworkSecretSchema';
3
+ /** Infrastructure options for secret store resolution — equivalent to StoreInfra */
4
+ export interface SecretStoreInfra {
5
+ readonly prefix?: string;
6
+ readonly pathPrefix?: string;
7
+ readonly region?: string;
8
+ readonly directory?: string;
9
+ readonly extension?: string;
10
+ readonly cacheTtlMs?: number;
11
+ readonly withDecryption?: boolean;
12
+ }
13
+ export type SecretRepoFactories<T> = Record<SecretStoreType, (infra: SecretStoreInfra) => T | Promise<T>>;
14
+ export declare function resolveSecretRepo<T>(factories: SecretRepoFactories<T>, storeType: SecretStoreType, infra: SecretStoreInfra): T | Promise<T>;
15
+ export interface EnvSecretStoreConfig {
16
+ provider: 'env';
17
+ prefix?: string;
18
+ schema?: SecretSchema;
19
+ }
20
+ export interface SsmSecretStoreConfig {
21
+ provider: 'ssm';
22
+ pathPrefix: string;
23
+ region?: string;
24
+ schema?: SecretSchema;
25
+ }
26
+ export interface FileSecretStoreConfig {
27
+ provider: 'file';
28
+ directory: string;
29
+ schema?: SecretSchema;
30
+ }
31
+ export interface RegisteredSecretRepository {
32
+ provider: ISecretRepository;
33
+ schema?: SecretSchema;
34
+ }
35
+ export type SecretStoreConfig = EnvSecretStoreConfig | SsmSecretStoreConfig | FileSecretStoreConfig;
36
+ export type SecretStoreInput = ISecretRepository | SecretStoreConfig | RegisteredSecretRepository | undefined;
37
+ type MergeSchemas<A extends SecretSchema, B extends SecretSchema | undefined> = B extends SecretSchema ? A & B : A;
38
+ type SecretRepoFactory<K extends SecretStoreType> = (config: Extract<SecretStoreConfig, {
39
+ provider: K;
40
+ }>) => Promise<ISecretRepository> | ISecretRepository;
41
+ export type SecretRepositoryFactories = {
42
+ [K in SecretStoreType]: SecretRepoFactory<K>;
43
+ };
44
+ export declare const secretRepositoryFactories: SecretRepositoryFactories;
45
+ export interface ResolvedSecretBundle<S extends SecretSchema | undefined = undefined> {
46
+ readonly provider: ISecretRepository;
47
+ readonly framework: ResolvedSecrets<typeof frameworkSecretSchema>;
48
+ readonly app: S extends SecretSchema ? ResolvedSecrets<S> : null;
49
+ readonly merged: ResolvedSecrets<MergeSchemas<typeof frameworkSecretSchema, S>>;
50
+ }
51
+ export declare function resolveSecretRepo_fromInput(input: SecretStoreInput): Promise<ISecretRepository>;
52
+ export declare function resolveSecretBundle<S extends SecretSchema | undefined = undefined>(input: SecretStoreInput): Promise<ResolvedSecretBundle<S>>;
53
+ export {};
@@ -0,0 +1,84 @@
1
+ import { frameworkSecretSchema } from './frameworkSecretSchema';
2
+ import { createEnvSecretRepository } from './providers/envProvider';
3
+ import { resolveSecrets } from './resolveSecrets';
4
+ export function resolveSecretRepo(factories, storeType, infra) {
5
+ const factory = factories[storeType];
6
+ if (!factory)
7
+ throw new Error(`[secrets] Unsupported store type: ${storeType}`);
8
+ return factory(infra);
9
+ }
10
+ export const secretRepositoryFactories = {
11
+ env: config => createEnvSecretRepository({ prefix: config.prefix }),
12
+ ssm: async (config) => {
13
+ const { createSsmSecretRepository } = await import('./providers/ssmProvider');
14
+ return createSsmSecretRepository({
15
+ pathPrefix: config.pathPrefix,
16
+ region: config.region,
17
+ });
18
+ },
19
+ file: async (config) => {
20
+ const { createFileSecretRepository } = await import('./providers/fileProvider');
21
+ return createFileSecretRepository({ directory: config.directory });
22
+ },
23
+ };
24
+ function isSecretRepository(value) {
25
+ if (!value || typeof value !== 'object')
26
+ return false;
27
+ return 'name' in value && 'get' in value && 'getMany' in value;
28
+ }
29
+ function isRegisteredSecretRepository(value) {
30
+ if (!value || typeof value !== 'object' || !('provider' in value))
31
+ return false;
32
+ const provider = value.provider;
33
+ return !!provider && isSecretRepository(provider);
34
+ }
35
+ function getAppSecretSchema(input) {
36
+ if (!input || isSecretRepository(input))
37
+ return undefined;
38
+ if (isRegisteredSecretRepository(input))
39
+ return input.schema;
40
+ return input.schema;
41
+ }
42
+ function mergeSecretSchemas(frameworkSchema, appSchema) {
43
+ if (!appSchema) {
44
+ return frameworkSchema;
45
+ }
46
+ return {
47
+ ...frameworkSchema,
48
+ ...appSchema,
49
+ };
50
+ }
51
+ function pickResolvedSecrets(resolved, schema) {
52
+ const picked = {};
53
+ for (const key of Object.keys(schema)) {
54
+ picked[key] = resolved[key];
55
+ }
56
+ return Object.freeze(picked);
57
+ }
58
+ export async function resolveSecretRepo_fromInput(input) {
59
+ if (!input)
60
+ return createEnvSecretRepository();
61
+ if (isSecretRepository(input))
62
+ return input;
63
+ if (isRegisteredSecretRepository(input))
64
+ return input.provider;
65
+ const factory = secretRepositoryFactories[input.provider];
66
+ if (!factory) {
67
+ throw new Error(`[secrets] Unsupported provider type: ${input.provider}`);
68
+ }
69
+ return await factory(input);
70
+ }
71
+ export async function resolveSecretBundle(input) {
72
+ const provider = await resolveSecretRepo_fromInput(input);
73
+ const appSchema = getAppSecretSchema(input);
74
+ const mergedSchema = mergeSecretSchemas(frameworkSecretSchema, appSchema);
75
+ const merged = await resolveSecrets(provider, mergedSchema);
76
+ return {
77
+ provider,
78
+ framework: pickResolvedSecrets(merged, frameworkSecretSchema),
79
+ app: (appSchema
80
+ ? pickResolvedSecrets(merged, appSchema)
81
+ : null),
82
+ merged,
83
+ };
84
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Secret resolution — validates a SecretSchema against an ISecretRepository
3
+ * and returns a frozen, typed object of resolved secret values.
4
+ *
5
+ * Called once at startup before database connections are established.
6
+ */
7
+ import type { ISecretRepository, ResolvedSecrets, SecretSchema } from '../../../packages/bunshot-core/src/index.js';
8
+ /**
9
+ * Resolve all secrets declared in a schema from the given repository.
10
+ *
11
+ * 1. Calls repository.initialize() if present (batch prefetch).
12
+ * 2. Batch-fetches all declared paths via repository.getMany().
13
+ * 3. Validates required secrets are present, applies defaults.
14
+ * 4. Returns a frozen object keyed by schema field names.
15
+ *
16
+ * Throws at startup if a required secret is missing — fail-fast, not at first use.
17
+ */
18
+ export declare function resolveSecrets<S extends SecretSchema>(repository: ISecretRepository, schema: S): Promise<ResolvedSecrets<S>>;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Resolve all secrets declared in a schema from the given repository.
3
+ *
4
+ * 1. Calls repository.initialize() if present (batch prefetch).
5
+ * 2. Batch-fetches all declared paths via repository.getMany().
6
+ * 3. Validates required secrets are present, applies defaults.
7
+ * 4. Returns a frozen object keyed by schema field names.
8
+ *
9
+ * Throws at startup if a required secret is missing — fail-fast, not at first use.
10
+ */
11
+ export async function resolveSecrets(repository, schema) {
12
+ await repository.initialize?.();
13
+ const paths = Object.values(schema).map(def => def.path);
14
+ const values = await repository.getMany(paths);
15
+ const result = {};
16
+ const missing = [];
17
+ for (const [name, def] of Object.entries(schema)) {
18
+ const value = values.get(def.path) ?? def.default;
19
+ const isRequired = def.required !== false;
20
+ if (value === undefined) {
21
+ if (isRequired) {
22
+ missing.push(`"${name}" (path: ${def.path})`);
23
+ }
24
+ result[name] = '';
25
+ }
26
+ else {
27
+ result[name] = value;
28
+ }
29
+ }
30
+ if (missing.length > 0) {
31
+ throw new Error(`[secrets] Missing required secrets: ${missing.join(', ')}`);
32
+ }
33
+ return Object.freeze(result);
34
+ }
@@ -0,0 +1,21 @@
1
+ import type { ClientSafeEventKey, SseClientData, SseFilter, UserResolver } from '../../../packages/bunshot-core/src/index.js';
2
+ export type { SseClientData, SseFilter };
3
+ export interface SseRegistry {
4
+ createClientStream<T extends object = object>(endpoint: string, client: SseClientData<T>, heartbeatMs: number | false): ReadableStream<Uint8Array>;
5
+ fanout(endpoint: string, key: ClientSafeEventKey, payload: unknown, filter: SseFilter<any> | undefined): void;
6
+ closeAll(): void;
7
+ }
8
+ export declare function createSseRegistry(): SseRegistry;
9
+ /**
10
+ * Default SSE upgrade handler. Mirrors createWsUpgradeHandler() — resolves userId
11
+ * from cookie/token, returns SseClientData<T>. Never rejects on auth failure;
12
+ * unauthenticated connections get userId: null.
13
+ *
14
+ * Custom upgrade handlers can call this to build on the default flow and add extra fields:
15
+ * const upgrade = createSseUpgradeHandler<{ tenantId: string }>(endpoint)
16
+ * return async (req) => ({ ...await upgrade(req), tenantId: resolveTenant(req) })
17
+ *
18
+ * To reject connections, return a Response directly from your own upgrade function
19
+ * without calling this helper, or wrap and gate on the result.
20
+ */
21
+ export declare function createSseUpgradeHandler<T extends object = object>(endpoint: string, userResolver?: UserResolver | null): (req: Request) => Promise<SseClientData<T>>;
@@ -0,0 +1,109 @@
1
+ import { resolveUserId } from '../lib/resolveUserId';
2
+ export function createSseRegistry() {
3
+ const map = new Map();
4
+ const enc = new TextEncoder();
5
+ function evict(entry) {
6
+ entry.closeHeartbeat();
7
+ const clients = map.get(entry.data.endpoint);
8
+ if (clients) {
9
+ clients.delete(entry.data.id);
10
+ if (!clients.size)
11
+ map.delete(entry.data.endpoint);
12
+ }
13
+ }
14
+ function enqueue(entry, chunk) {
15
+ try {
16
+ entry.controller.enqueue(enc.encode(chunk));
17
+ return true;
18
+ }
19
+ catch {
20
+ evict(entry);
21
+ return false;
22
+ }
23
+ }
24
+ return {
25
+ createClientStream(endpoint, client, heartbeatMs) {
26
+ return new ReadableStream({
27
+ start(controller) {
28
+ // Initial comment flushes intermediaries and makes smoke tests feel immediate
29
+ try {
30
+ controller.enqueue(enc.encode(': connected\n\n'));
31
+ }
32
+ catch { }
33
+ let heartbeatTimer;
34
+ const entry = {
35
+ data: client,
36
+ controller,
37
+ closeHeartbeat: () => clearInterval(heartbeatTimer),
38
+ };
39
+ if (heartbeatMs !== false) {
40
+ heartbeatTimer = setInterval(() => {
41
+ if (!enqueue(entry, ': keep-alive\n\n'))
42
+ clearInterval(heartbeatTimer);
43
+ }, heartbeatMs);
44
+ }
45
+ if (!map.has(endpoint))
46
+ map.set(endpoint, new Map());
47
+ map.get(endpoint).set(client.id, entry);
48
+ },
49
+ cancel() {
50
+ const entry = map.get(endpoint)?.get(client.id);
51
+ if (!entry)
52
+ return;
53
+ evict(entry);
54
+ },
55
+ });
56
+ },
57
+ fanout(endpoint, key, payload, filter) {
58
+ const clients = map.get(endpoint);
59
+ if (!clients?.size)
60
+ return;
61
+ const text = `event: ${key}\ndata: ${JSON.stringify(payload)}\n\n`;
62
+ for (const entry of clients.values()) {
63
+ if (filter) {
64
+ Promise.resolve(filter(entry.data, key, payload))
65
+ .then(allow => {
66
+ if (allow)
67
+ enqueue(entry, text);
68
+ })
69
+ .catch(err => {
70
+ console.error('[sse] filter error for client', entry.data.id, '(event dropped, not denied):', err);
71
+ });
72
+ }
73
+ else {
74
+ enqueue(entry, text);
75
+ }
76
+ }
77
+ },
78
+ closeAll() {
79
+ for (const clients of map.values()) {
80
+ for (const entry of clients.values()) {
81
+ entry.closeHeartbeat();
82
+ try {
83
+ entry.controller.close();
84
+ }
85
+ catch { }
86
+ }
87
+ }
88
+ map.clear();
89
+ },
90
+ };
91
+ }
92
+ /**
93
+ * Default SSE upgrade handler. Mirrors createWsUpgradeHandler() — resolves userId
94
+ * from cookie/token, returns SseClientData<T>. Never rejects on auth failure;
95
+ * unauthenticated connections get userId: null.
96
+ *
97
+ * Custom upgrade handlers can call this to build on the default flow and add extra fields:
98
+ * const upgrade = createSseUpgradeHandler<{ tenantId: string }>(endpoint)
99
+ * return async (req) => ({ ...await upgrade(req), tenantId: resolveTenant(req) })
100
+ *
101
+ * To reject connections, return a Response directly from your own upgrade function
102
+ * without calling this helper, or wrap and gate on the result.
103
+ */
104
+ export function createSseUpgradeHandler(endpoint, userResolver) {
105
+ return async (req) => {
106
+ const userId = await resolveUserId(req, userResolver ?? null);
107
+ return { id: crypto.randomUUID(), userId, endpoint };
108
+ };
109
+ }
@@ -0,0 +1,11 @@
1
+ import type { Server } from 'bun';
2
+ import type { UserResolver } from '../../../packages/bunshot-core/src/index.js';
3
+ export type SocketData<T extends object = object> = {
4
+ id: string;
5
+ userId: string | null;
6
+ rooms: Set<string>;
7
+ endpoint: string;
8
+ } & T;
9
+ type BaseSocketData = SocketData<object>;
10
+ export declare const createWsUpgradeHandler: (server: Server<BaseSocketData>, endpoint: string, userResolver?: UserResolver | null) => (req: Request) => Promise<Response | undefined>;
11
+ export {};
@@ -0,0 +1,8 @@
1
+ import { resolveUserId } from '../lib/resolveUserId';
2
+ export const createWsUpgradeHandler = (server, endpoint, userResolver) => async (req) => {
3
+ const userId = await resolveUserId(req, userResolver ?? null);
4
+ const upgraded = server.upgrade(req, {
5
+ data: { id: crypto.randomUUID(), userId, rooms: new Set(), endpoint },
6
+ });
7
+ return upgraded ? undefined : Response.json({ error: 'Upgrade failed' }, { status: 400 });
8
+ };
@@ -0,0 +1,87 @@
1
+ export { createApp } from './app';
2
+ export type { CreateAppResult } from './app';
3
+ export { createServer } from './server';
4
+ export type { BunshotContext, BunshotResolvedConfig, WsState, WsTransportHandle, ResolvedPersistence, } from '../packages/bunshot-core/src/index.js';
5
+ export type { UploadRegistryRepository, WsMessageRepository } from '../packages/bunshot-core/src/index.js';
6
+ export type { IdempotencyAdapter } from '../packages/bunshot-core/src/index.js';
7
+ export { getContext, getContextOrNull } from '../packages/bunshot-core/src/index.js';
8
+ export { getRedisFromApp } from './lib/redis';
9
+ export type { RedisCredentials } from './lib/redis';
10
+ export { getMongoFromApp, getMongooseModule } from './lib/mongo';
11
+ export type { MongoCredentials } from './lib/mongo';
12
+ export { createBunshotAdminPlugin } from './framework/admin/index';
13
+ export type { BunshotAdminPluginConfig } from './framework/admin/index';
14
+ export type { BunshotPlugin, StandalonePlugin, BunshotEventBus, BunshotEventMap, SecurityEventKey, } from '../packages/bunshot-core/src/index.js';
15
+ export { createInProcessAdapter, SECURITY_EVENT_TYPES } from '../packages/bunshot-core/src/index.js';
16
+ export { createAuthPlugin } from '../packages/bunshot-auth/src/index.js';
17
+ export type { AuthPluginConfig, AuthDbConfig, AuthSecurityConfig, } from '../packages/bunshot-auth/src/index.js';
18
+ export type { CreateAppConfig, ModelSchemasConfig, DbConfig, AppMeta, AuthConfig, AuthRateLimitConfig, AccountDeletionConfig, OAuthConfig, SecurityConfig, CsrfConfig, BotProtectionConfig, PrimaryField, EmailVerificationConfig, PasswordResetConfig, RefreshTokenConfig, MfaConfig, MfaEmailOtpConfig, MfaWebAuthnConfig, JobsConfig, TenancyConfig, TenantConfig, LoggingConfig, MetricsConfig, ValidationConfig, VersioningConfig, SigningConfig, JwtConfig, BreachedPasswordConfig, StepUpConfig, OidcConfig, SamlConfig, ScimConfig, MagicLinkConfig, } from './app';
19
+ export type { CreateServerConfig, WsConfig, SseConfig, SseEndpointConfig } from './server';
20
+ export type { SseClientData, SseFilter } from './framework/sse/index';
21
+ export { createSseUpgradeHandler } from './framework/sse/index';
22
+ export { HttpError, ValidationError } from '../packages/bunshot-core/src/index.js';
23
+ export { COOKIE_TOKEN, HEADER_USER_TOKEN, COOKIE_REFRESH_TOKEN, HEADER_REFRESH_TOKEN, COOKIE_CSRF_TOKEN, HEADER_CSRF_TOKEN, HEADER_REQUEST_ID, HEADER_IDEMPOTENCY_KEY, HEADER_SIGNATURE, HEADER_TIMESTAMP, } from '../packages/bunshot-core/src/index.js';
24
+ export { createRouter } from '../packages/bunshot-core/src/index.js';
25
+ export { createRoute, withSecurity, registerSchema, registerSchemas, } from './framework/lib/createRoute';
26
+ export { zodToMongoose } from './framework/lib/zodToMongoose';
27
+ export type { ZodToMongooseConfig, ZodToMongooseRefConfig } from './framework/lib/zodToMongoose';
28
+ export { createDtoMapper } from './framework/lib/createDtoMapper';
29
+ export type { DtoMapperConfig } from './framework/lib/createDtoMapper';
30
+ export type { AppEnv, AppVariables, ValidationErrorFormatter, DefaultValidationErrorBody, ValidationErrorDetail, } from '../packages/bunshot-core/src/index.js';
31
+ export { defaultValidationErrorFormatter } from '../packages/bunshot-core/src/index.js';
32
+ export { timingSafeEqual, sha256 } from '../packages/bunshot-core/src/index.js';
33
+ export { hmacSign, hmacVerify, signCookieValue, verifyCookieValue, signCursor, verifyCursor, createPresignedUrl, verifyPresignedUrl, } from './lib/signing';
34
+ export { log } from './framework/lib/logger';
35
+ export { validate } from './framework/lib/validate';
36
+ export { getClientIp } from '../packages/bunshot-core/src/index.js';
37
+ export { idempotent } from './framework/lib/idempotency';
38
+ export type { IdempotencyOptions } from './framework/lib/idempotency';
39
+ export { botProtection } from './framework/middleware/botProtection';
40
+ export type { BotProtectionOptions } from './framework/middleware/botProtection';
41
+ export { rateLimit } from './framework/middleware/rateLimit';
42
+ export type { RateLimitOptions } from './framework/middleware/rateLimit';
43
+ export { cacheResponse, bustCache, bustCachePattern } from './framework/middleware/cacheResponse';
44
+ export { webhookAuth } from './framework/middleware/webhookAuth';
45
+ export type { WebhookAuthOptions, WebhookTimestampOptions, } from './framework/middleware/webhookAuth';
46
+ export { requireSignedRequest } from './framework/middleware/requestSigning';
47
+ export type { RequestSigningOptions } from './framework/middleware/requestSigning';
48
+ export { auditLog } from './framework/middleware/auditLog';
49
+ export type { AuditLogMiddlewareOptions } from './framework/middleware/auditLog';
50
+ export { requestId } from './framework/middleware/requestId';
51
+ export { requestLogger } from './framework/middleware/requestLogger';
52
+ export type { RequestLogEntry, RequestLoggerOptions, LogLevel, } from './framework/middleware/requestLogger';
53
+ export { metricsCollector } from './framework/middleware/metrics';
54
+ export type { MetricsMiddlewareOptions } from './framework/middleware/metrics';
55
+ export { requireCaptcha } from './framework/middleware/captcha';
56
+ export type { CaptchaConfig, CaptchaProvider } from './framework/lib/captcha';
57
+ export { createAuditLogProvider } from './framework/lib/auditLog';
58
+ export { createMetricsState, incrementCounter, observeHistogram, registerGaugeCallback, serializeMetrics, closeMetricsQueues, } from './framework/lib/metrics';
59
+ export type { AuditLogEntry } from '../packages/bunshot-core/src/index.js';
60
+ export type { AuditLogOptions, AuditLogQuery } from './framework/lib/auditLog';
61
+ export { createWsUpgradeHandler } from './framework/ws/index';
62
+ export type { SocketData } from './framework/ws/index';
63
+ export { publish, getSubscriptions, getRooms, getRoomSubscribers } from './framework/lib/ws';
64
+ export type { WsTransportAdapter } from './framework/lib/wsTransport';
65
+ export { InMemoryTransport } from './framework/lib/wsTransport';
66
+ export { createRedisTransport } from './framework/lib/redisTransport';
67
+ export type { RedisTransportOptions } from './framework/lib/redisTransport';
68
+ export type { HeartbeatConfig } from './framework/lib/wsHeartbeat';
69
+ export { getRoomPresence, getUserPresence } from './framework/lib/wsPresence';
70
+ export { createTenantService } from './framework/lib/tenant';
71
+ export type { TenantInfo, CreateTenantOptions, TenantService } from './framework/lib/tenant';
72
+ export { invalidateTenantCache } from './framework/middleware/tenant';
73
+ export { offsetParams, parseOffsetParams, paginatedResponse, cursorParams, parseCursorParams, cursorResponse, maybeSignCursor, } from './framework/lib/pagination';
74
+ export type { OffsetParamDefaults, ParsedOffsetParams, CursorParamDefaults, ParsedCursorParams, CursorResult, } from './framework/lib/pagination';
75
+ export { handleUpload } from './framework/middleware/upload';
76
+ export type { UploadMiddlewareOptions } from './framework/middleware/upload';
77
+ export { parseUpload } from './framework/lib/upload';
78
+ export type { UploadOpts } from './framework/lib/upload';
79
+ export { registerUpload, getUploadRecord, deleteUploadRecord, } from './framework/lib/uploadRegistry';
80
+ export type { UploadRecord } from './framework/lib/uploadRegistry';
81
+ export type { StorageAdapter, UploadResult } from './framework/lib/storageAdapter';
82
+ export type { UploadConfig, PresignedUrlConfig } from './app';
83
+ export { memoryStorage } from './framework/adapters/memoryStorage';
84
+ export { localStorage } from './framework/adapters/localStorage';
85
+ export type { LocalStorageConfig } from './framework/adapters/localStorage';
86
+ export { s3Storage } from './framework/adapters/s3Storage';
87
+ export type { S3StorageConfig } from './framework/adapters/s3Storage';
@@ -0,0 +1,58 @@
1
+ // App factory
2
+ export { createApp } from './app';
3
+ export { createServer } from './server';
4
+ export { getContext, getContextOrNull } from '../packages/bunshot-core/src/index.js';
5
+ export { getRedisFromApp } from './lib/redis';
6
+ export { getMongoFromApp, getMongooseModule } from './lib/mongo';
7
+ // Admin — framework convenience wrapper (bunshot-auth-backed defaults)
8
+ export { createBunshotAdminPlugin } from './framework/admin/index';
9
+ export { createInProcessAdapter, SECURITY_EVENT_TYPES } from '../packages/bunshot-core/src/index.js';
10
+ export { createAuthPlugin } from '../packages/bunshot-auth/src/index.js';
11
+ export { createSseUpgradeHandler } from './framework/sse/index';
12
+ // Core utilities
13
+ export { HttpError, ValidationError } from '../packages/bunshot-core/src/index.js';
14
+ export { COOKIE_TOKEN, HEADER_USER_TOKEN, COOKIE_REFRESH_TOKEN, HEADER_REFRESH_TOKEN, COOKIE_CSRF_TOKEN, HEADER_CSRF_TOKEN, HEADER_REQUEST_ID, HEADER_IDEMPOTENCY_KEY, HEADER_SIGNATURE, HEADER_TIMESTAMP, } from '../packages/bunshot-core/src/index.js';
15
+ export { createRouter } from '../packages/bunshot-core/src/index.js';
16
+ export { createRoute, withSecurity, registerSchema, registerSchemas, } from './framework/lib/createRoute';
17
+ export { zodToMongoose } from './framework/lib/zodToMongoose';
18
+ export { createDtoMapper } from './framework/lib/createDtoMapper';
19
+ export { defaultValidationErrorFormatter } from '../packages/bunshot-core/src/index.js';
20
+ export { timingSafeEqual, sha256 } from '../packages/bunshot-core/src/index.js';
21
+ export { hmacSign, hmacVerify, signCookieValue, verifyCookieValue, signCursor, verifyCursor, createPresignedUrl, verifyPresignedUrl, } from './lib/signing';
22
+ export { log } from './framework/lib/logger';
23
+ export { validate } from './framework/lib/validate';
24
+ export { getClientIp } from '../packages/bunshot-core/src/index.js';
25
+ // Framework middleware
26
+ export { idempotent } from './framework/lib/idempotency';
27
+ export { botProtection } from './framework/middleware/botProtection';
28
+ export { rateLimit } from './framework/middleware/rateLimit';
29
+ export { cacheResponse, bustCache, bustCachePattern } from './framework/middleware/cacheResponse';
30
+ export { webhookAuth } from './framework/middleware/webhookAuth';
31
+ export { requireSignedRequest } from './framework/middleware/requestSigning';
32
+ export { auditLog } from './framework/middleware/auditLog';
33
+ export { requestId } from './framework/middleware/requestId';
34
+ export { requestLogger } from './framework/middleware/requestLogger';
35
+ export { metricsCollector } from './framework/middleware/metrics';
36
+ export { requireCaptcha } from './framework/middleware/captcha';
37
+ // Audit log
38
+ export { createAuditLogProvider } from './framework/lib/auditLog';
39
+ export { createMetricsState, incrementCounter, observeHistogram, registerGaugeCallback, serializeMetrics, closeMetricsQueues, } from './framework/lib/metrics';
40
+ // WebSocket — consumer API
41
+ export { createWsUpgradeHandler } from './framework/ws/index';
42
+ export { publish, getSubscriptions, getRooms, getRoomSubscribers } from './framework/lib/ws';
43
+ export { InMemoryTransport } from './framework/lib/wsTransport';
44
+ export { createRedisTransport } from './framework/lib/redisTransport';
45
+ // WebSocket — Presence (consumer API)
46
+ export { getRoomPresence, getUserPresence } from './framework/lib/wsPresence';
47
+ // Tenancy
48
+ export { createTenantService } from './framework/lib/tenant';
49
+ export { invalidateTenantCache } from './framework/middleware/tenant';
50
+ // Pagination helpers
51
+ export { offsetParams, parseOffsetParams, paginatedResponse, cursorParams, parseCursorParams, cursorResponse, maybeSignCursor, } from './framework/lib/pagination';
52
+ // Upload — consumer API
53
+ export { handleUpload } from './framework/middleware/upload';
54
+ export { parseUpload } from './framework/lib/upload';
55
+ export { registerUpload, getUploadRecord, deleteUploadRecord, } from './framework/lib/uploadRegistry';
56
+ export { memoryStorage } from './framework/adapters/memoryStorage';
57
+ export { localStorage } from './framework/adapters/localStorage';
58
+ export { s3Storage } from './framework/adapters/s3Storage';
@@ -0,0 +1,7 @@
1
+ /** Deep-freeze an object and all nested objects. */
2
+ export declare function deepFreeze<T extends object>(obj: T): Readonly<T>;
3
+ /**
4
+ * Context-aware app name getter. Returns the instance-scoped app name from
5
+ * BunshotContext. Throws if no BunshotContext is attached to the app.
6
+ */
7
+ export declare const getAppNameFromApp: (app: object) => string;
@@ -0,0 +1,27 @@
1
+ // Framework-only runtime configuration — context-aware access only.
2
+ // Auth-specific config (primary field, MFA, sessions, JWT, etc.) lives in authConfig.ts.
3
+ //
4
+ // Phase 1 singleton elimination: all module-level mutable state removed.
5
+ // App name, roles, and default role are available on BunshotContext.config.
6
+ import { getContext } from '../../packages/bunshot-core/src/index.js';
7
+ /** Deep-freeze an object and all nested objects. */
8
+ export function deepFreeze(obj) {
9
+ Object.freeze(obj);
10
+ for (const value of Object.values(obj)) {
11
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
12
+ deepFreeze(value);
13
+ }
14
+ }
15
+ return obj;
16
+ }
17
+ // ---------------------------------------------------------------------------
18
+ // Context-aware getters
19
+ // ---------------------------------------------------------------------------
20
+ /**
21
+ * Context-aware app name getter. Returns the instance-scoped app name from
22
+ * BunshotContext. Throws if no BunshotContext is attached to the app.
23
+ */
24
+ export const getAppNameFromApp = (app) => {
25
+ const ctx = getContext(app);
26
+ return ctx.config.appName;
27
+ };