// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { OAuthConfig } from 'aws-amplify/adapter-core/internals'; import { generateCodeVerifier } from 'aws-amplify/adapter-core'; import { resolveIdentityProviderFromUrl } from './resolveIdentityProviderFromUrl'; import { resolveRedirectSignInUrl } from './resolveRedirectUrl'; import { getSearchParamValueFromUrl } from './getSearchParamValueFromUrl'; export const createUrlSearchParamsForSignInSignUp = ({ url, oAuthConfig, userPoolClientId, state, origin, codeVerifier, }: { url: string; oAuthConfig: OAuthConfig; userPoolClientId: string; state: string; origin: string; codeVerifier: ReturnType; }): URLSearchParams => { const resolvedProvider = resolveIdentityProviderFromUrl(url); const lang = getSearchParamValueFromUrl(url, 'lang'); const redirectUrlSearchParams = new URLSearchParams({ redirect_uri: resolveRedirectSignInUrl(origin, oAuthConfig), response_type: oAuthConfig.responseType, client_id: userPoolClientId, scope: oAuthConfig.scopes.join(' '), state, code_challenge: codeVerifier.toCodeChallenge(), code_challenge_method: codeVerifier.method, }); if (resolvedProvider) { redirectUrlSearchParams.append('identity_provider', resolvedProvider); } if (lang) { redirectUrlSearchParams.append('lang', lang); } return redirectUrlSearchParams; }; export const createUrlSearchParamsForTokenExchange = (input: { code: string; client_id: string; redirect_uri: string; code_verifier: string; grant_type: string; }): URLSearchParams => new URLSearchParams(input); export const createUrlSearchParamsForTokenRevocation = (input: { token: string; client_id: string; }): URLSearchParams => new URLSearchParams(input);