@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
@@ -1,123 +0,0 @@
1
- ## Exports
2
-
3
- ```ts
4
- import {
5
- // Server factory
6
- createServer, createApp,
7
-
8
- // DB
9
- connectMongo, connectAuthMongo, connectAppMongo, disconnectMongo,
10
- authConnection, appConnection, mongoose,
11
- connectRedis, disconnectRedis, getRedis,
12
-
13
- // Jobs
14
- createQueue, createWorker,
15
- type Job,
16
-
17
- // WebSocket
18
- websocket, createWsUpgradeHandler, publish,
19
- subscribe, unsubscribe, getSubscriptions, handleRoomActions,
20
- getRooms, getRoomSubscribers, setPresenceEnabled,
21
-
22
- // WebSocket — Heartbeat
23
- registerSocket, deregisterSocket, handlePong,
24
- startHeartbeat, stopHeartbeat, clearHeartbeatState,
25
- type HeartbeatConfig,
26
-
27
- // WebSocket — Presence
28
- trackSocket, untrackSocket, addPresence, removePresence, cleanupPresence,
29
- getRoomPresence, getUserPresence, clearPresenceStore,
30
-
31
- // WebSocket — Message Persistence
32
- persistMessage, getMessageHistory, configureRoom,
33
- setWsMessageStore, setWsMessageDefaults, clearWsMessageMemoryStore,
34
- type StoredMessage, type WsMessageStore, type WsMessageDefaults, type RoomPersistenceConfig,
35
-
36
- // Auth utilities
37
- signToken, verifyToken,
38
- createSession, getSession, deleteSession, getUserSessions, getActiveSessionCount,
39
- evictOldestSession, updateSessionLastActive, setSessionStore, deleteUserSessions,
40
- setRefreshToken, getSessionByRefreshToken, rotateRefreshToken, // refresh token management
41
- createVerificationToken, getVerificationToken, deleteVerificationToken, // email verification tokens
42
- createResetToken, consumeResetToken, setPasswordResetStore, // password reset tokens
43
- createMfaChallenge, consumeMfaChallenge, replaceMfaChallengeOtp, setMfaChallengeStore, // MFA challenge tokens
44
- storeOAuthCode, consumeOAuthCode, setOAuthCodeStore, // OAuth one-time authorization codes
45
- bustAuthLimit, trackAttempt, isLimited, clearMemoryRateLimitStore, // auth rate limiting — use in custom routes or admin unlocks
46
- buildFingerprint, // HTTP fingerprint hash (IP-independent) — use in custom bot detection logic
47
- sqliteAuthAdapter, setSqliteDb, startSqliteCleanup, // SQLite backend (persisted)
48
- memoryAuthAdapter, clearMemoryStore, // in-memory backend (ephemeral)
49
- setUserRoles, addUserRole, removeUserRole, // app-wide role management
50
- getTenantRoles, setTenantRoles, addTenantRole, removeTenantRole, // tenant-scoped role management
51
- type AuthAdapter, type OAuthProfile, type OAuthProviderConfig, type MfaChallengeData,
52
- type AuthRateLimitConfig, type BotProtectionConfig, type BotProtectionOptions,
53
- type LimitOpts, type RateLimitOptions,
54
- type SessionMetadata, type SessionInfo, type RefreshResult,
55
-
56
- // Tenancy
57
- createTenant, deleteTenant, getTenant, listTenants, // tenant provisioning (MongoDB)
58
- invalidateTenantCache, // invalidate LRU cache entry
59
- type TenantInfo, type CreateTenantOptions,
60
- type TenancyConfig, type TenantConfig,
61
-
62
- // Middleware
63
- bearerAuth, identify, userAuth, rateLimit,
64
- botProtection, // CIDR blocklist + per-route bot protection
65
- requireRole, // role-based access control (tenant-aware)
66
- requireVerifiedEmail, // blocks unverified email addresses
67
- cacheResponse, bustCache, bustCachePattern, setCacheStore, // response caching (tenant-namespaced)
68
- webhookAuth, // HMAC signature verification for incoming webhooks
69
- type WebhookAuthOptions, type WebhookTimestampOptions,
70
-
71
- // Crypto / HMAC utilities
72
- timingSafeEqual, // constant-time string comparison for secrets/hashes
73
- sha256, // SHA-256 hash helper
74
- hmacSign, hmacVerify, // low-level HMAC-SHA256 primitives (key rotation supported)
75
- signCookieValue, verifyCookieValue, // signed cookie values (tamper-proof)
76
- signCursor, verifyCursor, // signed pagination cursors
77
- createPresignedUrl, verifyPresignedUrl, // stateless HMAC presigned URLs
78
- idempotent, setIdempotencyStore, clearIdempotencyMemoryStore, // idempotency deduplication
79
- type IdempotencyOptions,
80
- requireSignedRequest, // middleware: require HMAC-signed requests
81
- type RequestSigningOptions,
82
- maybeSignCursor, // sign a cursor if signing.cursors is enabled
83
-
84
- // IP / proxy utilities
85
- getClientIp, // centralized IP extraction — respects security.trustProxy setting
86
- setTrustProxy, // configure trust level (called automatically by createApp)
87
-
88
- // Utilities
89
- HttpError, ValidationError, // ValidationError extends HttpError, carries ZodIssue[]
90
- defaultValidationErrorFormatter, // default { error, details, requestId } shape
91
- log, validate, createRouter, createRoute,
92
- registerSchema, registerSchemas, // named OpenAPI schema registration
93
- zodToMongoose, // Zod → Mongoose schema conversion
94
- createDtoMapper, // DB document → API DTO mapper factory
95
- type ZodToMongooseConfig, type ZodToMongooseRefConfig, type DtoMapperConfig,
96
- getAppRoles, // returns the valid roles list configured at startup
97
-
98
- // Constants
99
- COOKIE_TOKEN, HEADER_USER_TOKEN,
100
- COOKIE_REFRESH_TOKEN, HEADER_REFRESH_TOKEN, // refresh token cookie/header names
101
- HEADER_IDEMPOTENCY_KEY, // "idempotency-key"
102
- HEADER_SIGNATURE, HEADER_TIMESTAMP, // request signing header names
103
-
104
- // Types
105
- type AppEnv, type AppVariables,
106
- type ValidationErrorFormatter, type DefaultValidationErrorBody, type ValidationErrorDetail,
107
- type ValidationConfig,
108
- type CreateServerConfig, type CreateAppConfig, type ModelSchemasConfig,
109
- type DbConfig, type AppMeta, type AuthConfig, type OAuthConfig, type SecurityConfig,
110
- type PrimaryField, type EmailVerificationConfig, type PasswordResetConfig,
111
- type RefreshTokenConfig, type MfaConfig, type MfaEmailOtpConfig, type JobsConfig,
112
- type AccountDeletionConfig, type PasswordPolicyConfig, type OAuthCodePayload,
113
- type SocketData, type WsConfig,
114
- } from "@lastshotlabs/bunshot";
115
-
116
- // Jobs (separate entrypoint)
117
- import {
118
- createQueue, createWorker,
119
- createCronWorker, cleanupStaleSchedulers, getRegisteredCronNames,
120
- createDLQHandler,
121
- type Job,
122
- } from "@lastshotlabs/bunshot/queue";
123
- ```
@@ -1,59 +0,0 @@
1
- ## Extending the Context (Custom Variables)
2
-
3
- When building a tenant app or any app that needs extra typed context variables (beyond the built-in), extend `AppEnv["Variables"]` and create a typed router factory.
4
-
5
- ```ts
6
- // src/lib/context.ts
7
- import { createRouter as coreCreateRouter, type AppEnv } from "@lastshotlabs/bunshot";
8
- import type { OpenAPIHono } from "@hono/zod-openapi";
9
-
10
- export type MyVariables = AppEnv["Variables"] & {
11
- tenantId: string;
12
- };
13
-
14
- export type MyEnv = { Variables: MyVariables };
15
-
16
- export const createRouter = () => coreCreateRouter() as unknown as OpenAPIHono<MyEnv>;
17
- ```
18
-
19
- Use the local `createRouter` instead of the one from the package — your routes will then have full TypeScript access to the extra variables:
20
-
21
- ```ts
22
- // src/routes/items.ts
23
- import { createRouter } from "../lib/context";
24
- import { userAuth } from "@lastshotlabs/bunshot";
25
-
26
- export const router = createRouter();
27
-
28
- router.use("/items", userAuth);
29
-
30
- router.get("/items", async (c) => {
31
- const tenantId = c.get("tenantId"); // fully typed
32
- const userId = c.get("userId"); // still available from AppEnv
33
- return c.json({ tenantId, userId });
34
- });
35
- ```
36
-
37
- Populate the extra variables from a global middleware:
38
-
39
- ```ts
40
- // src/middleware/tenant.ts
41
- import type { MiddlewareHandler } from "hono";
42
- import type { MyEnv } from "../lib/context";
43
-
44
- export const tenantMiddleware: MiddlewareHandler<MyEnv> = async (c, next) => {
45
- const tenantId = c.req.header("x-tenant-id") ?? "default";
46
- c.set("tenantId", tenantId);
47
- await next();
48
- };
49
- ```
50
-
51
- Then register it in `createServer`:
52
-
53
- ```ts
54
- await createServer({
55
- routesDir: import.meta.dir + "/routes",
56
- app: { name: "My App", version: "1.0.0" },
57
- middleware: [tenantMiddleware],
58
- });
59
- ```
@@ -1,3 +0,0 @@
1
- # Bunshot by Last Shot Labs
2
-
3
- A personal Bun + Hono API framework. Install it in any app and get auth, sessions, rate limiting, WebSocket, queues, and OpenAPI docs out of the box — then add your own routes, workers, models, and services.
@@ -1,6 +0,0 @@
1
- ## Installation
2
-
3
- ```bash
4
- # from npm
5
- bun add @lastshotlabs/bunshot
6
- ```
@@ -1,140 +0,0 @@
1
- ## Jobs (BullMQ)
2
-
3
- > **Redis requirement**: BullMQ requires `maxmemory-policy noeviction`. Set it in `redis.conf` or via Docker:
4
- > ```yaml
5
- > command: redis-server --maxmemory-policy noeviction
6
- > ```
7
-
8
- Queues and workers share the existing Redis connection automatically.
9
-
10
- ### Define a queue
11
-
12
- ```ts
13
- // src/queues/email.ts
14
- import { createQueue } from "@lastshotlabs/bunshot";
15
-
16
- export type EmailJob = { to: string; subject: string; body: string };
17
-
18
- export const emailQueue = createQueue<EmailJob>("email");
19
- ```
20
-
21
- ### Add jobs
22
-
23
- ```ts
24
- import { emailQueue } from "../queues/email";
25
-
26
- await emailQueue.add("send-welcome", { to: "user@example.com", subject: "Welcome", body: "..." });
27
-
28
- // with options
29
- await emailQueue.add("send-reset", payload, { delay: 5000, attempts: 3 });
30
- ```
31
-
32
- ### Define a worker
33
-
34
- ```ts
35
- // src/workers/email.ts
36
- import { createWorker } from "@lastshotlabs/bunshot";
37
- import type { EmailJob } from "../queues/email";
38
-
39
- export const emailWorker = createWorker<EmailJob>("email", async (job) => {
40
- const { to, subject, body } = job.data;
41
- // send email...
42
- });
43
- ```
44
-
45
- Workers in `workersDir` are auto-discovered and registered after the server starts — no manual imports needed. Subdirectories are supported.
46
-
47
- ### Broadcasting WebSocket messages from a worker
48
-
49
- Use `publish` to broadcast to all connected clients from inside a worker (or anywhere):
50
-
51
- ```ts
52
- // src/workers/notify.ts
53
- import { createWorker, publish } from "@lastshotlabs/bunshot";
54
- import type { NotifyJob } from "../queues/notify";
55
-
56
- export const notifyWorker = createWorker<NotifyJob>("notify", async (job) => {
57
- const { text, from } = job.data;
58
- publish("broadcast", { text, from, timestamp: new Date().toISOString() });
59
- });
60
- ```
61
-
62
- `publish` is available after `createServer` resolves. Workers are loaded after that point, so it's always safe to use inside a worker.
63
-
64
- ### Cron / scheduled workers
65
-
66
- Use `createCronWorker` for recurring jobs. It creates both a queue and worker, and uses BullMQ's `upsertJobScheduler` for idempotent scheduling across restarts.
67
-
68
- ```ts
69
- // src/workers/cleanup.ts
70
- import { createCronWorker } from "@lastshotlabs/bunshot/queue";
71
-
72
- export const { worker, queue } = createCronWorker(
73
- "cleanup",
74
- async (job) => {
75
- // runs every hour
76
- await deleteExpiredRecords();
77
- },
78
- { cron: "0 * * * *" } // or { every: 3_600_000 } for interval-based
79
- );
80
- ```
81
-
82
- **Ghost job cleanup**: When a cron worker is renamed or removed, the old scheduler persists in Redis. Bunshot handles this automatically — after all workers in `workersDir` are loaded, stale schedulers are pruned. For workers managed outside `workersDir`, call `cleanupStaleSchedulers(activeNames)` manually.
83
-
84
- ### Job status endpoint
85
-
86
- Expose job state via REST for client-side polling (e.g., long-running uploads or exports):
87
-
88
- ```ts
89
- import { userAuth, requireRole } from "@lastshotlabs/bunshot";
90
-
91
- await createServer({
92
- jobs: {
93
- statusEndpoint: true, // default: false
94
- auth: "userAuth", // "userAuth" | "none" | MiddlewareHandler[]
95
- roles: ["admin"], // require these roles (works with userAuth)
96
- allowedQueues: ["export", "upload"], // whitelist — empty = nothing exposed (secure by default)
97
- scopeToUser: false, // when true with userAuth, users only see their own jobs
98
- },
99
- });
100
- ```
101
-
102
- **Auth options:**
103
- - `"userAuth"` — requires an authenticated user session. Combine with `roles` for RBAC.
104
- - `"none"` — no auth protection (not recommended for production).
105
- - `MiddlewareHandler[]` — pass a custom middleware stack for full control, e.g. `[userAuth, requireRole("admin")]`.
106
-
107
- #### Endpoints
108
-
109
- | Endpoint | Purpose |
110
- |---|---|
111
- | `GET /jobs` | List available queues |
112
- | `GET /jobs/:queue` | List jobs in a queue (paginated, filterable by state) |
113
- | `GET /jobs/:queue/:id` | Job state, progress, result, or failure reason |
114
- | `GET /jobs/:queue/:id/logs` | Job logs |
115
- | `GET /jobs/:queue/dead-letters` | Paginated list of DLQ jobs |
116
-
117
- The list endpoint (`GET /jobs/:queue`) accepts `?state=waiting|active|completed|failed|delayed|paused` and `?start=0&end=19` for pagination.
118
-
119
- ### Dead Letter Queue (DLQ)
120
-
121
- Automatically move permanently failed jobs to a DLQ for inspection and retry:
122
-
123
- ```ts
124
- import { createWorker, createDLQHandler } from "@lastshotlabs/bunshot/queue";
125
-
126
- const emailWorker = createWorker("email", async (job) => { ... });
127
-
128
- const { dlqQueue, retryJob } = createDLQHandler(emailWorker, "email", {
129
- maxSize: 1000, // default: 1000 — oldest trimmed when exceeded
130
- onDeadLetter: async (job, error) => { // optional alerting callback
131
- await alertSlack(`Job ${job.id} failed: ${error.message}`);
132
- },
133
- preserveJobOptions: true, // default: true — retry with original delay/priority/attempts
134
- });
135
-
136
- // Retry a specific failed job
137
- await retryJob("job-id-123");
138
- ```
139
-
140
- The DLQ queue is named `${sourceQueueName}-dlq` (e.g., `email-dlq`). It's automatically available via the job status endpoint if listed in `allowedQueues`.
@@ -1,15 +0,0 @@
1
- ## Jobs (BullMQ)
2
-
3
- Queue-based background jobs powered by BullMQ (requires Redis with `noeviction` policy).
4
-
5
- ```ts
6
- // Define a queue
7
- import { createQueue } from "@lastshotlabs/bunshot";
8
- export const emailQueue = createQueue<{ to: string; subject: string }>("email");
9
-
10
- // Define a worker (auto-discovered from workersDir)
11
- import { createWorker } from "@lastshotlabs/bunshot";
12
- export const emailWorker = createWorker("email", async (job) => { /* send email */ });
13
- ```
14
-
15
- Features include cron/scheduled workers via `createCronWorker`, dead letter queues via `createDLQHandler`, job status REST endpoints, and WebSocket broadcasting from workers via `publish`.
@@ -1,83 +0,0 @@
1
- ## Request Logging & Request IDs
2
-
3
- Every request gets a unique **request ID** — either read from the incoming `X-Request-Id` header or generated as a `crypto.randomUUID()`. The ID is:
4
-
5
- - Set on context: `c.get("requestId")`
6
- - Echoed back in the `X-Request-Id` response header
7
- - Included in error JSON responses (`{ error: "...", requestId: "..." }`)
8
- - Included in audit log entries (when audit logging is enabled)
9
-
10
- ### Structured JSON Logging
11
-
12
- By default, every request/response is logged as structured JSON (replacing Hono's built-in text logger):
13
-
14
- ```json
15
- {
16
- "level": "info",
17
- "time": 1710000000000,
18
- "msg": "GET /api/users 200",
19
- "requestId": "550e8400-e29b-41d4-a716-446655440000",
20
- "method": "GET",
21
- "path": "/api/users",
22
- "statusCode": 200,
23
- "responseTime": 12.34,
24
- "ip": "203.0.113.42",
25
- "userAgent": "Mozilla/5.0...",
26
- "userId": "user-123",
27
- "sessionId": "sess-456",
28
- "tenantId": "tenant-789"
29
- }
30
- ```
31
-
32
- Status codes map to log levels: 5xx → `"error"`, 4xx → `"warn"`, else `"info"`.
33
-
34
- Default excluded paths: `/health`, `/docs`, `/openapi.json` (prefix matching).
35
-
36
- ### Configuration
37
-
38
- ```ts
39
- await createServer({
40
- routesDir: import.meta.dir + "/routes",
41
- logging: {
42
- // Default: true. Set false to disable logging entirely (no fallback to Hono's text logger)
43
- enabled: true,
44
- // Minimum level to emit — "info" (default), "warn", or "error"
45
- level: "info",
46
- // Custom log handler — plug in Pino, Datadog, etc.
47
- onLog: (entry) => pino.info(entry),
48
- // Paths to exclude (prefix matching for strings, .test() for RegExp)
49
- excludePaths: ["/health", "/docs", "/openapi.json", /^\/internal\//],
50
- // HTTP methods to exclude
51
- excludeMethods: ["OPTIONS"],
52
- },
53
- });
54
- ```
55
-
56
- ### Using Request IDs
57
-
58
- Access the request ID in any route or middleware:
59
-
60
- ```ts
61
- router.get("/api/example", (c) => {
62
- const requestId = c.get("requestId");
63
- // Pass to downstream services, include in logs, etc.
64
- return c.json({ requestId, data: "..." });
65
- });
66
- ```
67
-
68
- ### Exports
69
-
70
- ```ts
71
- import {
72
- requestId, // middleware — generates/propagates X-Request-Id
73
- requestLogger, // middleware — structured JSON request logging
74
- HEADER_REQUEST_ID, // "x-request-id" constant
75
- } from "@lastshotlabs/bunshot";
76
-
77
- import type {
78
- RequestLogEntry, // shape of each log entry
79
- RequestLoggerOptions, // options for requestLogger()
80
- LogLevel, // "info" | "warn" | "error"
81
- LoggingConfig, // config shape for createApp/createServer
82
- } from "@lastshotlabs/bunshot";
83
- ```
@@ -1,127 +0,0 @@
1
- ## Prometheus Metrics
2
-
3
- Opt-in `/metrics` endpoint that Prometheus can scrape. Tracks request counts, latency distributions, and optionally BullMQ queue depths.
4
-
5
- ### Quick Start
6
-
7
- ```ts
8
- await createServer({
9
- routesDir: import.meta.dir + "/routes",
10
- metrics: {
11
- enabled: true,
12
- },
13
- });
14
- ```
15
-
16
- `GET /metrics` now returns Prometheus text exposition format:
17
-
18
- ```
19
- # HELP http_requests_total Total http requests total
20
- # TYPE http_requests_total counter
21
- http_requests_total{method="GET",path="/users",status="200"} 42
22
-
23
- # HELP http_request_duration_seconds http request duration seconds
24
- # TYPE http_request_duration_seconds histogram
25
- http_request_duration_seconds_bucket{method="GET",path="/users",le="0.005"} 10
26
- ...
27
- http_request_duration_seconds_bucket{method="GET",path="/users",le="+Inf"} 42
28
- http_request_duration_seconds_sum{method="GET",path="/users"} 12.345
29
- http_request_duration_seconds_count{method="GET",path="/users"} 42
30
- ```
31
-
32
- ### Configuration
33
-
34
- ```ts
35
- await createServer({
36
- routesDir: import.meta.dir + "/routes",
37
- metrics: {
38
- enabled: true,
39
- // Auth for /metrics — "none" (default), "userAuth", or custom middleware stack
40
- auth: "userAuth",
41
- // Paths excluded from collection (prefix matching for strings, .test() for RegExp)
42
- excludePaths: ["/metrics", "/health", "/docs", "/openapi.json"], // defaults
43
- // Custom path normalizer (default collapses UUIDs, ObjectIDs, numeric segments to :id)
44
- normalizePath: (path) => path.replace(/\/[0-9]+/g, "/:id"),
45
- // BullMQ queue names to report depth gauges for (requires Redis)
46
- queues: ["email", "reports"],
47
- },
48
- });
49
- ```
50
-
51
- ### Path Normalization
52
-
53
- To prevent high-cardinality labels, dynamic path segments are normalized by default:
54
-
55
- | Pattern | Example | Normalized |
56
- |---------|---------|------------|
57
- | UUID | `/users/550e8400-e29b-41d4-a716-446655440000` | `/users/:id` |
58
- | MongoDB ObjectID | `/items/507f1f77bcf86cd799439011` | `/items/:id` |
59
- | Numeric segment | `/posts/123/comments` | `/posts/:id/comments` |
60
- | Short slug | `/api/v2/users` | `/api/v2/users` (unchanged) |
61
-
62
- Override with `metrics.normalizePath` for custom normalization logic.
63
-
64
- ### Multi-Tenancy
65
-
66
- When tenancy is configured, a `tenant` label is automatically added to all metrics:
67
-
68
- ```
69
- http_requests_total{method="GET",path="/data",status="200",tenant="acme"} 15
70
- ```
71
-
72
- ### BullMQ Queue Depths
73
-
74
- When `metrics.queues` is set, a `bullmq_queue_depth` gauge is registered and queried on each scrape:
75
-
76
- ```
77
- bullmq_queue_depth{queue="email",state="waiting"} 5
78
- bullmq_queue_depth{queue="email",state="active"} 2
79
- bullmq_queue_depth{queue="email",state="delayed"} 0
80
- bullmq_queue_depth{queue="email",state="failed"} 1
81
- ```
82
-
83
- Queue instances are lazily cached and reused across scrapes. Call `closeMetricsQueues()` during graceful shutdown to clean up Redis connections.
84
-
85
- ### Error Handling
86
-
87
- Gauge callback errors never cause a 500. If a gauge callback fails, the gauge is omitted from that scrape and an internal error counter is incremented:
88
-
89
- ```
90
- bunshot_gauge_errors_total{gauge="bullmq_queue_depth"} 1
91
- ```
92
-
93
- This counter is always present when metrics are enabled so you can alert on scrape failures.
94
-
95
- ### Security
96
-
97
- Auth defaults to `"none"` for easy adoption. A production warning is logged when metrics are enabled without auth. **Recommended:** Lock down `/metrics` in production since it exposes operational details (error rates, queue depths, tenant activity patterns).
98
-
99
- ```ts
100
- metrics: {
101
- enabled: true,
102
- auth: [userAuth, requireRole("admin")], // custom middleware stack
103
- }
104
- ```
105
-
106
- ### Self-Exclusion
107
-
108
- `/metrics` is excluded from its own collection and from request logging by default, so scraping doesn't inflate your metrics.
109
-
110
- ### Exports
111
-
112
- ```ts
113
- import {
114
- metricsCollector, // middleware — collects request metrics
115
- incrementCounter, // manually increment a counter
116
- observeHistogram, // manually observe a histogram value
117
- registerGaugeCallback, // register an async gauge callback
118
- serializeMetrics, // produce Prometheus text format
119
- resetMetrics, // clear all metrics (for tests)
120
- closeMetricsQueues, // close cached BullMQ queue instances
121
- } from "@lastshotlabs/bunshot";
122
-
123
- import type {
124
- MetricsConfig, // config shape for createApp/createServer
125
- MetricsMiddlewareOptions, // options for metricsCollector()
126
- } from "@lastshotlabs/bunshot";
127
- ```
@@ -1,45 +0,0 @@
1
- ## MongoDB Connections
2
-
3
- MongoDB and Redis connect automatically inside `createServer` / `createApp`. Control the behavior via the `db` config object:
4
-
5
- ### Single database (default)
6
-
7
- Both auth and app data share one server. Uses `MONGO_*` env vars.
8
-
9
- ```ts
10
- await createServer({
11
- // ...
12
- db: { mongo: "single", redis: true }, // these are the defaults — can omit db entirely
13
- // app, auth, security are all optional with sensible defaults
14
- });
15
- ```
16
-
17
- ### Separate auth database
18
-
19
- Auth users live on a dedicated server (`MONGO_AUTH_*` env vars), app data on its own server (`MONGO_*` env vars). Useful when multiple tenant apps share one auth cluster.
20
-
21
- ```ts
22
- await createServer({
23
- // ...
24
- db: { mongo: "separate" },
25
- });
26
- ```
27
-
28
- ### Manual connections
29
-
30
- Set `mongo: false` and/or `redis: false` to skip auto-connect and manage connections yourself:
31
-
32
- ```ts
33
- import { connectAuthMongo, connectAppMongo, connectRedis, createServer } from "@lastshotlabs/bunshot";
34
-
35
- await connectAuthMongo();
36
- await connectAppMongo();
37
- await connectRedis();
38
-
39
- await createServer({
40
- // ...
41
- db: { mongo: false, redis: false },
42
- });
43
- ```
44
-
45
- `AuthUser` and all built-in auth routes always use `authConnection`. Your app models use `appConnection` (see Adding Models below).
@@ -1,7 +0,0 @@
1
- ## MongoDB Connections
2
-
3
- MongoDB and Redis connect automatically inside `createServer` / `createApp`. Control via the `db` config:
4
-
5
- - **`mongo: "single"`** (default) — auth and app data share one server (`MONGO_*` env vars)
6
- - **`mongo: "separate"`** — auth on its own server (`MONGO_AUTH_*` env vars), app data on another
7
- - **`mongo: false`** — skip auto-connect, manage connections yourself via `connectAuthMongo()`, `connectAppMongo()`, `connectRedis()`