{"version":3,"sources":["/../../node_modules/jose/dist/browser/runtime/get_sign_verify_key.js","/../../node_modules/@logto/js/lib/utils/errors.js","/../../node_modules/jose/dist/browser/runtime/normalize_key.js","/../../node_modules/@silverhand/essentials/lib/utilities/function.js","/../../node_modules/jose/dist/browser/runtime/webcrypto.js","/../../node_modules/jose/dist/browser/lib/check_key_type.js","/../../node_modules/@logto/client/lib/utils/index.js","/../../node_modules/@logto/client/lib/adapter/index.js","/../../node_modules/@logto/client/lib/index.js","/../../node_modules/@logto/js/lib/core/user-info.js","/../../node_modules/@silverhand/essentials/lib/index.js","/../../node_modules/@logto/client/lib/types/index.js","/../../node_modules/jose/dist/browser/lib/is_jwk.js","/../../node_modules/@logto/js/lib/core/sign-in.js","/../../node_modules/@logto/js/lib/utils/id-token.js","/../../node_modules/@logto/client/lib/errors.js","/../../node_modules/jose/dist/browser/jwks/local.js","/../../node_modules/jose/dist/browser/lib/secs.js","/../../node_modules/jose/dist/browser/key/import.js","/../../node_modules/@logto/js/lib/consts/openid.js","/../../node_modules/jose/dist/browser/lib/crypto_key.js","/../../node_modules/jose/dist/browser/lib/validate_algorithms.js","/../../node_modules/jose/dist/browser/jwt/verify.js","/../../node_modules/jose/dist/browser/runtime/verify.js","/../../node_modules/js-base64/base64.mjs","/../../node_modules/@silverhand/essentials/lib/utilities/string.js","/../../node_modules/@logto/js/lib/utils/access-token.js","/../../node_modules/jose/dist/browser/jwks/remote.js","/../../node_modules/jose/dist/browser/index.js","/../../node_modules/@logto/js/lib/utils/arbitrary-object.js","/../../node_modules/@logto/client/lib/adapter/types.js","/../../node_modules/jose/dist/browser/lib/buffer_utils.js","/../../node_modules/jose/dist/browser/lib/epoch.js","/../../node_modules/@logto/js/lib/utils/callback-uri.js","/../../node_modules/@logto/js/lib/consts/index.js","/../../node_modules/@logto/browser/lib/storage.js","/../../node_modules/jose/dist/browser/lib/is_object.js","/../../node_modules/jose/dist/browser/lib/invalid_key_input.js","/../../node_modules/jose/dist/browser/jws/flattened/verify.js","/../../node_modules/@silverhand/essentials/lib/utilities/array.js","/../../node_modules/@silverhand/essentials/lib/utilities/assertions.js","/../../node_modules/jose/dist/browser/lib/is_disjoint.js","/../../node_modules/jose/dist/browser/lib/validate_crit.js","/../../node_modules/@logto/browser/lib/cache.js","/../../node_modules/jose/dist/browser/runtime/fetch_jwks.js","/../../node_modules/map-obj/index.js","/../../node_modules/@logto/js/lib/core/oidc-config.js","/../../node_modules/@logto/client/lib/client.js","/../../node_modules/@logto/js/lib/index.js","/../../node_modules/jose/dist/browser/lib/jwt_claims_set.js","/../../node_modules/camelcase-keys/node_modules/camelcase/index.js","/../../node_modules/@logto/js/lib/core/revoke.js","/../../node_modules/camelcase-keys/index.js","/../../node_modules/jose/dist/browser/runtime/subtle_dsa.js","/../../node_modules/@logto/client/lib/utils/memoize.js","/../../node_modules/@logto/client/lib/adapter/defaults.js","/../../node_modules/jose/dist/browser/jws/compact/verify.js","/../../node_modules/@logto/browser/lib/utils/generators.js","/../../node_modules/quick-lru/index.js","/../../node_modules/@logto/client/lib/utils/once.js","/../../node_modules/@logto/client/lib/utils/requester.js","/../../node_modules/jose/dist/browser/runtime/is_key_like.js","/../../node_modules/@logto/js/lib/core/fetch-token.js","/../../node_modules/jose/dist/browser/runtime/check_key_length.js","/../../node_modules/jose/dist/browser/runtime/jwk_to_key.js","/../../node_modules/@logto/js/lib/utils/scopes.js","/../../node_modules/jose/dist/browser/util/errors.js","/../../node_modules/@logto/js/lib/core/sign-out.js","/../../node_modules/jose/dist/browser/runtime/base64url.js","/../../node_modules/@silverhand/essentials/lib/utilities/conditional.js","/../../node_modules/@logto/browser/lib/index.js"],"sourcesContent":["import crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkSigCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nimport normalize from './normalize_key.js';\nexport default async function getCryptoKey(alg, key, usage) {\n if (usage === 'sign') {\n key = await normalize.normalizePrivateKey(key, alg);\n }\n if (usage === 'verify') {\n key = await normalize.normalizePublicKey(key, alg);\n }\n if (isCryptoKey(key)) {\n checkSigCryptoKey(key, alg, usage);\n return key;\n }\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array', 'JSON Web Key'));\n}\n","import { isArbitraryObject } from './arbitrary-object.js';\n\nconst logtoErrorCodes = Object.freeze({\n 'id_token.invalid_iat': 'Invalid issued at time in the ID token',\n 'id_token.invalid_token': 'Invalid ID token',\n 'callback_uri_verification.redirect_uri_mismatched': 'The callback URI mismatches the redirect URI.',\n 'callback_uri_verification.error_found': 'Error found in the callback URI',\n 'callback_uri_verification.missing_state': 'Missing state in the callback URI',\n 'callback_uri_verification.state_mismatched': 'State mismatched in the callback URI',\n 'callback_uri_verification.missing_code': 'Missing code in the callback URI',\n crypto_subtle_unavailable: 'Crypto.subtle is unavailable in insecure contexts (non-HTTPS).',\n unexpected_response_error: 'Unexpected response error from the server.',\n});\nclass LogtoError extends Error {\n constructor(code, data) {\n super(logtoErrorCodes[code]);\n this.code = code;\n this.data = data;\n this.name = 'LogtoError';\n }\n}\nconst isLogtoRequestError = (data) => {\n if (!isArbitraryObject(data)) {\n return false;\n }\n return data instanceof Error && data.name === 'LogtoRequestError';\n};\nconst isLogtoRequestErrorJson = (data) => {\n if (!isArbitraryObject(data)) {\n return false;\n }\n return typeof data.code === 'string' && typeof data.message === 'string';\n};\nclass LogtoRequestError extends Error {\n constructor(code, message, \n /** The original response object from the server. */\n cause) {\n super(message);\n this.code = code;\n this.cause = cause;\n this.name = 'LogtoRequestError';\n }\n}\nclass OidcError {\n constructor(error, errorDescription) {\n this.error = error;\n this.errorDescription = errorDescription;\n this.name = 'OidcError';\n }\n}\n\nexport { LogtoError, LogtoRequestError, OidcError, isLogtoRequestError, isLogtoRequestErrorJson };\n","import { isJWK } from '../lib/is_jwk.js';\nimport { decode } from './base64url.js';\nimport importJWK from './jwk_to_key.js';\nconst exportKeyValue = (k) => decode(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg, freeze = false) => {\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await importJWK({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n delete jwk.d;\n delete jwk.dp;\n delete jwk.dq;\n delete jwk.p;\n delete jwk.q;\n delete jwk.qi;\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n pubCache || (pubCache = new WeakMap());\n return importAndCache(pubCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n pubCache || (pubCache = new WeakMap());\n const cryptoKey = importAndCache(pubCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n privCache || (privCache = new WeakMap());\n return importAndCache(privCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n privCache || (privCache = new WeakMap());\n const cryptoKey = importAndCache(privCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nexport default { normalizePublicKey, normalizePrivateKey };\n","// Intended\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => { };\nconst isPromise = (value) => value !== null &&\n (typeof value === 'object' || typeof value === 'function') &&\n 'then' in value &&\n typeof value.then === 'function';\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nconst tryThat = (exec, onError) => {\n const handleError = (error) => {\n if (onError instanceof Error) {\n throw onError;\n }\n return onError(error);\n };\n try {\n const unwrapped = typeof exec === 'function' ? exec() : exec;\n // eslint-disable-next-line promise/prefer-await-to-then\n return isPromise(unwrapped) ? unwrapped.catch(handleError) : unwrapped;\n }\n catch (error) {\n return handleError(error);\n }\n};\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nconst trySafe = (exec, onError) => {\n try {\n const unwrapped = typeof exec === 'function' ? exec() : exec;\n return isPromise(unwrapped)\n ? // eslint-disable-next-line promise/prefer-await-to-then\n unwrapped.catch((error) => {\n onError?.(error);\n })\n : unwrapped;\n }\n catch (error) {\n onError?.(error);\n }\n};\n\nexport { isPromise, noop, trySafe, tryThat };\n","export default crypto;\nexport const isCryptoKey = (key) => key instanceof CryptoKey;\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike, { types } from '../runtime/is_key_like.js';\nimport * as jwk from './is_jwk.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n if (key.use !== undefined && key.use !== 'sig') {\n throw new TypeError('Invalid key for this operation, when present its use must be sig');\n }\n if (key.key_ops !== undefined && key.key_ops.includes?.(usage) !== true) {\n throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${usage}`);\n }\n if (key.alg !== undefined && key.alg !== alg) {\n throw new TypeError(`Invalid key for this operation, when present its alg must be ${alg}`);\n }\n return true;\n};\nconst symmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (key instanceof Uint8Array)\n return;\n if (allowJwk && jwk.isJWK(key)) {\n if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, 'Uint8Array', allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (allowJwk && jwk.isJWK(key)) {\n switch (usage) {\n case 'sign':\n if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n case 'verify':\n if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n }\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n }\n if (key.algorithm && usage === 'verify' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n }\n if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n }\n};\nfunction checkKeyType(allowJwk, alg, key, usage) {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A\\d{3}(?:GCM)?KW$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key, usage, allowJwk);\n }\n else {\n asymmetricTypeCheck(alg, key, usage, allowJwk);\n }\n}\nexport default checkKeyType.bind(undefined, false);\nexport const checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n","import { discoveryPath } from '@logto/js';\nimport { conditionalString } from '@silverhand/essentials';\n\nconst buildAccessTokenKey = (resource = '', organizationId, scopes = []) => `${scopes.slice().sort().join(' ')}@${resource}${conditionalString(organizationId && `#${organizationId}`)}`;\nconst getDiscoveryEndpoint = (endpoint) => new URL(discoveryPath, endpoint).toString();\n\nexport { buildAccessTokenKey, getDiscoveryEndpoint };\n","import { trySafe, conditional } from '@silverhand/essentials';\nexport { CacheKey, PersistKey } from './types.js';\n\nclass ClientAdapterInstance {\n /* END OF IMPLEMENTATION */\n constructor(adapter) {\n // eslint-disable-next-line @silverhand/fp/no-mutating-assign\n Object.assign(this, adapter);\n }\n async setStorageItem(key, value) {\n if (!value) {\n await this.storage.removeItem(key);\n return;\n }\n await this.storage.setItem(key, value);\n }\n /**\n * Try to get the string value from the cache and parse as JSON.\n * Return the parsed value if it is an object, return `undefined` otherwise.\n *\n * @param key The cache key to get value from.\n */\n async getCachedObject(key) {\n const cached = await trySafe(async () => {\n const data = await this.unstable_cache?.getItem(key);\n // It's actually `unknown`\n // eslint-disable-next-line no-restricted-syntax\n return conditional(data && JSON.parse(data));\n });\n if (cached && typeof cached === 'object') {\n // Trust cache for now\n // eslint-disable-next-line no-restricted-syntax\n return cached;\n }\n }\n /**\n * Try to get the value from the cache first, if it doesn't exist in cache,\n * run the getter function and store the result into cache.\n *\n * @param key The cache key to get value from.\n */\n async getWithCache(key, getter) {\n const cached = await this.getCachedObject(key);\n if (cached) {\n return cached;\n }\n const result = await getter();\n await this.unstable_cache?.setItem(key, JSON.stringify(result));\n return result;\n }\n}\n\nexport { ClientAdapterInstance };\n","import { DefaultJwtVerifier } from './adapter/defaults.js';\nimport { StandardLogtoClient } from './client.js';\nexport { LogtoError, LogtoRequestError, OidcError, Prompt, ReservedResource, ReservedScope, UserScope, buildOrganizationUrn, getOrganizationIdFromUrn, isLogtoRequestError, organizationUrnPrefix } from '@logto/js';\nexport { LogtoClientError } from './errors.js';\nimport '@silverhand/essentials';\nexport { CacheKey, PersistKey } from './adapter/types.js';\nexport { createRequester } from './utils/requester.js';\nexport { isLogtoAccessTokenMap, isLogtoSignInSessionItem, normalizeLogtoConfig } from './types/index.js';\n\n/**\n * The Logto base client class that provides the essential methods for\n * interacting with the Logto server.\n *\n * It also provides an adapter object that allows the customizations of the\n * client behavior for different environments.\n */\nclass LogtoClient extends StandardLogtoClient {\n constructor(logtoConfig, adapter, buildJwtVerifier) {\n super(logtoConfig, adapter, buildJwtVerifier ?? ((client) => new DefaultJwtVerifier(client)));\n }\n}\n\nexport { StandardLogtoClient, LogtoClient as default };\n","const fetchUserInfo = async (userInfoEndpoint, accessToken, requester) => requester(userInfoEndpoint, {\n headers: { Authorization: `Bearer ${accessToken}` },\n});\n\nexport { fetchUserInfo };\n","function a(a,i,n,r){a._m(i);var c=n(\"98b7977c\");a._(i,\"deduplicate\",c);var t=n(\"fa921929\");a._(i,\"conditional\",t),a._(i,\"conditionalString\",t);var _=n(\"09154738\");a._(i,\"trySafe\",_);var e=n(\"6ac37326\");a._(i,\"urlSafeBase64\",e);}","import { Prompt, withReservedScopes, UserScope, ReservedResource, isArbitraryObject } from '@logto/js';\nimport { deduplicate } from '@silverhand/essentials';\n\n/**\n * Normalize the Logto client configuration per the following rules:\n *\n * - Add default scopes (`openid`, `offline_access` and `profile`) if not provided and\n * `includeReservedScopes` is `true`.\n * - Add {@link ReservedResource.Organization} to resources if {@link UserScope.Organizations} is\n * included in scopes.\n *\n * @param config The Logto client configuration to be normalized.\n * @returns The normalized Logto client configuration.\n */\nconst normalizeLogtoConfig = (config) => {\n const { prompt = Prompt.Consent, scopes = [], resources, ...rest } = config;\n const includeReservedScopes = config.includeReservedScopes ?? true;\n return {\n ...rest,\n prompt,\n scopes: includeReservedScopes ? withReservedScopes(scopes).split(' ') : scopes,\n resources: scopes.includes(UserScope.Organizations)\n ? deduplicate([...(resources ?? []), ReservedResource.Organization])\n : resources,\n };\n};\nconst isLogtoSignInSessionItem = (data) => {\n if (!isArbitraryObject(data)) {\n return false;\n }\n return ['redirectUri', 'codeVerifier', 'state'].every((key) => typeof data[key] === 'string');\n};\nconst isLogtoAccessTokenMap = (data) => {\n if (!isArbitraryObject(data)) {\n return false;\n }\n return Object.values(data).every((value) => {\n if (!isArbitraryObject(value)) {\n return false;\n }\n return (typeof value.token === 'string' &&\n typeof value.scope === 'string' &&\n typeof value.expiresAt === 'number');\n });\n};\n\nexport { isLogtoAccessTokenMap, isLogtoSignInSessionItem, normalizeLogtoConfig };\n","import isObject from './is_object.js';\nexport function isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nexport function isPrivateJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'string';\n}\nexport function isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nexport function isSecretJWK(key) {\n return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n","import { QueryKey, Prompt } from '../consts/index.js';\nimport { withReservedScopes } from '../utils/scopes.js';\n\nconst codeChallengeMethod = 'S256';\nconst responseType = 'code';\nconst buildPrompt = (prompt) => {\n if (Array.isArray(prompt)) {\n return prompt.join(' ');\n }\n return prompt ?? Prompt.Consent;\n};\n// eslint-disable-next-line complexity\nconst generateSignInUri = ({ authorizationEndpoint, clientId, redirectUri, codeChallenge, state, scopes, resources, prompt, firstScreen, identifiers: identifier, interactionMode, loginHint, directSignIn, extraParams, includeReservedScopes = true, }) => {\n const urlSearchParameters = new URLSearchParams({\n [QueryKey.ClientId]: clientId,\n [QueryKey.RedirectUri]: redirectUri,\n [QueryKey.CodeChallenge]: codeChallenge,\n [QueryKey.CodeChallengeMethod]: codeChallengeMethod,\n [QueryKey.State]: state,\n [QueryKey.ResponseType]: responseType,\n [QueryKey.Prompt]: buildPrompt(prompt),\n });\n const computedScopes = includeReservedScopes ? withReservedScopes(scopes) : scopes?.join(' ');\n if (computedScopes) {\n urlSearchParameters.append(QueryKey.Scope, computedScopes);\n }\n if (loginHint) {\n urlSearchParameters.append(QueryKey.LoginHint, loginHint);\n }\n if (directSignIn) {\n urlSearchParameters.append(QueryKey.DirectSignIn, `${directSignIn.method}:${directSignIn.target}`);\n }\n for (const resource of resources ?? []) {\n urlSearchParameters.append(QueryKey.Resource, resource);\n }\n if (firstScreen) {\n urlSearchParameters.append(QueryKey.FirstScreen, firstScreen);\n }\n // @deprecated Remove later\n else if (interactionMode) {\n urlSearchParameters.append(QueryKey.InteractionMode, interactionMode);\n }\n if (identifier && identifier.length > 0) {\n urlSearchParameters.append(QueryKey.Identifier, identifier.join(' '));\n }\n if (extraParams) {\n for (const [key, value] of Object.entries(extraParams)) {\n urlSearchParameters.append(key, value);\n }\n }\n return `${authorizationEndpoint}?${urlSearchParameters.toString()}`;\n};\n\nexport { generateSignInUri };\n","import { urlSafeBase64 } from '@silverhand/essentials';\nimport { isArbitraryObject } from './arbitrary-object.js';\nimport { LogtoError } from './errors.js';\n\n/* eslint-disable complexity */\n/**\n * @link [ID Token](https://openid.net/specs/openid-connect-core-1_0.html#IDToken)\n */\nfunction assertIdTokenClaims(data) {\n if (!isArbitraryObject(data)) {\n throw new TypeError('IdToken is expected to be an object');\n }\n for (const key of ['iss', 'sub', 'aud']) {\n if (typeof data[key] !== 'string') {\n throw new TypeError(`At path: IdToken.${key}: expected a string`);\n }\n }\n for (const key of ['exp', 'iat']) {\n if (typeof data[key] !== 'number') {\n throw new TypeError(`At path: IdToken.${key}: expected a number`);\n }\n }\n for (const key of ['at_hash', 'name', 'username', 'picture', 'email', 'phone_number']) {\n if (data[key] === undefined) {\n continue;\n }\n if (typeof data[key] !== 'string' && data[key] !== null) {\n throw new TypeError(`At path: IdToken.${key}: expected null or a string`);\n }\n }\n for (const key of ['email_verified', 'phone_number_verified']) {\n if (data[key] === undefined) {\n continue;\n }\n if (typeof data[key] !== 'boolean') {\n throw new TypeError(`At path: IdToken.${key}: expected a boolean`);\n }\n }\n}\n/* eslint-enable complexity */\nconst decodeIdToken = (token) => {\n const { 1: encodedPayload } = token.split('.');\n if (!encodedPayload) {\n throw new LogtoError('id_token.invalid_token');\n }\n const json = urlSafeBase64.decode(encodedPayload);\n const idTokenClaims = JSON.parse(json);\n assertIdTokenClaims(idTokenClaims);\n return idTokenClaims;\n};\n\nexport { decodeIdToken };\n","import { UserScope } from '@logto/js';\n\nconst logtoClientErrorCodes = Object.freeze({\n 'sign_in_session.invalid': 'Invalid sign-in session.',\n 'sign_in_session.not_found': 'Sign-in session not found.',\n not_authenticated: 'Not authenticated.',\n fetch_user_info_failed: 'Unable to fetch user info. The access token may be invalid.',\n user_cancelled: 'The user cancelled the action.',\n missing_scope_organizations: `The \\`${UserScope.Organizations}\\` scope is required`,\n});\nclass LogtoClientError extends Error {\n constructor(code, data) {\n super(logtoClientErrorCodes[code]);\n this.name = 'LogtoClientError';\n this.code = code;\n this.data = data;\n }\n}\n\nexport { LogtoClientError };\n","import { importJWK } from '../key/import.js';\nimport { JWKSInvalid, JOSENotSupported, JWKSNoMatchingKey, JWKSMultipleMatchingKeys, } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nfunction getKtyFromAlg(alg) {\n switch (typeof alg === 'string' && alg.slice(0, 2)) {\n case 'RS':\n case 'PS':\n return 'RSA';\n case 'ES':\n return 'EC';\n case 'Ed':\n return 'OKP';\n default:\n throw new JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n }\n}\nfunction isJWKSLike(jwks) {\n return (jwks &&\n typeof jwks === 'object' &&\n Array.isArray(jwks.keys) &&\n jwks.keys.every(isJWKLike));\n}\nfunction isJWKLike(key) {\n return isObject(key);\n}\nfunction clone(obj) {\n if (typeof structuredClone === 'function') {\n return structuredClone(obj);\n }\n return JSON.parse(JSON.stringify(obj));\n}\nclass LocalJWKSet {\n constructor(jwks) {\n this._cached = new WeakMap();\n if (!isJWKSLike(jwks)) {\n throw new JWKSInvalid('JSON Web Key Set malformed');\n }\n this._jwks = clone(jwks);\n }\n async getKey(protectedHeader, token) {\n const { alg, kid } = { ...protectedHeader, ...token?.header };\n const kty = getKtyFromAlg(alg);\n const candidates = this._jwks.keys.filter((jwk) => {\n let candidate = kty === jwk.kty;\n if (candidate && typeof kid === 'string') {\n candidate = kid === jwk.kid;\n }\n if (candidate && typeof jwk.alg === 'string') {\n candidate = alg === jwk.alg;\n }\n if (candidate && typeof jwk.use === 'string') {\n candidate = jwk.use === 'sig';\n }\n if (candidate && Array.isArray(jwk.key_ops)) {\n candidate = jwk.key_ops.includes('verify');\n }\n if (candidate && alg === 'EdDSA') {\n candidate = jwk.crv === 'Ed25519' || jwk.crv === 'Ed448';\n }\n if (candidate) {\n switch (alg) {\n case 'ES256':\n candidate = jwk.crv === 'P-256';\n break;\n case 'ES256K':\n candidate = jwk.crv === 'secp256k1';\n break;\n case 'ES384':\n candidate = jwk.crv === 'P-384';\n break;\n case 'ES512':\n candidate = jwk.crv === 'P-521';\n break;\n }\n }\n return candidate;\n });\n const { 0: jwk, length } = candidates;\n if (length === 0) {\n throw new JWKSNoMatchingKey();\n }\n if (length !== 1) {\n const error = new JWKSMultipleMatchingKeys();\n const { _cached } = this;\n error[Symbol.asyncIterator] = async function* () {\n for (const jwk of candidates) {\n try {\n yield await importWithAlgCache(_cached, jwk, alg);\n }\n catch { }\n }\n };\n throw error;\n }\n return importWithAlgCache(this._cached, jwk, alg);\n }\n}\nasync function importWithAlgCache(cache, jwk, alg) {\n const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk);\n if (cached[alg] === undefined) {\n const key = await importJWK({ ...jwk, ext: true }, alg);\n if (key instanceof Uint8Array || key.type !== 'public') {\n throw new JWKSInvalid('JSON Web Key Set members must be public keys');\n }\n cached[alg] = key;\n }\n return cached[alg];\n}\nexport function createLocalJWKSet(jwks) {\n const set = new LocalJWKSet(jwks);\n const localJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(localJWKSet, {\n jwks: {\n value: () => clone(set._jwks),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return localJWKSet;\n}\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport default (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n","import { decode as decodeBase64URL } from '../runtime/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../runtime/asn1.js';\nimport asKeyObject from '../runtime/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nexport async function importSPKI(spki, alg, options) {\n if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n throw new TypeError('\"spki\" must be SPKI formatted string');\n }\n return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n throw new TypeError('\"x509\" must be X.509 formatted string');\n }\n return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n }\n return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (alg = jwk.alg);\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n return decodeBase64URL(jwk.k);\n case 'RSA':\n if (jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return asKeyObject({ ...jwk, alg });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n","/**\n * @overview Constants for Logto. Synchronized with `@logto/core-kit` package at hash `081094d`.\n */\n/** Scopes that reserved by Logto, which will be added to the auth request automatically. */\nvar ReservedScope;\n(function (ReservedScope) {\n ReservedScope[\"OpenId\"] = \"openid\";\n ReservedScope[\"OfflineAccess\"] = \"offline_access\";\n})(ReservedScope || (ReservedScope = {}));\n/** Resources that reserved by Logto, which cannot be defined by users. */\nvar ReservedResource;\n(function (ReservedResource) {\n /**\n * The resource for organization template per RFC 0001.\n *\n * @see {@link https://github.com/logto-io/rfcs | RFC 0001} for more details.\n */\n ReservedResource[\"Organization\"] = \"urn:logto:resource:organizations\";\n})(ReservedResource || (ReservedResource = {}));\n/**\n * Scopes for ID Token and Userinfo Endpoint.\n */\nvar UserScope;\n(function (UserScope) {\n /**\n * Scope for basic user info.\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"Profile\"] = \"profile\";\n /**\n * Scope for user email address.\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"Email\"] = \"email\";\n /**\n * Scope for user phone number.\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"Phone\"] = \"phone\";\n /**\n * Scope for user's custom data.\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"CustomData\"] = \"custom_data\";\n /**\n * Scope for user's social identity details.\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"Identities\"] = \"identities\";\n /**\n * Scope for user's roles.\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"Roles\"] = \"roles\";\n /**\n * Scope for user's organization IDs and perform organization token grant per [RFC 0001](https://github.com/logto-io/rfcs).\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"Organizations\"] = \"urn:logto:scope:organizations\";\n /**\n * Scope for user's organization roles per [RFC 0001](https://github.com/logto-io/rfcs).\n *\n * See {@link idTokenClaims} for mapped claims in ID Token and {@link userinfoClaims} for additional claims in Userinfo Endpoint.\n */\n UserScope[\"OrganizationRoles\"] = \"urn:logto:scope:organization_roles\";\n})(UserScope || (UserScope = {}));\n/**\n * Mapped claims that ID Token includes.\n */\nconst idTokenClaims = Object.freeze({\n [UserScope.Profile]: ['name', 'picture', 'username'],\n [UserScope.Email]: ['email', 'email_verified'],\n [UserScope.Phone]: ['phone_number', 'phone_number_verified'],\n [UserScope.Roles]: ['roles'],\n [UserScope.Organizations]: ['organizations'],\n [UserScope.OrganizationRoles]: ['organization_roles'],\n [UserScope.CustomData]: [],\n [UserScope.Identities]: [],\n});\n/**\n * Additional claims that Userinfo Endpoint returns.\n */\nconst userinfoClaims = Object.freeze({\n [UserScope.Profile]: [],\n [UserScope.Email]: [],\n [UserScope.Phone]: [],\n [UserScope.Roles]: [],\n [UserScope.Organizations]: [],\n [UserScope.OrganizationRoles]: [],\n [UserScope.CustomData]: ['custom_data'],\n [UserScope.Identities]: ['identities'],\n});\nconst userClaims = Object.freeze(\n// Hard to infer type directly, use `as` for a workaround.\n// eslint-disable-next-line no-restricted-syntax\nObject.fromEntries(Object.values(UserScope).map((current) => [\n current,\n [...idTokenClaims[current], ...userinfoClaims[current]],\n])));\n/**\n * The prefix of the URN (Uniform Resource Name) for the organization in Logto.\n *\n * @example\n * ```\n * urn:logto:organization:123 // organization with ID 123\n * ```\n * @see {@link https://en.wikipedia.org/wiki/Uniform_Resource_Name | Uniform Resource Name}\n */\nconst organizationUrnPrefix = 'urn:logto:organization:';\n/**\n * Build the URN (Uniform Resource Name) for the organization in Logto.\n *\n * @param organizationId The ID of the organization.\n * @returns The URN for the organization.\n * @see {@link organizationUrnPrefix} for the prefix of the URN.\n * @example\n * ```ts\n * buildOrganizationUrn('1') // returns 'urn:logto:organization:1'\n * ```\n */\nconst buildOrganizationUrn = (organizationId) => `${organizationUrnPrefix}${organizationId}`;\n/**\n * Get the organization ID from the URN (Uniform Resource Name) for the organization in Logto.\n *\n * @param urn The URN for the organization. Must start with {@link organizationUrnPrefix}.\n * @returns The ID of the organization.\n * @throws {TypeError} If the URN is invalid.\n * @example\n * ```ts\n * getOrganizationIdFromUrn('1') // throws TypeError\n * getOrganizationIdFromUrn('urn:logto:organization:1') // returns '1'\n * ```\n */\nconst getOrganizationIdFromUrn = (urn) => {\n if (!urn.startsWith(organizationUrnPrefix)) {\n throw new TypeError('Invalid organization URN.');\n }\n return urn.slice(organizationUrnPrefix.length);\n};\n\nexport { ReservedResource, ReservedScope, UserScope, buildOrganizationUrn, getOrganizationIdFromUrn, idTokenClaims, organizationUrnPrefix, userClaims, userinfoClaims };\n","function unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usages) {\n if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n let msg = 'CryptoKey does not support this operation, its usages must include ';\n if (usages.length > 2) {\n const last = usages.pop();\n msg += `one of ${usages.join(', ')}, or ${last}.`;\n }\n else if (usages.length === 2) {\n msg += `one of ${usages[0]} or ${usages[1]}.`;\n }\n else {\n msg += `${usages[0]}.`;\n }\n throw new TypeError(msg);\n }\n}\nexport function checkSigCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'EdDSA': {\n if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n throw unusable('Ed25519 or Ed448');\n }\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\nexport function checkEncCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM': {\n if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n throw unusable('AES-GCM');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (!isAlgorithm(key.algorithm, 'AES-KW'))\n throw unusable('AES-KW');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'ECDH': {\n switch (key.algorithm.name) {\n case 'ECDH':\n case 'X25519':\n case 'X448':\n break;\n default:\n throw unusable('ECDH, X25519, or X448');\n }\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n throw unusable('PBKDF2');\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n throw unusable('RSA-OAEP');\n const expected = parseInt(alg.slice(9), 10) || 1;\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\n","const validateAlgorithms = (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\nexport default validateAlgorithms;\n","import { compactVerify } from '../jws/compact/verify.js';\nimport jwtPayload from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n const verified = await compactVerify(jwt, key, options);\n if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = jwtPayload(verified.protectedHeader, verified.payload, options);\n const result = { payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","import subtleAlgorithm from './subtle_dsa.js';\nimport crypto from './webcrypto.js';\nimport checkKeyLength from './check_key_length.js';\nimport getVerifyKey from './get_sign_verify_key.js';\nconst verify = async (alg, key, signature, data) => {\n const cryptoKey = await getVerifyKey(alg, key, 'verify');\n checkKeyLength(alg, cryptoKey);\n const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n try {\n return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n }\n catch {\n return false;\n }\n};\nexport default verify;\n","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","function toTitle(string) {\n if (typeof string !== 'string') {\n throw new TypeError('Expected a string');\n }\n return string\n .toLowerCase()\n .replaceAll(/(?:^|\\s|-)\\S/g, (value) => value.toUpperCase())\n .replaceAll('-', ' ');\n}\n/**\n * RFC 4648 section 5: base64url (URL- and filename-safe standard)\n * @link https://datatracker.ietf.org/doc/html/rfc4648#section-5\n */\nconst replaceNonUrlSafeCharacters = (base64String) => base64String.replaceAll('+', '-').replaceAll('/', '_').replaceAll(/=+$/g, '');\nconst restoreNonUrlSafeCharacters = (base64String) => base64String.replaceAll('-', '+').replaceAll('_', '/');\nconst urlSafeBase64 = {\n isSafe: (input) => /^[\\w-]*$/.test(input),\n encode: (rawString) => {\n const encodedString = btoa(unescape(encodeURIComponent(rawString)));\n return replaceNonUrlSafeCharacters(encodedString);\n },\n decode: (encodedString) => {\n const nonUrlSafeEncodedString = restoreNonUrlSafeCharacters(encodedString);\n return decodeURIComponent(escape(atob(nonUrlSafeEncodedString)));\n },\n replaceNonUrlSafeCharacters,\n restoreNonUrlSafeCharacters,\n};\nconst yes = (value) => \n// eslint-disable-next-line no-implicit-coercion\n!!value && ['1', 'true', 'y', 'yes', 'yep', 'yeah'].includes(value.toLowerCase());\n\nexport { toTitle, urlSafeBase64, yes };\n","import { urlSafeBase64 } from '@silverhand/essentials';\nimport { isArbitraryObject } from './arbitrary-object.js';\n\n// https://docs.logto.io/docs/recipes/protect-your-api/\nfunction assertAccessTokenClaims(data) {\n if (!isArbitraryObject(data)) {\n throw new TypeError('AccessToken is expected to be an object');\n }\n for (const key of ['jti', 'iss', 'sub', 'aud', 'client_id', 'scope']) {\n if (data[key] === undefined) {\n continue;\n }\n if (typeof data[key] !== 'string' && data[key] !== null) {\n throw new TypeError(`At path: AccessToken.${key}: expected null or a string`);\n }\n }\n for (const key of ['exp', 'iat']) {\n if (data[key] === undefined) {\n continue;\n }\n if (typeof data[key] !== 'number' && data[key] !== null) {\n throw new TypeError(`At path: AccessToken.${key}: expected null or a number`);\n }\n }\n}\nconst decodeAccessToken = (accessToken) => {\n const { 1: encodedPayload } = accessToken.split('.');\n if (!encodedPayload) {\n // Non-JWT format token string\n return {};\n }\n const json = urlSafeBase64.decode(encodedPayload);\n const accessTokenClaims = JSON.parse(json);\n assertAccessTokenClaims(accessTokenClaims);\n return accessTokenClaims;\n};\n\nexport { decodeAccessToken };\n","import fetchJwks from '../runtime/fetch_jwks.js';\nimport { JWKSNoMatchingKey } from '../util/errors.js';\nimport { createLocalJWKSet } from './local.js';\nimport isObject from '../lib/is_object.js';\nfunction isCloudflareWorkers() {\n return (typeof WebSocketPair !== 'undefined' ||\n (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n const NAME = 'jose';\n const VERSION = 'v5.9.3';\n USER_AGENT = `${NAME}/${VERSION}`;\n}\nexport const jwksCache = Symbol();\nfunction isFreshJwksCache(input, cacheMaxAge) {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n if (!('uat' in input) || typeof input.uat !== 'number' || Date.now() - input.uat >= cacheMaxAge) {\n return false;\n }\n if (!('jwks' in input) ||\n !isObject(input.jwks) ||\n !Array.isArray(input.jwks.keys) ||\n !Array.prototype.every.call(input.jwks.keys, isObject)) {\n return false;\n }\n return true;\n}\nclass RemoteJWKSet {\n constructor(url, options) {\n if (!(url instanceof URL)) {\n throw new TypeError('url must be an instance of URL');\n }\n this._url = new URL(url.href);\n this._options = { agent: options?.agent, headers: options?.headers };\n this._timeoutDuration =\n typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n this._cooldownDuration =\n typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n this._cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n if (options?.[jwksCache] !== undefined) {\n this._cache = options?.[jwksCache];\n if (isFreshJwksCache(options?.[jwksCache], this._cacheMaxAge)) {\n this._jwksTimestamp = this._cache.uat;\n this._local = createLocalJWKSet(this._cache.jwks);\n }\n }\n }\n coolingDown() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cooldownDuration\n : false;\n }\n fresh() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cacheMaxAge\n : false;\n }\n async getKey(protectedHeader, token) {\n if (!this._local || !this.fresh()) {\n await this.reload();\n }\n try {\n return await this._local(protectedHeader, token);\n }\n catch (err) {\n if (err instanceof JWKSNoMatchingKey) {\n if (this.coolingDown() === false) {\n await this.reload();\n return this._local(protectedHeader, token);\n }\n }\n throw err;\n }\n }\n async reload() {\n if (this._pendingFetch && isCloudflareWorkers()) {\n this._pendingFetch = undefined;\n }\n const headers = new Headers(this._options.headers);\n if (USER_AGENT && !headers.has('User-Agent')) {\n headers.set('User-Agent', USER_AGENT);\n this._options.headers = Object.fromEntries(headers.entries());\n }\n this._pendingFetch || (this._pendingFetch = fetchJwks(this._url, this._timeoutDuration, this._options)\n .then((json) => {\n this._local = createLocalJWKSet(json);\n if (this._cache) {\n this._cache.uat = Date.now();\n this._cache.jwks = json;\n }\n this._jwksTimestamp = Date.now();\n this._pendingFetch = undefined;\n })\n .catch((err) => {\n this._pendingFetch = undefined;\n throw err;\n }));\n await this._pendingFetch;\n }\n}\nexport function createRemoteJWKSet(url, options) {\n const set = new RemoteJWKSet(url, options);\n const remoteJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(remoteJWKSet, {\n coolingDown: {\n get: () => set.coolingDown(),\n enumerable: true,\n configurable: false,\n },\n fresh: {\n get: () => set.fresh(),\n enumerable: true,\n configurable: false,\n },\n reload: {\n value: () => set.reload(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n reloading: {\n get: () => !!set._pendingFetch,\n enumerable: true,\n configurable: false,\n },\n jwks: {\n value: () => set._local?.jwks(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return remoteJWKSet;\n}\nexport const experimental_jwksCache = jwksCache;\n","function e(e,t,f,r){e._m(t);var a=f(\"6433ef52\");e._(t,\"jwtVerify\",a);var _=f(\"6e53f6d6\");e._(t,\"createRemoteJWKSet\",_);}","const isArbitraryObject = (data) => typeof data === 'object' && data !== null;\n\nexport { isArbitraryObject };\n","var PersistKey;\n(function (PersistKey) {\n PersistKey[\"IdToken\"] = \"idToken\";\n PersistKey[\"RefreshToken\"] = \"refreshToken\";\n PersistKey[\"AccessToken\"] = \"accessToken\";\n PersistKey[\"SignInSession\"] = \"signInSession\";\n})(PersistKey || (PersistKey = {}));\nvar CacheKey;\n(function (CacheKey) {\n /**\n * OpenID Configuration endpoint response.\n *\n * @see {@link https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationResponse | OpenID Connect Discovery 1.0}\n */\n CacheKey[\"OpenidConfig\"] = \"openidConfiguration\";\n /**\n * The content of OpenID Provider's `jwks_uri` (JSON Web Key Set).\n *\n * @see {@link https://openid.net/specs/openid-connect-discovery-1_0-21.html#ProviderMetadata | OpenID Connect Discovery 1.0}\n */\n CacheKey[\"Jwks\"] = \"jwks\";\n})(CacheKey || (CacheKey = {}));\n\nexport { CacheKey, PersistKey };\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\nexport function p2s(alg, p2sInput) {\n return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nexport function lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n const iterations = Math.ceil((bits >> 3) / 32);\n const res = new Uint8Array(iterations * 32);\n for (let iter = 0; iter < iterations; iter++) {\n const buf = new Uint8Array(4 + secret.length + value.length);\n buf.set(uint32be(iter + 1));\n buf.set(secret, 4);\n buf.set(value, 4 + secret.length);\n res.set(await digest('sha256', buf), iter * 32);\n }\n return res.slice(0, bits >> 3);\n}\n","export default (date) => Math.floor(date.getTime() / 1000);\n","import { conditional } from '@silverhand/essentials';\nimport { QueryKey } from '../consts/index.js';\nimport { LogtoError, OidcError } from './errors.js';\n\nconst parseUriParameters = (uri) => {\n const [, queryString = ''] = uri.split('?');\n return new URLSearchParams(queryString);\n};\nconst verifyAndParseCodeFromCallbackUri = (callbackUri, redirectUri, state) => {\n if (!callbackUri.startsWith(redirectUri)) {\n throw new LogtoError('callback_uri_verification.redirect_uri_mismatched');\n }\n const uriParameters = parseUriParameters(callbackUri);\n const error = conditional(uriParameters.get(QueryKey.Error));\n const errorDescription = conditional(uriParameters.get(QueryKey.ErrorDescription));\n if (error) {\n throw new LogtoError('callback_uri_verification.error_found', new OidcError(error, errorDescription));\n }\n const stateFromCallbackUri = uriParameters.get(QueryKey.State);\n if (!stateFromCallbackUri) {\n throw new LogtoError('callback_uri_verification.missing_state');\n }\n if (stateFromCallbackUri !== state) {\n throw new LogtoError('callback_uri_verification.state_mismatched');\n }\n const code = uriParameters.get(QueryKey.Code);\n if (!code) {\n throw new LogtoError('callback_uri_verification.missing_code');\n }\n return code;\n};\n\nexport { parseUriParameters, verifyAndParseCodeFromCallbackUri };\n","export { ReservedResource, ReservedScope, UserScope, buildOrganizationUrn, getOrganizationIdFromUrn, idTokenClaims, organizationUrnPrefix, userClaims, userinfoClaims } from './openid.js';\n\nconst ContentType = {\n formUrlEncoded: { 'Content-Type': 'application/x-www-form-urlencoded' },\n};\nvar TokenGrantType;\n(function (TokenGrantType) {\n TokenGrantType[\"AuthorizationCode\"] = \"authorization_code\";\n TokenGrantType[\"RefreshToken\"] = \"refresh_token\";\n})(TokenGrantType || (TokenGrantType = {}));\nvar QueryKey;\n(function (QueryKey) {\n QueryKey[\"ClientId\"] = \"client_id\";\n QueryKey[\"Code\"] = \"code\";\n QueryKey[\"CodeChallenge\"] = \"code_challenge\";\n QueryKey[\"CodeChallengeMethod\"] = \"code_challenge_method\";\n QueryKey[\"CodeVerifier\"] = \"code_verifier\";\n QueryKey[\"Error\"] = \"error\";\n QueryKey[\"ErrorDescription\"] = \"error_description\";\n QueryKey[\"GrantType\"] = \"grant_type\";\n QueryKey[\"IdToken\"] = \"id_token\";\n QueryKey[\"IdTokenHint\"] = \"id_token_hint\";\n QueryKey[\"LoginHint\"] = \"login_hint\";\n QueryKey[\"PostLogoutRedirectUri\"] = \"post_logout_redirect_uri\";\n QueryKey[\"Prompt\"] = \"prompt\";\n QueryKey[\"RedirectUri\"] = \"redirect_uri\";\n QueryKey[\"RefreshToken\"] = \"refresh_token\";\n QueryKey[\"Resource\"] = \"resource\";\n QueryKey[\"ResponseType\"] = \"response_type\";\n QueryKey[\"Scope\"] = \"scope\";\n QueryKey[\"State\"] = \"state\";\n QueryKey[\"Token\"] = \"token\";\n // Need to align with the OIDC extraParams settings in core\n QueryKey[\"InteractionMode\"] = \"interaction_mode\";\n /** The query key for specifying the organization ID. */\n QueryKey[\"OrganizationId\"] = \"organization_id\";\n QueryKey[\"FirstScreen\"] = \"first_screen\";\n QueryKey[\"Identifier\"] = \"identifier\";\n QueryKey[\"DirectSignIn\"] = \"direct_sign_in\";\n})(QueryKey || (QueryKey = {}));\n/** The prompt parameter to be used for the authorization request. */\nvar Prompt;\n(function (Prompt) {\n Prompt[\"None\"] = \"none\";\n /**\n * The Authorization Server MUST prompt the End-User for consent\n * before returning information to the Client.\n */\n Prompt[\"Consent\"] = \"consent\";\n /**\n * The Authorization Server MUST prompt the End-User for re-authentication,\n * forcing the user to log in again. Note the there'll be no Refresh Token\n * returned in this case.\n */\n Prompt[\"Login\"] = \"login\";\n})(Prompt || (Prompt = {}));\n\nexport { ContentType, Prompt, QueryKey, TokenGrantType };\n","const keyPrefix = `logto`;\nclass BrowserStorage {\n constructor(appId) {\n this.appId = appId;\n }\n getKey(item) {\n if (item === undefined) {\n return `${keyPrefix}:${this.appId}`;\n }\n return `${keyPrefix}:${this.appId}:${item}`;\n }\n async getItem(key) {\n if (key === 'signInSession') {\n // The latter `getItem()` is for backward compatibility. Can be removed when major bump.\n return sessionStorage.getItem(this.getKey(key)) ?? sessionStorage.getItem(this.getKey());\n }\n return localStorage.getItem(this.getKey(key));\n }\n async setItem(key, value) {\n if (key === 'signInSession') {\n sessionStorage.setItem(this.getKey(key), value);\n return;\n }\n localStorage.setItem(this.getKey(key), value);\n }\n async removeItem(key) {\n if (key === 'signInSession') {\n sessionStorage.removeItem(this.getKey(key));\n return;\n }\n localStorage.removeItem(this.getKey(key));\n }\n}\n\nexport { BrowserStorage };\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n","function message(msg, actual, ...types) {\n types = types.filter(Boolean);\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","import { decode as base64url } from '../../runtime/base64url.js';\nimport verify from '../../runtime/verify.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder } from '../../lib/buffer_utils.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport isObject from '../../lib/is_object.js';\nimport { checkKeyTypeWithJwk } from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport validateAlgorithms from '../../lib/validate_algorithms.js';\nimport { isJWK } from '../../lib/is_jwk.js';\nimport { importJWK } from '../../key/import.js';\nexport async function flattenedVerify(jws, key, options) {\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n try {\n const protectedHeader = base64url(jws.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n resolvedKey = true;\n checkKeyTypeWithJwk(alg, key, 'verify');\n if (isJWK(key)) {\n key = await importJWK(key, alg);\n }\n }\n else {\n checkKeyTypeWithJwk(alg, key, 'verify');\n }\n const data = concat(encoder.encode(jws.protected ?? ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n let signature;\n try {\n signature = base64url(jws.signature);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the signature');\n }\n const verified = await verify(alg, key, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n try {\n payload = base64url(jws.payload);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the payload');\n }\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n if (resolvedKey) {\n return { ...result, key };\n }\n return result;\n}\n","const normalizeValueToStringArray = (value) => {\n if (value) {\n return Array.isArray(value) ? value : [value];\n }\n return [];\n};\n// Disable FP rules here to use the performant approach while keep the function itself \"FP\"\n/* eslint-disable @silverhand/fp/no-let, @silverhand/fp/no-mutation */\nconst repeat = (times, initial, iterate) => {\n let result = initial;\n while (times--) {\n result = iterate(result);\n }\n return result;\n};\n/* eslint-enable @silverhand/fp/no-let, @silverhand/fp/no-mutation */\nconst deduplicate = (array) => [...new Set(array)];\n/**\n * Deduplicate an array of objects by a specific key.\n *\n * @param array The array of objects to deduplicate.\n * @param key The key to deduplicate by.\n * @example\n * const array = [{ id: 1, name: 'John' }, { id: 2, name: 'Doe' }, { id: 1, name: 'John' }];\n * deduplicateByKey(array, 'id');\n * // Output: [{ id: 1, name: 'John' }, { id: 2, name: 'Doe' }]\n */\nconst deduplicateByKey = (array, key) => [\n ...new Map(array.map((item) => [item[key], item])).values(),\n];\n\nexport { deduplicate, deduplicateByKey, normalizeValueToStringArray, repeat };\n","// eslint-disable-next-line id-length\nconst compareFunction = (a, b) => {\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return a - b;\n }\n if (typeof a === 'boolean' && typeof b === 'boolean') {\n return Number(a) - Number(b);\n }\n throw new Error('Unsupported compare type');\n};\nconst isSameArray = (array1, array2) => {\n if (array1.length !== array2.length) {\n return false;\n }\n const sortedA = array1.slice().sort(compareFunction);\n const sortedB = array2.slice().sort(compareFunction);\n return sortedA.every((value, index) => value === sortedB[index]);\n};\n// eslint-disable-next-line unicorn/prefer-native-coercion-functions\nconst notFalsy = (value) => Boolean(value);\nconst notEmpty = (value) => value !== null && value !== undefined;\nconst has = (data, property) => Object.prototype.hasOwnProperty.call(data, property);\nconst hasChineseCharacter = (string) => Boolean(/[\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF]/.test(string));\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types -- this is a utility function\nconst isObject = (object) => Object.prototype.toString.call(object) === '[object Object]';\n/** Returns true if an object was created by the `Object` constructor, or `Object.create(null)`. */\nfunction isPlainObject(object) {\n if (!isObject(object)) {\n return false;\n }\n // If has modified constructor\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (object.constructor === undefined) {\n return true;\n }\n // If has modified prototype\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, prefer-destructuring\n const prototype = object.constructor.prototype;\n if (!isObject(prototype)) {\n return false;\n }\n // If constructor does not have an Object-specific method\n if (!has(prototype, 'isPrototypeOf')) {\n return false;\n }\n // Most likely a plain Object\n return true;\n}\n\nexport { has, hasChineseCharacter, isPlainObject, isSameArray, notEmpty, notFalsy };\n","const isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\nexport default isDisjoint;\n","import { JOSENotSupported } from '../util/errors.js';\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\nexport default validateCrit;\n","const keyPrefix = `logto_cache`;\nclass CacheStorage {\n constructor(appId) {\n this.appId = appId;\n }\n getKey(item) {\n if (item === undefined) {\n return `${keyPrefix}:${this.appId}`;\n }\n return `${keyPrefix}:${this.appId}:${item}`;\n }\n async getItem(key) {\n return sessionStorage.getItem(this.getKey(key));\n }\n async setItem(key, value) {\n sessionStorage.setItem(this.getKey(key), value);\n }\n async removeItem(key) {\n sessionStorage.removeItem(`${this.getKey(key)}`);\n }\n}\n\nexport { CacheStorage };\n","import { JOSEError, JWKSTimeout } from '../util/errors.js';\nconst fetchJwks = async (url, timeout, options) => {\n let controller;\n let id;\n let timedOut = false;\n if (typeof AbortController === 'function') {\n controller = new AbortController();\n id = setTimeout(() => {\n timedOut = true;\n controller.abort();\n }, timeout);\n }\n const response = await fetch(url.href, {\n signal: controller ? controller.signal : undefined,\n redirect: 'manual',\n headers: options.headers,\n }).catch((err) => {\n if (timedOut)\n throw new JWKSTimeout();\n throw err;\n });\n if (id !== undefined)\n clearTimeout(id);\n if (response.status !== 200) {\n throw new JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n }\n try {\n return await response.json();\n }\n catch {\n throw new JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n }\n};\nexport default fetchJwks;\n","'use strict';\n\nconst isObject = value => typeof value === 'object' && value !== null;\nconst mapObjectSkip = Symbol('skip');\n\n// Customized for this use-case\nconst isObjectCustom = value =>\n\tisObject(value) &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\toptions = {\n\t\tdeep: false,\n\t\ttarget: {},\n\t\t...options\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, options.target);\n\n\tconst {target} = options;\n\tdelete options.target;\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tconst mapResult = mapper(key, value, object);\n\n\t\tif (mapResult === mapObjectSkip) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [newKey, newValue, {shouldRecurse = true} = {}] = mapResult;\n\n\t\t// Drop `__proto__` keys.\n\t\tif (newKey === '__proto__') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (options.deep && shouldRecurse && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue) ?\n\t\t\t\tmapArray(newValue) :\n\t\t\t\tmapObject(newValue, mapper, options, isSeen);\n\t\t}\n\n\t\ttarget[newKey] = newValue;\n\t}\n\n\treturn target;\n};\n\nmodule.exports = (object, mapper, options) => {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\treturn mapObject(object, mapper, options);\n};\n\nmodule.exports.mapObjectSkip = mapObjectSkip;\n","import camelcaseKeys from 'camelcase-keys';\n\nconst discoveryPath = '/oidc/.well-known/openid-configuration';\nconst fetchOidcConfig = async (endpoint, requester) => camelcaseKeys(await requester(endpoint));\n\nexport { discoveryPath, fetchOidcConfig };\n","import { decodeIdToken, decodeAccessToken, fetchUserInfo, generateSignInUri, revoke, generateSignOutUri, fetchTokenByRefreshToken, fetchOidcConfig, UserScope, verifyAndParseCodeFromCallbackUri, fetchTokenByAuthorizationCode } from '@logto/js';\nimport { ClientAdapterInstance } from './adapter/index.js';\nimport { LogtoClientError } from './errors.js';\nimport { normalizeLogtoConfig, isLogtoSignInSessionItem, isLogtoAccessTokenMap } from './types/index.js';\nimport { buildAccessTokenKey, getDiscoveryEndpoint } from './utils/index.js';\nimport { memoize } from './utils/memoize.js';\nimport { once } from './utils/once.js';\nimport { PersistKey, CacheKey } from './adapter/types.js';\n\n/* eslint-disable max-lines */\n/**\n * The Logto base client class that provides the essential methods for\n * interacting with the Logto server.\n *\n * It also provides an adapter object that allows the customizations of the\n * client behavior for different environments.\n *\n * NOTE: Usually, you would use the `LogtoClient` class instead of `StandardLogtoClient` since it\n * provides the default JWT verifier. However, if you want to avoid the use of `jose` package\n * which is useful for certain environments that don't support native modules like `crypto`, you\n * can use `StandardLogtoClient` and provide your own JWT verifier.\n */\nclass StandardLogtoClient {\n get jwtVerifier() {\n return this.jwtVerifierInstance;\n }\n constructor(logtoConfig, adapter, buildJwtVerifier) {\n /**\n * Get the OIDC configuration from the discovery endpoint. This method will\n * only fetch the configuration once and cache the result.\n */\n this.getOidcConfig = once(this.#getOidcConfig);\n /**\n * Get the access token from the storage with refresh strategy.\n *\n * - If the access token has expired, it will try to fetch a new one using the Refresh Token.\n * - If there's an ongoing Promise to fetch the access token, it will return the Promise.\n *\n * If you want to get the access token claims, use {@link getAccessTokenClaims} instead.\n *\n * @param resource The resource that the access token is granted for. If not\n * specified, the access token will be used for OpenID Connect or the default\n * resource, as specified in the Logto Console.\n * @returns The access token string.\n * @throws LogtoClientError if the user is not authenticated.\n */\n this.getAccessToken = memoize(this.#getAccessToken);\n /**\n * Get the access token for the specified organization from the storage with refresh strategy.\n *\n * Scope {@link UserScope.Organizations} is required in the config to use organization-related\n * methods.\n *\n * @param organizationId The ID of the organization that the access token is granted for.\n * @returns The access token string.\n * @throws LogtoClientError if the user is not authenticated.\n * @remarks\n * It uses the same refresh strategy as {@link getAccessToken}.\n */\n this.getOrganizationToken = memoize(this.#getOrganizationToken);\n /**\n * Clear the access token from the cache storage.\n */\n this.clearAccessToken = memoize(this.#clearAccessToken);\n /**\n * Clear all cached tokens from storage.\n */\n this.clearAllTokens = memoize(this.#clearAllTokens);\n /**\n * Handle the sign-in callback by parsing the authorization code from the\n * callback URI and exchanging it for the tokens.\n *\n * @param callbackUri The callback URI, including the search params, that the user is redirected to after the sign-in flow is completed.\n * The origin and pathname of this URI must match the origin and pathname of the redirect URI specified in {@link signIn}.\n * In many cases you'll probably end up passing `window.location.href` as the argument to this function.\n * @throws LogtoClientError if the sign-in session is not found.\n */\n this.handleSignInCallback = memoize(this.#handleSignInCallback);\n this.accessTokenMap = new Map();\n this.logtoConfig = normalizeLogtoConfig(logtoConfig);\n this.adapter = new ClientAdapterInstance(adapter);\n this.jwtVerifierInstance = buildJwtVerifier(this);\n void this.loadAccessTokenMap();\n }\n /**\n * Set the JWT verifier for the client.\n * @param buildJwtVerifier The JWT verifier instance or a function that returns the JWT verifier instance.\n */\n setJwtVerifier(buildJwtVerifier) {\n this.jwtVerifierInstance =\n typeof buildJwtVerifier === 'function' ? buildJwtVerifier(this) : buildJwtVerifier;\n }\n /**\n * Check if the user is authenticated by checking if the ID token exists.\n */\n async isAuthenticated() {\n return Boolean(await this.getIdToken());\n }\n /**\n * Get the Refresh Token from the storage.\n */\n async getRefreshToken() {\n return this.adapter.storage.getItem('refreshToken');\n }\n /**\n * Get the ID Token from the storage. If you want to get the ID Token claims,\n * use {@link getIdTokenClaims} instead.\n */\n async getIdToken() {\n return this.adapter.storage.getItem('idToken');\n }\n /**\n * Get the ID Token claims.\n */\n async getIdTokenClaims() {\n const idToken = await this.getIdToken();\n if (!idToken) {\n throw new LogtoClientError('not_authenticated');\n }\n return decodeIdToken(idToken);\n }\n /**\n * Get the access token claims for the specified resource.\n *\n * @param resource The resource that the access token is granted for. If not\n * specified, the access token will be used for OpenID Connect or the default\n * resource, as specified in the Logto Console.\n */\n async getAccessTokenClaims(resource) {\n const accessToken = await this.getAccessToken(resource);\n return decodeAccessToken(accessToken);\n }\n /**\n * Get the organization token claims for the specified organization.\n *\n * @param organizationId The ID of the organization that the access token is granted for.\n */\n async getOrganizationTokenClaims(organizationId) {\n const accessToken = await this.getOrganizationToken(organizationId);\n return decodeAccessToken(accessToken);\n }\n /**\n * Get the user information from the Userinfo Endpoint.\n *\n * Note the Userinfo Endpoint will return more claims than the ID Token. See\n * {@link https://docs.logto.io/docs/recipes/integrate-logto/vanilla-js/#fetch-user-information | Fetch user information}\n * for more information.\n *\n * @returns The user information.\n * @throws LogtoClientError if the user is not authenticated.\n */\n async fetchUserInfo() {\n const { userinfoEndpoint } = await this.getOidcConfig();\n const accessToken = await this.getAccessToken();\n if (!accessToken) {\n throw new LogtoClientError('fetch_user_info_failed');\n }\n return fetchUserInfo(userinfoEndpoint, accessToken, this.adapter.requester);\n }\n async signIn(options, mode, hint) {\n const { redirectUri: redirectUriUrl, postRedirectUri: postRedirectUriUrl, firstScreen, identifiers, interactionMode, loginHint, directSignIn, extraParams, prompt, } = typeof options === 'string' || options instanceof URL\n ? {\n redirectUri: options,\n postRedirectUri: undefined,\n firstScreen: undefined,\n identifiers: undefined,\n interactionMode: mode,\n loginHint: hint,\n directSignIn: undefined,\n extraParams: undefined,\n prompt: undefined,\n }\n : options;\n const redirectUri = redirectUriUrl.toString();\n const postRedirectUri = postRedirectUriUrl?.toString();\n const { appId: clientId, prompt: promptViaConfig, resources, scopes } = this.logtoConfig;\n const { authorizationEndpoint } = await this.getOidcConfig();\n const [codeVerifier, state] = await Promise.all([\n this.adapter.generateCodeVerifier(),\n this.adapter.generateState(),\n ]);\n const codeChallenge = await this.adapter.generateCodeChallenge(codeVerifier);\n const signInUri = generateSignInUri({\n authorizationEndpoint,\n clientId,\n redirectUri: redirectUri.toString(),\n codeChallenge,\n state,\n scopes,\n resources,\n prompt: prompt ?? promptViaConfig,\n firstScreen,\n identifiers,\n interactionMode,\n loginHint,\n directSignIn,\n extraParams,\n });\n await Promise.all([\n this.setSignInSession({ redirectUri, postRedirectUri, codeVerifier, state }),\n this.clearAllTokens(),\n ]);\n await this.adapter.navigate(signInUri, { redirectUri, for: 'sign-in' });\n }\n /**\n * Check if the user is redirected from the sign-in page by checking if the\n * current URL matches the redirect URI in the sign-in session.\n *\n * If there's no sign-in session, it will return `false`.\n *\n * @param url The current URL.\n */\n async isSignInRedirected(url) {\n const signInSession = await this.getSignInSession();\n if (!signInSession) {\n return false;\n }\n const { redirectUri } = signInSession;\n const { origin, pathname } = new URL(url);\n return `${origin}${pathname}` === redirectUri;\n }\n /**\n * Start the sign-out flow with the specified redirect URI. The URI must be\n * registered in the Logto Console.\n *\n * It will also revoke all the tokens and clean up the storage.\n *\n * The user will be redirected that URI after the sign-out flow is completed.\n * If the `postLogoutRedirectUri` is not specified, the user will be redirected\n * to a default page.\n */\n async signOut(postLogoutRedirectUri) {\n const { appId: clientId } = this.logtoConfig;\n const { endSessionEndpoint, revocationEndpoint } = await this.getOidcConfig();\n const refreshToken = await this.getRefreshToken();\n if (refreshToken) {\n try {\n await revoke(revocationEndpoint, clientId, refreshToken, this.adapter.requester);\n }\n catch {\n // Do nothing at this point, as we don't want to break the sign-out flow even if the revocation is failed\n }\n }\n const url = generateSignOutUri({\n endSessionEndpoint,\n postLogoutRedirectUri,\n clientId,\n });\n await this.clearAllTokens();\n await this.adapter.navigate(url, { redirectUri: postLogoutRedirectUri, for: 'sign-out' });\n }\n async getSignInSession() {\n const jsonItem = await this.adapter.storage.getItem('signInSession');\n if (!jsonItem) {\n return null;\n }\n const item = JSON.parse(jsonItem);\n if (!isLogtoSignInSessionItem(item)) {\n throw new LogtoClientError('sign_in_session.invalid');\n }\n return item;\n }\n async setSignInSession(value) {\n return this.adapter.setStorageItem(PersistKey.SignInSession, value && JSON.stringify(value));\n }\n async setIdToken(value) {\n return this.adapter.setStorageItem(PersistKey.IdToken, value);\n }\n async setRefreshToken(value) {\n return this.adapter.setStorageItem(PersistKey.RefreshToken, value);\n }\n async getAccessTokenByRefreshToken(resource, organizationId) {\n const currentRefreshToken = await this.getRefreshToken();\n if (!currentRefreshToken) {\n throw new LogtoClientError('not_authenticated');\n }\n const accessTokenKey = buildAccessTokenKey(resource, organizationId);\n const { appId: clientId } = this.logtoConfig;\n const { tokenEndpoint } = await this.getOidcConfig();\n const requestedAt = Math.round(Date.now() / 1000);\n const { accessToken, refreshToken, idToken, scope, expiresIn } = await fetchTokenByRefreshToken({\n clientId,\n tokenEndpoint,\n refreshToken: currentRefreshToken,\n resource,\n organizationId,\n }, this.adapter.requester);\n this.accessTokenMap.set(accessTokenKey, {\n token: accessToken,\n scope,\n /** The `expiresAt` variable provides an approximate estimation of the actual `exp` property\n * in the token claims. It is utilized by the client to determine if the cached access token\n * has expired and when a new access token should be requested.\n */\n expiresAt: requestedAt + expiresIn,\n });\n await this.saveAccessTokenMap();\n if (refreshToken) {\n await this.setRefreshToken(refreshToken);\n }\n if (idToken) {\n await this.jwtVerifier.verifyIdToken(idToken);\n await this.setIdToken(idToken);\n }\n return accessToken;\n }\n async saveAccessTokenMap() {\n const data = {};\n for (const [key, accessToken] of this.accessTokenMap.entries()) {\n // eslint-disable-next-line @silverhand/fp/no-mutation\n data[key] = accessToken;\n }\n await this.adapter.storage.setItem('accessToken', JSON.stringify(data));\n }\n async loadAccessTokenMap() {\n const raw = await this.adapter.storage.getItem('accessToken');\n if (!raw) {\n return;\n }\n try {\n const json = JSON.parse(raw);\n if (!isLogtoAccessTokenMap(json)) {\n return;\n }\n this.accessTokenMap.clear();\n for (const [key, accessToken] of Object.entries(json)) {\n this.accessTokenMap.set(key, accessToken);\n }\n }\n catch (error) {\n console.warn(error);\n }\n }\n async #getOidcConfig() {\n return this.adapter.getWithCache(CacheKey.OpenidConfig, async () => {\n return fetchOidcConfig(getDiscoveryEndpoint(this.logtoConfig.endpoint), this.adapter.requester);\n });\n }\n async #getAccessToken(resource, organizationId) {\n if (!(await this.isAuthenticated())) {\n throw new LogtoClientError('not_authenticated');\n }\n const accessTokenKey = buildAccessTokenKey(resource, organizationId);\n const accessToken = this.accessTokenMap.get(accessTokenKey);\n if (accessToken && accessToken.expiresAt > Date.now() / 1000) {\n return accessToken.token;\n }\n // Since the access token has expired, delete it from the map.\n if (accessToken) {\n this.accessTokenMap.delete(accessTokenKey);\n }\n /**\n * Need to fetch a new access token using refresh token.\n */\n return this.getAccessTokenByRefreshToken(resource, organizationId);\n }\n async #getOrganizationToken(organizationId) {\n if (!this.logtoConfig.scopes?.includes(UserScope.Organizations)) {\n throw new LogtoClientError('missing_scope_organizations');\n }\n return this.getAccessToken(undefined, organizationId);\n }\n async #clearAccessToken() {\n this.accessTokenMap.clear();\n await this.adapter.storage.removeItem('accessToken');\n }\n async #clearAllTokens() {\n await Promise.all([this.setRefreshToken(null), this.setIdToken(null), this.clearAccessToken()]);\n }\n async #handleSignInCallback(callbackUri) {\n const signInSession = await this.getSignInSession();\n if (!signInSession) {\n throw new LogtoClientError('sign_in_session.not_found');\n }\n const { redirectUri, postRedirectUri, state, codeVerifier } = signInSession;\n const code = verifyAndParseCodeFromCallbackUri(callbackUri, redirectUri, state);\n // NOTE: Will add scope to accessTokenKey when needed. (Linear issue LOG-1589)\n const accessTokenKey = buildAccessTokenKey();\n const { appId: clientId } = this.logtoConfig;\n const { tokenEndpoint } = await this.getOidcConfig();\n const requestedAt = Math.round(Date.now() / 1000);\n const { idToken, refreshToken, accessToken, scope, expiresIn } = await fetchTokenByAuthorizationCode({\n clientId,\n tokenEndpoint,\n redirectUri,\n codeVerifier,\n code,\n }, this.adapter.requester);\n await this.jwtVerifier.verifyIdToken(idToken);\n await this.setRefreshToken(refreshToken ?? null);\n await this.setIdToken(idToken);\n this.accessTokenMap.set(accessTokenKey, {\n token: accessToken,\n scope,\n /** The `expiresAt` variable provides an approximate estimation of the actual `exp` property\n * in the token claims. It is utilized by the client to determine if the cached access token\n * has expired and when a new access token should be requested.\n */\n expiresAt: requestedAt + expiresIn,\n });\n await this.saveAccessTokenMap();\n await this.setSignInSession(null);\n if (postRedirectUri) {\n await this.adapter.navigate(postRedirectUri, { for: 'post-sign-in' });\n }\n }\n}\n/* eslint-enable max-lines */\n\nexport { StandardLogtoClient };\n","function e(e,r,o,a){e._m(r);var c=o(\"e8514c6c\");e._(r,\"fetchTokenByAuthorizationCode\",c),e._(r,\"fetchTokenByRefreshToken\",c);var _=o(\"a3d4c448\");e._(r,\"discoveryPath\",_),e._(r,\"fetchOidcConfig\",_);var t=o(\"b3e6a508\");e._(r,\"revoke\",t);var v=o(\"434ae7a7\");e._(r,\"generateSignInUri\",v);var n=o(\"f3fb7556\");e._(r,\"generateSignOutUri\",n);var i=o(\"28275761\");e._(r,\"fetchUserInfo\",i);var s=o(\"8c5ab0f7\");e._(r,\"verifyAndParseCodeFromCallbackUri\",s);var d=o(\"046214dc\");e._(r,\"LogtoError\",d),e._(r,\"LogtoRequestError\",d),e._(r,\"isLogtoRequestErrorJson\",d);var f=o(\"4656e3b1\");e._(r,\"decodeIdToken\",f);var b=o(\"6cab272d\");e._(r,\"decodeAccessToken\",b);var g=o(\"ee00f08c\");e._(r,\"withReservedScopes\",g);var h=o(\"73517161\");e._(r,\"isArbitraryObject\",h);var k=o(\"8e2b9846\");e._(r,\"Prompt\",k),e._(r,\"QueryKey\",k);var u=o(\"5e249884\");e._(r,\"ReservedResource\",u),e._(r,\"UserScope\",u);}","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { decoder } from './buffer_utils.js';\nimport epoch from './epoch.js';\nimport secs from './secs.js';\nimport isObject from './is_object.js';\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nexport default (protectedHeader, encodedPayload, options = {}) => {\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n }\n const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n const presenceCheck = [...requiredClaims];\n if (maxTokenAge !== undefined)\n presenceCheck.push('iat');\n if (audience !== undefined)\n presenceCheck.push('aud');\n if (subject !== undefined)\n presenceCheck.push('sub');\n if (issuer !== undefined)\n presenceCheck.push('iss');\n for (const claim of new Set(presenceCheck.reverse())) {\n if (!(claim in payload)) {\n throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n }\n }\n if (issuer &&\n !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n }\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n }\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n }\n }\n if (maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n }\n }\n return payload;\n};\n","'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import { ContentType, QueryKey } from '../consts/index.js';\n\nconst revoke = async (revocationEndpoint, clientId, token, requester) => requester(revocationEndpoint, {\n method: 'POST',\n headers: ContentType.formUrlEncoded,\n body: new URLSearchParams({\n [QueryKey.ClientId]: clientId,\n [QueryKey.Token]: token,\n }).toString(),\n});\n\nexport { revoke };\n","'use strict';\nconst mapObj = require('map-obj');\nconst camelCase = require('camelcase');\nconst QuickLru = require('quick-lru');\n\nconst has = (array, key) => array.some(x => {\n\tif (typeof x === 'string') {\n\t\treturn x === key;\n\t}\n\n\tx.lastIndex = 0;\n\treturn x.test(key);\n});\n\nconst cache = new QuickLru({maxSize: 100000});\n\n// Reproduces behavior from `map-obj`\nconst isObject = value =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst camelCaseConvert = (input, options) => {\n\tif (!isObject(input)) {\n\t\treturn input;\n\t}\n\n\toptions = {\n\t\tdeep: false,\n\t\tpascalCase: false,\n\t\t...options\n\t};\n\n\tconst {exclude, pascalCase, stopPaths, deep} = options;\n\n\tconst stopPathsSet = new Set(stopPaths);\n\n\tconst makeMapper = parentPath => (key, value) => {\n\t\tif (deep && isObject(value)) {\n\t\t\tconst path = parentPath === undefined ? key : `${parentPath}.${key}`;\n\n\t\t\tif (!stopPathsSet.has(path)) {\n\t\t\t\tvalue = mapObj(value, makeMapper(path));\n\t\t\t}\n\t\t}\n\n\t\tif (!(exclude && has(exclude, key))) {\n\t\t\tconst cacheKey = pascalCase ? `${key}_` : key;\n\n\t\t\tif (cache.has(cacheKey)) {\n\t\t\t\tkey = cache.get(cacheKey);\n\t\t\t} else {\n\t\t\t\tconst returnValue = camelCase(key, {pascalCase, locale: false});\n\n\t\t\t\tif (key.length < 100) { // Prevent abuse\n\t\t\t\t\tcache.set(cacheKey, returnValue);\n\t\t\t\t}\n\n\t\t\t\tkey = returnValue;\n\t\t\t}\n\t\t}\n\n\t\treturn [key, value];\n\t};\n\n\treturn mapObj(input, makeMapper(undefined));\n};\n\nmodule.exports = (input, options) => {\n\tif (Array.isArray(input)) {\n\t\treturn Object.keys(input).map(key => camelCaseConvert(input[key], options));\n\t}\n\n\treturn camelCaseConvert(input, options);\n};\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function subtleDsa(alg, algorithm) {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'EdDSA':\n return { name: algorithm.name };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","function memoize(run) {\n const promiseCache = new Map();\n const memoized = async function (...args) {\n const promiseKey = JSON.stringify(args);\n const cachedPromise = promiseCache.get(promiseKey);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = (async () => {\n try {\n return await run.apply(this, args);\n }\n finally {\n promiseCache.delete(promiseKey);\n }\n })();\n promiseCache.set(promiseKey, promise);\n return promise;\n };\n return memoized;\n}\n\nexport { memoize };\n","import { LogtoError } from '@logto/js';\nimport { createRemoteJWKSet, jwtVerify } from 'jose';\n\nconst defaultClockTolerance = 300; // 5 minutes\nconst verifyIdToken = async (idToken, clientId, issuer, jwks, clockTolerance = defaultClockTolerance) => {\n const result = await jwtVerify(idToken, jwks, { audience: clientId, issuer, clockTolerance });\n if (Math.abs((result.payload.iat ?? 0) - Date.now() / 1000) > clockTolerance) {\n throw new LogtoError('id_token.invalid_iat');\n }\n};\nclass DefaultJwtVerifier {\n constructor(client, clockTolerance = defaultClockTolerance) {\n this.client = client;\n this.clockTolerance = clockTolerance;\n }\n async verifyIdToken(idToken) {\n const { appId } = this.client.logtoConfig;\n const { issuer, jwksUri } = await this.client.getOidcConfig();\n this.getJwtVerifyGetKey ||= createRemoteJWKSet(new URL(jwksUri));\n await verifyIdToken(idToken, appId, issuer, this.getJwtVerifyGetKey, this.clockTolerance);\n }\n}\n\nexport { DefaultJwtVerifier, defaultClockTolerance, verifyIdToken };\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","import { LogtoError } from '@logto/client';\nimport { fromUint8Array } from 'js-base64';\n\n/** @link [Proof Key for Code Exchange by OAuth Public Clients](https://datatracker.ietf.org/doc/html/rfc7636) */\n/**\n * @param length The length of the raw random data.\n */\nconst generateRandomString = (length = 64) => fromUint8Array(crypto.getRandomValues(new Uint8Array(length)), true);\n/**\n * Generates random string for state and encodes them in url safe base64\n */\nconst generateState = () => generateRandomString();\n/**\n * Generates code verifier\n *\n * @link [Client Creates a Code Verifier](https://datatracker.ietf.org/doc/html/rfc7636#section-4.1)\n */\nconst generateCodeVerifier = () => generateRandomString();\n/**\n * Calculates the S256 PKCE code challenge for an arbitrary code verifier and encodes it in url safe base64\n *\n * @param {String} codeVerifier Code verifier to calculate the S256 code challenge for\n * @link [Client Creates the Code Challenge](https://datatracker.ietf.org/doc/html/rfc7636#section-4.2)\n */\nconst generateCodeChallenge = async (codeVerifier) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (crypto.subtle === undefined) {\n /**\n * `crypto.subtle` is available only in secure contexts (HTTPS) in some or all supporting browsers,\n * https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle\n * https://www.chromium.org/blink/webcrypto/#accessing-it\n */\n throw new LogtoError('crypto_subtle_unavailable');\n }\n const encodedCodeVerifier = new TextEncoder().encode(codeVerifier);\n const codeChallenge = new Uint8Array(await crypto.subtle.digest('SHA-256', encodedCodeVerifier));\n return fromUint8Array(codeChallenge, true);\n};\n\nexport { generateCodeChallenge, generateCodeVerifier, generateState };\n","'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tfor (const [key, value] of this.oldCache.entries()) {\n\t\t\t\t\tthis.onEviction(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n}\n\nmodule.exports = QuickLRU;\n","// TODO @sijie move to essentials\n/* eslint-disable @silverhand/fp/no-let */\n/* eslint-disable @silverhand/fp/no-mutation */\nfunction once(function_) {\n let called = false;\n let result;\n return function (...args) {\n if (!called) {\n called = true;\n result = function_.apply(this, args);\n }\n return result;\n };\n}\n/* eslint-enable @silverhand/fp/no-mutation */\n/* eslint-enable @silverhand/fp/no-let */\n\nexport { once };\n","import { isLogtoRequestErrorJson, LogtoError, LogtoRequestError } from '@logto/js';\n\n/**\n * A factory function that creates a requester by accepting a `fetch`-like function.\n *\n * @param fetchFunction A `fetch`-like function.\n * @returns A requester function.\n * @see {@link Requester}\n */\nconst createRequester = (fetchFunction) => {\n return async (...args) => {\n const response = await fetchFunction(...args);\n if (!response.ok) {\n const cloned = response.clone();\n const responseJson = await response.json();\n console.error(`Logto requester error: [status=${response.status}]`, responseJson);\n if (!isLogtoRequestErrorJson(responseJson)) {\n throw new LogtoError('unexpected_response_error', responseJson);\n }\n // Expected request error from server\n const { code, message } = responseJson;\n throw new LogtoRequestError(code, message, cloned);\n }\n return response.json();\n };\n};\n\nexport { createRequester };\n","import { isCryptoKey } from './webcrypto.js';\nexport default (key) => {\n if (isCryptoKey(key)) {\n return true;\n }\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nexport const types = ['CryptoKey'];\n","import camelcaseKeys from 'camelcase-keys';\nimport { QueryKey, TokenGrantType, ContentType } from '../consts/index.js';\n\nconst fetchTokenByAuthorizationCode = async ({ clientId, tokenEndpoint, redirectUri, codeVerifier, code, resource, }, requester) => {\n const parameters = new URLSearchParams();\n parameters.append(QueryKey.ClientId, clientId);\n parameters.append(QueryKey.Code, code);\n parameters.append(QueryKey.CodeVerifier, codeVerifier);\n parameters.append(QueryKey.RedirectUri, redirectUri);\n parameters.append(QueryKey.GrantType, TokenGrantType.AuthorizationCode);\n if (resource) {\n parameters.append(QueryKey.Resource, resource);\n }\n const snakeCaseCodeTokenResponse = await requester(tokenEndpoint, {\n method: 'POST',\n headers: ContentType.formUrlEncoded,\n body: parameters.toString(),\n });\n return camelcaseKeys(snakeCaseCodeTokenResponse);\n};\n/**\n * Fetch access token by refresh token using the token endpoint and `refresh_token` grant type.\n * @param params The parameters for fetching access token.\n * @param requester The requester for sending HTTP request.\n * @returns A Promise that resolves to the access token response.\n */\nconst fetchTokenByRefreshToken = async (params, requester) => {\n const { clientId, tokenEndpoint, refreshToken, resource, organizationId, scopes } = params;\n const parameters = new URLSearchParams();\n parameters.append(QueryKey.ClientId, clientId);\n parameters.append(QueryKey.RefreshToken, refreshToken);\n parameters.append(QueryKey.GrantType, TokenGrantType.RefreshToken);\n if (resource) {\n parameters.append(QueryKey.Resource, resource);\n }\n if (organizationId) {\n parameters.append(QueryKey.OrganizationId, organizationId);\n }\n if (scopes?.length) {\n parameters.append(QueryKey.Scope, scopes.join(' '));\n }\n const snakeCaseRefreshTokenTokenResponse = await requester(tokenEndpoint, {\n method: 'POST',\n headers: ContentType.formUrlEncoded,\n body: parameters.toString(),\n });\n return camelcaseKeys(snakeCaseRefreshTokenTokenResponse);\n};\n\nexport { fetchTokenByAuthorizationCode, fetchTokenByRefreshToken };\n","export default (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n","import crypto from './webcrypto.js';\nimport { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'EdDSA':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const rest = [\n algorithm,\n jwk.ext ?? false,\n jwk.key_ops ?? keyUsages,\n ];\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto.subtle.importKey('jwk', keyData, ...rest);\n};\nexport default parse;\n","import '../consts/index.js';\nimport { ReservedScope, UserScope } from '../consts/openid.js';\n\n/**\n * @param originalScopes\n * @return scopes should contain all default scopes (`openid`, `offline_access` and `profile`)\n */\nconst withReservedScopes = (originalScopes) => {\n const reservedScopes = Object.values(ReservedScope);\n const uniqueScopes = new Set([...reservedScopes, UserScope.Profile, ...(originalScopes ?? [])]);\n return Array.from(uniqueScopes).join(' ');\n};\n/**\n * Alias of {@link withReservedScopes}.\n *\n * @deprecated Use {@link withReservedScopes} instead.\n */\nconst withDefaultScopes = withReservedScopes;\n\nexport { withDefaultScopes, withReservedScopes };\n","export class JOSEError extends Error {\n static get code() {\n return 'ERR_JOSE_GENERIC';\n }\n constructor(message) {\n super(message);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n static get code() {\n return 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n }\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JWTExpired extends JOSEError {\n static get code() {\n return 'ERR_JWT_EXPIRED';\n }\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n static get code() {\n return 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nexport class JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n static get code() {\n return 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nexport class JWEDecryptionFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n this.message = 'decryption operation failed';\n }\n static get code() {\n return 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nexport class JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n static get code() {\n return 'ERR_JWE_INVALID';\n }\n}\nexport class JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n static get code() {\n return 'ERR_JWS_INVALID';\n }\n}\nexport class JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n static get code() {\n return 'ERR_JWT_INVALID';\n }\n}\nexport class JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n static get code() {\n return 'ERR_JWK_INVALID';\n }\n}\nexport class JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n static get code() {\n return 'ERR_JWKS_INVALID';\n }\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n this.message = 'no applicable key found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n this.message = 'multiple matching keys found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nSymbol.asyncIterator;\nexport class JWKSTimeout extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_TIMEOUT';\n this.message = 'request timed out';\n }\n static get code() {\n return 'ERR_JWKS_TIMEOUT';\n }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n this.message = 'signature verification failed';\n }\n static get code() {\n return 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\n","import { QueryKey } from '../consts/index.js';\n\nconst generateSignOutUri = ({ endSessionEndpoint, clientId, postLogoutRedirectUri, }) => {\n const urlSearchParameters = new URLSearchParams({ [QueryKey.ClientId]: clientId });\n if (postLogoutRedirectUri) {\n urlSearchParameters.append(QueryKey.PostLogoutRedirectUri, postLogoutRedirectUri);\n }\n return `${endSessionEndpoint}?${urlSearchParameters.toString()}`;\n};\n\nexport { generateSignOutUri };\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nexport const decode = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n","import { notFalsy } from './assertions.js';\n\nconst nullable = (exp) => (notFalsy(exp) ? exp : null);\n/**\n * Conditional return the expression result when it's not {@link Falsy};\n * otherwise return `undefined`.\n *\n * @example\n * ```ts\n * conditional(1 && '2') // '2'\n * conditional(false && '1') // undefined\n * ```\n */\nconst conditional = (exp) => (notFalsy(exp) ? exp : undefined);\n/** Alias for {@link conditional}. */\nconst cond = conditional;\n/**\n * Conditional return the stringified expression result (using `String`) when it's not {@link Falsy};\n * otherwise return an empty string.\n *\n * @example\n * ```ts\n * conditionalString(1 && 2) // '2'\n * conditionalString(false && '1') // ''\n * ```\n */\nconst conditionalString = (exp) => (notFalsy(exp) ? String(exp) : '');\n/** Alias for {@link conditionalString}. */\nconst condString = conditionalString;\n/**\n * Conditional concat multiple expression results into a array by filtering all {@link Falsy} results\n * and flatten 1 level deep if the expression result is an array.\n *\n * @example\n * ```ts\n * conditionalArray(1, [2, 3]) // [1, 2, 3]\n * ```\n */\nconst conditionalArray = (...exps) => exps.filter((value) => notFalsy(value)).flat();\n/** Alias for {@link conditionalArray}. */\nconst condArray = conditionalArray;\n/**\n * Return a new object with all {@link Falsy} values removed.\n * This function only performs a shallow removal, i.e. it does not remove\n * {@link Falsy} values nested in objects.\n *\n * @example\n * ```ts\n * conditionalObject({\n * foo: 'foo',\n * bar: undefined,\n * baz: false,\n * }) // { foo: 'foo' }\n * ```\n */\nconst conditionalObject = (object) => \n// eslint-disable-next-line no-restricted-syntax\nObject.fromEntries(Object.entries(object).filter(([, value]) => notFalsy(value)));\n/** Alias for {@link conditionalObject}. */\nconst condObject = conditionalObject;\n\nexport { cond, condArray, condObject, condString, conditional, conditionalArray, conditionalObject, conditionalString, nullable };\n","import BaseClient, { createRequester } from '@logto/client';\nexport { default as BaseClient, LogtoClientError, LogtoError, LogtoRequestError, OidcError, PersistKey, Prompt, ReservedResource, ReservedScope, UserScope, buildOrganizationUrn, createRequester, getOrganizationIdFromUrn, isLogtoRequestError, organizationUrnPrefix } from '@logto/client';\nimport { conditional } from '@silverhand/essentials';\nimport { CacheStorage } from './cache.js';\nimport { BrowserStorage } from './storage.js';\nimport { generateCodeChallenge, generateCodeVerifier, generateState } from './utils/generators.js';\n\nconst navigate = (url) => {\n window.location.assign(url);\n};\nclass LogtoClient extends BaseClient {\n /**\n * @param config The configuration object for the client.\n * @param [unstable_enableCache=false] Whether to enable cache for well-known data.\n * Use sessionStorage by default.\n */\n constructor(config, unstable_enableCache = false) {\n const requester = createRequester(fetch);\n super(config, {\n requester,\n navigate,\n storage: new BrowserStorage(config.appId),\n unstable_cache: conditional(unstable_enableCache && new CacheStorage(config.appId)),\n generateCodeChallenge,\n generateCodeVerifier,\n generateState,\n });\n }\n}\n\nexport { BrowserStorage, LogtoClient as default, generateCodeChallenge, generateCodeVerifier, generateState };\n"],"names":[],"mappings":"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"}