@tinyrack/tinyauth-server 0.0.7
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/LICENSE +661 -0
- package/dist/emails/components/email-layout.d.ts +8 -0
- package/dist/emails/components/email-layout.d.ts.map +1 -0
- package/dist/emails/components/email-layout.js +6 -0
- package/dist/emails/components/email-layout.js.map +1 -0
- package/dist/emails/i18n/en.json +26 -0
- package/dist/emails/i18n/index.d.ts +3 -0
- package/dist/emails/i18n/index.d.ts.map +1 -0
- package/dist/emails/i18n/index.js +12 -0
- package/dist/emails/i18n/index.js.map +1 -0
- package/dist/emails/i18n/ja.json +26 -0
- package/dist/emails/i18n/ko.json +26 -0
- package/dist/emails/render.d.ts +12 -0
- package/dist/emails/render.d.ts.map +1 -0
- package/dist/emails/render.js +22 -0
- package/dist/emails/render.js.map +1 -0
- package/dist/emails/templates/password-reset.d.ts +10 -0
- package/dist/emails/templates/password-reset.d.ts.map +1 -0
- package/dist/emails/templates/password-reset.js +10 -0
- package/dist/emails/templates/password-reset.js.map +1 -0
- package/dist/emails/templates/verification.d.ts +10 -0
- package/dist/emails/templates/verification.d.ts.map +1 -0
- package/dist/emails/templates/verification.js +10 -0
- package/dist/emails/templates/verification.js.map +1 -0
- package/dist/entities/base.entity.d.ts +23 -0
- package/dist/entities/base.entity.d.ts.map +1 -0
- package/dist/entities/base.entity.js +17 -0
- package/dist/entities/base.entity.js.map +1 -0
- package/dist/entities/email-verification.entity.d.ts +90 -0
- package/dist/entities/email-verification.entity.d.ts.map +1 -0
- package/dist/entities/email-verification.entity.js +42 -0
- package/dist/entities/email-verification.entity.js.map +1 -0
- package/dist/entities/jwt-key.entity.d.ts +256 -0
- package/dist/entities/jwt-key.entity.d.ts.map +1 -0
- package/dist/entities/jwt-key.entity.js +125 -0
- package/dist/entities/jwt-key.entity.js.map +1 -0
- package/dist/entities/oauth-client.entity.d.ts +1541 -0
- package/dist/entities/oauth-client.entity.d.ts.map +1 -0
- package/dist/entities/oauth-client.entity.js +68 -0
- package/dist/entities/oauth-client.entity.js.map +1 -0
- package/dist/entities/oauth-code.entity.d.ts +1562 -0
- package/dist/entities/oauth-code.entity.d.ts.map +1 -0
- package/dist/entities/oauth-code.entity.js +79 -0
- package/dist/entities/oauth-code.entity.js.map +1 -0
- package/dist/entities/password-reset.entity.d.ts +90 -0
- package/dist/entities/password-reset.entity.d.ts.map +1 -0
- package/dist/entities/password-reset.entity.js +39 -0
- package/dist/entities/password-reset.entity.js.map +1 -0
- package/dist/entities/pending-oauth-registration.entity.d.ts +116 -0
- package/dist/entities/pending-oauth-registration.entity.d.ts.map +1 -0
- package/dist/entities/pending-oauth-registration.entity.js +67 -0
- package/dist/entities/pending-oauth-registration.entity.js.map +1 -0
- package/dist/entities/revoked-token.entity.d.ts +1559 -0
- package/dist/entities/revoked-token.entity.d.ts.map +1 -0
- package/dist/entities/revoked-token.entity.js +68 -0
- package/dist/entities/revoked-token.entity.js.map +1 -0
- package/dist/entities/terms-content.entity.d.ts +804 -0
- package/dist/entities/terms-content.entity.d.ts.map +1 -0
- package/dist/entities/terms-content.entity.js +46 -0
- package/dist/entities/terms-content.entity.js.map +1 -0
- package/dist/entities/terms.entity.d.ts +797 -0
- package/dist/entities/terms.entity.d.ts.map +1 -0
- package/dist/entities/terms.entity.js +42 -0
- package/dist/entities/terms.entity.js.map +1 -0
- package/dist/entities/user-consent.entity.d.ts +1555 -0
- package/dist/entities/user-consent.entity.d.ts.map +1 -0
- package/dist/entities/user-consent.entity.js +66 -0
- package/dist/entities/user-consent.entity.js.map +1 -0
- package/dist/entities/user-oauth.entity.d.ts +75 -0
- package/dist/entities/user-oauth.entity.d.ts.map +1 -0
- package/dist/entities/user-oauth.entity.js +45 -0
- package/dist/entities/user-oauth.entity.js.map +1 -0
- package/dist/entities/user-passkey.entity.d.ts +145 -0
- package/dist/entities/user-passkey.entity.d.ts.map +1 -0
- package/dist/entities/user-passkey.entity.js +64 -0
- package/dist/entities/user-passkey.entity.js.map +1 -0
- package/dist/entities/user-terms-consent.entity.d.ts +804 -0
- package/dist/entities/user-terms-consent.entity.d.ts.map +1 -0
- package/dist/entities/user-terms-consent.entity.js +62 -0
- package/dist/entities/user-terms-consent.entity.js.map +1 -0
- package/dist/entities/user-totp-recovery-code.entity.d.ts +527 -0
- package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -0
- package/dist/entities/user-totp-recovery-code.entity.js +34 -0
- package/dist/entities/user-totp-recovery-code.entity.js.map +1 -0
- package/dist/entities/user-totp.entity.d.ts +527 -0
- package/dist/entities/user-totp.entity.d.ts.map +1 -0
- package/dist/entities/user-totp.entity.js +38 -0
- package/dist/entities/user-totp.entity.js.map +1 -0
- package/dist/entities/user.entity.d.ts +533 -0
- package/dist/entities/user.entity.d.ts.map +1 -0
- package/dist/entities/user.entity.js +70 -0
- package/dist/entities/user.entity.js.map +1 -0
- package/dist/entrypoints/app.d.ts +1300 -0
- package/dist/entrypoints/app.d.ts.map +1 -0
- package/dist/entrypoints/app.js +64 -0
- package/dist/entrypoints/app.js.map +1 -0
- package/dist/entrypoints/config/index.d.ts +2 -0
- package/dist/entrypoints/config/index.d.ts.map +1 -0
- package/dist/entrypoints/config/index.js +2 -0
- package/dist/entrypoints/config/index.js.map +1 -0
- package/dist/entrypoints/database/d1/cli.d.ts +3 -0
- package/dist/entrypoints/database/d1/cli.d.ts.map +1 -0
- package/dist/entrypoints/database/d1/cli.js +12 -0
- package/dist/entrypoints/database/d1/cli.js.map +1 -0
- package/dist/entrypoints/database/d1/compiled-functions.d.ts +666 -0
- package/dist/entrypoints/database/d1/compiled-functions.d.ts.map +1 -0
- package/dist/entrypoints/database/d1/compiled-functions.js +8365 -0
- package/dist/entrypoints/database/d1/compiled-functions.js.map +1 -0
- package/dist/entrypoints/database/d1/d1.d.ts +5 -0
- package/dist/entrypoints/database/d1/d1.d.ts.map +1 -0
- package/dist/entrypoints/database/d1/d1.js +39 -0
- package/dist/entrypoints/database/d1/d1.js.map +1 -0
- package/dist/entrypoints/database/postgres/cli.d.ts +3 -0
- package/dist/entrypoints/database/postgres/cli.d.ts.map +1 -0
- package/dist/entrypoints/database/postgres/cli.js +9 -0
- package/dist/entrypoints/database/postgres/cli.js.map +1 -0
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts +666 -0
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -0
- package/dist/entrypoints/database/postgres/compiled-functions.js +8365 -0
- package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -0
- package/dist/entrypoints/database/postgres/postgres.d.ts +9 -0
- package/dist/entrypoints/database/postgres/postgres.d.ts.map +1 -0
- package/dist/entrypoints/database/postgres/postgres.js +34 -0
- package/dist/entrypoints/database/postgres/postgres.js.map +1 -0
- package/dist/entrypoints/database/sqlite/cli.d.ts +3 -0
- package/dist/entrypoints/database/sqlite/cli.d.ts.map +1 -0
- package/dist/entrypoints/database/sqlite/cli.js +6 -0
- package/dist/entrypoints/database/sqlite/cli.js.map +1 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +666 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.js +8365 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -0
- package/dist/entrypoints/database/sqlite/sqlite.d.ts +6 -0
- package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -0
- package/dist/entrypoints/database/sqlite/sqlite.js +32 -0
- package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -0
- package/dist/entrypoints/frontend/cloudflare.d.ts +2 -0
- package/dist/entrypoints/frontend/cloudflare.d.ts.map +1 -0
- package/dist/entrypoints/frontend/cloudflare.js +2 -0
- package/dist/entrypoints/frontend/cloudflare.js.map +1 -0
- package/dist/entrypoints/frontend/index.d.ts +6 -0
- package/dist/entrypoints/frontend/index.d.ts.map +1 -0
- package/dist/entrypoints/frontend/index.js +3 -0
- package/dist/entrypoints/frontend/index.js.map +1 -0
- package/dist/entrypoints/frontend/proxy.d.ts +2 -0
- package/dist/entrypoints/frontend/proxy.d.ts.map +1 -0
- package/dist/entrypoints/frontend/proxy.js +2 -0
- package/dist/entrypoints/frontend/proxy.js.map +1 -0
- package/dist/entrypoints/frontend/static.d.ts +2 -0
- package/dist/entrypoints/frontend/static.d.ts.map +1 -0
- package/dist/entrypoints/frontend/static.js +2 -0
- package/dist/entrypoints/frontend/static.js.map +1 -0
- package/dist/entrypoints/identity-providers/apple.d.ts +14 -0
- package/dist/entrypoints/identity-providers/apple.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/apple.js +23 -0
- package/dist/entrypoints/identity-providers/apple.js.map +1 -0
- package/dist/entrypoints/identity-providers/generic-oauth.d.ts +25 -0
- package/dist/entrypoints/identity-providers/generic-oauth.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/generic-oauth.js +20 -0
- package/dist/entrypoints/identity-providers/generic-oauth.js.map +1 -0
- package/dist/entrypoints/identity-providers/github.d.ts +13 -0
- package/dist/entrypoints/identity-providers/github.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/github.js +24 -0
- package/dist/entrypoints/identity-providers/github.js.map +1 -0
- package/dist/entrypoints/identity-providers/google.d.ts +13 -0
- package/dist/entrypoints/identity-providers/google.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/google.js +24 -0
- package/dist/entrypoints/identity-providers/google.js.map +1 -0
- package/dist/entrypoints/index.d.ts +3 -0
- package/dist/entrypoints/index.d.ts.map +1 -0
- package/dist/entrypoints/index.js +3 -0
- package/dist/entrypoints/index.js.map +1 -0
- package/dist/entrypoints/mail/nodemailer.d.ts +11 -0
- package/dist/entrypoints/mail/nodemailer.d.ts.map +1 -0
- package/dist/entrypoints/mail/nodemailer.js +30 -0
- package/dist/entrypoints/mail/nodemailer.js.map +1 -0
- package/dist/entrypoints/scheduler/croner.d.ts +6 -0
- package/dist/entrypoints/scheduler/croner.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/croner.js +22 -0
- package/dist/entrypoints/scheduler/croner.js.map +1 -0
- package/dist/entrypoints/services.d.ts +3 -0
- package/dist/entrypoints/services.d.ts.map +1 -0
- package/dist/entrypoints/services.js +2 -0
- package/dist/entrypoints/services.js.map +1 -0
- package/dist/lib/app-env.d.ts +17 -0
- package/dist/lib/app-env.d.ts.map +1 -0
- package/dist/lib/app-env.js +2 -0
- package/dist/lib/app-env.js.map +1 -0
- package/dist/lib/base64url.d.ts +33 -0
- package/dist/lib/base64url.d.ts.map +1 -0
- package/dist/lib/base64url.js +93 -0
- package/dist/lib/base64url.js.map +1 -0
- package/dist/lib/config/account-deletion.d.ts +11 -0
- package/dist/lib/config/account-deletion.d.ts.map +1 -0
- package/dist/lib/config/account-deletion.js +16 -0
- package/dist/lib/config/account-deletion.js.map +1 -0
- package/dist/lib/config/auth.d.ts +109 -0
- package/dist/lib/config/auth.d.ts.map +1 -0
- package/dist/lib/config/auth.js +155 -0
- package/dist/lib/config/auth.js.map +1 -0
- package/dist/lib/config/branding.d.ts +134 -0
- package/dist/lib/config/branding.d.ts.map +1 -0
- package/dist/lib/config/branding.js +83 -0
- package/dist/lib/config/branding.js.map +1 -0
- package/dist/lib/config/cleanup.d.ts +59 -0
- package/dist/lib/config/cleanup.d.ts.map +1 -0
- package/dist/lib/config/cleanup.js +119 -0
- package/dist/lib/config/cleanup.js.map +1 -0
- package/dist/lib/config/client.d.ts +30 -0
- package/dist/lib/config/client.d.ts.map +1 -0
- package/dist/lib/config/client.js +43 -0
- package/dist/lib/config/client.js.map +1 -0
- package/dist/lib/config/database.d.ts +8 -0
- package/dist/lib/config/database.d.ts.map +1 -0
- package/dist/lib/config/database.js +8 -0
- package/dist/lib/config/database.js.map +1 -0
- package/dist/lib/config/email.d.ts +17 -0
- package/dist/lib/config/email.d.ts.map +1 -0
- package/dist/lib/config/email.js +7 -0
- package/dist/lib/config/email.js.map +1 -0
- package/dist/lib/config/frontend.d.ts +12 -0
- package/dist/lib/config/frontend.d.ts.map +1 -0
- package/dist/lib/config/frontend.js +7 -0
- package/dist/lib/config/frontend.js.map +1 -0
- package/dist/lib/config/i18n.d.ts +31 -0
- package/dist/lib/config/i18n.d.ts.map +1 -0
- package/dist/lib/config/i18n.js +23 -0
- package/dist/lib/config/i18n.js.map +1 -0
- package/dist/lib/config/identity-providers.d.ts +66 -0
- package/dist/lib/config/identity-providers.d.ts.map +1 -0
- package/dist/lib/config/identity-providers.js +71 -0
- package/dist/lib/config/identity-providers.js.map +1 -0
- package/dist/lib/config/index.d.ts +41 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +21 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/logging.d.ts +52 -0
- package/dist/lib/config/logging.d.ts.map +1 -0
- package/dist/lib/config/logging.js +41 -0
- package/dist/lib/config/logging.js.map +1 -0
- package/dist/lib/config/openapi.d.ts +15 -0
- package/dist/lib/config/openapi.d.ts.map +1 -0
- package/dist/lib/config/openapi.js +28 -0
- package/dist/lib/config/openapi.js.map +1 -0
- package/dist/lib/config/registration.d.ts +15 -0
- package/dist/lib/config/registration.d.ts.map +1 -0
- package/dist/lib/config/registration.js +24 -0
- package/dist/lib/config/registration.js.map +1 -0
- package/dist/lib/config/resolved.d.ts +274 -0
- package/dist/lib/config/resolved.d.ts.map +1 -0
- package/dist/lib/config/resolved.js +45 -0
- package/dist/lib/config/resolved.js.map +1 -0
- package/dist/lib/config/scheduler.d.ts +13 -0
- package/dist/lib/config/scheduler.d.ts.map +1 -0
- package/dist/lib/config/scheduler.js +14 -0
- package/dist/lib/config/scheduler.js.map +1 -0
- package/dist/lib/config/security.d.ts +11 -0
- package/dist/lib/config/security.d.ts.map +1 -0
- package/dist/lib/config/security.js +42 -0
- package/dist/lib/config/security.js.map +1 -0
- package/dist/lib/config/server.d.ts +13 -0
- package/dist/lib/config/server.d.ts.map +1 -0
- package/dist/lib/config/server.js +45 -0
- package/dist/lib/config/server.js.map +1 -0
- package/dist/lib/config/terms.d.ts +47 -0
- package/dist/lib/config/terms.d.ts.map +1 -0
- package/dist/lib/config/terms.js +71 -0
- package/dist/lib/config/terms.js.map +1 -0
- package/dist/lib/config/tokens.d.ts +32 -0
- package/dist/lib/config/tokens.d.ts.map +1 -0
- package/dist/lib/config/tokens.js +47 -0
- package/dist/lib/config/tokens.js.map +1 -0
- package/dist/lib/config/user.d.ts +22 -0
- package/dist/lib/config/user.d.ts.map +1 -0
- package/dist/lib/config/user.js +18 -0
- package/dist/lib/config/user.js.map +1 -0
- package/dist/lib/crypto.d.ts +106 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +253 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/database/compiled-functions.d.ts +16 -0
- package/dist/lib/database/compiled-functions.d.ts.map +1 -0
- package/dist/lib/database/compiled-functions.js +66 -0
- package/dist/lib/database/compiled-functions.js.map +1 -0
- package/dist/lib/database/entities.d.ts +10 -0
- package/dist/lib/database/entities.d.ts.map +1 -0
- package/dist/lib/database/entities.js +43 -0
- package/dist/lib/database/entities.js.map +1 -0
- package/dist/lib/duration.d.ts +44 -0
- package/dist/lib/duration.d.ts.map +1 -0
- package/dist/lib/duration.js +103 -0
- package/dist/lib/duration.js.map +1 -0
- package/dist/lib/email-pattern.d.ts +16 -0
- package/dist/lib/email-pattern.d.ts.map +1 -0
- package/dist/lib/email-pattern.js +41 -0
- package/dist/lib/email-pattern.js.map +1 -0
- package/dist/lib/frontend/cloudflare.d.ts +12 -0
- package/dist/lib/frontend/cloudflare.d.ts.map +1 -0
- package/dist/lib/frontend/cloudflare.js +34 -0
- package/dist/lib/frontend/cloudflare.js.map +1 -0
- package/dist/lib/frontend/proxy.d.ts +24 -0
- package/dist/lib/frontend/proxy.d.ts.map +1 -0
- package/dist/lib/frontend/proxy.js +38 -0
- package/dist/lib/frontend/proxy.js.map +1 -0
- package/dist/lib/frontend/static.d.ts +21 -0
- package/dist/lib/frontend/static.d.ts.map +1 -0
- package/dist/lib/frontend/static.js +108 -0
- package/dist/lib/frontend/static.js.map +1 -0
- package/dist/lib/interpolate-html.d.ts +34 -0
- package/dist/lib/interpolate-html.d.ts.map +1 -0
- package/dist/lib/interpolate-html.js +63 -0
- package/dist/lib/interpolate-html.js.map +1 -0
- package/dist/lib/ip-utils.d.ts +61 -0
- package/dist/lib/ip-utils.d.ts.map +1 -0
- package/dist/lib/ip-utils.js +213 -0
- package/dist/lib/ip-utils.js.map +1 -0
- package/dist/lib/locale.d.ts +57 -0
- package/dist/lib/locale.d.ts.map +1 -0
- package/dist/lib/locale.js +25 -0
- package/dist/lib/locale.js.map +1 -0
- package/dist/lib/logger.d.ts +14 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +41 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/openapi.d.ts +35 -0
- package/dist/lib/openapi.d.ts.map +1 -0
- package/dist/lib/openapi.js +33 -0
- package/dist/lib/openapi.js.map +1 -0
- package/dist/lib/password-policy.d.ts +39 -0
- package/dist/lib/password-policy.d.ts.map +1 -0
- package/dist/lib/password-policy.js +51 -0
- package/dist/lib/password-policy.js.map +1 -0
- package/dist/lib/pkce.d.ts +26 -0
- package/dist/lib/pkce.d.ts.map +1 -0
- package/dist/lib/pkce.js +52 -0
- package/dist/lib/pkce.js.map +1 -0
- package/dist/lib/scopes.d.ts +10 -0
- package/dist/lib/scopes.d.ts.map +1 -0
- package/dist/lib/scopes.js +35 -0
- package/dist/lib/scopes.js.map +1 -0
- package/dist/lib/swagger-tags.d.ts +15 -0
- package/dist/lib/swagger-tags.d.ts.map +1 -0
- package/dist/lib/swagger-tags.js +15 -0
- package/dist/lib/swagger-tags.js.map +1 -0
- package/dist/middleware/auth.d.ts +64 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +123 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/logger.d.ts +18 -0
- package/dist/middleware/logger.d.ts.map +1 -0
- package/dist/middleware/logger.js +38 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/mikro-orm.d.ts +3 -0
- package/dist/middleware/mikro-orm.d.ts.map +1 -0
- package/dist/middleware/mikro-orm.js +11 -0
- package/dist/middleware/mikro-orm.js.map +1 -0
- package/dist/middleware/services.d.ts +8 -0
- package/dist/middleware/services.d.ts.map +1 -0
- package/dist/middleware/services.js +8 -0
- package/dist/middleware/services.js.map +1 -0
- package/dist/middleware/session.d.ts +63 -0
- package/dist/middleware/session.d.ts.map +1 -0
- package/dist/middleware/session.js +89 -0
- package/dist/middleware/session.js.map +1 -0
- package/dist/middleware/trusted-proxy-guard.d.ts +7 -0
- package/dist/middleware/trusted-proxy-guard.d.ts.map +1 -0
- package/dist/middleware/trusted-proxy-guard.js +34 -0
- package/dist/middleware/trusted-proxy-guard.js.map +1 -0
- package/dist/repositories/email-verification.repository.d.ts +18 -0
- package/dist/repositories/email-verification.repository.d.ts.map +1 -0
- package/dist/repositories/email-verification.repository.js +47 -0
- package/dist/repositories/email-verification.repository.js.map +1 -0
- package/dist/repositories/jwt-key.repository.d.ts +49 -0
- package/dist/repositories/jwt-key.repository.d.ts.map +1 -0
- package/dist/repositories/jwt-key.repository.js +72 -0
- package/dist/repositories/jwt-key.repository.js.map +1 -0
- package/dist/repositories/oauth-client.repository.d.ts +5 -0
- package/dist/repositories/oauth-client.repository.d.ts.map +1 -0
- package/dist/repositories/oauth-client.repository.js +4 -0
- package/dist/repositories/oauth-client.repository.js.map +1 -0
- package/dist/repositories/oauth-code.repository.d.ts +19 -0
- package/dist/repositories/oauth-code.repository.d.ts.map +1 -0
- package/dist/repositories/oauth-code.repository.js +32 -0
- package/dist/repositories/oauth-code.repository.js.map +1 -0
- package/dist/repositories/password-reset.repository.d.ts +19 -0
- package/dist/repositories/password-reset.repository.d.ts.map +1 -0
- package/dist/repositories/password-reset.repository.js +53 -0
- package/dist/repositories/password-reset.repository.js.map +1 -0
- package/dist/repositories/pending-oauth-registration.repository.d.ts +38 -0
- package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -0
- package/dist/repositories/pending-oauth-registration.repository.js +50 -0
- package/dist/repositories/pending-oauth-registration.repository.js.map +1 -0
- package/dist/repositories/revoked-token.repository.d.ts +32 -0
- package/dist/repositories/revoked-token.repository.d.ts.map +1 -0
- package/dist/repositories/revoked-token.repository.js +43 -0
- package/dist/repositories/revoked-token.repository.js.map +1 -0
- package/dist/repositories/terms-content.repository.d.ts +5 -0
- package/dist/repositories/terms-content.repository.d.ts.map +1 -0
- package/dist/repositories/terms-content.repository.js +4 -0
- package/dist/repositories/terms-content.repository.js.map +1 -0
- package/dist/repositories/terms.repository.d.ts +9 -0
- package/dist/repositories/terms.repository.d.ts.map +1 -0
- package/dist/repositories/terms.repository.js +12 -0
- package/dist/repositories/terms.repository.js.map +1 -0
- package/dist/repositories/user-consent.repository.d.ts +22 -0
- package/dist/repositories/user-consent.repository.d.ts.map +1 -0
- package/dist/repositories/user-consent.repository.js +51 -0
- package/dist/repositories/user-consent.repository.js.map +1 -0
- package/dist/repositories/user-oauth.repository.d.ts +68 -0
- package/dist/repositories/user-oauth.repository.d.ts.map +1 -0
- package/dist/repositories/user-oauth.repository.js +94 -0
- package/dist/repositories/user-oauth.repository.js.map +1 -0
- package/dist/repositories/user-passkey.repository.d.ts +187 -0
- package/dist/repositories/user-passkey.repository.d.ts.map +1 -0
- package/dist/repositories/user-passkey.repository.js +61 -0
- package/dist/repositories/user-passkey.repository.js.map +1 -0
- package/dist/repositories/user-terms-consent.repository.d.ts +38 -0
- package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -0
- package/dist/repositories/user-terms-consent.repository.js +71 -0
- package/dist/repositories/user-terms-consent.repository.js.map +1 -0
- package/dist/repositories/user-totp-recovery-code.repository.d.ts +376 -0
- package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -0
- package/dist/repositories/user-totp-recovery-code.repository.js +41 -0
- package/dist/repositories/user-totp-recovery-code.repository.js.map +1 -0
- package/dist/repositories/user-totp.repository.d.ts +564 -0
- package/dist/repositories/user-totp.repository.d.ts.map +1 -0
- package/dist/repositories/user-totp.repository.js +56 -0
- package/dist/repositories/user-totp.repository.js.map +1 -0
- package/dist/repositories/user.repository.d.ts +32 -0
- package/dist/repositories/user.repository.d.ts.map +1 -0
- package/dist/repositories/user.repository.js +70 -0
- package/dist/repositories/user.repository.js.map +1 -0
- package/dist/routes/.well-known/index.d.ts +12 -0
- package/dist/routes/.well-known/index.d.ts.map +1 -0
- package/dist/routes/.well-known/index.js +4 -0
- package/dist/routes/.well-known/index.js.map +1 -0
- package/dist/routes/.well-known/openid-configuration/get.d.ts +19 -0
- package/dist/routes/.well-known/openid-configuration/get.d.ts.map +1 -0
- package/dist/routes/.well-known/openid-configuration/get.js +12 -0
- package/dist/routes/.well-known/openid-configuration/get.js.map +1 -0
- package/dist/routes/api/auth/email/resend/post.d.ts +22 -0
- package/dist/routes/api/auth/email/resend/post.d.ts.map +1 -0
- package/dist/routes/api/auth/email/resend/post.js +64 -0
- package/dist/routes/api/auth/email/resend/post.js.map +1 -0
- package/dist/routes/api/auth/email/verify/post.d.ts +29 -0
- package/dist/routes/api/auth/email/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/email/verify/post.js +55 -0
- package/dist/routes/api/auth/email/verify/post.js.map +1 -0
- package/dist/routes/api/auth/index.d.ts +275 -0
- package/dist/routes/api/auth/index.d.ts.map +1 -0
- package/dist/routes/api/auth/index.js +25 -0
- package/dist/routes/api/auth/index.js.map +1 -0
- package/dist/routes/api/auth/login/post.d.ts +30 -0
- package/dist/routes/api/auth/login/post.d.ts.map +1 -0
- package/dist/routes/api/auth/login/post.js +76 -0
- package/dist/routes/api/auth/login/post.js.map +1 -0
- package/dist/routes/api/auth/logout/post.d.ts +14 -0
- package/dist/routes/api/auth/logout/post.d.ts.map +1 -0
- package/dist/routes/api/auth/logout/post.js +21 -0
- package/dist/routes/api/auth/logout/post.js.map +1 -0
- package/dist/routes/api/auth/passkey/options/post.d.ts +31 -0
- package/dist/routes/api/auth/passkey/options/post.d.ts.map +1 -0
- package/dist/routes/api/auth/passkey/options/post.js +43 -0
- package/dist/routes/api/auth/passkey/options/post.js.map +1 -0
- package/dist/routes/api/auth/passkey/verify/post.d.ts +41 -0
- package/dist/routes/api/auth/passkey/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/passkey/verify/post.js +75 -0
- package/dist/routes/api/auth/passkey/verify/post.js.map +1 -0
- package/dist/routes/api/auth/password/forgot/post.d.ts +22 -0
- package/dist/routes/api/auth/password/forgot/post.d.ts.map +1 -0
- package/dist/routes/api/auth/password/forgot/post.js +72 -0
- package/dist/routes/api/auth/password/forgot/post.js.map +1 -0
- package/dist/routes/api/auth/password/reset/post.d.ts +19 -0
- package/dist/routes/api/auth/password/reset/post.d.ts.map +1 -0
- package/dist/routes/api/auth/password/reset/post.js +62 -0
- package/dist/routes/api/auth/password/reset/post.js.map +1 -0
- package/dist/routes/api/auth/register/post.d.ts +39 -0
- package/dist/routes/api/auth/register/post.d.ts.map +1 -0
- package/dist/routes/api/auth/register/post.js +95 -0
- package/dist/routes/api/auth/register/post.js.map +1 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.d.ts +36 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.js +68 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.js.map +1 -0
- package/dist/routes/api/auth/totp/verify/post.d.ts +29 -0
- package/dist/routes/api/auth/totp/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/totp/verify/post.js +59 -0
- package/dist/routes/api/auth/totp/verify/post.js.map +1 -0
- package/dist/routes/api/config/get.d.ts +76 -0
- package/dist/routes/api/config/get.d.ts.map +1 -0
- package/dist/routes/api/config/get.js +70 -0
- package/dist/routes/api/config/get.js.map +1 -0
- package/dist/routes/api/config/index.d.ts +76 -0
- package/dist/routes/api/config/index.d.ts.map +1 -0
- package/dist/routes/api/config/index.js +4 -0
- package/dist/routes/api/config/index.js.map +1 -0
- package/dist/routes/api/consent/get.d.ts +37 -0
- package/dist/routes/api/consent/get.d.ts.map +1 -0
- package/dist/routes/api/consent/get.js +73 -0
- package/dist/routes/api/consent/get.js.map +1 -0
- package/dist/routes/api/consent/index.d.ts +54 -0
- package/dist/routes/api/consent/index.d.ts.map +1 -0
- package/dist/routes/api/consent/index.js +7 -0
- package/dist/routes/api/consent/index.js.map +1 -0
- package/dist/routes/api/consent/post.d.ts +33 -0
- package/dist/routes/api/consent/post.d.ts.map +1 -0
- package/dist/routes/api/consent/post.js +105 -0
- package/dist/routes/api/consent/post.js.map +1 -0
- package/dist/routes/api/docs/get.d.ts +17 -0
- package/dist/routes/api/docs/get.d.ts.map +1 -0
- package/dist/routes/api/docs/get.js +19 -0
- package/dist/routes/api/docs/get.js.map +1 -0
- package/dist/routes/api/docs/index.d.ts +12 -0
- package/dist/routes/api/docs/index.d.ts.map +1 -0
- package/dist/routes/api/docs/index.js +4 -0
- package/dist/routes/api/docs/index.js.map +1 -0
- package/dist/routes/api/health/get.d.ts +36 -0
- package/dist/routes/api/health/get.d.ts.map +1 -0
- package/dist/routes/api/health/get.js +64 -0
- package/dist/routes/api/health/get.js.map +1 -0
- package/dist/routes/api/health/index.d.ts +66 -0
- package/dist/routes/api/health/index.d.ts.map +1 -0
- package/dist/routes/api/health/index.js +9 -0
- package/dist/routes/api/health/index.js.map +1 -0
- package/dist/routes/api/health/live/get.d.ts +20 -0
- package/dist/routes/api/health/live/get.d.ts.map +1 -0
- package/dist/routes/api/health/live/get.js +28 -0
- package/dist/routes/api/health/live/get.js.map +1 -0
- package/dist/routes/api/health/ready/get.d.ts +35 -0
- package/dist/routes/api/health/ready/get.d.ts.map +1 -0
- package/dist/routes/api/health/ready/get.js +60 -0
- package/dist/routes/api/health/ready/get.js.map +1 -0
- package/dist/routes/api/index.d.ts +927 -0
- package/dist/routes/api/index.d.ts.map +1 -0
- package/dist/routes/api/index.js +19 -0
- package/dist/routes/api/index.js.map +1 -0
- package/dist/routes/api/oauth/_provider/authorize/get.d.ts +21 -0
- package/dist/routes/api/oauth/_provider/authorize/get.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/authorize/get.js +60 -0
- package/dist/routes/api/oauth/_provider/authorize/get.js.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/get.d.ts +23 -0
- package/dist/routes/api/oauth/_provider/callback/get.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/get.js +137 -0
- package/dist/routes/api/oauth/_provider/callback/get.js.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/post.d.ts +23 -0
- package/dist/routes/api/oauth/_provider/callback/post.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/post.js +140 -0
- package/dist/routes/api/oauth/_provider/callback/post.js.map +1 -0
- package/dist/routes/api/oauth/_provider/delete.d.ts +18 -0
- package/dist/routes/api/oauth/_provider/delete.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/delete.js +62 -0
- package/dist/routes/api/oauth/_provider/delete.js.map +1 -0
- package/dist/routes/api/oauth/index.d.ts +76 -0
- package/dist/routes/api/oauth/index.d.ts.map +1 -0
- package/dist/routes/api/oauth/index.js +11 -0
- package/dist/routes/api/oauth/index.js.map +1 -0
- package/dist/routes/api/terms/consent/post.d.ts +29 -0
- package/dist/routes/api/terms/consent/post.d.ts.map +1 -0
- package/dist/routes/api/terms/consent/post.js +111 -0
- package/dist/routes/api/terms/consent/post.js.map +1 -0
- package/dist/routes/api/terms/get.d.ts +40 -0
- package/dist/routes/api/terms/get.d.ts.map +1 -0
- package/dist/routes/api/terms/get.js +53 -0
- package/dist/routes/api/terms/get.js.map +1 -0
- package/dist/routes/api/terms/index.d.ts +55 -0
- package/dist/routes/api/terms/index.d.ts.map +1 -0
- package/dist/routes/api/terms/index.js +7 -0
- package/dist/routes/api/terms/index.js.map +1 -0
- package/dist/routes/api/user/delete.d.ts +21 -0
- package/dist/routes/api/user/delete.d.ts.map +1 -0
- package/dist/routes/api/user/delete.js +89 -0
- package/dist/routes/api/user/delete.js.map +1 -0
- package/dist/routes/api/user/index.d.ts +334 -0
- package/dist/routes/api/user/index.d.ts.map +1 -0
- package/dist/routes/api/user/index.js +35 -0
- package/dist/routes/api/user/index.js.map +1 -0
- package/dist/routes/api/user/oauth-accounts/get.d.ts +23 -0
- package/dist/routes/api/user/oauth-accounts/get.d.ts.map +1 -0
- package/dist/routes/api/user/oauth-accounts/get.js +58 -0
- package/dist/routes/api/user/oauth-accounts/get.js.map +1 -0
- package/dist/routes/api/user/passkeys/_id/delete.d.ts +18 -0
- package/dist/routes/api/user/passkeys/_id/delete.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/_id/delete.js +87 -0
- package/dist/routes/api/user/passkeys/_id/delete.js.map +1 -0
- package/dist/routes/api/user/passkeys/_id/patch.d.ts +22 -0
- package/dist/routes/api/user/passkeys/_id/patch.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/_id/patch.js +64 -0
- package/dist/routes/api/user/passkeys/_id/patch.js.map +1 -0
- package/dist/routes/api/user/passkeys/get.d.ts +21 -0
- package/dist/routes/api/user/passkeys/get.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/get.js +52 -0
- package/dist/routes/api/user/passkeys/get.js.map +1 -0
- package/dist/routes/api/user/passkeys/register/options/post.d.ts +55 -0
- package/dist/routes/api/user/passkeys/register/options/post.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/register/options/post.js +74 -0
- package/dist/routes/api/user/passkeys/register/options/post.js.map +1 -0
- package/dist/routes/api/user/passkeys/register/verify/post.d.ts +50 -0
- package/dist/routes/api/user/passkeys/register/verify/post.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/register/verify/post.js +95 -0
- package/dist/routes/api/user/passkeys/register/verify/post.js.map +1 -0
- package/dist/routes/api/user/password/delete.d.ts +23 -0
- package/dist/routes/api/user/password/delete.d.ts.map +1 -0
- package/dist/routes/api/user/password/delete.js +78 -0
- package/dist/routes/api/user/password/delete.js.map +1 -0
- package/dist/routes/api/user/password/post.d.ts +23 -0
- package/dist/routes/api/user/password/post.d.ts.map +1 -0
- package/dist/routes/api/user/password/post.js +81 -0
- package/dist/routes/api/user/password/post.js.map +1 -0
- package/dist/routes/api/user/password/put.d.ts +24 -0
- package/dist/routes/api/user/password/put.d.ts.map +1 -0
- package/dist/routes/api/user/password/put.js +74 -0
- package/dist/routes/api/user/password/put.js.map +1 -0
- package/dist/routes/api/user/session/get.d.ts +32 -0
- package/dist/routes/api/user/session/get.d.ts.map +1 -0
- package/dist/routes/api/user/session/get.js +36 -0
- package/dist/routes/api/user/session/get.js.map +1 -0
- package/dist/routes/api/user/totp/confirm/post.d.ts +32 -0
- package/dist/routes/api/user/totp/confirm/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/confirm/post.js +73 -0
- package/dist/routes/api/user/totp/confirm/post.js.map +1 -0
- package/dist/routes/api/user/totp/delete.d.ts +23 -0
- package/dist/routes/api/user/totp/delete.d.ts.map +1 -0
- package/dist/routes/api/user/totp/delete.js +74 -0
- package/dist/routes/api/user/totp/delete.js.map +1 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts +18 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.js +54 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.js.map +1 -0
- package/dist/routes/api/user/totp/setup/post.d.ts +22 -0
- package/dist/routes/api/user/totp/setup/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/setup/post.js +82 -0
- package/dist/routes/api/user/totp/setup/post.js.map +1 -0
- package/dist/routes/api/user/totp/verify/post.d.ts +23 -0
- package/dist/routes/api/user/totp/verify/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/verify/post.js +71 -0
- package/dist/routes/api/user/totp/verify/post.js.map +1 -0
- package/dist/routes/index.d.ts +1115 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +9 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/oauth/.well-known/jwks/get.d.ts +24 -0
- package/dist/routes/oauth/.well-known/jwks/get.d.ts.map +1 -0
- package/dist/routes/oauth/.well-known/jwks/get.js +41 -0
- package/dist/routes/oauth/.well-known/jwks/get.js.map +1 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts +29 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts.map +1 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.js +119 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.js.map +1 -0
- package/dist/routes/oauth/authorize/get.d.ts +48 -0
- package/dist/routes/oauth/authorize/get.d.ts.map +1 -0
- package/dist/routes/oauth/authorize/get.js +102 -0
- package/dist/routes/oauth/authorize/get.js.map +1 -0
- package/dist/routes/oauth/index.d.ts +182 -0
- package/dist/routes/oauth/index.d.ts.map +1 -0
- package/dist/routes/oauth/index.js +17 -0
- package/dist/routes/oauth/index.js.map +1 -0
- package/dist/routes/oauth/introspect/post.d.ts +28 -0
- package/dist/routes/oauth/introspect/post.d.ts.map +1 -0
- package/dist/routes/oauth/introspect/post.js +69 -0
- package/dist/routes/oauth/introspect/post.js.map +1 -0
- package/dist/routes/oauth/revoke/post.d.ts +22 -0
- package/dist/routes/oauth/revoke/post.d.ts.map +1 -0
- package/dist/routes/oauth/revoke/post.js +73 -0
- package/dist/routes/oauth/revoke/post.js.map +1 -0
- package/dist/routes/oauth/token/post.d.ts +29 -0
- package/dist/routes/oauth/token/post.d.ts.map +1 -0
- package/dist/routes/oauth/token/post.js +98 -0
- package/dist/routes/oauth/token/post.js.map +1 -0
- package/dist/routes/oauth/userinfo/get.d.ts +23 -0
- package/dist/routes/oauth/userinfo/get.d.ts.map +1 -0
- package/dist/routes/oauth/userinfo/get.js +65 -0
- package/dist/routes/oauth/userinfo/get.js.map +1 -0
- package/dist/schemas/error.d.ts +2104 -0
- package/dist/schemas/error.d.ts.map +1 -0
- package/dist/schemas/error.js +164 -0
- package/dist/schemas/error.js.map +1 -0
- package/dist/schemas/field.d.ts +97 -0
- package/dist/schemas/field.d.ts.map +1 -0
- package/dist/schemas/field.js +168 -0
- package/dist/schemas/field.js.map +1 -0
- package/dist/schemas/header.d.ts +7 -0
- package/dist/schemas/header.d.ts.map +1 -0
- package/dist/schemas/header.js +11 -0
- package/dist/schemas/header.js.map +1 -0
- package/dist/schemas/oauth.d.ts +26 -0
- package/dist/schemas/oauth.d.ts.map +1 -0
- package/dist/schemas/oauth.js +51 -0
- package/dist/schemas/oauth.js.map +1 -0
- package/dist/schemas/provider.d.ts +7 -0
- package/dist/schemas/provider.d.ts.map +1 -0
- package/dist/schemas/provider.js +31 -0
- package/dist/schemas/provider.js.map +1 -0
- package/dist/schemas/response.d.ts +645 -0
- package/dist/schemas/response.d.ts.map +1 -0
- package/dist/schemas/response.js +598 -0
- package/dist/schemas/response.js.map +1 -0
- package/dist/schemas/terms.d.ts +93 -0
- package/dist/schemas/terms.d.ts.map +1 -0
- package/dist/schemas/terms.js +109 -0
- package/dist/schemas/terms.js.map +1 -0
- package/dist/seeders/config.seeder.d.ts +21 -0
- package/dist/seeders/config.seeder.d.ts.map +1 -0
- package/dist/seeders/config.seeder.js +168 -0
- package/dist/seeders/config.seeder.js.map +1 -0
- package/dist/services/cleanup.service.d.ts +166 -0
- package/dist/services/cleanup.service.d.ts.map +1 -0
- package/dist/services/cleanup.service.js +605 -0
- package/dist/services/cleanup.service.js.map +1 -0
- package/dist/services/container.d.ts +201 -0
- package/dist/services/container.d.ts.map +1 -0
- package/dist/services/container.js +75 -0
- package/dist/services/container.js.map +1 -0
- package/dist/services/email.service.d.ts +69 -0
- package/dist/services/email.service.d.ts.map +1 -0
- package/dist/services/email.service.js +164 -0
- package/dist/services/email.service.js.map +1 -0
- package/dist/services/jwt.service.d.ts +321 -0
- package/dist/services/jwt.service.d.ts.map +1 -0
- package/dist/services/jwt.service.js +524 -0
- package/dist/services/jwt.service.js.map +1 -0
- package/dist/services/mikro.service.d.ts +43 -0
- package/dist/services/mikro.service.d.ts.map +1 -0
- package/dist/services/mikro.service.js +68 -0
- package/dist/services/mikro.service.js.map +1 -0
- package/dist/services/oauth-authorize.service.d.ts +91 -0
- package/dist/services/oauth-authorize.service.d.ts.map +1 -0
- package/dist/services/oauth-authorize.service.js +237 -0
- package/dist/services/oauth-authorize.service.js.map +1 -0
- package/dist/services/oauth-client.service.d.ts +38 -0
- package/dist/services/oauth-client.service.d.ts.map +1 -0
- package/dist/services/oauth-client.service.js +80 -0
- package/dist/services/oauth-client.service.js.map +1 -0
- package/dist/services/oauth-connect.service.d.ts +182 -0
- package/dist/services/oauth-connect.service.d.ts.map +1 -0
- package/dist/services/oauth-connect.service.js +592 -0
- package/dist/services/oauth-connect.service.js.map +1 -0
- package/dist/services/oauth-token.service.d.ts +162 -0
- package/dist/services/oauth-token.service.d.ts.map +1 -0
- package/dist/services/oauth-token.service.js +374 -0
- package/dist/services/oauth-token.service.js.map +1 -0
- package/dist/services/passkey.service.d.ts +73 -0
- package/dist/services/passkey.service.d.ts.map +1 -0
- package/dist/services/passkey.service.js +199 -0
- package/dist/services/passkey.service.js.map +1 -0
- package/dist/services/password-auth.service.d.ts +24 -0
- package/dist/services/password-auth.service.d.ts.map +1 -0
- package/dist/services/password-auth.service.js +87 -0
- package/dist/services/password-auth.service.js.map +1 -0
- package/dist/services/password-reset.service.d.ts +31 -0
- package/dist/services/password-reset.service.d.ts.map +1 -0
- package/dist/services/password-reset.service.js +54 -0
- package/dist/services/password-reset.service.js.map +1 -0
- package/dist/services/scheduler.service.d.ts +15 -0
- package/dist/services/scheduler.service.d.ts.map +1 -0
- package/dist/services/scheduler.service.js +52 -0
- package/dist/services/scheduler.service.js.map +1 -0
- package/dist/services/security.service.d.ts +17 -0
- package/dist/services/security.service.d.ts.map +1 -0
- package/dist/services/security.service.js +82 -0
- package/dist/services/security.service.js.map +1 -0
- package/dist/services/terms.service.d.ts +131 -0
- package/dist/services/terms.service.d.ts.map +1 -0
- package/dist/services/terms.service.js +210 -0
- package/dist/services/terms.service.js.map +1 -0
- package/dist/services/totp.service.d.ts +86 -0
- package/dist/services/totp.service.d.ts.map +1 -0
- package/dist/services/totp.service.js +244 -0
- package/dist/services/totp.service.js.map +1 -0
- package/dist/services/user-consent.service.d.ts +34 -0
- package/dist/services/user-consent.service.d.ts.map +1 -0
- package/dist/services/user-consent.service.js +42 -0
- package/dist/services/user-consent.service.js.map +1 -0
- package/dist/services/user.service.d.ts +60 -0
- package/dist/services/user.service.d.ts.map +1 -0
- package/dist/services/user.service.js +176 -0
- package/dist/services/user.service.js.map +1 -0
- package/package.json +155 -0
- package/public/assets/index-CrY7bb7j.css +2 -0
- package/public/assets/index-jYk5DHP_.js +75 -0
- package/public/assets/index-jYk5DHP_.js.map +1 -0
- package/public/index.html +27 -0
- package/public/vite.svg +1 -0
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
import { decodeJwt, exportJWK, exportPKCS8, exportSPKI, generateKeyPair, importPKCS8, importSPKI, jwtVerify, SignJWT, } from 'jose';
|
|
2
|
+
import { JwtKeyStatus } from "../entities/jwt-key.entity.js";
|
|
3
|
+
import { bytesToString, fromBase64Url } from "../lib/base64url.js";
|
|
4
|
+
import { e } from "../schemas/error.js";
|
|
5
|
+
/**
|
|
6
|
+
* JWT Service
|
|
7
|
+
*
|
|
8
|
+
* Handles JWT signing and verification using RS256 asymmetric keys.
|
|
9
|
+
* Manages RSA key pairs for signing with automatic rotation support.
|
|
10
|
+
* Supports token revocation via RevokedToken repository.
|
|
11
|
+
*
|
|
12
|
+
* Key Lifecycle:
|
|
13
|
+
* 1. next: Generated, waiting to be activated
|
|
14
|
+
* 2. active: Currently used for signing tokens
|
|
15
|
+
* 3. previous: Recently rotated, still valid for verification
|
|
16
|
+
* 4. retired: No longer valid for any operation
|
|
17
|
+
*/
|
|
18
|
+
export class JwtService {
|
|
19
|
+
/** Cache for active signing key */
|
|
20
|
+
activeKeyCache = null;
|
|
21
|
+
activeKeyCacheTime = 0;
|
|
22
|
+
CACHE_TTL_MS = 60 * 1000; // 1 minute
|
|
23
|
+
/** Deduplication lock for concurrent ensureActiveKey calls */
|
|
24
|
+
ensureActiveKeyPromise = null;
|
|
25
|
+
config;
|
|
26
|
+
mikro;
|
|
27
|
+
constructor(config, mikro) {
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.mikro = mikro;
|
|
30
|
+
}
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Key Generation & Management
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
/**
|
|
35
|
+
* Generate a new RSA key pair
|
|
36
|
+
*
|
|
37
|
+
* @returns Generated key pair with PEM-encoded keys
|
|
38
|
+
*/
|
|
39
|
+
async generateKeyPair() {
|
|
40
|
+
// Generate RSA key pair using jose
|
|
41
|
+
const { privateKey, publicKey } = await generateKeyPair('RS256', {
|
|
42
|
+
modulusLength: 2048,
|
|
43
|
+
extractable: true,
|
|
44
|
+
});
|
|
45
|
+
// Export to PEM format using jose's export functions
|
|
46
|
+
const privateKeyPem = await exportPKCS8(privateKey);
|
|
47
|
+
const publicKeyPem = await exportSPKI(publicKey);
|
|
48
|
+
// Generate unique kid
|
|
49
|
+
const kid = this.generateKid();
|
|
50
|
+
return {
|
|
51
|
+
kid,
|
|
52
|
+
privateKey: privateKeyPem,
|
|
53
|
+
publicKey: publicKeyPem,
|
|
54
|
+
algorithm: 'RS256',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Generate a unique Key ID
|
|
59
|
+
*
|
|
60
|
+
* Format: key-{timestamp}-{random}
|
|
61
|
+
*/
|
|
62
|
+
generateKid() {
|
|
63
|
+
const timestamp = Date.now().toString(36);
|
|
64
|
+
const random = crypto.randomUUID().slice(0, 8);
|
|
65
|
+
return `key-${timestamp}-${random}`;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Ensure at least one active key exists
|
|
69
|
+
*
|
|
70
|
+
* Called on server startup to guarantee signing capability.
|
|
71
|
+
* Generates a new key if none exists.
|
|
72
|
+
*/
|
|
73
|
+
async ensureActiveKey() {
|
|
74
|
+
const activeKey = await this.mikro.jwtKey.getActiveKey();
|
|
75
|
+
if (activeKey) {
|
|
76
|
+
return activeKey;
|
|
77
|
+
}
|
|
78
|
+
// No active key, check for a 'next' key to activate
|
|
79
|
+
const nextKey = await this.mikro.jwtKey.getNextKey();
|
|
80
|
+
if (nextKey) {
|
|
81
|
+
return this.activateKey(nextKey);
|
|
82
|
+
}
|
|
83
|
+
// No keys at all, generate and activate a new one
|
|
84
|
+
return this.createAndActivateKey();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create a new key and immediately activate it
|
|
88
|
+
*/
|
|
89
|
+
async createAndActivateKey() {
|
|
90
|
+
const keyPair = await this.generateKeyPair();
|
|
91
|
+
const rotationDays = this.config.tokens.key_rotation.interval_days;
|
|
92
|
+
const expiresAt = new Date();
|
|
93
|
+
expiresAt.setDate(expiresAt.getDate() + rotationDays);
|
|
94
|
+
const entity = this.mikro.jwtKey.create({
|
|
95
|
+
kid: keyPair.kid,
|
|
96
|
+
private_key: keyPair.privateKey,
|
|
97
|
+
public_key: keyPair.publicKey,
|
|
98
|
+
algorithm: keyPair.algorithm,
|
|
99
|
+
status: JwtKeyStatus.ACTIVE,
|
|
100
|
+
activated_at: new Date(),
|
|
101
|
+
expires_at: expiresAt,
|
|
102
|
+
});
|
|
103
|
+
await this.mikro.em.persist(entity).flush();
|
|
104
|
+
// Clear cache
|
|
105
|
+
this.activeKeyCache = null;
|
|
106
|
+
return entity;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create a new key in 'next' status (pre-rotation)
|
|
110
|
+
*/
|
|
111
|
+
async createNextKey() {
|
|
112
|
+
const keyPair = await this.generateKeyPair();
|
|
113
|
+
const rotationDays = this.config.tokens.key_rotation.interval_days;
|
|
114
|
+
const expiresAt = new Date();
|
|
115
|
+
expiresAt.setDate(expiresAt.getDate() + rotationDays);
|
|
116
|
+
const entity = this.mikro.jwtKey.create({
|
|
117
|
+
kid: keyPair.kid,
|
|
118
|
+
private_key: keyPair.privateKey,
|
|
119
|
+
public_key: keyPair.publicKey,
|
|
120
|
+
algorithm: keyPair.algorithm,
|
|
121
|
+
status: JwtKeyStatus.NEXT,
|
|
122
|
+
expires_at: expiresAt,
|
|
123
|
+
});
|
|
124
|
+
await this.mikro.em.persist(entity).flush();
|
|
125
|
+
return entity;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Activate a key (change status to 'active')
|
|
129
|
+
*/
|
|
130
|
+
async activateKey(key) {
|
|
131
|
+
key.status = JwtKeyStatus.ACTIVE;
|
|
132
|
+
key.activated_at = new Date();
|
|
133
|
+
await this.mikro.em.persist(key).flush();
|
|
134
|
+
// Clear cache
|
|
135
|
+
this.activeKeyCache = null;
|
|
136
|
+
return key;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Deactivate current active key and promote next key
|
|
140
|
+
*
|
|
141
|
+
* This is the main rotation operation:
|
|
142
|
+
* 1. Current active -> previous
|
|
143
|
+
* 2. Next -> active (or create new if no next)
|
|
144
|
+
*/
|
|
145
|
+
async rotateKeys() {
|
|
146
|
+
const currentActive = await this.mikro.jwtKey.getActiveKey();
|
|
147
|
+
// Deactivate current active key
|
|
148
|
+
if (currentActive) {
|
|
149
|
+
currentActive.status = JwtKeyStatus.PREVIOUS;
|
|
150
|
+
currentActive.deactivated_at = new Date();
|
|
151
|
+
}
|
|
152
|
+
// Get or create next key
|
|
153
|
+
let nextKey = await this.mikro.jwtKey.getNextKey();
|
|
154
|
+
if (!nextKey) {
|
|
155
|
+
nextKey = await this.createNextKey();
|
|
156
|
+
}
|
|
157
|
+
// Activate the next key
|
|
158
|
+
nextKey.status = JwtKeyStatus.ACTIVE;
|
|
159
|
+
nextKey.activated_at = new Date();
|
|
160
|
+
await this.mikro.em.flush();
|
|
161
|
+
// Clear cache
|
|
162
|
+
this.activeKeyCache = null;
|
|
163
|
+
return nextKey;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Retire old keys past the overlap period
|
|
167
|
+
*
|
|
168
|
+
* @param overlapDays - Days to keep previous keys valid
|
|
169
|
+
*/
|
|
170
|
+
async retireOldKeys(overlapDays) {
|
|
171
|
+
const days = overlapDays ?? this.config.tokens.key_rotation.overlap_days;
|
|
172
|
+
const keysToRetire = await this.mikro.jwtKey.getKeysToRetire(days);
|
|
173
|
+
for (const key of keysToRetire) {
|
|
174
|
+
key.status = JwtKeyStatus.RETIRED;
|
|
175
|
+
key.retired_at = new Date();
|
|
176
|
+
}
|
|
177
|
+
if (keysToRetire.length > 0) {
|
|
178
|
+
await this.mikro.em.flush();
|
|
179
|
+
}
|
|
180
|
+
return keysToRetire.length;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get the active signing key (with caching)
|
|
184
|
+
*
|
|
185
|
+
* @returns Active key with private_key loaded
|
|
186
|
+
* @throws Error if no active key exists
|
|
187
|
+
*/
|
|
188
|
+
async getActiveKey() {
|
|
189
|
+
const now = Date.now();
|
|
190
|
+
// Check cache
|
|
191
|
+
if (this.activeKeyCache &&
|
|
192
|
+
now - this.activeKeyCacheTime < this.CACHE_TTL_MS) {
|
|
193
|
+
return this.activeKeyCache;
|
|
194
|
+
}
|
|
195
|
+
let key = await this.mikro.jwtKey.getActiveKey();
|
|
196
|
+
if (!key) {
|
|
197
|
+
// Lazy initialization: create or promote a key on demand.
|
|
198
|
+
// Use promise-based deduplication to prevent concurrent
|
|
199
|
+
// key generation within the same process.
|
|
200
|
+
if (!this.ensureActiveKeyPromise) {
|
|
201
|
+
this.ensureActiveKeyPromise = this.ensureActiveKey().finally(() => {
|
|
202
|
+
this.ensureActiveKeyPromise = null;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
key = await this.ensureActiveKeyPromise;
|
|
206
|
+
}
|
|
207
|
+
// Update cache
|
|
208
|
+
this.activeKeyCache = key;
|
|
209
|
+
this.activeKeyCacheTime = now;
|
|
210
|
+
return key;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get key by kid for verification
|
|
214
|
+
*
|
|
215
|
+
* @param kid - Key ID from JWT header
|
|
216
|
+
* @returns Key entity or null
|
|
217
|
+
*/
|
|
218
|
+
async getKeyByKid(kid) {
|
|
219
|
+
return this.mikro.jwtKey.getByKid(kid);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get all keys valid for verification
|
|
223
|
+
*
|
|
224
|
+
* @returns Array of active and previous keys
|
|
225
|
+
*/
|
|
226
|
+
async getVerificationKeys() {
|
|
227
|
+
return this.mikro.jwtKey.getVerificationKeys();
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Convert PEM public key to JWK format for JWKS endpoint
|
|
231
|
+
*
|
|
232
|
+
* @param key - JWT Key entity
|
|
233
|
+
* @returns JWK object
|
|
234
|
+
*/
|
|
235
|
+
async convertToJWK(key) {
|
|
236
|
+
// Import PEM to KeyLike
|
|
237
|
+
const publicKey = await importSPKI(key.public_key, key.algorithm);
|
|
238
|
+
// Export to JWK
|
|
239
|
+
const jwk = await exportJWK(publicKey);
|
|
240
|
+
// Return JWK with required fields for RS256
|
|
241
|
+
return {
|
|
242
|
+
kty: jwk.kty ?? 'RSA',
|
|
243
|
+
use: 'sig',
|
|
244
|
+
kid: key.kid,
|
|
245
|
+
alg: key.algorithm,
|
|
246
|
+
...(jwk.n && { n: jwk.n }),
|
|
247
|
+
...(jwk.e && { e: jwk.e }),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get JWKS (JSON Web Key Set) for public endpoint
|
|
252
|
+
*
|
|
253
|
+
* Returns all active and previous keys in JWK format.
|
|
254
|
+
*
|
|
255
|
+
* @returns JWKS object with keys array
|
|
256
|
+
*/
|
|
257
|
+
async getJWKS() {
|
|
258
|
+
// Ensure at least one active key exists (lazy initialization)
|
|
259
|
+
await this.getActiveKey();
|
|
260
|
+
const keys = await this.mikro.jwtKey.getPublicKeys();
|
|
261
|
+
const jwks = await Promise.all(keys.map((key) => this.convertToJWK(key)));
|
|
262
|
+
return { keys: jwks };
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Clear the active key cache
|
|
266
|
+
*
|
|
267
|
+
* Used after bootstrap or key rotation to ensure fresh key lookup.
|
|
268
|
+
*/
|
|
269
|
+
clearActiveKeyCache() {
|
|
270
|
+
this.activeKeyCache = null;
|
|
271
|
+
}
|
|
272
|
+
// ---------------------------------------------------------------------------
|
|
273
|
+
// Token Signing
|
|
274
|
+
// ---------------------------------------------------------------------------
|
|
275
|
+
/**
|
|
276
|
+
* Sign an access token using RS256
|
|
277
|
+
*/
|
|
278
|
+
async signAccessToken(payload) {
|
|
279
|
+
const ttl = this.config.tokens.access_token_ttl;
|
|
280
|
+
const key = await this.getActiveKey();
|
|
281
|
+
const privateKey = await importPKCS8(key.private_key, key.algorithm);
|
|
282
|
+
const jti = crypto.randomUUID();
|
|
283
|
+
const jwt = await new SignJWT({
|
|
284
|
+
typ: 'access_token',
|
|
285
|
+
sub: payload.sub,
|
|
286
|
+
client_id: payload.client_id,
|
|
287
|
+
scope: payload.scope,
|
|
288
|
+
})
|
|
289
|
+
.setProtectedHeader({ alg: key.algorithm, typ: 'JWT', kid: key.kid })
|
|
290
|
+
.setJti(jti)
|
|
291
|
+
.setIssuedAt()
|
|
292
|
+
.setExpirationTime(`${ttl}s`)
|
|
293
|
+
.setIssuer(this.config.server.public_origin)
|
|
294
|
+
.sign(privateKey);
|
|
295
|
+
return jwt;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Sign a refresh token using RS256
|
|
299
|
+
*/
|
|
300
|
+
async signRefreshToken(payload) {
|
|
301
|
+
const ttl = this.config.tokens.refresh_token_ttl;
|
|
302
|
+
const key = await this.getActiveKey();
|
|
303
|
+
const privateKey = await importPKCS8(key.private_key, key.algorithm);
|
|
304
|
+
const jti = crypto.randomUUID();
|
|
305
|
+
const jwt = await new SignJWT({
|
|
306
|
+
typ: 'refresh_token',
|
|
307
|
+
sub: payload.sub,
|
|
308
|
+
client_id: payload.client_id,
|
|
309
|
+
scope: payload.scope,
|
|
310
|
+
})
|
|
311
|
+
.setProtectedHeader({ alg: key.algorithm, typ: 'JWT', kid: key.kid })
|
|
312
|
+
.setJti(jti)
|
|
313
|
+
.setIssuedAt()
|
|
314
|
+
.setExpirationTime(`${ttl}s`)
|
|
315
|
+
.setIssuer(this.config.server.public_origin)
|
|
316
|
+
.sign(privateKey);
|
|
317
|
+
return jwt;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Sign an ID token using RS256 (for OIDC)
|
|
321
|
+
*
|
|
322
|
+
* Includes standard OIDC claims:
|
|
323
|
+
* - auth_time: Time when End-User authentication occurred
|
|
324
|
+
* - at_hash: Access Token hash (when provided)
|
|
325
|
+
*/
|
|
326
|
+
async signIdToken(payload) {
|
|
327
|
+
const ttl = this.config.tokens.access_token_ttl;
|
|
328
|
+
const key = await this.getActiveKey();
|
|
329
|
+
const privateKey = await importPKCS8(key.private_key, key.algorithm);
|
|
330
|
+
const jwt = await new SignJWT({
|
|
331
|
+
sub: payload.sub,
|
|
332
|
+
aud: payload.aud,
|
|
333
|
+
...(payload.nonce && { nonce: payload.nonce }),
|
|
334
|
+
...(payload.auth_time !== undefined && { auth_time: payload.auth_time }),
|
|
335
|
+
...(payload.at_hash && { at_hash: payload.at_hash }),
|
|
336
|
+
...(payload.email && { email: payload.email }),
|
|
337
|
+
...(payload.email_verified !== undefined && {
|
|
338
|
+
email_verified: payload.email_verified,
|
|
339
|
+
}),
|
|
340
|
+
...(payload.name && { name: payload.name }),
|
|
341
|
+
...(payload.picture && { picture: payload.picture }),
|
|
342
|
+
})
|
|
343
|
+
.setProtectedHeader({ alg: key.algorithm, typ: 'JWT', kid: key.kid })
|
|
344
|
+
.setIssuedAt()
|
|
345
|
+
.setExpirationTime(`${ttl}s`)
|
|
346
|
+
.setIssuer(this.config.server.public_origin)
|
|
347
|
+
.sign(privateKey);
|
|
348
|
+
return jwt;
|
|
349
|
+
}
|
|
350
|
+
// ---------------------------------------------------------------------------
|
|
351
|
+
// Token Verification
|
|
352
|
+
// ---------------------------------------------------------------------------
|
|
353
|
+
/**
|
|
354
|
+
* Verify and decode an access token
|
|
355
|
+
*
|
|
356
|
+
* @throws {InvalidAccessToken} When token is invalid, expired, or revoked
|
|
357
|
+
*/
|
|
358
|
+
async verifyAccessToken(token) {
|
|
359
|
+
try {
|
|
360
|
+
const payload = await this.verifyToken(token);
|
|
361
|
+
if (!this.isAccessTokenPayload(payload)) {
|
|
362
|
+
throw new Error('Invalid access token payload structure');
|
|
363
|
+
}
|
|
364
|
+
// Check if token is revoked
|
|
365
|
+
if (payload.jti) {
|
|
366
|
+
const isRevoked = await this.mikro.revokedToken.isRevoked(payload.jti);
|
|
367
|
+
if (isRevoked) {
|
|
368
|
+
throw new Error('Token has been revoked');
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return payload;
|
|
372
|
+
}
|
|
373
|
+
catch {
|
|
374
|
+
throw new e.InvalidAccessToken.Error();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Verify and decode a refresh token
|
|
379
|
+
*
|
|
380
|
+
* @throws {InvalidRefreshToken} When token is invalid, expired, or revoked
|
|
381
|
+
*/
|
|
382
|
+
async verifyRefreshToken(token) {
|
|
383
|
+
try {
|
|
384
|
+
const payload = await this.verifyToken(token);
|
|
385
|
+
if (!this.isRefreshTokenPayload(payload)) {
|
|
386
|
+
throw new Error('Invalid refresh token payload structure');
|
|
387
|
+
}
|
|
388
|
+
// Check if token is revoked
|
|
389
|
+
if (payload.jti) {
|
|
390
|
+
const isRevoked = await this.mikro.revokedToken.isRevoked(payload.jti);
|
|
391
|
+
if (isRevoked) {
|
|
392
|
+
throw new Error('Token has been revoked');
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return payload;
|
|
396
|
+
}
|
|
397
|
+
catch {
|
|
398
|
+
throw new e.InvalidRefreshToken.Error();
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Internal: Verify token with appropriate key based on kid
|
|
403
|
+
*/
|
|
404
|
+
async verifyToken(token) {
|
|
405
|
+
// Decode header to get kid
|
|
406
|
+
const headerPart = token.split('.')[0];
|
|
407
|
+
if (!headerPart) {
|
|
408
|
+
throw new Error('Invalid token format');
|
|
409
|
+
}
|
|
410
|
+
const header = JSON.parse(bytesToString(fromBase64Url(headerPart)));
|
|
411
|
+
const kid = typeof header['kid'] === 'string' ? header['kid'] : undefined;
|
|
412
|
+
// If kid is present, find specific key
|
|
413
|
+
if (kid) {
|
|
414
|
+
const key = await this.getKeyByKid(kid);
|
|
415
|
+
if (key?.isVerificationKey()) {
|
|
416
|
+
const publicKey = await importSPKI(key.public_key, key.algorithm);
|
|
417
|
+
const { payload } = await jwtVerify(token, publicKey);
|
|
418
|
+
return payload;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
// Fallback: try all verification keys
|
|
422
|
+
const keys = await this.getVerificationKeys();
|
|
423
|
+
for (const key of keys) {
|
|
424
|
+
try {
|
|
425
|
+
const publicKey = await importSPKI(key.public_key, key.algorithm);
|
|
426
|
+
const { payload } = await jwtVerify(token, publicKey);
|
|
427
|
+
return payload;
|
|
428
|
+
}
|
|
429
|
+
catch { }
|
|
430
|
+
}
|
|
431
|
+
throw new Error('Token verification failed with all available keys');
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Type guard to validate access token payload structure
|
|
435
|
+
*/
|
|
436
|
+
isAccessTokenPayload(payload) {
|
|
437
|
+
return (payload['typ'] === 'access_token' &&
|
|
438
|
+
typeof payload.sub === 'string' &&
|
|
439
|
+
typeof payload['client_id'] === 'string' &&
|
|
440
|
+
typeof payload['scope'] === 'string');
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Type guard to validate refresh token payload structure
|
|
444
|
+
*/
|
|
445
|
+
isRefreshTokenPayload(payload) {
|
|
446
|
+
return (payload['typ'] === 'refresh_token' &&
|
|
447
|
+
typeof payload.sub === 'string' &&
|
|
448
|
+
typeof payload['client_id'] === 'string' &&
|
|
449
|
+
typeof payload['scope'] === 'string');
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Decode a JWT without verification (for introspection)
|
|
453
|
+
*/
|
|
454
|
+
decodeToken(token) {
|
|
455
|
+
try {
|
|
456
|
+
return decodeJwt(token);
|
|
457
|
+
}
|
|
458
|
+
catch {
|
|
459
|
+
return null;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
// ---------------------------------------------------------------------------
|
|
463
|
+
// Bearer Token Extraction
|
|
464
|
+
// ---------------------------------------------------------------------------
|
|
465
|
+
/**
|
|
466
|
+
* Extract Bearer token from Authorization header
|
|
467
|
+
*
|
|
468
|
+
* @param req - Fastify request object
|
|
469
|
+
* @returns Extracted Bearer token
|
|
470
|
+
* @throws {MissingAuthorizationHeader} When Authorization header is missing
|
|
471
|
+
* @throws {InvalidAuthorizationHeaderFormat} When header format is invalid
|
|
472
|
+
* @throws {MissingBearerToken} When token is missing in header
|
|
473
|
+
*
|
|
474
|
+
* @example
|
|
475
|
+
* ```typescript
|
|
476
|
+
* const token = jwtService.extractBearerToken(req);
|
|
477
|
+
* // Returns: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
|
478
|
+
* ```
|
|
479
|
+
*/
|
|
480
|
+
extractBearerToken(req) {
|
|
481
|
+
const authHeader = req.headers.authorization;
|
|
482
|
+
if (!authHeader) {
|
|
483
|
+
throw new e.MissingAuthorizationHeader.Error();
|
|
484
|
+
}
|
|
485
|
+
const parts = authHeader.split(' ');
|
|
486
|
+
if (parts.length !== 2 || parts[0] !== 'Bearer') {
|
|
487
|
+
throw new e.InvalidAuthorizationHeaderFormat.Error();
|
|
488
|
+
}
|
|
489
|
+
const token = parts[1];
|
|
490
|
+
if (!token) {
|
|
491
|
+
throw new e.MissingBearerToken.Error();
|
|
492
|
+
}
|
|
493
|
+
return token;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Validate Bearer token and return decoded payload
|
|
497
|
+
*
|
|
498
|
+
* Extracts Bearer token from Authorization header and verifies it.
|
|
499
|
+
* This is the main authentication handler for protected API endpoints.
|
|
500
|
+
*
|
|
501
|
+
* @param req - Fastify request object
|
|
502
|
+
* @returns Decoded access token payload with user and client info
|
|
503
|
+
* @throws {MissingAuthorizationHeader} When Authorization header is missing
|
|
504
|
+
* @throws {InvalidAuthorizationHeaderFormat} When header format is invalid
|
|
505
|
+
* @throws {MissingBearerToken} When token is missing in header
|
|
506
|
+
* @throws {InvalidAccessToken} When token is invalid or expired
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* ```typescript
|
|
510
|
+
* // In a route handler
|
|
511
|
+
* const payload = await fastify.jwtService.validateBearerToken(req);
|
|
512
|
+
* console.log(payload.sub); // User ID
|
|
513
|
+
* console.log(payload.client_id); // OAuth client ID
|
|
514
|
+
* console.log(payload.scope); // Granted scopes
|
|
515
|
+
* ```
|
|
516
|
+
*/
|
|
517
|
+
async validateBearerToken(req) {
|
|
518
|
+
const token = this.extractBearerToken(req);
|
|
519
|
+
// Use jwtService for RS256 token verification
|
|
520
|
+
const payload = await this.verifyAccessToken(token);
|
|
521
|
+
return payload;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
//# sourceMappingURL=jwt.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../src/services/jwt.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,eAAe,EACf,WAAW,EACX,UAAU,EAEV,SAAS,EACT,OAAO,GACR,MAAM,MAAM,CAAC;AACd,OAAO,EAAqB,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAiIxC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,UAAU;IACrB,mCAAmC;IAC3B,cAAc,GAAwB,IAAI,CAAC;IAC3C,kBAAkB,GAAW,CAAC,CAAC;IACtB,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;IAEtD,8DAA8D;IACtD,sBAAsB,GAAiC,IAAI,CAAC;IAEnD,MAAM,CAAwB;IAC9B,KAAK,CAAe;IACrC,YAAY,MAA6B,EAAE,KAAmB;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,8EAA8E;IAC9E,8BAA8B;IAC9B,8EAA8E;IAE9E;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,mCAAmC;QACnC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE;YAC/D,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,qDAAqD;QACrD,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;QAEjD,sBAAsB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAE/B,OAAO;YACL,GAAG;YACH,UAAU,EAAE,aAAa;YACzB,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,OAAO;SACnB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,WAAW;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,OAAO,SAAS,IAAI,MAAM,EAAE,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAEzD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oDAAoD;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAErD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,kDAAkD;QAClD,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;QAEnE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5C,cAAc;QACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;QAEnE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,YAAY,CAAC,IAAI;YACzB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,GAAiB;QACjC,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACjC,GAAG,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;QAE9B,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzC,cAAc;QACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAE7D,gCAAgC;QAChC,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC;YAC7C,aAAa,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5C,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAEnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,CAAC;QAED,wBAAwB;QACxB,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACrC,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;QAElC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAE5B,cAAc;QACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,WAAoB;QACtC,MAAM,IAAI,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;QACzE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEnE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;YAClC,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO,YAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,cAAc;QACd,IACE,IAAI,CAAC,cAAc;YACnB,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,EACjD,CAAC;YACD,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QAED,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAEjD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,0DAA0D;YAC1D,wDAAwD;YACxD,0CAA0C;YAC1C,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACjC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;oBAChE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC;YACD,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC;QAC1C,CAAC;QAED,eAAe;QACf,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAE9B,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,GAAiB;QAClC,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAElE,gBAAgB;QAChB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QAEvC,4CAA4C;QAC5C,OAAO;YACL,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK;YACrB,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,EAAE,GAAG,CAAC,SAAS;YAClB,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QAGX,8DAA8D;QAC9D,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAErD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE1E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,mBAAmB;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,8EAA8E;IAC9E,gBAAgB;IAChB,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,OAA2B;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEhC,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC;YAC5B,GAAG,EAAE,cAAc;YACnB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;aACC,kBAAkB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;aACpE,MAAM,CAAC,GAAG,CAAC;aACX,WAAW,EAAE;aACb,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC;aAC5B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;aAC3C,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAA4B;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEhC,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC;YAC5B,GAAG,EAAE,eAAe;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;aACC,kBAAkB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;aACpE,MAAM,CAAC,GAAG,CAAC;aACX,WAAW,EAAE;aACb,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC;aAC5B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;aAC3C,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAErE,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC;YAC5B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9C,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YACxE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9C,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,IAAI;gBAC1C,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC,CAAC;YACF,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACrD,CAAC;aACC,kBAAkB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;aACpE,WAAW,EAAE;aACb,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC;aAC5B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;aAC3C,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8EAA8E;IAC9E,qBAAqB;IACrB,8EAA8E;IAE9E;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAAa;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YAED,4BAA4B;YAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa;QACpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YAED,4BAA4B;YAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,KAAa;QACrC,2BAA2B;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,MAAM,GAA4B,IAAI,CAAC,KAAK,CAChD,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CACzC,CAAC;QACF,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,uCAAuC;QACvC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAExC,IAAI,GAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACtD,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACtD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,OAAmB;QAEnB,OAAO,CACL,OAAO,CAAC,KAAK,CAAC,KAAK,cAAc;YACjC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;YAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,QAAQ;YACxC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,CACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,qBAAqB,CAC3B,OAAmB;QAEnB,OAAO,CACL,OAAO,CAAC,KAAK,CAAC,KAAK,eAAe;YAClC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;YAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,QAAQ;YACxC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,CACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,0BAA0B;IAC1B,8EAA8E;IAE9E;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,GAA4C;QAC7D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,CAAC,gCAAgC,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAEzB;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAE3C,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { MikroORM } from '@mikro-orm/core';
|
|
2
|
+
import type { TinyAuthRuntimeConfig } from '../lib/config/index.ts';
|
|
3
|
+
import type { Logger } from '../lib/logger.ts';
|
|
4
|
+
import type { EmailVerificationRepository } from '../repositories/email-verification.repository.ts';
|
|
5
|
+
import type { JwtKeyRepository } from '../repositories/jwt-key.repository.ts';
|
|
6
|
+
import type { OAuthClientRepository } from '../repositories/oauth-client.repository.ts';
|
|
7
|
+
import type { OAuthCodeRepository } from '../repositories/oauth-code.repository.ts';
|
|
8
|
+
import type { PasswordResetRepository } from '../repositories/password-reset.repository.ts';
|
|
9
|
+
import type { PendingOAuthRegistrationRepository } from '../repositories/pending-oauth-registration.repository.ts';
|
|
10
|
+
import type { RevokedTokenRepository } from '../repositories/revoked-token.repository.ts';
|
|
11
|
+
import type { TermsRepository } from '../repositories/terms.repository.ts';
|
|
12
|
+
import type { TermsContentRepository } from '../repositories/terms-content.repository.ts';
|
|
13
|
+
import type { UserRepository } from '../repositories/user.repository.ts';
|
|
14
|
+
import type { UserConsentRepository } from '../repositories/user-consent.repository.ts';
|
|
15
|
+
import type { UserOAuthRepository } from '../repositories/user-oauth.repository.ts';
|
|
16
|
+
import type { UserPasskeyRepository } from '../repositories/user-passkey.repository.ts';
|
|
17
|
+
import type { UserTermsConsentRepository } from '../repositories/user-terms-consent.repository.ts';
|
|
18
|
+
import type { UserTotpRepository } from '../repositories/user-totp.repository.ts';
|
|
19
|
+
import type { UserTotpRecoveryCodeRepository } from '../repositories/user-totp-recovery-code.repository.ts';
|
|
20
|
+
export declare class MikroService {
|
|
21
|
+
readonly orm: MikroORM;
|
|
22
|
+
readonly em: MikroORM['em'];
|
|
23
|
+
readonly user: UserRepository;
|
|
24
|
+
readonly userOAuth: UserOAuthRepository;
|
|
25
|
+
readonly oauthCode: OAuthCodeRepository;
|
|
26
|
+
readonly oauthClient: OAuthClientRepository;
|
|
27
|
+
readonly emailVerification: EmailVerificationRepository;
|
|
28
|
+
readonly passwordReset: PasswordResetRepository;
|
|
29
|
+
readonly pendingOAuthRegistration: PendingOAuthRegistrationRepository;
|
|
30
|
+
readonly jwtKey: JwtKeyRepository;
|
|
31
|
+
readonly revokedToken: RevokedTokenRepository;
|
|
32
|
+
readonly userConsent: UserConsentRepository;
|
|
33
|
+
readonly userTermsConsent: UserTermsConsentRepository;
|
|
34
|
+
readonly userTotp: UserTotpRepository;
|
|
35
|
+
readonly userTotpRecoveryCode: UserTotpRecoveryCodeRepository;
|
|
36
|
+
readonly userPasskey: UserPasskeyRepository;
|
|
37
|
+
readonly terms: TermsRepository;
|
|
38
|
+
readonly termsContent: TermsContentRepository;
|
|
39
|
+
private constructor();
|
|
40
|
+
static initialize(config: TinyAuthRuntimeConfig, logger: Logger): Promise<MikroService>;
|
|
41
|
+
close(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=mikro.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mikro.service.d.ts","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAiB3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0DAA0D,CAAC;AACnH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AAE5G,qBAAa,YAAY;IACvB,SAAgB,GAAG,EAAE,QAAQ,CAAC;IAC9B,SAAgB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,SAAgB,IAAI,EAAE,cAAc,CAAC;IACrC,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAC/C,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAC/C,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,iBAAiB,EAAE,2BAA2B,CAAC;IAC/D,SAAgB,aAAa,EAAE,uBAAuB,CAAC;IACvD,SAAgB,wBAAwB,EAAE,kCAAkC,CAAC;IAC7E,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IACrD,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,gBAAgB,EAAE,0BAA0B,CAAC;IAC7D,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C,SAAgB,oBAAoB,EAAE,8BAA8B,CAAC;IACrE,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,KAAK,EAAE,eAAe,CAAC;IACvC,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IAErD,OAAO;WA2Ba,UAAU,CAC5B,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IAUX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { MikroORM } from '@mikro-orm/core';
|
|
2
|
+
import { EmailVerificationEntitySchema } from "../entities/email-verification.entity.js";
|
|
3
|
+
import { JwtKeyEntity } from "../entities/jwt-key.entity.js";
|
|
4
|
+
import { OAuthClientEntitySchema } from "../entities/oauth-client.entity.js";
|
|
5
|
+
import { OAuthCodeEntitySchema } from "../entities/oauth-code.entity.js";
|
|
6
|
+
import { PasswordResetEntitySchema } from "../entities/password-reset.entity.js";
|
|
7
|
+
import { PendingOAuthRegistrationEntitySchema } from "../entities/pending-oauth-registration.entity.js";
|
|
8
|
+
import { RevokedTokenEntitySchema } from "../entities/revoked-token.entity.js";
|
|
9
|
+
import { TermsEntitySchema } from "../entities/terms.entity.js";
|
|
10
|
+
import { TermsContentEntitySchema } from "../entities/terms-content.entity.js";
|
|
11
|
+
import { UserEntity } from "../entities/user.entity.js";
|
|
12
|
+
import { UserConsentEntity } from "../entities/user-consent.entity.js";
|
|
13
|
+
import { UserOAuthEntitySchema } from "../entities/user-oauth.entity.js";
|
|
14
|
+
import { UserPasskeyEntitySchema } from "../entities/user-passkey.entity.js";
|
|
15
|
+
import { UserTermsConsentEntity } from "../entities/user-terms-consent.entity.js";
|
|
16
|
+
import { UserTotpEntitySchema } from "../entities/user-totp.entity.js";
|
|
17
|
+
import { UserTotpRecoveryCodeEntitySchema } from "../entities/user-totp-recovery-code.entity.js";
|
|
18
|
+
export class MikroService {
|
|
19
|
+
orm;
|
|
20
|
+
em;
|
|
21
|
+
user;
|
|
22
|
+
userOAuth;
|
|
23
|
+
oauthCode;
|
|
24
|
+
oauthClient;
|
|
25
|
+
emailVerification;
|
|
26
|
+
passwordReset;
|
|
27
|
+
pendingOAuthRegistration;
|
|
28
|
+
jwtKey;
|
|
29
|
+
revokedToken;
|
|
30
|
+
userConsent;
|
|
31
|
+
userTermsConsent;
|
|
32
|
+
userTotp;
|
|
33
|
+
userTotpRecoveryCode;
|
|
34
|
+
userPasskey;
|
|
35
|
+
terms;
|
|
36
|
+
termsContent;
|
|
37
|
+
constructor(orm) {
|
|
38
|
+
this.orm = orm;
|
|
39
|
+
this.em = orm.em;
|
|
40
|
+
this.user = orm.em.getRepository(UserEntity);
|
|
41
|
+
this.userOAuth = orm.em.getRepository(UserOAuthEntitySchema);
|
|
42
|
+
this.oauthCode = orm.em.getRepository(OAuthCodeEntitySchema);
|
|
43
|
+
this.oauthClient = orm.em.getRepository(OAuthClientEntitySchema);
|
|
44
|
+
this.emailVerification = orm.em.getRepository(EmailVerificationEntitySchema);
|
|
45
|
+
this.passwordReset = orm.em.getRepository(PasswordResetEntitySchema);
|
|
46
|
+
this.pendingOAuthRegistration = orm.em.getRepository(PendingOAuthRegistrationEntitySchema);
|
|
47
|
+
this.jwtKey = orm.em.getRepository(JwtKeyEntity);
|
|
48
|
+
this.revokedToken = orm.em.getRepository(RevokedTokenEntitySchema);
|
|
49
|
+
this.userConsent = orm.em.getRepository(UserConsentEntity);
|
|
50
|
+
this.userTermsConsent = orm.em.getRepository(UserTermsConsentEntity);
|
|
51
|
+
this.userTotp = orm.em.getRepository(UserTotpEntitySchema);
|
|
52
|
+
this.userTotpRecoveryCode = orm.em.getRepository(UserTotpRecoveryCodeEntitySchema);
|
|
53
|
+
this.userPasskey = orm.em.getRepository(UserPasskeyEntitySchema);
|
|
54
|
+
this.terms = orm.em.getRepository(TermsEntitySchema);
|
|
55
|
+
this.termsContent = orm.em.getRepository(TermsContentEntitySchema);
|
|
56
|
+
}
|
|
57
|
+
static async initialize(config, logger) {
|
|
58
|
+
logger.info('Initializing MikroORM...');
|
|
59
|
+
const orm = await MikroORM.init(await config.database.getMikroOrmOptions());
|
|
60
|
+
await config.database.initialize(orm);
|
|
61
|
+
logger.info('MikroORM initialized');
|
|
62
|
+
return new MikroService(orm);
|
|
63
|
+
}
|
|
64
|
+
async close() {
|
|
65
|
+
await this.orm.close();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=mikro.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mikro.service.js","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,oCAAoC,EAAE,MAAM,kDAAkD,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AAoBjG,MAAM,OAAO,YAAY;IACP,GAAG,CAAW;IACd,EAAE,CAAiB;IACnB,IAAI,CAAiB;IACrB,SAAS,CAAsB;IAC/B,SAAS,CAAsB;IAC/B,WAAW,CAAwB;IACnC,iBAAiB,CAA8B;IAC/C,aAAa,CAA0B;IACvC,wBAAwB,CAAqC;IAC7D,MAAM,CAAmB;IACzB,YAAY,CAAyB;IACrC,WAAW,CAAwB;IACnC,gBAAgB,CAA6B;IAC7C,QAAQ,CAAqB;IAC7B,oBAAoB,CAAiC;IACrD,WAAW,CAAwB;IACnC,KAAK,CAAkB;IACvB,YAAY,CAAyB;IAErD,YAAoB,GAAa;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAC3C,6BAA6B,CAC9B,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACrE,IAAI,CAAC,wBAAwB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAClD,oCAAoC,CACrC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAC9C,gCAAgC,CACjC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAC5B,MAA6B,EAC7B,MAAc;QAEd,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC5E,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEpC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
|