@lastshotlabs/bunshot 0.0.27 → 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.
- package/.oclif.manifest.json +39 -0
- package/README.md +8282 -2147
- package/dist/cli/commands/init.js +690 -0
- package/dist/cli/index.js +6 -0
- package/dist/cli.js +4 -4
- package/dist/packages/bunshot-admin/src/index.d.ts +15 -0
- package/dist/packages/bunshot-admin/src/index.js +11 -0
- package/dist/packages/bunshot-admin/src/lib/resourceTypes.d.ts +8 -0
- package/dist/packages/bunshot-admin/src/lib/resourceTypes.js +33 -0
- package/dist/packages/bunshot-admin/src/lib/typedRoute.d.ts +14 -0
- package/dist/packages/bunshot-admin/src/lib/typedRoute.js +17 -0
- package/dist/packages/bunshot-admin/src/plugin.d.ts +4 -0
- package/dist/packages/bunshot-admin/src/plugin.js +46 -0
- package/dist/packages/bunshot-admin/src/providers/auth0Access.d.ts +6 -0
- package/dist/packages/bunshot-admin/src/providers/auth0Access.js +32 -0
- package/dist/packages/bunshot-admin/src/routes/admin.d.ts +10 -0
- package/dist/packages/bunshot-admin/src/routes/admin.js +923 -0
- package/dist/packages/bunshot-admin/src/routes/mail.d.ts +6 -0
- package/dist/packages/bunshot-admin/src/routes/mail.js +114 -0
- package/dist/packages/bunshot-admin/src/routes/permissions.d.ts +8 -0
- package/dist/packages/bunshot-admin/src/routes/permissions.js +315 -0
- package/dist/packages/bunshot-admin/src/types/config.d.ts +16 -0
- package/dist/packages/bunshot-admin/src/types/config.js +37 -0
- package/dist/packages/bunshot-admin/src/types/env.d.ts +14 -0
- package/dist/packages/bunshot-admin/src/types/provider.d.ts +1 -0
- package/dist/packages/bunshot-admin/src/types/provider.js +4 -0
- package/dist/packages/bunshot-auth/src/adapters/memoryAuth.d.ts +66 -0
- package/dist/packages/bunshot-auth/src/adapters/memoryAuth.js +1063 -0
- package/dist/packages/bunshot-auth/src/adapters/mongoAuth.d.ts +2 -0
- package/dist/packages/bunshot-auth/src/adapters/mongoAuth.js +536 -0
- package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.d.ts +88 -0
- package/dist/packages/bunshot-auth/src/adapters/sqliteAuth.js +1366 -0
- package/dist/packages/bunshot-auth/src/admin/bunshotAccess.d.ts +2 -0
- package/dist/packages/bunshot-auth/src/admin/bunshotAccess.js +23 -0
- package/dist/packages/bunshot-auth/src/admin/bunshotUsers.d.ts +5 -0
- package/dist/packages/bunshot-auth/src/admin/bunshotUsers.js +131 -0
- package/dist/packages/bunshot-auth/src/bootstrap.d.ts +38 -0
- package/dist/packages/bunshot-auth/src/bootstrap.js +384 -0
- package/dist/packages/bunshot-auth/src/config/appConfig.d.ts +3 -0
- package/dist/packages/bunshot-auth/src/config/appConfig.js +4 -0
- package/dist/packages/bunshot-auth/src/config/authConfig.d.ts +478 -0
- package/dist/packages/bunshot-auth/src/config/authConfig.js +46 -0
- package/dist/packages/bunshot-auth/src/config/configLock.d.ts +2 -0
- package/dist/packages/bunshot-auth/src/config/configLock.js +10 -0
- package/dist/packages/bunshot-auth/src/index.d.ts +25 -0
- package/dist/packages/bunshot-auth/src/index.js +23 -0
- package/dist/packages/bunshot-auth/src/infra/mongo.d.ts +15 -0
- package/dist/packages/bunshot-auth/src/infra/mongo.js +44 -0
- package/dist/packages/bunshot-auth/src/infra/queue.d.ts +14 -0
- package/dist/packages/bunshot-auth/src/infra/queue.js +27 -0
- package/dist/packages/bunshot-auth/src/infra/redis.d.ts +5 -0
- package/dist/packages/bunshot-auth/src/infra/redis.js +15 -0
- package/dist/packages/bunshot-auth/src/infra/signing.d.ts +7 -0
- package/dist/packages/bunshot-auth/src/infra/signing.js +8 -0
- package/dist/packages/bunshot-auth/src/lib/accountLockout.d.ts +34 -0
- package/dist/packages/bunshot-auth/src/lib/accountLockout.js +244 -0
- package/dist/packages/bunshot-auth/src/lib/adapterTiers.d.ts +1 -0
- package/dist/packages/bunshot-auth/src/lib/adapterTiers.js +1 -0
- package/dist/packages/bunshot-auth/src/lib/authAdapter.d.ts +1 -0
- package/dist/packages/bunshot-auth/src/lib/authAdapter.js +1 -0
- package/dist/packages/bunshot-auth/src/lib/authContext.d.ts +15 -0
- package/dist/packages/bunshot-auth/src/lib/authContext.js +1 -0
- package/dist/packages/bunshot-auth/src/lib/authEventBus.d.ts +4 -0
- package/dist/packages/bunshot-auth/src/lib/authEventBus.js +15 -0
- package/dist/packages/bunshot-auth/src/lib/authRateLimit.d.ts +28 -0
- package/dist/packages/bunshot-auth/src/lib/authRateLimit.js +205 -0
- package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.d.ts +8 -2
- package/dist/{lib → packages/bunshot-auth/src/lib}/breachedPassword.js +22 -9
- package/dist/packages/bunshot-auth/src/lib/cache.d.ts +12 -0
- package/dist/packages/bunshot-auth/src/lib/cache.js +120 -0
- package/dist/packages/bunshot-auth/src/lib/clientIp.d.ts +4 -0
- package/dist/{lib → packages/bunshot-auth/src/lib}/clientIp.js +14 -7
- package/dist/packages/bunshot-auth/src/lib/cookieOptions.d.ts +27 -0
- package/dist/packages/bunshot-auth/src/lib/cookieOptions.js +33 -0
- package/dist/packages/bunshot-auth/src/lib/credentialStuffing.d.ts +40 -0
- package/dist/packages/bunshot-auth/src/lib/credentialStuffing.js +221 -0
- package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.d.ts +19 -0
- package/dist/packages/bunshot-auth/src/lib/deletionCancelToken.js +148 -0
- package/dist/packages/bunshot-auth/src/lib/emailTemplates.d.ts +23 -0
- package/dist/packages/bunshot-auth/src/lib/emailTemplates.js +265 -0
- package/dist/packages/bunshot-auth/src/lib/emailVerification.d.ts +30 -0
- package/dist/packages/bunshot-auth/src/lib/emailVerification.js +200 -0
- package/dist/packages/bunshot-auth/src/lib/env.d.ts +1 -0
- package/dist/packages/bunshot-auth/src/lib/env.js +3 -0
- package/dist/packages/bunshot-auth/src/lib/fingerprint.js +36 -0
- package/dist/{lib → packages/bunshot-auth/src/lib}/groups.d.ts +15 -16
- package/dist/{lib → packages/bunshot-auth/src/lib}/groups.js +22 -34
- package/dist/packages/bunshot-auth/src/lib/jwks.d.ts +28 -0
- package/dist/packages/bunshot-auth/src/lib/jwks.js +79 -0
- package/dist/packages/bunshot-auth/src/lib/jwt.d.ts +12 -0
- package/dist/packages/bunshot-auth/src/lib/jwt.js +86 -0
- package/dist/{lib → packages/bunshot-auth/src/lib}/logger.js +3 -3
- package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.d.ts +5 -4
- package/dist/{lib → packages/bunshot-auth/src/lib}/m2m.js +6 -10
- package/dist/packages/bunshot-auth/src/lib/magicLink.d.ts +13 -0
- package/dist/packages/bunshot-auth/src/lib/magicLink.js +145 -0
- package/dist/packages/bunshot-auth/src/lib/mfaChallenge.d.ts +60 -0
- package/dist/packages/bunshot-auth/src/lib/mfaChallenge.js +419 -0
- package/dist/packages/bunshot-auth/src/lib/oauth.d.ts +82 -0
- package/dist/packages/bunshot-auth/src/lib/oauth.js +177 -0
- package/dist/packages/bunshot-auth/src/lib/oauthCode.d.ts +19 -0
- package/dist/packages/bunshot-auth/src/lib/oauthCode.js +182 -0
- package/dist/packages/bunshot-auth/src/lib/oauthReauth.d.ts +19 -0
- package/dist/packages/bunshot-auth/src/lib/oauthReauth.js +255 -0
- package/dist/packages/bunshot-auth/src/lib/organization.d.ts +66 -0
- package/dist/packages/bunshot-auth/src/lib/organization.js +225 -0
- package/dist/packages/bunshot-auth/src/lib/passwordHistory.d.ts +12 -0
- package/dist/packages/bunshot-auth/src/lib/passwordHistory.js +31 -0
- package/dist/packages/bunshot-auth/src/lib/resetPassword.d.ts +20 -0
- package/dist/packages/bunshot-auth/src/lib/resetPassword.js +148 -0
- package/dist/packages/bunshot-auth/src/lib/roles.d.ts +9 -0
- package/dist/packages/bunshot-auth/src/lib/roles.js +93 -0
- package/dist/packages/bunshot-auth/src/lib/saml.d.ts +29 -0
- package/dist/packages/bunshot-auth/src/lib/saml.js +73 -0
- package/dist/packages/bunshot-auth/src/lib/samlRequestId.d.ts +13 -0
- package/dist/packages/bunshot-auth/src/lib/samlRequestId.js +129 -0
- package/dist/{lib → packages/bunshot-auth/src/lib}/scim.d.ts +7 -7
- package/dist/{lib → packages/bunshot-auth/src/lib}/scim.js +15 -13
- package/dist/packages/bunshot-auth/src/lib/securityEventWiring.d.ts +22 -0
- package/dist/packages/bunshot-auth/src/lib/securityEventWiring.js +65 -0
- package/dist/packages/bunshot-auth/src/lib/session.d.ts +45 -0
- package/dist/packages/bunshot-auth/src/lib/session.js +1211 -0
- package/dist/packages/bunshot-auth/src/lib/storeInfra.d.ts +26 -0
- package/dist/packages/bunshot-auth/src/lib/storeInfra.js +18 -0
- package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.d.ts +3 -2
- package/dist/{lib → packages/bunshot-auth/src/lib}/suspension.js +2 -5
- package/dist/packages/bunshot-auth/src/lib/validateAdapter.d.ts +16 -0
- package/dist/packages/bunshot-auth/src/lib/validateAdapter.js +161 -0
- package/dist/packages/bunshot-auth/src/middleware/bearerAuth.d.ts +13 -0
- package/dist/packages/bunshot-auth/src/middleware/bearerAuth.js +58 -0
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/csrf.d.ts +5 -4
- package/dist/packages/bunshot-auth/src/middleware/csrf.js +138 -0
- package/dist/packages/bunshot-auth/src/middleware/identify.d.ts +4 -0
- package/dist/packages/bunshot-auth/src/middleware/identify.js +124 -0
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.d.ts +2 -2
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireMfaSetup.js +10 -8
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.d.ts +2 -2
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireRole.js +20 -16
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.d.ts +2 -2
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireScope.js +6 -6
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.d.ts +2 -2
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireStepUp.js +8 -7
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.d.ts +2 -2
- package/dist/{middleware → packages/bunshot-auth/src/middleware}/requireVerifiedEmail.js +7 -6
- package/dist/packages/bunshot-auth/src/middleware/scimAuth.d.ts +8 -0
- package/dist/packages/bunshot-auth/src/middleware/scimAuth.js +29 -0
- package/dist/packages/bunshot-auth/src/middleware/userAuth.d.ts +3 -0
- package/dist/packages/bunshot-auth/src/middleware/userAuth.js +6 -0
- package/dist/{models → packages/bunshot-auth/src/models}/AuthUser.d.ts +12 -8
- package/dist/packages/bunshot-auth/src/models/AuthUser.js +53 -0
- package/dist/packages/bunshot-auth/src/models/Group.d.ts +19 -0
- package/dist/packages/bunshot-auth/src/models/Group.js +22 -0
- package/dist/{models → packages/bunshot-auth/src/models}/GroupMembership.d.ts +6 -8
- package/dist/packages/bunshot-auth/src/models/GroupMembership.js +19 -0
- package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.d.ts +1 -1
- package/dist/{models → packages/bunshot-auth/src/models}/M2MClient.js +5 -5
- package/dist/packages/bunshot-auth/src/models/TenantRole.d.ts +13 -0
- package/dist/packages/bunshot-auth/src/models/TenantRole.js +17 -0
- package/dist/packages/bunshot-auth/src/plugin.d.ts +4 -0
- package/dist/packages/bunshot-auth/src/plugin.js +274 -0
- package/dist/packages/bunshot-auth/src/routes/auth.d.ts +15 -0
- package/dist/packages/bunshot-auth/src/routes/auth.js +1624 -0
- package/dist/packages/bunshot-auth/src/routes/groups.d.ts +4 -0
- package/dist/packages/bunshot-auth/src/routes/groups.js +481 -0
- package/dist/packages/bunshot-auth/src/routes/m2m.d.ts +2 -0
- package/dist/packages/bunshot-auth/src/routes/m2m.js +145 -0
- package/dist/packages/bunshot-auth/src/routes/mfa.d.ts +6 -0
- package/dist/packages/bunshot-auth/src/routes/mfa.js +991 -0
- package/dist/packages/bunshot-auth/src/routes/oauth.d.ts +3 -0
- package/dist/packages/bunshot-auth/src/routes/oauth.js +1727 -0
- package/dist/packages/bunshot-auth/src/routes/oidc.d.ts +2 -0
- package/dist/packages/bunshot-auth/src/routes/oidc.js +84 -0
- package/dist/packages/bunshot-auth/src/routes/organizations.d.ts +3 -0
- package/dist/packages/bunshot-auth/src/routes/organizations.js +741 -0
- package/dist/packages/bunshot-auth/src/routes/passkey.d.ts +2 -0
- package/dist/packages/bunshot-auth/src/routes/passkey.js +199 -0
- package/dist/packages/bunshot-auth/src/routes/saml.d.ts +2 -0
- package/dist/packages/bunshot-auth/src/routes/saml.js +226 -0
- package/dist/packages/bunshot-auth/src/routes/scim.d.ts +3 -0
- package/dist/packages/bunshot-auth/src/routes/scim.js +588 -0
- package/dist/packages/bunshot-auth/src/runtime.d.ts +52 -0
- package/dist/packages/bunshot-auth/src/runtime.js +11 -0
- package/dist/{schemas → packages/bunshot-auth/src/schemas}/auth.d.ts +4 -5
- package/dist/packages/bunshot-auth/src/schemas/auth.js +24 -0
- package/dist/packages/bunshot-auth/src/schemas/error.d.ts +10 -0
- package/dist/packages/bunshot-auth/src/schemas/error.js +10 -0
- package/dist/packages/bunshot-auth/src/schemas/success.d.ts +10 -0
- package/dist/packages/bunshot-auth/src/schemas/success.js +10 -0
- package/dist/packages/bunshot-auth/src/services/auth.d.ts +39 -0
- package/dist/packages/bunshot-auth/src/services/auth.js +378 -0
- package/dist/{services → packages/bunshot-auth/src/services}/mfa.d.ts +41 -17
- package/dist/{services → packages/bunshot-auth/src/services}/mfa.js +259 -183
- package/dist/packages/bunshot-auth/src/testing.d.ts +31 -0
- package/dist/packages/bunshot-auth/src/testing.js +23 -0
- package/dist/packages/bunshot-auth/src/types/adapter.d.ts +1 -0
- package/dist/packages/bunshot-auth/src/types/adapter.js +1 -0
- package/dist/packages/bunshot-auth/src/types/config.d.ts +152 -0
- package/dist/packages/bunshot-auth/src/types/config.js +179 -0
- package/dist/{routes → packages/bunshot-auth/src/types}/groups.d.ts +2 -3
- package/dist/packages/bunshot-auth/src/types/groups.js +1 -0
- package/dist/packages/bunshot-auth/src/types/oauthCode.d.ts +6 -0
- package/dist/packages/bunshot-auth/src/types/oauthCode.js +1 -0
- package/dist/packages/bunshot-auth/src/types/oauthReauth.d.ts +13 -0
- package/dist/packages/bunshot-auth/src/types/oauthReauth.js +1 -0
- package/dist/packages/bunshot-auth/src/types/redis.d.ts +1 -0
- package/dist/packages/bunshot-auth/src/types/redis.js +1 -0
- package/dist/packages/bunshot-auth/src/types/saml.d.ts +10 -0
- package/dist/packages/bunshot-auth/src/types/saml.js +1 -0
- package/dist/packages/bunshot-auth/src/types/session.d.ts +18 -0
- package/dist/packages/bunshot-auth/src/types/session.js +1 -0
- package/dist/packages/bunshot-auth/src/types/store.d.ts +1 -0
- package/dist/packages/bunshot-auth/src/types/store.js +1 -0
- package/dist/packages/bunshot-core/src/adminProvider.d.ts +95 -0
- package/dist/packages/bunshot-core/src/adminProvider.js +1 -0
- package/dist/packages/bunshot-core/src/auditLog.d.ts +34 -0
- package/dist/packages/bunshot-core/src/auditLog.js +1 -0
- package/dist/packages/bunshot-core/src/auth-adapter.d.ts +227 -0
- package/dist/packages/bunshot-core/src/auth-adapter.js +4 -0
- package/dist/packages/bunshot-core/src/authVariables.d.ts +14 -0
- package/dist/packages/bunshot-core/src/authVariables.js +4 -0
- package/dist/packages/bunshot-core/src/cache.d.ts +12 -0
- package/dist/packages/bunshot-core/src/cache.js +21 -0
- package/dist/{lib → packages/bunshot-core/src}/captcha.d.ts +1 -10
- package/dist/packages/bunshot-core/src/captcha.js +1 -0
- package/dist/packages/bunshot-core/src/clearRegistry.d.ts +6 -0
- package/dist/packages/bunshot-core/src/clearRegistry.js +17 -0
- package/dist/packages/bunshot-core/src/clientIp.d.ts +3 -0
- package/dist/packages/bunshot-core/src/clientIp.js +45 -0
- package/dist/packages/bunshot-core/src/configLock.d.ts +4 -0
- package/dist/packages/bunshot-core/src/configLock.js +7 -0
- package/dist/packages/bunshot-core/src/configValidation.d.ts +22 -0
- package/dist/packages/bunshot-core/src/configValidation.js +39 -0
- package/dist/packages/bunshot-core/src/constants.js +10 -0
- package/dist/packages/bunshot-core/src/context/bunshotContext.d.ts +232 -0
- package/dist/packages/bunshot-core/src/context/bunshotContext.js +1 -0
- package/dist/packages/bunshot-core/src/context/contextAccess.d.ts +3 -0
- package/dist/packages/bunshot-core/src/context/contextAccess.js +16 -0
- package/dist/packages/bunshot-core/src/context/contextStore.d.ts +16 -0
- package/dist/packages/bunshot-core/src/context/contextStore.js +31 -0
- package/dist/packages/bunshot-core/src/context/frameworkConfig.d.ts +38 -0
- package/dist/packages/bunshot-core/src/context/frameworkConfig.js +1 -0
- package/dist/packages/bunshot-core/src/context/index.d.ts +4 -0
- package/dist/packages/bunshot-core/src/context/index.js +2 -0
- package/dist/packages/bunshot-core/src/context.d.ts +40 -0
- package/dist/packages/bunshot-core/src/context.js +35 -0
- package/dist/packages/bunshot-core/src/coreContracts.d.ts +47 -0
- package/dist/packages/bunshot-core/src/coreContracts.js +1 -0
- package/dist/packages/bunshot-core/src/coreRegistrar.d.ts +6 -0
- package/dist/packages/bunshot-core/src/coreRegistrar.js +42 -0
- package/dist/{lib → packages/bunshot-core/src}/createRoute.d.ts +4 -30
- package/dist/{lib → packages/bunshot-core/src}/createRoute.js +39 -88
- package/dist/packages/bunshot-core/src/cronRegistry.d.ts +11 -0
- package/dist/packages/bunshot-core/src/cronRegistry.js +1 -0
- package/dist/packages/bunshot-core/src/crypto.d.ts +43 -0
- package/dist/packages/bunshot-core/src/crypto.js +74 -0
- package/dist/packages/bunshot-core/src/csrf.d.ts +8 -0
- package/dist/packages/bunshot-core/src/csrf.js +1 -0
- package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.d.ts +7 -0
- package/dist/packages/bunshot-core/src/defaults/defaultFingerprint.js +19 -0
- package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.d.ts +6 -0
- package/dist/packages/bunshot-core/src/defaults/memoryCacheAdapter.js +40 -0
- package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.d.ts +6 -0
- package/dist/packages/bunshot-core/src/defaults/memoryRateLimit.js +24 -0
- package/dist/packages/bunshot-core/src/emailTemplates.d.ts +5 -0
- package/dist/packages/bunshot-core/src/emailTemplates.js +10 -0
- package/dist/{lib/HttpError.d.ts → packages/bunshot-core/src/errors.d.ts} +4 -1
- package/dist/{lib/HttpError.js → packages/bunshot-core/src/errors.js} +7 -1
- package/dist/packages/bunshot-core/src/eventBus.d.ts +270 -0
- package/dist/packages/bunshot-core/src/eventBus.js +143 -0
- package/dist/packages/bunshot-core/src/idempotency.d.ts +18 -0
- package/dist/packages/bunshot-core/src/idempotency.js +1 -0
- package/dist/packages/bunshot-core/src/index.d.ts +60 -0
- package/dist/packages/bunshot-core/src/index.js +34 -0
- package/dist/packages/bunshot-core/src/mail.d.ts +14 -0
- package/dist/packages/bunshot-core/src/mail.js +8 -0
- package/dist/packages/bunshot-core/src/memoryEviction.d.ts +24 -0
- package/dist/packages/bunshot-core/src/memoryEviction.js +52 -0
- package/dist/packages/bunshot-core/src/pagination.d.ts +45 -0
- package/dist/packages/bunshot-core/src/pagination.js +61 -0
- package/dist/packages/bunshot-core/src/permissions.d.ts +64 -0
- package/dist/packages/bunshot-core/src/permissions.js +27 -0
- package/dist/packages/bunshot-core/src/plugin.d.ts +44 -0
- package/dist/packages/bunshot-core/src/plugin.js +1 -0
- package/dist/packages/bunshot-core/src/rateLimit.d.ts +5 -0
- package/dist/packages/bunshot-core/src/rateLimit.js +18 -0
- package/dist/packages/bunshot-core/src/redis.d.ts +21 -0
- package/dist/packages/bunshot-core/src/redis.js +1 -0
- package/dist/packages/bunshot-core/src/routeAuth.d.ts +5 -0
- package/dist/packages/bunshot-core/src/routeAuth.js +11 -0
- package/dist/packages/bunshot-core/src/routeOverrides.d.ts +24 -0
- package/dist/packages/bunshot-core/src/routeOverrides.js +25 -0
- package/dist/packages/bunshot-core/src/routerAdapter.d.ts +6 -0
- package/dist/packages/bunshot-core/src/routerAdapter.js +56 -0
- package/dist/packages/bunshot-core/src/secrets.d.ts +48 -0
- package/dist/packages/bunshot-core/src/secrets.js +8 -0
- package/dist/packages/bunshot-core/src/signing.d.ts +41 -0
- package/dist/packages/bunshot-core/src/signing.js +1 -0
- package/dist/packages/bunshot-core/src/sse.d.ts +36 -0
- package/dist/packages/bunshot-core/src/sse.js +1 -0
- package/dist/packages/bunshot-core/src/storageAdapter.js +1 -0
- package/dist/packages/bunshot-core/src/storeInfra.d.ts +44 -0
- package/dist/packages/bunshot-core/src/storeInfra.js +18 -0
- package/dist/packages/bunshot-core/src/storeType.d.ts +7 -0
- package/dist/packages/bunshot-core/src/storeType.js +1 -0
- package/dist/packages/bunshot-core/src/testing.d.ts +1 -0
- package/dist/packages/bunshot-core/src/testing.js +1 -0
- package/dist/packages/bunshot-core/src/uploadRegistry.d.ts +23 -0
- package/dist/packages/bunshot-core/src/uploadRegistry.js +4 -0
- package/dist/packages/bunshot-core/src/userResolver.d.ts +5 -0
- package/dist/packages/bunshot-core/src/userResolver.js +14 -0
- package/dist/packages/bunshot-core/src/wsMessages.d.ts +42 -0
- package/dist/packages/bunshot-core/src/wsMessages.js +4 -0
- package/dist/packages/bunshot-permissions/src/adapters/memory.d.ts +7 -0
- package/dist/packages/bunshot-permissions/src/adapters/memory.js +73 -0
- package/dist/packages/bunshot-permissions/src/index.d.ts +10 -0
- package/dist/packages/bunshot-permissions/src/index.js +5 -0
- package/dist/packages/bunshot-permissions/src/lib/bootstrap.d.ts +7 -0
- package/dist/packages/bunshot-permissions/src/lib/bootstrap.js +12 -0
- package/dist/packages/bunshot-permissions/src/lib/evaluator.d.ts +10 -0
- package/dist/packages/bunshot-permissions/src/lib/evaluator.js +165 -0
- package/dist/packages/bunshot-permissions/src/lib/registry.d.ts +2 -0
- package/dist/packages/bunshot-permissions/src/lib/registry.js +31 -0
- package/dist/packages/bunshot-permissions/src/lib/validation.d.ts +1 -0
- package/dist/packages/bunshot-permissions/src/lib/validation.js +1 -0
- package/dist/packages/bunshot-permissions/src/types/adapter.d.ts +1 -0
- package/dist/packages/bunshot-permissions/src/types/adapter.js +1 -0
- package/dist/packages/bunshot-permissions/src/types/evaluator.d.ts +1 -0
- package/dist/packages/bunshot-permissions/src/types/evaluator.js +1 -0
- package/dist/packages/bunshot-permissions/src/types/models.d.ts +1 -0
- package/dist/packages/bunshot-permissions/src/types/models.js +1 -0
- package/dist/packages/bunshot-permissions/src/types/registry.d.ts +1 -0
- package/dist/packages/bunshot-permissions/src/types/registry.js +1 -0
- package/dist/packages/bunshot-postgres/src/adapter.d.ts +6 -0
- package/dist/packages/bunshot-postgres/src/adapter.js +794 -0
- package/dist/packages/bunshot-postgres/src/connection.d.ts +15 -0
- package/dist/packages/bunshot-postgres/src/connection.js +16 -0
- package/dist/packages/bunshot-postgres/src/index.d.ts +4 -0
- package/dist/packages/bunshot-postgres/src/index.js +2 -0
- package/dist/packages/bunshot-postgres/src/schema.d.ts +997 -0
- package/dist/packages/bunshot-postgres/src/schema.js +105 -0
- package/dist/src/app.d.ts +230 -0
- package/dist/src/app.js +182 -0
- package/dist/src/cli/commands/init.d.ts +10 -0
- package/dist/src/cli/commands/init.js +709 -0
- package/dist/src/cli/index.d.ts +1 -0
- package/dist/src/cli/index.js +3 -0
- package/dist/src/entrypoints/mongo.d.ts +6 -0
- package/dist/src/entrypoints/mongo.js +4 -0
- package/dist/src/entrypoints/queue.d.ts +2 -0
- package/dist/src/entrypoints/queue.js +1 -0
- package/dist/src/entrypoints/redis.d.ts +1 -0
- package/dist/src/entrypoints/redis.js +1 -0
- package/dist/{adapters → src/framework/adapters}/localStorage.d.ts +1 -1
- package/dist/{adapters → src/framework/adapters}/localStorage.js +10 -10
- package/dist/src/framework/adapters/memoryStorage.d.ts +2 -0
- package/dist/src/framework/adapters/memoryStorage.js +45 -0
- package/dist/{adapters → src/framework/adapters}/s3Storage.d.ts +1 -1
- package/dist/{adapters → src/framework/adapters}/s3Storage.js +12 -12
- package/dist/src/framework/admin/bunshotAccess.d.ts +2 -0
- package/dist/src/framework/admin/bunshotAccess.js +23 -0
- package/dist/src/framework/admin/bunshotUsers.d.ts +2 -0
- package/dist/src/framework/admin/bunshotUsers.js +103 -0
- package/dist/src/framework/admin/index.d.ts +7 -0
- package/dist/src/framework/admin/index.js +21 -0
- package/dist/src/framework/boundaryAdapters/cacheFactories.d.ts +13 -0
- package/dist/src/framework/boundaryAdapters/cacheFactories.js +86 -0
- package/dist/src/framework/boundaryAdapters/index.d.ts +2 -0
- package/dist/src/framework/boundaryAdapters/index.js +1 -0
- package/dist/src/framework/boundaryAdapters.d.ts +17 -0
- package/dist/src/framework/boundaryAdapters.js +62 -0
- package/dist/src/framework/buildContext.d.ts +33 -0
- package/dist/src/framework/buildContext.js +119 -0
- package/dist/src/framework/config/schema.d.ts +447 -0
- package/dist/src/framework/config/schema.js +528 -0
- package/dist/src/framework/createInfrastructure.d.ts +76 -0
- package/dist/src/framework/createInfrastructure.js +221 -0
- package/dist/src/framework/lib/auditLog.d.ts +23 -0
- package/dist/src/framework/lib/auditLog.js +416 -0
- package/dist/src/framework/lib/captcha.d.ts +11 -0
- package/dist/{lib → src/framework/lib}/captcha.js +13 -10
- package/dist/{lib → src/framework/lib}/createDtoMapper.js +4 -4
- package/dist/src/framework/lib/createRoute.d.ts +1 -0
- package/dist/src/framework/lib/createRoute.js +2 -0
- package/dist/{lib → src/framework/lib}/idempotency.d.ts +2 -6
- package/dist/src/framework/lib/idempotency.js +74 -0
- package/dist/src/framework/lib/logger.d.ts +3 -0
- package/dist/src/framework/lib/logger.js +14 -0
- package/dist/src/framework/lib/metrics.d.ts +34 -0
- package/dist/{lib → src/framework/lib}/metrics.js +49 -57
- package/dist/src/framework/lib/pagination.d.ts +42 -0
- package/dist/src/framework/lib/pagination.js +51 -0
- package/dist/src/framework/lib/redisTransport.d.ts +38 -0
- package/dist/src/framework/lib/redisTransport.js +107 -0
- package/dist/src/framework/lib/resolveUserId.d.ts +2 -0
- package/dist/src/framework/lib/resolveUserId.js +5 -0
- package/dist/src/framework/lib/sseCollision.d.ts +6 -0
- package/dist/src/framework/lib/sseCollision.js +26 -0
- package/dist/src/framework/lib/storageAdapter.d.ts +1 -0
- package/dist/src/framework/lib/storageAdapter.js +1 -0
- package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.js +4 -4
- package/dist/src/framework/lib/tenant.d.ts +21 -0
- package/dist/src/framework/lib/tenant.js +70 -0
- package/dist/{lib → src/framework/lib}/upload.d.ts +11 -10
- package/dist/src/framework/lib/upload.js +132 -0
- package/dist/src/framework/lib/uploadRegistry.d.ts +23 -0
- package/dist/src/framework/lib/uploadRegistry.js +34 -0
- package/dist/{lib → src/framework/lib}/validate.d.ts +1 -1
- package/dist/{lib → src/framework/lib}/validate.js +2 -2
- package/dist/src/framework/lib/ws.d.ts +19 -0
- package/dist/src/framework/lib/ws.js +130 -0
- package/dist/src/framework/lib/wsHeartbeat.d.ts +12 -0
- package/dist/src/framework/lib/wsHeartbeat.js +53 -0
- package/dist/src/framework/lib/wsMessages.d.ts +25 -0
- package/dist/src/framework/lib/wsMessages.js +45 -0
- package/dist/src/framework/lib/wsNamespace.d.ts +17 -0
- package/dist/src/framework/lib/wsNamespace.js +19 -0
- package/dist/src/framework/lib/wsPresence.d.ts +17 -0
- package/dist/src/framework/lib/wsPresence.js +84 -0
- package/dist/src/framework/lib/wsTransport.d.ts +38 -0
- package/dist/src/framework/lib/wsTransport.js +9 -0
- package/dist/{lib → src/framework/lib}/zodToMongoose.d.ts +1 -1
- package/dist/{lib → src/framework/lib}/zodToMongoose.js +11 -11
- package/dist/{middleware → src/framework/middleware}/auditLog.d.ts +4 -3
- package/dist/src/framework/middleware/auditLog.js +42 -0
- package/dist/{middleware → src/framework/middleware}/botProtection.d.ts +2 -2
- package/dist/{middleware → src/framework/middleware}/botProtection.js +8 -9
- package/dist/src/framework/middleware/cacheResponse.d.ts +35 -0
- package/dist/src/framework/middleware/cacheResponse.js +126 -0
- package/dist/{middleware → src/framework/middleware}/captcha.d.ts +2 -3
- package/dist/src/framework/middleware/captcha.js +37 -0
- package/dist/{middleware → src/framework/middleware}/errorHandler.d.ts +1 -1
- package/dist/{middleware → src/framework/middleware}/errorHandler.js +2 -2
- package/dist/src/framework/middleware/index.js +1 -0
- package/dist/{middleware → src/framework/middleware}/logger.d.ts +1 -1
- package/dist/src/framework/middleware/metrics.d.ts +12 -0
- package/dist/src/framework/middleware/metrics.js +26 -0
- package/dist/{middleware → src/framework/middleware}/rateLimit.d.ts +2 -2
- package/dist/src/framework/middleware/rateLimit.js +22 -0
- package/dist/src/framework/middleware/requestId.d.ts +3 -0
- package/dist/{middleware → src/framework/middleware}/requestId.js +2 -2
- package/dist/{middleware → src/framework/middleware}/requestLogger.d.ts +3 -3
- package/dist/{middleware → src/framework/middleware}/requestLogger.js +17 -12
- package/dist/{middleware → src/framework/middleware}/requestSigning.d.ts +2 -2
- package/dist/{middleware → src/framework/middleware}/requestSigning.js +18 -20
- package/dist/src/framework/middleware/tenant.d.ts +14 -0
- package/dist/{middleware → src/framework/middleware}/tenant.js +31 -27
- package/dist/src/framework/middleware/upload.d.ts +5 -0
- package/dist/{middleware → src/framework/middleware}/upload.js +4 -4
- package/dist/{middleware → src/framework/middleware}/webhookAuth.d.ts +3 -3
- package/dist/{middleware → src/framework/middleware}/webhookAuth.js +11 -12
- package/dist/src/framework/models/AuditLog.d.ts +21 -0
- package/dist/src/framework/models/AuditLog.js +31 -0
- package/dist/src/framework/mountMiddleware.d.ts +91 -0
- package/dist/src/framework/mountMiddleware.js +128 -0
- package/dist/src/framework/mountOptionalEndpoints.d.ts +103 -0
- package/dist/src/framework/mountOptionalEndpoints.js +47 -0
- package/dist/src/framework/mountRoutes.d.ts +21 -0
- package/dist/src/framework/mountRoutes.js +144 -0
- package/dist/src/framework/persistence/cronRegistry.d.ts +28 -0
- package/dist/src/framework/persistence/cronRegistry.js +139 -0
- package/dist/src/framework/persistence/idempotency.d.ts +26 -0
- package/dist/src/framework/persistence/idempotency.js +178 -0
- package/dist/src/framework/persistence/index.d.ts +6 -0
- package/dist/src/framework/persistence/index.js +8 -0
- package/dist/src/framework/persistence/storeInfra.d.ts +9 -0
- package/dist/src/framework/persistence/storeInfra.js +1 -0
- package/dist/src/framework/persistence/uploadRegistry.d.ts +35 -0
- package/dist/src/framework/persistence/uploadRegistry.js +235 -0
- package/dist/src/framework/persistence/wsMessages.d.ts +22 -0
- package/dist/src/framework/persistence/wsMessages.js +296 -0
- package/dist/src/framework/preloadSchemas.d.ts +24 -0
- package/dist/src/framework/preloadSchemas.js +42 -0
- package/dist/src/framework/registerBoundaryAdapters.d.ts +23 -0
- package/dist/src/framework/registerBoundaryAdapters.js +46 -0
- package/dist/src/framework/routes/admin.d.ts +9 -0
- package/dist/src/framework/routes/admin.js +361 -0
- package/dist/src/framework/routes/health.d.ts +1 -0
- package/dist/src/framework/routes/health.js +21 -0
- package/dist/src/framework/routes/home.d.ts +1 -0
- package/dist/src/framework/routes/home.js +18 -0
- package/dist/src/framework/routes/jobs.d.ts +3 -0
- package/dist/{routes → src/framework/routes}/jobs.js +128 -103
- package/dist/src/framework/routes/metrics.d.ts +10 -0
- package/dist/src/framework/routes/metrics.js +57 -0
- package/dist/{routes → src/framework/routes}/uploads.d.ts +3 -3
- package/dist/src/framework/routes/uploads.js +262 -0
- package/dist/src/framework/runPluginLifecycle.d.ts +27 -0
- package/dist/src/framework/runPluginLifecycle.js +121 -0
- package/dist/src/framework/secrets/frameworkSecretSchema.d.ts +58 -0
- package/dist/src/framework/secrets/frameworkSecretSchema.js +20 -0
- package/dist/src/framework/secrets/index.d.ts +9 -0
- package/dist/src/framework/secrets/index.js +7 -0
- package/dist/src/framework/secrets/providers/envProvider.d.ts +15 -0
- package/dist/src/framework/secrets/providers/envProvider.js +18 -0
- package/dist/src/framework/secrets/providers/fileProvider.d.ts +8 -0
- package/dist/src/framework/secrets/providers/fileProvider.js +82 -0
- package/dist/src/framework/secrets/providers/ssmProvider.d.ts +20 -0
- package/dist/src/framework/secrets/providers/ssmProvider.js +127 -0
- package/dist/src/framework/secrets/resolveSecretBundle.d.ts +53 -0
- package/dist/src/framework/secrets/resolveSecretBundle.js +84 -0
- package/dist/src/framework/secrets/resolveSecrets.d.ts +18 -0
- package/dist/src/framework/secrets/resolveSecrets.js +34 -0
- package/dist/src/framework/sse/index.d.ts +21 -0
- package/dist/src/framework/sse/index.js +109 -0
- package/dist/src/framework/ws/index.d.ts +11 -0
- package/dist/src/framework/ws/index.js +8 -0
- package/dist/src/index.d.ts +87 -0
- package/dist/src/index.js +58 -0
- package/dist/src/lib/appConfig.d.ts +7 -0
- package/dist/src/lib/appConfig.js +27 -0
- package/dist/src/lib/appMeta.d.ts +7 -0
- package/dist/src/lib/appMeta.js +3 -0
- package/dist/src/lib/authConfig.d.ts +532 -0
- package/dist/{lib/appConfig.js → src/lib/authConfig.js} +75 -17
- package/dist/{lib → src/lib}/context.d.ts +6 -12
- package/dist/{lib → src/lib}/context.js +5 -5
- package/dist/src/lib/logger.d.ts +1 -0
- package/dist/src/lib/logger.js +1 -0
- package/dist/src/lib/mongo.d.ts +58 -0
- package/dist/src/lib/mongo.js +96 -0
- package/dist/src/lib/queue.d.ts +72 -0
- package/dist/src/lib/queue.js +152 -0
- package/dist/src/lib/redis.d.ts +28 -0
- package/dist/src/lib/redis.js +72 -0
- package/dist/{lib → src/lib}/signing.d.ts +2 -2
- package/dist/src/lib/signing.js +210 -0
- package/dist/src/lib/signingConfig.d.ts +40 -0
- package/dist/src/lib/signingConfig.js +28 -0
- package/dist/src/server.d.ts +146 -0
- package/dist/src/server.js +469 -0
- package/dist/src/shared/lib/HttpError.d.ts +1 -0
- package/dist/src/shared/lib/HttpError.js +2 -0
- package/dist/src/shared/lib/constants.d.ts +10 -0
- package/dist/src/shared/lib/crypto.d.ts +43 -0
- package/dist/src/shared/lib/crypto.js +74 -0
- package/dist/src/shared/lib/signing.d.ts +52 -0
- package/dist/{lib → src/shared/lib}/signing.js +35 -8
- package/dist/src/testing.d.ts +34 -0
- package/dist/src/testing.js +93 -0
- package/package.json +60 -24
- package/dist/adapters/memoryAuth.d.ts +0 -52
- package/dist/adapters/memoryAuth.js +0 -749
- package/dist/adapters/memoryStorage.d.ts +0 -3
- package/dist/adapters/memoryStorage.js +0 -44
- package/dist/adapters/mongoAuth.d.ts +0 -2
- package/dist/adapters/mongoAuth.js +0 -403
- package/dist/adapters/sqliteAuth.d.ts +0 -72
- package/dist/adapters/sqliteAuth.js +0 -858
- package/dist/app.d.ts +0 -559
- package/dist/app.js +0 -651
- package/dist/entrypoints/mongo.d.ts +0 -5
- package/dist/entrypoints/mongo.js +0 -4
- package/dist/entrypoints/queue.d.ts +0 -2
- package/dist/entrypoints/queue.js +0 -1
- package/dist/entrypoints/redis.d.ts +0 -1
- package/dist/entrypoints/redis.js +0 -1
- package/dist/index.d.ts +0 -117
- package/dist/index.js +0 -88
- package/dist/lib/appConfig.d.ts +0 -275
- package/dist/lib/auditLog.d.ts +0 -58
- package/dist/lib/auditLog.js +0 -218
- package/dist/lib/authAdapter.d.ts +0 -246
- package/dist/lib/authAdapter.js +0 -7
- package/dist/lib/authRateLimit.d.ts +0 -13
- package/dist/lib/authRateLimit.js +0 -117
- package/dist/lib/clientIp.d.ts +0 -14
- package/dist/lib/credentialStuffing.d.ts +0 -31
- package/dist/lib/credentialStuffing.js +0 -77
- package/dist/lib/crypto.d.ts +0 -11
- package/dist/lib/crypto.js +0 -22
- package/dist/lib/deletionCancelToken.d.ts +0 -12
- package/dist/lib/deletionCancelToken.js +0 -88
- package/dist/lib/emailVerification.d.ts +0 -19
- package/dist/lib/emailVerification.js +0 -129
- package/dist/lib/fingerprint.js +0 -36
- package/dist/lib/idempotency.js +0 -182
- package/dist/lib/jwks.d.ts +0 -25
- package/dist/lib/jwks.js +0 -51
- package/dist/lib/jwt.d.ts +0 -15
- package/dist/lib/jwt.js +0 -111
- package/dist/lib/metrics.d.ts +0 -14
- package/dist/lib/mfaChallenge.d.ts +0 -55
- package/dist/lib/mfaChallenge.js +0 -398
- package/dist/lib/mongo.d.ts +0 -39
- package/dist/lib/mongo.js +0 -124
- package/dist/lib/oauth.d.ts +0 -40
- package/dist/lib/oauth.js +0 -101
- package/dist/lib/oauthCode.d.ts +0 -15
- package/dist/lib/oauthCode.js +0 -95
- package/dist/lib/pagination.d.ts +0 -119
- package/dist/lib/pagination.js +0 -166
- package/dist/lib/queue.d.ts +0 -37
- package/dist/lib/queue.js +0 -117
- package/dist/lib/redis.d.ts +0 -9
- package/dist/lib/redis.js +0 -61
- package/dist/lib/resetPassword.d.ts +0 -12
- package/dist/lib/resetPassword.js +0 -93
- package/dist/lib/roles.d.ts +0 -7
- package/dist/lib/roles.js +0 -49
- package/dist/lib/saml.d.ts +0 -25
- package/dist/lib/saml.js +0 -64
- package/dist/lib/securityEvents.d.ts +0 -28
- package/dist/lib/securityEvents.js +0 -26
- package/dist/lib/session.d.ts +0 -49
- package/dist/lib/session.js +0 -597
- package/dist/lib/tenant.d.ts +0 -15
- package/dist/lib/tenant.js +0 -65
- package/dist/lib/upload.js +0 -112
- package/dist/lib/uploadRegistry.d.ts +0 -18
- package/dist/lib/uploadRegistry.js +0 -83
- package/dist/lib/ws.d.ts +0 -22
- package/dist/lib/ws.js +0 -96
- package/dist/lib/wsHeartbeat.d.ts +0 -12
- package/dist/lib/wsHeartbeat.js +0 -57
- package/dist/lib/wsMessages.d.ts +0 -40
- package/dist/lib/wsMessages.js +0 -330
- package/dist/lib/wsPresence.d.ts +0 -25
- package/dist/lib/wsPresence.js +0 -99
- package/dist/middleware/auditLog.js +0 -39
- package/dist/middleware/bearerAuth.d.ts +0 -2
- package/dist/middleware/bearerAuth.js +0 -11
- package/dist/middleware/cacheResponse.d.ts +0 -15
- package/dist/middleware/cacheResponse.js +0 -178
- package/dist/middleware/captcha.js +0 -36
- package/dist/middleware/csrf.js +0 -129
- package/dist/middleware/identify.d.ts +0 -3
- package/dist/middleware/identify.js +0 -122
- package/dist/middleware/index.js +0 -1
- package/dist/middleware/metrics.d.ts +0 -9
- package/dist/middleware/metrics.js +0 -26
- package/dist/middleware/rateLimit.js +0 -22
- package/dist/middleware/requestId.d.ts +0 -3
- package/dist/middleware/scimAuth.d.ts +0 -8
- package/dist/middleware/scimAuth.js +0 -29
- package/dist/middleware/tenant.d.ts +0 -5
- package/dist/middleware/upload.d.ts +0 -5
- package/dist/middleware/userAuth.d.ts +0 -3
- package/dist/middleware/userAuth.js +0 -6
- package/dist/models/AuditLog.d.ts +0 -30
- package/dist/models/AuditLog.js +0 -39
- package/dist/models/AuthUser.js +0 -55
- package/dist/models/Group.d.ts +0 -21
- package/dist/models/Group.js +0 -28
- package/dist/models/GroupMembership.js +0 -25
- package/dist/models/TenantRole.d.ts +0 -15
- package/dist/models/TenantRole.js +0 -23
- package/dist/routes/auth.d.ts +0 -12
- package/dist/routes/auth.js +0 -744
- package/dist/routes/groups.js +0 -346
- package/dist/routes/health.d.ts +0 -1
- package/dist/routes/health.js +0 -22
- package/dist/routes/home.d.ts +0 -1
- package/dist/routes/home.js +0 -16
- package/dist/routes/jobs.d.ts +0 -2
- package/dist/routes/m2m.d.ts +0 -2
- package/dist/routes/m2m.js +0 -72
- package/dist/routes/metrics.d.ts +0 -8
- package/dist/routes/metrics.js +0 -55
- package/dist/routes/mfa.d.ts +0 -5
- package/dist/routes/mfa.js +0 -628
- package/dist/routes/oauth.d.ts +0 -2
- package/dist/routes/oauth.js +0 -520
- package/dist/routes/oidc.d.ts +0 -2
- package/dist/routes/oidc.js +0 -29
- package/dist/routes/passkey.d.ts +0 -1
- package/dist/routes/passkey.js +0 -157
- package/dist/routes/saml.d.ts +0 -2
- package/dist/routes/saml.js +0 -86
- package/dist/routes/scim.d.ts +0 -2
- package/dist/routes/scim.js +0 -255
- package/dist/routes/uploads.js +0 -227
- package/dist/schemas/auth.js +0 -30
- package/dist/server.d.ts +0 -57
- package/dist/server.js +0 -112
- package/dist/services/auth.d.ts +0 -29
- package/dist/services/auth.js +0 -238
- package/dist/ws/index.d.ts +0 -10
- package/dist/ws/index.js +0 -39
- package/docs/sections/adding-middleware/full.md +0 -35
- package/docs/sections/adding-models/full.md +0 -125
- package/docs/sections/adding-models/overview.md +0 -13
- package/docs/sections/adding-routes/full.md +0 -182
- package/docs/sections/adding-routes/overview.md +0 -23
- package/docs/sections/auth-flow/full.md +0 -790
- package/docs/sections/auth-flow/overview.md +0 -10
- package/docs/sections/auth-security-examples/full.md +0 -388
- package/docs/sections/authentication/full.md +0 -130
- package/docs/sections/authentication/overview.md +0 -5
- package/docs/sections/cli/full.md +0 -42
- package/docs/sections/configuration/full.md +0 -172
- package/docs/sections/configuration/overview.md +0 -18
- package/docs/sections/configuration-example/full.md +0 -117
- package/docs/sections/configuration-example/overview.md +0 -30
- package/docs/sections/documentation/full.md +0 -171
- package/docs/sections/environment-variables/full.md +0 -55
- package/docs/sections/exports/full.md +0 -123
- package/docs/sections/extending-context/full.md +0 -59
- package/docs/sections/header.md +0 -3
- package/docs/sections/installation/full.md +0 -6
- package/docs/sections/jobs/full.md +0 -140
- package/docs/sections/jobs/overview.md +0 -15
- package/docs/sections/logging/full.md +0 -83
- package/docs/sections/metrics/full.md +0 -131
- package/docs/sections/mongodb-connections/full.md +0 -45
- package/docs/sections/mongodb-connections/overview.md +0 -7
- package/docs/sections/multi-tenancy/full.md +0 -66
- package/docs/sections/multi-tenancy/overview.md +0 -15
- package/docs/sections/oauth/full.md +0 -189
- package/docs/sections/oauth/overview.md +0 -16
- package/docs/sections/package-development/full.md +0 -7
- package/docs/sections/pagination/full.md +0 -93
- package/docs/sections/passkey-login/full.md +0 -90
- package/docs/sections/passkey-login/overview.md +0 -1
- package/docs/sections/peer-dependencies/full.md +0 -47
- package/docs/sections/quick-start/full.md +0 -43
- package/docs/sections/response-caching/full.md +0 -117
- package/docs/sections/response-caching/overview.md +0 -13
- package/docs/sections/roles/full.md +0 -225
- package/docs/sections/roles/overview.md +0 -14
- package/docs/sections/running-without-redis/full.md +0 -16
- package/docs/sections/running-without-redis-or-mongodb/full.md +0 -60
- package/docs/sections/signing/full.md +0 -203
- package/docs/sections/stack/full.md +0 -10
- package/docs/sections/uploads/full.md +0 -208
- package/docs/sections/versioning/full.md +0 -85
- package/docs/sections/webhook-auth/full.md +0 -100
- package/docs/sections/websocket/full.md +0 -196
- package/docs/sections/websocket/overview.md +0 -5
- package/docs/sections/websocket-rooms/full.md +0 -102
- package/docs/sections/websocket-rooms/overview.md +0 -5
- /package/dist/{lib/storageAdapter.js → packages/bunshot-admin/src/types/env.js} +0 -0
- /package/dist/{lib → packages/bunshot-auth/src/lib}/fingerprint.d.ts +0 -0
- /package/dist/{lib → packages/bunshot-auth/src/lib}/logger.d.ts +0 -0
- /package/dist/{lib → packages/bunshot-core/src}/constants.d.ts +0 -0
- /package/dist/{lib → packages/bunshot-core/src}/storageAdapter.d.ts +0 -0
- /package/dist/{lib → src/framework/lib}/createDtoMapper.d.ts +0 -0
- /package/dist/{lib → src/framework/lib}/stripUnreferencedSchemas.d.ts +0 -0
- /package/dist/{middleware → src/framework/middleware}/cors.d.ts +0 -0
- /package/dist/{middleware → src/framework/middleware}/cors.js +0 -0
- /package/dist/{middleware → src/framework/middleware}/index.d.ts +0 -0
- /package/dist/{middleware → src/framework/middleware}/logger.js +0 -0
- /package/dist/{lib → src/shared/lib}/constants.js +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import type { AuditLogProvider } from '../auditLog';
|
|
2
|
+
import type { CacheAdapter, CacheStoreName, EmailTemplate, FingerprintBuilder, RateLimitAdapter, RouteAuthRegistry, UserResolver } from '../coreContracts';
|
|
3
|
+
import type { ICronRegistryRepository } from '../cronRegistry';
|
|
4
|
+
import type { DataEncryptionKey } from '../crypto';
|
|
5
|
+
import type { BunshotEventBus } from '../eventBus';
|
|
6
|
+
import type { IdempotencyAdapter } from '../idempotency';
|
|
7
|
+
import type { BunshotPlugin } from '../plugin';
|
|
8
|
+
import type { ISecretRepository } from '../secrets';
|
|
9
|
+
import type { SigningConfig } from '../signing';
|
|
10
|
+
import type { UploadRegistryRepository } from '../uploadRegistry';
|
|
11
|
+
import type { RoomPersistenceConfig, WsMessageDefaults, WsMessageRepository } from '../wsMessages';
|
|
12
|
+
import type { ResolvedStores } from './frameworkConfig';
|
|
13
|
+
/**
|
|
14
|
+
* Resolved persistence repositories for the application instance.
|
|
15
|
+
* Created by `resolveFrameworkPersistence()` in createInfrastructure,
|
|
16
|
+
* wired into the BunshotContext by createApp().
|
|
17
|
+
*/
|
|
18
|
+
export interface ResolvedPersistence {
|
|
19
|
+
readonly uploadRegistry: UploadRegistryRepository;
|
|
20
|
+
readonly idempotency: IdempotencyAdapter;
|
|
21
|
+
readonly wsMessages: WsMessageRepository;
|
|
22
|
+
readonly auditLog: AuditLogProvider;
|
|
23
|
+
/** Persists BullMQ scheduler names across deployments for stale-scheduler cleanup. */
|
|
24
|
+
readonly cronRegistry: ICronRegistryRepository;
|
|
25
|
+
/** Configure a room for message persistence. */
|
|
26
|
+
configureRoom(endpoint: string, room: string, options: RoomPersistenceConfig): void;
|
|
27
|
+
/** Get resolved room config for an (endpoint, room) pair. Returns null if not configured. */
|
|
28
|
+
getRoomConfig(endpoint: string, room: string): {
|
|
29
|
+
maxCount: number;
|
|
30
|
+
ttlSeconds: number;
|
|
31
|
+
} | null;
|
|
32
|
+
/** Set default maxCount/ttlSeconds for rooms that don't specify their own. */
|
|
33
|
+
setDefaults(defaults: WsMessageDefaults): void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Transport adapter interface for cross-instance WS message delivery.
|
|
37
|
+
* Mirrors WsTransportAdapter from the framework — defined here so the
|
|
38
|
+
* context type doesn't depend on framework internals.
|
|
39
|
+
*/
|
|
40
|
+
export interface WsTransportHandle {
|
|
41
|
+
publish(endpoint: string, room: string, message: string, origin: string): Promise<void>;
|
|
42
|
+
connect(onMessage: (endpoint: string, room: string, message: string, origin: string) => void): Promise<void>;
|
|
43
|
+
disconnect(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Instance-scoped WebSocket runtime state.
|
|
47
|
+
*
|
|
48
|
+
* Populated by `createServer()` when `ws` config is present.
|
|
49
|
+
* Null when the server has no WebSocket endpoints.
|
|
50
|
+
*/
|
|
51
|
+
export interface WsState {
|
|
52
|
+
/** The Bun Server instance that owns the WebSocket upgrade. */
|
|
53
|
+
server: unknown | null;
|
|
54
|
+
/** Cross-instance pub/sub transport, or null for single-instance. */
|
|
55
|
+
transport: WsTransportHandle | null;
|
|
56
|
+
/** Unique instance ID for transport self-echo filtering. */
|
|
57
|
+
readonly instanceId: string;
|
|
58
|
+
/** Whether presence tracking is enabled on any endpoint. */
|
|
59
|
+
readonly presenceEnabled: boolean;
|
|
60
|
+
/** Room registry: wsEndpointKey → Set<socketId>. Shared reference to the live map. */
|
|
61
|
+
readonly roomRegistry: Map<string, Set<string>>;
|
|
62
|
+
/** Heartbeat socket registry: socketId → socket handle + timeout state. */
|
|
63
|
+
readonly heartbeatSockets: Map<string, {
|
|
64
|
+
ws: unknown;
|
|
65
|
+
endpoint: string;
|
|
66
|
+
timeoutAt: number;
|
|
67
|
+
}>;
|
|
68
|
+
/** Per-endpoint heartbeat configuration. */
|
|
69
|
+
readonly heartbeatEndpointConfigs: Map<string, {
|
|
70
|
+
intervalMs?: number;
|
|
71
|
+
timeoutMs?: number;
|
|
72
|
+
}>;
|
|
73
|
+
/** Active heartbeat timer handle, or null when disabled. */
|
|
74
|
+
heartbeatTimer: unknown | null;
|
|
75
|
+
/** Authenticated socket tracking for presence. */
|
|
76
|
+
readonly socketUsers: Map<string, string>;
|
|
77
|
+
/** Presence registry: wsEndpointKey(endpoint, room) → userId → Set<socketId>. */
|
|
78
|
+
readonly roomPresence: Map<string, Map<string, Set<string>>>;
|
|
79
|
+
}
|
|
80
|
+
export interface UploadRuntimeState {
|
|
81
|
+
readonly adapter: unknown | null;
|
|
82
|
+
readonly config: Readonly<Record<string, unknown>>;
|
|
83
|
+
}
|
|
84
|
+
export interface MetricsState {
|
|
85
|
+
readonly counters: Map<string, Map<string, {
|
|
86
|
+
labels: Record<string, string>;
|
|
87
|
+
value: number;
|
|
88
|
+
}>>;
|
|
89
|
+
readonly histograms: Map<string, {
|
|
90
|
+
boundaries: number[];
|
|
91
|
+
entries: Map<string, {
|
|
92
|
+
labels: Record<string, string>;
|
|
93
|
+
buckets: number[];
|
|
94
|
+
sum: number;
|
|
95
|
+
count: number;
|
|
96
|
+
}>;
|
|
97
|
+
}>;
|
|
98
|
+
readonly gaugeCallbacks: Map<string, () => Promise<{
|
|
99
|
+
labels: Record<string, string>;
|
|
100
|
+
value: number;
|
|
101
|
+
}[]>>;
|
|
102
|
+
queues: Map<string, any> | null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The instance-scoped runtime state container for a Bunshot application.
|
|
106
|
+
*
|
|
107
|
+
* Created by `createApp()`, attached to the Hono app instance via WeakMap,
|
|
108
|
+
* and accessible from route handlers via `getContext(app)`.
|
|
109
|
+
*
|
|
110
|
+
* Replaces module-level singletons with instance-scoped state. Each
|
|
111
|
+
* `createApp()` invocation produces its own context — no shared globals,
|
|
112
|
+
* no cross-instance leakage.
|
|
113
|
+
*/
|
|
114
|
+
export interface BunshotContext {
|
|
115
|
+
/** The Hono app instance this context is attached to. */
|
|
116
|
+
readonly app: object;
|
|
117
|
+
/** Resolved and frozen application configuration. */
|
|
118
|
+
readonly config: BunshotResolvedConfig;
|
|
119
|
+
/** Redis client handle, or null when Redis is disabled. */
|
|
120
|
+
readonly redis: unknown | null;
|
|
121
|
+
/** Mongoose connection handles, or null when Mongo is disabled. */
|
|
122
|
+
readonly mongo: {
|
|
123
|
+
readonly auth: unknown | null;
|
|
124
|
+
readonly app: unknown | null;
|
|
125
|
+
} | null;
|
|
126
|
+
/** SQLite database path, or null when SQLite is not configured. */
|
|
127
|
+
readonly sqlite: string | null;
|
|
128
|
+
/** Resolved signing configuration, or null when not configured. */
|
|
129
|
+
readonly signing: Readonly<SigningConfig> | null;
|
|
130
|
+
/** Data encryption keys for field-level encryption. Empty array when not configured. */
|
|
131
|
+
readonly dataEncryptionKeys: readonly DataEncryptionKey[];
|
|
132
|
+
/**
|
|
133
|
+
* WebSocket runtime state, or null when the server has no WS endpoints.
|
|
134
|
+
*
|
|
135
|
+
* Set to null by `createApp()` — populated by `createServer()` after
|
|
136
|
+
* the Bun server and transport are initialized. Mutable so createServer
|
|
137
|
+
* can attach WS state after the context is created.
|
|
138
|
+
*/
|
|
139
|
+
ws: WsState | null;
|
|
140
|
+
/**
|
|
141
|
+
* Resolved persistence repositories — upload registry, idempotency,
|
|
142
|
+
* WS message persistence, and audit log. Instance-scoped, no module-level state.
|
|
143
|
+
*/
|
|
144
|
+
readonly persistence: ResolvedPersistence;
|
|
145
|
+
/**
|
|
146
|
+
* Plugin-scoped state map. Plugins store their resolved config or runtime
|
|
147
|
+
* state here during setupPost(). Keyed by plugin name (e.g. 'bunshot-auth').
|
|
148
|
+
*
|
|
149
|
+
* First step toward context-aware plugins — plugins register their resolved
|
|
150
|
+
* config here so it's instance-scoped rather than global.
|
|
151
|
+
*/
|
|
152
|
+
readonly pluginState: Map<string, unknown>;
|
|
153
|
+
/**
|
|
154
|
+
* Registered plugins for this application instance.
|
|
155
|
+
* Replaces the appMeta WeakMap — instance-scoped, no module-level state.
|
|
156
|
+
*/
|
|
157
|
+
readonly plugins: readonly BunshotPlugin[];
|
|
158
|
+
/**
|
|
159
|
+
* Event bus for cross-plugin communication.
|
|
160
|
+
* Replaces the appMeta WeakMap — instance-scoped, no module-level state.
|
|
161
|
+
*/
|
|
162
|
+
readonly bus: BunshotEventBus;
|
|
163
|
+
/** Route auth registry for framework-owned routes. */
|
|
164
|
+
readonly routeAuth: RouteAuthRegistry | null;
|
|
165
|
+
/** User resolver used by framework WS/SSE and related helpers. */
|
|
166
|
+
readonly userResolver: UserResolver | null;
|
|
167
|
+
/** Rate limit adapter used by framework middleware. */
|
|
168
|
+
readonly rateLimitAdapter: RateLimitAdapter | null;
|
|
169
|
+
/** Fingerprint builder used by bot/rate limiting. */
|
|
170
|
+
readonly fingerprintBuilder: FingerprintBuilder | null;
|
|
171
|
+
/** Cache adapters registered for this app instance. */
|
|
172
|
+
readonly cacheAdapters: ReadonlyMap<CacheStoreName, CacheAdapter>;
|
|
173
|
+
/** Email templates registered by plugins for this app instance. */
|
|
174
|
+
readonly emailTemplates: ReadonlyMap<string, EmailTemplate>;
|
|
175
|
+
/** Trusted proxy configuration for IP extraction. */
|
|
176
|
+
readonly trustProxy: false | number;
|
|
177
|
+
/** Upload runtime state for the application instance. */
|
|
178
|
+
readonly upload: UploadRuntimeState | null;
|
|
179
|
+
/** Metrics runtime state for the application instance. */
|
|
180
|
+
readonly metrics: MetricsState;
|
|
181
|
+
/**
|
|
182
|
+
* Secret repository for resolving credentials at runtime.
|
|
183
|
+
* Resolved at startup before DB connections. Plugins and user code
|
|
184
|
+
* can call `ctx.secrets.get(key)` to resolve their own secrets.
|
|
185
|
+
*/
|
|
186
|
+
readonly secrets: ISecretRepository;
|
|
187
|
+
/**
|
|
188
|
+
* Resolved startup secret snapshot.
|
|
189
|
+
* Contains framework secrets plus any app-specific schema entries resolved
|
|
190
|
+
* during bootstrap. Instance-owned and frozen.
|
|
191
|
+
*/
|
|
192
|
+
readonly resolvedSecrets: Readonly<Record<string, string>>;
|
|
193
|
+
/**
|
|
194
|
+
* Clear all instance-owned in-memory state (stores, caches, registries).
|
|
195
|
+
* Used for test isolation — replaces the old global reset primitive.
|
|
196
|
+
*/
|
|
197
|
+
clear(): Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* Destroy the context — close database connections, stop timers, release resources.
|
|
200
|
+
* Called during graceful shutdown.
|
|
201
|
+
*/
|
|
202
|
+
destroy(): Promise<void>;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The resolved configuration shape stored on the context.
|
|
206
|
+
* Uses `Record<string, unknown>` for now — will be refined as config
|
|
207
|
+
* types are consolidated during the full singleton migration.
|
|
208
|
+
*/
|
|
209
|
+
export interface BunshotResolvedConfig {
|
|
210
|
+
/** Application name. */
|
|
211
|
+
readonly appName: string;
|
|
212
|
+
/** Resolved store selections for sessions, OAuth state, cache, and auth. */
|
|
213
|
+
readonly resolvedStores: Readonly<ResolvedStores>;
|
|
214
|
+
/** CORS origins. */
|
|
215
|
+
readonly security: {
|
|
216
|
+
readonly cors: string | string[];
|
|
217
|
+
};
|
|
218
|
+
/** Signing configuration, or null when not configured. */
|
|
219
|
+
readonly signing: unknown;
|
|
220
|
+
/** Data encryption keys. */
|
|
221
|
+
readonly dataEncryptionKeys: readonly DataEncryptionKey[];
|
|
222
|
+
/** Redis handle when available. */
|
|
223
|
+
readonly redis: unknown | undefined;
|
|
224
|
+
/** Mongo connection handles when available. */
|
|
225
|
+
readonly mongo: {
|
|
226
|
+
readonly auth: unknown;
|
|
227
|
+
readonly app: unknown;
|
|
228
|
+
} | undefined;
|
|
229
|
+
/** Captcha configuration, or null. */
|
|
230
|
+
readonly captcha: unknown;
|
|
231
|
+
}
|
|
232
|
+
export type { BunshotFrameworkConfig } from './frameworkConfig';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getContext } from './contextStore';
|
|
2
|
+
export function resolveContext(input) {
|
|
3
|
+
if (typeof input === 'object' &&
|
|
4
|
+
input !== null &&
|
|
5
|
+
('config' in input ||
|
|
6
|
+
'persistence' in input ||
|
|
7
|
+
'routeAuth' in input ||
|
|
8
|
+
'userResolver' in input ||
|
|
9
|
+
'rateLimitAdapter' in input ||
|
|
10
|
+
'fingerprintBuilder' in input ||
|
|
11
|
+
'cacheAdapters' in input ||
|
|
12
|
+
'emailTemplates' in input)) {
|
|
13
|
+
return input;
|
|
14
|
+
}
|
|
15
|
+
return getContext(input);
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BunshotContext } from './bunshotContext';
|
|
2
|
+
/**
|
|
3
|
+
* Attach a BunshotContext to an app instance.
|
|
4
|
+
* Called once by `createApp()` after the context is fully assembled.
|
|
5
|
+
*/
|
|
6
|
+
export declare function attachContext(app: object, ctx: BunshotContext): void;
|
|
7
|
+
/**
|
|
8
|
+
* Retrieve the BunshotContext for an app instance.
|
|
9
|
+
* Throws if no context is found — indicates `createApp()` was not called.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getContext(app: object): BunshotContext;
|
|
12
|
+
/**
|
|
13
|
+
* Retrieve the BunshotContext for an app instance, or null if not attached.
|
|
14
|
+
* Use when context availability is optional (e.g., standalone plugin setup).
|
|
15
|
+
*/
|
|
16
|
+
export declare function getContextOrNull(app: object): BunshotContext | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const APP_CONTEXT_SYMBOL = Symbol.for('bunshot.context');
|
|
2
|
+
/**
|
|
3
|
+
* Attach a BunshotContext to an app instance.
|
|
4
|
+
* Called once by `createApp()` after the context is fully assembled.
|
|
5
|
+
*/
|
|
6
|
+
export function attachContext(app, ctx) {
|
|
7
|
+
Object.defineProperty(app, APP_CONTEXT_SYMBOL, {
|
|
8
|
+
configurable: true,
|
|
9
|
+
enumerable: false,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: ctx,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Retrieve the BunshotContext for an app instance.
|
|
16
|
+
* Throws if no context is found — indicates `createApp()` was not called.
|
|
17
|
+
*/
|
|
18
|
+
export function getContext(app) {
|
|
19
|
+
const ctx = app[APP_CONTEXT_SYMBOL];
|
|
20
|
+
if (!ctx)
|
|
21
|
+
throw new Error('BunshotContext not found — was createApp() called?');
|
|
22
|
+
return ctx;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Retrieve the BunshotContext for an app instance, or null if not attached.
|
|
26
|
+
* Use when context availability is optional (e.g., standalone plugin setup).
|
|
27
|
+
*/
|
|
28
|
+
export function getContextOrNull(app) {
|
|
29
|
+
return (app[APP_CONTEXT_SYMBOL] ??
|
|
30
|
+
null);
|
|
31
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CoreRegistrar } from '../coreContracts';
|
|
2
|
+
import type { DataEncryptionKey } from '../crypto';
|
|
3
|
+
import type { SigningConfig } from '../signing';
|
|
4
|
+
import type { StoreType } from '../storeType';
|
|
5
|
+
/**
|
|
6
|
+
* Resolved store selections — which backend each subsystem uses.
|
|
7
|
+
* Defined here (not in framework internals) so plugins can reference
|
|
8
|
+
* it without importing from the framework's private modules.
|
|
9
|
+
*/
|
|
10
|
+
export interface ResolvedStores {
|
|
11
|
+
sessions: StoreType;
|
|
12
|
+
oauthState: StoreType;
|
|
13
|
+
cache: StoreType;
|
|
14
|
+
authStore: StoreType;
|
|
15
|
+
sqlite: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolved framework configuration passed to plugin lifecycle hooks.
|
|
19
|
+
*
|
|
20
|
+
* Extracted from bunshotContext to break the bunshotContext ↔ plugin
|
|
21
|
+
* type cycle — this file has no dependency on either.
|
|
22
|
+
*/
|
|
23
|
+
export interface BunshotFrameworkConfig {
|
|
24
|
+
resolvedStores: ResolvedStores;
|
|
25
|
+
security: {
|
|
26
|
+
cors: string | string[];
|
|
27
|
+
};
|
|
28
|
+
signing: SigningConfig | null;
|
|
29
|
+
dataEncryptionKeys: DataEncryptionKey[];
|
|
30
|
+
redis: unknown | undefined;
|
|
31
|
+
mongo: {
|
|
32
|
+
auth: unknown | null;
|
|
33
|
+
app: unknown | null;
|
|
34
|
+
} | undefined;
|
|
35
|
+
captcha: unknown | null;
|
|
36
|
+
trustProxy: false | number;
|
|
37
|
+
registrar: CoreRegistrar;
|
|
38
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { BunshotContext, BunshotResolvedConfig, WsState, WsTransportHandle, UploadRuntimeState, ResolvedPersistence, } from './bunshotContext';
|
|
2
|
+
export type { BunshotFrameworkConfig, ResolvedStores } from './frameworkConfig';
|
|
3
|
+
export { attachContext, getContext, getContextOrNull } from './contextStore';
|
|
4
|
+
export { resolveContext } from './contextAccess';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type Hook, OpenAPIHono } from '@hono/zod-openapi';
|
|
2
|
+
import type { Context } from 'hono';
|
|
3
|
+
import type { ZodIssue } from 'zod';
|
|
4
|
+
import type { AuthVariables } from './authVariables';
|
|
5
|
+
import type { BunshotContext } from './context/bunshotContext';
|
|
6
|
+
import type { UploadResult } from './storageAdapter';
|
|
7
|
+
export interface ValidationErrorDetail {
|
|
8
|
+
path: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}
|
|
11
|
+
export interface DefaultValidationErrorBody {
|
|
12
|
+
error: string;
|
|
13
|
+
details: ValidationErrorDetail[];
|
|
14
|
+
requestId: string;
|
|
15
|
+
}
|
|
16
|
+
export type ValidationErrorFormatter = (issues: ZodIssue[], requestId: string) => unknown;
|
|
17
|
+
export declare const defaultValidationErrorFormatter: ValidationErrorFormatter;
|
|
18
|
+
export type AppVariables = {
|
|
19
|
+
requestId: string;
|
|
20
|
+
tenantId: string | null;
|
|
21
|
+
tenantConfig: Record<string, unknown> | null;
|
|
22
|
+
validationErrorFormatter: ValidationErrorFormatter;
|
|
23
|
+
uploadResults: UploadResult[] | null;
|
|
24
|
+
uploadBucket: string | undefined;
|
|
25
|
+
/** Instance-scoped BunshotContext, set by contextMiddleware on every request. */
|
|
26
|
+
bunshotCtx: BunshotContext;
|
|
27
|
+
};
|
|
28
|
+
export type AppEnv = {
|
|
29
|
+
Variables: AppVariables & AuthVariables;
|
|
30
|
+
};
|
|
31
|
+
export declare const defaultHook: Hook<any, AppEnv, any, any>;
|
|
32
|
+
export declare const createRouter: () => OpenAPIHono<AppEnv, {}, "/">;
|
|
33
|
+
/**
|
|
34
|
+
* Retrieve the BunshotContext from a Hono request context.
|
|
35
|
+
*
|
|
36
|
+
* Requires the context middleware to have run (mounted by `createApp()`).
|
|
37
|
+
* Throws if the context variable is not set — indicates the request is
|
|
38
|
+
* not flowing through a Bunshot-managed app.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getBunshotCtx(c: Context<AppEnv>): BunshotContext;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { OpenAPIHono } from '@hono/zod-openapi';
|
|
2
|
+
export const defaultValidationErrorFormatter = (issues, requestId) => {
|
|
3
|
+
const error = issues.map(i => i.message).join(', ');
|
|
4
|
+
const details = issues.map(i => ({
|
|
5
|
+
path: i.path.join('.'),
|
|
6
|
+
message: i.message,
|
|
7
|
+
}));
|
|
8
|
+
return { error, details, requestId };
|
|
9
|
+
};
|
|
10
|
+
export const defaultHook = (result, c) => {
|
|
11
|
+
if (!result.success) {
|
|
12
|
+
const requestId = c.get('requestId') ?? 'unknown';
|
|
13
|
+
const formatter = c.get('validationErrorFormatter') ?? defaultValidationErrorFormatter;
|
|
14
|
+
try {
|
|
15
|
+
return c.json(formatter(result.error.issues, requestId), 400);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return c.json(defaultValidationErrorFormatter(result.error.issues, requestId), 400);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export const createRouter = () => new OpenAPIHono({ defaultHook });
|
|
23
|
+
/**
|
|
24
|
+
* Retrieve the BunshotContext from a Hono request context.
|
|
25
|
+
*
|
|
26
|
+
* Requires the context middleware to have run (mounted by `createApp()`).
|
|
27
|
+
* Throws if the context variable is not set — indicates the request is
|
|
28
|
+
* not flowing through a Bunshot-managed app.
|
|
29
|
+
*/
|
|
30
|
+
export function getBunshotCtx(c) {
|
|
31
|
+
const ctx = c.get('bunshotCtx');
|
|
32
|
+
if (!ctx)
|
|
33
|
+
throw new Error('BunshotContext not available — is this a Bunshot-managed app?');
|
|
34
|
+
return ctx;
|
|
35
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
export interface RouteAuthRegistry {
|
|
3
|
+
userAuth: MiddlewareHandler<any>;
|
|
4
|
+
requireRole(...roles: string[]): MiddlewareHandler<any>;
|
|
5
|
+
}
|
|
6
|
+
export interface UserResolver {
|
|
7
|
+
resolveUserId(req: Request): Promise<string | null>;
|
|
8
|
+
}
|
|
9
|
+
export interface RateLimitAdapter {
|
|
10
|
+
trackAttempt(key: string, opts: {
|
|
11
|
+
windowMs: number;
|
|
12
|
+
max: number;
|
|
13
|
+
}): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
export interface FingerprintBuilder {
|
|
16
|
+
buildFingerprint(req: Request): Promise<string>;
|
|
17
|
+
}
|
|
18
|
+
export interface CacheAdapter {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
get(key: string): Promise<string | null>;
|
|
21
|
+
set(key: string, value: string, ttl?: number): Promise<void>;
|
|
22
|
+
del(key: string): Promise<void>;
|
|
23
|
+
delPattern(pattern: string): Promise<void>;
|
|
24
|
+
isReady(): boolean;
|
|
25
|
+
}
|
|
26
|
+
export type CacheStoreName = 'redis' | 'mongo' | 'sqlite' | 'memory' | 'postgres';
|
|
27
|
+
export interface EmailTemplate {
|
|
28
|
+
subject: string;
|
|
29
|
+
html: string;
|
|
30
|
+
text?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface CoreRegistrarSnapshot {
|
|
33
|
+
readonly routeAuth: RouteAuthRegistry | null;
|
|
34
|
+
readonly userResolver: UserResolver | null;
|
|
35
|
+
readonly rateLimitAdapter: RateLimitAdapter | null;
|
|
36
|
+
readonly fingerprintBuilder: FingerprintBuilder | null;
|
|
37
|
+
readonly cacheAdapters: ReadonlyMap<CacheStoreName, CacheAdapter>;
|
|
38
|
+
readonly emailTemplates: ReadonlyMap<string, EmailTemplate>;
|
|
39
|
+
}
|
|
40
|
+
export interface CoreRegistrar {
|
|
41
|
+
setRouteAuth(registry: RouteAuthRegistry): void;
|
|
42
|
+
setUserResolver(resolver: UserResolver): void;
|
|
43
|
+
setRateLimitAdapter(adapter: RateLimitAdapter): void;
|
|
44
|
+
setFingerprintBuilder(builder: FingerprintBuilder): void;
|
|
45
|
+
addCacheAdapter(store: CacheStoreName, adapter: CacheAdapter): void;
|
|
46
|
+
addEmailTemplates(templates: Record<string, EmailTemplate>): void;
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export function createCoreRegistrar() {
|
|
2
|
+
let routeAuth = null;
|
|
3
|
+
let userResolver = null;
|
|
4
|
+
let rateLimitAdapter = null;
|
|
5
|
+
let fingerprintBuilder = null;
|
|
6
|
+
const cacheAdapters = new Map();
|
|
7
|
+
const emailTemplates = new Map();
|
|
8
|
+
return {
|
|
9
|
+
registrar: {
|
|
10
|
+
setRouteAuth(registry) {
|
|
11
|
+
routeAuth = registry;
|
|
12
|
+
},
|
|
13
|
+
setUserResolver(resolver) {
|
|
14
|
+
userResolver = resolver;
|
|
15
|
+
},
|
|
16
|
+
setRateLimitAdapter(adapter) {
|
|
17
|
+
rateLimitAdapter = adapter;
|
|
18
|
+
},
|
|
19
|
+
setFingerprintBuilder(builder) {
|
|
20
|
+
fingerprintBuilder = builder;
|
|
21
|
+
},
|
|
22
|
+
addCacheAdapter(store, adapter) {
|
|
23
|
+
cacheAdapters.set(store, adapter);
|
|
24
|
+
},
|
|
25
|
+
addEmailTemplates(templates) {
|
|
26
|
+
for (const [key, template] of Object.entries(templates)) {
|
|
27
|
+
emailTemplates.set(key, template);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
drain() {
|
|
32
|
+
return {
|
|
33
|
+
routeAuth,
|
|
34
|
+
userResolver,
|
|
35
|
+
rateLimitAdapter,
|
|
36
|
+
fingerprintBuilder,
|
|
37
|
+
cacheAdapters: new Map(cacheAdapters),
|
|
38
|
+
emailTemplates: new Map(emailTemplates),
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
@@ -1,27 +1,5 @@
|
|
|
1
|
-
import type { RouteConfig } from
|
|
2
|
-
import type { ZodType } from
|
|
3
|
-
/**
|
|
4
|
-
* Sets the active version prefix for schema name generation and creates a unique
|
|
5
|
-
* Symbol token for interleaving detection. Call before importing a version's route files.
|
|
6
|
-
*/
|
|
7
|
-
export declare function setVersionPrefix(version: string): void;
|
|
8
|
-
/**
|
|
9
|
-
* Clears the active version prefix and token. Call after each version's route files
|
|
10
|
-
* have been fully imported.
|
|
11
|
-
*/
|
|
12
|
-
export declare function clearVersionPrefix(): void;
|
|
13
|
-
/** Returns the current version token for assertion after import. */
|
|
14
|
-
export declare function getVersionToken(): symbol | null;
|
|
15
|
-
/**
|
|
16
|
-
* Drains and returns all tokens captured by createRoute() calls since the last drain.
|
|
17
|
-
* Used by versioned route discovery to detect interleaving.
|
|
18
|
-
*/
|
|
19
|
-
export declare function drainCapturedTokens(): (symbol | null)[];
|
|
20
|
-
/**
|
|
21
|
-
* Asserts that all tokens in the array match the expected token.
|
|
22
|
-
* Throws a clear startup error if any mismatch is detected.
|
|
23
|
-
*/
|
|
24
|
-
export declare function assertCapturedTokens(tokens: (symbol | null)[], expectedToken: symbol | null): void;
|
|
1
|
+
import type { RouteConfig } from '@hono/zod-openapi';
|
|
2
|
+
import type { ZodType } from 'zod';
|
|
25
3
|
/**
|
|
26
4
|
* Registers a Zod schema as a named entry in `components/schemas`.
|
|
27
5
|
*
|
|
@@ -75,13 +53,9 @@ export declare const withSecurity: <T extends RouteConfig>(route: T, ...schemes:
|
|
|
75
53
|
* OpenAPI components so they appear in `components/schemas` instead of being
|
|
76
54
|
* inlined at every use site. Generated names follow the convention:
|
|
77
55
|
*
|
|
78
|
-
* {
|
|
79
|
-
* {
|
|
56
|
+
* {Method}{PathSegments}Request
|
|
57
|
+
* {Method}{PathSegments}{Status}
|
|
80
58
|
*
|
|
81
59
|
* Schemas already named via `.openapi("Name")` are never overwritten.
|
|
82
|
-
*
|
|
83
|
-
* When `setVersionPrefix` has been called, the version prefix is prepended to all
|
|
84
|
-
* generated schema names and the current version token is captured for interleaving
|
|
85
|
-
* detection via `drainCapturedTokens()` / `assertCapturedTokens()`.
|
|
86
60
|
*/
|
|
87
61
|
export declare const createRoute: <T extends RouteConfig>(config: T) => T;
|