@sirketio/auth 0.0.1
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/dist/_virtual/_rolldown/runtime.mjs +36 -0
- package/dist/adapter/index.d.mts +4 -0
- package/dist/adapter/index.mjs +7 -0
- package/dist/api/index.d.mts +3872 -0
- package/dist/api/index.mjs +206 -0
- package/dist/api/index.mjs.map +1 -0
- package/dist/api/middlewares/index.d.mts +1 -0
- package/dist/api/middlewares/index.mjs +3 -0
- package/dist/api/middlewares/origin-check.d.mts +18 -0
- package/dist/api/middlewares/origin-check.mjs +140 -0
- package/dist/api/middlewares/origin-check.mjs.map +1 -0
- package/dist/api/rate-limiter/index.mjs +204 -0
- package/dist/api/rate-limiter/index.mjs.map +1 -0
- package/dist/api/routes/account.d.mts +410 -0
- package/dist/api/routes/account.mjs +493 -0
- package/dist/api/routes/account.mjs.map +1 -0
- package/dist/api/routes/callback.d.mts +31 -0
- package/dist/api/routes/callback.mjs +179 -0
- package/dist/api/routes/callback.mjs.map +1 -0
- package/dist/api/routes/email-verification.d.mts +161 -0
- package/dist/api/routes/email-verification.mjs +299 -0
- package/dist/api/routes/email-verification.mjs.map +1 -0
- package/dist/api/routes/error.d.mts +28 -0
- package/dist/api/routes/error.mjs +386 -0
- package/dist/api/routes/error.mjs.map +1 -0
- package/dist/api/routes/index.d.mts +11 -0
- package/dist/api/routes/index.mjs +13 -0
- package/dist/api/routes/ok.d.mts +36 -0
- package/dist/api/routes/ok.mjs +30 -0
- package/dist/api/routes/ok.mjs.map +1 -0
- package/dist/api/routes/password.d.mts +182 -0
- package/dist/api/routes/password.mjs +198 -0
- package/dist/api/routes/password.mjs.map +1 -0
- package/dist/api/routes/session.d.mts +415 -0
- package/dist/api/routes/session.mjs +483 -0
- package/dist/api/routes/session.mjs.map +1 -0
- package/dist/api/routes/sign-in.d.mts +171 -0
- package/dist/api/routes/sign-in.mjs +263 -0
- package/dist/api/routes/sign-in.mjs.map +1 -0
- package/dist/api/routes/sign-out.d.mts +36 -0
- package/dist/api/routes/sign-out.mjs +33 -0
- package/dist/api/routes/sign-out.mjs.map +1 -0
- package/dist/api/routes/sign-up.d.mts +160 -0
- package/dist/api/routes/sign-up.mjs +227 -0
- package/dist/api/routes/sign-up.mjs.map +1 -0
- package/dist/api/routes/update-user.d.mts +445 -0
- package/dist/api/routes/update-user.mjs +493 -0
- package/dist/api/routes/update-user.mjs.map +1 -0
- package/dist/api/state/oauth.d.mts +18 -0
- package/dist/api/state/oauth.mjs +8 -0
- package/dist/api/state/oauth.mjs.map +1 -0
- package/dist/api/state/should-session-refresh.d.mts +13 -0
- package/dist/api/state/should-session-refresh.mjs +16 -0
- package/dist/api/state/should-session-refresh.mjs.map +1 -0
- package/dist/api/to-auth-endpoints.mjs +197 -0
- package/dist/api/to-auth-endpoints.mjs.map +1 -0
- package/dist/auth/base.mjs +45 -0
- package/dist/auth/base.mjs.map +1 -0
- package/dist/auth/minimal.d.mts +12 -0
- package/dist/auth/minimal.mjs +14 -0
- package/dist/auth/minimal.mjs.map +1 -0
- package/dist/auth/trusted-origins.mjs +31 -0
- package/dist/auth/trusted-origins.mjs.map +1 -0
- package/dist/client/broadcast-channel.d.mts +20 -0
- package/dist/client/broadcast-channel.mjs +46 -0
- package/dist/client/broadcast-channel.mjs.map +1 -0
- package/dist/client/config.mjs +90 -0
- package/dist/client/config.mjs.map +1 -0
- package/dist/client/fetch-plugins.mjs +18 -0
- package/dist/client/fetch-plugins.mjs.map +1 -0
- package/dist/client/focus-manager.d.mts +11 -0
- package/dist/client/focus-manager.mjs +32 -0
- package/dist/client/focus-manager.mjs.map +1 -0
- package/dist/client/index.d.mts +33 -0
- package/dist/client/index.mjs +21 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/client/online-manager.d.mts +12 -0
- package/dist/client/online-manager.mjs +35 -0
- package/dist/client/online-manager.mjs.map +1 -0
- package/dist/client/parser.mjs +73 -0
- package/dist/client/parser.mjs.map +1 -0
- package/dist/client/path-to-object.d.mts +65 -0
- package/dist/client/plugins/index.d.mts +53 -0
- package/dist/client/plugins/index.mjs +30 -0
- package/dist/client/plugins/infer-plugin.d.mts +16 -0
- package/dist/client/plugins/infer-plugin.mjs +11 -0
- package/dist/client/plugins/infer-plugin.mjs.map +1 -0
- package/dist/client/proxy.mjs +79 -0
- package/dist/client/proxy.mjs.map +1 -0
- package/dist/client/query.d.mts +23 -0
- package/dist/client/query.mjs +98 -0
- package/dist/client/query.mjs.map +1 -0
- package/dist/client/react/index.d.mts +128 -0
- package/dist/client/react/index.mjs +24 -0
- package/dist/client/react/index.mjs.map +1 -0
- package/dist/client/react/react-store.d.mts +47 -0
- package/dist/client/react/react-store.mjs +47 -0
- package/dist/client/react/react-store.mjs.map +1 -0
- package/dist/client/session-atom.mjs +29 -0
- package/dist/client/session-atom.mjs.map +1 -0
- package/dist/client/session-refresh.d.mts +28 -0
- package/dist/client/session-refresh.mjs +140 -0
- package/dist/client/session-refresh.mjs.map +1 -0
- package/dist/client/types.d.mts +41 -0
- package/dist/client/vanilla.d.mts +127 -0
- package/dist/client/vanilla.mjs +20 -0
- package/dist/client/vanilla.mjs.map +1 -0
- package/dist/context/create-context.mjs +211 -0
- package/dist/context/create-context.mjs.map +1 -0
- package/dist/context/helpers.mjs +83 -0
- package/dist/context/helpers.mjs.map +1 -0
- package/dist/context/init.mjs +20 -0
- package/dist/context/init.mjs.map +1 -0
- package/dist/cookies/cookie-utils.d.mts +29 -0
- package/dist/cookies/cookie-utils.mjs +105 -0
- package/dist/cookies/cookie-utils.mjs.map +1 -0
- package/dist/cookies/index.d.mts +121 -0
- package/dist/cookies/index.mjs +261 -0
- package/dist/cookies/index.mjs.map +1 -0
- package/dist/cookies/session-store.d.mts +36 -0
- package/dist/cookies/session-store.mjs +200 -0
- package/dist/cookies/session-store.mjs.map +1 -0
- package/dist/crypto/buffer.d.mts +8 -0
- package/dist/crypto/buffer.mjs +18 -0
- package/dist/crypto/buffer.mjs.map +1 -0
- package/dist/crypto/index.d.mts +27 -0
- package/dist/crypto/index.mjs +38 -0
- package/dist/crypto/index.mjs.map +1 -0
- package/dist/crypto/jwt.d.mts +8 -0
- package/dist/crypto/jwt.mjs +95 -0
- package/dist/crypto/jwt.mjs.map +1 -0
- package/dist/crypto/password.d.mts +12 -0
- package/dist/crypto/password.mjs +36 -0
- package/dist/crypto/password.mjs.map +1 -0
- package/dist/crypto/random.d.mts +5 -0
- package/dist/crypto/random.mjs +8 -0
- package/dist/crypto/random.mjs.map +1 -0
- package/dist/db/adapter-base.d.mts +8 -0
- package/dist/db/adapter-base.mjs +19 -0
- package/dist/db/adapter-base.mjs.map +1 -0
- package/dist/db/field-converter.d.mts +8 -0
- package/dist/db/field-converter.mjs +21 -0
- package/dist/db/field-converter.mjs.map +1 -0
- package/dist/db/field.d.mts +42 -0
- package/dist/db/get-schema.d.mts +11 -0
- package/dist/db/get-schema.mjs +39 -0
- package/dist/db/get-schema.mjs.map +1 -0
- package/dist/db/index.d.mts +18 -0
- package/dist/db/index.mjs +34 -0
- package/dist/db/index.mjs.map +1 -0
- package/dist/db/internal-adapter.d.mts +14 -0
- package/dist/db/internal-adapter.mjs +616 -0
- package/dist/db/internal-adapter.mjs.map +1 -0
- package/dist/db/schema.d.mts +49 -0
- package/dist/db/schema.mjs +118 -0
- package/dist/db/schema.mjs.map +1 -0
- package/dist/db/to-zod.d.mts +36 -0
- package/dist/db/to-zod.mjs +26 -0
- package/dist/db/to-zod.mjs.map +1 -0
- package/dist/db/verification-token-storage.mjs +28 -0
- package/dist/db/verification-token-storage.mjs.map +1 -0
- package/dist/db/with-hooks.d.mts +33 -0
- package/dist/db/with-hooks.mjs +159 -0
- package/dist/db/with-hooks.mjs.map +1 -0
- package/dist/index.d.mts +53 -0
- package/dist/index.mjs +27 -0
- package/dist/integrations/next-js.d.mts +29 -0
- package/dist/integrations/next-js.mjs +85 -0
- package/dist/integrations/next-js.mjs.map +1 -0
- package/dist/oauth2/index.d.mts +5 -0
- package/dist/oauth2/index.mjs +7 -0
- package/dist/oauth2/link-account.d.mts +48 -0
- package/dist/oauth2/link-account.mjs +143 -0
- package/dist/oauth2/link-account.mjs.map +1 -0
- package/dist/oauth2/state.d.mts +26 -0
- package/dist/oauth2/state.mjs +51 -0
- package/dist/oauth2/state.mjs.map +1 -0
- package/dist/oauth2/utils.d.mts +8 -0
- package/dist/oauth2/utils.mjs +31 -0
- package/dist/oauth2/utils.mjs.map +1 -0
- package/dist/plugins/access/access.d.mts +30 -0
- package/dist/plugins/access/access.mjs +46 -0
- package/dist/plugins/access/access.mjs.map +1 -0
- package/dist/plugins/access/index.d.mts +3 -0
- package/dist/plugins/access/index.mjs +3 -0
- package/dist/plugins/access/types.d.mts +17 -0
- package/dist/plugins/additional-fields/client.d.mts +96 -0
- package/dist/plugins/additional-fields/client.mjs +11 -0
- package/dist/plugins/additional-fields/client.mjs.map +1 -0
- package/dist/plugins/admin/access/index.d.mts +2 -0
- package/dist/plugins/admin/access/index.mjs +3 -0
- package/dist/plugins/admin/access/statement.d.mts +118 -0
- package/dist/plugins/admin/access/statement.mjs +53 -0
- package/dist/plugins/admin/access/statement.mjs.map +1 -0
- package/dist/plugins/admin/admin.d.mts +911 -0
- package/dist/plugins/admin/admin.mjs +95 -0
- package/dist/plugins/admin/admin.mjs.map +1 -0
- package/dist/plugins/admin/client.d.mts +76 -0
- package/dist/plugins/admin/client.mjs +36 -0
- package/dist/plugins/admin/client.mjs.map +1 -0
- package/dist/plugins/admin/error-codes.d.mts +29 -0
- package/dist/plugins/admin/error-codes.mjs +30 -0
- package/dist/plugins/admin/error-codes.mjs.map +1 -0
- package/dist/plugins/admin/has-permission.mjs +16 -0
- package/dist/plugins/admin/has-permission.mjs.map +1 -0
- package/dist/plugins/admin/index.d.mts +3 -0
- package/dist/plugins/admin/index.mjs +3 -0
- package/dist/plugins/admin/routes.mjs +841 -0
- package/dist/plugins/admin/routes.mjs.map +1 -0
- package/dist/plugins/admin/schema.d.mts +40 -0
- package/dist/plugins/admin/schema.mjs +34 -0
- package/dist/plugins/admin/schema.mjs.map +1 -0
- package/dist/plugins/admin/types.d.mts +89 -0
- package/dist/plugins/api-key/adapter.mjs +468 -0
- package/dist/plugins/api-key/adapter.mjs.map +1 -0
- package/dist/plugins/api-key/client.d.mts +46 -0
- package/dist/plugins/api-key/client.mjs +19 -0
- package/dist/plugins/api-key/client.mjs.map +1 -0
- package/dist/plugins/api-key/error-codes.d.mts +33 -0
- package/dist/plugins/api-key/error-codes.mjs +34 -0
- package/dist/plugins/api-key/error-codes.mjs.map +1 -0
- package/dist/plugins/api-key/index.d.mts +1251 -0
- package/dist/plugins/api-key/index.mjs +134 -0
- package/dist/plugins/api-key/index.mjs.map +1 -0
- package/dist/plugins/api-key/rate-limit.mjs +74 -0
- package/dist/plugins/api-key/rate-limit.mjs.map +1 -0
- package/dist/plugins/api-key/routes/create-api-key.mjs +252 -0
- package/dist/plugins/api-key/routes/create-api-key.mjs.map +1 -0
- package/dist/plugins/api-key/routes/delete-all-expired-api-keys.mjs +24 -0
- package/dist/plugins/api-key/routes/delete-all-expired-api-keys.mjs.map +1 -0
- package/dist/plugins/api-key/routes/delete-api-key.mjs +74 -0
- package/dist/plugins/api-key/routes/delete-api-key.mjs.map +1 -0
- package/dist/plugins/api-key/routes/get-api-key.mjs +158 -0
- package/dist/plugins/api-key/routes/get-api-key.mjs.map +1 -0
- package/dist/plugins/api-key/routes/index.mjs +71 -0
- package/dist/plugins/api-key/routes/index.mjs.map +1 -0
- package/dist/plugins/api-key/routes/list-api-keys.mjs +194 -0
- package/dist/plugins/api-key/routes/list-api-keys.mjs.map +1 -0
- package/dist/plugins/api-key/routes/update-api-key.mjs +248 -0
- package/dist/plugins/api-key/routes/update-api-key.mjs.map +1 -0
- package/dist/plugins/api-key/routes/verify-api-key.mjs +224 -0
- package/dist/plugins/api-key/routes/verify-api-key.mjs.map +1 -0
- package/dist/plugins/api-key/schema.d.mts +199 -0
- package/dist/plugins/api-key/schema.mjs +130 -0
- package/dist/plugins/api-key/schema.mjs.map +1 -0
- package/dist/plugins/api-key/types.d.mts +346 -0
- package/dist/plugins/bearer/index.d.mts +45 -0
- package/dist/plugins/bearer/index.mjs +66 -0
- package/dist/plugins/bearer/index.mjs.map +1 -0
- package/dist/plugins/captcha/constants.d.mts +10 -0
- package/dist/plugins/captcha/constants.mjs +22 -0
- package/dist/plugins/captcha/constants.mjs.map +1 -0
- package/dist/plugins/captcha/error-codes.mjs +16 -0
- package/dist/plugins/captcha/error-codes.mjs.map +1 -0
- package/dist/plugins/captcha/index.d.mts +21 -0
- package/dist/plugins/captcha/index.mjs +62 -0
- package/dist/plugins/captcha/index.mjs.map +1 -0
- package/dist/plugins/captcha/types.d.mts +28 -0
- package/dist/plugins/captcha/utils.mjs +11 -0
- package/dist/plugins/captcha/utils.mjs.map +1 -0
- package/dist/plugins/captcha/verify-handlers/captchafox.mjs +28 -0
- package/dist/plugins/captcha/verify-handlers/captchafox.mjs.map +1 -0
- package/dist/plugins/captcha/verify-handlers/cloudflare-turnstile.mjs +26 -0
- package/dist/plugins/captcha/verify-handlers/cloudflare-turnstile.mjs.map +1 -0
- package/dist/plugins/captcha/verify-handlers/google-recaptcha.mjs +30 -0
- package/dist/plugins/captcha/verify-handlers/google-recaptcha.mjs.map +1 -0
- package/dist/plugins/captcha/verify-handlers/h-captcha.mjs +28 -0
- package/dist/plugins/captcha/verify-handlers/h-captcha.mjs.map +1 -0
- package/dist/plugins/captcha/verify-handlers/index.mjs +6 -0
- package/dist/plugins/custom-session/client.d.mts +17 -0
- package/dist/plugins/custom-session/client.mjs +11 -0
- package/dist/plugins/custom-session/client.mjs.map +1 -0
- package/dist/plugins/custom-session/index.d.mts +72 -0
- package/dist/plugins/custom-session/index.mjs +78 -0
- package/dist/plugins/custom-session/index.mjs.map +1 -0
- package/dist/plugins/device-authorization/client.d.mts +17 -0
- package/dist/plugins/device-authorization/client.mjs +18 -0
- package/dist/plugins/device-authorization/client.mjs.map +1 -0
- package/dist/plugins/device-authorization/error-codes.mjs +21 -0
- package/dist/plugins/device-authorization/error-codes.mjs.map +1 -0
- package/dist/plugins/device-authorization/index.d.mts +424 -0
- package/dist/plugins/device-authorization/index.mjs +50 -0
- package/dist/plugins/device-authorization/index.mjs.map +1 -0
- package/dist/plugins/device-authorization/routes.mjs +510 -0
- package/dist/plugins/device-authorization/routes.mjs.map +1 -0
- package/dist/plugins/device-authorization/schema.mjs +57 -0
- package/dist/plugins/device-authorization/schema.mjs.map +1 -0
- package/dist/plugins/email-otp/client.d.mts +21 -0
- package/dist/plugins/email-otp/client.mjs +18 -0
- package/dist/plugins/email-otp/client.mjs.map +1 -0
- package/dist/plugins/email-otp/error-codes.d.mts +11 -0
- package/dist/plugins/email-otp/error-codes.mjs +12 -0
- package/dist/plugins/email-otp/error-codes.mjs.map +1 -0
- package/dist/plugins/email-otp/index.d.mts +428 -0
- package/dist/plugins/email-otp/index.mjs +130 -0
- package/dist/plugins/email-otp/index.mjs.map +1 -0
- package/dist/plugins/email-otp/otp-token.mjs +29 -0
- package/dist/plugins/email-otp/otp-token.mjs.map +1 -0
- package/dist/plugins/email-otp/routes.mjs +631 -0
- package/dist/plugins/email-otp/routes.mjs.map +1 -0
- package/dist/plugins/email-otp/types.d.mts +86 -0
- package/dist/plugins/email-otp/utils.mjs +17 -0
- package/dist/plugins/email-otp/utils.mjs.map +1 -0
- package/dist/plugins/generic-oauth/client.d.mts +33 -0
- package/dist/plugins/generic-oauth/client.mjs +14 -0
- package/dist/plugins/generic-oauth/client.mjs.map +1 -0
- package/dist/plugins/generic-oauth/error-codes.d.mts +16 -0
- package/dist/plugins/generic-oauth/error-codes.mjs +17 -0
- package/dist/plugins/generic-oauth/error-codes.mjs.map +1 -0
- package/dist/plugins/generic-oauth/index.d.mts +201 -0
- package/dist/plugins/generic-oauth/index.mjs +145 -0
- package/dist/plugins/generic-oauth/index.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/auth0.d.mts +37 -0
- package/dist/plugins/generic-oauth/providers/auth0.mjs +62 -0
- package/dist/plugins/generic-oauth/providers/auth0.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/gumroad.d.mts +32 -0
- package/dist/plugins/generic-oauth/providers/gumroad.mjs +60 -0
- package/dist/plugins/generic-oauth/providers/gumroad.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/hubspot.d.mts +37 -0
- package/dist/plugins/generic-oauth/providers/hubspot.mjs +60 -0
- package/dist/plugins/generic-oauth/providers/hubspot.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/index.d.mts +9 -0
- package/dist/plugins/generic-oauth/providers/index.mjs +11 -0
- package/dist/plugins/generic-oauth/providers/keycloak.d.mts +37 -0
- package/dist/plugins/generic-oauth/providers/keycloak.mjs +62 -0
- package/dist/plugins/generic-oauth/providers/keycloak.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/line.d.mts +55 -0
- package/dist/plugins/generic-oauth/providers/line.mjs +91 -0
- package/dist/plugins/generic-oauth/providers/line.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/microsoft-entra-id.d.mts +37 -0
- package/dist/plugins/generic-oauth/providers/microsoft-entra-id.mjs +66 -0
- package/dist/plugins/generic-oauth/providers/microsoft-entra-id.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/okta.d.mts +37 -0
- package/dist/plugins/generic-oauth/providers/okta.mjs +62 -0
- package/dist/plugins/generic-oauth/providers/okta.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/patreon.d.mts +30 -0
- package/dist/plugins/generic-oauth/providers/patreon.mjs +59 -0
- package/dist/plugins/generic-oauth/providers/patreon.mjs.map +1 -0
- package/dist/plugins/generic-oauth/providers/slack.d.mts +30 -0
- package/dist/plugins/generic-oauth/providers/slack.mjs +61 -0
- package/dist/plugins/generic-oauth/providers/slack.mjs.map +1 -0
- package/dist/plugins/generic-oauth/routes.mjs +411 -0
- package/dist/plugins/generic-oauth/routes.mjs.map +1 -0
- package/dist/plugins/generic-oauth/types.d.mts +159 -0
- package/dist/plugins/haveibeenpwned/index.d.mts +46 -0
- package/dist/plugins/haveibeenpwned/index.mjs +57 -0
- package/dist/plugins/haveibeenpwned/index.mjs.map +1 -0
- package/dist/plugins/index.d.mts +65 -0
- package/dist/plugins/index.mjs +48 -0
- package/dist/plugins/jwt/adapter.mjs +27 -0
- package/dist/plugins/jwt/adapter.mjs.map +1 -0
- package/dist/plugins/jwt/client.d.mts +40 -0
- package/dist/plugins/jwt/client.mjs +19 -0
- package/dist/plugins/jwt/client.mjs.map +1 -0
- package/dist/plugins/jwt/index.d.mts +224 -0
- package/dist/plugins/jwt/index.mjs +202 -0
- package/dist/plugins/jwt/index.mjs.map +1 -0
- package/dist/plugins/jwt/schema.d.mts +26 -0
- package/dist/plugins/jwt/schema.mjs +23 -0
- package/dist/plugins/jwt/schema.mjs.map +1 -0
- package/dist/plugins/jwt/sign.d.mts +57 -0
- package/dist/plugins/jwt/sign.mjs +66 -0
- package/dist/plugins/jwt/sign.mjs.map +1 -0
- package/dist/plugins/jwt/types.d.mts +194 -0
- package/dist/plugins/jwt/utils.d.mts +42 -0
- package/dist/plugins/jwt/utils.mjs +64 -0
- package/dist/plugins/jwt/utils.mjs.map +1 -0
- package/dist/plugins/jwt/verify.d.mts +12 -0
- package/dist/plugins/jwt/verify.mjs +46 -0
- package/dist/plugins/jwt/verify.mjs.map +1 -0
- package/dist/plugins/last-login-method/client.d.mts +38 -0
- package/dist/plugins/last-login-method/client.mjs +32 -0
- package/dist/plugins/last-login-method/client.mjs.map +1 -0
- package/dist/plugins/last-login-method/index.d.mts +118 -0
- package/dist/plugins/last-login-method/index.mjs +76 -0
- package/dist/plugins/last-login-method/index.mjs.map +1 -0
- package/dist/plugins/magic-link/client.d.mts +10 -0
- package/dist/plugins/magic-link/client.mjs +11 -0
- package/dist/plugins/magic-link/client.mjs.map +1 -0
- package/dist/plugins/magic-link/index.d.mts +193 -0
- package/dist/plugins/magic-link/index.mjs +177 -0
- package/dist/plugins/magic-link/index.mjs.map +1 -0
- package/dist/plugins/magic-link/utils.mjs +12 -0
- package/dist/plugins/magic-link/utils.mjs.map +1 -0
- package/dist/plugins/mcp/authorize.mjs +133 -0
- package/dist/plugins/mcp/authorize.mjs.map +1 -0
- package/dist/plugins/mcp/index.d.mts +458 -0
- package/dist/plugins/mcp/index.mjs +717 -0
- package/dist/plugins/mcp/index.mjs.map +1 -0
- package/dist/plugins/multi-session/client.d.mts +19 -0
- package/dist/plugins/multi-session/client.mjs +20 -0
- package/dist/plugins/multi-session/client.mjs.map +1 -0
- package/dist/plugins/multi-session/error-codes.d.mts +9 -0
- package/dist/plugins/multi-session/error-codes.mjs +8 -0
- package/dist/plugins/multi-session/error-codes.mjs.map +1 -0
- package/dist/plugins/multi-session/index.d.mts +235 -0
- package/dist/plugins/multi-session/index.mjs +172 -0
- package/dist/plugins/multi-session/index.mjs.map +1 -0
- package/dist/plugins/oauth-proxy/index.d.mts +97 -0
- package/dist/plugins/oauth-proxy/index.mjs +305 -0
- package/dist/plugins/oauth-proxy/index.mjs.map +1 -0
- package/dist/plugins/oauth-proxy/utils.mjs +51 -0
- package/dist/plugins/oauth-proxy/utils.mjs.map +1 -0
- package/dist/plugins/oidc-provider/authorize.mjs +194 -0
- package/dist/plugins/oidc-provider/authorize.mjs.map +1 -0
- package/dist/plugins/oidc-provider/client.d.mts +12 -0
- package/dist/plugins/oidc-provider/client.mjs +11 -0
- package/dist/plugins/oidc-provider/client.mjs.map +1 -0
- package/dist/plugins/oidc-provider/error.mjs +17 -0
- package/dist/plugins/oidc-provider/error.mjs.map +1 -0
- package/dist/plugins/oidc-provider/index.d.mts +702 -0
- package/dist/plugins/oidc-provider/index.mjs +1093 -0
- package/dist/plugins/oidc-provider/index.mjs.map +1 -0
- package/dist/plugins/oidc-provider/schema.d.mts +160 -0
- package/dist/plugins/oidc-provider/schema.mjs +132 -0
- package/dist/plugins/oidc-provider/schema.mjs.map +1 -0
- package/dist/plugins/oidc-provider/types.d.mts +517 -0
- package/dist/plugins/oidc-provider/utils/prompt.mjs +19 -0
- package/dist/plugins/oidc-provider/utils/prompt.mjs.map +1 -0
- package/dist/plugins/oidc-provider/utils.mjs +15 -0
- package/dist/plugins/oidc-provider/utils.mjs.map +1 -0
- package/dist/plugins/one-tap/client.d.mts +174 -0
- package/dist/plugins/one-tap/client.mjs +188 -0
- package/dist/plugins/one-tap/client.mjs.map +1 -0
- package/dist/plugins/one-tap/index.d.mts +83 -0
- package/dist/plugins/one-tap/index.mjs +95 -0
- package/dist/plugins/one-tap/index.mjs.map +1 -0
- package/dist/plugins/one-time-token/client.d.mts +10 -0
- package/dist/plugins/one-time-token/client.mjs +11 -0
- package/dist/plugins/one-time-token/client.mjs.map +1 -0
- package/dist/plugins/one-time-token/index.d.mts +133 -0
- package/dist/plugins/one-time-token/index.mjs +82 -0
- package/dist/plugins/one-time-token/index.mjs.map +1 -0
- package/dist/plugins/one-time-token/utils.mjs +12 -0
- package/dist/plugins/one-time-token/utils.mjs.map +1 -0
- package/dist/plugins/open-api/generator.d.mts +115 -0
- package/dist/plugins/open-api/generator.mjs +315 -0
- package/dist/plugins/open-api/generator.mjs.map +1 -0
- package/dist/plugins/open-api/index.d.mts +97 -0
- package/dist/plugins/open-api/index.mjs +67 -0
- package/dist/plugins/open-api/index.mjs.map +1 -0
- package/dist/plugins/open-api/logo.mjs +15 -0
- package/dist/plugins/open-api/logo.mjs.map +1 -0
- package/dist/plugins/organization/access/index.d.mts +2 -0
- package/dist/plugins/organization/access/index.mjs +3 -0
- package/dist/plugins/organization/access/statement.d.mts +249 -0
- package/dist/plugins/organization/access/statement.mjs +81 -0
- package/dist/plugins/organization/access/statement.mjs.map +1 -0
- package/dist/plugins/organization/adapter.d.mts +792 -0
- package/dist/plugins/organization/adapter.mjs +624 -0
- package/dist/plugins/organization/adapter.mjs.map +1 -0
- package/dist/plugins/organization/call.mjs +19 -0
- package/dist/plugins/organization/call.mjs.map +1 -0
- package/dist/plugins/organization/client.d.mts +372 -0
- package/dist/plugins/organization/client.mjs +95 -0
- package/dist/plugins/organization/client.mjs.map +1 -0
- package/dist/plugins/organization/error-codes.d.mts +65 -0
- package/dist/plugins/organization/error-codes.mjs +66 -0
- package/dist/plugins/organization/error-codes.mjs.map +1 -0
- package/dist/plugins/organization/has-permission.mjs +35 -0
- package/dist/plugins/organization/has-permission.mjs.map +1 -0
- package/dist/plugins/organization/index.d.mts +5 -0
- package/dist/plugins/organization/index.mjs +4 -0
- package/dist/plugins/organization/organization.d.mts +394 -0
- package/dist/plugins/organization/organization.mjs +428 -0
- package/dist/plugins/organization/organization.mjs.map +1 -0
- package/dist/plugins/organization/permission.d.mts +17 -0
- package/dist/plugins/organization/permission.mjs +16 -0
- package/dist/plugins/organization/permission.mjs.map +1 -0
- package/dist/plugins/organization/routes/crud-access-control.d.mts +394 -0
- package/dist/plugins/organization/routes/crud-access-control.mjs +678 -0
- package/dist/plugins/organization/routes/crud-access-control.mjs.map +1 -0
- package/dist/plugins/organization/routes/crud-invites.d.mts +1031 -0
- package/dist/plugins/organization/routes/crud-invites.mjs +551 -0
- package/dist/plugins/organization/routes/crud-invites.mjs.map +1 -0
- package/dist/plugins/organization/routes/crud-members.d.mts +940 -0
- package/dist/plugins/organization/routes/crud-members.mjs +466 -0
- package/dist/plugins/organization/routes/crud-members.mjs.map +1 -0
- package/dist/plugins/organization/routes/crud-org.d.mts +708 -0
- package/dist/plugins/organization/routes/crud-org.mjs +423 -0
- package/dist/plugins/organization/routes/crud-org.mjs.map +1 -0
- package/dist/plugins/organization/routes/crud-team.d.mts +1071 -0
- package/dist/plugins/organization/routes/crud-team.mjs +676 -0
- package/dist/plugins/organization/routes/crud-team.mjs.map +1 -0
- package/dist/plugins/organization/schema.d.mts +376 -0
- package/dist/plugins/organization/schema.mjs +68 -0
- package/dist/plugins/organization/schema.mjs.map +1 -0
- package/dist/plugins/organization/types.d.mts +677 -0
- package/dist/plugins/phone-number/client.d.mts +31 -0
- package/dist/plugins/phone-number/client.mjs +20 -0
- package/dist/plugins/phone-number/client.mjs.map +1 -0
- package/dist/plugins/phone-number/error-codes.d.mts +20 -0
- package/dist/plugins/phone-number/error-codes.mjs +21 -0
- package/dist/plugins/phone-number/error-codes.mjs.map +1 -0
- package/dist/plugins/phone-number/index.d.mts +318 -0
- package/dist/plugins/phone-number/index.mjs +49 -0
- package/dist/plugins/phone-number/index.mjs.map +1 -0
- package/dist/plugins/phone-number/routes.mjs +472 -0
- package/dist/plugins/phone-number/routes.mjs.map +1 -0
- package/dist/plugins/phone-number/schema.d.mts +23 -0
- package/dist/plugins/phone-number/schema.mjs +20 -0
- package/dist/plugins/phone-number/schema.mjs.map +1 -0
- package/dist/plugins/phone-number/types.d.mts +118 -0
- package/dist/plugins/two-factor/backup-codes/index.d.mts +279 -0
- package/dist/plugins/two-factor/backup-codes/index.mjs +277 -0
- package/dist/plugins/two-factor/backup-codes/index.mjs.map +1 -0
- package/dist/plugins/two-factor/client.d.mts +55 -0
- package/dist/plugins/two-factor/client.mjs +37 -0
- package/dist/plugins/two-factor/client.mjs.map +1 -0
- package/dist/plugins/two-factor/constant.mjs +8 -0
- package/dist/plugins/two-factor/constant.mjs.map +1 -0
- package/dist/plugins/two-factor/error-code.d.mts +17 -0
- package/dist/plugins/two-factor/error-code.mjs +18 -0
- package/dist/plugins/two-factor/error-code.mjs.map +1 -0
- package/dist/plugins/two-factor/index.d.mts +670 -0
- package/dist/plugins/two-factor/index.mjs +228 -0
- package/dist/plugins/two-factor/index.mjs.map +1 -0
- package/dist/plugins/two-factor/otp/index.d.mts +216 -0
- package/dist/plugins/two-factor/otp/index.mjs +199 -0
- package/dist/plugins/two-factor/otp/index.mjs.map +1 -0
- package/dist/plugins/two-factor/schema.d.mts +41 -0
- package/dist/plugins/two-factor/schema.mjs +36 -0
- package/dist/plugins/two-factor/schema.mjs.map +1 -0
- package/dist/plugins/two-factor/totp/index.d.mts +210 -0
- package/dist/plugins/two-factor/totp/index.mjs +157 -0
- package/dist/plugins/two-factor/totp/index.mjs.map +1 -0
- package/dist/plugins/two-factor/types.d.mts +73 -0
- package/dist/plugins/two-factor/utils.mjs +12 -0
- package/dist/plugins/two-factor/utils.mjs.map +1 -0
- package/dist/plugins/two-factor/verify-two-factor.mjs +85 -0
- package/dist/plugins/two-factor/verify-two-factor.mjs.map +1 -0
- package/dist/plugins/username/client.d.mts +26 -0
- package/dist/plugins/username/client.mjs +18 -0
- package/dist/plugins/username/client.mjs.map +1 -0
- package/dist/plugins/username/error-codes.d.mts +16 -0
- package/dist/plugins/username/error-codes.mjs +17 -0
- package/dist/plugins/username/error-codes.mjs.map +1 -0
- package/dist/plugins/username/index.d.mts +251 -0
- package/dist/plugins/username/index.mjs +234 -0
- package/dist/plugins/username/index.mjs.map +1 -0
- package/dist/plugins/username/schema.d.mts +33 -0
- package/dist/plugins/username/schema.mjs +26 -0
- package/dist/plugins/username/schema.mjs.map +1 -0
- package/dist/providers/index.d.mts +1 -0
- package/dist/providers/index.mjs +3 -0
- package/dist/state.d.mts +42 -0
- package/dist/state.mjs +107 -0
- package/dist/state.mjs.map +1 -0
- package/dist/types/adapter.d.mts +2 -0
- package/dist/types/api.d.mts +29 -0
- package/dist/types/auth.d.mts +29 -0
- package/dist/types/helper.d.mts +10 -0
- package/dist/types/index.d.mts +11 -0
- package/dist/types/index.mjs +1 -0
- package/dist/types/models.d.mts +11 -0
- package/dist/types/plugins.d.mts +20 -0
- package/dist/utils/boolean.mjs +8 -0
- package/dist/utils/boolean.mjs.map +1 -0
- package/dist/utils/constants.mjs +6 -0
- package/dist/utils/constants.mjs.map +1 -0
- package/dist/utils/date.mjs +8 -0
- package/dist/utils/date.mjs.map +1 -0
- package/dist/utils/get-request-ip.d.mts +7 -0
- package/dist/utils/get-request-ip.mjs +23 -0
- package/dist/utils/get-request-ip.mjs.map +1 -0
- package/dist/utils/hide-metadata.d.mts +7 -0
- package/dist/utils/hide-metadata.mjs +6 -0
- package/dist/utils/hide-metadata.mjs.map +1 -0
- package/dist/utils/index.d.mts +4 -0
- package/dist/utils/index.mjs +6 -0
- package/dist/utils/is-api-error.d.mts +7 -0
- package/dist/utils/is-api-error.mjs +11 -0
- package/dist/utils/is-api-error.mjs.map +1 -0
- package/dist/utils/is-atom.mjs +8 -0
- package/dist/utils/is-atom.mjs.map +1 -0
- package/dist/utils/is-promise.mjs +8 -0
- package/dist/utils/is-promise.mjs.map +1 -0
- package/dist/utils/middleware-response.mjs +9 -0
- package/dist/utils/middleware-response.mjs.map +1 -0
- package/dist/utils/password.mjs +26 -0
- package/dist/utils/password.mjs.map +1 -0
- package/dist/utils/plugin-helper.mjs +17 -0
- package/dist/utils/plugin-helper.mjs.map +1 -0
- package/dist/utils/shim.mjs +24 -0
- package/dist/utils/shim.mjs.map +1 -0
- package/dist/utils/time.d.mts +49 -0
- package/dist/utils/time.mjs +100 -0
- package/dist/utils/time.mjs.map +1 -0
- package/dist/utils/url.d.mts +8 -0
- package/dist/utils/url.mjs +92 -0
- package/dist/utils/url.mjs.map +1 -0
- package/dist/utils/wildcard.mjs +108 -0
- package/dist/utils/wildcard.mjs.map +1 -0
- package/package.json +428 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { UnionToIntersection } from "./helper.mjs";
|
|
2
|
+
import { AuthContext, BetterAuthOptions, BetterAuthPlugin } from "@better-auth/core";
|
|
3
|
+
import { BetterAuthPluginDBSchema } from "@better-auth/core/db";
|
|
4
|
+
|
|
5
|
+
//#region src/types/plugins.d.ts
|
|
6
|
+
type InferOptionSchema<S extends BetterAuthPluginDBSchema> = S extends Record<string, {
|
|
7
|
+
fields: infer Fields;
|
|
8
|
+
}> ? { [K in keyof S]?: {
|
|
9
|
+
modelName?: string | undefined;
|
|
10
|
+
fields?: { [P in keyof Fields]?: string } | undefined;
|
|
11
|
+
} } : never;
|
|
12
|
+
type InferPluginErrorCodes<O extends BetterAuthOptions> = O["plugins"] extends Array<infer P> ? UnionToIntersection<P extends BetterAuthPlugin ? P["$ERROR_CODES"] extends Record<string, any> ? P["$ERROR_CODES"] : {} : {}> : {};
|
|
13
|
+
type InferPluginIDs<O extends BetterAuthOptions> = O["plugins"] extends Array<infer P> ? UnionToIntersection<P extends BetterAuthPlugin ? P["id"] : never> : never;
|
|
14
|
+
type ExtractInitContext<P extends BetterAuthPlugin> = P["init"] extends ((...args: any[]) => infer R) ? Awaited<R> extends {
|
|
15
|
+
context?: infer C;
|
|
16
|
+
} ? C extends Record<string, any> ? Omit<C, keyof AuthContext> : {} : {} : {};
|
|
17
|
+
type InferPluginContext<O extends BetterAuthOptions> = O["plugins"] extends Array<infer P> ? UnionToIntersection<P extends BetterAuthPlugin ? ExtractInitContext<P> : {}> : {};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { InferOptionSchema, InferPluginContext, InferPluginErrorCodes, InferPluginIDs };
|
|
20
|
+
//# sourceMappingURL=plugins.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.mjs","names":[],"sources":["../../src/utils/boolean.ts"],"sourcesContent":["export function toBoolean(value: any): boolean {\n\treturn value === \"true\" || value === true;\n}\n"],"mappings":";AAAA,SAAgB,UAAU,OAAqB;AAC9C,QAAO,UAAU,UAAU,UAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":[],"sources":["../../src/utils/constants.ts"],"sourcesContent":["export const DEFAULT_SECRET = \"better-auth-secret-12345678901234567890\";\n"],"mappings":";AAAA,MAAa,iBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.mjs","names":[],"sources":["../../src/utils/date.ts"],"sourcesContent":["export const getDate = (span: number, unit: \"sec\" | \"ms\" = \"ms\") => {\n\treturn new Date(Date.now() + (unit === \"sec\" ? span * 1000 : span));\n};\n"],"mappings":";AAAA,MAAa,WAAW,MAAc,OAAqB,SAAS;AACnE,QAAO,IAAI,KAAK,KAAK,KAAK,IAAI,SAAS,QAAQ,OAAO,MAAO,MAAM"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BetterAuthOptions } from "@better-auth/core";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/get-request-ip.d.ts
|
|
4
|
+
declare function getIp(req: Request | Headers, options: BetterAuthOptions): string | null;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { getIp };
|
|
7
|
+
//# sourceMappingURL=get-request-ip.d.mts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { isDevelopment, isTest } from "@better-auth/core/env";
|
|
2
|
+
import { isValidIP, normalizeIP } from "@better-auth/core/utils/ip";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/get-request-ip.ts
|
|
5
|
+
const LOCALHOST_IP = "127.0.0.1";
|
|
6
|
+
function getIp(req, options) {
|
|
7
|
+
if (options.advanced?.ipAddress?.disableIpTracking) return null;
|
|
8
|
+
const headers = "headers" in req ? req.headers : req;
|
|
9
|
+
const ipHeaders = options.advanced?.ipAddress?.ipAddressHeaders || ["x-forwarded-for"];
|
|
10
|
+
for (const key of ipHeaders) {
|
|
11
|
+
const value = "get" in headers ? headers.get(key) : headers[key];
|
|
12
|
+
if (typeof value === "string") {
|
|
13
|
+
const ip = value.split(",")[0].trim();
|
|
14
|
+
if (isValidIP(ip)) return normalizeIP(ip, { ipv6Subnet: options.advanced?.ipAddress?.ipv6Subnet });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (isTest() || isDevelopment()) return LOCALHOST_IP;
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { getIp };
|
|
23
|
+
//# sourceMappingURL=get-request-ip.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-request-ip.mjs","names":[],"sources":["../../src/utils/get-request-ip.ts"],"sourcesContent":["import type { BetterAuthOptions } from \"@better-auth/core\";\nimport { isDevelopment, isTest } from \"@better-auth/core/env\";\nimport { isValidIP, normalizeIP } from \"@better-auth/core/utils/ip\";\n\n// Localhost IP used for test and development environments\nconst LOCALHOST_IP = \"127.0.0.1\";\n\nexport function getIp(\n\treq: Request | Headers,\n\toptions: BetterAuthOptions,\n): string | null {\n\tif (options.advanced?.ipAddress?.disableIpTracking) {\n\t\treturn null;\n\t}\n\n\tconst headers = \"headers\" in req ? req.headers : req;\n\n\tconst defaultHeaders = [\"x-forwarded-for\"];\n\n\tconst ipHeaders =\n\t\toptions.advanced?.ipAddress?.ipAddressHeaders || defaultHeaders;\n\n\tfor (const key of ipHeaders) {\n\t\tconst value = \"get\" in headers ? headers.get(key) : headers[key];\n\t\tif (typeof value === \"string\") {\n\t\t\tconst ip = value.split(\",\")[0]!.trim();\n\t\t\tif (isValidIP(ip)) {\n\t\t\t\treturn normalizeIP(ip, {\n\t\t\t\t\tipv6Subnet: options.advanced?.ipAddress?.ipv6Subnet,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Fallback to localhost IP in development/test environments when no IP found in headers\n\tif (isTest() || isDevelopment()) {\n\t\treturn LOCALHOST_IP;\n\t}\n\n\treturn null;\n}\n"],"mappings":";;;;AAKA,MAAM,eAAe;AAErB,SAAgB,MACf,KACA,SACgB;AAChB,KAAI,QAAQ,UAAU,WAAW,kBAChC,QAAO;CAGR,MAAM,UAAU,aAAa,MAAM,IAAI,UAAU;CAIjD,MAAM,YACL,QAAQ,UAAU,WAAW,oBAHP,CAAC,kBAAkB;AAK1C,MAAK,MAAM,OAAO,WAAW;EAC5B,MAAM,QAAQ,SAAS,UAAU,QAAQ,IAAI,IAAI,GAAG,QAAQ;AAC5D,MAAI,OAAO,UAAU,UAAU;GAC9B,MAAM,KAAK,MAAM,MAAM,IAAI,CAAC,GAAI,MAAM;AACtC,OAAI,UAAU,GAAG,CAChB,QAAO,YAAY,IAAI,EACtB,YAAY,QAAQ,UAAU,WAAW,YACzC,CAAC;;;AAML,KAAI,QAAQ,IAAI,eAAe,CAC9B,QAAO;AAGR,QAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hide-metadata.mjs","names":[],"sources":["../../src/utils/hide-metadata.ts"],"sourcesContent":["export const HIDE_METADATA = {\n\tscope: \"server\",\n} as const;\n"],"mappings":";AAAA,MAAa,gBAAgB,EAC5B,OAAO,UACP"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { generateState, parseState } from "../oauth2/state.mjs";
|
|
2
|
+
import { StateData, generateGenericState, parseGenericState } from "../state.mjs";
|
|
3
|
+
import { HIDE_METADATA } from "./hide-metadata.mjs";
|
|
4
|
+
import { getBaseURL, getHost, getOrigin, getProtocol } from "./url.mjs";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { getBaseURL, getHost, getOrigin, getProtocol } from "./url.mjs";
|
|
2
|
+
import { generateGenericState, parseGenericState } from "../state.mjs";
|
|
3
|
+
import { generateState, parseState } from "../oauth2/state.mjs";
|
|
4
|
+
import { HIDE_METADATA } from "./hide-metadata.mjs";
|
|
5
|
+
|
|
6
|
+
export { };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { APIError } from "@better-auth/core/error";
|
|
2
|
+
import { APIError as APIError$1 } from "better-call";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/is-api-error.ts
|
|
5
|
+
function isAPIError(error) {
|
|
6
|
+
return error instanceof APIError$1 || error instanceof APIError || error?.name === "APIError";
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
export { isAPIError };
|
|
11
|
+
//# sourceMappingURL=is-api-error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-api-error.mjs","names":["BaseAPIError"],"sources":["../../src/utils/is-api-error.ts"],"sourcesContent":["import { APIError } from \"@better-auth/core/error\";\nimport { APIError as BaseAPIError } from \"better-call\";\n\nexport function isAPIError(error: unknown): error is APIError {\n\treturn (\n\t\terror instanceof BaseAPIError ||\n\t\terror instanceof APIError ||\n\t\t(error as any)?.name === \"APIError\"\n\t);\n}\n"],"mappings":";;;;AAGA,SAAgB,WAAW,OAAmC;AAC7D,QACC,iBAAiBA,cACjB,iBAAiB,YAChB,OAAe,SAAS"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/is-atom.ts
|
|
2
|
+
function isAtom(value) {
|
|
3
|
+
return typeof value === "object" && value !== null && "get" in value && typeof value.get === "function" && "lc" in value && typeof value.lc === "number";
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { isAtom };
|
|
8
|
+
//# sourceMappingURL=is-atom.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-atom.mjs","names":[],"sources":["../../src/utils/is-atom.ts"],"sourcesContent":["import type { Atom } from \"nanostores\";\n\nexport function isAtom(value: unknown): value is Atom<unknown> {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"get\" in value &&\n\t\ttypeof (value as any).get === \"function\" &&\n\t\t\"lc\" in value &&\n\t\ttypeof (value as any).lc === \"number\"\n\t);\n}\n"],"mappings":";AAEA,SAAgB,OAAO,OAAwC;AAC9D,QACC,OAAO,UAAU,YACjB,UAAU,QACV,SAAS,SACT,OAAQ,MAAc,QAAQ,cAC9B,QAAQ,SACR,OAAQ,MAAc,OAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-promise.mjs","names":[],"sources":["../../src/utils/is-promise.ts"],"sourcesContent":["export function isPromise(obj?: unknown): obj is Promise<unknown> {\n\treturn (\n\t\t!!obj &&\n\t\t(typeof obj === \"object\" || typeof obj === \"function\") &&\n\t\ttypeof (obj as Promise<unknown>).then === \"function\"\n\t);\n}\n"],"mappings":";AAAA,SAAgB,UAAU,KAAwC;AACjE,QACC,CAAC,CAAC,QACD,OAAO,QAAQ,YAAY,OAAO,QAAQ,eAC3C,OAAQ,IAAyB,SAAS"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/utils/middleware-response.ts
|
|
2
|
+
const middlewareResponse = ({ message, status, code }) => ({ response: new Response(JSON.stringify({
|
|
3
|
+
message,
|
|
4
|
+
code
|
|
5
|
+
}), { status }) });
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
export { middlewareResponse };
|
|
9
|
+
//# sourceMappingURL=middleware-response.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware-response.mjs","names":[],"sources":["../../src/utils/middleware-response.ts"],"sourcesContent":["type Params = {\n\tmessage: string;\n\tstatus: number;\n\tcode: string;\n};\n\nexport const middlewareResponse = ({ message, status, code }: Params) => ({\n\tresponse: new Response(\n\t\tJSON.stringify({\n\t\t\tmessage,\n\t\t\tcode,\n\t\t}),\n\t\t{\n\t\t\tstatus,\n\t\t},\n\t),\n});\n"],"mappings":";AAMA,MAAa,sBAAsB,EAAE,SAAS,QAAQ,YAAoB,EACzE,UAAU,IAAI,SACb,KAAK,UAAU;CACd;CACA;CACA,CAAC,EACF,EACC,QACA,CACD,EACD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { APIError, BASE_ERROR_CODES } from "@better-auth/core/error";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/password.ts
|
|
4
|
+
async function validatePassword(ctx, data) {
|
|
5
|
+
const credentialAccount = (await ctx.context.internalAdapter.findAccounts(data.userId))?.find((account) => account.providerId === "credential");
|
|
6
|
+
const currentPassword = credentialAccount?.password;
|
|
7
|
+
if (!credentialAccount || !currentPassword) return false;
|
|
8
|
+
return await ctx.context.password.verify({
|
|
9
|
+
hash: currentPassword,
|
|
10
|
+
password: data.password
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async function checkPassword(userId, c) {
|
|
14
|
+
const credentialAccount = (await c.context.internalAdapter.findAccounts(userId))?.find((account) => account.providerId === "credential");
|
|
15
|
+
const currentPassword = credentialAccount?.password;
|
|
16
|
+
if (!credentialAccount || !currentPassword || !c.body.password) throw APIError.from("BAD_REQUEST", BASE_ERROR_CODES.CREDENTIAL_ACCOUNT_NOT_FOUND);
|
|
17
|
+
if (!await c.context.password.verify({
|
|
18
|
+
hash: currentPassword,
|
|
19
|
+
password: c.body.password
|
|
20
|
+
})) throw APIError.from("BAD_REQUEST", BASE_ERROR_CODES.INVALID_PASSWORD);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
export { checkPassword, validatePassword };
|
|
26
|
+
//# sourceMappingURL=password.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.mjs","names":[],"sources":["../../src/utils/password.ts"],"sourcesContent":["import type { GenericEndpointContext } from \"@better-auth/core\";\nimport { APIError, BASE_ERROR_CODES } from \"@better-auth/core/error\";\n\nexport async function validatePassword(\n\tctx: GenericEndpointContext,\n\tdata: {\n\t\tpassword: string;\n\t\tuserId: string;\n\t},\n) {\n\tconst accounts = await ctx.context.internalAdapter.findAccounts(data.userId);\n\tconst credentialAccount = accounts?.find(\n\t\t(account) => account.providerId === \"credential\",\n\t);\n\tconst currentPassword = credentialAccount?.password;\n\tif (!credentialAccount || !currentPassword) {\n\t\treturn false;\n\t}\n\tconst compare = await ctx.context.password.verify({\n\t\thash: currentPassword,\n\t\tpassword: data.password,\n\t});\n\treturn compare;\n}\n\nexport async function checkPassword(userId: string, c: GenericEndpointContext) {\n\tconst accounts = await c.context.internalAdapter.findAccounts(userId);\n\tconst credentialAccount = accounts?.find(\n\t\t(account) => account.providerId === \"credential\",\n\t);\n\tconst currentPassword = credentialAccount?.password;\n\tif (!credentialAccount || !currentPassword || !c.body.password) {\n\t\tthrow APIError.from(\n\t\t\t\"BAD_REQUEST\",\n\t\t\tBASE_ERROR_CODES.CREDENTIAL_ACCOUNT_NOT_FOUND,\n\t\t);\n\t}\n\tconst compare = await c.context.password.verify({\n\t\thash: currentPassword,\n\t\tpassword: c.body.password,\n\t});\n\tif (!compare) {\n\t\tthrow APIError.from(\"BAD_REQUEST\", BASE_ERROR_CODES.INVALID_PASSWORD);\n\t}\n\treturn true;\n}\n"],"mappings":";;;AAGA,eAAsB,iBACrB,KACA,MAIC;CAED,MAAM,qBADW,MAAM,IAAI,QAAQ,gBAAgB,aAAa,KAAK,OAAO,GACxC,MAClC,YAAY,QAAQ,eAAe,aACpC;CACD,MAAM,kBAAkB,mBAAmB;AAC3C,KAAI,CAAC,qBAAqB,CAAC,gBAC1B,QAAO;AAMR,QAJgB,MAAM,IAAI,QAAQ,SAAS,OAAO;EACjD,MAAM;EACN,UAAU,KAAK;EACf,CAAC;;AAIH,eAAsB,cAAc,QAAgB,GAA2B;CAE9E,MAAM,qBADW,MAAM,EAAE,QAAQ,gBAAgB,aAAa,OAAO,GACjC,MAClC,YAAY,QAAQ,eAAe,aACpC;CACD,MAAM,kBAAkB,mBAAmB;AAC3C,KAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,EAAE,KAAK,SACrD,OAAM,SAAS,KACd,eACA,iBAAiB,6BACjB;AAMF,KAAI,CAJY,MAAM,EAAE,QAAQ,SAAS,OAAO;EAC/C,MAAM;EACN,UAAU,EAAE,KAAK;EACjB,CAAC,CAED,OAAM,SAAS,KAAK,eAAe,iBAAiB,iBAAiB;AAEtE,QAAO"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isAPIError } from "./is-api-error.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/plugin-helper.ts
|
|
4
|
+
const getEndpointResponse = async (ctx) => {
|
|
5
|
+
const returned = ctx.context.returned;
|
|
6
|
+
if (!returned) return null;
|
|
7
|
+
if (returned instanceof Response) {
|
|
8
|
+
if (returned.status !== 200) return null;
|
|
9
|
+
return await returned.clone().json();
|
|
10
|
+
}
|
|
11
|
+
if (isAPIError(returned)) return null;
|
|
12
|
+
return returned;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { getEndpointResponse };
|
|
17
|
+
//# sourceMappingURL=plugin-helper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-helper.mjs","names":[],"sources":["../../src/utils/plugin-helper.ts"],"sourcesContent":["import { isAPIError } from \"./is-api-error\";\n\nexport const getEndpointResponse = async <T>(ctx: {\n\tcontext: {\n\t\treturned?: unknown;\n\t};\n}) => {\n\tconst returned = ctx.context.returned;\n\tif (!returned) {\n\t\treturn null;\n\t}\n\tif (returned instanceof Response) {\n\t\tif (returned.status !== 200) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (await returned.clone().json()) as T;\n\t}\n\tif (isAPIError(returned)) {\n\t\treturn null;\n\t}\n\treturn returned as T;\n};\n"],"mappings":";;;AAEA,MAAa,sBAAsB,OAAU,QAIvC;CACL,MAAM,WAAW,IAAI,QAAQ;AAC7B,KAAI,CAAC,SACJ,QAAO;AAER,KAAI,oBAAoB,UAAU;AACjC,MAAI,SAAS,WAAW,IACvB,QAAO;AAER,SAAQ,MAAM,SAAS,OAAO,CAAC,MAAM;;AAEtC,KAAI,WAAW,SAAS,CACvB,QAAO;AAER,QAAO"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/utils/shim.ts
|
|
2
|
+
const shimContext = (originalObject, newContext) => {
|
|
3
|
+
const shimmedObj = {};
|
|
4
|
+
for (const [key, value] of Object.entries(originalObject)) {
|
|
5
|
+
shimmedObj[key] = (ctx) => {
|
|
6
|
+
return value({
|
|
7
|
+
...ctx,
|
|
8
|
+
context: {
|
|
9
|
+
...newContext,
|
|
10
|
+
...ctx.context
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
shimmedObj[key].path = value.path;
|
|
15
|
+
shimmedObj[key].method = value.method;
|
|
16
|
+
shimmedObj[key].options = value.options;
|
|
17
|
+
shimmedObj[key].headers = value.headers;
|
|
18
|
+
}
|
|
19
|
+
return shimmedObj;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { shimContext };
|
|
24
|
+
//# sourceMappingURL=shim.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shim.mjs","names":[],"sources":["../../src/utils/shim.ts"],"sourcesContent":["export const shimContext = <T extends Record<string, any>>(\n\toriginalObject: T,\n\tnewContext: Record<string, any>,\n) => {\n\tconst shimmedObj: Record<string, any> = {};\n\tfor (const [key, value] of Object.entries(originalObject)) {\n\t\tshimmedObj[key] = (ctx: Record<string, any>) => {\n\t\t\treturn value({\n\t\t\t\t...ctx,\n\t\t\t\tcontext: {\n\t\t\t\t\t...newContext,\n\t\t\t\t\t...ctx.context,\n\t\t\t\t},\n\t\t\t});\n\t\t};\n\t\tshimmedObj[key].path = value.path;\n\t\tshimmedObj[key].method = value.method;\n\t\tshimmedObj[key].options = value.options;\n\t\tshimmedObj[key].headers = value.headers;\n\t}\n\treturn shimmedObj as T;\n};\n"],"mappings":";AAAA,MAAa,eACZ,gBACA,eACI;CACJ,MAAM,aAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,eAAe,EAAE;AAC1D,aAAW,QAAQ,QAA6B;AAC/C,UAAO,MAAM;IACZ,GAAG;IACH,SAAS;KACR,GAAG;KACH,GAAG,IAAI;KACP;IACD,CAAC;;AAEH,aAAW,KAAK,OAAO,MAAM;AAC7B,aAAW,KAAK,SAAS,MAAM;AAC/B,aAAW,KAAK,UAAU,MAAM;AAChC,aAAW,KAAK,UAAU,MAAM;;AAEjC,QAAO"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/utils/time.d.ts
|
|
2
|
+
type Years = "years" | "year" | "yrs" | "yr" | "y";
|
|
3
|
+
type Months = "months" | "month" | "mo";
|
|
4
|
+
type Weeks = "weeks" | "week" | "w";
|
|
5
|
+
type Days = "days" | "day" | "d";
|
|
6
|
+
type Hours = "hours" | "hour" | "hrs" | "hr" | "h";
|
|
7
|
+
type Minutes = "minutes" | "minute" | "mins" | "min" | "m";
|
|
8
|
+
type Seconds = "seconds" | "second" | "secs" | "sec" | "s";
|
|
9
|
+
type Unit = Years | Months | Weeks | Days | Hours | Minutes | Seconds;
|
|
10
|
+
type UnitAnyCase = Capitalize<Unit> | Uppercase<Unit> | Unit;
|
|
11
|
+
type Suffix = " ago" | " from now";
|
|
12
|
+
type Prefix = "+" | "-" | "+ " | "- ";
|
|
13
|
+
type BaseTimeString = `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`;
|
|
14
|
+
/**
|
|
15
|
+
* A typed string representing a time duration.
|
|
16
|
+
* Supports formats like "7d", "30m", "1 hour", "2 hours ago", "-5m", etc.
|
|
17
|
+
*/
|
|
18
|
+
type TimeString = BaseTimeString | `${BaseTimeString}${Suffix}` | `${Prefix}${BaseTimeString}`;
|
|
19
|
+
/**
|
|
20
|
+
* Parse a time string and return the value in milliseconds.
|
|
21
|
+
*
|
|
22
|
+
* @param value - A time string like "7d", "30m", "1 hour", "2 hours ago"
|
|
23
|
+
* @returns The parsed value in milliseconds
|
|
24
|
+
* @throws TypeError if the string format is invalid
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ms("1d") // 86400000
|
|
28
|
+
* ms("2 hours") // 7200000
|
|
29
|
+
* ms("30s") // 30000
|
|
30
|
+
* ms("2 hours ago") // -7200000
|
|
31
|
+
*/
|
|
32
|
+
declare function ms(value: TimeString): number;
|
|
33
|
+
/**
|
|
34
|
+
* Parse a time string and return the value in seconds.
|
|
35
|
+
*
|
|
36
|
+
* @param value - A time string like "7d", "30m", "1 hour", "2 hours ago"
|
|
37
|
+
* @returns The parsed value in seconds (rounded)
|
|
38
|
+
* @throws TypeError if the string format is invalid
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* sec("1d") // 86400
|
|
42
|
+
* sec("2 hours") // 7200
|
|
43
|
+
* sec("-30s") // -30
|
|
44
|
+
* sec("2 hours ago") // -7200
|
|
45
|
+
*/
|
|
46
|
+
declare function sec(value: TimeString): number;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { TimeString, ms, sec };
|
|
49
|
+
//# sourceMappingURL=time.d.mts.map
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
//#region src/utils/time.ts
|
|
2
|
+
const SEC = 1e3;
|
|
3
|
+
const MIN = SEC * 60;
|
|
4
|
+
const HOUR = MIN * 60;
|
|
5
|
+
const DAY = HOUR * 24;
|
|
6
|
+
const WEEK = DAY * 7;
|
|
7
|
+
const MONTH = DAY * 30;
|
|
8
|
+
const YEAR = DAY * 365.25;
|
|
9
|
+
const REGEX = /^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)(?: (ago|from now))?$/i;
|
|
10
|
+
function parse(value) {
|
|
11
|
+
const match = REGEX.exec(value);
|
|
12
|
+
if (!match || match[4] && match[1]) throw new TypeError(`Invalid time string format: "${value}". Use formats like "7d", "30m", "1 hour", etc.`);
|
|
13
|
+
const n = parseFloat(match[2]);
|
|
14
|
+
const unit = match[3].toLowerCase();
|
|
15
|
+
let result;
|
|
16
|
+
switch (unit) {
|
|
17
|
+
case "years":
|
|
18
|
+
case "year":
|
|
19
|
+
case "yrs":
|
|
20
|
+
case "yr":
|
|
21
|
+
case "y":
|
|
22
|
+
result = n * YEAR;
|
|
23
|
+
break;
|
|
24
|
+
case "months":
|
|
25
|
+
case "month":
|
|
26
|
+
case "mo":
|
|
27
|
+
result = n * MONTH;
|
|
28
|
+
break;
|
|
29
|
+
case "weeks":
|
|
30
|
+
case "week":
|
|
31
|
+
case "w":
|
|
32
|
+
result = n * WEEK;
|
|
33
|
+
break;
|
|
34
|
+
case "days":
|
|
35
|
+
case "day":
|
|
36
|
+
case "d":
|
|
37
|
+
result = n * DAY;
|
|
38
|
+
break;
|
|
39
|
+
case "hours":
|
|
40
|
+
case "hour":
|
|
41
|
+
case "hrs":
|
|
42
|
+
case "hr":
|
|
43
|
+
case "h":
|
|
44
|
+
result = n * HOUR;
|
|
45
|
+
break;
|
|
46
|
+
case "minutes":
|
|
47
|
+
case "minute":
|
|
48
|
+
case "mins":
|
|
49
|
+
case "min":
|
|
50
|
+
case "m":
|
|
51
|
+
result = n * MIN;
|
|
52
|
+
break;
|
|
53
|
+
case "seconds":
|
|
54
|
+
case "second":
|
|
55
|
+
case "secs":
|
|
56
|
+
case "sec":
|
|
57
|
+
case "s":
|
|
58
|
+
result = n * SEC;
|
|
59
|
+
break;
|
|
60
|
+
default: throw new TypeError(`Unknown time unit: "${unit}"`);
|
|
61
|
+
}
|
|
62
|
+
if (match[1] === "-" || match[4] === "ago") return -result;
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse a time string and return the value in milliseconds.
|
|
67
|
+
*
|
|
68
|
+
* @param value - A time string like "7d", "30m", "1 hour", "2 hours ago"
|
|
69
|
+
* @returns The parsed value in milliseconds
|
|
70
|
+
* @throws TypeError if the string format is invalid
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ms("1d") // 86400000
|
|
74
|
+
* ms("2 hours") // 7200000
|
|
75
|
+
* ms("30s") // 30000
|
|
76
|
+
* ms("2 hours ago") // -7200000
|
|
77
|
+
*/
|
|
78
|
+
function ms(value) {
|
|
79
|
+
return parse(value);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Parse a time string and return the value in seconds.
|
|
83
|
+
*
|
|
84
|
+
* @param value - A time string like "7d", "30m", "1 hour", "2 hours ago"
|
|
85
|
+
* @returns The parsed value in seconds (rounded)
|
|
86
|
+
* @throws TypeError if the string format is invalid
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* sec("1d") // 86400
|
|
90
|
+
* sec("2 hours") // 7200
|
|
91
|
+
* sec("-30s") // -30
|
|
92
|
+
* sec("2 hours ago") // -7200
|
|
93
|
+
*/
|
|
94
|
+
function sec(value) {
|
|
95
|
+
return Math.round(parse(value) / 1e3);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
//#endregion
|
|
99
|
+
export { ms, sec };
|
|
100
|
+
//# sourceMappingURL=time.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.mjs","names":[],"sources":["../../src/utils/time.ts"],"sourcesContent":["// Time constants (in milliseconds)\nconst SEC = 1000;\nconst MIN = SEC * 60;\nconst HOUR = MIN * 60;\nconst DAY = HOUR * 24;\nconst WEEK = DAY * 7;\nconst MONTH = DAY * 30;\nconst YEAR = DAY * 365.25;\n\n// Unit type definitions\ntype Years = \"years\" | \"year\" | \"yrs\" | \"yr\" | \"y\";\ntype Months = \"months\" | \"month\" | \"mo\";\ntype Weeks = \"weeks\" | \"week\" | \"w\";\ntype Days = \"days\" | \"day\" | \"d\";\ntype Hours = \"hours\" | \"hour\" | \"hrs\" | \"hr\" | \"h\";\ntype Minutes = \"minutes\" | \"minute\" | \"mins\" | \"min\" | \"m\";\ntype Seconds = \"seconds\" | \"second\" | \"secs\" | \"sec\" | \"s\";\ntype Unit = Years | Months | Weeks | Days | Hours | Minutes | Seconds;\ntype UnitAnyCase = Capitalize<Unit> | Uppercase<Unit> | Unit;\ntype Suffix = \" ago\" | \" from now\";\ntype Prefix = \"+\" | \"-\" | \"+ \" | \"- \";\n\n// Base time string formats\ntype BaseTimeString = `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`;\n\n/**\n * A typed string representing a time duration.\n * Supports formats like \"7d\", \"30m\", \"1 hour\", \"2 hours ago\", \"-5m\", etc.\n */\nexport type TimeString =\n\t| BaseTimeString\n\t| `${BaseTimeString}${Suffix}`\n\t| `${Prefix}${BaseTimeString}`;\n\nconst REGEX =\n\t/^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)(?: (ago|from now))?$/i;\n\nfunction parse(value: string): number {\n\tconst match = REGEX.exec(value);\n\n\tif (!match || (match[4] && match[1])) {\n\t\tthrow new TypeError(\n\t\t\t`Invalid time string format: \"${value}\". Use formats like \"7d\", \"30m\", \"1 hour\", etc.`,\n\t\t);\n\t}\n\n\tconst n = parseFloat(match[2]!);\n\tconst unit = match[3]!.toLowerCase();\n\n\tlet result: number;\n\tswitch (unit) {\n\t\tcase \"years\":\n\t\tcase \"year\":\n\t\tcase \"yrs\":\n\t\tcase \"yr\":\n\t\tcase \"y\":\n\t\t\tresult = n * YEAR;\n\t\t\tbreak;\n\t\tcase \"months\":\n\t\tcase \"month\":\n\t\tcase \"mo\":\n\t\t\tresult = n * MONTH;\n\t\t\tbreak;\n\t\tcase \"weeks\":\n\t\tcase \"week\":\n\t\tcase \"w\":\n\t\t\tresult = n * WEEK;\n\t\t\tbreak;\n\t\tcase \"days\":\n\t\tcase \"day\":\n\t\tcase \"d\":\n\t\t\tresult = n * DAY;\n\t\t\tbreak;\n\t\tcase \"hours\":\n\t\tcase \"hour\":\n\t\tcase \"hrs\":\n\t\tcase \"hr\":\n\t\tcase \"h\":\n\t\t\tresult = n * HOUR;\n\t\t\tbreak;\n\t\tcase \"minutes\":\n\t\tcase \"minute\":\n\t\tcase \"mins\":\n\t\tcase \"min\":\n\t\tcase \"m\":\n\t\t\tresult = n * MIN;\n\t\t\tbreak;\n\t\tcase \"seconds\":\n\t\tcase \"second\":\n\t\tcase \"secs\":\n\t\tcase \"sec\":\n\t\tcase \"s\":\n\t\t\tresult = n * SEC;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new TypeError(`Unknown time unit: \"${unit}\"`);\n\t}\n\n\tif (match[1] === \"-\" || match[4] === \"ago\") {\n\t\treturn -result;\n\t}\n\n\treturn result;\n}\n\n/**\n * Parse a time string and return the value in milliseconds.\n *\n * @param value - A time string like \"7d\", \"30m\", \"1 hour\", \"2 hours ago\"\n * @returns The parsed value in milliseconds\n * @throws TypeError if the string format is invalid\n *\n * @example\n * ms(\"1d\") // 86400000\n * ms(\"2 hours\") // 7200000\n * ms(\"30s\") // 30000\n * ms(\"2 hours ago\") // -7200000\n */\nexport function ms(value: TimeString): number {\n\treturn parse(value);\n}\n\n/**\n * Parse a time string and return the value in seconds.\n *\n * @param value - A time string like \"7d\", \"30m\", \"1 hour\", \"2 hours ago\"\n * @returns The parsed value in seconds (rounded)\n * @throws TypeError if the string format is invalid\n *\n * @example\n * sec(\"1d\") // 86400\n * sec(\"2 hours\") // 7200\n * sec(\"-30s\") // -30\n * sec(\"2 hours ago\") // -7200\n */\nexport function sec(value: TimeString): number {\n\treturn Math.round(parse(value) / 1000);\n}\n"],"mappings":";AACA,MAAM,MAAM;AACZ,MAAM,MAAM,MAAM;AAClB,MAAM,OAAO,MAAM;AACnB,MAAM,MAAM,OAAO;AACnB,MAAM,OAAO,MAAM;AACnB,MAAM,QAAQ,MAAM;AACpB,MAAM,OAAO,MAAM;AA2BnB,MAAM,QACL;AAED,SAAS,MAAM,OAAuB;CACrC,MAAM,QAAQ,MAAM,KAAK,MAAM;AAE/B,KAAI,CAAC,SAAU,MAAM,MAAM,MAAM,GAChC,OAAM,IAAI,UACT,gCAAgC,MAAM,iDACtC;CAGF,MAAM,IAAI,WAAW,MAAM,GAAI;CAC/B,MAAM,OAAO,MAAM,GAAI,aAAa;CAEpC,IAAI;AACJ,SAAQ,MAAR;EACC,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACJ,YAAS,IAAI;AACb;EACD,KAAK;EACL,KAAK;EACL,KAAK;AACJ,YAAS,IAAI;AACb;EACD,KAAK;EACL,KAAK;EACL,KAAK;AACJ,YAAS,IAAI;AACb;EACD,KAAK;EACL,KAAK;EACL,KAAK;AACJ,YAAS,IAAI;AACb;EACD,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACJ,YAAS,IAAI;AACb;EACD,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACJ,YAAS,IAAI;AACb;EACD,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACJ,YAAS,IAAI;AACb;EACD,QACC,OAAM,IAAI,UAAU,uBAAuB,KAAK,GAAG;;AAGrD,KAAI,MAAM,OAAO,OAAO,MAAM,OAAO,MACpC,QAAO,CAAC;AAGT,QAAO;;;;;;;;;;;;;;;AAgBR,SAAgB,GAAG,OAA2B;AAC7C,QAAO,MAAM,MAAM;;;;;;;;;;;;;;;AAgBpB,SAAgB,IAAI,OAA2B;AAC9C,QAAO,KAAK,MAAM,MAAM,MAAM,GAAG,IAAK"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/url.d.ts
|
|
2
|
+
declare function getBaseURL(url?: string, path?: string, request?: Request, loadEnv?: boolean, trustedProxyHeaders?: boolean | undefined): string | undefined;
|
|
3
|
+
declare function getOrigin(url: string): string | null;
|
|
4
|
+
declare function getProtocol(url: string): string | null;
|
|
5
|
+
declare function getHost(url: string): string | null;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { getBaseURL, getHost, getOrigin, getProtocol };
|
|
8
|
+
//# sourceMappingURL=url.d.mts.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { env } from "@better-auth/core/env";
|
|
2
|
+
import { BetterAuthError } from "@better-auth/core/error";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/url.ts
|
|
5
|
+
function checkHasPath(url) {
|
|
6
|
+
try {
|
|
7
|
+
return (new URL(url).pathname.replace(/\/+$/, "") || "/") !== "/";
|
|
8
|
+
} catch {
|
|
9
|
+
throw new BetterAuthError(`Invalid base URL: ${url}. Please provide a valid base URL.`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function assertHasProtocol(url) {
|
|
13
|
+
try {
|
|
14
|
+
const parsedUrl = new URL(url);
|
|
15
|
+
if (parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:") throw new BetterAuthError(`Invalid base URL: ${url}. URL must include 'http://' or 'https://'`);
|
|
16
|
+
} catch (error) {
|
|
17
|
+
if (error instanceof BetterAuthError) throw error;
|
|
18
|
+
throw new BetterAuthError(`Invalid base URL: ${url}. Please provide a valid base URL.`, { cause: error });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function withPath(url, path = "/api/auth") {
|
|
22
|
+
assertHasProtocol(url);
|
|
23
|
+
if (checkHasPath(url)) return url;
|
|
24
|
+
const trimmedUrl = url.replace(/\/+$/, "");
|
|
25
|
+
if (!path || path === "/") return trimmedUrl;
|
|
26
|
+
path = path.startsWith("/") ? path : `/${path}`;
|
|
27
|
+
return `${trimmedUrl}${path}`;
|
|
28
|
+
}
|
|
29
|
+
function validateProxyHeader(header, type) {
|
|
30
|
+
if (!header || header.trim() === "") return false;
|
|
31
|
+
if (type === "proto") return header === "http" || header === "https";
|
|
32
|
+
if (type === "host") {
|
|
33
|
+
if ([
|
|
34
|
+
/\.\./,
|
|
35
|
+
/\0/,
|
|
36
|
+
/[\s]/,
|
|
37
|
+
/^[.]/,
|
|
38
|
+
/[<>'"]/,
|
|
39
|
+
/javascript:/i,
|
|
40
|
+
/file:/i,
|
|
41
|
+
/data:/i
|
|
42
|
+
].some((pattern) => pattern.test(header))) return false;
|
|
43
|
+
return /^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(:[0-9]{1,5})?$/.test(header) || /^(\d{1,3}\.){3}\d{1,3}(:[0-9]{1,5})?$/.test(header) || /^\[[0-9a-fA-F:]+\](:[0-9]{1,5})?$/.test(header) || /^localhost(:[0-9]{1,5})?$/i.test(header);
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
function getBaseURL(url, path, request, loadEnv, trustedProxyHeaders) {
|
|
48
|
+
if (url) return withPath(url, path);
|
|
49
|
+
if (loadEnv !== false) {
|
|
50
|
+
const fromEnv = env.BETTER_AUTH_URL || env.NEXT_PUBLIC_BETTER_AUTH_URL || env.PUBLIC_BETTER_AUTH_URL || env.NUXT_PUBLIC_BETTER_AUTH_URL || env.NUXT_PUBLIC_AUTH_URL || (env.BASE_URL !== "/" ? env.BASE_URL : void 0);
|
|
51
|
+
if (fromEnv) return withPath(fromEnv, path);
|
|
52
|
+
}
|
|
53
|
+
const fromRequest = request?.headers.get("x-forwarded-host");
|
|
54
|
+
const fromRequestProto = request?.headers.get("x-forwarded-proto");
|
|
55
|
+
if (fromRequest && fromRequestProto && trustedProxyHeaders) {
|
|
56
|
+
if (validateProxyHeader(fromRequestProto, "proto") && validateProxyHeader(fromRequest, "host")) try {
|
|
57
|
+
return withPath(`${fromRequestProto}://${fromRequest}`, path);
|
|
58
|
+
} catch (_error) {}
|
|
59
|
+
}
|
|
60
|
+
if (request) {
|
|
61
|
+
const url = getOrigin(request.url);
|
|
62
|
+
if (!url) throw new BetterAuthError("Could not get origin from request. Please provide a valid base URL.");
|
|
63
|
+
return withPath(url, path);
|
|
64
|
+
}
|
|
65
|
+
if (typeof window !== "undefined" && window.location) return withPath(window.location.origin, path);
|
|
66
|
+
}
|
|
67
|
+
function getOrigin(url) {
|
|
68
|
+
try {
|
|
69
|
+
const parsedUrl = new URL(url);
|
|
70
|
+
return parsedUrl.origin === "null" ? null : parsedUrl.origin;
|
|
71
|
+
} catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function getProtocol(url) {
|
|
76
|
+
try {
|
|
77
|
+
return new URL(url).protocol;
|
|
78
|
+
} catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function getHost(url) {
|
|
83
|
+
try {
|
|
84
|
+
return new URL(url).host;
|
|
85
|
+
} catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
//#endregion
|
|
91
|
+
export { getBaseURL, getHost, getOrigin, getProtocol };
|
|
92
|
+
//# sourceMappingURL=url.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.mjs","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import { env } from \"@better-auth/core/env\";\nimport { BetterAuthError } from \"@better-auth/core/error\";\n\nfunction checkHasPath(url: string): boolean {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\tconst pathname = parsedUrl.pathname.replace(/\\/+$/, \"\") || \"/\";\n\t\treturn pathname !== \"/\";\n\t} catch {\n\t\tthrow new BetterAuthError(\n\t\t\t`Invalid base URL: ${url}. Please provide a valid base URL.`,\n\t\t);\n\t}\n}\n\nfunction assertHasProtocol(url: string): void {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\tif (parsedUrl.protocol !== \"http:\" && parsedUrl.protocol !== \"https:\") {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t`Invalid base URL: ${url}. URL must include 'http://' or 'https://'`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tif (error instanceof BetterAuthError) {\n\t\t\tthrow error;\n\t\t}\n\t\tthrow new BetterAuthError(\n\t\t\t`Invalid base URL: ${url}. Please provide a valid base URL.`,\n\t\t\t{\n\t\t\t\tcause: error,\n\t\t\t},\n\t\t);\n\t}\n}\n\nfunction withPath(url: string, path = \"/api/auth\") {\n\tassertHasProtocol(url);\n\n\tconst hasPath = checkHasPath(url);\n\tif (hasPath) {\n\t\treturn url;\n\t}\n\n\tconst trimmedUrl = url.replace(/\\/+$/, \"\");\n\n\tif (!path || path === \"/\") {\n\t\treturn trimmedUrl;\n\t}\n\n\tpath = path.startsWith(\"/\") ? path : `/${path}`;\n\treturn `${trimmedUrl}${path}`;\n}\n\nfunction validateProxyHeader(header: string, type: \"host\" | \"proto\"): boolean {\n\tif (!header || header.trim() === \"\") {\n\t\treturn false;\n\t}\n\n\tif (type === \"proto\") {\n\t\t// Only allow http and https protocols\n\t\treturn header === \"http\" || header === \"https\";\n\t}\n\n\tif (type === \"host\") {\n\t\tconst suspiciousPatterns = [\n\t\t\t/\\.\\./, // Path traversal\n\t\t\t/\\0/, // Null bytes\n\t\t\t/[\\s]/, // Whitespace (except legitimate spaces that should be trimmed)\n\t\t\t/^[.]/, // Starting with dot\n\t\t\t/[<>'\"]/, // HTML/script injection characters\n\t\t\t/javascript:/i, // Protocol injection\n\t\t\t/file:/i, // File protocol\n\t\t\t/data:/i, // Data protocol\n\t\t];\n\n\t\tif (suspiciousPatterns.some((pattern) => pattern.test(header))) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Basic hostname validation (allows localhost, IPs, and domains with ports)\n\t\t// This is a simple check, not exhaustive RFC validation\n\t\tconst hostnameRegex =\n\t\t\t/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(:[0-9]{1,5})?$/;\n\n\t\t// Also allow IPv4 addresses\n\t\tconst ipv4Regex = /^(\\d{1,3}\\.){3}\\d{1,3}(:[0-9]{1,5})?$/;\n\n\t\t// Also allow IPv6 addresses in brackets\n\t\tconst ipv6Regex = /^\\[[0-9a-fA-F:]+\\](:[0-9]{1,5})?$/;\n\n\t\t// Allow localhost variations\n\t\tconst localhostRegex = /^localhost(:[0-9]{1,5})?$/i;\n\n\t\treturn (\n\t\t\thostnameRegex.test(header) ||\n\t\t\tipv4Regex.test(header) ||\n\t\t\tipv6Regex.test(header) ||\n\t\t\tlocalhostRegex.test(header)\n\t\t);\n\t}\n\n\treturn false;\n}\n\nexport function getBaseURL(\n\turl?: string,\n\tpath?: string,\n\trequest?: Request,\n\tloadEnv?: boolean,\n\ttrustedProxyHeaders?: boolean | undefined,\n) {\n\tif (url) {\n\t\treturn withPath(url, path);\n\t}\n\n\tif (loadEnv !== false) {\n\t\tconst fromEnv =\n\t\t\tenv.BETTER_AUTH_URL ||\n\t\t\tenv.NEXT_PUBLIC_BETTER_AUTH_URL ||\n\t\t\tenv.PUBLIC_BETTER_AUTH_URL ||\n\t\t\tenv.NUXT_PUBLIC_BETTER_AUTH_URL ||\n\t\t\tenv.NUXT_PUBLIC_AUTH_URL ||\n\t\t\t(env.BASE_URL !== \"/\" ? env.BASE_URL : undefined);\n\n\t\tif (fromEnv) {\n\t\t\treturn withPath(fromEnv, path);\n\t\t}\n\t}\n\n\tconst fromRequest = request?.headers.get(\"x-forwarded-host\");\n\tconst fromRequestProto = request?.headers.get(\"x-forwarded-proto\");\n\tif (fromRequest && fromRequestProto && trustedProxyHeaders) {\n\t\tif (\n\t\t\tvalidateProxyHeader(fromRequestProto, \"proto\") &&\n\t\t\tvalidateProxyHeader(fromRequest, \"host\")\n\t\t) {\n\t\t\ttry {\n\t\t\t\treturn withPath(`${fromRequestProto}://${fromRequest}`, path);\n\t\t\t} catch (_error) {}\n\t\t}\n\t}\n\n\tif (request) {\n\t\tconst url = getOrigin(request.url);\n\t\tif (!url) {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t\"Could not get origin from request. Please provide a valid base URL.\",\n\t\t\t);\n\t\t}\n\t\treturn withPath(url, path);\n\t}\n\n\tif (typeof window !== \"undefined\" && window.location) {\n\t\treturn withPath(window.location.origin, path);\n\t}\n\treturn undefined;\n}\n\nexport function getOrigin(url: string) {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\t// For custom URL schemes (like exp://), the origin property returns the string \"null\"\n\t\t// instead of null. We need to handle this case and return null so the fallback logic works.\n\t\treturn parsedUrl.origin === \"null\" ? null : parsedUrl.origin;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function getProtocol(url: string) {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\treturn parsedUrl.protocol;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function getHost(url: string) {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\treturn parsedUrl.host;\n\t} catch {\n\t\treturn null;\n\t}\n}\n"],"mappings":";;;;AAGA,SAAS,aAAa,KAAsB;AAC3C,KAAI;AAGH,UAFkB,IAAI,IAAI,IAAI,CACH,SAAS,QAAQ,QAAQ,GAAG,IAAI,SACvC;SACb;AACP,QAAM,IAAI,gBACT,qBAAqB,IAAI,oCACzB;;;AAIH,SAAS,kBAAkB,KAAmB;AAC7C,KAAI;EACH,MAAM,YAAY,IAAI,IAAI,IAAI;AAC9B,MAAI,UAAU,aAAa,WAAW,UAAU,aAAa,SAC5D,OAAM,IAAI,gBACT,qBAAqB,IAAI,4CACzB;UAEM,OAAO;AACf,MAAI,iBAAiB,gBACpB,OAAM;AAEP,QAAM,IAAI,gBACT,qBAAqB,IAAI,qCACzB,EACC,OAAO,OACP,CACD;;;AAIH,SAAS,SAAS,KAAa,OAAO,aAAa;AAClD,mBAAkB,IAAI;AAGtB,KADgB,aAAa,IAAI,CAEhC,QAAO;CAGR,MAAM,aAAa,IAAI,QAAQ,QAAQ,GAAG;AAE1C,KAAI,CAAC,QAAQ,SAAS,IACrB,QAAO;AAGR,QAAO,KAAK,WAAW,IAAI,GAAG,OAAO,IAAI;AACzC,QAAO,GAAG,aAAa;;AAGxB,SAAS,oBAAoB,QAAgB,MAAiC;AAC7E,KAAI,CAAC,UAAU,OAAO,MAAM,KAAK,GAChC,QAAO;AAGR,KAAI,SAAS,QAEZ,QAAO,WAAW,UAAU,WAAW;AAGxC,KAAI,SAAS,QAAQ;AAYpB,MAX2B;GAC1B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,CAEsB,MAAM,YAAY,QAAQ,KAAK,OAAO,CAAC,CAC7D,QAAO;AAiBR,SAXC,8GAYc,KAAK,OAAO,IATT,wCAUP,KAAK,OAAO,IAPL,oCAQP,KAAK,OAAO,IALA,6BAMP,KAAK,OAAO;;AAI7B,QAAO;;AAGR,SAAgB,WACf,KACA,MACA,SACA,SACA,qBACC;AACD,KAAI,IACH,QAAO,SAAS,KAAK,KAAK;AAG3B,KAAI,YAAY,OAAO;EACtB,MAAM,UACL,IAAI,mBACJ,IAAI,+BACJ,IAAI,0BACJ,IAAI,+BACJ,IAAI,yBACH,IAAI,aAAa,MAAM,IAAI,WAAW;AAExC,MAAI,QACH,QAAO,SAAS,SAAS,KAAK;;CAIhC,MAAM,cAAc,SAAS,QAAQ,IAAI,mBAAmB;CAC5D,MAAM,mBAAmB,SAAS,QAAQ,IAAI,oBAAoB;AAClE,KAAI,eAAe,oBAAoB,qBACtC;MACC,oBAAoB,kBAAkB,QAAQ,IAC9C,oBAAoB,aAAa,OAAO,CAExC,KAAI;AACH,UAAO,SAAS,GAAG,iBAAiB,KAAK,eAAe,KAAK;WACrD,QAAQ;;AAInB,KAAI,SAAS;EACZ,MAAM,MAAM,UAAU,QAAQ,IAAI;AAClC,MAAI,CAAC,IACJ,OAAM,IAAI,gBACT,sEACA;AAEF,SAAO,SAAS,KAAK,KAAK;;AAG3B,KAAI,OAAO,WAAW,eAAe,OAAO,SAC3C,QAAO,SAAS,OAAO,SAAS,QAAQ,KAAK;;AAK/C,SAAgB,UAAU,KAAa;AACtC,KAAI;EACH,MAAM,YAAY,IAAI,IAAI,IAAI;AAG9B,SAAO,UAAU,WAAW,SAAS,OAAO,UAAU;SAC/C;AACP,SAAO;;;AAIT,SAAgB,YAAY,KAAa;AACxC,KAAI;AAEH,SADkB,IAAI,IAAI,IAAI,CACb;SACV;AACP,SAAO;;;AAIT,SAAgB,QAAQ,KAAa;AACpC,KAAI;AAEH,SADkB,IAAI,IAAI,IAAI,CACb;SACV;AACP,SAAO"}
|