@lastshotlabs/bunshot 0.0.27 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (742) hide show
  1. package/.oclif.manifest.json +39 -0
  2. package/README.md +8282 -2147
  3. package/dist/cli/commands/init.js +690 -0
  4. package/dist/cli/index.js +6 -0
  5. package/dist/cli.js +4 -4
  6. package/dist/packages/bunshot-admin/src/index.d.ts +15 -0
  7. package/dist/packages/bunshot-admin/src/index.js +11 -0
  8. package/dist/packages/bunshot-admin/src/lib/resourceTypes.d.ts +8 -0
  9. package/dist/packages/bunshot-admin/src/lib/resourceTypes.js +33 -0
  10. package/dist/packages/bunshot-admin/src/lib/typedRoute.d.ts +14 -0
  11. package/dist/packages/bunshot-admin/src/lib/typedRoute.js +17 -0
  12. package/dist/packages/bunshot-admin/src/plugin.d.ts +4 -0
  13. package/dist/packages/bunshot-admin/src/plugin.js +46 -0
  14. package/dist/packages/bunshot-admin/src/providers/auth0Access.d.ts +6 -0
  15. package/dist/packages/bunshot-admin/src/providers/auth0Access.js +32 -0
  16. package/dist/packages/bunshot-admin/src/routes/admin.d.ts +10 -0
  17. package/dist/packages/bunshot-admin/src/routes/admin.js +923 -0
  18. package/dist/packages/bunshot-admin/src/routes/mail.d.ts +6 -0
  19. package/dist/packages/bunshot-admin/src/routes/mail.js +114 -0
  20. package/dist/packages/bunshot-admin/src/routes/permissions.d.ts +8 -0
  21. package/dist/packages/bunshot-admin/src/routes/permissions.js +315 -0
  22. package/dist/packages/bunshot-admin/src/types/config.d.ts +16 -0
  23. package/dist/packages/bunshot-admin/src/types/config.js +37 -0
  24. package/dist/packages/bunshot-admin/src/types/env.d.ts +14 -0
  25. package/dist/packages/bunshot-admin/src/types/provider.d.ts +1 -0
  26. package/dist/packages/bunshot-admin/src/types/provider.js +4 -0
  27. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.d.ts +66 -0
  28. package/dist/packages/bunshot-auth/src/adapters/memoryAuth.js +1063 -0
  29. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.d.ts +2 -0
  30. package/dist/packages/bunshot-auth/src/adapters/mongoAuth.js +536 -0
  31. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.d.ts +88 -0
  32. package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.js +1366 -0
  33. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.d.ts +2 -0
  34. package/dist/packages/bunshot-auth/src/admin/bunshotAccess.js +23 -0
  35. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.d.ts +5 -0
  36. package/dist/packages/bunshot-auth/src/admin/bunshotUsers.js +131 -0
  37. package/dist/packages/bunshot-auth/src/bootstrap.d.ts +38 -0
  38. package/dist/packages/bunshot-auth/src/bootstrap.js +384 -0
  39. package/dist/packages/bunshot-auth/src/config/appConfig.d.ts +3 -0
  40. package/dist/packages/bunshot-auth/src/config/appConfig.js +4 -0
  41. package/dist/packages/bunshot-auth/src/config/authConfig.d.ts +478 -0
  42. package/dist/packages/bunshot-auth/src/config/authConfig.js +46 -0
  43. package/dist/packages/bunshot-auth/src/config/configLock.d.ts +2 -0
  44. package/dist/packages/bunshot-auth/src/config/configLock.js +10 -0
  45. package/dist/packages/bunshot-auth/src/index.d.ts +25 -0
  46. package/dist/packages/bunshot-auth/src/index.js +23 -0
  47. package/dist/packages/bunshot-auth/src/infra/mongo.d.ts +15 -0
  48. package/dist/packages/bunshot-auth/src/infra/mongo.js +44 -0
  49. package/dist/packages/bunshot-auth/src/infra/queue.d.ts +14 -0
  50. package/dist/packages/bunshot-auth/src/infra/queue.js +27 -0
  51. package/dist/packages/bunshot-auth/src/infra/redis.d.ts +5 -0
  52. package/dist/packages/bunshot-auth/src/infra/redis.js +15 -0
  53. package/dist/packages/bunshot-auth/src/infra/signing.d.ts +7 -0
  54. package/dist/packages/bunshot-auth/src/infra/signing.js +8 -0
  55. package/dist/packages/bunshot-auth/src/lib/accountLockout.d.ts +34 -0
  56. package/dist/packages/bunshot-auth/src/lib/accountLockout.js +244 -0
  57. package/dist/packages/bunshot-auth/src/lib/adapterTiers.d.ts +1 -0
  58. package/dist/packages/bunshot-auth/src/lib/adapterTiers.js +1 -0
  59. package/dist/packages/bunshot-auth/src/lib/authAdapter.d.ts +1 -0
  60. package/dist/packages/bunshot-auth/src/lib/authAdapter.js +1 -0
  61. package/dist/packages/bunshot-auth/src/lib/authContext.d.ts +15 -0
  62. package/dist/packages/bunshot-auth/src/lib/authContext.js +1 -0
  63. package/dist/packages/bunshot-auth/src/lib/authEventBus.d.ts +4 -0
  64. package/dist/packages/bunshot-auth/src/lib/authEventBus.js +15 -0
  65. package/dist/packages/bunshot-auth/src/lib/authRateLimit.d.ts +28 -0
  66. package/dist/packages/bunshot-auth/src/lib/authRateLimit.js +205 -0
  67. package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.d.ts +8 -2
  68. package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.js +22 -9
  69. package/dist/packages/bunshot-auth/src/lib/cache.d.ts +12 -0
  70. package/dist/packages/bunshot-auth/src/lib/cache.js +120 -0
  71. package/dist/packages/bunshot-auth/src/lib/clientIp.d.ts +4 -0
  72. package/dist/{lib → packages/bunshot-auth/src/lib}/clientIp.js +14 -7
  73. package/dist/packages/bunshot-auth/src/lib/cookieOptions.d.ts +27 -0
  74. package/dist/packages/bunshot-auth/src/lib/cookieOptions.js +33 -0
  75. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.d.ts +40 -0
  76. package/dist/packages/bunshot-auth/src/lib/credentialStuffing.js +211 -0
  77. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.d.ts +19 -0
  78. package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.js +148 -0
  79. package/dist/packages/bunshot-auth/src/lib/emailTemplates.d.ts +23 -0
  80. package/dist/packages/bunshot-auth/src/lib/emailTemplates.js +265 -0
  81. package/dist/packages/bunshot-auth/src/lib/emailVerification.d.ts +30 -0
  82. package/dist/packages/bunshot-auth/src/lib/emailVerification.js +200 -0
  83. package/dist/packages/bunshot-auth/src/lib/env.d.ts +1 -0
  84. package/dist/packages/bunshot-auth/src/lib/env.js +3 -0
  85. package/dist/packages/bunshot-auth/src/lib/fingerprint.js +36 -0
  86. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.d.ts +15 -16
  87. package/dist/{lib → packages/bunshot-auth/src/lib}/groups.js +22 -34
  88. package/dist/packages/bunshot-auth/src/lib/jwks.d.ts +28 -0
  89. package/dist/packages/bunshot-auth/src/lib/jwks.js +79 -0
  90. package/dist/packages/bunshot-auth/src/lib/jwt.d.ts +12 -0
  91. package/dist/packages/bunshot-auth/src/lib/jwt.js +86 -0
  92. package/dist/{lib → packages/bunshot-auth/src/lib}/logger.js +3 -3
  93. package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.d.ts +5 -4
  94. package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.js +6 -10
  95. package/dist/packages/bunshot-auth/src/lib/magicLink.d.ts +13 -0
  96. package/dist/packages/bunshot-auth/src/lib/magicLink.js +145 -0
  97. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.d.ts +60 -0
  98. package/dist/packages/bunshot-auth/src/lib/mfaChallenge.js +419 -0
  99. package/dist/packages/bunshot-auth/src/lib/oauth.d.ts +82 -0
  100. package/dist/packages/bunshot-auth/src/lib/oauth.js +177 -0
  101. package/dist/packages/bunshot-auth/src/lib/oauthCode.d.ts +19 -0
  102. package/dist/packages/bunshot-auth/src/lib/oauthCode.js +182 -0
  103. package/dist/packages/bunshot-auth/src/lib/oauthReauth.d.ts +19 -0
  104. package/dist/packages/bunshot-auth/src/lib/oauthReauth.js +255 -0
  105. package/dist/packages/bunshot-auth/src/lib/organization.d.ts +66 -0
  106. package/dist/packages/bunshot-auth/src/lib/organization.js +225 -0
  107. package/dist/packages/bunshot-auth/src/lib/passwordHistory.d.ts +12 -0
  108. package/dist/packages/bunshot-auth/src/lib/passwordHistory.js +31 -0
  109. package/dist/packages/bunshot-auth/src/lib/resetPassword.d.ts +20 -0
  110. package/dist/packages/bunshot-auth/src/lib/resetPassword.js +148 -0
  111. package/dist/packages/bunshot-auth/src/lib/roles.d.ts +9 -0
  112. package/dist/packages/bunshot-auth/src/lib/roles.js +93 -0
  113. package/dist/packages/bunshot-auth/src/lib/saml.d.ts +29 -0
  114. package/dist/packages/bunshot-auth/src/lib/saml.js +73 -0
  115. package/dist/packages/bunshot-auth/src/lib/samlRequestId.d.ts +13 -0
  116. package/dist/packages/bunshot-auth/src/lib/samlRequestId.js +129 -0
  117. package/dist/{lib → packages/bunshot-auth/src/lib}/scim.d.ts +7 -7
  118. package/dist/{lib → packages/bunshot-auth/src/lib}/scim.js +15 -13
  119. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.d.ts +22 -0
  120. package/dist/packages/bunshot-auth/src/lib/securityEventWiring.js +65 -0
  121. package/dist/packages/bunshot-auth/src/lib/session.d.ts +45 -0
  122. package/dist/packages/bunshot-auth/src/lib/session.js +1211 -0
  123. package/dist/packages/bunshot-auth/src/lib/storeInfra.d.ts +26 -0
  124. package/dist/packages/bunshot-auth/src/lib/storeInfra.js +18 -0
  125. package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.d.ts +3 -2
  126. package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.js +2 -5
  127. package/dist/packages/bunshot-auth/src/lib/validateAdapter.d.ts +16 -0
  128. package/dist/packages/bunshot-auth/src/lib/validateAdapter.js +161 -0
  129. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.d.ts +13 -0
  130. package/dist/packages/bunshot-auth/src/middleware/bearerAuth.js +58 -0
  131. package/dist/{middleware → packages/bunshot-auth/src/middleware}/csrf.d.ts +5 -4
  132. package/dist/packages/bunshot-auth/src/middleware/csrf.js +138 -0
  133. package/dist/packages/bunshot-auth/src/middleware/identify.d.ts +4 -0
  134. package/dist/packages/bunshot-auth/src/middleware/identify.js +124 -0
  135. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.d.ts +2 -2
  136. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.js +10 -8
  137. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.d.ts +2 -2
  138. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.js +20 -16
  139. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.d.ts +2 -2
  140. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.js +6 -6
  141. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.d.ts +2 -2
  142. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.js +8 -7
  143. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.d.ts +2 -2
  144. package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.js +7 -6
  145. package/dist/packages/bunshot-auth/src/middleware/scimAuth.d.ts +8 -0
  146. package/dist/packages/bunshot-auth/src/middleware/scimAuth.js +29 -0
  147. package/dist/packages/bunshot-auth/src/middleware/userAuth.d.ts +3 -0
  148. package/dist/packages/bunshot-auth/src/middleware/userAuth.js +6 -0
  149. package/dist/{models → packages/bunshot-auth/src/models}/AuthUser.d.ts +12 -8
  150. package/dist/packages/bunshot-auth/src/models/AuthUser.js +53 -0
  151. package/dist/packages/bunshot-auth/src/models/Group.d.ts +19 -0
  152. package/dist/packages/bunshot-auth/src/models/Group.js +22 -0
  153. package/dist/{models → packages/bunshot-auth/src/models}/GroupMembership.d.ts +6 -8
  154. package/dist/packages/bunshot-auth/src/models/GroupMembership.js +19 -0
  155. package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.d.ts +1 -1
  156. package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.js +5 -5
  157. package/dist/packages/bunshot-auth/src/models/TenantRole.d.ts +13 -0
  158. package/dist/packages/bunshot-auth/src/models/TenantRole.js +17 -0
  159. package/dist/packages/bunshot-auth/src/plugin.d.ts +4 -0
  160. package/dist/packages/bunshot-auth/src/plugin.js +277 -0
  161. package/dist/packages/bunshot-auth/src/routes/auth.d.ts +15 -0
  162. package/dist/packages/bunshot-auth/src/routes/auth.js +1624 -0
  163. package/dist/packages/bunshot-auth/src/routes/groups.d.ts +4 -0
  164. package/dist/packages/bunshot-auth/src/routes/groups.js +481 -0
  165. package/dist/packages/bunshot-auth/src/routes/m2m.d.ts +2 -0
  166. package/dist/packages/bunshot-auth/src/routes/m2m.js +145 -0
  167. package/dist/packages/bunshot-auth/src/routes/mfa.d.ts +6 -0
  168. package/dist/packages/bunshot-auth/src/routes/mfa.js +991 -0
  169. package/dist/packages/bunshot-auth/src/routes/oauth.d.ts +3 -0
  170. package/dist/packages/bunshot-auth/src/routes/oauth.js +1727 -0
  171. package/dist/packages/bunshot-auth/src/routes/oidc.d.ts +2 -0
  172. package/dist/packages/bunshot-auth/src/routes/oidc.js +84 -0
  173. package/dist/packages/bunshot-auth/src/routes/organizations.d.ts +3 -0
  174. package/dist/packages/bunshot-auth/src/routes/organizations.js +741 -0
  175. package/dist/packages/bunshot-auth/src/routes/passkey.d.ts +2 -0
  176. package/dist/packages/bunshot-auth/src/routes/passkey.js +199 -0
  177. package/dist/packages/bunshot-auth/src/routes/saml.d.ts +2 -0
  178. package/dist/packages/bunshot-auth/src/routes/saml.js +226 -0
  179. package/dist/packages/bunshot-auth/src/routes/scim.d.ts +3 -0
  180. package/dist/packages/bunshot-auth/src/routes/scim.js +588 -0
  181. package/dist/packages/bunshot-auth/src/runtime.d.ts +52 -0
  182. package/dist/packages/bunshot-auth/src/runtime.js +11 -0
  183. package/dist/{schemas → packages/bunshot-auth/src/schemas}/auth.d.ts +4 -5
  184. package/dist/packages/bunshot-auth/src/schemas/auth.js +24 -0
  185. package/dist/packages/bunshot-auth/src/schemas/error.d.ts +10 -0
  186. package/dist/packages/bunshot-auth/src/schemas/error.js +10 -0
  187. package/dist/packages/bunshot-auth/src/schemas/success.d.ts +10 -0
  188. package/dist/packages/bunshot-auth/src/schemas/success.js +10 -0
  189. package/dist/packages/bunshot-auth/src/services/auth.d.ts +39 -0
  190. package/dist/packages/bunshot-auth/src/services/auth.js +378 -0
  191. package/dist/{services → packages/bunshot-auth/src/services}/mfa.d.ts +41 -17
  192. package/dist/{services → packages/bunshot-auth/src/services}/mfa.js +259 -183
  193. package/dist/packages/bunshot-auth/src/testing.d.ts +31 -0
  194. package/dist/packages/bunshot-auth/src/testing.js +23 -0
  195. package/dist/packages/bunshot-auth/src/types/adapter.d.ts +1 -0
  196. package/dist/packages/bunshot-auth/src/types/adapter.js +1 -0
  197. package/dist/packages/bunshot-auth/src/types/config.d.ts +152 -0
  198. package/dist/packages/bunshot-auth/src/types/config.js +179 -0
  199. package/dist/{routes → packages/bunshot-auth/src/types}/groups.d.ts +2 -3
  200. package/dist/packages/bunshot-auth/src/types/groups.js +1 -0
  201. package/dist/packages/bunshot-auth/src/types/oauthCode.d.ts +6 -0
  202. package/dist/packages/bunshot-auth/src/types/oauthCode.js +1 -0
  203. package/dist/packages/bunshot-auth/src/types/oauthReauth.d.ts +13 -0
  204. package/dist/packages/bunshot-auth/src/types/oauthReauth.js +1 -0
  205. package/dist/packages/bunshot-auth/src/types/redis.d.ts +1 -0
  206. package/dist/packages/bunshot-auth/src/types/redis.js +1 -0
  207. package/dist/packages/bunshot-auth/src/types/saml.d.ts +10 -0
  208. package/dist/packages/bunshot-auth/src/types/saml.js +1 -0
  209. package/dist/packages/bunshot-auth/src/types/session.d.ts +18 -0
  210. package/dist/packages/bunshot-auth/src/types/session.js +1 -0
  211. package/dist/packages/bunshot-auth/src/types/store.d.ts +1 -0
  212. package/dist/packages/bunshot-auth/src/types/store.js +1 -0
  213. package/dist/packages/bunshot-core/src/adminProvider.d.ts +95 -0
  214. package/dist/packages/bunshot-core/src/adminProvider.js +1 -0
  215. package/dist/packages/bunshot-core/src/auditLog.d.ts +34 -0
  216. package/dist/packages/bunshot-core/src/auditLog.js +1 -0
  217. package/dist/packages/bunshot-core/src/auth-adapter.d.ts +227 -0
  218. package/dist/packages/bunshot-core/src/auth-adapter.js +4 -0
  219. package/dist/packages/bunshot-core/src/authVariables.d.ts +14 -0
  220. package/dist/packages/bunshot-core/src/authVariables.js +4 -0
  221. package/dist/packages/bunshot-core/src/cache.d.ts +12 -0
  222. package/dist/packages/bunshot-core/src/cache.js +21 -0
  223. package/dist/{lib → packages/bunshot-core/src}/captcha.d.ts +1 -10
  224. package/dist/packages/bunshot-core/src/captcha.js +1 -0
  225. package/dist/packages/bunshot-core/src/clearRegistry.d.ts +6 -0
  226. package/dist/packages/bunshot-core/src/clearRegistry.js +17 -0
  227. package/dist/packages/bunshot-core/src/clientIp.d.ts +3 -0
  228. package/dist/packages/bunshot-core/src/clientIp.js +45 -0
  229. package/dist/packages/bunshot-core/src/configLock.d.ts +4 -0
  230. package/dist/packages/bunshot-core/src/configLock.js +7 -0
  231. package/dist/packages/bunshot-core/src/configValidation.d.ts +22 -0
  232. package/dist/packages/bunshot-core/src/configValidation.js +39 -0
  233. package/dist/packages/bunshot-core/src/constants.js +10 -0
  234. package/dist/packages/bunshot-core/src/context/bunshotContext.d.ts +232 -0
  235. package/dist/packages/bunshot-core/src/context/bunshotContext.js +1 -0
  236. package/dist/packages/bunshot-core/src/context/contextAccess.d.ts +3 -0
  237. package/dist/packages/bunshot-core/src/context/contextAccess.js +16 -0
  238. package/dist/packages/bunshot-core/src/context/contextStore.d.ts +16 -0
  239. package/dist/packages/bunshot-core/src/context/contextStore.js +31 -0
  240. package/dist/packages/bunshot-core/src/context/frameworkConfig.d.ts +38 -0
  241. package/dist/packages/bunshot-core/src/context/frameworkConfig.js +1 -0
  242. package/dist/packages/bunshot-core/src/context/index.d.ts +4 -0
  243. package/dist/packages/bunshot-core/src/context/index.js +2 -0
  244. package/dist/packages/bunshot-core/src/context.d.ts +40 -0
  245. package/dist/packages/bunshot-core/src/context.js +35 -0
  246. package/dist/packages/bunshot-core/src/coreContracts.d.ts +47 -0
  247. package/dist/packages/bunshot-core/src/coreContracts.js +1 -0
  248. package/dist/packages/bunshot-core/src/coreRegistrar.d.ts +6 -0
  249. package/dist/packages/bunshot-core/src/coreRegistrar.js +42 -0
  250. package/dist/{lib → packages/bunshot-core/src}/createRoute.d.ts +4 -30
  251. package/dist/{lib → packages/bunshot-core/src}/createRoute.js +39 -88
  252. package/dist/packages/bunshot-core/src/cronRegistry.d.ts +11 -0
  253. package/dist/packages/bunshot-core/src/cronRegistry.js +1 -0
  254. package/dist/packages/bunshot-core/src/crypto.d.ts +43 -0
  255. package/dist/packages/bunshot-core/src/crypto.js +74 -0
  256. package/dist/packages/bunshot-core/src/csrf.d.ts +8 -0
  257. package/dist/packages/bunshot-core/src/csrf.js +1 -0
  258. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.d.ts +7 -0
  259. package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.js +19 -0
  260. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.d.ts +6 -0
  261. package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.js +40 -0
  262. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.d.ts +6 -0
  263. package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.js +24 -0
  264. package/dist/packages/bunshot-core/src/emailTemplates.d.ts +5 -0
  265. package/dist/packages/bunshot-core/src/emailTemplates.js +10 -0
  266. package/dist/{lib/HttpError.d.ts → packages/bunshot-core/src/errors.d.ts} +4 -1
  267. package/dist/{lib/HttpError.js → packages/bunshot-core/src/errors.js} +7 -1
  268. package/dist/packages/bunshot-core/src/eventBus.d.ts +270 -0
  269. package/dist/packages/bunshot-core/src/eventBus.js +143 -0
  270. package/dist/packages/bunshot-core/src/idempotency.d.ts +18 -0
  271. package/dist/packages/bunshot-core/src/idempotency.js +1 -0
  272. package/dist/packages/bunshot-core/src/index.d.ts +60 -0
  273. package/dist/packages/bunshot-core/src/index.js +34 -0
  274. package/dist/packages/bunshot-core/src/mail.d.ts +14 -0
  275. package/dist/packages/bunshot-core/src/mail.js +8 -0
  276. package/dist/packages/bunshot-core/src/memoryEviction.d.ts +24 -0
  277. package/dist/packages/bunshot-core/src/memoryEviction.js +52 -0
  278. package/dist/packages/bunshot-core/src/pagination.d.ts +45 -0
  279. package/dist/packages/bunshot-core/src/pagination.js +61 -0
  280. package/dist/packages/bunshot-core/src/permissions.d.ts +64 -0
  281. package/dist/packages/bunshot-core/src/permissions.js +27 -0
  282. package/dist/packages/bunshot-core/src/plugin.d.ts +44 -0
  283. package/dist/packages/bunshot-core/src/plugin.js +1 -0
  284. package/dist/packages/bunshot-core/src/rateLimit.d.ts +5 -0
  285. package/dist/packages/bunshot-core/src/rateLimit.js +18 -0
  286. package/dist/packages/bunshot-core/src/redis.d.ts +21 -0
  287. package/dist/packages/bunshot-core/src/redis.js +1 -0
  288. package/dist/packages/bunshot-core/src/routeAuth.d.ts +5 -0
  289. package/dist/packages/bunshot-core/src/routeAuth.js +11 -0
  290. package/dist/packages/bunshot-core/src/routeOverrides.d.ts +24 -0
  291. package/dist/packages/bunshot-core/src/routeOverrides.js +25 -0
  292. package/dist/packages/bunshot-core/src/routerAdapter.d.ts +6 -0
  293. package/dist/packages/bunshot-core/src/routerAdapter.js +56 -0
  294. package/dist/packages/bunshot-core/src/secrets.d.ts +48 -0
  295. package/dist/packages/bunshot-core/src/secrets.js +8 -0
  296. package/dist/packages/bunshot-core/src/signing.d.ts +41 -0
  297. package/dist/packages/bunshot-core/src/signing.js +1 -0
  298. package/dist/packages/bunshot-core/src/sse.d.ts +36 -0
  299. package/dist/packages/bunshot-core/src/sse.js +1 -0
  300. package/dist/packages/bunshot-core/src/storageAdapter.js +1 -0
  301. package/dist/packages/bunshot-core/src/storeInfra.d.ts +44 -0
  302. package/dist/packages/bunshot-core/src/storeInfra.js +18 -0
  303. package/dist/packages/bunshot-core/src/storeType.d.ts +7 -0
  304. package/dist/packages/bunshot-core/src/storeType.js +1 -0
  305. package/dist/packages/bunshot-core/src/testing.d.ts +1 -0
  306. package/dist/packages/bunshot-core/src/testing.js +1 -0
  307. package/dist/packages/bunshot-core/src/uploadRegistry.d.ts +23 -0
  308. package/dist/packages/bunshot-core/src/uploadRegistry.js +4 -0
  309. package/dist/packages/bunshot-core/src/userResolver.d.ts +5 -0
  310. package/dist/packages/bunshot-core/src/userResolver.js +14 -0
  311. package/dist/packages/bunshot-core/src/wsMessages.d.ts +42 -0
  312. package/dist/packages/bunshot-core/src/wsMessages.js +4 -0
  313. package/dist/packages/bunshot-permissions/src/adapters/memory.d.ts +7 -0
  314. package/dist/packages/bunshot-permissions/src/adapters/memory.js +73 -0
  315. package/dist/packages/bunshot-permissions/src/index.d.ts +10 -0
  316. package/dist/packages/bunshot-permissions/src/index.js +5 -0
  317. package/dist/packages/bunshot-permissions/src/lib/bootstrap.d.ts +7 -0
  318. package/dist/packages/bunshot-permissions/src/lib/bootstrap.js +12 -0
  319. package/dist/packages/bunshot-permissions/src/lib/evaluator.d.ts +10 -0
  320. package/dist/packages/bunshot-permissions/src/lib/evaluator.js +165 -0
  321. package/dist/packages/bunshot-permissions/src/lib/registry.d.ts +2 -0
  322. package/dist/packages/bunshot-permissions/src/lib/registry.js +31 -0
  323. package/dist/packages/bunshot-permissions/src/lib/validation.d.ts +1 -0
  324. package/dist/packages/bunshot-permissions/src/lib/validation.js +1 -0
  325. package/dist/packages/bunshot-permissions/src/types/adapter.d.ts +1 -0
  326. package/dist/packages/bunshot-permissions/src/types/adapter.js +1 -0
  327. package/dist/packages/bunshot-permissions/src/types/evaluator.d.ts +1 -0
  328. package/dist/packages/bunshot-permissions/src/types/evaluator.js +1 -0
  329. package/dist/packages/bunshot-permissions/src/types/models.d.ts +1 -0
  330. package/dist/packages/bunshot-permissions/src/types/models.js +1 -0
  331. package/dist/packages/bunshot-permissions/src/types/registry.d.ts +1 -0
  332. package/dist/packages/bunshot-permissions/src/types/registry.js +1 -0
  333. package/dist/packages/bunshot-postgres/src/adapter.d.ts +6 -0
  334. package/dist/packages/bunshot-postgres/src/adapter.js +794 -0
  335. package/dist/packages/bunshot-postgres/src/connection.d.ts +15 -0
  336. package/dist/packages/bunshot-postgres/src/connection.js +16 -0
  337. package/dist/packages/bunshot-postgres/src/index.d.ts +4 -0
  338. package/dist/packages/bunshot-postgres/src/index.js +2 -0
  339. package/dist/packages/bunshot-postgres/src/schema.d.ts +997 -0
  340. package/dist/packages/bunshot-postgres/src/schema.js +105 -0
  341. package/dist/src/app.d.ts +230 -0
  342. package/dist/src/app.js +182 -0
  343. package/dist/src/cli/commands/init.d.ts +10 -0
  344. package/dist/src/cli/commands/init.js +709 -0
  345. package/dist/src/cli/index.d.ts +1 -0
  346. package/dist/src/cli/index.js +3 -0
  347. package/dist/src/entrypoints/mongo.d.ts +6 -0
  348. package/dist/src/entrypoints/mongo.js +4 -0
  349. package/dist/src/entrypoints/queue.d.ts +2 -0
  350. package/dist/src/entrypoints/queue.js +1 -0
  351. package/dist/src/entrypoints/redis.d.ts +1 -0
  352. package/dist/src/entrypoints/redis.js +1 -0
  353. package/dist/{adapters → src/framework/adapters}/localStorage.d.ts +1 -1
  354. package/dist/{adapters → src/framework/adapters}/localStorage.js +10 -10
  355. package/dist/src/framework/adapters/memoryStorage.d.ts +2 -0
  356. package/dist/src/framework/adapters/memoryStorage.js +45 -0
  357. package/dist/{adapters → src/framework/adapters}/s3Storage.d.ts +1 -1
  358. package/dist/{adapters → src/framework/adapters}/s3Storage.js +12 -12
  359. package/dist/src/framework/admin/bunshotAccess.d.ts +2 -0
  360. package/dist/src/framework/admin/bunshotAccess.js +23 -0
  361. package/dist/src/framework/admin/bunshotUsers.d.ts +2 -0
  362. package/dist/src/framework/admin/bunshotUsers.js +103 -0
  363. package/dist/src/framework/admin/index.d.ts +7 -0
  364. package/dist/src/framework/admin/index.js +21 -0
  365. package/dist/src/framework/boundaryAdapters/cacheFactories.d.ts +13 -0
  366. package/dist/src/framework/boundaryAdapters/cacheFactories.js +86 -0
  367. package/dist/src/framework/boundaryAdapters/index.d.ts +2 -0
  368. package/dist/src/framework/boundaryAdapters/index.js +1 -0
  369. package/dist/src/framework/boundaryAdapters.d.ts +17 -0
  370. package/dist/src/framework/boundaryAdapters.js +62 -0
  371. package/dist/src/framework/buildContext.d.ts +33 -0
  372. package/dist/src/framework/buildContext.js +119 -0
  373. package/dist/src/framework/config/schema.d.ts +447 -0
  374. package/dist/src/framework/config/schema.js +528 -0
  375. package/dist/src/framework/createInfrastructure.d.ts +76 -0
  376. package/dist/src/framework/createInfrastructure.js +221 -0
  377. package/dist/src/framework/lib/auditLog.d.ts +23 -0
  378. package/dist/src/framework/lib/auditLog.js +416 -0
  379. package/dist/src/framework/lib/captcha.d.ts +11 -0
  380. package/dist/{lib → src/framework/lib}/captcha.js +13 -10
  381. package/dist/{lib → src/framework/lib}/createDtoMapper.js +4 -4
  382. package/dist/src/framework/lib/createRoute.d.ts +1 -0
  383. package/dist/src/framework/lib/createRoute.js +2 -0
  384. package/dist/{lib → src/framework/lib}/idempotency.d.ts +2 -6
  385. package/dist/src/framework/lib/idempotency.js +74 -0
  386. package/dist/src/framework/lib/logger.d.ts +3 -0
  387. package/dist/src/framework/lib/logger.js +14 -0
  388. package/dist/src/framework/lib/metrics.d.ts +34 -0
  389. package/dist/{lib → src/framework/lib}/metrics.js +49 -57
  390. package/dist/src/framework/lib/pagination.d.ts +42 -0
  391. package/dist/src/framework/lib/pagination.js +51 -0
  392. package/dist/src/framework/lib/redisTransport.d.ts +38 -0
  393. package/dist/src/framework/lib/redisTransport.js +107 -0
  394. package/dist/src/framework/lib/resolveUserId.d.ts +2 -0
  395. package/dist/src/framework/lib/resolveUserId.js +5 -0
  396. package/dist/src/framework/lib/sseCollision.d.ts +6 -0
  397. package/dist/src/framework/lib/sseCollision.js +26 -0
  398. package/dist/src/framework/lib/storageAdapter.d.ts +1 -0
  399. package/dist/src/framework/lib/storageAdapter.js +1 -0
  400. package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.js +4 -4
  401. package/dist/src/framework/lib/tenant.d.ts +21 -0
  402. package/dist/src/framework/lib/tenant.js +70 -0
  403. package/dist/{lib → src/framework/lib}/upload.d.ts +11 -10
  404. package/dist/src/framework/lib/upload.js +132 -0
  405. package/dist/src/framework/lib/uploadRegistry.d.ts +23 -0
  406. package/dist/src/framework/lib/uploadRegistry.js +34 -0
  407. package/dist/{lib → src/framework/lib}/validate.d.ts +1 -1
  408. package/dist/{lib → src/framework/lib}/validate.js +2 -2
  409. package/dist/src/framework/lib/ws.d.ts +19 -0
  410. package/dist/src/framework/lib/ws.js +130 -0
  411. package/dist/src/framework/lib/wsHeartbeat.d.ts +12 -0
  412. package/dist/src/framework/lib/wsHeartbeat.js +53 -0
  413. package/dist/src/framework/lib/wsMessages.d.ts +25 -0
  414. package/dist/src/framework/lib/wsMessages.js +45 -0
  415. package/dist/src/framework/lib/wsNamespace.d.ts +17 -0
  416. package/dist/src/framework/lib/wsNamespace.js +19 -0
  417. package/dist/src/framework/lib/wsPresence.d.ts +17 -0
  418. package/dist/src/framework/lib/wsPresence.js +84 -0
  419. package/dist/src/framework/lib/wsTransport.d.ts +38 -0
  420. package/dist/src/framework/lib/wsTransport.js +9 -0
  421. package/dist/{lib → src/framework/lib}/zodToMongoose.d.ts +1 -1
  422. package/dist/{lib → src/framework/lib}/zodToMongoose.js +11 -11
  423. package/dist/{middleware → src/framework/middleware}/auditLog.d.ts +4 -3
  424. package/dist/src/framework/middleware/auditLog.js +42 -0
  425. package/dist/{middleware → src/framework/middleware}/botProtection.d.ts +2 -2
  426. package/dist/{middleware → src/framework/middleware}/botProtection.js +8 -9
  427. package/dist/src/framework/middleware/cacheResponse.d.ts +35 -0
  428. package/dist/src/framework/middleware/cacheResponse.js +126 -0
  429. package/dist/{middleware → src/framework/middleware}/captcha.d.ts +2 -3
  430. package/dist/src/framework/middleware/captcha.js +37 -0
  431. package/dist/{middleware → src/framework/middleware}/errorHandler.d.ts +1 -1
  432. package/dist/{middleware → src/framework/middleware}/errorHandler.js +2 -2
  433. package/dist/src/framework/middleware/index.js +1 -0
  434. package/dist/{middleware → src/framework/middleware}/logger.d.ts +1 -1
  435. package/dist/src/framework/middleware/metrics.d.ts +12 -0
  436. package/dist/src/framework/middleware/metrics.js +26 -0
  437. package/dist/{middleware → src/framework/middleware}/rateLimit.d.ts +2 -2
  438. package/dist/src/framework/middleware/rateLimit.js +22 -0
  439. package/dist/src/framework/middleware/requestId.d.ts +3 -0
  440. package/dist/{middleware → src/framework/middleware}/requestId.js +2 -2
  441. package/dist/{middleware → src/framework/middleware}/requestLogger.d.ts +3 -3
  442. package/dist/{middleware → src/framework/middleware}/requestLogger.js +17 -12
  443. package/dist/{middleware → src/framework/middleware}/requestSigning.d.ts +2 -2
  444. package/dist/{middleware → src/framework/middleware}/requestSigning.js +18 -20
  445. package/dist/src/framework/middleware/tenant.d.ts +14 -0
  446. package/dist/{middleware → src/framework/middleware}/tenant.js +31 -27
  447. package/dist/src/framework/middleware/upload.d.ts +5 -0
  448. package/dist/{middleware → src/framework/middleware}/upload.js +4 -4
  449. package/dist/{middleware → src/framework/middleware}/webhookAuth.d.ts +3 -3
  450. package/dist/{middleware → src/framework/middleware}/webhookAuth.js +11 -12
  451. package/dist/src/framework/models/AuditLog.d.ts +21 -0
  452. package/dist/src/framework/models/AuditLog.js +31 -0
  453. package/dist/src/framework/mountMiddleware.d.ts +91 -0
  454. package/dist/src/framework/mountMiddleware.js +128 -0
  455. package/dist/src/framework/mountOptionalEndpoints.d.ts +103 -0
  456. package/dist/src/framework/mountOptionalEndpoints.js +64 -0
  457. package/dist/src/framework/mountRoutes.d.ts +21 -0
  458. package/dist/src/framework/mountRoutes.js +144 -0
  459. package/dist/src/framework/persistence/cronRegistry.d.ts +28 -0
  460. package/dist/src/framework/persistence/cronRegistry.js +139 -0
  461. package/dist/src/framework/persistence/idempotency.d.ts +26 -0
  462. package/dist/src/framework/persistence/idempotency.js +178 -0
  463. package/dist/src/framework/persistence/index.d.ts +6 -0
  464. package/dist/src/framework/persistence/index.js +8 -0
  465. package/dist/src/framework/persistence/storeInfra.d.ts +9 -0
  466. package/dist/src/framework/persistence/storeInfra.js +1 -0
  467. package/dist/src/framework/persistence/uploadRegistry.d.ts +35 -0
  468. package/dist/src/framework/persistence/uploadRegistry.js +235 -0
  469. package/dist/src/framework/persistence/wsMessages.d.ts +22 -0
  470. package/dist/src/framework/persistence/wsMessages.js +296 -0
  471. package/dist/src/framework/preloadSchemas.d.ts +24 -0
  472. package/dist/src/framework/preloadSchemas.js +42 -0
  473. package/dist/src/framework/registerBoundaryAdapters.d.ts +23 -0
  474. package/dist/src/framework/registerBoundaryAdapters.js +46 -0
  475. package/dist/src/framework/routes/admin.d.ts +9 -0
  476. package/dist/src/framework/routes/admin.js +361 -0
  477. package/dist/src/framework/routes/health.d.ts +1 -0
  478. package/dist/src/framework/routes/health.js +21 -0
  479. package/dist/src/framework/routes/home.d.ts +1 -0
  480. package/dist/src/framework/routes/home.js +18 -0
  481. package/dist/src/framework/routes/jobs.d.ts +3 -0
  482. package/dist/{routes → src/framework/routes}/jobs.js +128 -103
  483. package/dist/src/framework/routes/metrics.d.ts +10 -0
  484. package/dist/src/framework/routes/metrics.js +57 -0
  485. package/dist/{routes → src/framework/routes}/uploads.d.ts +3 -3
  486. package/dist/src/framework/routes/uploads.js +262 -0
  487. package/dist/src/framework/runPluginLifecycle.d.ts +27 -0
  488. package/dist/src/framework/runPluginLifecycle.js +121 -0
  489. package/dist/src/framework/secrets/frameworkSecretSchema.d.ts +58 -0
  490. package/dist/src/framework/secrets/frameworkSecretSchema.js +20 -0
  491. package/dist/src/framework/secrets/index.d.ts +9 -0
  492. package/dist/src/framework/secrets/index.js +7 -0
  493. package/dist/src/framework/secrets/providers/envProvider.d.ts +15 -0
  494. package/dist/src/framework/secrets/providers/envProvider.js +18 -0
  495. package/dist/src/framework/secrets/providers/fileProvider.d.ts +8 -0
  496. package/dist/src/framework/secrets/providers/fileProvider.js +82 -0
  497. package/dist/src/framework/secrets/providers/ssmProvider.d.ts +20 -0
  498. package/dist/src/framework/secrets/providers/ssmProvider.js +127 -0
  499. package/dist/src/framework/secrets/resolveSecretBundle.d.ts +53 -0
  500. package/dist/src/framework/secrets/resolveSecretBundle.js +84 -0
  501. package/dist/src/framework/secrets/resolveSecrets.d.ts +18 -0
  502. package/dist/src/framework/secrets/resolveSecrets.js +34 -0
  503. package/dist/src/framework/sse/index.d.ts +21 -0
  504. package/dist/src/framework/sse/index.js +109 -0
  505. package/dist/src/framework/ws/index.d.ts +11 -0
  506. package/dist/src/framework/ws/index.js +8 -0
  507. package/dist/src/index.d.ts +87 -0
  508. package/dist/src/index.js +58 -0
  509. package/dist/src/lib/appConfig.d.ts +7 -0
  510. package/dist/src/lib/appConfig.js +27 -0
  511. package/dist/src/lib/appMeta.d.ts +7 -0
  512. package/dist/src/lib/appMeta.js +3 -0
  513. package/dist/src/lib/authConfig.d.ts +532 -0
  514. package/dist/{lib/appConfig.js → src/lib/authConfig.js} +75 -17
  515. package/dist/{lib → src/lib}/context.d.ts +6 -12
  516. package/dist/{lib → src/lib}/context.js +5 -5
  517. package/dist/src/lib/logger.d.ts +1 -0
  518. package/dist/src/lib/logger.js +1 -0
  519. package/dist/src/lib/mongo.d.ts +58 -0
  520. package/dist/src/lib/mongo.js +96 -0
  521. package/dist/src/lib/queue.d.ts +72 -0
  522. package/dist/src/lib/queue.js +152 -0
  523. package/dist/src/lib/redis.d.ts +28 -0
  524. package/dist/src/lib/redis.js +72 -0
  525. package/dist/{lib → src/lib}/signing.d.ts +2 -2
  526. package/dist/src/lib/signing.js +210 -0
  527. package/dist/src/lib/signingConfig.d.ts +40 -0
  528. package/dist/src/lib/signingConfig.js +28 -0
  529. package/dist/src/server.d.ts +146 -0
  530. package/dist/src/server.js +469 -0
  531. package/dist/src/shared/lib/HttpError.d.ts +1 -0
  532. package/dist/src/shared/lib/HttpError.js +2 -0
  533. package/dist/src/shared/lib/constants.d.ts +10 -0
  534. package/dist/src/shared/lib/crypto.d.ts +43 -0
  535. package/dist/src/shared/lib/crypto.js +74 -0
  536. package/dist/src/shared/lib/signing.d.ts +52 -0
  537. package/dist/{lib → src/shared/lib}/signing.js +35 -8
  538. package/dist/src/testing.d.ts +34 -0
  539. package/dist/src/testing.js +93 -0
  540. package/package.json +100 -26
  541. package/dist/adapters/memoryAuth.d.ts +0 -52
  542. package/dist/adapters/memoryAuth.js +0 -749
  543. package/dist/adapters/memoryStorage.d.ts +0 -3
  544. package/dist/adapters/memoryStorage.js +0 -44
  545. package/dist/adapters/mongoAuth.d.ts +0 -2
  546. package/dist/adapters/mongoAuth.js +0 -403
  547. package/dist/adapters/sqliteAuth.d.ts +0 -72
  548. package/dist/adapters/sqliteAuth.js +0 -858
  549. package/dist/app.d.ts +0 -559
  550. package/dist/app.js +0 -651
  551. package/dist/entrypoints/mongo.d.ts +0 -5
  552. package/dist/entrypoints/mongo.js +0 -4
  553. package/dist/entrypoints/queue.d.ts +0 -2
  554. package/dist/entrypoints/queue.js +0 -1
  555. package/dist/entrypoints/redis.d.ts +0 -1
  556. package/dist/entrypoints/redis.js +0 -1
  557. package/dist/index.d.ts +0 -117
  558. package/dist/index.js +0 -88
  559. package/dist/lib/appConfig.d.ts +0 -275
  560. package/dist/lib/auditLog.d.ts +0 -58
  561. package/dist/lib/auditLog.js +0 -218
  562. package/dist/lib/authAdapter.d.ts +0 -246
  563. package/dist/lib/authAdapter.js +0 -7
  564. package/dist/lib/authRateLimit.d.ts +0 -13
  565. package/dist/lib/authRateLimit.js +0 -117
  566. package/dist/lib/clientIp.d.ts +0 -14
  567. package/dist/lib/credentialStuffing.d.ts +0 -31
  568. package/dist/lib/credentialStuffing.js +0 -77
  569. package/dist/lib/crypto.d.ts +0 -11
  570. package/dist/lib/crypto.js +0 -22
  571. package/dist/lib/deletionCancelToken.d.ts +0 -12
  572. package/dist/lib/deletionCancelToken.js +0 -88
  573. package/dist/lib/emailVerification.d.ts +0 -19
  574. package/dist/lib/emailVerification.js +0 -129
  575. package/dist/lib/fingerprint.js +0 -36
  576. package/dist/lib/idempotency.js +0 -182
  577. package/dist/lib/jwks.d.ts +0 -25
  578. package/dist/lib/jwks.js +0 -51
  579. package/dist/lib/jwt.d.ts +0 -15
  580. package/dist/lib/jwt.js +0 -111
  581. package/dist/lib/metrics.d.ts +0 -14
  582. package/dist/lib/mfaChallenge.d.ts +0 -55
  583. package/dist/lib/mfaChallenge.js +0 -398
  584. package/dist/lib/mongo.d.ts +0 -39
  585. package/dist/lib/mongo.js +0 -124
  586. package/dist/lib/oauth.d.ts +0 -40
  587. package/dist/lib/oauth.js +0 -101
  588. package/dist/lib/oauthCode.d.ts +0 -15
  589. package/dist/lib/oauthCode.js +0 -95
  590. package/dist/lib/pagination.d.ts +0 -119
  591. package/dist/lib/pagination.js +0 -166
  592. package/dist/lib/queue.d.ts +0 -37
  593. package/dist/lib/queue.js +0 -117
  594. package/dist/lib/redis.d.ts +0 -9
  595. package/dist/lib/redis.js +0 -61
  596. package/dist/lib/resetPassword.d.ts +0 -12
  597. package/dist/lib/resetPassword.js +0 -93
  598. package/dist/lib/roles.d.ts +0 -7
  599. package/dist/lib/roles.js +0 -49
  600. package/dist/lib/saml.d.ts +0 -25
  601. package/dist/lib/saml.js +0 -64
  602. package/dist/lib/securityEvents.d.ts +0 -28
  603. package/dist/lib/securityEvents.js +0 -26
  604. package/dist/lib/session.d.ts +0 -49
  605. package/dist/lib/session.js +0 -597
  606. package/dist/lib/tenant.d.ts +0 -15
  607. package/dist/lib/tenant.js +0 -65
  608. package/dist/lib/upload.js +0 -112
  609. package/dist/lib/uploadRegistry.d.ts +0 -18
  610. package/dist/lib/uploadRegistry.js +0 -83
  611. package/dist/lib/ws.d.ts +0 -22
  612. package/dist/lib/ws.js +0 -96
  613. package/dist/lib/wsHeartbeat.d.ts +0 -12
  614. package/dist/lib/wsHeartbeat.js +0 -57
  615. package/dist/lib/wsMessages.d.ts +0 -40
  616. package/dist/lib/wsMessages.js +0 -330
  617. package/dist/lib/wsPresence.d.ts +0 -25
  618. package/dist/lib/wsPresence.js +0 -99
  619. package/dist/middleware/auditLog.js +0 -39
  620. package/dist/middleware/bearerAuth.d.ts +0 -2
  621. package/dist/middleware/bearerAuth.js +0 -11
  622. package/dist/middleware/cacheResponse.d.ts +0 -15
  623. package/dist/middleware/cacheResponse.js +0 -178
  624. package/dist/middleware/captcha.js +0 -36
  625. package/dist/middleware/csrf.js +0 -129
  626. package/dist/middleware/identify.d.ts +0 -3
  627. package/dist/middleware/identify.js +0 -122
  628. package/dist/middleware/index.js +0 -1
  629. package/dist/middleware/metrics.d.ts +0 -9
  630. package/dist/middleware/metrics.js +0 -26
  631. package/dist/middleware/rateLimit.js +0 -22
  632. package/dist/middleware/requestId.d.ts +0 -3
  633. package/dist/middleware/scimAuth.d.ts +0 -8
  634. package/dist/middleware/scimAuth.js +0 -29
  635. package/dist/middleware/tenant.d.ts +0 -5
  636. package/dist/middleware/upload.d.ts +0 -5
  637. package/dist/middleware/userAuth.d.ts +0 -3
  638. package/dist/middleware/userAuth.js +0 -6
  639. package/dist/models/AuditLog.d.ts +0 -30
  640. package/dist/models/AuditLog.js +0 -39
  641. package/dist/models/AuthUser.js +0 -55
  642. package/dist/models/Group.d.ts +0 -21
  643. package/dist/models/Group.js +0 -28
  644. package/dist/models/GroupMembership.js +0 -25
  645. package/dist/models/TenantRole.d.ts +0 -15
  646. package/dist/models/TenantRole.js +0 -23
  647. package/dist/routes/auth.d.ts +0 -12
  648. package/dist/routes/auth.js +0 -744
  649. package/dist/routes/groups.js +0 -346
  650. package/dist/routes/health.d.ts +0 -1
  651. package/dist/routes/health.js +0 -22
  652. package/dist/routes/home.d.ts +0 -1
  653. package/dist/routes/home.js +0 -16
  654. package/dist/routes/jobs.d.ts +0 -2
  655. package/dist/routes/m2m.d.ts +0 -2
  656. package/dist/routes/m2m.js +0 -72
  657. package/dist/routes/metrics.d.ts +0 -8
  658. package/dist/routes/metrics.js +0 -55
  659. package/dist/routes/mfa.d.ts +0 -5
  660. package/dist/routes/mfa.js +0 -628
  661. package/dist/routes/oauth.d.ts +0 -2
  662. package/dist/routes/oauth.js +0 -520
  663. package/dist/routes/oidc.d.ts +0 -2
  664. package/dist/routes/oidc.js +0 -29
  665. package/dist/routes/passkey.d.ts +0 -1
  666. package/dist/routes/passkey.js +0 -157
  667. package/dist/routes/saml.d.ts +0 -2
  668. package/dist/routes/saml.js +0 -86
  669. package/dist/routes/scim.d.ts +0 -2
  670. package/dist/routes/scim.js +0 -255
  671. package/dist/routes/uploads.js +0 -227
  672. package/dist/schemas/auth.js +0 -30
  673. package/dist/server.d.ts +0 -57
  674. package/dist/server.js +0 -112
  675. package/dist/services/auth.d.ts +0 -29
  676. package/dist/services/auth.js +0 -238
  677. package/dist/ws/index.d.ts +0 -10
  678. package/dist/ws/index.js +0 -39
  679. package/docs/sections/adding-middleware/full.md +0 -35
  680. package/docs/sections/adding-models/full.md +0 -125
  681. package/docs/sections/adding-models/overview.md +0 -13
  682. package/docs/sections/adding-routes/full.md +0 -182
  683. package/docs/sections/adding-routes/overview.md +0 -23
  684. package/docs/sections/auth-flow/full.md +0 -790
  685. package/docs/sections/auth-flow/overview.md +0 -10
  686. package/docs/sections/auth-security-examples/full.md +0 -388
  687. package/docs/sections/authentication/full.md +0 -130
  688. package/docs/sections/authentication/overview.md +0 -5
  689. package/docs/sections/cli/full.md +0 -42
  690. package/docs/sections/configuration/full.md +0 -172
  691. package/docs/sections/configuration/overview.md +0 -18
  692. package/docs/sections/configuration-example/full.md +0 -117
  693. package/docs/sections/configuration-example/overview.md +0 -30
  694. package/docs/sections/documentation/full.md +0 -171
  695. package/docs/sections/environment-variables/full.md +0 -55
  696. package/docs/sections/exports/full.md +0 -123
  697. package/docs/sections/extending-context/full.md +0 -59
  698. package/docs/sections/header.md +0 -3
  699. package/docs/sections/installation/full.md +0 -6
  700. package/docs/sections/jobs/full.md +0 -140
  701. package/docs/sections/jobs/overview.md +0 -15
  702. package/docs/sections/logging/full.md +0 -83
  703. package/docs/sections/metrics/full.md +0 -131
  704. package/docs/sections/mongodb-connections/full.md +0 -45
  705. package/docs/sections/mongodb-connections/overview.md +0 -7
  706. package/docs/sections/multi-tenancy/full.md +0 -66
  707. package/docs/sections/multi-tenancy/overview.md +0 -15
  708. package/docs/sections/oauth/full.md +0 -189
  709. package/docs/sections/oauth/overview.md +0 -16
  710. package/docs/sections/package-development/full.md +0 -7
  711. package/docs/sections/pagination/full.md +0 -93
  712. package/docs/sections/passkey-login/full.md +0 -90
  713. package/docs/sections/passkey-login/overview.md +0 -1
  714. package/docs/sections/peer-dependencies/full.md +0 -47
  715. package/docs/sections/quick-start/full.md +0 -43
  716. package/docs/sections/response-caching/full.md +0 -117
  717. package/docs/sections/response-caching/overview.md +0 -13
  718. package/docs/sections/roles/full.md +0 -225
  719. package/docs/sections/roles/overview.md +0 -14
  720. package/docs/sections/running-without-redis/full.md +0 -16
  721. package/docs/sections/running-without-redis-or-mongodb/full.md +0 -60
  722. package/docs/sections/signing/full.md +0 -203
  723. package/docs/sections/stack/full.md +0 -10
  724. package/docs/sections/uploads/full.md +0 -208
  725. package/docs/sections/versioning/full.md +0 -85
  726. package/docs/sections/webhook-auth/full.md +0 -100
  727. package/docs/sections/websocket/full.md +0 -196
  728. package/docs/sections/websocket/overview.md +0 -5
  729. package/docs/sections/websocket-rooms/full.md +0 -102
  730. package/docs/sections/websocket-rooms/overview.md +0 -5
  731. /package/dist/{lib/storageAdapter.js → packages/bunshot-admin/src/types/env.js} +0 -0
  732. /package/dist/{lib → packages/bunshot-auth/src/lib}/fingerprint.d.ts +0 -0
  733. /package/dist/{lib → packages/bunshot-auth/src/lib}/logger.d.ts +0 -0
  734. /package/dist/{lib → packages/bunshot-core/src}/constants.d.ts +0 -0
  735. /package/dist/{lib → packages/bunshot-core/src}/storageAdapter.d.ts +0 -0
  736. /package/dist/{lib → src/framework/lib}/createDtoMapper.d.ts +0 -0
  737. /package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.d.ts +0 -0
  738. /package/dist/{middleware → src/framework/middleware}/cors.d.ts +0 -0
  739. /package/dist/{middleware → src/framework/middleware}/cors.js +0 -0
  740. /package/dist/{middleware → src/framework/middleware}/index.d.ts +0 -0
  741. /package/dist/{middleware → src/framework/middleware}/logger.js +0 -0
  742. /package/dist/{lib → src/shared/lib}/constants.js +0 -0
package/dist/app.d.ts DELETED
@@ -1,559 +0,0 @@
1
- import { OpenAPIHono } from "@hono/zod-openapi";
2
- import type { MiddlewareHandler } from "hono";
3
- import type { AppEnv, ValidationErrorFormatter } from "./lib/context";
4
- import type { RequestLogEntry, LogLevel } from "./middleware/requestLogger";
5
- import type { PrimaryField, EmailVerificationConfig, PasswordResetConfig, PasswordPolicyConfig, RefreshTokenConfig, MfaConfig, MfaEmailOtpConfig, MfaWebAuthnConfig, SigningConfig, JwtConfig, BreachedPasswordConfig, StepUpConfig, M2MConfig, OidcConfig, SamlConfig, ScimConfig } from "./lib/appConfig";
6
- import type { CaptchaConfig } from "./lib/captcha";
7
- import type { AuthAdapter } from "./lib/authAdapter";
8
- import type { OAuthProviderConfig } from "./lib/oauth";
9
- type StoreType = "redis" | "mongo" | "sqlite" | "memory";
10
- export type { BreachedPasswordConfig } from "./lib/appConfig";
11
- export interface DbConfig {
12
- /**
13
- * Absolute path to the SQLite database file.
14
- * Required when any store is "sqlite".
15
- * Example: import.meta.dir + "/../data.db"
16
- */
17
- sqlite?: string;
18
- /**
19
- * MongoDB auto-connect mode.
20
- * - "single" (default): calls connectMongo() — auth and app share one server (MONGO_* env vars)
21
- * - "separate": calls connectAuthMongo() + connectAppMongo() — auth on MONGO_AUTH_* server, app on MONGO_* server
22
- * - false: skip auto-connect (call connectMongo / connectAuthMongo / connectAppMongo yourself)
23
- */
24
- mongo?: "single" | "separate" | false;
25
- /**
26
- * Auto-connect Redis before starting. Defaults to true.
27
- * Set false to skip (e.g. when using sqlite or memory stores only).
28
- */
29
- redis?: boolean;
30
- /**
31
- * Where to store JWT sessions. Default: "redis".
32
- * Sessions are stored on appConnection (not authConnection) so they are isolated per-app
33
- * in "separate" mongo mode.
34
- */
35
- sessions?: StoreType;
36
- /**
37
- * Where to store OAuth state (PKCE code verifier, link user ID). Default: follows `sessions`.
38
- */
39
- oauthState?: StoreType;
40
- /**
41
- * Global default store for cacheResponse middleware. Default: "redis".
42
- * Can be overridden per-route via cacheResponse({ store: "..." }).
43
- */
44
- cache?: StoreType;
45
- /**
46
- * Which built-in auth adapter to use for /auth/* routes.
47
- * - "mongo" (default when mongo is enabled): Mongoose adapter (requires connectMongo)
48
- * - "sqlite": bun:sqlite adapter (requires sqlite path)
49
- * - "memory": in-memory Maps (ephemeral, great for tests)
50
- * When `mongo: false`, defaults to the same store as `sessions`.
51
- * Ignored when `auth.adapter` is explicitly passed in CreateAppConfig.
52
- */
53
- auth?: "mongo" | "sqlite" | "memory";
54
- }
55
- export interface AppMeta {
56
- /** App name shown in the root endpoint and OpenAPI docs title. Defaults to "Bun Core API" */
57
- name?: string;
58
- /** Version shown in OpenAPI docs. Defaults to "1.0.0" */
59
- version?: string;
60
- }
61
- export interface OAuthConfig {
62
- /** OAuth provider credentials. Configured providers get automatic /auth/{provider} routes. */
63
- providers?: OAuthProviderConfig;
64
- /** Where to redirect after a successful OAuth login. Defaults to "/" */
65
- postRedirect?: string;
66
- /** Allowlist of redirect URLs. If set, the postRedirect URL is validated against this list.
67
- * Relative paths (e.g., "/") are always allowed. Only absolute URLs are validated. */
68
- allowedRedirectUrls?: string[];
69
- }
70
- export interface AuthRateLimitConfig {
71
- /** Max login failures per window before the account is locked. Default: 10 per 15 min. */
72
- login?: {
73
- windowMs?: number;
74
- max?: number;
75
- };
76
- /** Max registration attempts per IP per window. Default: 5 per hour. */
77
- register?: {
78
- windowMs?: number;
79
- max?: number;
80
- };
81
- /** Max email verification attempts per IP per window. Default: 10 per 15 min. */
82
- verifyEmail?: {
83
- windowMs?: number;
84
- max?: number;
85
- };
86
- /** Max resend-verification attempts per user per window. Default: 3 per hour. */
87
- resendVerification?: {
88
- windowMs?: number;
89
- max?: number;
90
- };
91
- /** Max forgot-password requests per IP per window. Default: 5 per 15 min. */
92
- forgotPassword?: {
93
- windowMs?: number;
94
- max?: number;
95
- };
96
- /** Max reset-password attempts per IP per window. Default: 10 per 15 min. */
97
- resetPassword?: {
98
- windowMs?: number;
99
- max?: number;
100
- };
101
- /** Max account deletion attempts per user per window. Default: 3 per hour. */
102
- deleteAccount?: {
103
- windowMs?: number;
104
- max?: number;
105
- };
106
- /** Max MFA verification attempts per IP per window. Default: 10 per 15 min. */
107
- mfaVerify?: {
108
- windowMs?: number;
109
- max?: number;
110
- };
111
- /** Max MFA email OTP resend attempts per IP per window. Default: 5 per minute. */
112
- mfaResend?: {
113
- windowMs?: number;
114
- max?: number;
115
- };
116
- /**
117
- * Store backend for auth rate limit counters.
118
- * Defaults to "redis" when Redis is enabled, otherwise "memory".
119
- * Use "redis" for multi-instance deployments so limits are shared across servers.
120
- */
121
- store?: "memory" | "redis";
122
- /** Credential stuffing detection. Tracks distinct accounts per IP and IPs per account. */
123
- credentialStuffing?: {
124
- maxAccountsPerIp?: {
125
- count: number;
126
- windowMs: number;
127
- };
128
- maxIpsPerAccount?: {
129
- count: number;
130
- windowMs: number;
131
- };
132
- onDetected?: (signal: {
133
- type: "ip" | "account";
134
- key: string;
135
- count: number;
136
- }) => void;
137
- };
138
- }
139
- export interface AuthConfig {
140
- /** Set false to skip mounting /auth/* routes. Defaults to true */
141
- enabled?: boolean;
142
- /**
143
- * Custom auth adapter for the built-in /auth/* routes.
144
- * Use this for fully custom backends (e.g. Postgres).
145
- * For built-in backends prefer `db.auth: "mongo" | "sqlite" | "memory"`.
146
- * When both are set, this takes precedence.
147
- */
148
- adapter?: AuthAdapter;
149
- /** Valid roles for this app (e.g. ["admin", "editor", "user"]). Used by requireRole middleware. */
150
- roles?: string[];
151
- /** Role automatically assigned to new users on registration. Must be one of roles. */
152
- defaultRole?: string;
153
- /** OAuth provider and redirect configuration */
154
- oauth?: OAuthConfig;
155
- /**
156
- * The primary identifier field used for registration and login.
157
- * Defaults to "email". Use "username" or "phone" for apps that identify users differently.
158
- * Email verification is only available when primaryField is "email".
159
- */
160
- primaryField?: PrimaryField;
161
- /**
162
- * Email verification configuration. Only active when primaryField is "email".
163
- * Provide an onSend callback to send the verification email via any provider (Resend, SendGrid, etc.).
164
- */
165
- emailVerification?: EmailVerificationConfig;
166
- /**
167
- * Password reset configuration. Only active when primaryField is "email".
168
- * Provide an onSend callback to send the reset email via any provider (Resend, SendGrid, etc.).
169
- * Mounts POST /auth/forgot-password and POST /auth/reset-password.
170
- */
171
- passwordReset?: PasswordResetConfig;
172
- /** Password strength policy for registration and reset-password.
173
- * Login is intentionally lenient (min 1) so users under older policies can still sign in.
174
- * Defaults: minLength=8, requireLetter=true, requireDigit=true, requireSpecial=false. */
175
- passwordPolicy?: PasswordPolicyConfig;
176
- /** Rate limit configuration for built-in auth endpoints. */
177
- rateLimit?: AuthRateLimitConfig;
178
- /** Session concurrency and metadata persistence policy. */
179
- sessionPolicy?: AuthSessionPolicyConfig;
180
- /** Account deletion configuration. Enables DELETE /auth/me when the adapter supports deleteUser. */
181
- accountDeletion?: AccountDeletionConfig;
182
- /**
183
- * Refresh token configuration. When set, login/register return short-lived access tokens
184
- * (default 15 min) alongside long-lived refresh tokens (default 30 days). Mounts POST /auth/refresh.
185
- * When not configured, the existing 7-day JWT behavior is unchanged.
186
- */
187
- refreshTokens?: RefreshTokenConfig;
188
- /**
189
- * MFA/TOTP configuration. When set, enables MFA setup/verify/disable routes under /auth/mfa/*.
190
- * Login returns { mfaRequired: true, mfaToken } when MFA is enabled for the user.
191
- * OAuth logins skip MFA (the OAuth provider is treated as the second factor).
192
- */
193
- mfa?: MfaConfig;
194
- /**
195
- * JWT claims configuration. When set, `iss`, `aud`, and `iat` are included in all tokens.
196
- * Tokens with a non-matching issuer or audience will fail verification.
197
- *
198
- * - **`iss`** (issuer) and **`aud`** (audience) are validated on every token verification when
199
- * configured. A token issued for a different issuer or intended for a different audience is
200
- * rejected outright.
201
- * - **`iat`** (issued-at) is always included in tokens once this config is set. Use it to detect
202
- * token reuse or implement absolute expiry windows independent of `exp`.
203
- *
204
- * Recommended for fintech and multi-service deployments where tokens from one service should
205
- * never be accepted by another.
206
- * Use `algorithm: "RS256"` to enable OIDC mode.
207
- */
208
- jwt?: JwtConfig;
209
- /**
210
- * When true, suspension status is checked on every authenticated request (via identify middleware).
211
- * This adds one adapter call per request. Default: false.
212
- * Suspension is always enforced at login time regardless of this setting.
213
- */
214
- checkSuspensionOnIdentify?: boolean;
215
- /**
216
- * Breached password detection using the HaveIBeenPwned k-Anonymity API.
217
- * Checks passwords at registration and reset. No full hash leaves the server.
218
- */
219
- breachedPasswordCheck?: BreachedPasswordConfig;
220
- /**
221
- * Step-up MFA configuration. When set, the requireStepUp() middleware and
222
- * POST /auth/step-up endpoint are available. Requires auth.mfa to be configured.
223
- */
224
- stepUp?: StepUpConfig;
225
- /** M2M client credentials configuration. Enables POST /oauth/token with client_credentials grant. */
226
- m2m?: M2MConfig;
227
- /**
228
- * OIDC discovery and RS256 JWT signing configuration.
229
- * When set, mounts /.well-known/openid-configuration and /.well-known/jwks.json.
230
- * Auto-generates an RSA-2048 key pair on startup if signingKey is not provided.
231
- */
232
- oidc?: OidcConfig;
233
- /** SAML 2.0 SSO configuration. Enables /auth/saml/* routes. Requires samlify peer dependency. */
234
- saml?: SamlConfig;
235
- /** SCIM 2.0 user provisioning. Enables /scim/v2/* endpoints with its own bearer token. */
236
- scim?: ScimConfig;
237
- }
238
- export interface AccountDeletionConfig {
239
- /** Called before deletion. Throw to abort (e.g., active subscription check). */
240
- onBeforeDelete?: (userId: string) => Promise<void>;
241
- /** Called after auth data is deleted. Runs at execution time — query current state, not a snapshot. */
242
- onAfterDelete?: (userId: string) => Promise<void>;
243
- /** When true, deletion is queued as a BullMQ job instead of running synchronously. Requires Redis + BullMQ. */
244
- queued?: boolean;
245
- /** Grace period in seconds before queued deletion executes. Default: 0 (immediate). */
246
- gracePeriod?: number;
247
- /** Called when deletion is scheduled (queued + gracePeriod > 0). Use to send a confirmation/cancel email. */
248
- onDeletionScheduled?: (userId: string, email: string, cancelToken: string) => Promise<void>;
249
- }
250
- export interface AuthSessionPolicyConfig {
251
- /** Max simultaneous active sessions per user. Oldest is evicted when exceeded. Default: 6. */
252
- maxSessions?: number;
253
- /**
254
- * Retain session metadata (IP, user-agent, timestamps) after a session expires or is deleted.
255
- * Enables future novel-device/location detection. Default: true.
256
- */
257
- persistSessionMetadata?: boolean;
258
- /**
259
- * Include inactive (expired/deleted) sessions in GET /auth/sessions.
260
- * Only meaningful when persistSessionMetadata is true. Default: false.
261
- */
262
- includeInactiveSessions?: boolean;
263
- /**
264
- * Update lastActiveAt on every authenticated request.
265
- * Adds one DB write per auth'd request. Default: false.
266
- */
267
- trackLastActive?: boolean;
268
- }
269
- export type { PrimaryField, EmailVerificationConfig, PasswordResetConfig, RefreshTokenConfig, MfaConfig, MfaEmailOtpConfig, MfaWebAuthnConfig, SigningConfig, JwtConfig, StepUpConfig, OidcConfig, SamlConfig, ScimConfig };
270
- export type { CaptchaConfig, CaptchaProvider } from "./lib/captcha";
271
- export interface BotProtectionConfig {
272
- /**
273
- * List of IPv4 CIDRs (e.g. "198.51.100.0/24"), IPv4 addresses, or IPv6 addresses to block outright.
274
- * Matched requests receive a 403 before any other processing.
275
- * Example: ["198.51.100.0/24", "203.0.113.42"]
276
- */
277
- blockList?: string[];
278
- /**
279
- * Also rate-limit by HTTP fingerprint (User-Agent, Accept-*, Connection, browser header presence)
280
- * in addition to IP. Bots that rotate IPs but use the same HTTP client share a bucket.
281
- * Uses the same store as auth rate limiting (Redis or memory).
282
- * Default: false
283
- */
284
- fingerprintRateLimit?: boolean;
285
- }
286
- export interface CsrfConfig {
287
- /** Enable CSRF protection for cookie-authenticated state-changing requests. */
288
- enabled: boolean;
289
- /** Paths exempt from CSRF checks (in addition to built-in OAuth callback exemptions). Uses prefix matching when path ends with "*". */
290
- exemptPaths?: string[];
291
- /** Also validate Origin header against CORS origins. Default: true. */
292
- checkOrigin?: boolean;
293
- }
294
- export interface SecurityConfig {
295
- /** CORS origins. Defaults to "*" */
296
- cors?: string | string[];
297
- /** Additional security headers to set via Hono's secureHeaders middleware.
298
- * Pass a Content-Security-Policy, Permissions-Policy, etc. */
299
- headers?: {
300
- contentSecurityPolicy?: string;
301
- permissionsPolicy?: string;
302
- };
303
- /** Global rate limit. Defaults to 100 req / 60s */
304
- rateLimit?: {
305
- windowMs: number;
306
- max: number;
307
- };
308
- /**
309
- * Bearer auth check. Set false to disable entirely.
310
- * Pass an object with bypass paths (merged with built-in defaults: /docs, /health, /openapi.json, etc.).
311
- * Defaults to enabled with no extra bypass paths.
312
- */
313
- bearerAuth?: boolean | {
314
- bypass?: string[];
315
- };
316
- /**
317
- * Bot protection: CIDR blocklist and fingerprint-based rate limiting.
318
- * Runs before IP rate limiting so blocked IPs are rejected immediately.
319
- */
320
- botProtection?: BotProtectionConfig;
321
- /**
322
- * Trusted proxy configuration for IP extraction.
323
- * - `false` (default): use socket-level IP only, ignore X-Forwarded-For entirely.
324
- * - A number N: trust N proxy hops — take the Nth-from-right IP in the X-Forwarded-For chain.
325
- */
326
- trustProxy?: false | number;
327
- /**
328
- * CSRF protection for cookie-based auth. Opt-in.
329
- * Uses signed double-submit cookie pattern with HMAC-SHA256.
330
- * Only validates when the auth cookie is present on state-changing requests.
331
- */
332
- csrf?: CsrfConfig;
333
- /**
334
- * Unified HMAC signing for cookies, cursors, presigned URLs, request signing,
335
- * idempotency key hashing, and session binding. All features are opt-in.
336
- */
337
- signing?: SigningConfig;
338
- /**
339
- * Global CAPTCHA configuration. When set, use requireCaptcha() middleware on specific routes,
340
- * or enable adaptive mode to auto-require CAPTCHA after rate limit thresholds.
341
- */
342
- captcha?: CaptchaConfig;
343
- }
344
- export interface ModelSchemasConfig {
345
- /**
346
- * One or more absolute directory paths or glob patterns containing shared Zod schemas.
347
- * All matching .ts files are imported before routes so schemas are registered first.
348
- * Optional when registration is "explicit" — in that case your registerSchema /
349
- * registerSchemas calls run at the time each schema file is imported by a route.
350
- * Examples:
351
- * import.meta.dir + "/schemas"
352
- * [import.meta.dir + "/schemas", import.meta.dir + "/models"]
353
- * import.meta.dir + "/models/**\/*.schema.ts"
354
- */
355
- paths?: string | string[];
356
- /**
357
- * How schemas found in the files are registered in `components/schemas`.
358
- * - "auto" (default): exported Zod schemas are registered automatically. The export
359
- * name is used as the schema name, with a trailing "Schema" suffix stripped
360
- * (e.g. `LedgerItemSchema` → `"LedgerItem"`). Schemas already registered via
361
- * `registerSchema` or `registerSchemas` inside the file are never overwritten.
362
- * - "explicit": files are imported but registration is entirely up to the user —
363
- * call `registerSchema` or `registerSchemas` inside each file.
364
- */
365
- registration?: "auto" | "explicit";
366
- }
367
- export interface JobsConfig {
368
- /** Enable the job status endpoint. Default: false. */
369
- statusEndpoint?: boolean;
370
- /**
371
- * Auth protection for job endpoints.
372
- * - `"userAuth"` — requires authenticated user session (cookie/token).
373
- * - `"none"` — no auth (not recommended for production).
374
- * - `MiddlewareHandler[]` — custom middleware stack (e.g., `[userAuth, requireRole("admin")]`).
375
- *
376
- * Default: `"none"`. You must explicitly configure auth.
377
- */
378
- auth?: "userAuth" | "none" | import("hono").MiddlewareHandler<AppEnv>[];
379
- /** Required roles for accessing job endpoints. Only works when auth includes userAuth. */
380
- roles?: string[];
381
- /** Whitelist of queue names exposed. Default: [] (nothing exposed). */
382
- allowedQueues?: string[];
383
- /** When using userAuth, restrict job visibility to the user who created it. Default: false. */
384
- scopeToUser?: boolean;
385
- /**
386
- * Explicitly acknowledge that jobs endpoint is public in production.
387
- * Set to true only when auth is "none" and you understand the risk.
388
- * Without this, createApp throws in production when auth is "none".
389
- */
390
- unsafePublic?: boolean;
391
- }
392
- export interface TenantConfig {
393
- [key: string]: unknown;
394
- }
395
- export interface TenancyConfig {
396
- /** How tenant is identified. */
397
- resolution: "header" | "subdomain" | "path";
398
- /** Header name when resolution is "header". Default: "x-tenant-id". */
399
- headerName?: string;
400
- /** Path segment index when resolution is "path". Default: 0. */
401
- pathSegment?: number;
402
- /** Callback to validate/load tenant. Return null to reject. */
403
- onResolve?: (tenantId: string) => Promise<TenantConfig | null>;
404
- /** TTL in ms for caching onResolve results (LRU cache). Default: 60_000. Set 0 to disable. */
405
- cacheTtlMs?: number;
406
- /** Max entries in tenant resolution cache. Default: 500. */
407
- cacheMaxSize?: number;
408
- /** Paths that skip tenant resolution. Uses startsWith matching. Default: ["/health", "/docs", "/openapi.json"]. */
409
- exemptPaths?: string[];
410
- /** HTTP status when onResolve returns null. Default: 403. */
411
- rejectionStatus?: 403 | 404;
412
- }
413
- export interface LoggingConfig {
414
- /** Enable structured request logging. Default: true. When false, no logger is registered at all. */
415
- enabled?: boolean;
416
- /** Custom log handler. Default: `console.log(JSON.stringify(entry))`. */
417
- onLog?: (entry: RequestLogEntry) => void | Promise<void>;
418
- /** Minimum log level to emit. Entries below this level are dropped. */
419
- level?: LogLevel;
420
- /**
421
- * Paths to exclude from logging. Strings use **prefix matching**.
422
- * Default: `["/health", "/docs", "/openapi.json"]`.
423
- */
424
- excludePaths?: (string | RegExp)[];
425
- /** HTTP methods to exclude from logging (e.g. `["OPTIONS"]`). */
426
- excludeMethods?: string[];
427
- }
428
- export interface MetricsConfig {
429
- /** Enable the /metrics endpoint. Default: false (must be explicitly enabled). */
430
- enabled?: boolean;
431
- /**
432
- * Auth protection for the /metrics endpoint.
433
- * - `"userAuth"` — requires authenticated user session.
434
- * - `"none"` — no auth (default — logs a production warning).
435
- * - `MiddlewareHandler[]` — custom middleware stack.
436
- */
437
- auth?: "userAuth" | "none" | MiddlewareHandler<AppEnv>[];
438
- /** Paths to exclude from metrics collection. Strings use prefix matching. */
439
- excludePaths?: (string | RegExp)[];
440
- /** Custom path normalizer to prevent high-cardinality labels. */
441
- normalizePath?: (path: string) => string;
442
- /** BullMQ queue names to report depth gauges for. */
443
- queues?: string[];
444
- /**
445
- * Explicitly acknowledge that metrics endpoint is public in production.
446
- * Set to true only when auth is "none" and you understand the risk.
447
- * Without this, createApp throws in production when auth is "none".
448
- */
449
- unsafePublic?: boolean;
450
- }
451
- export interface ValidationConfig {
452
- /** Custom formatter for Zod validation errors. Receives issues + requestId, returns the JSON body. */
453
- formatError?: ValidationErrorFormatter;
454
- }
455
- export interface VersioningConfig {
456
- /**
457
- * Version identifiers in ascending order, e.g. `["v1", "v2"]`.
458
- * Each version needs a matching subdirectory under `routesDir` (e.g. `routes/v1/`).
459
- */
460
- versions: string[];
461
- /**
462
- * Subdirectory name for routes shared across all versions. Shared route schemas
463
- * receive unprefixed names since they are version-agnostic. Default: `"shared"`.
464
- * Set `false` to disable shared route discovery.
465
- */
466
- sharedDir?: string | false;
467
- /**
468
- * Which version `/docs` and `/openapi.json` redirect to.
469
- * Defaults to the last version in the array (i.e. the latest).
470
- */
471
- defaultVersion?: string;
472
- }
473
- export interface PresignedUrlConfig {
474
- expirySeconds?: number;
475
- path?: string;
476
- }
477
- export interface UploadConfig {
478
- storage: import("./lib/storageAdapter").StorageAdapter;
479
- maxFileSize?: number;
480
- maxFiles?: number;
481
- allowedMimeTypes?: string[];
482
- keyPrefix?: string;
483
- generateKey?: (file: File, ctx: {
484
- userId?: string;
485
- tenantId?: string;
486
- }) => string;
487
- tenantScopedKeys?: boolean;
488
- presignedUrls?: boolean | PresignedUrlConfig;
489
- /**
490
- * Authorization callback for upload read/delete operations.
491
- * Called when registry ownership check fails or key is not in registry.
492
- */
493
- authorization?: {
494
- authorize?: (input: {
495
- action: "read" | "delete";
496
- key: string;
497
- userId?: string;
498
- tenantId?: string;
499
- }) => boolean | Promise<boolean>;
500
- };
501
- /**
502
- * Allow operations on keys not in the upload registry.
503
- * When false (default), operations on unknown keys return 404.
504
- * When true, requires an authorize callback — denies if absent.
505
- */
506
- allowExternalKeys?: boolean;
507
- }
508
- export interface CreateAppConfig {
509
- /** Absolute path to the service's routes directory (use import.meta.dir + "/routes") */
510
- routesDir: string;
511
- /**
512
- * Shared Zod schema sources. Files are imported before route discovery so schemas
513
- * are registered before any route references them.
514
- * Accepts a directory path, an array of paths/globs, or a full ModelSchemasConfig object.
515
- * Shorthand string/array defaults to registration: "auto".
516
- */
517
- modelSchemas?: string | string[] | ModelSchemasConfig;
518
- /** App name and version for the root endpoint and OpenAPI docs */
519
- app?: AppMeta;
520
- /** Auth, roles, and OAuth configuration */
521
- auth?: AuthConfig;
522
- /** Security: CORS, rate limiting, bearer auth */
523
- security?: SecurityConfig;
524
- /** Extra middleware injected after identify, before route matching */
525
- middleware?: MiddlewareHandler<AppEnv>[];
526
- /** Database connection and store routing configuration */
527
- db?: DbConfig;
528
- /** Job status endpoint configuration. Requires BullMQ + Redis. */
529
- jobs?: JobsConfig;
530
- /** Multi-tenancy configuration. When set, tenant middleware resolves tenant on each request. */
531
- tenancy?: TenancyConfig;
532
- /**
533
- * Groups feature configuration. When set, the groups lib is available.
534
- * Set managementRoutes to mount built-in CRUD routes for groups and memberships.
535
- */
536
- groups?: import("./routes/groups").GroupsConfig;
537
- /** Structured request logging configuration. Replaces Hono's built-in text logger. */
538
- logging?: LoggingConfig;
539
- /** Prometheus-compatible /metrics endpoint. Opt-in. */
540
- metrics?: MetricsConfig;
541
- /** Zod validation error formatting configuration. */
542
- validation?: ValidationConfig;
543
- /** File upload configuration. When set, registers storage adapter and upload settings. */
544
- upload?: UploadConfig;
545
- /**
546
- * API versioning configuration. When set, routes are discovered per-version from
547
- * subdirectories of `routesDir` (e.g. `routes/v1/`, `routes/v2/`). Each version
548
- * gets its own OpenAPI spec at `/{version}/openapi.json` and Scalar docs at
549
- * `/{version}/docs`. Root `/docs` becomes a version selector.
550
- */
551
- versioning?: VersioningConfig;
552
- /**
553
- * Security event streaming (SIEM integration). When set, auth and security events
554
- * are emitted to the provided onEvent callback. Non-blocking — errors are swallowed.
555
- * Use include/exclude to filter event types.
556
- */
557
- securityEvents?: import("./lib/securityEvents").SecurityEventConfig;
558
- }
559
- export declare const createApp: (config: CreateAppConfig) => Promise<OpenAPIHono<AppEnv>>;