@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,12 @@
|
|
|
1
|
+
import type { FrontendConfig } from '../config/frontend.ts';
|
|
2
|
+
import type { HtmlVariables } from '../interpolate-html.ts';
|
|
3
|
+
export interface CloudflareAssetsBinding {
|
|
4
|
+
fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
|
5
|
+
}
|
|
6
|
+
export interface CreateCloudflareAssetsHandlerOptions {
|
|
7
|
+
assets: CloudflareAssetsBinding;
|
|
8
|
+
htmlVariables?: HtmlVariables | undefined;
|
|
9
|
+
onResponse?: ((response: Response) => Response | Promise<Response>) | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare function createCloudflareAssetsHandler(options: CreateCloudflareAssetsHandlerOptions): FrontendConfig;
|
|
12
|
+
//# sourceMappingURL=cloudflare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../../src/lib/frontend/cloudflare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAM5D,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,oCAAoC;IACnD,MAAM,EAAE,uBAAuB,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,EACP,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GACtD,SAAS,CAAC;CACf;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oCAAoC,GAC5C,cAAc,CA0ChB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { interpolateHtmlResponse, resolveHtmlVariables, } from "../interpolate-html.js";
|
|
2
|
+
export function createCloudflareAssetsHandler(options) {
|
|
3
|
+
return ({ branding, server }) => {
|
|
4
|
+
const htmlVariables = resolveHtmlVariables({
|
|
5
|
+
branding,
|
|
6
|
+
server,
|
|
7
|
+
overrides: options.htmlVariables,
|
|
8
|
+
});
|
|
9
|
+
async function finalizeResponse(response) {
|
|
10
|
+
if (options.onResponse) {
|
|
11
|
+
return options.onResponse(response);
|
|
12
|
+
}
|
|
13
|
+
return response;
|
|
14
|
+
}
|
|
15
|
+
return async (c) => {
|
|
16
|
+
const pathname = new URL(c.req.url).pathname;
|
|
17
|
+
const response = await options.assets.fetch(c.req.raw);
|
|
18
|
+
const isHtml = response.headers
|
|
19
|
+
.get('content-type')
|
|
20
|
+
?.toLowerCase()
|
|
21
|
+
.includes('text/html') ?? false;
|
|
22
|
+
if (pathname !== '/index.html' &&
|
|
23
|
+
/\/[^/]+\.[^/]+$/.test(pathname) &&
|
|
24
|
+
isHtml) {
|
|
25
|
+
return finalizeResponse(c.text('Not Found', 404));
|
|
26
|
+
}
|
|
27
|
+
if (c.req.method !== 'GET') {
|
|
28
|
+
return finalizeResponse(response);
|
|
29
|
+
}
|
|
30
|
+
return finalizeResponse(await interpolateHtmlResponse(response, htmlVariables));
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=cloudflare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../../src/lib/frontend/cloudflare.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAchC,MAAM,UAAU,6BAA6B,CAC3C,OAA6C;IAE7C,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,MAAM,aAAa,GAAG,oBAAoB,CAAC;YACzC,QAAQ;YACR,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,aAAa;SACjC,CAAC,CAAC;QAEH,KAAK,UAAU,gBAAgB,CAAC,QAAkB;YAChD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,KAAK,EAAE,CAAC,EAAqB,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,MAAM,GACV,QAAQ,CAAC,OAAO;iBACb,GAAG,CAAC,cAAc,CAAC;gBACpB,EAAE,WAAW,EAAE;iBACd,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;YAEpC,IACE,QAAQ,KAAK,aAAa;gBAC1B,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAChC,MAAM,EACN,CAAC;gBACD,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAED,OAAO,gBAAgB,CACrB,MAAM,uBAAuB,CAAC,QAAQ,EAAE,aAAa,CAAC,CACvD,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FrontendConfig } from '../config/frontend.ts';
|
|
2
|
+
import type { HtmlVariables } from '../interpolate-html.ts';
|
|
3
|
+
export interface CreateProxyHandlerOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Upstream server URL to proxy requests to.
|
|
6
|
+
* Example: 'http://localhost:8081'
|
|
7
|
+
*/
|
|
8
|
+
upstream: string;
|
|
9
|
+
/**
|
|
10
|
+
* HTML variable map for `{{VAR}}` interpolation in HTML responses.
|
|
11
|
+
*/
|
|
12
|
+
htmlVariables?: HtmlVariables | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Optional response interceptor.
|
|
15
|
+
* Called with the (already-interpolated) Response before it is
|
|
16
|
+
* returned. Return a modified Response or the original as-is.
|
|
17
|
+
*/
|
|
18
|
+
onResponse?: ((response: Response) => Response | Promise<Response>) | undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a FrontendConfig that proxies requests to an upstream server.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createProxyHandler(options: CreateProxyHandlerOptions): FrontendConfig;
|
|
24
|
+
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/lib/frontend/proxy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAM5D,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C;;;;OAIG;IACH,UAAU,CAAC,EACP,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GACtD,SAAS,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,cAAc,CA0ChB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { proxy } from 'hono/proxy';
|
|
2
|
+
import { interpolateHtmlResponse, resolveHtmlVariables, } from "../interpolate-html.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create a FrontendConfig that proxies requests to an upstream server.
|
|
5
|
+
*/
|
|
6
|
+
export function createProxyHandler(options) {
|
|
7
|
+
return ({ branding, server }) => {
|
|
8
|
+
const htmlVariables = resolveHtmlVariables({
|
|
9
|
+
branding,
|
|
10
|
+
server,
|
|
11
|
+
overrides: options.htmlVariables,
|
|
12
|
+
});
|
|
13
|
+
function buildTargetUrl(requestUrl) {
|
|
14
|
+
const upstreamUrl = new URL(options.upstream);
|
|
15
|
+
const incomingUrl = new URL(requestUrl);
|
|
16
|
+
const upstreamPath = upstreamUrl.pathname.endsWith('/')
|
|
17
|
+
? upstreamUrl.pathname.slice(0, -1)
|
|
18
|
+
: upstreamUrl.pathname;
|
|
19
|
+
upstreamUrl.pathname = `${upstreamPath}${incomingUrl.pathname}`;
|
|
20
|
+
upstreamUrl.search = incomingUrl.search;
|
|
21
|
+
return upstreamUrl.toString();
|
|
22
|
+
}
|
|
23
|
+
async function finalizeResponse(response) {
|
|
24
|
+
const interpolated = await interpolateHtmlResponse(response, htmlVariables);
|
|
25
|
+
if (options.onResponse) {
|
|
26
|
+
return options.onResponse(interpolated);
|
|
27
|
+
}
|
|
28
|
+
return interpolated;
|
|
29
|
+
}
|
|
30
|
+
return async (c) => {
|
|
31
|
+
const response = await proxy(buildTargetUrl(c.req.url), {
|
|
32
|
+
raw: c.req.raw,
|
|
33
|
+
});
|
|
34
|
+
return finalizeResponse(response);
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/lib/frontend/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAsBhC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAkC;IAElC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,MAAM,aAAa,GAAG,oBAAoB,CAAC;YACzC,QAAQ;YACR,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,aAAa;SACjC,CAAC,CAAC;QAEH,SAAS,cAAc,CAAC,UAAkB;YACxC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACrD,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;YAEzB,WAAW,CAAC,QAAQ,GAAG,GAAG,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YAChE,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAExC,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,UAAU,gBAAgB,CAAC,QAAkB;YAChD,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAChD,QAAQ,EACR,aAAa,CACd,CAAC;YAEF,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC1C,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,KAAK,EAAE,CAAC,EAAqB,EAAE;YACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACtD,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG;aACf,CAAC,CAAC;YAEH,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { FrontendConfig } from '../config/frontend.ts';
|
|
2
|
+
import type { HtmlVariables } from '../interpolate-html.ts';
|
|
3
|
+
export interface CreateStaticHandlerOptions {
|
|
4
|
+
/**
|
|
5
|
+
* HTML variable map for `{{VAR}}` interpolation in HTML responses.
|
|
6
|
+
*/
|
|
7
|
+
htmlVariables?: HtmlVariables | undefined;
|
|
8
|
+
publicPath: string;
|
|
9
|
+
/**
|
|
10
|
+
* Optional response interceptor.
|
|
11
|
+
* Called with the (already-interpolated) Response before it is
|
|
12
|
+
* returned. Return a modified Response or the original as-is.
|
|
13
|
+
*/
|
|
14
|
+
onResponse?: ((response: Response) => Response | Promise<Response>) | undefined;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a FrontendConfig that serves static files from a directory.
|
|
18
|
+
* Supports HTML variable interpolation and SPA fallback to index.html.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createStaticHandler(options: CreateStaticHandlerOptions): FrontendConfig;
|
|
21
|
+
//# sourceMappingURL=static.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../../src/lib/frontend/static.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EACP,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GACtD,SAAS,CAAC;CACf;AAOD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,cAAc,CAwHhB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { getMimeType } from 'hono/utils/mime';
|
|
4
|
+
import { interpolateHtml, resolveHtmlVariables } from "../interpolate-html.js";
|
|
5
|
+
/**
|
|
6
|
+
* Create a FrontendConfig that serves static files from a directory.
|
|
7
|
+
* Supports HTML variable interpolation and SPA fallback to index.html.
|
|
8
|
+
*/
|
|
9
|
+
export function createStaticHandler(options) {
|
|
10
|
+
return ({ branding, server }) => {
|
|
11
|
+
const publicPath = path.resolve(options.publicPath);
|
|
12
|
+
const rootIndexPath = path.join(publicPath, 'index.html');
|
|
13
|
+
const htmlVariables = resolveHtmlVariables({
|
|
14
|
+
branding,
|
|
15
|
+
server,
|
|
16
|
+
overrides: options.htmlVariables,
|
|
17
|
+
});
|
|
18
|
+
const htmlCache = new Map();
|
|
19
|
+
async function statIfExists(targetPath) {
|
|
20
|
+
try {
|
|
21
|
+
return await fs.promises.stat(targetPath);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function readInterpolatedHtml(absolutePath) {
|
|
28
|
+
const cached = htmlCache.get(absolutePath);
|
|
29
|
+
if (cached !== undefined) {
|
|
30
|
+
return cached;
|
|
31
|
+
}
|
|
32
|
+
const raw = await fs.promises.readFile(absolutePath, 'utf-8');
|
|
33
|
+
const result = interpolateHtml(raw, htmlVariables);
|
|
34
|
+
htmlCache.set(absolutePath, result);
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
function isSafePath(resolved) {
|
|
38
|
+
return (resolved === publicPath ||
|
|
39
|
+
resolved.startsWith(`${publicPath}${path.sep}`));
|
|
40
|
+
}
|
|
41
|
+
async function applyOnResponse(response) {
|
|
42
|
+
if (options.onResponse) {
|
|
43
|
+
return options.onResponse(response);
|
|
44
|
+
}
|
|
45
|
+
return response;
|
|
46
|
+
}
|
|
47
|
+
async function serveHtml(c, absolutePath) {
|
|
48
|
+
const html = await readInterpolatedHtml(absolutePath);
|
|
49
|
+
return applyOnResponse(await c.html(html));
|
|
50
|
+
}
|
|
51
|
+
async function serveFile(absolutePath) {
|
|
52
|
+
const content = await fs.promises.readFile(absolutePath);
|
|
53
|
+
const mimeType = getMimeType(absolutePath) ?? 'application/octet-stream';
|
|
54
|
+
return applyOnResponse(new Response(content, {
|
|
55
|
+
headers: { 'Content-Type': mimeType },
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
async function notFound(c) {
|
|
59
|
+
return applyOnResponse(await c.json({ error: 'Not Found' }, 404));
|
|
60
|
+
}
|
|
61
|
+
async function serveSpaFallback(c) {
|
|
62
|
+
try {
|
|
63
|
+
return await serveHtml(c, rootIndexPath);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return notFound(c);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function resolveTarget(urlPath) {
|
|
70
|
+
const resolved = path.resolve(publicPath, `.${urlPath}`);
|
|
71
|
+
if (!isSafePath(resolved)) {
|
|
72
|
+
return { kind: 'spa' };
|
|
73
|
+
}
|
|
74
|
+
const stats = await statIfExists(resolved);
|
|
75
|
+
if (!stats) {
|
|
76
|
+
return { kind: 'spa' };
|
|
77
|
+
}
|
|
78
|
+
if (stats.isFile()) {
|
|
79
|
+
return resolved.endsWith('.html')
|
|
80
|
+
? { kind: 'html', absolutePath: resolved }
|
|
81
|
+
: { kind: 'file', absolutePath: resolved };
|
|
82
|
+
}
|
|
83
|
+
if (stats.isDirectory()) {
|
|
84
|
+
const indexPath = path.join(resolved, 'index.html');
|
|
85
|
+
const indexStats = await statIfExists(indexPath);
|
|
86
|
+
if (indexStats?.isFile()) {
|
|
87
|
+
return { kind: 'html', absolutePath: indexPath };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { kind: 'spa' };
|
|
91
|
+
}
|
|
92
|
+
return async (c) => {
|
|
93
|
+
if (c.req.method !== 'GET' && c.req.method !== 'HEAD') {
|
|
94
|
+
return notFound(c);
|
|
95
|
+
}
|
|
96
|
+
const target = await resolveTarget(c.req.path);
|
|
97
|
+
switch (target.kind) {
|
|
98
|
+
case 'html':
|
|
99
|
+
return serveHtml(c, target.absolutePath);
|
|
100
|
+
case 'file':
|
|
101
|
+
return serveFile(target.absolutePath);
|
|
102
|
+
case 'spa':
|
|
103
|
+
return serveSpaFallback(c);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=static.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../../src/lib/frontend/static.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { BrandingConfig } from './config/branding.ts';
|
|
2
|
+
import type { ServerConfig } from './config/server.ts';
|
|
3
|
+
export type HtmlVariables = Record<string, string>;
|
|
4
|
+
export declare const DEFAULT_HTML_VARIABLES: {
|
|
5
|
+
readonly TITLE: "Tinyrack";
|
|
6
|
+
readonly DESCRIPTION: "OIDC Provider for everyone";
|
|
7
|
+
readonly FAVICON_URL: "/vite.svg";
|
|
8
|
+
readonly COLOR_SCHEME: "light dark";
|
|
9
|
+
readonly THEME_COLOR: "#570df8";
|
|
10
|
+
readonly OG_IMAGE_URL: "";
|
|
11
|
+
readonly OG_URL: "";
|
|
12
|
+
readonly APPLE_TOUCH_ICON_URL: "/vite.svg";
|
|
13
|
+
};
|
|
14
|
+
export type BuiltInHtmlVariables = typeof DEFAULT_HTML_VARIABLES;
|
|
15
|
+
export type BuiltInHtmlVariableKey = keyof BuiltInHtmlVariables;
|
|
16
|
+
export interface ResolveHtmlVariablesOptions {
|
|
17
|
+
branding?: BrandingConfig | undefined;
|
|
18
|
+
server?: ServerConfig | undefined;
|
|
19
|
+
overrides?: HtmlVariables | undefined;
|
|
20
|
+
}
|
|
21
|
+
export declare function resolveHtmlVariables(options: ResolveHtmlVariablesOptions): HtmlVariables;
|
|
22
|
+
/**
|
|
23
|
+
* Replace {{KEY}} placeholders in HTML with corresponding variable values.
|
|
24
|
+
* Only matches keys that follow identifier naming rules
|
|
25
|
+
* (start with a letter or underscore, followed by alphanumerics or underscores).
|
|
26
|
+
* Unmatched placeholders are left as-is.
|
|
27
|
+
*/
|
|
28
|
+
export declare function interpolateHtml(html: string, variables: Readonly<HtmlVariables>): string;
|
|
29
|
+
/**
|
|
30
|
+
* Interpolate HTML variables in a Response if its content-type is text/html.
|
|
31
|
+
* Non-HTML responses are returned unchanged.
|
|
32
|
+
*/
|
|
33
|
+
export declare function interpolateHtmlResponse(response: Response, variables: Readonly<HtmlVariables>): Promise<Response>;
|
|
34
|
+
//# sourceMappingURL=interpolate-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolate-html.d.ts","sourceRoot":"","sources":["../../src/lib/interpolate-html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAKnD,eAAO,MAAM,sBAAsB;;;;;;;;;CASD,CAAC;AAEnC,MAAM,MAAM,oBAAoB,GAAG,OAAO,sBAAsB,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,MAAM,oBAAoB,CAAC;AAEhE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACvC;AAwBD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,aAAa,CAMf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,GACjC,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,CAkBnB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const HTML_PLACEHOLDER_PATTERN = /\{\{([A-Za-z_][A-Za-z0-9_]*)\}\}/g;
|
|
2
|
+
const TEXT_ENCODER = new TextEncoder();
|
|
3
|
+
export const DEFAULT_HTML_VARIABLES = {
|
|
4
|
+
TITLE: 'Tinyrack',
|
|
5
|
+
DESCRIPTION: 'OIDC Provider for everyone',
|
|
6
|
+
FAVICON_URL: '/vite.svg',
|
|
7
|
+
COLOR_SCHEME: 'light dark',
|
|
8
|
+
THEME_COLOR: '#570df8',
|
|
9
|
+
OG_IMAGE_URL: '',
|
|
10
|
+
OG_URL: '',
|
|
11
|
+
APPLE_TOUCH_ICON_URL: '/vite.svg',
|
|
12
|
+
};
|
|
13
|
+
function deriveHtmlVariablesFromRuntime(options) {
|
|
14
|
+
const derived = {};
|
|
15
|
+
if (options.branding) {
|
|
16
|
+
const { theme_mode, icon_url } = options.branding;
|
|
17
|
+
derived['COLOR_SCHEME'] =
|
|
18
|
+
theme_mode === 'system' ? 'light dark' : theme_mode;
|
|
19
|
+
if (icon_url) {
|
|
20
|
+
derived['FAVICON_URL'] = icon_url;
|
|
21
|
+
derived['APPLE_TOUCH_ICON_URL'] = icon_url;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (options.server?.public_origin) {
|
|
25
|
+
derived['OG_URL'] = options.server.public_origin;
|
|
26
|
+
}
|
|
27
|
+
return derived;
|
|
28
|
+
}
|
|
29
|
+
export function resolveHtmlVariables(options) {
|
|
30
|
+
return {
|
|
31
|
+
...DEFAULT_HTML_VARIABLES,
|
|
32
|
+
...deriveHtmlVariablesFromRuntime(options),
|
|
33
|
+
...options.overrides,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Replace {{KEY}} placeholders in HTML with corresponding variable values.
|
|
38
|
+
* Only matches keys that follow identifier naming rules
|
|
39
|
+
* (start with a letter or underscore, followed by alphanumerics or underscores).
|
|
40
|
+
* Unmatched placeholders are left as-is.
|
|
41
|
+
*/
|
|
42
|
+
export function interpolateHtml(html, variables) {
|
|
43
|
+
return html.replace(HTML_PLACEHOLDER_PATTERN, (match, key) => variables[key] ?? match);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Interpolate HTML variables in a Response if its content-type is text/html.
|
|
47
|
+
* Non-HTML responses are returned unchanged.
|
|
48
|
+
*/
|
|
49
|
+
export async function interpolateHtmlResponse(response, variables) {
|
|
50
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
51
|
+
if (!contentType.toLowerCase().includes('text/html')) {
|
|
52
|
+
return response;
|
|
53
|
+
}
|
|
54
|
+
const interpolated = interpolateHtml(await response.text(), variables);
|
|
55
|
+
const headers = new Headers(response.headers);
|
|
56
|
+
headers.set('content-length', String(TEXT_ENCODER.encode(interpolated).byteLength));
|
|
57
|
+
return new Response(interpolated, {
|
|
58
|
+
status: response.status,
|
|
59
|
+
statusText: response.statusText,
|
|
60
|
+
headers,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=interpolate-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolate-html.js","sourceRoot":"","sources":["../../src/lib/interpolate-html.ts"],"names":[],"mappings":"AAKA,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;AACrE,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;AAEvC,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,YAAY;IAC1B,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE,EAAE;IACV,oBAAoB,EAAE,WAAW;CACD,CAAC;AAWnC,SAAS,8BAA8B,CACrC,OAAoC;IAEpC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClD,OAAO,CAAC,cAAc,CAAC;YACrB,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;QACtD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;YAClC,OAAO,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;QAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;IACnD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAoC;IAEpC,OAAO;QACL,GAAG,sBAAsB;QACzB,GAAG,8BAA8B,CAAC,OAAO,CAAC;QAC1C,GAAG,OAAO,CAAC,SAAS;KACrB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,SAAkC;IAElC,OAAO,IAAI,CAAC,OAAO,CACjB,wBAAwB,EACxB,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,CAChD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAkB,EAClB,SAAkC;IAElC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CACT,gBAAgB,EAChB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CACrD,CAAC;IAEF,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE;QAChC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IP address utilities for validating and matching IP addresses against CIDR ranges.
|
|
3
|
+
* Supports both IPv4 and IPv6 addresses.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Parses an IPv4 address string into a 32-bit integer.
|
|
7
|
+
* @param ip - IPv4 address string (e.g., "192.168.1.1")
|
|
8
|
+
* @returns 32-bit integer representation, or null if invalid
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseIPv4(ip: string): number | null;
|
|
11
|
+
/**
|
|
12
|
+
* Parses an IPv6 address string into a BigInt.
|
|
13
|
+
* Supports full and compressed (::) notation.
|
|
14
|
+
* @param ip - IPv6 address string (e.g., "2001:db8::1")
|
|
15
|
+
* @returns BigInt representation, or null if invalid
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseIPv6(ip: string): bigint | null;
|
|
18
|
+
/**
|
|
19
|
+
* Checks if an IP address is an IPv4 address.
|
|
20
|
+
* @param ip - IP address string
|
|
21
|
+
* @returns true if the address is IPv4
|
|
22
|
+
*/
|
|
23
|
+
export declare function isIPv4(ip: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Checks if an IP address is an IPv6 address.
|
|
26
|
+
* @param ip - IP address string
|
|
27
|
+
* @returns true if the address is IPv6
|
|
28
|
+
*/
|
|
29
|
+
export declare function isIPv6(ip: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Checks if an IPv4 address is within a CIDR range.
|
|
32
|
+
* @param ip - IPv4 address to check
|
|
33
|
+
* @param cidr - CIDR notation (e.g., "10.0.0.0/8")
|
|
34
|
+
* @returns true if the IP is within the range
|
|
35
|
+
*/
|
|
36
|
+
export declare function isIPv4InCIDR(ip: string, cidr: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Checks if an IPv6 address is within a CIDR range.
|
|
39
|
+
* @param ip - IPv6 address to check
|
|
40
|
+
* @param cidr - CIDR notation (e.g., "2001:db8::/32")
|
|
41
|
+
* @returns true if the IP is within the range
|
|
42
|
+
*/
|
|
43
|
+
export declare function isIPv6InCIDR(ip: string, cidr: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if an IP address matches a given pattern.
|
|
46
|
+
* The pattern can be:
|
|
47
|
+
* - A single IP address (e.g., "192.168.1.1")
|
|
48
|
+
* - A CIDR range (e.g., "10.0.0.0/8")
|
|
49
|
+
* @param ip - IP address to check
|
|
50
|
+
* @param pattern - Pattern to match against
|
|
51
|
+
* @returns true if the IP matches the pattern
|
|
52
|
+
*/
|
|
53
|
+
export declare function isIPInRange(ip: string, pattern: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Checks if an IP address is trusted based on trust_proxy configuration.
|
|
56
|
+
* @param ip - IP address to check
|
|
57
|
+
* @param trustProxy - Trust proxy configuration value
|
|
58
|
+
* @returns true if the IP should be trusted
|
|
59
|
+
*/
|
|
60
|
+
export declare function isTrustedProxy(ip: string, trustProxy: boolean | string | string[] | number): boolean;
|
|
61
|
+
//# sourceMappingURL=ip-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ip-utils.d.ts","sourceRoot":"","sources":["../../src/lib/ip-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBnD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyDnD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAsB9D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CA2B9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CA2BhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAC/C,OAAO,CA2BT"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IP address utilities for validating and matching IP addresses against CIDR ranges.
|
|
3
|
+
* Supports both IPv4 and IPv6 addresses.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Parses an IPv4 address string into a 32-bit integer.
|
|
7
|
+
* @param ip - IPv4 address string (e.g., "192.168.1.1")
|
|
8
|
+
* @returns 32-bit integer representation, or null if invalid
|
|
9
|
+
*/
|
|
10
|
+
export function parseIPv4(ip) {
|
|
11
|
+
const parts = ip.split('.');
|
|
12
|
+
if (parts.length !== 4) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
let result = 0;
|
|
16
|
+
for (const part of parts) {
|
|
17
|
+
const num = Number.parseInt(part, 10);
|
|
18
|
+
if (Number.isNaN(num) || num < 0 || num > 255) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
result = (result << 8) | num;
|
|
22
|
+
}
|
|
23
|
+
// Convert to unsigned 32-bit integer
|
|
24
|
+
return result >>> 0;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parses an IPv6 address string into a BigInt.
|
|
28
|
+
* Supports full and compressed (::) notation.
|
|
29
|
+
* @param ip - IPv6 address string (e.g., "2001:db8::1")
|
|
30
|
+
* @returns BigInt representation, or null if invalid
|
|
31
|
+
*/
|
|
32
|
+
export function parseIPv6(ip) {
|
|
33
|
+
// Handle IPv4-mapped IPv6 addresses (::ffff:192.168.1.1)
|
|
34
|
+
const ipv4MappedMatch = ip.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/i);
|
|
35
|
+
if (ipv4MappedMatch) {
|
|
36
|
+
const ipv4Part = ipv4MappedMatch[1];
|
|
37
|
+
if (ipv4Part === undefined) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const ipv4 = parseIPv4(ipv4Part);
|
|
41
|
+
if (ipv4 === null) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return BigInt('0xffff00000000') | BigInt(ipv4);
|
|
45
|
+
}
|
|
46
|
+
// Reject multiple :: (only one :: is allowed)
|
|
47
|
+
const doubleColonCount = (ip.match(/::/g) ?? []).length;
|
|
48
|
+
if (doubleColonCount > 1) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
// Reject ::: (triple colon is invalid)
|
|
52
|
+
if (ip.includes(':::')) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
let parts = ip.split(':');
|
|
56
|
+
// Handle :: compression
|
|
57
|
+
const doubleColonIndex = ip.indexOf('::');
|
|
58
|
+
if (doubleColonIndex !== -1) {
|
|
59
|
+
const left = ip.slice(0, doubleColonIndex).split(':').filter(Boolean);
|
|
60
|
+
const right = ip
|
|
61
|
+
.slice(doubleColonIndex + 2)
|
|
62
|
+
.split(':')
|
|
63
|
+
.filter(Boolean);
|
|
64
|
+
const missing = 8 - left.length - right.length;
|
|
65
|
+
if (missing < 0) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
parts = [...left, ...Array(missing).fill('0'), ...right];
|
|
69
|
+
}
|
|
70
|
+
if (parts.length !== 8) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
let result = BigInt(0);
|
|
74
|
+
for (const part of parts) {
|
|
75
|
+
const num = Number.parseInt(part, 16);
|
|
76
|
+
if (Number.isNaN(num) || num < 0 || num > 0xffff) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
result = (result << BigInt(16)) | BigInt(num);
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Checks if an IP address is an IPv4 address.
|
|
85
|
+
* @param ip - IP address string
|
|
86
|
+
* @returns true if the address is IPv4
|
|
87
|
+
*/
|
|
88
|
+
export function isIPv4(ip) {
|
|
89
|
+
return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(ip);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Checks if an IP address is an IPv6 address.
|
|
93
|
+
* @param ip - IP address string
|
|
94
|
+
* @returns true if the address is IPv6
|
|
95
|
+
*/
|
|
96
|
+
export function isIPv6(ip) {
|
|
97
|
+
return ip.includes(':');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Checks if an IPv4 address is within a CIDR range.
|
|
101
|
+
* @param ip - IPv4 address to check
|
|
102
|
+
* @param cidr - CIDR notation (e.g., "10.0.0.0/8")
|
|
103
|
+
* @returns true if the IP is within the range
|
|
104
|
+
*/
|
|
105
|
+
export function isIPv4InCIDR(ip, cidr) {
|
|
106
|
+
const [network, prefixStr] = cidr.split('/');
|
|
107
|
+
if (network === undefined) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const prefix = prefixStr !== undefined ? Number.parseInt(prefixStr, 10) : 32;
|
|
111
|
+
if (Number.isNaN(prefix) || prefix < 0 || prefix > 32) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const ipNum = parseIPv4(ip);
|
|
115
|
+
const networkNum = parseIPv4(network);
|
|
116
|
+
if (ipNum === null || networkNum === null) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// Create mask: all 1s for prefix length, then 0s
|
|
120
|
+
const mask = prefix === 0 ? 0 : (~0 << (32 - prefix)) >>> 0;
|
|
121
|
+
return (ipNum & mask) === (networkNum & mask);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Checks if an IPv6 address is within a CIDR range.
|
|
125
|
+
* @param ip - IPv6 address to check
|
|
126
|
+
* @param cidr - CIDR notation (e.g., "2001:db8::/32")
|
|
127
|
+
* @returns true if the IP is within the range
|
|
128
|
+
*/
|
|
129
|
+
export function isIPv6InCIDR(ip, cidr) {
|
|
130
|
+
const [network, prefixStr] = cidr.split('/');
|
|
131
|
+
if (network === undefined) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
const prefix = prefixStr !== undefined ? Number.parseInt(prefixStr, 10) : 128;
|
|
135
|
+
if (Number.isNaN(prefix) || prefix < 0 || prefix > 128) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
const ipNum = parseIPv6(ip);
|
|
139
|
+
const networkNum = parseIPv6(network);
|
|
140
|
+
if (ipNum === null || networkNum === null) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
// Create mask: all 1s for prefix length, then 0s
|
|
144
|
+
const mask = prefix === 0
|
|
145
|
+
? BigInt(0)
|
|
146
|
+
: (BigInt(1) << BigInt(128)) -
|
|
147
|
+
BigInt(1) -
|
|
148
|
+
((BigInt(1) << BigInt(128 - prefix)) - BigInt(1));
|
|
149
|
+
return (ipNum & mask) === (networkNum & mask);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Checks if an IP address matches a given pattern.
|
|
153
|
+
* The pattern can be:
|
|
154
|
+
* - A single IP address (e.g., "192.168.1.1")
|
|
155
|
+
* - A CIDR range (e.g., "10.0.0.0/8")
|
|
156
|
+
* @param ip - IP address to check
|
|
157
|
+
* @param pattern - Pattern to match against
|
|
158
|
+
* @returns true if the IP matches the pattern
|
|
159
|
+
*/
|
|
160
|
+
export function isIPInRange(ip, pattern) {
|
|
161
|
+
// Normalize IPv4-mapped IPv6 addresses for comparison
|
|
162
|
+
const normalizedIp = ip.startsWith('::ffff:') ? ip.slice(7) : ip;
|
|
163
|
+
const normalizedPattern = pattern.startsWith('::ffff:')
|
|
164
|
+
? pattern.slice(7)
|
|
165
|
+
: pattern;
|
|
166
|
+
const isCIDR = normalizedPattern.includes('/');
|
|
167
|
+
if (isIPv4(normalizedIp)) {
|
|
168
|
+
if (isCIDR) {
|
|
169
|
+
return isIPv4InCIDR(normalizedIp, normalizedPattern);
|
|
170
|
+
}
|
|
171
|
+
return normalizedIp === normalizedPattern;
|
|
172
|
+
}
|
|
173
|
+
if (isIPv6(normalizedIp)) {
|
|
174
|
+
if (isCIDR) {
|
|
175
|
+
return isIPv6InCIDR(normalizedIp, normalizedPattern);
|
|
176
|
+
}
|
|
177
|
+
// For exact match, normalize both addresses
|
|
178
|
+
const ipNum = parseIPv6(normalizedIp);
|
|
179
|
+
const patternNum = parseIPv6(normalizedPattern);
|
|
180
|
+
return ipNum !== null && patternNum !== null && ipNum === patternNum;
|
|
181
|
+
}
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Checks if an IP address is trusted based on trust_proxy configuration.
|
|
186
|
+
* @param ip - IP address to check
|
|
187
|
+
* @param trustProxy - Trust proxy configuration value
|
|
188
|
+
* @returns true if the IP should be trusted
|
|
189
|
+
*/
|
|
190
|
+
export function isTrustedProxy(ip, trustProxy) {
|
|
191
|
+
// true = trust all proxies
|
|
192
|
+
if (trustProxy === true) {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
// false = trust no proxies (direct connection expected)
|
|
196
|
+
if (trustProxy === false) {
|
|
197
|
+
return true; // Allow all requests in direct connection mode
|
|
198
|
+
}
|
|
199
|
+
// number = hop count mode (not IP-based filtering)
|
|
200
|
+
if (typeof trustProxy === 'number') {
|
|
201
|
+
return true; // Allow all requests in hop count mode
|
|
202
|
+
}
|
|
203
|
+
// string = single IP or CIDR
|
|
204
|
+
if (typeof trustProxy === 'string') {
|
|
205
|
+
return isIPInRange(ip, trustProxy);
|
|
206
|
+
}
|
|
207
|
+
// array = multiple IPs or CIDRs
|
|
208
|
+
if (Array.isArray(trustProxy)) {
|
|
209
|
+
return trustProxy.some((pattern) => isIPInRange(ip, pattern));
|
|
210
|
+
}
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=ip-utils.js.map
|