@hapic/oauth2
Version:
A oauth2 api client based on axios.
1 lines • 42.6 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../src/domains/authorize/constants.ts","../src/utils/has-own-property.ts","../src/utils/scope.ts","../src/domains/authorize/helper.ts","../src/domains/base.ts","../src/domains/authorize/module.ts","../src/domains/token/utils/header-transformation.ts","../src/domains/token/utils/request-transformation.ts","../src/domains/token/module.ts","../src/domains/userinfo/index.ts","../src/module.ts","../src/instance.ts","../src/constants.ts","../src/open-id/provider-metadata.ts","../src/open-id/client.ts","../src/open-id/url.ts","../src/index.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum AuthorizeResponseMode {\n QUERY = 'query',\n FRAGMENT = 'fragment',\n FORM_POST = 'form_post',\n WEB_MESSAGE = 'web_message',\n}\n\nexport enum AuthorizeCodeChallengeMethod {\n SHA_256 = 'S256',\n PLAIN = 'plain',\n}\n\nexport enum AuthorizeResponseType {\n NONE = 'none',\n CODE = 'code',\n TOKEN = 'token',\n ID_TOKEN = 'id_token',\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function scopeToArray(scope: string[] | string) : string[] {\n return Array.isArray(scope) ?\n scope :\n scope.split(' ');\n}\n\nexport function scopeToString(scope: string[] | string) : string {\n if (typeof scope === 'string') {\n return scope;\n }\n\n return [\n ...new Set(scope),\n ].join(' ');\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { scopeToString } from '../../utils';\nimport type { AuthorizeParameters } from './types';\n\nexport function buildAuthorizeURL(\n url: string,\n parameters: AuthorizeParameters,\n) : string {\n const output = new URL(url);\n\n if (parameters.response_type) {\n output.searchParams.set(\n 'response_type',\n Array.isArray(parameters.response_type) ?\n scopeToString(parameters.response_type) :\n parameters.response_type,\n );\n } else {\n output.searchParams.set('response_type', 'code');\n }\n\n if (parameters.client_id) {\n output.searchParams.set('client_id', parameters.client_id);\n }\n\n if (parameters.redirect_uri) {\n output.searchParams.set('redirect_uri', parameters.redirect_uri);\n }\n\n if (parameters.response_mode) {\n output.searchParams.set('response_mode', parameters.response_mode);\n }\n\n if (parameters.scope) {\n const scope = Array.isArray(parameters.scope) ?\n scopeToString(parameters.scope) :\n parameters.scope;\n\n output.searchParams.set('scope', scope);\n }\n\n if (parameters.state) {\n output.searchParams.set('state', parameters.state);\n }\n\n if (parameters.code_challenge) {\n output.searchParams.set('code_challenge', parameters.code_challenge);\n }\n\n if (parameters.code_challenge_method) {\n output.searchParams.set('code_challenge_method', parameters.code_challenge_method);\n }\n\n return output.href;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createClient, isClient } from 'hapic';\nimport type { Client, RequestBaseOptions } from 'hapic';\nimport type { Options } from '../config';\nimport type { BaseAPIContext } from './type';\n\nexport abstract class BaseAPI {\n protected client! : Client;\n\n protected options!: Options;\n\n // -----------------------------------------------------------------------------------\n\n constructor(context: BaseAPIContext = {}) {\n this.setClient(context.client);\n this.setOptions(context.options);\n }\n\n // -----------------------------------------------------------------------------------\n\n setClient(input?: Client | RequestBaseOptions) {\n this.client = isClient(input) ?\n input :\n createClient(input);\n }\n\n setOptions(options?: Options) {\n this.options = options || {};\n }\n\n setOption<K extends keyof Options>(key: K, value: Options[K]) {\n this.options[key] = value;\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { buildAuthorizeURL } from './helper';\nimport type { AuthorizeParameters } from './types';\nimport { BaseAPI } from '../base';\n\nexport class AuthorizeAPI extends BaseAPI {\n /**\n * Build authorize url based on\n * input parameters.\n *\n * @param parameters\n */\n buildURL(parameters: Partial<AuthorizeParameters> = {}) : string {\n let baseURL : string;\n\n if (this.options.authorizationEndpoint) {\n baseURL = this.options.authorizationEndpoint;\n } else {\n const clientURL = this.client.defaults.baseURL;\n\n baseURL = new URL('authorize', clientURL).href;\n }\n\n return buildAuthorizeURL(baseURL, {\n ...parameters,\n redirect_uri: parameters.redirect_uri || this.options.redirectUri,\n client_id: parameters.client_id || this.options.clientId,\n scope: parameters.scope || this.options.scope,\n response_type: parameters.response_type || 'code',\n });\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport { stringifyAuthorizationHeader } from 'hapic';\nimport type { TokenBaseOptions } from '../type';\n\n/**\n * Set Content-Type and Authorization Header for request.\n *\n * @param headers\n * @param options\n */\nexport function transformHeadersForTokenAPIRequest(\n headers: Headers,\n options: TokenBaseOptions = {},\n) : void {\n // set content type\n headers.set('Content-Type', 'application/x-www-form-urlencoded');\n\n if (\n options.authorizationHeaderInherit &&\n headers.has('Authorization')\n ) {\n return;\n }\n\n // request should be in general unauthorized\n headers.delete('Authorization');\n\n if (options.authorizationHeader) {\n const header = typeof options.authorizationHeader === 'string' ?\n options.authorizationHeader :\n stringifyAuthorizationHeader(options.authorizationHeader);\n\n headers.set('Authorization', header);\n\n return;\n }\n\n if (\n options.clientCredentialsAsHeader &&\n options.clientId &&\n options.clientSecret\n ) {\n headers.set('Authorization', stringifyAuthorizationHeader({\n type: 'Basic',\n username: options.clientId,\n password: options.clientSecret,\n }));\n }\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from 'hapic';\nimport type { RequestTransformer } from 'hapic';\nimport type { ClientAuthenticationParameters, TokenBaseOptions } from '../type';\nimport { transformHeadersForTokenAPIRequest } from './header-transformation';\n\nexport function createRequestTransformerForTokenAPIRequest(\n parameters: ClientAuthenticationParameters,\n options: TokenBaseOptions = {},\n) : RequestTransformer {\n return (data: any, headers: Headers) => {\n if (!options.clientId) {\n options.clientId = parameters.client_id;\n options.clientSecret = parameters.client_secret;\n }\n\n if (!options.realmId) {\n options.realmId = parameters.realm_id;\n }\n\n transformHeadersForTokenAPIRequest(headers, options);\n\n if (options.clientCredentialsAsHeader) {\n if (data instanceof URLSearchParams) {\n data.delete('client_id');\n data.delete('client_secret');\n\n return data;\n }\n\n if (isObject(data)) {\n if (typeof data.client_id !== 'undefined') {\n delete data.client_id;\n }\n\n if (typeof data.client_secret !== 'undefined') {\n delete data.client_secret;\n }\n }\n }\n\n return data;\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RequestTransformer } from 'hapic';\nimport { HeaderName } from 'hapic';\nimport type { JwtPayload } from '../../type';\n\nimport { BaseAPI } from '../base';\nimport type {\n ClientAuthenticationParameters,\n TokenAuthorizationCodeGrantParameters,\n TokenBaseOptions,\n TokenClientCredentialsGrantParameters,\n TokenGrantParameters,\n TokenGrantResponse,\n TokenIntrospectParameters,\n TokenPasswordGrantParameters,\n TokenRefreshTokenGrantParameters,\n TokenRevokeParameters,\n TokenRobotCredentialsGrantParameters,\n} from './type';\nimport { createRequestTransformerForTokenAPIRequest } from './utils';\n\nexport class TokenAPI extends BaseAPI {\n async createWithRefreshToken(\n parameters: Omit<TokenRefreshTokenGrantParameters, 'grant_type'>,\n options?: TokenBaseOptions,\n ) {\n return this.create({\n grant_type: 'refresh_token',\n ...parameters,\n }, options);\n }\n\n async createWithClientCredentials(\n parameters: Omit<TokenClientCredentialsGrantParameters, 'grant_type'> = {},\n options: TokenBaseOptions = {},\n ) {\n return this.create({\n grant_type: 'client_credentials',\n ...parameters,\n }, options);\n }\n\n async createWithPassword(\n parameters: Omit<TokenPasswordGrantParameters, 'grant_type'>,\n options: TokenBaseOptions = {},\n ) {\n return this.create({\n grant_type: 'password',\n ...parameters,\n }, options);\n }\n\n async createWithAuthorizationCode(\n parameters: Omit<TokenAuthorizationCodeGrantParameters, 'grant_type'>,\n options: TokenBaseOptions = {},\n ): Promise<TokenGrantResponse> {\n return this.create({\n grant_type: 'authorization_code',\n ...parameters,\n }, options);\n }\n\n async createWithRobotCredentials(\n parameters: Omit<TokenRobotCredentialsGrantParameters, 'grant_type'>,\n options: TokenBaseOptions = {},\n ) {\n return this.create({\n grant_type: 'robot_credentials',\n ...parameters,\n }, options);\n }\n\n // ------------------------------------------------------------------\n\n /**\n * @throws Error\n * @param parameters\n * @param options\n */\n async create(\n parameters: TokenGrantParameters,\n options: TokenBaseOptions = {},\n ): Promise<TokenGrantResponse> {\n this.extendCreateParameters(parameters);\n\n const urlSearchParams = this.buildURLSearchParams(parameters);\n\n const { data } = await this.client.post(\n (this.options.tokenEndpoint || '/token'),\n urlSearchParams,\n {\n transform: this.buildRequestTransformers(parameters, options),\n headers: {\n [HeaderName.ACCEPT]: 'application/json',\n },\n },\n );\n\n const tokenResponse: TokenGrantResponse = {\n access_token: data.access_token,\n expires_in: data.expires_in,\n token_type: data.token_type || 'Bearer',\n };\n\n if (data.refresh_token) {\n tokenResponse.refresh_token = data.refresh_token;\n }\n\n if (typeof data.id_token === 'string') {\n tokenResponse.id_token = data.id_token;\n }\n\n if (typeof data.mac_key === 'string') {\n tokenResponse.mac_key = data.mac_key;\n }\n\n if (typeof data.mac_algorithm === 'string') {\n tokenResponse.mac_algorithm = data.mac_algorithm;\n }\n\n return tokenResponse;\n }\n\n async revoke(\n parameters: TokenRevokeParameters = {},\n options: TokenBaseOptions = {},\n ) {\n const urlSearchParams = this.buildURLSearchParams(parameters);\n\n return this.client.post(\n (this.options.revocationEndpoint || '/token/revoke'),\n urlSearchParams,\n {\n transform: this.buildRequestTransformers(parameters, options),\n headers: {\n [HeaderName.ACCEPT]: 'application/json',\n },\n },\n );\n }\n\n async introspect<T extends JwtPayload>(\n parameters: TokenIntrospectParameters = {},\n options: TokenBaseOptions = {},\n ): Promise<T> {\n const urlSearchParams = this.buildURLSearchParams(parameters);\n\n const { data } = await this.client.post(\n this.options.introspectionEndpoint || '/token/introspect',\n urlSearchParams,\n {\n transform: this.buildRequestTransformers(parameters, options),\n headers: {\n [HeaderName.ACCEPT]: 'application/json',\n },\n },\n );\n\n return data;\n }\n\n protected buildRequestTransformers(\n parameters: ClientAuthenticationParameters,\n options: TokenBaseOptions = {},\n ) : RequestTransformer[] {\n const transformers : RequestTransformer[] = [];\n\n if (!options.clientId) {\n if (this.options.clientId) {\n options.clientId = this.options.clientId;\n }\n\n if (this.options.clientSecret) {\n options.clientSecret = this.options.clientSecret;\n }\n }\n\n if (!options.realmId && this.options.realmId) {\n options.realmId = this.options.realmId;\n }\n\n transformers.push(createRequestTransformerForTokenAPIRequest(parameters, options));\n\n if (this.client.defaults.transform) {\n if (Array.isArray(this.client.defaults.transform)) {\n transformers.push(...this.client.defaults.transform);\n } else {\n transformers.push(this.client.defaults.transform);\n }\n }\n\n return transformers;\n }\n\n // ------------------------------------------------------------------\n\n extendCreateParameters(parameters: TokenGrantParameters): TokenGrantParameters {\n if (\n parameters.grant_type !== 'authorization_code' &&\n parameters.grant_type !== 'robot_credentials'\n ) {\n if (!parameters.scope && this.options.scope) {\n parameters.scope = this.options.scope;\n }\n }\n\n if (parameters.grant_type === 'authorization_code') {\n if (!parameters.redirect_uri && this.options.redirectUri) {\n parameters.redirect_uri = this.options.redirectUri;\n }\n }\n\n if (!parameters.client_id) {\n if (parameters.client_secret) {\n delete parameters.client_secret;\n }\n\n if (this.options.clientId) {\n parameters.client_id = this.options.clientId;\n }\n\n if (this.options.clientSecret) {\n parameters.client_secret = this.options.clientSecret;\n }\n }\n\n if (!parameters.realm_id && this.options.realmId) {\n parameters.realm_id = this.options.realmId;\n }\n\n return parameters;\n }\n\n // ------------------------------------------------------------------\n\n protected buildURLSearchParams(\n input: Record<string, any>,\n ) : URLSearchParams {\n const urlSearchParams = new URLSearchParams();\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const value = input[keys[i]];\n\n if (typeof value === 'string' && !!value) {\n urlSearchParams.append(keys[i], value);\n } else if (Array.isArray(value)) {\n const str = value.filter((el) => el).join(' ');\n if (str) {\n urlSearchParams.append(keys[i], str);\n }\n }\n }\n\n return urlSearchParams;\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { AuthorizationHeader } from 'hapic';\nimport { HeaderName, stringifyAuthorizationHeader } from 'hapic';\nimport { BaseAPI } from '../base';\nimport type { BaseAPIContext } from '../type';\n\nexport class UserInfoAPI extends BaseAPI {\n // eslint-disable-next-line no-useless-constructor,@typescript-eslint/no-useless-constructor\n constructor(context?: BaseAPIContext) {\n super(context);\n }\n\n // -----------------------------------------------------------------------------------\n\n /**\n * @throws Error\n * @param header\n */\n async get<T extends Record<string, any> = Record<string, any>>(\n header?: string | AuthorizationHeader,\n ) : Promise<T> {\n const headers : Record<string, string> = {\n [HeaderName.ACCEPT]: 'application/json',\n };\n\n if (header) {\n if (typeof header === 'string') {\n if (header.indexOf(' ') === -1) {\n headers.Authorization = `Bearer ${header}`;\n } else {\n headers.Authorization = header;\n }\n } else {\n headers.Authorization = stringifyAuthorizationHeader(header);\n }\n }\n\n const { data } = await this.client.get(\n (this.options.userinfoEndpoint || '/userinfo'),\n {\n headers,\n },\n );\n\n return data;\n }\n}\n","/*\n * Copyright (c) 2021-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Client } from 'hapic';\nimport type { ConfigInput, Options } from './config';\n\nimport { AuthorizeAPI, TokenAPI, UserInfoAPI } from './domains';\n\nexport class OAuth2Client extends Client {\n override readonly '@instanceof' = Symbol.for('OAuth2Client');\n\n public readonly options : Options;\n\n public authorize: AuthorizeAPI;\n\n public token : TokenAPI;\n\n public userInfo : UserInfoAPI;\n\n // -----------------------------------------------------------------------------------\n\n constructor(input?: ConfigInput) {\n input = input || {};\n\n super(input.request);\n\n const options = input.options || {};\n\n this.options = options;\n\n this.token = new TokenAPI({ client: this, options });\n this.authorize = new AuthorizeAPI({ client: this, options });\n this.userInfo = new UserInfoAPI({ client: this, options });\n }\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n hasOwnProperty,\n verifyInstanceBySymbol,\n} from 'hapic';\nimport type { ConfigInput } from './config';\nimport { OAuth2Client } from './module';\n\nconst instanceMap: Record<string, OAuth2Client> = {};\n\n/**\n * Verify if an oauth2 client singleton instance exists.\n *\n * @param key\n */\nexport function hasClient(\n key?: string,\n) : boolean {\n return hasOwnProperty(instanceMap, key || 'default');\n}\n\n/**\n * Set the oauth2 client singleton instance.\n *\n * @param client\n * @param key\n */\nexport function setClient(\n client: OAuth2Client,\n key?: string,\n) : OAuth2Client {\n key = key || 'default';\n\n instanceMap[key] = client;\n\n return client;\n}\n\n/**\n * Receive an oauth2 singleton instance.\n *\n * @param key\n */\nexport function useClient(\n key?: string,\n) : OAuth2Client {\n key = key || 'default';\n\n if (Object.prototype.hasOwnProperty.call(instanceMap, key)) {\n return instanceMap[key];\n }\n\n const instance = createClient();\n\n instanceMap[key] = instance;\n\n return instance;\n}\n\n/**\n * Unset an oauth2 client singleton instance.\n *\n * @param key\n */\nexport function unsetClient(key?: string) {\n key = key || 'default';\n if (hasOwnProperty(instanceMap, key)) {\n delete instanceMap[key];\n }\n}\n\n/**\n * Create an oauth2 client.\n *\n * @param input\n */\nexport function createClient(input?: ConfigInput) {\n return new OAuth2Client(input);\n}\n\n/**\n * Check if the argument is of instance Client.\n *\n * @param input\n */\nexport function isClient(input: unknown): input is OAuth2Client {\n if (input instanceof OAuth2Client) {\n return true;\n }\n\n return verifyInstanceBySymbol(input, 'OAuth2Client');\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ResponseType {\n NONE = 'none',\n CODE = 'code',\n ID_TOKEN = 'id_token',\n TOKEN = 'token',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type { Options } from '../config';\nimport type { OpenIDProviderMetadata } from './type';\n\nexport function parseOpenIDProviderMetadata(\n data: OpenIDProviderMetadata,\n) : Options {\n const options: Options = {};\n\n if (data.authorization_endpoint) {\n options.authorizationEndpoint = data.authorization_endpoint;\n }\n\n if (data.introspection_endpoint) {\n options.introspectionEndpoint = data.introspection_endpoint;\n }\n\n if (data.token_endpoint) {\n options.tokenEndpoint = data.token_endpoint;\n }\n\n if (data.userinfo_endpoint) {\n options.userinfoEndpoint = data.userinfo_endpoint;\n }\n\n if (data.revocation_endpoint) {\n options.revocationEndpoint = data.revocation_endpoint;\n }\n\n return options;\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client as BaseClient, RequestBaseOptions } from 'hapic';\nimport { createClient, isClient } from 'hapic';\nimport { OAuth2Client } from '../module';\nimport { parseOpenIDProviderMetadata } from './provider-metadata';\nimport type { OpenIDProviderMetadata } from './type';\n\n/**\n * Create a client instance by requesting details of\n * the open-id discovery endpoint.\n *\n * @param url (.e.g. .well-known/openid-configuration)\n * @param options\n */\nexport async function createClientWithOpenIDDiscoveryURL(\n url: string,\n options?: BaseClient | RequestBaseOptions,\n) : Promise<OAuth2Client> {\n let client: BaseClient;\n\n if (isClient(options)) {\n client = options;\n } else {\n client = createClient(options);\n }\n\n const { data }: { data: OpenIDProviderMetadata } = await client.get(url);\n\n return new OAuth2Client({\n request: client.defaults,\n options: parseOpenIDProviderMetadata(data),\n });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function buildOpenIDDiscoveryURL(baseURL?: string) : string {\n let url = '.well-known/openid-configuration';\n\n if (baseURL) {\n url = new URL(url, baseURL).href;\n } else {\n url = `/${url}`;\n }\n\n return url;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createClient } from './instance';\n\nexport * from './config';\nexport * from './client';\nexport * from './constants';\nexport * from './instance';\nexport * from './domains';\nexport * from './open-id';\nexport * from './module';\nexport * from './type';\nexport * from './utils';\n\nconst client = createClient();\nexport default client;\n"],"names":["AuthorizeResponseMode","AuthorizeCodeChallengeMethod","AuthorizeResponseType","hasOwnProperty","obj","prop","Object","prototype","call","scopeToArray","scope","Array","isArray","split","scopeToString","Set","join","buildAuthorizeURL","url","parameters","output","URL","response_type","searchParams","set","client_id","redirect_uri","response_mode","state","code_challenge","code_challenge_method","href","BaseAPI","setClient","input","client","isClient","createClient","setOptions","options","setOption","key","value","context","AuthorizeAPI","buildURL","baseURL","authorizationEndpoint","clientURL","defaults","redirectUri","clientId","transformHeadersForTokenAPIRequest","headers","authorizationHeaderInherit","has","delete","authorizationHeader","header","stringifyAuthorizationHeader","clientCredentialsAsHeader","clientSecret","type","username","password","createRequestTransformerForTokenAPIRequest","data","client_secret","realmId","realm_id","URLSearchParams","isObject","TokenAPI","createWithRefreshToken","create","grant_type","createWithClientCredentials","createWithPassword","createWithAuthorizationCode","createWithRobotCredentials","extendCreateParameters","urlSearchParams","buildURLSearchParams","post","tokenEndpoint","transform","buildRequestTransformers","HeaderName","ACCEPT","tokenResponse","access_token","expires_in","token_type","refresh_token","id_token","mac_key","mac_algorithm","revoke","revocationEndpoint","introspect","introspectionEndpoint","transformers","push","keys","i","length","append","str","filter","el","UserInfoAPI","get","indexOf","Authorization","userinfoEndpoint","OAuth2Client","Client","request","Symbol","for","token","authorize","userInfo","instanceMap","hasClient","useClient","instance","unsetClient","verifyInstanceBySymbol","ResponseType","parseOpenIDProviderMetadata","authorization_endpoint","introspection_endpoint","token_endpoint","userinfo_endpoint","revocation_endpoint","createClientWithOpenIDDiscoveryURL","buildOpenIDDiscoveryURL"],"mappings":"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"}