@lastshotlabs/bunshot 0.0.25 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (725) hide show
  1. package/.oclif.manifest.json +39 -0
  2. package/README.md +8282 -2147
  3. package/dist/cli/commands/init.js +690 -0
  4. package/dist/cli/index.js +6 -0
  5. package/dist/cli.js +4 -4
  6. package/dist/packages/bunshot-admin/src/index.d.ts +15 -0
  7. package/dist/packages/bunshot-admin/src/index.js +11 -0
  8. package/dist/packages/bunshot-admin/src/lib/resourceTypes.d.ts +8 -0
  9. package/dist/packages/bunshot-admin/src/lib/resourceTypes.js +33 -0
  10. package/dist/packages/bunshot-admin/src/lib/typedRoute.d.ts +14 -0
  11. package/dist/packages/bunshot-admin/src/lib/typedRoute.js +17 -0
  12. package/dist/packages/bunshot-admin/src/plugin.d.ts +4 -0
  13. package/dist/packages/bunshot-admin/src/plugin.js +46 -0
  14. package/dist/packages/bunshot-admin/src/providers/auth0Access.d.ts +6 -0
  15. package/dist/packages/bunshot-admin/src/providers/auth0Access.js +32 -0
  16. package/dist/packages/bunshot-admin/src/routes/admin.d.ts +10 -0
  17. package/dist/packages/bunshot-admin/src/routes/admin.js +923 -0
  18. package/dist/packages/bunshot-admin/src/routes/mail.d.ts +6 -0
  19. package/dist/packages/bunshot-admin/src/routes/mail.js +114 -0
  20. package/dist/packages/bunshot-admin/src/routes/permissions.d.ts +8 -0
  21. package/dist/packages/bunshot-admin/src/routes/permissions.js +315 -0
  22. package/dist/packages/bunshot-admin/src/types/config.d.ts +16 -0
  23. package/dist/packages/bunshot-admin/src/types/config.js +37 -0
  24. package/dist/packages/bunshot-admin/src/types/env.d.ts +14 -0
  25. package/dist/packages/bunshot-admin/src/types/provider.d.ts +1 -0
  26. package/dist/packages/bunshot-admin/src/types/provider.js +4 -0
  27. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.d.ts +66 -0
  28. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.js +1063 -0
  29. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.d.ts +2 -0
  30. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.js +536 -0
  31. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.d.ts +88 -0
  32. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.js +1366 -0
  33. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.d.ts +2 -0
  34. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.js +23 -0
  35. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.d.ts +5 -0
  36. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.js +131 -0
  37. package/dist/packages/bunshot-auth/src/bootstrap.d.ts +38 -0
  38. package/dist/packages/bunshot-auth/src/bootstrap.js +384 -0
  39. package/dist/packages/bunshot-auth/src/config/appConfig.d.ts +3 -0
  40. package/dist/packages/bunshot-auth/src/config/appConfig.js +4 -0
  41. package/dist/packages/bunshot-auth/src/config/authConfig.d.ts +478 -0
  42. package/dist/packages/bunshot-auth/src/config/authConfig.js +46 -0
  43. package/dist/packages/bunshot-auth/src/config/configLock.d.ts +2 -0
  44. package/dist/packages/bunshot-auth/src/config/configLock.js +10 -0
  45. package/dist/packages/bunshot-auth/src/index.d.ts +25 -0
  46. package/dist/packages/bunshot-auth/src/index.js +23 -0
  47. package/dist/packages/bunshot-auth/src/infra/mongo.d.ts +15 -0
  48. package/dist/packages/bunshot-auth/src/infra/mongo.js +44 -0
  49. package/dist/packages/bunshot-auth/src/infra/queue.d.ts +14 -0
  50. package/dist/packages/bunshot-auth/src/infra/queue.js +27 -0
  51. package/dist/packages/bunshot-auth/src/infra/redis.d.ts +5 -0
  52. package/dist/packages/bunshot-auth/src/infra/redis.js +15 -0
  53. package/dist/packages/bunshot-auth/src/infra/signing.d.ts +7 -0
  54. package/dist/packages/bunshot-auth/src/infra/signing.js +8 -0
  55. package/dist/packages/bunshot-auth/src/lib/accountLockout.d.ts +34 -0
  56. package/dist/packages/bunshot-auth/src/lib/accountLockout.js +244 -0
  57. package/dist/packages/bunshot-auth/src/lib/adapterTiers.d.ts +1 -0
  58. package/dist/packages/bunshot-auth/src/lib/adapterTiers.js +1 -0
  59. package/dist/packages/bunshot-auth/src/lib/authAdapter.d.ts +1 -0
  60. package/dist/packages/bunshot-auth/src/lib/authAdapter.js +1 -0
  61. package/dist/packages/bunshot-auth/src/lib/authContext.d.ts +15 -0
  62. package/dist/packages/bunshot-auth/src/lib/authContext.js +1 -0
  63. package/dist/packages/bunshot-auth/src/lib/authEventBus.d.ts +4 -0
  64. package/dist/packages/bunshot-auth/src/lib/authEventBus.js +15 -0
  65. package/dist/packages/bunshot-auth/src/lib/authRateLimit.d.ts +28 -0
  66. package/dist/packages/bunshot-auth/src/lib/authRateLimit.js +205 -0
  67. package/dist/packages/bunshot-auth/src/lib/breachedPassword.d.ts +19 -0
  68. package/dist/packages/bunshot-auth/src/lib/breachedPassword.js +61 -0
  69. package/dist/packages/bunshot-auth/src/lib/cache.d.ts +12 -0
  70. package/dist/packages/bunshot-auth/src/lib/cache.js +120 -0
  71. package/dist/packages/bunshot-auth/src/lib/clientIp.d.ts +4 -0
  72. package/dist/{lib → packages/bunshot-auth/src/lib}/clientIp.js +14 -7
  73. package/dist/packages/bunshot-auth/src/lib/cookieOptions.d.ts +27 -0
  74. package/dist/packages/bunshot-auth/src/lib/cookieOptions.js +33 -0
  75. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.d.ts +40 -0
  76. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.js +221 -0
  77. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.d.ts +19 -0
  78. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.js +148 -0
  79. package/dist/packages/bunshot-auth/src/lib/emailTemplates.d.ts +23 -0
  80. package/dist/packages/bunshot-auth/src/lib/emailTemplates.js +265 -0
  81. package/dist/packages/bunshot-auth/src/lib/emailVerification.d.ts +30 -0
  82. package/dist/packages/bunshot-auth/src/lib/emailVerification.js +200 -0
  83. package/dist/packages/bunshot-auth/src/lib/env.d.ts +1 -0
  84. package/dist/packages/bunshot-auth/src/lib/env.js +3 -0
  85. package/dist/packages/bunshot-auth/src/lib/fingerprint.js +36 -0
  86. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.d.ts +15 -16
  87. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.js +22 -34
  88. package/dist/packages/bunshot-auth/src/lib/jwks.d.ts +28 -0
  89. package/dist/packages/bunshot-auth/src/lib/jwks.js +79 -0
  90. package/dist/packages/bunshot-auth/src/lib/jwt.d.ts +12 -0
  91. package/dist/packages/bunshot-auth/src/lib/jwt.js +86 -0
  92. package/dist/packages/bunshot-auth/src/lib/logger.d.ts +3 -0
  93. package/dist/packages/bunshot-auth/src/lib/logger.js +13 -0
  94. package/dist/packages/bunshot-auth/src/lib/m2m.d.ts +30 -0
  95. package/dist/packages/bunshot-auth/src/lib/m2m.js +44 -0
  96. package/dist/packages/bunshot-auth/src/lib/magicLink.d.ts +13 -0
  97. package/dist/packages/bunshot-auth/src/lib/magicLink.js +145 -0
  98. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.d.ts +60 -0
  99. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.js +419 -0
  100. package/dist/packages/bunshot-auth/src/lib/oauth.d.ts +82 -0
  101. package/dist/packages/bunshot-auth/src/lib/oauth.js +177 -0
  102. package/dist/packages/bunshot-auth/src/lib/oauthCode.d.ts +19 -0
  103. package/dist/packages/bunshot-auth/src/lib/oauthCode.js +182 -0
  104. package/dist/packages/bunshot-auth/src/lib/oauthReauth.d.ts +19 -0
  105. package/dist/packages/bunshot-auth/src/lib/oauthReauth.js +255 -0
  106. package/dist/packages/bunshot-auth/src/lib/organization.d.ts +66 -0
  107. package/dist/packages/bunshot-auth/src/lib/organization.js +225 -0
  108. package/dist/packages/bunshot-auth/src/lib/passwordHistory.d.ts +12 -0
  109. package/dist/packages/bunshot-auth/src/lib/passwordHistory.js +31 -0
  110. package/dist/packages/bunshot-auth/src/lib/resetPassword.d.ts +20 -0
  111. package/dist/packages/bunshot-auth/src/lib/resetPassword.js +148 -0
  112. package/dist/packages/bunshot-auth/src/lib/roles.d.ts +9 -0
  113. package/dist/packages/bunshot-auth/src/lib/roles.js +93 -0
  114. package/dist/packages/bunshot-auth/src/lib/saml.d.ts +29 -0
  115. package/dist/packages/bunshot-auth/src/lib/saml.js +73 -0
  116. package/dist/packages/bunshot-auth/src/lib/samlRequestId.d.ts +13 -0
  117. package/dist/packages/bunshot-auth/src/lib/samlRequestId.js +129 -0
  118. package/dist/packages/bunshot-auth/src/lib/scim.d.ts +44 -0
  119. package/dist/packages/bunshot-auth/src/lib/scim.js +56 -0
  120. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.d.ts +22 -0
  121. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.js +65 -0
  122. package/dist/packages/bunshot-auth/src/lib/session.d.ts +45 -0
  123. package/dist/packages/bunshot-auth/src/lib/session.js +1211 -0
  124. package/dist/packages/bunshot-auth/src/lib/storeInfra.d.ts +26 -0
  125. package/dist/packages/bunshot-auth/src/lib/storeInfra.js +18 -0
  126. package/dist/packages/bunshot-auth/src/lib/suspension.d.ts +14 -0
  127. package/dist/packages/bunshot-auth/src/lib/suspension.js +20 -0
  128. package/dist/packages/bunshot-auth/src/lib/validateAdapter.d.ts +16 -0
  129. package/dist/packages/bunshot-auth/src/lib/validateAdapter.js +161 -0
  130. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.d.ts +13 -0
  131. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.js +58 -0
  132. package/dist/{middleware → packages/bunshot-auth/src/middleware}/csrf.d.ts +5 -4
  133. package/dist/packages/bunshot-auth/src/middleware/csrf.js +138 -0
  134. package/dist/packages/bunshot-auth/src/middleware/identify.d.ts +4 -0
  135. package/dist/packages/bunshot-auth/src/middleware/identify.js +124 -0
  136. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.d.ts +2 -2
  137. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.js +10 -7
  138. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.d.ts +2 -2
  139. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.js +20 -16
  140. package/dist/packages/bunshot-auth/src/middleware/requireScope.d.ts +10 -0
  141. package/dist/packages/bunshot-auth/src/middleware/requireScope.js +25 -0
  142. package/dist/packages/bunshot-auth/src/middleware/requireStepUp.d.ts +18 -0
  143. package/dist/packages/bunshot-auth/src/middleware/requireStepUp.js +30 -0
  144. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.d.ts +2 -2
  145. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.js +7 -6
  146. package/dist/packages/bunshot-auth/src/middleware/scimAuth.d.ts +8 -0
  147. package/dist/packages/bunshot-auth/src/middleware/scimAuth.js +29 -0
  148. package/dist/packages/bunshot-auth/src/middleware/userAuth.d.ts +3 -0
  149. package/dist/packages/bunshot-auth/src/middleware/userAuth.js +6 -0
  150. package/dist/{models → packages/bunshot-auth/src/models}/AuthUser.d.ts +19 -8
  151. package/dist/packages/bunshot-auth/src/models/AuthUser.js +53 -0
  152. package/dist/packages/bunshot-auth/src/models/Group.d.ts +19 -0
  153. package/dist/packages/bunshot-auth/src/models/Group.js +22 -0
  154. package/dist/{models → packages/bunshot-auth/src/models}/GroupMembership.d.ts +6 -8
  155. package/dist/packages/bunshot-auth/src/models/GroupMembership.js +19 -0
  156. package/dist/packages/bunshot-auth/src/models/M2MClient.d.ts +18 -0
  157. package/dist/packages/bunshot-auth/src/models/M2MClient.js +18 -0
  158. package/dist/packages/bunshot-auth/src/models/TenantRole.d.ts +13 -0
  159. package/dist/packages/bunshot-auth/src/models/TenantRole.js +17 -0
  160. package/dist/packages/bunshot-auth/src/plugin.d.ts +4 -0
  161. package/dist/packages/bunshot-auth/src/plugin.js +274 -0
  162. package/dist/packages/bunshot-auth/src/routes/auth.d.ts +15 -0
  163. package/dist/packages/bunshot-auth/src/routes/auth.js +1624 -0
  164. package/dist/packages/bunshot-auth/src/routes/groups.d.ts +4 -0
  165. package/dist/packages/bunshot-auth/src/routes/groups.js +481 -0
  166. package/dist/packages/bunshot-auth/src/routes/m2m.d.ts +2 -0
  167. package/dist/packages/bunshot-auth/src/routes/m2m.js +145 -0
  168. package/dist/packages/bunshot-auth/src/routes/mfa.d.ts +6 -0
  169. package/dist/packages/bunshot-auth/src/routes/mfa.js +991 -0
  170. package/dist/packages/bunshot-auth/src/routes/oauth.d.ts +3 -0
  171. package/dist/packages/bunshot-auth/src/routes/oauth.js +1727 -0
  172. package/dist/packages/bunshot-auth/src/routes/oidc.d.ts +2 -0
  173. package/dist/packages/bunshot-auth/src/routes/oidc.js +84 -0
  174. package/dist/packages/bunshot-auth/src/routes/organizations.d.ts +3 -0
  175. package/dist/packages/bunshot-auth/src/routes/organizations.js +741 -0
  176. package/dist/packages/bunshot-auth/src/routes/passkey.d.ts +2 -0
  177. package/dist/packages/bunshot-auth/src/routes/passkey.js +199 -0
  178. package/dist/packages/bunshot-auth/src/routes/saml.d.ts +2 -0
  179. package/dist/packages/bunshot-auth/src/routes/saml.js +226 -0
  180. package/dist/packages/bunshot-auth/src/routes/scim.d.ts +3 -0
  181. package/dist/packages/bunshot-auth/src/routes/scim.js +588 -0
  182. package/dist/packages/bunshot-auth/src/runtime.d.ts +52 -0
  183. package/dist/packages/bunshot-auth/src/runtime.js +11 -0
  184. package/dist/{schemas → packages/bunshot-auth/src/schemas}/auth.d.ts +4 -5
  185. package/dist/packages/bunshot-auth/src/schemas/auth.js +24 -0
  186. package/dist/packages/bunshot-auth/src/schemas/error.d.ts +10 -0
  187. package/dist/packages/bunshot-auth/src/schemas/error.js +10 -0
  188. package/dist/packages/bunshot-auth/src/schemas/success.d.ts +10 -0
  189. package/dist/packages/bunshot-auth/src/schemas/success.js +10 -0
  190. package/dist/packages/bunshot-auth/src/services/auth.d.ts +39 -0
  191. package/dist/packages/bunshot-auth/src/services/auth.js +378 -0
  192. package/dist/{services → packages/bunshot-auth/src/services}/mfa.d.ts +41 -17
  193. package/dist/{services → packages/bunshot-auth/src/services}/mfa.js +259 -183
  194. package/dist/packages/bunshot-auth/src/testing.d.ts +31 -0
  195. package/dist/packages/bunshot-auth/src/testing.js +23 -0
  196. package/dist/packages/bunshot-auth/src/types/adapter.d.ts +1 -0
  197. package/dist/packages/bunshot-auth/src/types/adapter.js +1 -0
  198. package/dist/packages/bunshot-auth/src/types/config.d.ts +152 -0
  199. package/dist/packages/bunshot-auth/src/types/config.js +179 -0
  200. package/dist/{routes → packages/bunshot-auth/src/types}/groups.d.ts +2 -3
  201. package/dist/packages/bunshot-auth/src/types/groups.js +1 -0
  202. package/dist/packages/bunshot-auth/src/types/oauthCode.d.ts +6 -0
  203. package/dist/packages/bunshot-auth/src/types/oauthCode.js +1 -0
  204. package/dist/packages/bunshot-auth/src/types/oauthReauth.d.ts +13 -0
  205. package/dist/packages/bunshot-auth/src/types/oauthReauth.js +1 -0
  206. package/dist/packages/bunshot-auth/src/types/redis.d.ts +1 -0
  207. package/dist/packages/bunshot-auth/src/types/redis.js +1 -0
  208. package/dist/packages/bunshot-auth/src/types/saml.d.ts +10 -0
  209. package/dist/packages/bunshot-auth/src/types/saml.js +1 -0
  210. package/dist/packages/bunshot-auth/src/types/session.d.ts +18 -0
  211. package/dist/packages/bunshot-auth/src/types/session.js +1 -0
  212. package/dist/packages/bunshot-auth/src/types/store.d.ts +1 -0
  213. package/dist/packages/bunshot-auth/src/types/store.js +1 -0
  214. package/dist/packages/bunshot-core/src/adminProvider.d.ts +95 -0
  215. package/dist/packages/bunshot-core/src/adminProvider.js +1 -0
  216. package/dist/packages/bunshot-core/src/auditLog.d.ts +34 -0
  217. package/dist/packages/bunshot-core/src/auditLog.js +1 -0
  218. package/dist/packages/bunshot-core/src/auth-adapter.d.ts +227 -0
  219. package/dist/packages/bunshot-core/src/auth-adapter.js +4 -0
  220. package/dist/packages/bunshot-core/src/authVariables.d.ts +14 -0
  221. package/dist/packages/bunshot-core/src/authVariables.js +4 -0
  222. package/dist/packages/bunshot-core/src/cache.d.ts +12 -0
  223. package/dist/packages/bunshot-core/src/cache.js +21 -0
  224. package/dist/packages/bunshot-core/src/captcha.d.ts +16 -0
  225. package/dist/packages/bunshot-core/src/captcha.js +1 -0
  226. package/dist/packages/bunshot-core/src/clearRegistry.d.ts +6 -0
  227. package/dist/packages/bunshot-core/src/clearRegistry.js +17 -0
  228. package/dist/packages/bunshot-core/src/clientIp.d.ts +3 -0
  229. package/dist/packages/bunshot-core/src/clientIp.js +45 -0
  230. package/dist/packages/bunshot-core/src/configLock.d.ts +4 -0
  231. package/dist/packages/bunshot-core/src/configLock.js +7 -0
  232. package/dist/packages/bunshot-core/src/configValidation.d.ts +22 -0
  233. package/dist/packages/bunshot-core/src/configValidation.js +39 -0
  234. package/dist/packages/bunshot-core/src/constants.js +10 -0
  235. package/dist/packages/bunshot-core/src/context/bunshotContext.d.ts +232 -0
  236. package/dist/packages/bunshot-core/src/context/bunshotContext.js +1 -0
  237. package/dist/packages/bunshot-core/src/context/contextAccess.d.ts +3 -0
  238. package/dist/packages/bunshot-core/src/context/contextAccess.js +16 -0
  239. package/dist/packages/bunshot-core/src/context/contextStore.d.ts +16 -0
  240. package/dist/packages/bunshot-core/src/context/contextStore.js +31 -0
  241. package/dist/packages/bunshot-core/src/context/frameworkConfig.d.ts +38 -0
  242. package/dist/packages/bunshot-core/src/context/frameworkConfig.js +1 -0
  243. package/dist/packages/bunshot-core/src/context/index.d.ts +4 -0
  244. package/dist/packages/bunshot-core/src/context/index.js +2 -0
  245. package/dist/packages/bunshot-core/src/context.d.ts +40 -0
  246. package/dist/packages/bunshot-core/src/context.js +35 -0
  247. package/dist/packages/bunshot-core/src/coreContracts.d.ts +47 -0
  248. package/dist/packages/bunshot-core/src/coreContracts.js +1 -0
  249. package/dist/packages/bunshot-core/src/coreRegistrar.d.ts +6 -0
  250. package/dist/packages/bunshot-core/src/coreRegistrar.js +42 -0
  251. package/dist/{lib → packages/bunshot-core/src}/createRoute.d.ts +4 -30
  252. package/dist/{lib → packages/bunshot-core/src}/createRoute.js +39 -88
  253. package/dist/packages/bunshot-core/src/cronRegistry.d.ts +11 -0
  254. package/dist/packages/bunshot-core/src/cronRegistry.js +1 -0
  255. package/dist/packages/bunshot-core/src/crypto.d.ts +43 -0
  256. package/dist/packages/bunshot-core/src/crypto.js +74 -0
  257. package/dist/packages/bunshot-core/src/csrf.d.ts +8 -0
  258. package/dist/packages/bunshot-core/src/csrf.js +1 -0
  259. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.d.ts +7 -0
  260. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.js +19 -0
  261. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.d.ts +6 -0
  262. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.js +40 -0
  263. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.d.ts +6 -0
  264. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.js +24 -0
  265. package/dist/packages/bunshot-core/src/emailTemplates.d.ts +5 -0
  266. package/dist/packages/bunshot-core/src/emailTemplates.js +10 -0
  267. package/dist/packages/bunshot-core/src/errors.d.ts +13 -0
  268. package/dist/packages/bunshot-core/src/errors.js +22 -0
  269. package/dist/packages/bunshot-core/src/eventBus.d.ts +270 -0
  270. package/dist/packages/bunshot-core/src/eventBus.js +143 -0
  271. package/dist/packages/bunshot-core/src/idempotency.d.ts +18 -0
  272. package/dist/packages/bunshot-core/src/idempotency.js +1 -0
  273. package/dist/packages/bunshot-core/src/index.d.ts +60 -0
  274. package/dist/packages/bunshot-core/src/index.js +34 -0
  275. package/dist/packages/bunshot-core/src/mail.d.ts +14 -0
  276. package/dist/packages/bunshot-core/src/mail.js +8 -0
  277. package/dist/packages/bunshot-core/src/memoryEviction.d.ts +24 -0
  278. package/dist/packages/bunshot-core/src/memoryEviction.js +52 -0
  279. package/dist/packages/bunshot-core/src/pagination.d.ts +45 -0
  280. package/dist/packages/bunshot-core/src/pagination.js +61 -0
  281. package/dist/packages/bunshot-core/src/permissions.d.ts +64 -0
  282. package/dist/packages/bunshot-core/src/permissions.js +27 -0
  283. package/dist/packages/bunshot-core/src/plugin.d.ts +44 -0
  284. package/dist/packages/bunshot-core/src/plugin.js +1 -0
  285. package/dist/packages/bunshot-core/src/rateLimit.d.ts +5 -0
  286. package/dist/packages/bunshot-core/src/rateLimit.js +18 -0
  287. package/dist/packages/bunshot-core/src/redis.d.ts +21 -0
  288. package/dist/packages/bunshot-core/src/redis.js +1 -0
  289. package/dist/packages/bunshot-core/src/routeAuth.d.ts +5 -0
  290. package/dist/packages/bunshot-core/src/routeAuth.js +11 -0
  291. package/dist/packages/bunshot-core/src/routeOverrides.d.ts +24 -0
  292. package/dist/packages/bunshot-core/src/routeOverrides.js +25 -0
  293. package/dist/packages/bunshot-core/src/routerAdapter.d.ts +6 -0
  294. package/dist/packages/bunshot-core/src/routerAdapter.js +56 -0
  295. package/dist/packages/bunshot-core/src/secrets.d.ts +48 -0
  296. package/dist/packages/bunshot-core/src/secrets.js +8 -0
  297. package/dist/packages/bunshot-core/src/signing.d.ts +41 -0
  298. package/dist/packages/bunshot-core/src/signing.js +1 -0
  299. package/dist/packages/bunshot-core/src/sse.d.ts +36 -0
  300. package/dist/packages/bunshot-core/src/sse.js +1 -0
  301. package/dist/packages/bunshot-core/src/storageAdapter.js +1 -0
  302. package/dist/packages/bunshot-core/src/storeInfra.d.ts +44 -0
  303. package/dist/packages/bunshot-core/src/storeInfra.js +18 -0
  304. package/dist/packages/bunshot-core/src/storeType.d.ts +7 -0
  305. package/dist/packages/bunshot-core/src/storeType.js +1 -0
  306. package/dist/packages/bunshot-core/src/testing.d.ts +1 -0
  307. package/dist/packages/bunshot-core/src/testing.js +1 -0
  308. package/dist/packages/bunshot-core/src/uploadRegistry.d.ts +23 -0
  309. package/dist/packages/bunshot-core/src/uploadRegistry.js +4 -0
  310. package/dist/packages/bunshot-core/src/userResolver.d.ts +5 -0
  311. package/dist/packages/bunshot-core/src/userResolver.js +14 -0
  312. package/dist/packages/bunshot-core/src/wsMessages.d.ts +42 -0
  313. package/dist/packages/bunshot-core/src/wsMessages.js +4 -0
  314. package/dist/packages/bunshot-permissions/src/adapters/memory.d.ts +7 -0
  315. package/dist/packages/bunshot-permissions/src/adapters/memory.js +73 -0
  316. package/dist/packages/bunshot-permissions/src/index.d.ts +10 -0
  317. package/dist/packages/bunshot-permissions/src/index.js +5 -0
  318. package/dist/packages/bunshot-permissions/src/lib/bootstrap.d.ts +7 -0
  319. package/dist/packages/bunshot-permissions/src/lib/bootstrap.js +12 -0
  320. package/dist/packages/bunshot-permissions/src/lib/evaluator.d.ts +10 -0
  321. package/dist/packages/bunshot-permissions/src/lib/evaluator.js +165 -0
  322. package/dist/packages/bunshot-permissions/src/lib/registry.d.ts +2 -0
  323. package/dist/packages/bunshot-permissions/src/lib/registry.js +31 -0
  324. package/dist/packages/bunshot-permissions/src/lib/validation.d.ts +1 -0
  325. package/dist/packages/bunshot-permissions/src/lib/validation.js +1 -0
  326. package/dist/packages/bunshot-permissions/src/types/adapter.d.ts +1 -0
  327. package/dist/packages/bunshot-permissions/src/types/adapter.js +1 -0
  328. package/dist/packages/bunshot-permissions/src/types/evaluator.d.ts +1 -0
  329. package/dist/packages/bunshot-permissions/src/types/evaluator.js +1 -0
  330. package/dist/packages/bunshot-permissions/src/types/models.d.ts +1 -0
  331. package/dist/packages/bunshot-permissions/src/types/models.js +1 -0
  332. package/dist/packages/bunshot-permissions/src/types/registry.d.ts +1 -0
  333. package/dist/packages/bunshot-permissions/src/types/registry.js +1 -0
  334. package/dist/packages/bunshot-postgres/src/adapter.d.ts +6 -0
  335. package/dist/packages/bunshot-postgres/src/adapter.js +794 -0
  336. package/dist/packages/bunshot-postgres/src/connection.d.ts +15 -0
  337. package/dist/packages/bunshot-postgres/src/connection.js +16 -0
  338. package/dist/packages/bunshot-postgres/src/index.d.ts +4 -0
  339. package/dist/packages/bunshot-postgres/src/index.js +2 -0
  340. package/dist/packages/bunshot-postgres/src/schema.d.ts +997 -0
  341. package/dist/packages/bunshot-postgres/src/schema.js +105 -0
  342. package/dist/src/app.d.ts +230 -0
  343. package/dist/src/app.js +182 -0
  344. package/dist/src/cli/commands/init.d.ts +10 -0
  345. package/dist/src/cli/commands/init.js +709 -0
  346. package/dist/src/cli/index.d.ts +1 -0
  347. package/dist/src/cli/index.js +3 -0
  348. package/dist/src/entrypoints/mongo.d.ts +6 -0
  349. package/dist/src/entrypoints/mongo.js +4 -0
  350. package/dist/src/entrypoints/queue.d.ts +2 -0
  351. package/dist/src/entrypoints/queue.js +1 -0
  352. package/dist/src/entrypoints/redis.d.ts +1 -0
  353. package/dist/src/entrypoints/redis.js +1 -0
  354. package/dist/{adapters → src/framework/adapters}/localStorage.d.ts +1 -1
  355. package/dist/{adapters → src/framework/adapters}/localStorage.js +23 -8
  356. package/dist/src/framework/adapters/memoryStorage.d.ts +2 -0
  357. package/dist/src/framework/adapters/memoryStorage.js +45 -0
  358. package/dist/{adapters → src/framework/adapters}/s3Storage.d.ts +1 -1
  359. package/dist/{adapters → src/framework/adapters}/s3Storage.js +12 -12
  360. package/dist/src/framework/admin/bunshotAccess.d.ts +2 -0
  361. package/dist/src/framework/admin/bunshotAccess.js +23 -0
  362. package/dist/src/framework/admin/bunshotUsers.d.ts +2 -0
  363. package/dist/src/framework/admin/bunshotUsers.js +103 -0
  364. package/dist/src/framework/admin/index.d.ts +7 -0
  365. package/dist/src/framework/admin/index.js +21 -0
  366. package/dist/src/framework/boundaryAdapters/cacheFactories.d.ts +13 -0
  367. package/dist/src/framework/boundaryAdapters/cacheFactories.js +86 -0
  368. package/dist/src/framework/boundaryAdapters/index.d.ts +2 -0
  369. package/dist/src/framework/boundaryAdapters/index.js +1 -0
  370. package/dist/src/framework/boundaryAdapters.d.ts +17 -0
  371. package/dist/src/framework/boundaryAdapters.js +62 -0
  372. package/dist/src/framework/buildContext.d.ts +33 -0
  373. package/dist/src/framework/buildContext.js +119 -0
  374. package/dist/src/framework/config/schema.d.ts +447 -0
  375. package/dist/src/framework/config/schema.js +528 -0
  376. package/dist/src/framework/createInfrastructure.d.ts +76 -0
  377. package/dist/src/framework/createInfrastructure.js +221 -0
  378. package/dist/src/framework/lib/auditLog.d.ts +23 -0
  379. package/dist/src/framework/lib/auditLog.js +416 -0
  380. package/dist/src/framework/lib/captcha.d.ts +11 -0
  381. package/dist/src/framework/lib/captcha.js +40 -0
  382. package/dist/{lib → src/framework/lib}/createDtoMapper.js +4 -4
  383. package/dist/src/framework/lib/createRoute.d.ts +1 -0
  384. package/dist/src/framework/lib/createRoute.js +2 -0
  385. package/dist/{lib → src/framework/lib}/idempotency.d.ts +2 -6
  386. package/dist/src/framework/lib/idempotency.js +74 -0
  387. package/dist/src/framework/lib/logger.d.ts +3 -0
  388. package/dist/src/framework/lib/logger.js +14 -0
  389. package/dist/src/framework/lib/metrics.d.ts +34 -0
  390. package/dist/{lib → src/framework/lib}/metrics.js +49 -57
  391. package/dist/src/framework/lib/pagination.d.ts +42 -0
  392. package/dist/src/framework/lib/pagination.js +51 -0
  393. package/dist/src/framework/lib/redisTransport.d.ts +38 -0
  394. package/dist/src/framework/lib/redisTransport.js +107 -0
  395. package/dist/src/framework/lib/resolveUserId.d.ts +2 -0
  396. package/dist/src/framework/lib/resolveUserId.js +5 -0
  397. package/dist/src/framework/lib/sseCollision.d.ts +6 -0
  398. package/dist/src/framework/lib/sseCollision.js +26 -0
  399. package/dist/src/framework/lib/storageAdapter.d.ts +1 -0
  400. package/dist/src/framework/lib/storageAdapter.js +1 -0
  401. package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.js +4 -4
  402. package/dist/src/framework/lib/tenant.d.ts +21 -0
  403. package/dist/src/framework/lib/tenant.js +70 -0
  404. package/dist/{lib → src/framework/lib}/upload.d.ts +14 -9
  405. package/dist/src/framework/lib/upload.js +132 -0
  406. package/dist/src/framework/lib/uploadRegistry.d.ts +23 -0
  407. package/dist/src/framework/lib/uploadRegistry.js +34 -0
  408. package/dist/{lib → src/framework/lib}/validate.d.ts +1 -1
  409. package/dist/{lib → src/framework/lib}/validate.js +2 -2
  410. package/dist/src/framework/lib/ws.d.ts +19 -0
  411. package/dist/src/framework/lib/ws.js +130 -0
  412. package/dist/src/framework/lib/wsHeartbeat.d.ts +12 -0
  413. package/dist/src/framework/lib/wsHeartbeat.js +53 -0
  414. package/dist/src/framework/lib/wsMessages.d.ts +25 -0
  415. package/dist/src/framework/lib/wsMessages.js +45 -0
  416. package/dist/src/framework/lib/wsNamespace.d.ts +17 -0
  417. package/dist/src/framework/lib/wsNamespace.js +19 -0
  418. package/dist/src/framework/lib/wsPresence.d.ts +17 -0
  419. package/dist/src/framework/lib/wsPresence.js +84 -0
  420. package/dist/src/framework/lib/wsTransport.d.ts +38 -0
  421. package/dist/src/framework/lib/wsTransport.js +9 -0
  422. package/dist/{lib → src/framework/lib}/zodToMongoose.d.ts +1 -1
  423. package/dist/{lib → src/framework/lib}/zodToMongoose.js +11 -11
  424. package/dist/{middleware → src/framework/middleware}/auditLog.d.ts +4 -3
  425. package/dist/src/framework/middleware/auditLog.js +42 -0
  426. package/dist/{middleware → src/framework/middleware}/botProtection.d.ts +2 -2
  427. package/dist/{middleware → src/framework/middleware}/botProtection.js +8 -9
  428. package/dist/src/framework/middleware/cacheResponse.d.ts +35 -0
  429. package/dist/src/framework/middleware/cacheResponse.js +126 -0
  430. package/dist/src/framework/middleware/captcha.d.ts +9 -0
  431. package/dist/src/framework/middleware/captcha.js +37 -0
  432. package/dist/{middleware → src/framework/middleware}/errorHandler.d.ts +1 -1
  433. package/dist/src/framework/middleware/errorHandler.js +16 -0
  434. package/dist/src/framework/middleware/index.js +1 -0
  435. package/dist/{middleware → src/framework/middleware}/logger.d.ts +1 -1
  436. package/dist/src/framework/middleware/metrics.d.ts +12 -0
  437. package/dist/src/framework/middleware/metrics.js +26 -0
  438. package/dist/{middleware → src/framework/middleware}/rateLimit.d.ts +2 -2
  439. package/dist/src/framework/middleware/rateLimit.js +22 -0
  440. package/dist/src/framework/middleware/requestId.d.ts +3 -0
  441. package/dist/{middleware → src/framework/middleware}/requestId.js +2 -2
  442. package/dist/{middleware → src/framework/middleware}/requestLogger.d.ts +3 -3
  443. package/dist/{middleware → src/framework/middleware}/requestLogger.js +17 -12
  444. package/dist/{middleware → src/framework/middleware}/requestSigning.d.ts +2 -2
  445. package/dist/{middleware → src/framework/middleware}/requestSigning.js +18 -19
  446. package/dist/src/framework/middleware/tenant.d.ts +14 -0
  447. package/dist/{middleware → src/framework/middleware}/tenant.js +31 -27
  448. package/dist/src/framework/middleware/upload.d.ts +5 -0
  449. package/dist/{middleware → src/framework/middleware}/upload.js +4 -4
  450. package/dist/{middleware → src/framework/middleware}/webhookAuth.d.ts +3 -3
  451. package/dist/{middleware → src/framework/middleware}/webhookAuth.js +11 -11
  452. package/dist/src/framework/models/AuditLog.d.ts +21 -0
  453. package/dist/src/framework/models/AuditLog.js +31 -0
  454. package/dist/src/framework/mountMiddleware.d.ts +91 -0
  455. package/dist/src/framework/mountMiddleware.js +128 -0
  456. package/dist/src/framework/mountOptionalEndpoints.d.ts +103 -0
  457. package/dist/src/framework/mountOptionalEndpoints.js +47 -0
  458. package/dist/src/framework/mountRoutes.d.ts +21 -0
  459. package/dist/src/framework/mountRoutes.js +144 -0
  460. package/dist/src/framework/persistence/cronRegistry.d.ts +28 -0
  461. package/dist/src/framework/persistence/cronRegistry.js +139 -0
  462. package/dist/src/framework/persistence/idempotency.d.ts +26 -0
  463. package/dist/src/framework/persistence/idempotency.js +178 -0
  464. package/dist/src/framework/persistence/index.d.ts +6 -0
  465. package/dist/src/framework/persistence/index.js +8 -0
  466. package/dist/src/framework/persistence/storeInfra.d.ts +9 -0
  467. package/dist/src/framework/persistence/storeInfra.js +1 -0
  468. package/dist/src/framework/persistence/uploadRegistry.d.ts +35 -0
  469. package/dist/src/framework/persistence/uploadRegistry.js +235 -0
  470. package/dist/src/framework/persistence/wsMessages.d.ts +22 -0
  471. package/dist/src/framework/persistence/wsMessages.js +296 -0
  472. package/dist/src/framework/preloadSchemas.d.ts +24 -0
  473. package/dist/src/framework/preloadSchemas.js +42 -0
  474. package/dist/src/framework/registerBoundaryAdapters.d.ts +23 -0
  475. package/dist/src/framework/registerBoundaryAdapters.js +46 -0
  476. package/dist/src/framework/routes/admin.d.ts +9 -0
  477. package/dist/src/framework/routes/admin.js +361 -0
  478. package/dist/src/framework/routes/health.d.ts +1 -0
  479. package/dist/src/framework/routes/health.js +21 -0
  480. package/dist/src/framework/routes/home.d.ts +1 -0
  481. package/dist/src/framework/routes/home.js +18 -0
  482. package/dist/src/framework/routes/jobs.d.ts +3 -0
  483. package/dist/src/framework/routes/jobs.js +315 -0
  484. package/dist/src/framework/routes/metrics.d.ts +10 -0
  485. package/dist/src/framework/routes/metrics.js +57 -0
  486. package/dist/src/framework/routes/uploads.d.ts +14 -0
  487. package/dist/src/framework/routes/uploads.js +262 -0
  488. package/dist/src/framework/runPluginLifecycle.d.ts +27 -0
  489. package/dist/src/framework/runPluginLifecycle.js +121 -0
  490. package/dist/src/framework/secrets/frameworkSecretSchema.d.ts +58 -0
  491. package/dist/src/framework/secrets/frameworkSecretSchema.js +20 -0
  492. package/dist/src/framework/secrets/index.d.ts +9 -0
  493. package/dist/src/framework/secrets/index.js +7 -0
  494. package/dist/src/framework/secrets/providers/envProvider.d.ts +15 -0
  495. package/dist/src/framework/secrets/providers/envProvider.js +18 -0
  496. package/dist/src/framework/secrets/providers/fileProvider.d.ts +8 -0
  497. package/dist/src/framework/secrets/providers/fileProvider.js +82 -0
  498. package/dist/src/framework/secrets/providers/ssmProvider.d.ts +20 -0
  499. package/dist/src/framework/secrets/providers/ssmProvider.js +127 -0
  500. package/dist/src/framework/secrets/resolveSecretBundle.d.ts +53 -0
  501. package/dist/src/framework/secrets/resolveSecretBundle.js +84 -0
  502. package/dist/src/framework/secrets/resolveSecrets.d.ts +18 -0
  503. package/dist/src/framework/secrets/resolveSecrets.js +34 -0
  504. package/dist/src/framework/sse/index.d.ts +21 -0
  505. package/dist/src/framework/sse/index.js +109 -0
  506. package/dist/src/framework/ws/index.d.ts +11 -0
  507. package/dist/src/framework/ws/index.js +8 -0
  508. package/dist/src/index.d.ts +87 -0
  509. package/dist/src/index.js +58 -0
  510. package/dist/src/lib/appConfig.d.ts +7 -0
  511. package/dist/src/lib/appConfig.js +27 -0
  512. package/dist/src/lib/appMeta.d.ts +7 -0
  513. package/dist/src/lib/appMeta.js +3 -0
  514. package/dist/src/lib/authConfig.d.ts +532 -0
  515. package/dist/src/lib/authConfig.js +179 -0
  516. package/dist/{lib → src/lib}/context.d.ts +6 -7
  517. package/dist/{lib → src/lib}/context.js +5 -5
  518. package/dist/src/lib/logger.d.ts +1 -0
  519. package/dist/src/lib/logger.js +1 -0
  520. package/dist/src/lib/mongo.d.ts +58 -0
  521. package/dist/src/lib/mongo.js +96 -0
  522. package/dist/src/lib/queue.d.ts +72 -0
  523. package/dist/src/lib/queue.js +152 -0
  524. package/dist/src/lib/redis.d.ts +28 -0
  525. package/dist/src/lib/redis.js +72 -0
  526. package/dist/{lib → src/lib}/signing.d.ts +2 -2
  527. package/dist/src/lib/signing.js +210 -0
  528. package/dist/src/lib/signingConfig.d.ts +40 -0
  529. package/dist/src/lib/signingConfig.js +28 -0
  530. package/dist/src/server.d.ts +146 -0
  531. package/dist/src/server.js +469 -0
  532. package/dist/src/shared/lib/HttpError.d.ts +1 -0
  533. package/dist/src/shared/lib/HttpError.js +2 -0
  534. package/dist/src/shared/lib/constants.d.ts +10 -0
  535. package/dist/src/shared/lib/crypto.d.ts +43 -0
  536. package/dist/src/shared/lib/crypto.js +74 -0
  537. package/dist/src/shared/lib/signing.d.ts +52 -0
  538. package/dist/{lib → src/shared/lib}/signing.js +40 -10
  539. package/dist/src/testing.d.ts +34 -0
  540. package/dist/src/testing.js +93 -0
  541. package/package.json +62 -25
  542. package/dist/adapters/memoryAuth.d.ts +0 -46
  543. package/dist/adapters/memoryAuth.js +0 -634
  544. package/dist/adapters/memoryStorage.d.ts +0 -3
  545. package/dist/adapters/memoryStorage.js +0 -44
  546. package/dist/adapters/mongoAuth.d.ts +0 -2
  547. package/dist/adapters/mongoAuth.js +0 -307
  548. package/dist/adapters/sqliteAuth.d.ts +0 -49
  549. package/dist/adapters/sqliteAuth.js +0 -707
  550. package/dist/app.d.ts +0 -456
  551. package/dist/app.js +0 -548
  552. package/dist/entrypoints/mongo.d.ts +0 -5
  553. package/dist/entrypoints/mongo.js +0 -4
  554. package/dist/entrypoints/queue.d.ts +0 -2
  555. package/dist/entrypoints/queue.js +0 -1
  556. package/dist/entrypoints/redis.d.ts +0 -1
  557. package/dist/entrypoints/redis.js +0 -1
  558. package/dist/index.d.ts +0 -98
  559. package/dist/index.js +0 -77
  560. package/dist/lib/HttpError.d.ts +0 -9
  561. package/dist/lib/HttpError.js +0 -14
  562. package/dist/lib/appConfig.d.ts +0 -162
  563. package/dist/lib/appConfig.js +0 -83
  564. package/dist/lib/auditLog.d.ts +0 -52
  565. package/dist/lib/auditLog.js +0 -201
  566. package/dist/lib/authAdapter.d.ts +0 -176
  567. package/dist/lib/authAdapter.js +0 -7
  568. package/dist/lib/authRateLimit.d.ts +0 -13
  569. package/dist/lib/authRateLimit.js +0 -81
  570. package/dist/lib/clientIp.d.ts +0 -14
  571. package/dist/lib/crypto.d.ts +0 -11
  572. package/dist/lib/crypto.js +0 -22
  573. package/dist/lib/deletionCancelToken.d.ts +0 -12
  574. package/dist/lib/deletionCancelToken.js +0 -88
  575. package/dist/lib/emailVerification.d.ts +0 -13
  576. package/dist/lib/emailVerification.js +0 -86
  577. package/dist/lib/fingerprint.js +0 -36
  578. package/dist/lib/idempotency.js +0 -182
  579. package/dist/lib/jwt.d.ts +0 -2
  580. package/dist/lib/jwt.js +0 -24
  581. package/dist/lib/logger.d.ts +0 -1
  582. package/dist/lib/logger.js +0 -7
  583. package/dist/lib/metrics.d.ts +0 -14
  584. package/dist/lib/mfaChallenge.d.ts +0 -42
  585. package/dist/lib/mfaChallenge.js +0 -293
  586. package/dist/lib/mongo.d.ts +0 -39
  587. package/dist/lib/mongo.js +0 -124
  588. package/dist/lib/oauth.d.ts +0 -40
  589. package/dist/lib/oauth.js +0 -101
  590. package/dist/lib/oauthCode.d.ts +0 -15
  591. package/dist/lib/oauthCode.js +0 -90
  592. package/dist/lib/pagination.d.ts +0 -119
  593. package/dist/lib/pagination.js +0 -166
  594. package/dist/lib/queue.d.ts +0 -37
  595. package/dist/lib/queue.js +0 -117
  596. package/dist/lib/redis.d.ts +0 -9
  597. package/dist/lib/redis.js +0 -61
  598. package/dist/lib/resetPassword.d.ts +0 -12
  599. package/dist/lib/resetPassword.js +0 -91
  600. package/dist/lib/roles.d.ts +0 -7
  601. package/dist/lib/roles.js +0 -49
  602. package/dist/lib/session.d.ts +0 -39
  603. package/dist/lib/session.js +0 -535
  604. package/dist/lib/tenant.d.ts +0 -15
  605. package/dist/lib/tenant.js +0 -65
  606. package/dist/lib/upload.js +0 -87
  607. package/dist/lib/ws.d.ts +0 -22
  608. package/dist/lib/ws.js +0 -89
  609. package/dist/lib/wsHeartbeat.d.ts +0 -12
  610. package/dist/lib/wsHeartbeat.js +0 -57
  611. package/dist/lib/wsMessages.d.ts +0 -40
  612. package/dist/lib/wsMessages.js +0 -330
  613. package/dist/lib/wsPresence.d.ts +0 -25
  614. package/dist/lib/wsPresence.js +0 -99
  615. package/dist/middleware/auditLog.js +0 -39
  616. package/dist/middleware/bearerAuth.d.ts +0 -2
  617. package/dist/middleware/bearerAuth.js +0 -11
  618. package/dist/middleware/cacheResponse.d.ts +0 -15
  619. package/dist/middleware/cacheResponse.js +0 -178
  620. package/dist/middleware/csrf.js +0 -125
  621. package/dist/middleware/errorHandler.js +0 -13
  622. package/dist/middleware/identify.d.ts +0 -3
  623. package/dist/middleware/identify.js +0 -95
  624. package/dist/middleware/index.js +0 -1
  625. package/dist/middleware/metrics.d.ts +0 -9
  626. package/dist/middleware/metrics.js +0 -26
  627. package/dist/middleware/rateLimit.js +0 -22
  628. package/dist/middleware/requestId.d.ts +0 -3
  629. package/dist/middleware/tenant.d.ts +0 -5
  630. package/dist/middleware/upload.d.ts +0 -5
  631. package/dist/middleware/userAuth.d.ts +0 -3
  632. package/dist/middleware/userAuth.js +0 -6
  633. package/dist/models/AuditLog.d.ts +0 -30
  634. package/dist/models/AuditLog.js +0 -39
  635. package/dist/models/AuthUser.js +0 -48
  636. package/dist/models/Group.d.ts +0 -21
  637. package/dist/models/Group.js +0 -28
  638. package/dist/models/GroupMembership.js +0 -25
  639. package/dist/models/TenantRole.d.ts +0 -15
  640. package/dist/models/TenantRole.js +0 -23
  641. package/dist/routes/auth.d.ts +0 -11
  642. package/dist/routes/auth.js +0 -605
  643. package/dist/routes/groups.js +0 -346
  644. package/dist/routes/health.d.ts +0 -1
  645. package/dist/routes/health.js +0 -22
  646. package/dist/routes/home.d.ts +0 -1
  647. package/dist/routes/home.js +0 -16
  648. package/dist/routes/jobs.d.ts +0 -2
  649. package/dist/routes/jobs.js +0 -272
  650. package/dist/routes/metrics.d.ts +0 -7
  651. package/dist/routes/metrics.js +0 -52
  652. package/dist/routes/mfa.d.ts +0 -5
  653. package/dist/routes/mfa.js +0 -620
  654. package/dist/routes/oauth.d.ts +0 -2
  655. package/dist/routes/oauth.js +0 -514
  656. package/dist/routes/uploads.d.ts +0 -2
  657. package/dist/routes/uploads.js +0 -135
  658. package/dist/schemas/auth.js +0 -30
  659. package/dist/server.d.ts +0 -57
  660. package/dist/server.js +0 -112
  661. package/dist/services/auth.d.ts +0 -27
  662. package/dist/services/auth.js +0 -159
  663. package/dist/ws/index.d.ts +0 -10
  664. package/dist/ws/index.js +0 -38
  665. package/docs/sections/adding-middleware/full.md +0 -35
  666. package/docs/sections/adding-models/full.md +0 -125
  667. package/docs/sections/adding-models/overview.md +0 -13
  668. package/docs/sections/adding-routes/full.md +0 -182
  669. package/docs/sections/adding-routes/overview.md +0 -23
  670. package/docs/sections/auth-flow/full.md +0 -779
  671. package/docs/sections/auth-flow/overview.md +0 -10
  672. package/docs/sections/auth-security-examples/full.md +0 -365
  673. package/docs/sections/authentication/full.md +0 -130
  674. package/docs/sections/authentication/overview.md +0 -5
  675. package/docs/sections/cli/full.md +0 -42
  676. package/docs/sections/configuration/full.md +0 -172
  677. package/docs/sections/configuration/overview.md +0 -18
  678. package/docs/sections/configuration-example/full.md +0 -117
  679. package/docs/sections/configuration-example/overview.md +0 -30
  680. package/docs/sections/documentation/full.md +0 -171
  681. package/docs/sections/environment-variables/full.md +0 -55
  682. package/docs/sections/exports/full.md +0 -123
  683. package/docs/sections/extending-context/full.md +0 -59
  684. package/docs/sections/header.md +0 -3
  685. package/docs/sections/installation/full.md +0 -6
  686. package/docs/sections/jobs/full.md +0 -140
  687. package/docs/sections/jobs/overview.md +0 -15
  688. package/docs/sections/logging/full.md +0 -83
  689. package/docs/sections/metrics/full.md +0 -127
  690. package/docs/sections/mongodb-connections/full.md +0 -45
  691. package/docs/sections/mongodb-connections/overview.md +0 -7
  692. package/docs/sections/multi-tenancy/full.md +0 -66
  693. package/docs/sections/multi-tenancy/overview.md +0 -15
  694. package/docs/sections/oauth/full.md +0 -189
  695. package/docs/sections/oauth/overview.md +0 -16
  696. package/docs/sections/package-development/full.md +0 -7
  697. package/docs/sections/pagination/full.md +0 -93
  698. package/docs/sections/peer-dependencies/full.md +0 -47
  699. package/docs/sections/quick-start/full.md +0 -43
  700. package/docs/sections/response-caching/full.md +0 -117
  701. package/docs/sections/response-caching/overview.md +0 -13
  702. package/docs/sections/roles/full.md +0 -225
  703. package/docs/sections/roles/overview.md +0 -14
  704. package/docs/sections/running-without-redis/full.md +0 -16
  705. package/docs/sections/running-without-redis-or-mongodb/full.md +0 -60
  706. package/docs/sections/signing/full.md +0 -203
  707. package/docs/sections/stack/full.md +0 -10
  708. package/docs/sections/uploads/full.md +0 -199
  709. package/docs/sections/versioning/full.md +0 -85
  710. package/docs/sections/webhook-auth/full.md +0 -100
  711. package/docs/sections/websocket/full.md +0 -184
  712. package/docs/sections/websocket/overview.md +0 -5
  713. package/docs/sections/websocket-rooms/full.md +0 -102
  714. package/docs/sections/websocket-rooms/overview.md +0 -5
  715. /package/dist/{lib/storageAdapter.js → packages/bunshot-admin/src/types/env.js} +0 -0
  716. /package/dist/{lib → packages/bunshot-auth/src/lib}/fingerprint.d.ts +0 -0
  717. /package/dist/{lib → packages/bunshot-core/src}/constants.d.ts +0 -0
  718. /package/dist/{lib → packages/bunshot-core/src}/storageAdapter.d.ts +0 -0
  719. /package/dist/{lib → src/framework/lib}/createDtoMapper.d.ts +0 -0
  720. /package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.d.ts +0 -0
  721. /package/dist/{middleware → src/framework/middleware}/cors.d.ts +0 -0
  722. /package/dist/{middleware → src/framework/middleware}/cors.js +0 -0
  723. /package/dist/{middleware → src/framework/middleware}/index.d.ts +0 -0
  724. /package/dist/{middleware → src/framework/middleware}/logger.js +0 -0
  725. /package/dist/{lib → src/shared/lib}/constants.js +0 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { flush, run } from '@oclif/core';
2
+ await run(process.argv.slice(2), import.meta.url);
3
+ await flush();
@@ -0,0 +1,6 @@
1
+ export { connectMongo, connectAuthMongo, connectAppMongo, disconnectMongo, getMongoFromApp, getMongooseModule, } from '../lib/mongo';
2
+ export type { MongoConnections } from '../lib/mongo';
3
+ export { createMongoAuthAdapter } from '../../packages/bunshot-auth/src/adapters/mongoAuth';
4
+ export { createAuthUserModel } from '../../packages/bunshot-auth/src/models/AuthUser';
5
+ export { zodToMongoose } from '../framework/lib/zodToMongoose';
6
+ export type { ZodToMongooseConfig, ZodToMongooseRefConfig } from '../framework/lib/zodToMongoose';
@@ -0,0 +1,4 @@
1
+ export { connectMongo, connectAuthMongo, connectAppMongo, disconnectMongo, getMongoFromApp, getMongooseModule, } from '../lib/mongo';
2
+ export { createMongoAuthAdapter } from '../../packages/bunshot-auth/src/adapters/mongoAuth';
3
+ export { createAuthUserModel } from '../../packages/bunshot-auth/src/models/AuthUser';
4
+ export { zodToMongoose } from '../framework/lib/zodToMongoose';
@@ -0,0 +1,2 @@
1
+ export { createQueueFactory } from '../lib/queue';
2
+ export type { Job, BunshotWorker, CronSchedule, DLQOptions, QueueFactory, QueueRedisCredentials, } from '../lib/queue';
@@ -0,0 +1 @@
1
+ export { createQueueFactory } from '../lib/queue';
@@ -0,0 +1 @@
1
+ export { connectRedis, disconnectRedis, getRedisConnectionOptions, getRedisFromApp, } from '../lib/redis';
@@ -0,0 +1 @@
1
+ export { connectRedis, disconnectRedis, getRedisConnectionOptions, getRedisFromApp, } from '../lib/redis';
@@ -1,4 +1,4 @@
1
- import type { StorageAdapter } from "../lib/storageAdapter";
1
+ import type { StorageAdapter } from '../lib/storageAdapter';
2
2
  export interface LocalStorageConfig {
3
3
  directory: string;
4
4
  baseUrl?: string;
@@ -1,12 +1,27 @@
1
- import { unlink } from "node:fs/promises";
2
- import { join } from "node:path";
1
+ import { unlink } from 'node:fs/promises';
2
+ import { dirname, resolve, sep } from 'node:path';
3
+ import { HttpError } from '../../../packages/bunshot-core/src/index.js';
4
+ function resolveKey(directory, key) {
5
+ if (!key || !key.trim())
6
+ throw new HttpError(400, 'Invalid storage key');
7
+ const normalized = key.replace(/\\/g, '/');
8
+ if (normalized.startsWith('/') || /^[a-zA-Z]:/.test(normalized) || normalized.startsWith('//')) {
9
+ throw new HttpError(400, 'Invalid storage key');
10
+ }
11
+ const root = resolve(directory);
12
+ const candidate = resolve(root, normalized);
13
+ if (candidate === root || !candidate.startsWith(root + sep)) {
14
+ throw new HttpError(400, 'Invalid storage key');
15
+ }
16
+ return candidate;
17
+ }
3
18
  export const localStorage = (config) => ({
4
19
  async put(key, data, _meta) {
5
- const filePath = join(config.directory, key);
20
+ const filePath = resolveKey(config.directory, key);
6
21
  // Ensure parent directory exists
7
- const dir = filePath.substring(0, filePath.lastIndexOf("/"));
22
+ const dir = dirname(filePath);
8
23
  if (dir) {
9
- const { mkdir } = await import("node:fs/promises");
24
+ const { mkdir } = await import('node:fs/promises');
10
25
  await mkdir(dir, { recursive: true });
11
26
  }
12
27
  if (data instanceof Blob) {
@@ -20,11 +35,11 @@ export const localStorage = (config) => ({
20
35
  else {
21
36
  await Bun.write(filePath, data);
22
37
  }
23
- const url = config.baseUrl ? `${config.baseUrl.replace(/\/$/, "")}/${key}` : undefined;
38
+ const url = config.baseUrl ? `${config.baseUrl.replace(/\/$/, '')}/${key}` : undefined;
24
39
  return { ...(url !== undefined ? { url } : {}) };
25
40
  },
26
41
  async get(key) {
27
- const filePath = join(config.directory, key);
42
+ const filePath = resolveKey(config.directory, key);
28
43
  const file = Bun.file(filePath);
29
44
  const exists = await file.exists();
30
45
  if (!exists)
@@ -33,7 +48,7 @@ export const localStorage = (config) => ({
33
48
  return { stream, size: file.size };
34
49
  },
35
50
  async delete(key) {
36
- const filePath = join(config.directory, key);
51
+ const filePath = resolveKey(config.directory, key);
37
52
  try {
38
53
  await unlink(filePath);
39
54
  }
@@ -0,0 +1,2 @@
1
+ import type { StorageAdapter } from '../lib/storageAdapter';
2
+ export declare const memoryStorage: () => StorageAdapter;
@@ -0,0 +1,45 @@
1
+ import { DEFAULT_MAX_ENTRIES, evictOldest } from '../../../packages/bunshot-core/src/index.js';
2
+ export const memoryStorage = () => {
3
+ const store = new Map();
4
+ return {
5
+ async put(key, data, meta) {
6
+ let buf;
7
+ if (data instanceof Blob) {
8
+ buf = Buffer.from(await data.arrayBuffer());
9
+ }
10
+ else if (data instanceof ReadableStream) {
11
+ const chunks = [];
12
+ const reader = data.getReader();
13
+ while (true) {
14
+ const { done, value } = await reader.read();
15
+ if (done)
16
+ break;
17
+ if (value)
18
+ chunks.push(value);
19
+ }
20
+ buf = Buffer.concat(chunks);
21
+ }
22
+ else {
23
+ buf = data;
24
+ }
25
+ evictOldest(store, DEFAULT_MAX_ENTRIES);
26
+ store.set(key, { data: buf, mimeType: meta.mimeType, size: meta.size });
27
+ return {};
28
+ },
29
+ async get(key) {
30
+ const entry = store.get(key);
31
+ if (!entry)
32
+ return null;
33
+ const stream = new ReadableStream({
34
+ start(controller) {
35
+ controller.enqueue(entry.data);
36
+ controller.close();
37
+ },
38
+ });
39
+ return { stream, mimeType: entry.mimeType, size: entry.size };
40
+ },
41
+ async delete(key) {
42
+ store.delete(key);
43
+ },
44
+ };
45
+ };
@@ -1,4 +1,4 @@
1
- import type { StorageAdapter } from "../lib/storageAdapter";
1
+ import type { StorageAdapter } from '../lib/storageAdapter';
2
2
  export interface S3StorageConfig {
3
3
  bucket: string;
4
4
  region?: string;
@@ -1,28 +1,28 @@
1
1
  function requireS3Client() {
2
2
  try {
3
3
  // eslint-disable-next-line @typescript-eslint/no-require-imports
4
- return require("@aws-sdk/client-s3");
4
+ return require('@aws-sdk/client-s3');
5
5
  }
6
6
  catch {
7
- throw new Error("@aws-sdk/client-s3 is not installed. Run: bun add @aws-sdk/client-s3");
7
+ throw new Error('@aws-sdk/client-s3 is not installed. Run: bun add @aws-sdk/client-s3');
8
8
  }
9
9
  }
10
10
  function requirePresigner() {
11
11
  try {
12
12
  // eslint-disable-next-line @typescript-eslint/no-require-imports
13
- return require("@aws-sdk/s3-request-presigner");
13
+ return require('@aws-sdk/s3-request-presigner');
14
14
  }
15
15
  catch {
16
- throw new Error("@aws-sdk/s3-request-presigner is not installed. Run: bun add @aws-sdk/s3-request-presigner");
16
+ throw new Error('@aws-sdk/s3-request-presigner is not installed. Run: bun add @aws-sdk/s3-request-presigner');
17
17
  }
18
18
  }
19
19
  function requireLibStorage() {
20
20
  try {
21
21
  // eslint-disable-next-line @typescript-eslint/no-require-imports
22
- return require("@aws-sdk/lib-storage");
22
+ return require('@aws-sdk/lib-storage');
23
23
  }
24
24
  catch {
25
- throw new Error("@aws-sdk/lib-storage is not installed. Run: bun add @aws-sdk/lib-storage");
25
+ throw new Error('@aws-sdk/lib-storage is not installed. Run: bun add @aws-sdk/lib-storage');
26
26
  }
27
27
  }
28
28
  export const s3Storage = (config) => {
@@ -31,7 +31,7 @@ export const s3Storage = (config) => {
31
31
  if (!_client) {
32
32
  const { S3Client } = requireS3Client();
33
33
  _client = new S3Client({
34
- region: config.region ?? "us-east-1",
34
+ region: config.region ?? 'us-east-1',
35
35
  ...(config.endpoint ? { endpoint: config.endpoint } : {}),
36
36
  ...(config.credentials ? { credentials: config.credentials } : {}),
37
37
  ...(config.forcePathStyle !== undefined ? { forcePathStyle: config.forcePathStyle } : {}),
@@ -77,9 +77,7 @@ export const s3Storage = (config) => {
77
77
  ContentLength: meta.size,
78
78
  }));
79
79
  }
80
- const url = config.publicUrl
81
- ? `${config.publicUrl.replace(/\/$/, "")}/${key}`
82
- : undefined;
80
+ const url = config.publicUrl ? `${config.publicUrl.replace(/\/$/, '')}/${key}` : undefined;
83
81
  return { ...(url !== undefined ? { url } : {}) };
84
82
  },
85
83
  async get(key) {
@@ -95,7 +93,7 @@ export const s3Storage = (config) => {
95
93
  };
96
94
  }
97
95
  catch (err) {
98
- if (err?.name === "NoSuchKey" || err?.$metadata?.httpStatusCode === 404)
96
+ if (err?.name === 'NoSuchKey' || err?.$metadata?.httpStatusCode === 404)
99
97
  return null;
100
98
  throw err;
101
99
  }
@@ -120,7 +118,9 @@ export const s3Storage = (config) => {
120
118
  const { GetObjectCommand } = requireS3Client();
121
119
  const { getSignedUrl } = requirePresigner();
122
120
  const client = getClient();
123
- return getSignedUrl(client, new GetObjectCommand({ Bucket: config.bucket, Key: key }), { expiresIn: opts.expirySeconds });
121
+ return getSignedUrl(client, new GetObjectCommand({ Bucket: config.bucket, Key: key }), {
122
+ expiresIn: opts.expirySeconds,
123
+ });
124
124
  },
125
125
  };
126
126
  };
@@ -0,0 +1,2 @@
1
+ import type { AdminAccessProvider } from '../../../packages/bunshot-admin/src/index.js';
2
+ export declare function createBunshotAuthAccessProvider(): AdminAccessProvider;
@@ -0,0 +1,23 @@
1
+ import { getAuthAdapter } from '../../../packages/bunshot-auth/src/lib/authAdapter';
2
+ export function createBunshotAuthAccessProvider() {
3
+ return {
4
+ name: 'bunshot-auth',
5
+ async verifyRequest(c) {
6
+ const userId = c.get('authUserId');
7
+ if (!userId)
8
+ return null;
9
+ const adapter = getAuthAdapter();
10
+ const user = await adapter.getUser?.(userId);
11
+ if (!user)
12
+ return null;
13
+ const roles = (await adapter.getRoles?.(userId)) ?? [];
14
+ return {
15
+ subject: userId,
16
+ email: user.email,
17
+ displayName: user.displayName ?? undefined,
18
+ roles,
19
+ provider: 'bunshot-auth',
20
+ };
21
+ },
22
+ };
23
+ }
@@ -0,0 +1,2 @@
1
+ import type { ManagedUserProvider } from '../../../packages/bunshot-admin/src/index.js';
2
+ export declare function createBunshotManagedUserProvider(): ManagedUserProvider;
@@ -0,0 +1,103 @@
1
+ import { getAuthAdapter } from '../../../packages/bunshot-auth/src/lib/authAdapter';
2
+ import { getUserSessions, deleteUserSessions, deleteSession } from '../../../packages/bunshot-auth/src/lib/session';
3
+ import { setSuspended } from '../../../packages/bunshot-auth/src/lib/suspension';
4
+ export function createBunshotManagedUserProvider() {
5
+ return {
6
+ name: 'bunshot-auth',
7
+ async listUsers(input) {
8
+ const adapter = getAuthAdapter();
9
+ const result = await adapter.listUsers?.({
10
+ ...(input.search ? { email: input.search } : {}),
11
+ startIndex: input.offset ?? 0,
12
+ count: input.limit ?? 50,
13
+ });
14
+ if (!result)
15
+ return { items: [], total: 0 };
16
+ return {
17
+ items: result.users.map(toManagedUserRecord),
18
+ total: result.totalResults,
19
+ };
20
+ },
21
+ async getUser(userId) {
22
+ const adapter = getAuthAdapter();
23
+ const user = await adapter.getUser?.(userId);
24
+ if (!user)
25
+ return null;
26
+ return toManagedUserRecord({ id: userId, ...user });
27
+ },
28
+ async getCapabilities() {
29
+ return {
30
+ canListUsers: true,
31
+ canSearchUsers: true,
32
+ canViewUser: true,
33
+ canEditUser: true,
34
+ canSuspendUsers: true,
35
+ canDeleteUsers: true,
36
+ canViewSessions: true,
37
+ canRevokeSessions: true,
38
+ canManageRoles: true,
39
+ };
40
+ },
41
+ async suspendUser(input) {
42
+ await setSuspended(input.userId, true, input.reason);
43
+ },
44
+ async unsuspendUser(input) {
45
+ await setSuspended(input.userId, false);
46
+ },
47
+ async updateUser(input) {
48
+ const adapter = getAuthAdapter();
49
+ await adapter.updateProfile?.(input.userId, {
50
+ displayName: input.displayName,
51
+ firstName: input.firstName,
52
+ lastName: input.lastName,
53
+ externalId: input.externalId,
54
+ });
55
+ const user = await adapter.getUser?.(input.userId);
56
+ if (!user)
57
+ throw new Error(`User not found: ${input.userId}`);
58
+ return toManagedUserRecord({ id: input.userId, ...user });
59
+ },
60
+ async deleteUser(userId) {
61
+ const adapter = getAuthAdapter();
62
+ await deleteUserSessions(userId);
63
+ await adapter.deleteUser?.(userId);
64
+ },
65
+ async listSessions(userId) {
66
+ const sessions = await getUserSessions(userId);
67
+ return sessions.map(s => ({
68
+ sessionId: s.sessionId,
69
+ userId,
70
+ createdAt: s.createdAt,
71
+ lastActiveAt: s.lastActiveAt,
72
+ ip: s.ipAddress ?? undefined,
73
+ userAgent: s.userAgent ?? undefined,
74
+ }));
75
+ },
76
+ async revokeSession(sessionId) {
77
+ await deleteSession(sessionId);
78
+ },
79
+ async revokeAllSessions(userId) {
80
+ await deleteUserSessions(userId);
81
+ },
82
+ async getRoles(userId) {
83
+ const adapter = getAuthAdapter();
84
+ return (await adapter.getRoles?.(userId)) ?? [];
85
+ },
86
+ async setRoles(userId, roles) {
87
+ const adapter = getAuthAdapter();
88
+ await adapter.setRoles?.(userId, roles);
89
+ },
90
+ };
91
+ }
92
+ function toManagedUserRecord(user) {
93
+ return {
94
+ id: user.id ?? user._id?.toString(),
95
+ email: user.email,
96
+ displayName: user.displayName ?? undefined,
97
+ firstName: user.firstName ?? undefined,
98
+ lastName: user.lastName ?? undefined,
99
+ externalId: user.externalId ?? undefined,
100
+ status: user.suspended ? 'suspended' : 'active',
101
+ provider: 'bunshot-auth',
102
+ };
103
+ }
@@ -0,0 +1,7 @@
1
+ import { type AdminPluginConfig } from '../../../packages/bunshot-admin/src/index.js';
2
+ import { type BunshotPlugin } from '../../../packages/bunshot-core/src/index.js';
3
+ export interface BunshotAdminPluginConfig extends Omit<AdminPluginConfig, 'accessProvider' | 'managedUserProvider'> {
4
+ accessProvider?: AdminPluginConfig['accessProvider'];
5
+ managedUserProvider?: AdminPluginConfig['managedUserProvider'];
6
+ }
7
+ export declare function createBunshotAdminPlugin(config: BunshotAdminPluginConfig): BunshotPlugin;
@@ -0,0 +1,21 @@
1
+ import { createAdminPlugin } from '../../../packages/bunshot-admin/src/index.js';
2
+ import { createBunshotAuthAccessProvider, createBunshotManagedUserProvider, getAuthRuntimeContext, } from '../../../packages/bunshot-auth/src/index.js';
3
+ import { getContext } from '../../../packages/bunshot-core/src/index.js';
4
+ export function createBunshotAdminPlugin(config) {
5
+ return {
6
+ name: 'bunshot-admin',
7
+ async setupRoutes(app, frameworkConfig, bus) {
8
+ const runtime = getAuthRuntimeContext(getContext(app));
9
+ const plugin = createAdminPlugin({
10
+ ...config,
11
+ accessProvider: config.accessProvider ?? createBunshotAuthAccessProvider(),
12
+ managedUserProvider: config.managedUserProvider ??
13
+ createBunshotManagedUserProvider(runtime.adapter, runtime.config, runtime.repos.session),
14
+ });
15
+ await plugin.setupRoutes(app, frameworkConfig, bus);
16
+ },
17
+ async setup(app, frameworkConfig, bus) {
18
+ await this.setupRoutes(app, frameworkConfig, bus);
19
+ },
20
+ };
21
+ }
@@ -0,0 +1,13 @@
1
+ import type { Connection } from 'mongoose';
2
+ import { type CacheAdapter } from '../../../packages/bunshot-core/src/index.js';
3
+ import type { StoreType } from '../../../packages/bunshot-core/src/index.js';
4
+ export interface BoundaryCacheFactoryContext {
5
+ readonly redis: import('ioredis').default | null;
6
+ readonly mongo: Connection | null;
7
+ readonly sqliteDb: import('bun:sqlite').Database | null;
8
+ }
9
+ export type BoundaryCacheFactories = Record<StoreType, (context: BoundaryCacheFactoryContext) => Promise<CacheAdapter> | CacheAdapter>;
10
+ export declare function createRedisBoundaryCacheAdapter(redisClient: import('ioredis').default): CacheAdapter;
11
+ export declare function createSqliteBoundaryCacheAdapter(sqliteDb: import('bun:sqlite').Database): Promise<CacheAdapter>;
12
+ export declare function createMongoBoundaryCacheAdapter(appConnection: Connection): Promise<CacheAdapter>;
13
+ export declare const boundaryCacheFactories: BoundaryCacheFactories;
@@ -0,0 +1,86 @@
1
+ import { createMemoryCacheAdapter } from '../../../packages/bunshot-core/src/index.js';
2
+ export function createRedisBoundaryCacheAdapter(redisClient) {
3
+ return {
4
+ name: 'redis',
5
+ async get(key) {
6
+ return redisClient.get(key);
7
+ },
8
+ async set(key, value, ttl) {
9
+ if (ttl) {
10
+ await redisClient.setex(key, ttl, value);
11
+ return;
12
+ }
13
+ await redisClient.set(key, value);
14
+ },
15
+ async del(key) {
16
+ await redisClient.del(key);
17
+ },
18
+ async delPattern(pattern) {
19
+ let cursor = '0';
20
+ do {
21
+ const [next, keys] = await redisClient.scan(cursor, 'MATCH', pattern, 'COUNT', 100);
22
+ cursor = next;
23
+ if (keys.length > 0) {
24
+ await redisClient.del(...keys);
25
+ }
26
+ } while (cursor !== '0');
27
+ },
28
+ isReady() {
29
+ return true;
30
+ },
31
+ };
32
+ }
33
+ export async function createSqliteBoundaryCacheAdapter(sqliteDb) {
34
+ const { createSqliteCacheAdapter } = await import('../../../packages/bunshot-auth/src/lib/cache');
35
+ return createSqliteCacheAdapter(sqliteDb);
36
+ }
37
+ export async function createMongoBoundaryCacheAdapter(appConnection) {
38
+ const { getCacheModel } = await import('../middleware/cacheResponse');
39
+ const cacheModel = getCacheModel(appConnection);
40
+ return {
41
+ name: 'mongo',
42
+ async get(key) {
43
+ const doc = await cacheModel.findOne({ key }, 'value').lean();
44
+ return doc ? doc.value : null;
45
+ },
46
+ async set(key, value, ttl) {
47
+ const expiresAt = ttl ? new Date(Date.now() + ttl * 1000) : undefined;
48
+ await cacheModel.updateOne({ key }, { $set: { value, ...(expiresAt ? { expiresAt } : {}) } }, { upsert: true });
49
+ },
50
+ async del(key) {
51
+ await cacheModel.deleteOne({ key });
52
+ },
53
+ async delPattern(pattern) {
54
+ const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
55
+ const regex = new RegExp('^' + escaped.replace(/\*/g, '.*') + '$');
56
+ await cacheModel.deleteMany({ key: regex });
57
+ },
58
+ isReady() {
59
+ return appConnection.readyState === 1;
60
+ },
61
+ };
62
+ }
63
+ export const boundaryCacheFactories = {
64
+ memory: () => createMemoryCacheAdapter(),
65
+ redis: context => {
66
+ if (!context.redis) {
67
+ throw new Error('[framework/boundaryAdapters] Redis cache adapter requested without a Redis client');
68
+ }
69
+ return createRedisBoundaryCacheAdapter(context.redis);
70
+ },
71
+ sqlite: context => {
72
+ if (!context.sqliteDb) {
73
+ throw new Error('[framework/boundaryAdapters] SQLite cache adapter requested without a SQLite database');
74
+ }
75
+ return createSqliteBoundaryCacheAdapter(context.sqliteDb);
76
+ },
77
+ mongo: context => {
78
+ if (!context.mongo) {
79
+ throw new Error('[framework/boundaryAdapters] Mongo cache adapter requested without a Mongo connection');
80
+ }
81
+ return createMongoBoundaryCacheAdapter(context.mongo);
82
+ },
83
+ // TODO: implement a native postgres cache adapter.
84
+ // For now postgres deployments fall back to in-memory (single-process only).
85
+ postgres: () => createMemoryCacheAdapter(),
86
+ };
@@ -0,0 +1,2 @@
1
+ export { boundaryCacheFactories, createMongoBoundaryCacheAdapter, createRedisBoundaryCacheAdapter, createSqliteBoundaryCacheAdapter, } from './cacheFactories';
2
+ export type { BoundaryCacheFactories, BoundaryCacheFactoryContext } from './cacheFactories';
@@ -0,0 +1 @@
1
+ export { boundaryCacheFactories, createMongoBoundaryCacheAdapter, createRedisBoundaryCacheAdapter, createSqliteBoundaryCacheAdapter, } from './cacheFactories';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Cache adapter factories for each framework store type.
3
+ *
4
+ * Used by registerBoundaryAdapters to resolve the appropriate cache adapter
5
+ * based on which backends are available.
6
+ */
7
+ import type { CacheAdapter } from '../../packages/bunshot-core/src/index.js';
8
+ import type { FrameworkStoreType } from './persistence/storeInfra';
9
+ import type { Connection } from 'mongoose';
10
+ export interface CacheFactoryContext {
11
+ redis: import('ioredis').default | null;
12
+ mongo: Connection | null;
13
+ sqliteDb: import('bun:sqlite').Database | null;
14
+ }
15
+ type CacheFactory = (ctx: CacheFactoryContext) => CacheAdapter | Promise<CacheAdapter>;
16
+ export declare const boundaryCacheFactories: Record<FrameworkStoreType, CacheFactory>;
17
+ export {};
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Cache adapter factories for each framework store type.
3
+ *
4
+ * Used by registerBoundaryAdapters to resolve the appropriate cache adapter
5
+ * based on which backends are available.
6
+ */
7
+ import { createMemoryCacheAdapter } from '../../packages/bunshot-core/src/index.js';
8
+ export const boundaryCacheFactories = {
9
+ memory: () => createMemoryCacheAdapter(),
10
+ sqlite: (ctx) => {
11
+ const { createSqliteCacheAdapter } = require('../../packages/bunshot-auth/src/lib/cache');
12
+ return createSqliteCacheAdapter(ctx.sqliteDb);
13
+ },
14
+ redis: (ctx) => {
15
+ const redisClient = ctx.redis;
16
+ return {
17
+ name: 'redis',
18
+ async get(key) { return redisClient.get(key); },
19
+ async set(key, value, ttl) {
20
+ if (ttl) {
21
+ await redisClient.setex(key, ttl, value);
22
+ }
23
+ else {
24
+ await redisClient.set(key, value);
25
+ }
26
+ },
27
+ async del(key) { await redisClient.del(key); },
28
+ async delPattern(pattern) {
29
+ let cursor = '0';
30
+ do {
31
+ const [next, keys] = await redisClient.scan(cursor, 'MATCH', pattern, 'COUNT', 100);
32
+ cursor = next;
33
+ if (keys.length > 0)
34
+ await redisClient.del(...keys);
35
+ } while (cursor !== '0');
36
+ },
37
+ isReady() { return true; },
38
+ };
39
+ },
40
+ mongo: async (ctx) => {
41
+ const { getCacheModel } = await import('./middleware/cacheResponse');
42
+ const cacheModel = getCacheModel(ctx.mongo);
43
+ return {
44
+ name: 'mongo',
45
+ async get(key) {
46
+ const doc = await cacheModel.findOne({ key }, 'value').lean();
47
+ return doc ? doc.value : null;
48
+ },
49
+ async set(key, value, ttl) {
50
+ const expiresAt = ttl ? new Date(Date.now() + ttl * 1000) : undefined;
51
+ await cacheModel.updateOne({ key }, { $set: { value, ...(expiresAt ? { expiresAt } : {}) } }, { upsert: true });
52
+ },
53
+ async del(key) { await cacheModel.deleteOne({ key }); },
54
+ async delPattern(pattern) {
55
+ const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
56
+ const regex = new RegExp('^' + escaped.replace(/\*/g, '.*') + '$');
57
+ await cacheModel.deleteMany({ key: regex });
58
+ },
59
+ isReady() { return ctx.mongo.readyState === 1; },
60
+ };
61
+ },
62
+ };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * BunshotContext assembly — extracted from createApp().
3
+ *
4
+ * Constructs the immutable context object that is attached to the Hono app and
5
+ * accessible from all middleware and route handlers via c.get('bunshotCtx').
6
+ * Also owns the clear() and destroy() lifecycle methods.
7
+ */
8
+ import type { InfrastructureResult } from './createInfrastructure';
9
+ import type { MetricsState } from './lib/metrics';
10
+ import type { UploadConfig } from './mountOptionalEndpoints';
11
+ import type { ResolvedSecretBundle } from './secrets/resolveSecretBundle';
12
+ import type { OpenAPIHono } from '@hono/zod-openapi';
13
+ import type { SigningConfig } from '../lib/signingConfig';
14
+ import type { BunshotContext, BunshotEventBus, BunshotPlugin, CaptchaConfig, CoreRegistrarSnapshot } from '../../packages/bunshot-core/src/index.js';
15
+ import type { AppEnv } from '../../packages/bunshot-core/src/index.js';
16
+ export interface BuildContextParams {
17
+ app: OpenAPIHono<AppEnv>;
18
+ appName: string;
19
+ infra: InfrastructureResult;
20
+ signing: SigningConfig | null | undefined;
21
+ captcha: CaptchaConfig | null | undefined;
22
+ upload: UploadConfig | undefined;
23
+ metricsState: MetricsState;
24
+ plugins: readonly BunshotPlugin[];
25
+ bus: BunshotEventBus;
26
+ secretBundle: ResolvedSecretBundle;
27
+ }
28
+ /**
29
+ * Apply the drain() snapshot to the context after all plugin phases complete.
30
+ * Replaces the mutable cast pattern in createApp() — single internal mutation point.
31
+ */
32
+ export declare function finalizeContext(ctx: BunshotContext, snapshot: CoreRegistrarSnapshot): void;
33
+ export declare function buildContext(params: BuildContextParams): BunshotContext;