@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,172 +0,0 @@
1
- ## Configuration
2
-
3
- ```ts
4
- await createServer({
5
- // Required
6
- routesDir: import.meta.dir + "/routes",
7
-
8
- // Shared schemas (imported before routes; see "Shared schemas across routes" above)
9
- modelSchemas: import.meta.dir + "/schemas", // string shorthand — registration: "auto"
10
- // modelSchemas: [dir + "/schemas", dir + "/models"], // multiple dirs
11
- // modelSchemas: { paths: dir + "/schemas", registration: "explicit" }, // full object
12
-
13
- // App metadata (shown in root endpoint + OpenAPI docs)
14
- app: {
15
- name: "My App", // default: "Bun Core API"
16
- version: "1.0.0", // default: "1.0.0"
17
- },
18
-
19
- // Auth, roles, and OAuth
20
- auth: {
21
- enabled: true, // default: true — set false to disable /auth/* routes
22
- adapter: pgAuthAdapter, // custom adapter — overrides db.auth (use for Postgres etc.)
23
- roles: ["admin", "editor", "user"], // valid roles — required to use requireRole
24
- defaultRole: "user", // assigned to every new user on /auth/register
25
- primaryField: "email", // default: "email" — use "username" or "phone" to change the login identifier
26
- emailVerification: { // optional — only active when primaryField is "email"
27
- required: true, // default: false (soft gate) — set true to block login until verified
28
- tokenExpiry: 60 * 60, // default: 86400 (24 hours) — token TTL in seconds
29
- onSend: async (email, token) => { // called after registration and resend — use any email provider
30
- await resend.emails.send({ to: email, subject: "Verify your email", text: `Token: ${token}` });
31
- },
32
- },
33
- passwordReset: { // optional — only active when primaryField is "email"
34
- tokenExpiry: 60 * 60, // default: 3600 (1 hour) — token TTL in seconds
35
- onSend: async (email, token) => { // called by POST /auth/forgot-password — use any email provider
36
- await resend.emails.send({ to: email, subject: "Reset your password", text: `Token: ${token}` });
37
- },
38
- },
39
- rateLimit: { // optional — built-in auth endpoint rate limiting
40
- login: { windowMs: 15 * 60 * 1000, max: 10 }, // default: 10 failures / 15 min
41
- register: { windowMs: 60 * 60 * 1000, max: 5 }, // default: 5 attempts / hour (per IP)
42
- verifyEmail: { windowMs: 15 * 60 * 1000, max: 10 }, // default: 10 attempts / 15 min (per IP)
43
- resendVerification: { windowMs: 60 * 60 * 1000, max: 3 }, // default: 3 attempts / hour (per user)
44
- forgotPassword: { windowMs: 15 * 60 * 1000, max: 5 }, // default: 5 attempts / 15 min (per IP)
45
- resetPassword: { windowMs: 15 * 60 * 1000, max: 10 }, // default: 10 attempts / 15 min (per IP)
46
- mfaVerify: { windowMs: 15 * 60 * 1000, max: 10 }, // default: 10 attempts / 15 min (per IP)
47
- mfaResend: { windowMs: 60 * 1000, max: 5 }, // default: 5 attempts / minute (per IP)
48
- store: "redis", // default: "redis" when Redis is enabled, else "memory"
49
- },
50
- sessionPolicy: { // optional — session concurrency and metadata
51
- maxSessions: 6, // default: 6 — max simultaneous sessions per user; oldest evicted when exceeded
52
- persistSessionMetadata: true, // default: true — keep IP/UA/timestamp row after session expires (for device detection)
53
- includeInactiveSessions: false, // default: false — include expired/deleted sessions in GET /auth/sessions
54
- trackLastActive: false, // default: false — update lastActiveAt on every auth'd request (adds one DB write)
55
- },
56
- passwordPolicy: { // optional — password complexity rules (applies to register + reset, not login)
57
- minLength: 8, // default: 8
58
- requireLetter: true, // default: true — at least one a–z or A–Z
59
- requireDigit: true, // default: true — at least one 0–9
60
- requireSpecial: false, // default: false — at least one non-alphanumeric character
61
- },
62
- oauth: {
63
- providers: { google: { ... }, apple: { ... } }, // omit a provider to disable it
64
- postRedirect: "/dashboard", // default: "/"
65
- allowedRedirectUrls: ["https://myapp.com"], // optional — validate postRedirect against allowlist at startup
66
- },
67
- refreshTokens: { // optional — short-lived access + long-lived refresh tokens
68
- accessTokenExpiry: 900, // default: 900 (15 min)
69
- refreshTokenExpiry: 2_592_000, // default: 2_592_000 (30 days)
70
- rotationGraceSeconds: 30, // default: 30 — old token still works briefly after rotation
71
- },
72
- mfa: { // optional — TOTP/MFA support (requires otpauth peer dep)
73
- issuer: "My App", // shown in authenticator apps (default: app name)
74
- recoveryCodes: 10, // default: 10
75
- challengeTtlSeconds: 300, // default: 300 (5 min)
76
- emailOtp: { // optional — email OTP as alternative MFA method
77
- onSend: async (email, code) => {}, // called to deliver the OTP code — use any email provider
78
- codeLength: 6, // default: 6
79
- },
80
- },
81
- accountDeletion: { // optional — enables DELETE /auth/me
82
- onBeforeDelete: async (userId) => {}, // throw to abort
83
- onAfterDelete: async (userId) => {}, // cleanup callback
84
- },
85
- },
86
-
87
- // Multi-tenancy
88
- tenancy: {
89
- resolution: "header", // "header" | "subdomain" | "path"
90
- headerName: "x-tenant-id", // header name (when resolution is "header")
91
- onResolve: async (tenantId) => ({}), // validate/load tenant — return null to reject
92
- cacheTtlMs: 60_000, // LRU cache TTL (default: 60s, 0 to disable)
93
- cacheMaxSize: 500, // max cached entries (default: 500)
94
- exemptPaths: [], // extra paths that skip tenant resolution
95
- rejectionStatus: 403, // 403 (default) or 404
96
- },
97
-
98
- // Job status endpoint
99
- jobs: {
100
- statusEndpoint: true, // default: false
101
- auth: "userAuth", // "userAuth" | "none" | MiddlewareHandler[]
102
- roles: ["admin"], // require roles (works with userAuth)
103
- allowedQueues: ["export"], // whitelist — empty = nothing exposed
104
- scopeToUser: false, // when true with userAuth, users see only their own jobs
105
- },
106
-
107
- // Security
108
- security: {
109
- cors: ["https://myapp.com"], // default: "*"
110
- rateLimit: { windowMs: 60_000, max: 100 }, // default: 100 req/min
111
- bearerAuth: true, // default: true — set false to disable, or { bypass: ["/my-public-route"] }
112
- botProtection: {
113
- fingerprintRateLimit: true, // rate-limit by HTTP fingerprint (IP-rotation resistant). default: false
114
- blockList: ["198.51.100.0/24"], // IPv4 CIDRs or exact IPs to block with 403. default: []
115
- },
116
- headers: { // optional — additional security headers via Hono secureHeaders
117
- contentSecurityPolicy: "default-src 'self'", // CSP header value
118
- permissionsPolicy: "camera=(), microphone=()", // Permissions-Policy header value
119
- },
120
- trustProxy: 1, // default: false — see "Trusted Proxy" section below
121
- csrf: { // opt-in CSRF protection for cookie-based auth
122
- enabled: true, // default: false
123
- exemptPaths: ["/webhooks/*"], // additional exempt paths (OAuth callbacks auto-exempt)
124
- checkOrigin: true, // validate Origin header against CORS origins (default: true)
125
- },
126
- },
127
-
128
- // Validation error formatting
129
- validation: {
130
- // Custom formatter for Zod validation errors. Receives issues + requestId, returns JSON body.
131
- // Default produces: { error: "msg1, msg2", details: [{ path, message }], requestId }
132
- formatError: (issues, requestId) => ({
133
- errors: issues.map((i) => ({ field: i.path.join("."), message: i.message })),
134
- requestId,
135
- }),
136
- },
137
-
138
- // API versioning — isolates routes into per-version OpenAPI specs
139
- versioning: {
140
- versions: ["v1", "v2"], // subdirectories under routesDir (routes/v1/, routes/v2/)
141
- defaultVersion: "v2", // /docs and /openapi.json redirect here (default: last in array)
142
- sharedDir: "shared", // routes/shared/ — mounted on all versions, unprefixed schemas (default: "shared", false to disable)
143
- },
144
-
145
- // Extra middleware injected after identify, before route matching
146
- middleware: [],
147
-
148
- // Connections & store routing (all optional — shown with defaults)
149
- db: {
150
- mongo: "single", // "single" | "separate" | false
151
- redis: true, // false to skip auto-connect
152
- sqlite: undefined, // absolute path to .db file — required when any store is "sqlite"
153
- auth: "mongo", // "mongo" | "sqlite" | "memory" — which built-in auth adapter to use
154
- sessions: "redis", // "redis" | "mongo" | "sqlite" | "memory"
155
- oauthState: "redis", // default: follows sessions
156
- cache: "redis", // global default for cacheResponse (overridable per-route)
157
- },
158
-
159
- // Server
160
- port: 3000, // default: process.env.PORT ?? 3000
161
- workersDir: import.meta.dir + "/workers", // auto-imports all .ts files after server starts
162
- enableWorkers: true, // default: true — set false to disable auto-loading
163
-
164
- // WebSocket (see WebSocket section for full examples)
165
- ws: {
166
- handler: { ... }, // override open/message/close/drain handlers
167
- upgradeHandler: async (req, server) => { ... }, // replace default cookie-JWT upgrade logic
168
- onRoomSubscribe(ws, room) { return true; }, // gate room subscriptions; can be async
169
- maxMessageSize: 65_536, // default: 65536 (64 KB) — close connection on oversized messages
170
- },
171
- });
172
- ```
@@ -1,18 +0,0 @@
1
- ## Configuration
2
-
3
- `createServer` / `createApp` accept a config object with these top-level keys:
4
-
5
- | Key | Purpose |
6
- |-----|---------|
7
- | `routesDir` | **(required)** Path to auto-discovered route files |
8
- | `app` | App name and version (shown in docs) |
9
- | `auth` | Roles, OAuth, email verification, MFA, refresh tokens, rate limiting, account deletion |
10
- | `db` | Connection and store routing — mongo, redis, sqlite, sessions, cache, auth adapter |
11
- | `security` | CORS, bearer auth, rate limiting, bot protection, CSRF |
12
- | `tenancy` | Multi-tenant resolution (header/subdomain/path) |
13
- | `jobs` | Job status REST endpoint config |
14
- | `ws` | WebSocket handler and upgrade overrides |
15
- | `middleware` | Extra global middleware array |
16
- | `validation` | Zod validation error formatting (`formatError` callback) |
17
- | `modelSchemas` | Schema auto-discovery paths |
18
- | `port`, `workersDir`, `enableWorkers` | Server options |
@@ -1,117 +0,0 @@
1
- ## Full Configuration Example
2
-
3
- For production apps, break config into its own file. Here's a real-world setup with MongoDB, Redis, OAuth, and email verification:
4
-
5
- ```ts
6
- // src/config/index.ts
7
- import path from "path";
8
- import {
9
- type CreateServerConfig,
10
- type AppMeta,
11
- type AuthConfig,
12
- type DbConfig,
13
- type SecurityConfig,
14
- type ModelSchemasConfig,
15
- } from "@lastshotlabs/bunshot";
16
-
17
- const app: AppMeta = {
18
- name: "My App",
19
- version: "1.0.0",
20
- };
21
-
22
- const db: DbConfig = {
23
- mongo: "single", // "single" | "separate" | false
24
- redis: true, // false to skip Redis
25
- sessions: "redis", // "redis" | "mongo" | "sqlite" | "memory"
26
- cache: "memory", // default store for cacheResponse
27
- auth: "mongo", // "mongo" | "sqlite" | "memory"
28
- oauthState: "memory", // where to store OAuth state tokens
29
- };
30
-
31
- const auth: AuthConfig = {
32
- roles: ["admin", "user"],
33
- defaultRole: "user",
34
- primaryField: "email",
35
- rateLimit: { store: "redis" },
36
- emailVerification: {
37
- required: true,
38
- tokenExpiry: 60 * 60, // 1 hour
39
- onSend: async (email, token) => {
40
- // send verification email using any provider (Resend, SES, etc.)
41
- },
42
- },
43
- oauth: {
44
- postRedirect: "http://localhost:5175/oauth/callback",
45
- providers: {
46
- google: {
47
- clientId: process.env.GOOGLE_CLIENT_ID!,
48
- clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
49
- redirectUri: `http://localhost:${process.env.PORT ?? 3000}/auth/google/callback`,
50
- },
51
- apple: {
52
- clientId: process.env.APPLE_CLIENT_ID!,
53
- teamId: process.env.APPLE_TEAM_ID!,
54
- keyId: process.env.APPLE_KEY_ID!,
55
- privateKey: process.env.APPLE_PRIVATE_KEY!,
56
- redirectUri: `http://localhost:${process.env.PORT ?? 3000}/auth/apple/callback`,
57
- },
58
- microsoft: {
59
- tenantId: process.env.MICROSOFT_TENANT_ID!,
60
- clientId: process.env.MICROSOFT_CLIENT_ID!,
61
- clientSecret: process.env.MICROSOFT_CLIENT_SECRET!,
62
- redirectUri: `http://localhost:${process.env.PORT ?? 3000}/auth/microsoft/callback`,
63
- },
64
- github: {
65
- clientId: process.env.GITHUB_CLIENT_ID!,
66
- clientSecret: process.env.GITHUB_CLIENT_SECRET!,
67
- redirectUri: `http://localhost:${process.env.PORT ?? 3000}/auth/github/callback`,
68
- },
69
- },
70
- },
71
- };
72
-
73
- const security: SecurityConfig = {
74
- bearerAuth: true,
75
- cors: ["*", "http://localhost:5173"],
76
- botProtection: { fingerprintRateLimit: true },
77
- };
78
-
79
- const modelSchemas: ModelSchemasConfig = {
80
- registration: "auto",
81
- paths: [path.join(import.meta.dir, "../schemas/*.ts")],
82
- };
83
-
84
- export const appConfig: CreateServerConfig = {
85
- app,
86
- routesDir: path.join(import.meta.dir, "../routes"),
87
- workersDir: path.join(import.meta.dir, "../workers"),
88
- port: process.env.PORT ? parseInt(process.env.PORT) : 3000,
89
- db,
90
- auth,
91
- security,
92
- modelSchemas,
93
- middleware: [/* your global middleware here */],
94
- };
95
- ```
96
-
97
- Every field above is optional except `routesDir`. See the [Configuration](#configuration) section for the full reference.
98
-
99
- ### Built-in endpoints
100
-
101
- | Endpoint | Description |
102
- |---|---|
103
- | `POST /auth/register` | Create account, returns JWT |
104
- | `POST /auth/login` | Login, returns JWT (includes `emailVerified` when verification is configured) |
105
- | `POST /auth/logout` | Invalidates the current session only |
106
- | `GET /auth/me` | Returns current user's `userId`, `email`, `emailVerified`, and `googleLinked` (requires login) |
107
- | `POST /auth/set-password` | Set or update password (requires login) |
108
- | `GET /auth/sessions` | List active sessions with metadata — IP, user-agent, timestamps (requires login) |
109
- | `DELETE /auth/sessions/:sessionId` | Revoke a specific session by ID (requires login) |
110
- | `POST /auth/verify-email` | Verify email with token (when `emailVerification` is configured) |
111
- | `POST /auth/resend-verification` | Resend verification email (requires credentials, when `emailVerification` is configured) |
112
- | `POST /auth/forgot-password` | Request a password reset email (when `passwordReset` is configured) |
113
- | `POST /auth/reset-password` | Reset password using a token from the reset email (when `passwordReset` is configured) |
114
- | `GET /health` | Health check |
115
- | `GET /docs` | Scalar API docs UI |
116
- | `GET /openapi.json` | OpenAPI spec |
117
- | `WS /ws` | WebSocket endpoint (cookie-JWT auth) |
@@ -1,30 +0,0 @@
1
- ## Full Configuration Example
2
-
3
- For production apps, break config into its own file with MongoDB, Redis, OAuth, and email verification. See the [Configuration](#configuration) section for the full reference.
4
-
5
- ```ts
6
- // src/config/index.ts
7
- import { type CreateServerConfig } from "@lastshotlabs/bunshot";
8
-
9
- export const appConfig: CreateServerConfig = {
10
- app: { name: "My App", version: "1.0.0" },
11
- routesDir: import.meta.dir + "/routes",
12
- workersDir: import.meta.dir + "/workers",
13
- db: { mongo: "single", redis: true, sessions: "redis", cache: "memory", auth: "mongo" },
14
- auth: { roles: ["admin", "user"], defaultRole: "user", primaryField: "email" },
15
- security: { bearerAuth: true, cors: ["*"] },
16
- };
17
- ```
18
-
19
- ### Built-in endpoints
20
-
21
- | Endpoint | Description |
22
- |---|---|
23
- | `POST /auth/register` | Create account, returns JWT |
24
- | `POST /auth/login` | Login, returns JWT |
25
- | `POST /auth/logout` | Invalidates the current session |
26
- | `GET /auth/me` | Current user profile |
27
- | `GET /health` | Health check |
28
- | `GET /docs` | Scalar API docs UI |
29
- | `GET /openapi.json` | OpenAPI spec |
30
- | `WS /ws` | WebSocket endpoint |
@@ -1,171 +0,0 @@
1
- ## Documentation Generation
2
-
3
- Bunshot ships its documentation as modular markdown sections that you can pull into your own project's README.
4
-
5
- ### Setup
6
-
7
- Create a `docs/` directory in your project with a config and build script:
8
-
9
- ```
10
- my-app/
11
- docs/
12
- readme.config.json
13
- build-readme.ts
14
- sections/
15
- intro/
16
- full.md
17
- my-api/
18
- full.md
19
- overview.md
20
- ```
21
-
22
- ### Config — `docs/readme.config.json`
23
-
24
- ```json
25
- {
26
- "output": "../README.md",
27
- "separator": "---",
28
- "sections": [
29
- { "topic": "intro", "default": "full", "separator": false },
30
- { "topic": "my-api", "default": "full" },
31
- { "topic": "bunshot-auth", "file": "@lastshotlabs/bunshot/docs/auth-flow/overview.md" },
32
- { "topic": "bunshot-config", "file": "@lastshotlabs/bunshot/docs/configuration/full.md" }
33
- ],
34
- "profiles": {
35
- "short": {
36
- "my-api": "overview"
37
- }
38
- }
39
- }
40
- ```
41
-
42
- **Section entries:**
43
-
44
- | Field | Description |
45
- |-------|-------------|
46
- | `topic` | Section identifier. Maps to `sections/{topic}/` directory when no `file` is specified. |
47
- | `default` | Variant to use: `"full"` or `"overview"`. Falls back to `"full"` if the requested variant doesn't exist. |
48
- | `file` | Explicit file path. Supports relative paths (`sections/header.md`) and package paths (`@lastshotlabs/bunshot/docs/auth-flow/overview.md`). |
49
- | `separator` | `true`/`false` — whether to insert `---` before this section. Defaults to `true` (except the first section). |
50
-
51
- **Profiles** override specific sections' variants. Only list sections you want to change:
52
-
53
- ```json
54
- "profiles": {
55
- "short": { "my-api": "overview", "bunshot-auth": "overview" }
56
- }
57
- ```
58
-
59
- ### Build script — `docs/build-readme.ts`
60
-
61
- Copy this into your project:
62
-
63
- ```ts
64
- const configPath = import.meta.dir + "/readme.config.json";
65
- const config = await Bun.file(configPath).json();
66
- const profile = Bun.argv[2];
67
- const overrides: Record<string, string> = profile
68
- ? config.profiles?.[profile] ?? {}
69
- : {};
70
- const separator: string = config.separator ?? "---";
71
-
72
- if (profile && !config.profiles?.[profile]) {
73
- console.error(`Unknown profile: "${profile}". Available: ${Object.keys(config.profiles ?? {}).join(", ")}`);
74
- process.exit(1);
75
- }
76
-
77
- function resolveFilePath(file: string): string {
78
- if (file.startsWith("./") || file.startsWith("/") || file.startsWith("../")) {
79
- return import.meta.dir + "/" + file;
80
- }
81
- if (file.includes("/") && !file.startsWith("sections")) {
82
- const resolved = import.meta.resolve(file);
83
- return resolved.replace(/^file:\/\/\//, "");
84
- }
85
- return import.meta.dir + "/" + file;
86
- }
87
-
88
- const parts: string[] = [
89
- "<!-- AUTO-GENERATED — edit docs/sections/, not this file. Run: bun run readme -->",
90
- ];
91
-
92
- for (let i = 0; i < config.sections.length; i++) {
93
- const section = config.sections[i];
94
-
95
- let filePath: string;
96
- if (section.file) {
97
- filePath = resolveFilePath(section.file);
98
- } else {
99
- const variant = overrides[section.topic] ?? section.default ?? "full";
100
- const candidate = `${import.meta.dir}/sections/${section.topic}/${variant}.md`;
101
- filePath = (await Bun.file(candidate).exists())
102
- ? candidate
103
- : `${import.meta.dir}/sections/${section.topic}/full.md`;
104
- }
105
-
106
- const content = (await Bun.file(filePath).text()).replace(/\r\n/g, "\n");
107
-
108
- const useSeparator = section.separator !== undefined ? section.separator : i > 0;
109
- if (useSeparator) parts.push(separator);
110
-
111
- parts.push(content.trimEnd());
112
- }
113
-
114
- const outputPath = import.meta.dir + "/" + (config.output ?? "../README.md");
115
- await Bun.write(outputPath, parts.join("\n\n") + "\n");
116
- console.log(
117
- `README.md compiled (${config.sections.length} sections${profile ? `, profile: ${profile}` : ""})`
118
- );
119
- ```
120
-
121
- ### Add to package.json
122
-
123
- ```json
124
- "scripts": {
125
- "readme": "bun docs/build-readme.ts",
126
- "readme:short": "bun docs/build-readme.ts short"
127
- }
128
- ```
129
-
130
- ### Available bunshot sections
131
-
132
- Pull any of these into your project's README via `"file": "@lastshotlabs/bunshot/docs/{section}/{variant}.md"`:
133
-
134
- | Section | Variants |
135
- |---------|----------|
136
- | `quick-start` | `full` |
137
- | `stack` | `full` |
138
- | `cli` | `full` |
139
- | `installation` | `full` |
140
- | `configuration-example` | `full`, `overview` |
141
- | `adding-routes` | `full`, `overview` |
142
- | `mongodb-connections` | `full`, `overview` |
143
- | `adding-models` | `full`, `overview` |
144
- | `jobs` | `full`, `overview` |
145
- | `websocket` | `full`, `overview` |
146
- | `websocket-rooms` | `full`, `overview` |
147
- | `adding-middleware` | `full` |
148
- | `response-caching` | `full`, `overview` |
149
- | `extending-context` | `full` |
150
- | `configuration` | `full`, `overview` |
151
- | `running-without-redis` | `full` |
152
- | `running-without-redis-or-mongodb` | `full` |
153
- | `auth-flow` | `full`, `overview` |
154
- | `roles` | `full`, `overview` |
155
- | `multi-tenancy` | `full`, `overview` |
156
- | `oauth` | `full`, `overview` |
157
- | `peer-dependencies` | `full` |
158
- | `environment-variables` | `full` |
159
- | `exports` | `full` |
160
-
161
- ### Writing your own sections
162
-
163
- Each section file is self-contained markdown starting with a `## Heading`. Create `docs/sections/{topic}/full.md` and optionally `overview.md`:
164
-
165
- ```markdown
166
- ## My Feature
167
-
168
- Description and code examples here...
169
- ```
170
-
171
- The `---` separators between sections are inserted by the build script — don't include them in section files.
@@ -1,55 +0,0 @@
1
- ## Environment Variables
2
-
3
- ```env
4
- NODE_ENV=development
5
- PORT=...
6
-
7
- # MongoDB (single connection — used by connectMongo())
8
- MONGO_USER_DEV=...
9
- MONGO_PW_DEV=...
10
- MONGO_HOST_DEV=...
11
- MONGO_DB_DEV=...
12
- MONGO_USER_PROD=...
13
- MONGO_PW_PROD=...
14
- MONGO_HOST_PROD=...
15
- MONGO_DB_PROD=...
16
-
17
- # MongoDB auth connection (separate server — used by connectAuthMongo())
18
- # Only needed when running auth on a different cluster from app data
19
- MONGO_AUTH_USER_DEV=...
20
- MONGO_AUTH_PW_DEV=...
21
- MONGO_AUTH_HOST_DEV=...
22
- MONGO_AUTH_DB_DEV=...
23
- MONGO_AUTH_USER_PROD=...
24
- MONGO_AUTH_PW_PROD=...
25
- MONGO_AUTH_HOST_PROD=...
26
- MONGO_AUTH_DB_PROD=...
27
-
28
- # Redis
29
- REDIS_HOST_DEV=host:port
30
- REDIS_USER_DEV=...
31
- REDIS_PW_DEV=...
32
- REDIS_HOST_PROD=host:port
33
- REDIS_USER_PROD=...
34
- REDIS_PW_PROD=...
35
-
36
- # JWT
37
- JWT_SECRET_DEV=...
38
- JWT_SECRET_PROD=...
39
-
40
- # Bearer API key (required on every non-bypassed request)
41
- BEARER_TOKEN_DEV=...
42
- BEARER_TOKEN_PROD=...
43
-
44
- # Logging (optional — defaults to on in dev)
45
- LOGGING_VERBOSE=true
46
-
47
- # OAuth (only needed if using oauthProviders)
48
- GOOGLE_CLIENT_ID=...
49
- GOOGLE_CLIENT_SECRET=...
50
-
51
- APPLE_CLIENT_ID=...
52
- APPLE_TEAM_ID=...
53
- APPLE_KEY_ID=...
54
- APPLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n..."
55
- ```