@turnkey/react-wallet-kit 1.10.0 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/providers/client/Provider.d.ts.map +1 -1
  2. package/dist/providers/client/Provider.js +302 -304
  3. package/dist/providers/client/Provider.js.map +1 -1
  4. package/dist/providers/client/Provider.mjs +173 -183
  5. package/dist/providers/client/Provider.mjs.map +1 -1
  6. package/dist/utils/oauth/completion.d.ts +132 -0
  7. package/dist/utils/oauth/completion.d.ts.map +1 -0
  8. package/dist/utils/oauth/completion.js +136 -0
  9. package/dist/utils/oauth/completion.js.map +1 -0
  10. package/dist/utils/oauth/completion.mjs +176 -0
  11. package/dist/utils/oauth/completion.mjs.map +1 -0
  12. package/dist/utils/oauth/config.d.ts +34 -0
  13. package/dist/utils/oauth/config.d.ts.map +1 -0
  14. package/dist/utils/oauth/config.js +69 -0
  15. package/dist/utils/oauth/config.js.map +1 -0
  16. package/dist/utils/oauth/config.mjs +54 -0
  17. package/dist/utils/oauth/config.mjs.map +1 -0
  18. package/dist/utils/oauth/helpers.d.ts +13 -0
  19. package/dist/utils/oauth/helpers.d.ts.map +1 -0
  20. package/dist/utils/oauth/helpers.js +38 -0
  21. package/dist/utils/oauth/helpers.js.map +1 -0
  22. package/dist/utils/oauth/helpers.mjs +35 -0
  23. package/dist/utils/oauth/helpers.mjs.map +1 -0
  24. package/dist/utils/oauth/index.d.ts +7 -0
  25. package/dist/utils/oauth/index.d.ts.map +1 -0
  26. package/dist/utils/oauth/pkce.d.ts +14 -0
  27. package/dist/utils/oauth/pkce.d.ts.map +1 -0
  28. package/dist/utils/oauth/pkce.js +48 -0
  29. package/dist/utils/oauth/pkce.js.map +1 -0
  30. package/dist/utils/oauth/pkce.mjs +85 -0
  31. package/dist/utils/oauth/pkce.mjs.map +1 -0
  32. package/dist/utils/oauth/storage.d.ts +48 -0
  33. package/dist/utils/oauth/storage.d.ts.map +1 -0
  34. package/dist/utils/oauth/storage.js +87 -0
  35. package/dist/utils/oauth/storage.js.map +1 -0
  36. package/dist/utils/oauth/storage.mjs +78 -0
  37. package/dist/utils/oauth/storage.mjs.map +1 -0
  38. package/dist/utils/oauth/url.d.ts +92 -0
  39. package/dist/utils/oauth/url.d.ts.map +1 -0
  40. package/dist/utils/oauth/url.js +222 -0
  41. package/dist/utils/oauth/url.js.map +1 -0
  42. package/dist/utils/oauth/url.mjs +228 -0
  43. package/dist/utils/oauth/url.mjs.map +1 -0
  44. package/package.json +3 -3
  45. package/dist/utils/oauth.d.ts +0 -323
  46. package/dist/utils/oauth.d.ts.map +0 -1
  47. package/dist/utils/oauth.js +0 -613
  48. package/dist/utils/oauth.js.map +0 -1
  49. package/dist/utils/oauth.mjs +0 -670
  50. package/dist/utils/oauth.mjs.map +0 -1
@@ -1,613 +0,0 @@
1
- 'use strict';
2
-
3
- var sdkTypes = require('@turnkey/sdk-types');
4
- var freeBrandsSvgIcons = require('@fortawesome/free-brands-svg-icons');
5
-
6
- // ============================================================================
7
- // OAuth URL Constants
8
- // ============================================================================
9
- const DISCORD_AUTH_URL = "https://discord.com/oauth2/authorize";
10
- const X_AUTH_URL = "https://x.com/i/oauth2/authorize";
11
- const GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
12
- const APPLE_AUTH_URL = "https://account.apple.com/auth/authorize";
13
- const FACEBOOK_AUTH_URL = "https://www.facebook.com/v11.0/dialog/oauth";
14
- const FACEBOOK_GRAPH_URL = "https://graph.facebook.com/v11.0/oauth/access_token";
15
- // ============================================================================
16
- // OAuth Popup Constants
17
- // ============================================================================
18
- const popupWidth = 500;
19
- const popupHeight = 600;
20
- // ============================================================================
21
- // OAuth Intent Constants
22
- // ============================================================================
23
- const OAUTH_INTENT_ADD_PROVIDER = "addProvider";
24
- const OAUTH_ADD_PROVIDER_METADATA_KEY = "oauth_add_provider_metadata";
25
- /**
26
- * Stores OAuth add provider metadata in session storage
27
- * Used for addOauthProvider flow if opening in-page
28
- */
29
- function storeOAuthAddProviderMetadata(metadata) {
30
- try {
31
- sessionStorage.setItem(OAUTH_ADD_PROVIDER_METADATA_KEY, JSON.stringify(metadata));
32
- } catch (error) {
33
- throw new sdkTypes.TurnkeyError(`Failed to store OAuth add provider metadata: ${error instanceof Error ? error.message : "Unknown error"}`, sdkTypes.TurnkeyErrorCodes.OAUTH_SIGNUP_ERROR);
34
- }
35
- }
36
- /**
37
- * Retrieves OAuth add provider metadata from session storage
38
- */
39
- function getOAuthAddProviderMetadata() {
40
- try {
41
- const stored = sessionStorage.getItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
42
- if (!stored) return null;
43
- try {
44
- return JSON.parse(stored);
45
- } catch {
46
- return null;
47
- }
48
- } catch (error) {
49
- throw new sdkTypes.TurnkeyError(`Failed to retrieve OAuth add provider metadata: ${error instanceof Error ? error.message : "Unknown error"}`, sdkTypes.TurnkeyErrorCodes.OAUTH_SIGNUP_ERROR);
50
- }
51
- }
52
- /**
53
- * Clears OAuth add provider metadata from session storage
54
- */
55
- function clearOAuthAddProviderMetadata() {
56
- try {
57
- sessionStorage.removeItem(OAUTH_ADD_PROVIDER_METADATA_KEY);
58
- } catch (error) {
59
- throw new sdkTypes.TurnkeyError(`Failed to clear OAuth add provider metadata: ${error instanceof Error ? error.message : "Unknown error"}`, sdkTypes.TurnkeyErrorCodes.OAUTH_SIGNUP_ERROR);
60
- }
61
- }
62
- // ============================================================================
63
- // OAuth State Building
64
- // ============================================================================
65
- /**
66
- * Builds the OAuth state parameter string
67
- */
68
- function buildOAuthState(params) {
69
- const {
70
- provider,
71
- flow,
72
- publicKey,
73
- nonce,
74
- additionalState
75
- } = params;
76
- let state = `provider=${provider}&flow=${flow}&publicKey=${encodeURIComponent(publicKey)}`;
77
- if (nonce) {
78
- state += `&nonce=${nonce}`;
79
- }
80
- if (additionalState) {
81
- const extra = Object.entries(additionalState).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join("&");
82
- if (extra) {
83
- state += `&${extra}`;
84
- }
85
- }
86
- return state;
87
- }
88
- // ============================================================================
89
- // OAuth Provider Opening Utilities
90
- // ============================================================================
91
- /**
92
- * Opens a centered OAuth popup window
93
- */
94
- function openOAuthPopup() {
95
- const width = popupWidth;
96
- const height = popupHeight;
97
- const left = window.screenX + (window.innerWidth - width) / 2;
98
- const top = window.screenY + (window.innerHeight - height) / 2;
99
- return window.open("about:blank", "_blank", `width=${width},height=${height},top=${top},left=${left},scrollbars=yes,resizable=yes`);
100
- }
101
- /**
102
- * Redirects to OAuth provider URL
103
- */
104
- function redirectToOAuthProvider(url) {
105
- window.location.href = url;
106
- const timeLimit = 5 * 60 * 1000; // 5 minutes
107
- return new Promise((_, reject) => {
108
- const timeout = setTimeout(() => {
109
- reject(new Error("Authentication timed out."));
110
- }, timeLimit);
111
- window.addEventListener("beforeunload", () => clearTimeout(timeout));
112
- });
113
- }
114
- // ============================================================================
115
- // OAuth URL Cleanup
116
- // ============================================================================
117
- /**
118
- * Cleans up OAuth parameters from URL (removes hash and search)
119
- */
120
- function cleanupOAuthUrl() {
121
- window.history.replaceState(null, document.title, window.location.pathname);
122
- }
123
- /**
124
- * Cleans up OAuth hash from URL but preserves search parameters
125
- */
126
- function cleanupOAuthUrlPreserveSearch() {
127
- window.history.replaceState(null, document.title, window.location.pathname + window.location.search);
128
- }
129
- // ============================================================================
130
- // OAuth State Parsing
131
- // ============================================================================
132
- /**
133
- * Parses the OAuth state parameter string into an object
134
- */
135
- function parseStateParam(stateParam) {
136
- if (!stateParam) return {};
137
- const result = {};
138
- const pairs = stateParam.split("&");
139
- for (const pair of pairs) {
140
- const [key, value] = pair.split("=");
141
- if (key && value !== undefined) {
142
- result[key] = decodeURIComponent(value);
143
- }
144
- }
145
- return result;
146
- }
147
- /**
148
- * Unified OAuth response parser for both popup and redirect flows.
149
- * Handles both:
150
- * - PKCE flows (Facebook, Discord, X): code in search parameters
151
- * - Non-PKCE flows (Google, Apple): id_token in hash parameters
152
- * - Apple's non-standard hash format where state parameters are directly embedded
153
- *
154
- * @param url - The full URL to parse (from popup or redirect)
155
- * @param expectedProvider - Optional provider if already known (for popup flows)
156
- * @returns Parsed OAuth response data including tokens, codes, and state parameters, or null if invalid
157
- */
158
- function parseOAuthResponse(url, expectedProvider) {
159
- let idToken = null;
160
- let authCode = null;
161
- let stateString = null;
162
- const parsedUrl = new URL(url);
163
- const search = parsedUrl.search.substring(1); // Remove leading '?'
164
- const hash = parsedUrl.hash.substring(1); // Remove leading '#'
165
- // Handle PKCE flows (code in search parameters)
166
- if (search && search.includes("code=")) {
167
- const searchParams = new URLSearchParams(search);
168
- authCode = searchParams.get("code");
169
- stateString = searchParams.get("state");
170
- }
171
- // Handle non-PKCE flows (id_token in hash)
172
- else if (hash) {
173
- // Handle Apple's non-standard format: state=provider=apple&flow=redirect&...&code=...&id_token=...
174
- if (hash.startsWith("state=provider=apple")) {
175
- // Extract id_token from the end
176
- const idTokenMatch = hash.match(/id_token=([^&]+)$/);
177
- idToken = idTokenMatch ? idTokenMatch[1] : null;
178
- // Extract state content between "state=" and "&code="
179
- const stateEndIndex = hash.indexOf("&code=");
180
- if (stateEndIndex !== -1) {
181
- stateString = hash.substring(6, stateEndIndex); // Remove "state=" prefix
182
- }
183
- } else {
184
- // Standard OAuth format - parse as URLSearchParams
185
- const hashParams = new URLSearchParams(hash);
186
- idToken = hashParams.get("id_token");
187
- stateString = hashParams.get("state");
188
- }
189
- }
190
- // Parse state parameters
191
- const {
192
- provider,
193
- flow,
194
- publicKey,
195
- openModal,
196
- sessionKey,
197
- oauthIntent,
198
- nonce
199
- } = parseStateParam(stateString);
200
- // If we have an expected provider (popup flow), validate it matches
201
- if (expectedProvider) {
202
- const config = OAUTH_PROVIDER_CONFIGS[expectedProvider];
203
- if (config.usesPKCE) {
204
- // PKCE providers must have authCode and matching provider in state
205
- if (!authCode || !stateString || provider !== expectedProvider) {
206
- return null;
207
- }
208
- } else {
209
- // Non-PKCE providers must have idToken
210
- if (!idToken) {
211
- return null;
212
- }
213
- }
214
- }
215
- return {
216
- idToken,
217
- authCode,
218
- provider: provider ?? null,
219
- flow: flow ?? null,
220
- publicKey: publicKey ?? null,
221
- openModal: openModal ?? null,
222
- sessionKey: sessionKey ?? undefined,
223
- oauthIntent: oauthIntent ?? null,
224
- nonce: nonce ?? null
225
- };
226
- }
227
- // ============================================================================
228
- // PKCE Utilities
229
- // ============================================================================
230
- /**
231
- * Generates a PKCE challenge pair (verifier and code challenge)
232
- */
233
- async function generateChallengePair() {
234
- const randomBytes = new Uint8Array(32);
235
- window.crypto.getRandomValues(randomBytes);
236
- const verifier = btoa(String.fromCharCode(...randomBytes)).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
237
- const encoder = new TextEncoder();
238
- const data = encoder.encode(verifier);
239
- const digest = await window.crypto.subtle.digest("SHA-256", data);
240
- const base64Challenge = btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
241
- return {
242
- verifier,
243
- codeChallenge: base64Challenge
244
- };
245
- }
246
- /**
247
- * Exchanges Facebook authorization code for token
248
- */
249
- async function exchangeFacebookCodeForToken(clientId, redirectUri, code, codeVerifier) {
250
- const params = new URLSearchParams({
251
- client_id: clientId,
252
- redirect_uri: redirectUri,
253
- code_verifier: codeVerifier,
254
- code: code,
255
- grant_type: "authorization_code"
256
- });
257
- const response = await fetch(FACEBOOK_GRAPH_URL, {
258
- method: "POST",
259
- headers: {
260
- "Content-Type": "application/x-www-form-urlencoded"
261
- },
262
- body: params.toString()
263
- });
264
- if (!response.ok) {
265
- const errorData = await response.json();
266
- throw new Error(`Facebook token exchange failed: ${JSON.stringify(errorData)}`);
267
- }
268
- return await response.json();
269
- }
270
- /**
271
- * Unified OAuth completion handler.
272
- * Routes to the appropriate completion handler based on params:
273
- * Priority: onAddProvider > onOauthSuccess > callbacks.onOauthRedirect > completeOauth
274
- *
275
- * This is the core completion logic used by both popup and redirect flows.
276
- */
277
- async function completeOAuthFlow(params) {
278
- const {
279
- provider,
280
- publicKey,
281
- oidcToken,
282
- sessionKey,
283
- callbacks,
284
- completeOauth,
285
- onOauthSuccess,
286
- onAddProvider
287
- } = params;
288
- if (onAddProvider) {
289
- await onAddProvider(oidcToken);
290
- } else if (onOauthSuccess) {
291
- onOauthSuccess({
292
- publicKey,
293
- oidcToken,
294
- providerName: provider,
295
- ...(sessionKey && {
296
- sessionKey
297
- })
298
- });
299
- } else if (callbacks?.onOauthRedirect) {
300
- callbacks.onOauthRedirect({
301
- idToken: oidcToken,
302
- publicKey,
303
- ...(sessionKey && {
304
- sessionKey
305
- })
306
- });
307
- } else {
308
- await completeOauth({
309
- oidcToken,
310
- publicKey,
311
- providerName: provider,
312
- ...(sessionKey && {
313
- sessionKey
314
- })
315
- });
316
- }
317
- }
318
- /**
319
- * Gets the verifier key name for a PKCE provider
320
- */
321
- function getPKCEVerifierKey(provider) {
322
- return `${provider}_verifier`;
323
- }
324
- /**
325
- * Retrieves and removes the PKCE verifier from session storage
326
- * @param provider - The OAuth provider
327
- * @returns The verifier string
328
- * @throws TurnkeyError if verifier is not found
329
- */
330
- function consumePKCEVerifier(provider) {
331
- try {
332
- const key = getPKCEVerifierKey(provider);
333
- const verifier = sessionStorage.getItem(key);
334
- if (!verifier) {
335
- throw new sdkTypes.TurnkeyError(`Missing PKCE verifier for ${provider} authentication`, sdkTypes.TurnkeyErrorCodes.OAUTH_SIGNUP_ERROR);
336
- }
337
- sessionStorage.removeItem(key);
338
- return verifier;
339
- } catch (error) {
340
- if (error instanceof sdkTypes.TurnkeyError) {
341
- throw error;
342
- }
343
- throw new sdkTypes.TurnkeyError(`Failed to access PKCE verifier for ${provider}: ${error instanceof Error ? error.message : "Unknown error"}`, sdkTypes.TurnkeyErrorCodes.OAUTH_SIGNUP_ERROR);
344
- }
345
- }
346
- /**
347
- * Stores the PKCE verifier in session storage
348
- * @param provider - The OAuth provider
349
- * @param verifier - The verifier string to store
350
- */
351
- function storePKCEVerifier(provider, verifier) {
352
- try {
353
- sessionStorage.setItem(getPKCEVerifierKey(provider), verifier);
354
- } catch (error) {
355
- throw new sdkTypes.TurnkeyError(`Failed to store PKCE verifier for ${provider}: ${error instanceof Error ? error.message : "Unknown error"}`, sdkTypes.TurnkeyErrorCodes.OAUTH_SIGNUP_ERROR);
356
- }
357
- }
358
- /**
359
- * Checks if a PKCE verifier exists for a provider (without consuming it)
360
- * @param provider - The OAuth provider
361
- * @returns true if verifier exists
362
- */
363
- function hasPKCEVerifier(provider) {
364
- try {
365
- return sessionStorage.getItem(getPKCEVerifierKey(provider)) !== null;
366
- } catch (error) {
367
- throw new sdkTypes.TurnkeyError(`Failed to check PKCE verifier for ${provider}: ${error instanceof Error ? error.message : "Unknown error"}`, sdkTypes.TurnkeyErrorCodes.OAUTH_SIGNUP_ERROR);
368
- }
369
- }
370
- /**
371
- * Unified PKCE flow handler for all PKCE-based OAuth providers.
372
- * Handles the complete PKCE flow: verifier retrieval, token exchange, and completion routing.
373
- *
374
- * This function abstracts the common logic shared between popup and redirect flows
375
- * for Facebook, Discord, and Twitter/X.
376
- *
377
- * @param params - The PKCE flow parameters
378
- * @returns A promise that resolves when the flow is complete
379
- */
380
- async function handlePKCEFlow({
381
- publicKey,
382
- providerName,
383
- sessionKey,
384
- callbacks,
385
- completeOauth,
386
- onOauthSuccess,
387
- onAddProvider,
388
- exchangeCodeForToken
389
- }) {
390
- // Consume the verifier (retrieves and removes from storage)
391
- const verifier = consumePKCEVerifier(providerName);
392
- // Exchange the code for an OIDC token using the provider-specific function
393
- const oidcToken = await exchangeCodeForToken(verifier);
394
- // Use unified completion handler
395
- await completeOAuthFlow({
396
- provider: providerName,
397
- publicKey,
398
- oidcToken,
399
- sessionKey,
400
- callbacks,
401
- completeOauth,
402
- onOauthSuccess,
403
- onAddProvider
404
- });
405
- }
406
- /**
407
- * Pre-configured OAuth provider settings
408
- */
409
- const OAUTH_PROVIDER_CONFIGS = {
410
- [sdkTypes.OAuthProviders.GOOGLE]: {
411
- provider: sdkTypes.OAuthProviders.GOOGLE,
412
- authUrl: GOOGLE_AUTH_URL,
413
- scopes: "openid email profile",
414
- usesPKCE: false,
415
- responseType: "id_token",
416
- nonceInParams: true
417
- },
418
- [sdkTypes.OAuthProviders.APPLE]: {
419
- provider: sdkTypes.OAuthProviders.APPLE,
420
- authUrl: APPLE_AUTH_URL,
421
- scopes: "",
422
- usesPKCE: false,
423
- responseType: "code id_token",
424
- responseMode: "fragment",
425
- nonceInParams: true
426
- },
427
- [sdkTypes.OAuthProviders.FACEBOOK]: {
428
- provider: sdkTypes.OAuthProviders.FACEBOOK,
429
- authUrl: FACEBOOK_AUTH_URL,
430
- scopes: "openid",
431
- usesPKCE: true,
432
- responseType: "code",
433
- nonceInParams: true
434
- },
435
- [sdkTypes.OAuthProviders.DISCORD]: {
436
- provider: sdkTypes.OAuthProviders.DISCORD,
437
- authUrl: DISCORD_AUTH_URL,
438
- scopes: "identify email",
439
- usesPKCE: true,
440
- responseType: "code",
441
- nonceInParams: false
442
- },
443
- [sdkTypes.OAuthProviders.X]: {
444
- provider: sdkTypes.OAuthProviders.X,
445
- authUrl: X_AUTH_URL,
446
- scopes: "tweet.read users.read",
447
- usesPKCE: true,
448
- responseType: "code",
449
- nonceInParams: false
450
- }
451
- };
452
- /**
453
- * Builds the complete OAuth authorization URL for a provider
454
- */
455
- function buildOAuthUrl(params) {
456
- const {
457
- provider,
458
- clientId,
459
- redirectUri,
460
- publicKey,
461
- nonce,
462
- flow,
463
- codeChallenge,
464
- additionalState
465
- } = params;
466
- const config = OAUTH_PROVIDER_CONFIGS[provider];
467
- const authUrl = new URL(config.authUrl);
468
- authUrl.searchParams.set("client_id", clientId);
469
- authUrl.searchParams.set("redirect_uri", redirectUri);
470
- authUrl.searchParams.set("response_type", config.responseType);
471
- if (config.scopes) {
472
- authUrl.searchParams.set("scope", config.scopes);
473
- }
474
- if (config.responseMode) {
475
- authUrl.searchParams.set("response_mode", config.responseMode);
476
- }
477
- // PKCE parameters
478
- if (config.usesPKCE && codeChallenge) {
479
- authUrl.searchParams.set("code_challenge", codeChallenge);
480
- authUrl.searchParams.set("code_challenge_method", "S256");
481
- }
482
- // Nonce handling - some providers want it in URL params, others in state
483
- if (config.nonceInParams) {
484
- authUrl.searchParams.set("nonce", nonce);
485
- }
486
- // Google-specific: prompt for account selection
487
- if (provider === sdkTypes.OAuthProviders.GOOGLE) {
488
- authUrl.searchParams.set("prompt", "select_account");
489
- }
490
- // Build state parameter
491
- const stateParams = {
492
- provider,
493
- flow,
494
- publicKey
495
- };
496
- // Include nonce in state for providers that need it there (not in URL params)
497
- if (!config.nonceInParams) {
498
- stateParams.nonce = nonce;
499
- }
500
- if (additionalState) {
501
- stateParams.additionalState = additionalState;
502
- }
503
- authUrl.searchParams.set("state", buildOAuthState(stateParams));
504
- return authUrl.toString();
505
- }
506
- /**
507
- * Completes OAuth flow in popup - handles both PKCE and non-PKCE providers
508
- */
509
- async function completeOAuthPopup(params) {
510
- const {
511
- provider,
512
- publicKey,
513
- result,
514
- callbacks,
515
- completeOauth,
516
- onOauthSuccess,
517
- exchangeCodeForToken
518
- } = params;
519
- const config = OAUTH_PROVIDER_CONFIGS[provider];
520
- if (config.usesPKCE) {
521
- // PKCE flow - use handlePKCEFlow
522
- if (!exchangeCodeForToken) {
523
- throw new sdkTypes.TurnkeyError("exchangeCodeForToken is required for PKCE providers", sdkTypes.TurnkeyErrorCodes.INTERNAL_ERROR);
524
- }
525
- await handlePKCEFlow({
526
- publicKey,
527
- providerName: provider,
528
- sessionKey: result.sessionKey,
529
- callbacks,
530
- completeOauth,
531
- onOauthSuccess,
532
- exchangeCodeForToken
533
- });
534
- } else {
535
- // Non-PKCE flow - use unified completion handler
536
- await completeOAuthFlow({
537
- provider,
538
- publicKey,
539
- oidcToken: result.idToken,
540
- sessionKey: result.sessionKey,
541
- callbacks,
542
- completeOauth,
543
- onOauthSuccess
544
- });
545
- }
546
- }
547
- // ============================================================================
548
- // OAuth Helper Utilities
549
- // ============================================================================
550
- /**
551
- * Capitalizes the first letter of a provider name
552
- * @param provider - The provider name (e.g., "facebook", "discord")
553
- * @returns The capitalized provider name (e.g., "Facebook", "Discord")
554
- */
555
- function capitalizeProviderName(provider) {
556
- if (!provider) return "Provider";
557
- return provider.charAt(0).toUpperCase() + provider.slice(1);
558
- }
559
- /**
560
- * Gets the FontAwesome icon for an OAuth provider
561
- * @param provider - The provider name
562
- * @returns The FontAwesome icon definition
563
- */
564
- function getProviderIcon(provider) {
565
- switch (provider) {
566
- case sdkTypes.OAuthProviders.FACEBOOK:
567
- return freeBrandsSvgIcons.faFacebook;
568
- case sdkTypes.OAuthProviders.DISCORD:
569
- return freeBrandsSvgIcons.faDiscord;
570
- case sdkTypes.OAuthProviders.X:
571
- return freeBrandsSvgIcons.faXTwitter;
572
- case sdkTypes.OAuthProviders.APPLE:
573
- return freeBrandsSvgIcons.faApple;
574
- case sdkTypes.OAuthProviders.GOOGLE:
575
- default:
576
- return freeBrandsSvgIcons.faGoogle;
577
- }
578
- }
579
-
580
- exports.APPLE_AUTH_URL = APPLE_AUTH_URL;
581
- exports.DISCORD_AUTH_URL = DISCORD_AUTH_URL;
582
- exports.FACEBOOK_AUTH_URL = FACEBOOK_AUTH_URL;
583
- exports.FACEBOOK_GRAPH_URL = FACEBOOK_GRAPH_URL;
584
- exports.GOOGLE_AUTH_URL = GOOGLE_AUTH_URL;
585
- exports.OAUTH_ADD_PROVIDER_METADATA_KEY = OAUTH_ADD_PROVIDER_METADATA_KEY;
586
- exports.OAUTH_INTENT_ADD_PROVIDER = OAUTH_INTENT_ADD_PROVIDER;
587
- exports.OAUTH_PROVIDER_CONFIGS = OAUTH_PROVIDER_CONFIGS;
588
- exports.X_AUTH_URL = X_AUTH_URL;
589
- exports.buildOAuthState = buildOAuthState;
590
- exports.buildOAuthUrl = buildOAuthUrl;
591
- exports.capitalizeProviderName = capitalizeProviderName;
592
- exports.cleanupOAuthUrl = cleanupOAuthUrl;
593
- exports.cleanupOAuthUrlPreserveSearch = cleanupOAuthUrlPreserveSearch;
594
- exports.clearOAuthAddProviderMetadata = clearOAuthAddProviderMetadata;
595
- exports.completeOAuthFlow = completeOAuthFlow;
596
- exports.completeOAuthPopup = completeOAuthPopup;
597
- exports.consumePKCEVerifier = consumePKCEVerifier;
598
- exports.exchangeFacebookCodeForToken = exchangeFacebookCodeForToken;
599
- exports.generateChallengePair = generateChallengePair;
600
- exports.getOAuthAddProviderMetadata = getOAuthAddProviderMetadata;
601
- exports.getPKCEVerifierKey = getPKCEVerifierKey;
602
- exports.getProviderIcon = getProviderIcon;
603
- exports.handlePKCEFlow = handlePKCEFlow;
604
- exports.hasPKCEVerifier = hasPKCEVerifier;
605
- exports.openOAuthPopup = openOAuthPopup;
606
- exports.parseOAuthResponse = parseOAuthResponse;
607
- exports.parseStateParam = parseStateParam;
608
- exports.popupHeight = popupHeight;
609
- exports.popupWidth = popupWidth;
610
- exports.redirectToOAuthProvider = redirectToOAuthProvider;
611
- exports.storeOAuthAddProviderMetadata = storeOAuthAddProviderMetadata;
612
- exports.storePKCEVerifier = storePKCEVerifier;
613
- //# sourceMappingURL=oauth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.js","sources":["../../src/utils/oauth.ts"],"sourcesContent":[null],"names":["DISCORD_AUTH_URL","X_AUTH_URL","GOOGLE_AUTH_URL","APPLE_AUTH_URL","FACEBOOK_AUTH_URL","FACEBOOK_GRAPH_URL","popupWidth","popupHeight","OAUTH_INTENT_ADD_PROVIDER","OAUTH_ADD_PROVIDER_METADATA_KEY","storeOAuthAddProviderMetadata","metadata","sessionStorage","setItem","JSON","stringify","error","TurnkeyError","Error","message","TurnkeyErrorCodes","OAUTH_SIGNUP_ERROR","getOAuthAddProviderMetadata","stored","getItem","parse","clearOAuthAddProviderMetadata","removeItem","buildOAuthState","params","provider","flow","publicKey","nonce","additionalState","state","encodeURIComponent","extra","Object","entries","map","k","v","join","openOAuthPopup","width","height","left","window","screenX","innerWidth","top","screenY","innerHeight","open","redirectToOAuthProvider","url","location","href","timeLimit","Promise","_","reject","timeout","setTimeout","addEventListener","clearTimeout","cleanupOAuthUrl","history","replaceState","document","title","pathname","cleanupOAuthUrlPreserveSearch","search","parseStateParam","stateParam","result","pairs","split","pair","key","value","undefined","decodeURIComponent","parseOAuthResponse","expectedProvider","idToken","authCode","stateString","parsedUrl","URL","substring","hash","includes","searchParams","URLSearchParams","get","startsWith","idTokenMatch","match","stateEndIndex","indexOf","hashParams","openModal","sessionKey","oauthIntent","config","OAUTH_PROVIDER_CONFIGS","usesPKCE","generateChallengePair","randomBytes","Uint8Array","crypto","getRandomValues","verifier","btoa","String","fromCharCode","replace","encoder","TextEncoder","data","encode","digest","subtle","base64Challenge","codeChallenge","exchangeFacebookCodeForToken","clientId","redirectUri","code","codeVerifier","client_id","redirect_uri","code_verifier","grant_type","response","fetch","method","headers","body","toString","ok","errorData","json","completeOAuthFlow","oidcToken","callbacks","completeOauth","onOauthSuccess","onAddProvider","providerName","onOauthRedirect","getPKCEVerifierKey","consumePKCEVerifier","storePKCEVerifier","hasPKCEVerifier","handlePKCEFlow","exchangeCodeForToken","OAuthProviders","GOOGLE","authUrl","scopes","responseType","nonceInParams","APPLE","responseMode","FACEBOOK","DISCORD","X","buildOAuthUrl","set","stateParams","completeOAuthPopup","INTERNAL_ERROR","capitalizeProviderName","charAt","toUpperCase","slice","getProviderIcon","faFacebook","faDiscord","faXTwitter","faApple","faGoogle"],"mappings":"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"}