@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,139 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Memory
3
+ // ---------------------------------------------------------------------------
4
+ export function createMemoryCronRegistry() {
5
+ let stored = new Set();
6
+ return {
7
+ async getAll() {
8
+ return new Set(stored);
9
+ },
10
+ async save(names) {
11
+ stored = new Set(names);
12
+ },
13
+ };
14
+ }
15
+ // ---------------------------------------------------------------------------
16
+ // Redis
17
+ // ---------------------------------------------------------------------------
18
+ export function createRedisCronRegistry(getRedis, appName) {
19
+ const key = `cron-registry:${appName}`;
20
+ return {
21
+ async getAll() {
22
+ const raw = await getRedis().get(key);
23
+ if (!raw)
24
+ return new Set();
25
+ try {
26
+ const parsed = JSON.parse(raw);
27
+ if (Array.isArray(parsed))
28
+ return new Set(parsed.filter((x) => typeof x === 'string'));
29
+ }
30
+ catch { }
31
+ return new Set();
32
+ },
33
+ async save(names) {
34
+ await getRedis().set(key, JSON.stringify([...names]));
35
+ },
36
+ };
37
+ }
38
+ // ---------------------------------------------------------------------------
39
+ // SQLite
40
+ // ---------------------------------------------------------------------------
41
+ export function createSqliteCronRegistry(getDb) {
42
+ let initialized = false;
43
+ function ensureTable() {
44
+ if (initialized)
45
+ return;
46
+ getDb().run(`CREATE TABLE IF NOT EXISTS cron_scheduler_registry (
47
+ name TEXT NOT NULL,
48
+ PRIMARY KEY (name)
49
+ )`);
50
+ initialized = true;
51
+ }
52
+ return {
53
+ async getAll() {
54
+ ensureTable();
55
+ const rows = getDb()
56
+ .query('SELECT name FROM cron_scheduler_registry')
57
+ .all();
58
+ return new Set(rows.map(r => r.name));
59
+ },
60
+ async save(names) {
61
+ ensureTable();
62
+ const db = getDb();
63
+ db.run('DELETE FROM cron_scheduler_registry');
64
+ for (const name of names) {
65
+ db.run('INSERT INTO cron_scheduler_registry (name) VALUES (?)', [name]);
66
+ }
67
+ },
68
+ };
69
+ }
70
+ // ---------------------------------------------------------------------------
71
+ // MongoDB
72
+ // ---------------------------------------------------------------------------
73
+ export function createMongoCronRegistry(getConn, getMg, appName) {
74
+ const docId = appName || 'default';
75
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
+ let _model;
77
+ function getModel() {
78
+ if (_model)
79
+ return _model;
80
+ const conn = getConn();
81
+ if (conn.models['CronSchedulerRegistry']) {
82
+ _model = conn.models['CronSchedulerRegistry'];
83
+ return _model;
84
+ }
85
+ const mg = getMg();
86
+ const schema = new mg.Schema({ _id: String, names: [String] }, { collection: 'cron_scheduler_registry' });
87
+ _model = conn.model('CronSchedulerRegistry', schema);
88
+ return _model;
89
+ }
90
+ return {
91
+ async getAll() {
92
+ const doc = (await getModel().findById(docId).lean());
93
+ if (!doc?.names)
94
+ return new Set();
95
+ return new Set(doc.names);
96
+ },
97
+ async save(names) {
98
+ await getModel().findByIdAndUpdate(docId, { $set: { names: [...names] } }, { upsert: true });
99
+ },
100
+ };
101
+ }
102
+ export function createPostgresCronRegistry(pool, appName) {
103
+ const docId = appName || 'default';
104
+ let initialized = false;
105
+ async function ensureTable() {
106
+ if (initialized)
107
+ return;
108
+ await pool.query(`
109
+ CREATE TABLE IF NOT EXISTS bunshot_cron_registry (
110
+ id TEXT PRIMARY KEY,
111
+ names TEXT[] NOT NULL DEFAULT '{}'
112
+ )
113
+ `);
114
+ initialized = true;
115
+ }
116
+ return {
117
+ async getAll() {
118
+ await ensureTable();
119
+ const result = await pool.query('SELECT names FROM bunshot_cron_registry WHERE id = $1', [docId]);
120
+ return new Set(result.rows[0]?.names ?? []);
121
+ },
122
+ async save(names) {
123
+ await ensureTable();
124
+ await pool.query(`INSERT INTO bunshot_cron_registry (id, names)
125
+ VALUES ($1, $2)
126
+ ON CONFLICT (id) DO UPDATE SET names = EXCLUDED.names`, [docId, [...names]]);
127
+ },
128
+ };
129
+ }
130
+ export const cronRegistryFactories = {
131
+ memory: () => createMemoryCronRegistry(),
132
+ redis: infra => createRedisCronRegistry(infra.getRedis, infra.appName),
133
+ sqlite: infra => createSqliteCronRegistry(infra.getSqliteDb),
134
+ mongo: infra => {
135
+ const { conn, mg } = infra.getMongo();
136
+ return createMongoCronRegistry(() => conn, () => mg, infra.appName);
137
+ },
138
+ postgres: infra => createPostgresCronRegistry(infra.getPostgres().pool, infra.appName),
139
+ };
@@ -0,0 +1,26 @@
1
+ import type { IdempotencyAdapter } from '../../../packages/bunshot-core/src/index.js';
2
+ import type { RepoFactories } from '../../../packages/bunshot-core/src/index.js';
3
+ export declare function createMemoryIdempotencyAdapter(): IdempotencyAdapter;
4
+ export declare function createRedisIdempotencyAdapter(redis: {
5
+ get(key: string): Promise<string | null>;
6
+ set(...args: any[]): Promise<unknown>;
7
+ }, prefix: string): IdempotencyAdapter;
8
+ export declare function createMongoIdempotencyAdapter(appConn: {
9
+ models: Record<string, unknown>;
10
+ model<T>(name: string, schema: unknown): unknown;
11
+ }, mongoosePkg: unknown): IdempotencyAdapter;
12
+ export declare function createSqliteIdempotencyAdapter(db: {
13
+ run(sql: string, params?: unknown[]): void;
14
+ query<T>(sql: string): {
15
+ get(...args: unknown[]): T | null;
16
+ };
17
+ }): IdempotencyAdapter;
18
+ type PgPool = {
19
+ query<R extends Record<string, unknown> = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<{
20
+ rows: R[];
21
+ rowCount: number | null;
22
+ }>;
23
+ };
24
+ export declare function createPostgresIdempotencyAdapter(pool: PgPool): IdempotencyAdapter;
25
+ export declare const idempotencyFactories: RepoFactories<IdempotencyAdapter>;
26
+ export {};
@@ -0,0 +1,178 @@
1
+ import { DEFAULT_MAX_ENTRIES, evictOldest } from '../../../packages/bunshot-core/src/index.js';
2
+ // ---------------------------------------------------------------------------
3
+ // Memory
4
+ // ---------------------------------------------------------------------------
5
+ export function createMemoryIdempotencyAdapter() {
6
+ const store = new Map();
7
+ return {
8
+ async get(key) {
9
+ const record = store.get(key);
10
+ if (!record)
11
+ return null;
12
+ if (Date.now() > record.expiresAt) {
13
+ store.delete(key);
14
+ return null;
15
+ }
16
+ return { response: record.body, status: record.status, createdAt: record.createdAt };
17
+ },
18
+ async set(key, response, status, ttlSeconds) {
19
+ if (store.has(key))
20
+ return; // NX semantics — don't overwrite
21
+ evictOldest(store, DEFAULT_MAX_ENTRIES);
22
+ store.set(key, {
23
+ status,
24
+ body: response,
25
+ createdAt: Date.now(),
26
+ expiresAt: Date.now() + ttlSeconds * 1000,
27
+ });
28
+ },
29
+ async clear() {
30
+ store.clear();
31
+ },
32
+ };
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Redis
36
+ // ---------------------------------------------------------------------------
37
+ export function createRedisIdempotencyAdapter(redis, prefix) {
38
+ function rkey(key) {
39
+ return `idempotency:${prefix}:${key}`;
40
+ }
41
+ return {
42
+ async get(key) {
43
+ const raw = await redis.get(rkey(key));
44
+ if (!raw)
45
+ return null;
46
+ const record = JSON.parse(raw);
47
+ return { response: record.body, status: record.status, createdAt: record.createdAt };
48
+ },
49
+ async set(key, response, status, ttlSeconds) {
50
+ const value = JSON.stringify({ status, body: response, createdAt: Date.now() });
51
+ await redis.set(rkey(key), value, 'EX', ttlSeconds, 'NX');
52
+ },
53
+ };
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // MongoDB
57
+ // ---------------------------------------------------------------------------
58
+ export function createMongoIdempotencyAdapter(appConn, mongoosePkg) {
59
+ function getModel() {
60
+ if (appConn.models['Idempotency'])
61
+ return appConn.models['Idempotency'];
62
+ const { Schema } = mongoosePkg;
63
+ const schema = new Schema({
64
+ key: { type: String, required: true, unique: true },
65
+ status: { type: Number, required: true },
66
+ body: { type: String, required: true },
67
+ createdAt: { type: Date, required: true },
68
+ expiresAt: { type: Date, required: true, index: { expireAfterSeconds: 0 } },
69
+ }, { collection: 'idempotency' });
70
+ return appConn.model('Idempotency', schema);
71
+ }
72
+ return {
73
+ async get(key) {
74
+ const doc = await getModel()
75
+ .findOne({ key, expiresAt: { $gt: new Date() } }, 'status body createdAt')
76
+ .lean();
77
+ if (!doc)
78
+ return null;
79
+ return { status: doc.status, response: doc.body, createdAt: doc.createdAt.getTime() };
80
+ },
81
+ async set(key, response, status, ttlSeconds) {
82
+ const now = new Date();
83
+ try {
84
+ await getModel().create({
85
+ key,
86
+ status,
87
+ body: response,
88
+ createdAt: now,
89
+ expiresAt: new Date(now.getTime() + ttlSeconds * 1000),
90
+ });
91
+ }
92
+ catch (err) {
93
+ // Duplicate key — NX semantics: ignore
94
+ if (err?.code === 11000 || err?.code === '11000')
95
+ return;
96
+ throw err;
97
+ }
98
+ },
99
+ };
100
+ }
101
+ // ---------------------------------------------------------------------------
102
+ // SQLite
103
+ // ---------------------------------------------------------------------------
104
+ export function createSqliteIdempotencyAdapter(db) {
105
+ let initialized = false;
106
+ function ensureTable() {
107
+ if (initialized)
108
+ return;
109
+ db.run(`CREATE TABLE IF NOT EXISTS idempotency (
110
+ key TEXT PRIMARY KEY,
111
+ status INTEGER NOT NULL,
112
+ body TEXT NOT NULL,
113
+ createdAt INTEGER NOT NULL,
114
+ expiresAt INTEGER NOT NULL
115
+ )`);
116
+ initialized = true;
117
+ }
118
+ return {
119
+ async get(key) {
120
+ ensureTable();
121
+ const row = db
122
+ .query('SELECT status, body, createdAt FROM idempotency WHERE key = ? AND expiresAt > ?')
123
+ .get(key, Date.now());
124
+ if (!row)
125
+ return null;
126
+ return { status: row.status, response: row.body, createdAt: row.createdAt };
127
+ },
128
+ async set(key, response, status, ttlSeconds) {
129
+ ensureTable();
130
+ const now = Date.now();
131
+ db.run('INSERT OR IGNORE INTO idempotency (key, status, body, createdAt, expiresAt) VALUES (?, ?, ?, ?, ?)', [key, status, response, now, now + ttlSeconds * 1000]);
132
+ },
133
+ };
134
+ }
135
+ export function createPostgresIdempotencyAdapter(pool) {
136
+ let initialized = false;
137
+ async function ensureTable() {
138
+ if (initialized)
139
+ return;
140
+ await pool.query(`
141
+ CREATE TABLE IF NOT EXISTS bunshot_idempotency (
142
+ key TEXT PRIMARY KEY,
143
+ status INTEGER NOT NULL,
144
+ body TEXT NOT NULL,
145
+ created_at BIGINT NOT NULL,
146
+ expires_at BIGINT NOT NULL
147
+ )
148
+ `);
149
+ initialized = true;
150
+ }
151
+ return {
152
+ async get(key) {
153
+ await ensureTable();
154
+ const result = await pool.query('SELECT status, body, created_at FROM bunshot_idempotency WHERE key = $1 AND expires_at > $2', [key, Date.now()]);
155
+ const row = result.rows[0];
156
+ if (!row)
157
+ return null;
158
+ return { status: row.status, response: row.body, createdAt: Number(row.created_at) };
159
+ },
160
+ async set(key, response, status, ttlSeconds) {
161
+ await ensureTable();
162
+ const now = Date.now();
163
+ await pool.query(`INSERT INTO bunshot_idempotency (key, status, body, created_at, expires_at)
164
+ VALUES ($1, $2, $3, $4, $5)
165
+ ON CONFLICT (key) DO NOTHING`, [key, status, response, now, now + ttlSeconds * 1000]);
166
+ },
167
+ };
168
+ }
169
+ export const idempotencyFactories = {
170
+ memory: () => createMemoryIdempotencyAdapter(),
171
+ sqlite: infra => createSqliteIdempotencyAdapter(infra.getSqliteDb()),
172
+ redis: infra => createRedisIdempotencyAdapter(infra.getRedis(), infra.appName),
173
+ mongo: infra => {
174
+ const { conn, mg } = infra.getMongo();
175
+ return createMongoIdempotencyAdapter(conn, mg);
176
+ },
177
+ postgres: infra => createPostgresIdempotencyAdapter(infra.getPostgres().pool),
178
+ };
@@ -0,0 +1,6 @@
1
+ export { createMemoryUploadRegistry, createRedisUploadRegistry, createMongoUploadRegistry, createSqliteUploadRegistry, createUploadRegistryFactories, uploadRegistryFactories, } from './uploadRegistry';
2
+ export { createMemoryIdempotencyAdapter, createRedisIdempotencyAdapter, createMongoIdempotencyAdapter, createSqliteIdempotencyAdapter, idempotencyFactories, } from './idempotency';
3
+ export { createMemoryWsMessageRepository, createRedisWsMessageRepository, createMongoWsMessageRepository, createSqliteWsMessageRepository, wsMessageFactories, } from './wsMessages';
4
+ export { createMemoryCronRegistry, createRedisCronRegistry, createSqliteCronRegistry, createMongoCronRegistry, cronRegistryFactories, } from './cronRegistry';
5
+ export type { StoreType, StoreInfra, RepoFactories } from '../../../packages/bunshot-core/src/index.js';
6
+ export { resolveRepo } from '../../../packages/bunshot-core/src/index.js';
@@ -0,0 +1,8 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Persistence — barrel export
3
+ // ---------------------------------------------------------------------------
4
+ export { createMemoryUploadRegistry, createRedisUploadRegistry, createMongoUploadRegistry, createSqliteUploadRegistry, createUploadRegistryFactories, uploadRegistryFactories, } from './uploadRegistry';
5
+ export { createMemoryIdempotencyAdapter, createRedisIdempotencyAdapter, createMongoIdempotencyAdapter, createSqliteIdempotencyAdapter, idempotencyFactories, } from './idempotency';
6
+ export { createMemoryWsMessageRepository, createRedisWsMessageRepository, createMongoWsMessageRepository, createSqliteWsMessageRepository, wsMessageFactories, } from './wsMessages';
7
+ export { createMemoryCronRegistry, createRedisCronRegistry, createSqliteCronRegistry, createMongoCronRegistry, cronRegistryFactories, } from './cronRegistry';
8
+ export { resolveRepo } from '../../../packages/bunshot-core/src/index.js';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Re-exports from the canonical bunshot-core StoreInfra module.
3
+ *
4
+ * Framework-specific aliases (FrameworkStoreType, FrameworkStoreInfra) are
5
+ * preserved for backwards compatibility with existing imports.
6
+ */
7
+ export type { StoreInfra as FrameworkStoreInfra, RepoFactories } from '../../../packages/bunshot-core/src/index.js';
8
+ export type { StoreType as FrameworkStoreType } from '../../../packages/bunshot-core/src/index.js';
9
+ export { resolveRepo } from '../../../packages/bunshot-core/src/index.js';
@@ -0,0 +1 @@
1
+ export { resolveRepo } from '../../../packages/bunshot-core/src/index.js';
@@ -0,0 +1,35 @@
1
+ import type { UploadRegistryRepository } from '../../../packages/bunshot-core/src/index.js';
2
+ import type { RepoFactories } from '../../../packages/bunshot-core/src/index.js';
3
+ export declare const DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS: number;
4
+ export interface Clearable {
5
+ clear(): Promise<void> | void;
6
+ }
7
+ export type ClearableRepository<T> = T & Clearable;
8
+ export declare function createMemoryUploadRegistry(ttlSeconds?: number): ClearableRepository<UploadRegistryRepository>;
9
+ export declare function createRedisUploadRegistry(redis: {
10
+ get(key: string): Promise<string | null>;
11
+ set(key: string, value: string, exFlag?: 'EX', ttl?: number): Promise<unknown>;
12
+ del(key: string): Promise<number>;
13
+ }, prefix: string, ttlSeconds?: number): UploadRegistryRepository;
14
+ export declare function createMongoUploadRegistry(appConn: {
15
+ models: Record<string, unknown>;
16
+ model<T>(name: string, schema: unknown): unknown;
17
+ }, mongoosePkg: unknown, ttlSeconds?: number): UploadRegistryRepository;
18
+ export declare function createSqliteUploadRegistry(db: {
19
+ run(sql: string, params?: unknown[]): void;
20
+ query<T>(sql: string): {
21
+ get(...args: unknown[]): T | null;
22
+ all(...args: unknown[]): T[];
23
+ };
24
+ }, ttlSeconds?: number): UploadRegistryRepository;
25
+ type PgPool = {
26
+ query<R extends Record<string, unknown> = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<{
27
+ rows: R[];
28
+ rowCount: number | null;
29
+ }>;
30
+ };
31
+ export declare function createPostgresUploadRegistry(pool: PgPool, ttlSeconds?: number): UploadRegistryRepository;
32
+ export declare function createUploadRegistryFactories(ttlSeconds?: number): RepoFactories<UploadRegistryRepository>;
33
+ /** @deprecated Use createUploadRegistryFactories() instead */
34
+ export declare const uploadRegistryFactories: RepoFactories<UploadRegistryRepository>;
35
+ export {};
@@ -0,0 +1,235 @@
1
+ import { DEFAULT_MAX_ENTRIES, evictOldest } from '../../../packages/bunshot-core/src/index.js';
2
+ export const DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS = 30 * 24 * 60 * 60; // 30 days
3
+ export function createMemoryUploadRegistry(ttlSeconds = DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS) {
4
+ const store = new Map();
5
+ return {
6
+ async register(record) {
7
+ evictOldest(store, DEFAULT_MAX_ENTRIES);
8
+ store.set(record.key, record);
9
+ },
10
+ async get(key) {
11
+ const record = store.get(key);
12
+ if (!record)
13
+ return null;
14
+ if (Date.now() - record.createdAt > ttlSeconds * 1000) {
15
+ store.delete(key);
16
+ return null;
17
+ }
18
+ return record;
19
+ },
20
+ async delete(key) {
21
+ return store.delete(key);
22
+ },
23
+ async clear() {
24
+ store.clear();
25
+ },
26
+ };
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // Redis
30
+ // ---------------------------------------------------------------------------
31
+ export function createRedisUploadRegistry(redis, prefix, ttlSeconds = DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS) {
32
+ function rkey(key) {
33
+ return `ur:${prefix}:${key}`;
34
+ }
35
+ return {
36
+ async register(record) {
37
+ await redis.set(rkey(record.key), JSON.stringify(record), 'EX', ttlSeconds);
38
+ },
39
+ async get(key) {
40
+ const raw = await redis.get(rkey(key));
41
+ if (!raw)
42
+ return null;
43
+ return JSON.parse(raw);
44
+ },
45
+ async delete(key) {
46
+ const deleted = await redis.del(rkey(key));
47
+ return deleted > 0;
48
+ },
49
+ };
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // MongoDB
53
+ // ---------------------------------------------------------------------------
54
+ export function createMongoUploadRegistry(appConn, mongoosePkg, ttlSeconds = DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS) {
55
+ function getModel() {
56
+ if (appConn.models['UploadRegistry'])
57
+ return appConn.models['UploadRegistry'];
58
+ const { Schema } = mongoosePkg;
59
+ const schema = new Schema({
60
+ key: { type: String, required: true, unique: true },
61
+ ownerUserId: { type: String },
62
+ tenantId: { type: String },
63
+ mimeType: { type: String },
64
+ bucket: { type: String },
65
+ createdAt: { type: Number, required: true },
66
+ expiresAt: { type: Date, required: true },
67
+ }, { collection: 'upload_registry' });
68
+ schema.index({ expiresAt: 1 }, { expireAfterSeconds: 0 });
69
+ return appConn.model('UploadRegistry', schema);
70
+ }
71
+ function expiresAt() {
72
+ return new Date(Date.now() + ttlSeconds * 1000);
73
+ }
74
+ return {
75
+ async register(record) {
76
+ await getModel().updateOne({ key: record.key }, { $set: { ...record, expiresAt: expiresAt() } }, { upsert: true });
77
+ },
78
+ async get(key) {
79
+ const doc = await getModel().findOne({ key }).lean();
80
+ if (!doc)
81
+ return null;
82
+ return {
83
+ key: doc.key,
84
+ ownerUserId: doc.ownerUserId,
85
+ tenantId: doc.tenantId,
86
+ mimeType: doc.mimeType,
87
+ bucket: doc.bucket,
88
+ createdAt: doc.createdAt,
89
+ };
90
+ },
91
+ async delete(key) {
92
+ const result = await getModel().deleteOne({ key });
93
+ return result.deletedCount > 0;
94
+ },
95
+ };
96
+ }
97
+ // ---------------------------------------------------------------------------
98
+ // SQLite
99
+ // ---------------------------------------------------------------------------
100
+ export function createSqliteUploadRegistry(db, ttlSeconds = DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS) {
101
+ let initialized = false;
102
+ function ensureTable() {
103
+ if (initialized)
104
+ return;
105
+ db.run(`CREATE TABLE IF NOT EXISTS upload_registry (
106
+ key TEXT PRIMARY KEY,
107
+ owner_user_id TEXT,
108
+ tenant_id TEXT,
109
+ mime_type TEXT,
110
+ bucket TEXT,
111
+ created_at INTEGER NOT NULL,
112
+ expires_at INTEGER NOT NULL
113
+ )`);
114
+ initialized = true;
115
+ }
116
+ function nowPlusTtl() {
117
+ return Date.now() + ttlSeconds * 1000;
118
+ }
119
+ return {
120
+ async register(record) {
121
+ ensureTable();
122
+ // Lazy cleanup: remove expired entries on each write
123
+ db.run('DELETE FROM upload_registry WHERE expires_at < ?', [Date.now()]);
124
+ db.run(`INSERT OR REPLACE INTO upload_registry (key, owner_user_id, tenant_id, mime_type, bucket, created_at, expires_at)
125
+ VALUES (?, ?, ?, ?, ?, ?, ?)`, [
126
+ record.key,
127
+ record.ownerUserId ?? null,
128
+ record.tenantId ?? null,
129
+ record.mimeType ?? null,
130
+ record.bucket ?? null,
131
+ record.createdAt,
132
+ nowPlusTtl(),
133
+ ]);
134
+ },
135
+ async get(key) {
136
+ ensureTable();
137
+ const row = db
138
+ .query('SELECT * FROM upload_registry WHERE key = ? AND expires_at > ?')
139
+ .get(key, Date.now());
140
+ if (!row)
141
+ return null;
142
+ return {
143
+ key: row.key,
144
+ ownerUserId: row.owner_user_id ?? undefined,
145
+ tenantId: row.tenant_id ?? undefined,
146
+ mimeType: row.mime_type ?? undefined,
147
+ bucket: row.bucket ?? undefined,
148
+ createdAt: row.created_at,
149
+ };
150
+ },
151
+ async delete(key) {
152
+ ensureTable();
153
+ db.run('DELETE FROM upload_registry WHERE key = ?', [key]);
154
+ const changes = db.query('SELECT changes() as changes').get()?.changes ?? 0;
155
+ return changes > 0;
156
+ },
157
+ };
158
+ }
159
+ export function createPostgresUploadRegistry(pool, ttlSeconds = DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS) {
160
+ let initialized = false;
161
+ async function ensureTable() {
162
+ if (initialized)
163
+ return;
164
+ await pool.query(`
165
+ CREATE TABLE IF NOT EXISTS bunshot_upload_registry (
166
+ key TEXT PRIMARY KEY,
167
+ owner_user_id TEXT,
168
+ tenant_id TEXT,
169
+ mime_type TEXT,
170
+ bucket TEXT,
171
+ created_at BIGINT NOT NULL,
172
+ expires_at BIGINT NOT NULL
173
+ )
174
+ `);
175
+ initialized = true;
176
+ }
177
+ return {
178
+ async register(record) {
179
+ await ensureTable();
180
+ const expiresAt = Date.now() + ttlSeconds * 1000;
181
+ await pool.query(`INSERT INTO bunshot_upload_registry
182
+ (key, owner_user_id, tenant_id, mime_type, bucket, created_at, expires_at)
183
+ VALUES ($1, $2, $3, $4, $5, $6, $7)
184
+ ON CONFLICT (key) DO UPDATE SET
185
+ owner_user_id = EXCLUDED.owner_user_id,
186
+ tenant_id = EXCLUDED.tenant_id,
187
+ mime_type = EXCLUDED.mime_type,
188
+ bucket = EXCLUDED.bucket,
189
+ created_at = EXCLUDED.created_at,
190
+ expires_at = EXCLUDED.expires_at`, [
191
+ record.key,
192
+ record.ownerUserId ?? null,
193
+ record.tenantId ?? null,
194
+ record.mimeType ?? null,
195
+ record.bucket ?? null,
196
+ record.createdAt,
197
+ expiresAt,
198
+ ]);
199
+ },
200
+ async get(key) {
201
+ await ensureTable();
202
+ const result = await pool.query('SELECT key, owner_user_id, tenant_id, mime_type, bucket, created_at FROM bunshot_upload_registry WHERE key = $1 AND expires_at > $2', [key, Date.now()]);
203
+ const row = result.rows[0];
204
+ if (!row)
205
+ return null;
206
+ return {
207
+ key: row.key,
208
+ ownerUserId: row.owner_user_id ?? undefined,
209
+ tenantId: row.tenant_id ?? undefined,
210
+ mimeType: row.mime_type ?? undefined,
211
+ bucket: row.bucket ?? undefined,
212
+ createdAt: Number(row.created_at),
213
+ };
214
+ },
215
+ async delete(key) {
216
+ await ensureTable();
217
+ const result = await pool.query('DELETE FROM bunshot_upload_registry WHERE key = $1', [key]);
218
+ return (result.rowCount ?? 0) > 0;
219
+ },
220
+ };
221
+ }
222
+ export function createUploadRegistryFactories(ttlSeconds = DEFAULT_UPLOAD_REGISTRY_TTL_SECONDS) {
223
+ return {
224
+ memory: () => createMemoryUploadRegistry(ttlSeconds),
225
+ sqlite: infra => createSqliteUploadRegistry(infra.getSqliteDb(), ttlSeconds),
226
+ redis: infra => createRedisUploadRegistry(infra.getRedis(), infra.appName, ttlSeconds),
227
+ mongo: infra => {
228
+ const { conn, mg } = infra.getMongo();
229
+ return createMongoUploadRegistry(conn, mg, ttlSeconds);
230
+ },
231
+ postgres: infra => createPostgresUploadRegistry(infra.getPostgres().pool, ttlSeconds),
232
+ };
233
+ }
234
+ /** @deprecated Use createUploadRegistryFactories() instead */
235
+ export const uploadRegistryFactories = createUploadRegistryFactories();
@@ -0,0 +1,22 @@
1
+ import type { WsMessageRepository } from '../../../packages/bunshot-core/src/index.js';
2
+ import type { RepoFactories } from '../../../packages/bunshot-core/src/index.js';
3
+ export declare function createMemoryWsMessageRepository(): WsMessageRepository;
4
+ export declare function createRedisWsMessageRepository(redis: {
5
+ lpush(key: string, value: string): Promise<number>;
6
+ ltrim(key: string, start: number, stop: number): Promise<string>;
7
+ expire(key: string, seconds: number): Promise<number>;
8
+ lrange(key: string, start: number, stop: number): Promise<string[]>;
9
+ del(...keys: string[]): Promise<number>;
10
+ }): WsMessageRepository;
11
+ export declare function createMongoWsMessageRepository(conn: {
12
+ models: Record<string, unknown>;
13
+ model(name: string, schema: unknown): unknown;
14
+ }, mongoosePkg: unknown): WsMessageRepository;
15
+ export declare function createSqliteWsMessageRepository(db: {
16
+ run(sql: string, params?: unknown[]): void;
17
+ query<T>(sql: string): {
18
+ get(...args: unknown[]): T | null;
19
+ all(...args: unknown[]): T[];
20
+ };
21
+ }): WsMessageRepository;
22
+ export declare const wsMessageFactories: RepoFactories<WsMessageRepository>;