@dynamic-labs-sdk/client 0.1.0-alpha.23 → 0.1.0-alpha.25

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 (37) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/constants.cjs.js +1 -1
  3. package/constants.esm.js +1 -1
  4. package/index.cjs.js +93 -76
  5. package/index.esm.js +92 -75
  6. package/package.json +2 -2
  7. package/src/exports/index.d.ts +2 -2
  8. package/src/exports/index.d.ts.map +1 -1
  9. package/src/modules/auth/social/oauth/{signInWithSocialRedirect/signInWithSocialRedirect.d.ts → authenticateWithSocial/authenticateWithSocial.d.ts} +5 -3
  10. package/src/modules/auth/social/oauth/authenticateWithSocial/authenticateWithSocial.d.ts.map +1 -0
  11. package/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts.map +1 -0
  12. package/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/index.d.ts.map +1 -0
  13. package/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/buildOAuthUrl.d.ts.map +1 -0
  14. package/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/getOAuthBaseUrl/getOAuthBaseUrl.d.ts.map +1 -0
  15. package/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/getOAuthBaseUrl/index.d.ts.map +1 -0
  16. package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/buildOAuthUrl/index.d.ts.map +1 -1
  17. package/src/modules/auth/social/oauth/authenticateWithSocial/index.d.ts +2 -0
  18. package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/index.d.ts.map +1 -1
  19. package/src/modules/auth/social/oauth/{completeSocialRedirectSignIn/completeSocialRedirectSignIn.d.ts → completeSocialAuthentication/completeSocialAuthentication.d.ts} +3 -3
  20. package/src/modules/auth/social/oauth/completeSocialAuthentication/completeSocialAuthentication.d.ts.map +1 -0
  21. package/src/modules/auth/social/oauth/completeSocialAuthentication/index.d.ts +2 -0
  22. package/src/modules/auth/social/oauth/{completeSocialRedirectSignIn → completeSocialAuthentication}/index.d.ts.map +1 -1
  23. package/src/modules/auth/social/oauth/completeSocialRedirectSignIn/completeSocialRedirectSignIn.d.ts.map +0 -1
  24. package/src/modules/auth/social/oauth/completeSocialRedirectSignIn/index.d.ts +0 -2
  25. package/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts.map +0 -1
  26. package/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/addOAuthUrlParams/index.d.ts.map +0 -1
  27. package/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/buildOAuthUrl.d.ts.map +0 -1
  28. package/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/getOAuthBaseUrl/getOAuthBaseUrl.d.ts.map +0 -1
  29. package/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/getOAuthBaseUrl/index.d.ts.map +0 -1
  30. package/src/modules/auth/social/oauth/signInWithSocialRedirect/index.d.ts +0 -2
  31. package/src/modules/auth/social/oauth/signInWithSocialRedirect/signInWithSocialRedirect.d.ts.map +0 -1
  32. /package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts +0 -0
  33. /package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/buildOAuthUrl/addOAuthUrlParams/index.d.ts +0 -0
  34. /package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/buildOAuthUrl/buildOAuthUrl.d.ts +0 -0
  35. /package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/buildOAuthUrl/getOAuthBaseUrl/getOAuthBaseUrl.d.ts +0 -0
  36. /package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/buildOAuthUrl/getOAuthBaseUrl/index.d.ts +0 -0
  37. /package/src/modules/auth/social/oauth/{signInWithSocialRedirect → authenticateWithSocial}/buildOAuthUrl/index.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## 0.1.0-alpha.25 (2025-10-29)
2
+
3
+ ### Breaking Changes
4
+
5
+ - Rename signInWithSocialRedirect -> authenticateWithSocial
6
+ - Rename completeSocialRedirectSignIn -> completeSocialAuthentication
7
+
8
+ ### 🚀 Features
9
+
10
+ - add support for social account linking ([#616](https://github.com/dynamic-labs/dynamic-sdk/pull/616))
11
+
12
+ ## 0.1.0-alpha.24 (2025-10-28)
13
+
14
+ ### Breaking Changes
15
+
16
+ Removed `getSigner` from `solana` package in favor of individual signing methods
17
+ - signAndSendTransaction
18
+ - signTransaction
19
+ - signAllTransactions
20
+
1
21
  ## 0.1.0-alpha.23 (2025-10-22)
2
22
 
3
23
  ### 🚀 Features
package/constants.cjs.js CHANGED
@@ -4,7 +4,7 @@ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
4
4
  var buffer = require('buffer');
5
5
 
6
6
  var name = "@dynamic-labs-sdk/client";
7
- var version = "0.1.0-alpha.23";
7
+ var version = "0.1.0-alpha.25";
8
8
  var dependencies = {
9
9
  "@dynamic-labs/sdk-api-core": "0.0.813"};
10
10
 
package/constants.esm.js CHANGED
@@ -2,7 +2,7 @@ import { AuthStorageEnum, SDKApi, Configuration } from '@dynamic-labs/sdk-api-co
2
2
  import { Buffer as Buffer$1 } from 'buffer';
3
3
 
4
4
  var name = "@dynamic-labs-sdk/client";
5
- var version = "0.1.0-alpha.23";
5
+ var version = "0.1.0-alpha.25";
6
6
  var dependencies = {
7
7
  "@dynamic-labs/sdk-api-core": "0.0.813"};
8
8
 
package/index.cjs.js CHANGED
@@ -1338,79 +1338,6 @@ const serverSigninPasskey = async ({ authentication, createMfaToken }, client)=>
1338
1338
  })
1339
1339
  });
1340
1340
 
1341
- /**
1342
- * Completes the social authentication flow after OAuth redirect.
1343
- *
1344
- * This function processes the OAuth callback URL with authorization codes
1345
- * and completes the user authentication with the social provider.
1346
- *
1347
- * @param params.url - The callback URL containing OAuth response parameters.
1348
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1349
- * @returns A promise that resolves to the authenticated user or null.
1350
- * @throws MissingSocialUrlParamError If required OAuth parameters are missing.
1351
- * @throws InvalidRedirectStorageStateError If the stored state doesn't match.
1352
- */ const completeSocialRedirectSignIn = async ({ url }, client = constants.getDefaultClient())=>{
1353
- const core = constants.getCore(client);
1354
- const apiClient = constants.createApiClient({}, client);
1355
- await core.initTrack.waitForAll();
1356
- const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1357
- const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1358
- if (!dynamicOauthState) {
1359
- throw new MissingSocialUrlParamError('dynamicOauthState');
1360
- }
1361
- if (!dynamicOauthCode) {
1362
- throw new MissingSocialUrlParamError('dynamicOauthCode');
1363
- }
1364
- const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1365
- if (!storedSocialRedirectState) {
1366
- throw new MissingRedirectStorageStateError();
1367
- }
1368
- if (storedSocialRedirectState.state !== dynamicOauthState) {
1369
- throw new InvalidRedirectStorageStateError();
1370
- }
1371
- const { provider, codeVerifier } = storedSocialRedirectState;
1372
- await core.storage.removeItem(redirectStateStorageKeySchema);
1373
- const response = await apiClient.oauthSignIn({
1374
- environmentId: core.environmentId,
1375
- oauthRequest: {
1376
- captchaToken: getNetworkProviderFromNetworkId.consumeCaptchaToken(client),
1377
- code: dynamicOauthCode,
1378
- codeVerifier,
1379
- state: dynamicOauthState
1380
- },
1381
- providerType: provider
1382
- });
1383
- getWalletProviderByKey.updateAuthFromVerifyResponse({
1384
- response
1385
- }, client);
1386
- return response.user;
1387
- };
1388
-
1389
- /**
1390
- * Detects if the current URL is an OAuth redirect from a social provider.
1391
- *
1392
- * This function examines the URL parameters to determine if it contains
1393
- * OAuth callback data from a social authentication flow.
1394
- *
1395
- * @param params.url - The URL to check for OAuth redirect parameters.
1396
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1397
- * @returns A promise that resolves to true if the URL is an OAuth redirect, false otherwise.
1398
- */ const detectOAuthRedirect = async ({ url }, client = constants.getDefaultClient())=>{
1399
- const core = constants.getCore(client);
1400
- const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1401
- const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1402
- if (!dynamicOauthState || !dynamicOauthCode) {
1403
- return false;
1404
- }
1405
- // Wait for SDK to load
1406
- await core.initTrack.waitForAll();
1407
- const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1408
- if (!storedSocialRedirectState || storedSocialRedirectState.state !== dynamicOauthState) {
1409
- return false;
1410
- }
1411
- return true;
1412
- };
1413
-
1414
1341
  const digestSHA256 = (str)=>{
1415
1342
  const encoder = new TextEncoder();
1416
1343
  const data = encoder.encode(str);
@@ -1511,11 +1438,13 @@ const providersRequiringPkce = [
1511
1438
  * This function redirects the user to the specified social provider's
1512
1439
  * authorization page to complete OAuth authentication flow.
1513
1440
  * After the oauth flow is complete, the user will be redirected back to your app.
1441
+ * You can then call `detectOAuthRedirect` to check if the user got redirected back to your app due to the oauth flow,
1442
+ * and finally call `completeSocialAuthentication` to complete the social authentication flow.
1514
1443
  *
1515
1444
  * @param params.provider - The social provider to authenticate with (e.g., 'google', 'github').
1516
1445
  * @param params.redirectUrl - The URL to redirect back to after authentication.
1517
1446
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1518
- */ const signInWithSocialRedirect = async ({ provider, redirectUrl }, client = constants.getDefaultClient())=>{
1447
+ */ const authenticateWithSocial = async ({ provider, redirectUrl }, client = constants.getDefaultClient())=>{
1519
1448
  const core = constants.getCore(client);
1520
1449
  const apiClient = constants.createApiClient({}, client);
1521
1450
  await core.initTrack.waitForAll();
@@ -1537,6 +1466,94 @@ const providersRequiringPkce = [
1537
1466
  await core.navigate(url.toString());
1538
1467
  };
1539
1468
 
1469
+ /**
1470
+ * Completes the social authentication flow after OAuth redirect.
1471
+ *
1472
+ * This function processes the OAuth callback URL with authorization codes
1473
+ * and completes the user authentication with the social provider.
1474
+ *
1475
+ * @param params.url - The callback URL containing OAuth response parameters.
1476
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1477
+ * @returns A promise that resolves to the authenticated user or null.
1478
+ * @throws MissingSocialUrlParamError If required OAuth parameters are missing.
1479
+ * @throws InvalidRedirectStorageStateError If the stored state doesn't match.
1480
+ */ const completeSocialAuthentication = async ({ url }, client = constants.getDefaultClient())=>{
1481
+ const core = constants.getCore(client);
1482
+ const apiClient = constants.createApiClient({}, client);
1483
+ await core.initTrack.waitForAll();
1484
+ const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1485
+ const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1486
+ if (!dynamicOauthState) {
1487
+ throw new MissingSocialUrlParamError('dynamicOauthState');
1488
+ }
1489
+ if (!dynamicOauthCode) {
1490
+ throw new MissingSocialUrlParamError('dynamicOauthCode');
1491
+ }
1492
+ const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1493
+ if (!storedSocialRedirectState) {
1494
+ throw new MissingRedirectStorageStateError();
1495
+ }
1496
+ if (storedSocialRedirectState.state !== dynamicOauthState) {
1497
+ throw new InvalidRedirectStorageStateError();
1498
+ }
1499
+ const { provider, codeVerifier } = storedSocialRedirectState;
1500
+ await core.storage.removeItem(redirectStateStorageKeySchema);
1501
+ let response;
1502
+ // if user is alreadyauthenticated, we're verifying the social auth to link it to the user
1503
+ if (client.user) {
1504
+ response = await apiClient.oauthVerify({
1505
+ environmentId: core.environmentId,
1506
+ oauthRequest: {
1507
+ code: dynamicOauthCode,
1508
+ codeVerifier,
1509
+ state: dynamicOauthState
1510
+ },
1511
+ providerType: provider
1512
+ });
1513
+ } else {
1514
+ // if user is not authenticated, we're signing in with the social auth
1515
+ response = await apiClient.oauthSignIn({
1516
+ environmentId: core.environmentId,
1517
+ oauthRequest: {
1518
+ captchaToken: getNetworkProviderFromNetworkId.consumeCaptchaToken(client),
1519
+ code: dynamicOauthCode,
1520
+ codeVerifier,
1521
+ state: dynamicOauthState
1522
+ },
1523
+ providerType: provider
1524
+ });
1525
+ }
1526
+ getWalletProviderByKey.updateAuthFromVerifyResponse({
1527
+ response
1528
+ }, client);
1529
+ return response.user;
1530
+ };
1531
+
1532
+ /**
1533
+ * Detects if the current URL is an OAuth redirect from a social provider.
1534
+ *
1535
+ * This function examines the URL parameters to determine if it contains
1536
+ * OAuth callback data from a social authentication flow.
1537
+ *
1538
+ * @param params.url - The URL to check for OAuth redirect parameters.
1539
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1540
+ * @returns A promise that resolves to true if the URL is an OAuth redirect, false otherwise.
1541
+ */ const detectOAuthRedirect = async ({ url }, client = constants.getDefaultClient())=>{
1542
+ const core = constants.getCore(client);
1543
+ const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1544
+ const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1545
+ if (!dynamicOauthState || !dynamicOauthCode) {
1546
+ return false;
1547
+ }
1548
+ // Wait for SDK to load
1549
+ await core.initTrack.waitForAll();
1550
+ const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1551
+ if (!storedSocialRedirectState || storedSocialRedirectState.state !== dynamicOauthState) {
1552
+ return false;
1553
+ }
1554
+ return true;
1555
+ };
1556
+
1540
1557
  /**
1541
1558
  * Retrieves token balances across multiple blockchain networks.
1542
1559
  *
@@ -3707,7 +3724,8 @@ exports.assertWalletProviderMethodDefined = assertWalletProviderMethodDefined;
3707
3724
  exports.authenticateMfaRecoveryCode = authenticateMfaRecoveryCode;
3708
3725
  exports.authenticatePasskeyMFA = authenticatePasskeyMFA;
3709
3726
  exports.authenticateTotpMfaDevice = authenticateTotpMfaDevice;
3710
- exports.completeSocialRedirectSignIn = completeSocialRedirectSignIn;
3727
+ exports.authenticateWithSocial = authenticateWithSocial;
3728
+ exports.completeSocialAuthentication = completeSocialAuthentication;
3711
3729
  exports.connectAndVerifyWithWalletProvider = connectAndVerifyWithWalletProvider;
3712
3730
  exports.connectWithWalletProvider = connectWithWalletProvider;
3713
3731
  exports.createDynamicClient = createDynamicClient;
@@ -3750,7 +3768,6 @@ exports.sendSmsOTP = sendSmsOTP;
3750
3768
  exports.setDefaultMfaDevice = setDefaultMfaDevice;
3751
3769
  exports.signInWithExternalJwt = signInWithExternalJwt;
3752
3770
  exports.signInWithPasskey = signInWithPasskey;
3753
- exports.signInWithSocialRedirect = signInWithSocialRedirect;
3754
3771
  exports.signMessage = signMessage;
3755
3772
  exports.switchActiveNetwork = switchActiveNetwork;
3756
3773
  exports.updateUser = updateUser;
package/index.esm.js CHANGED
@@ -1323,79 +1323,6 @@ const serverSigninPasskey = async ({ authentication, createMfaToken }, client)=>
1323
1323
  })
1324
1324
  });
1325
1325
 
1326
- /**
1327
- * Completes the social authentication flow after OAuth redirect.
1328
- *
1329
- * This function processes the OAuth callback URL with authorization codes
1330
- * and completes the user authentication with the social provider.
1331
- *
1332
- * @param params.url - The callback URL containing OAuth response parameters.
1333
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1334
- * @returns A promise that resolves to the authenticated user or null.
1335
- * @throws MissingSocialUrlParamError If required OAuth parameters are missing.
1336
- * @throws InvalidRedirectStorageStateError If the stored state doesn't match.
1337
- */ const completeSocialRedirectSignIn = async ({ url }, client = getDefaultClient())=>{
1338
- const core = getCore(client);
1339
- const apiClient = createApiClient({}, client);
1340
- await core.initTrack.waitForAll();
1341
- const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1342
- const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1343
- if (!dynamicOauthState) {
1344
- throw new MissingSocialUrlParamError('dynamicOauthState');
1345
- }
1346
- if (!dynamicOauthCode) {
1347
- throw new MissingSocialUrlParamError('dynamicOauthCode');
1348
- }
1349
- const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1350
- if (!storedSocialRedirectState) {
1351
- throw new MissingRedirectStorageStateError();
1352
- }
1353
- if (storedSocialRedirectState.state !== dynamicOauthState) {
1354
- throw new InvalidRedirectStorageStateError();
1355
- }
1356
- const { provider, codeVerifier } = storedSocialRedirectState;
1357
- await core.storage.removeItem(redirectStateStorageKeySchema);
1358
- const response = await apiClient.oauthSignIn({
1359
- environmentId: core.environmentId,
1360
- oauthRequest: {
1361
- captchaToken: consumeCaptchaToken(client),
1362
- code: dynamicOauthCode,
1363
- codeVerifier,
1364
- state: dynamicOauthState
1365
- },
1366
- providerType: provider
1367
- });
1368
- updateAuthFromVerifyResponse({
1369
- response
1370
- }, client);
1371
- return response.user;
1372
- };
1373
-
1374
- /**
1375
- * Detects if the current URL is an OAuth redirect from a social provider.
1376
- *
1377
- * This function examines the URL parameters to determine if it contains
1378
- * OAuth callback data from a social authentication flow.
1379
- *
1380
- * @param params.url - The URL to check for OAuth redirect parameters.
1381
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1382
- * @returns A promise that resolves to true if the URL is an OAuth redirect, false otherwise.
1383
- */ const detectOAuthRedirect = async ({ url }, client = getDefaultClient())=>{
1384
- const core = getCore(client);
1385
- const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1386
- const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1387
- if (!dynamicOauthState || !dynamicOauthCode) {
1388
- return false;
1389
- }
1390
- // Wait for SDK to load
1391
- await core.initTrack.waitForAll();
1392
- const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1393
- if (!storedSocialRedirectState || storedSocialRedirectState.state !== dynamicOauthState) {
1394
- return false;
1395
- }
1396
- return true;
1397
- };
1398
-
1399
1326
  const digestSHA256 = (str)=>{
1400
1327
  const encoder = new TextEncoder();
1401
1328
  const data = encoder.encode(str);
@@ -1496,11 +1423,13 @@ const providersRequiringPkce = [
1496
1423
  * This function redirects the user to the specified social provider's
1497
1424
  * authorization page to complete OAuth authentication flow.
1498
1425
  * After the oauth flow is complete, the user will be redirected back to your app.
1426
+ * You can then call `detectOAuthRedirect` to check if the user got redirected back to your app due to the oauth flow,
1427
+ * and finally call `completeSocialAuthentication` to complete the social authentication flow.
1499
1428
  *
1500
1429
  * @param params.provider - The social provider to authenticate with (e.g., 'google', 'github').
1501
1430
  * @param params.redirectUrl - The URL to redirect back to after authentication.
1502
1431
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1503
- */ const signInWithSocialRedirect = async ({ provider, redirectUrl }, client = getDefaultClient())=>{
1432
+ */ const authenticateWithSocial = async ({ provider, redirectUrl }, client = getDefaultClient())=>{
1504
1433
  const core = getCore(client);
1505
1434
  const apiClient = createApiClient({}, client);
1506
1435
  await core.initTrack.waitForAll();
@@ -1522,6 +1451,94 @@ const providersRequiringPkce = [
1522
1451
  await core.navigate(url.toString());
1523
1452
  };
1524
1453
 
1454
+ /**
1455
+ * Completes the social authentication flow after OAuth redirect.
1456
+ *
1457
+ * This function processes the OAuth callback URL with authorization codes
1458
+ * and completes the user authentication with the social provider.
1459
+ *
1460
+ * @param params.url - The callback URL containing OAuth response parameters.
1461
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1462
+ * @returns A promise that resolves to the authenticated user or null.
1463
+ * @throws MissingSocialUrlParamError If required OAuth parameters are missing.
1464
+ * @throws InvalidRedirectStorageStateError If the stored state doesn't match.
1465
+ */ const completeSocialAuthentication = async ({ url }, client = getDefaultClient())=>{
1466
+ const core = getCore(client);
1467
+ const apiClient = createApiClient({}, client);
1468
+ await core.initTrack.waitForAll();
1469
+ const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1470
+ const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1471
+ if (!dynamicOauthState) {
1472
+ throw new MissingSocialUrlParamError('dynamicOauthState');
1473
+ }
1474
+ if (!dynamicOauthCode) {
1475
+ throw new MissingSocialUrlParamError('dynamicOauthCode');
1476
+ }
1477
+ const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1478
+ if (!storedSocialRedirectState) {
1479
+ throw new MissingRedirectStorageStateError();
1480
+ }
1481
+ if (storedSocialRedirectState.state !== dynamicOauthState) {
1482
+ throw new InvalidRedirectStorageStateError();
1483
+ }
1484
+ const { provider, codeVerifier } = storedSocialRedirectState;
1485
+ await core.storage.removeItem(redirectStateStorageKeySchema);
1486
+ let response;
1487
+ // if user is alreadyauthenticated, we're verifying the social auth to link it to the user
1488
+ if (client.user) {
1489
+ response = await apiClient.oauthVerify({
1490
+ environmentId: core.environmentId,
1491
+ oauthRequest: {
1492
+ code: dynamicOauthCode,
1493
+ codeVerifier,
1494
+ state: dynamicOauthState
1495
+ },
1496
+ providerType: provider
1497
+ });
1498
+ } else {
1499
+ // if user is not authenticated, we're signing in with the social auth
1500
+ response = await apiClient.oauthSignIn({
1501
+ environmentId: core.environmentId,
1502
+ oauthRequest: {
1503
+ captchaToken: consumeCaptchaToken(client),
1504
+ code: dynamicOauthCode,
1505
+ codeVerifier,
1506
+ state: dynamicOauthState
1507
+ },
1508
+ providerType: provider
1509
+ });
1510
+ }
1511
+ updateAuthFromVerifyResponse({
1512
+ response
1513
+ }, client);
1514
+ return response.user;
1515
+ };
1516
+
1517
+ /**
1518
+ * Detects if the current URL is an OAuth redirect from a social provider.
1519
+ *
1520
+ * This function examines the URL parameters to determine if it contains
1521
+ * OAuth callback data from a social authentication flow.
1522
+ *
1523
+ * @param params.url - The URL to check for OAuth redirect parameters.
1524
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1525
+ * @returns A promise that resolves to true if the URL is an OAuth redirect, false otherwise.
1526
+ */ const detectOAuthRedirect = async ({ url }, client = getDefaultClient())=>{
1527
+ const core = getCore(client);
1528
+ const dynamicOauthState = url.searchParams.get('dynamicOauthState');
1529
+ const dynamicOauthCode = url.searchParams.get('dynamicOauthCode');
1530
+ if (!dynamicOauthState || !dynamicOauthCode) {
1531
+ return false;
1532
+ }
1533
+ // Wait for SDK to load
1534
+ await core.initTrack.waitForAll();
1535
+ const storedSocialRedirectState = await core.storage.getItem(redirectStateStorageKeySchema);
1536
+ if (!storedSocialRedirectState || storedSocialRedirectState.state !== dynamicOauthState) {
1537
+ return false;
1538
+ }
1539
+ return true;
1540
+ };
1541
+
1525
1542
  /**
1526
1543
  * Retrieves token balances across multiple blockchain networks.
1527
1544
  *
@@ -3644,4 +3661,4 @@ const isIPhone = ()=>typeof window === 'undefined' || typeof navigator === 'unde
3644
3661
 
3645
3662
  assertPackageVersion(name, version);
3646
3663
 
3647
- export { BaseError, ClientAlreadyInitializedError, InvalidRedirectStorageStateError, MissingRedirectStorageStateError, MissingSocialUrlParamError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, UnavailableInServerSideError, UnrecognizedNetworkError, UserNotAuthenticatedError, UserRejectedError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletProviderMethodUnavailableError, acknowledgeRecoveryCodes, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, completeSocialRedirectSignIn, connectAndVerifyWithWalletProvider, connectWithWalletProvider, createDynamicClient, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, detectOAuthRedirect, fetchProjectSettings, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getConnectedAddresses, getDefaultClient, getMfaDevices, getMfaRecoveryCodes, getMultichainBalances, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPrimaryWalletAccount, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletProviderDataByKey, initializeClient, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, logout, offWalletProviderEvent, onWalletProviderEvent, proveWalletAccountOwnership, refreshUser, registerPasskey, registerTotpMfaDevice, removeWalletAccount, selectPrimaryWalletAccount, sendEmailOTP, sendSmsOTP, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signInWithSocialRedirect, signMessage, switchActiveNetwork, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized };
3664
+ export { BaseError, ClientAlreadyInitializedError, InvalidRedirectStorageStateError, MissingRedirectStorageStateError, MissingSocialUrlParamError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, UnavailableInServerSideError, UnrecognizedNetworkError, UserNotAuthenticatedError, UserRejectedError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletProviderMethodUnavailableError, acknowledgeRecoveryCodes, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, authenticateWithSocial, completeSocialAuthentication, connectAndVerifyWithWalletProvider, connectWithWalletProvider, createDynamicClient, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, detectOAuthRedirect, fetchProjectSettings, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getConnectedAddresses, getDefaultClient, getMfaDevices, getMfaRecoveryCodes, getMultichainBalances, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPrimaryWalletAccount, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletProviderDataByKey, initializeClient, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, logout, offWalletProviderEvent, onWalletProviderEvent, proveWalletAccountOwnership, refreshUser, registerPasskey, registerTotpMfaDevice, removeWalletAccount, selectPrimaryWalletAccount, sendEmailOTP, sendSmsOTP, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signMessage, switchActiveNetwork, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs-sdk/client",
3
- "version": "0.1.0-alpha.23",
3
+ "version": "0.1.0-alpha.25",
4
4
  "type": "module",
5
5
  "main": "./index.cjs.js",
6
6
  "module": "./index.esm.js",
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@dynamic-labs-sdk/assert-package-version": "0.1.0-alpha.23",
32
+ "@dynamic-labs-sdk/assert-package-version": "0.1.0-alpha.25",
33
33
  "@dynamic-labs/sdk-api-core": "0.0.813",
34
34
  "@dynamic-labs-wallet/browser-wallet-client": "0.0.187",
35
35
  "@simplewebauthn/browser": "13.1.0",
@@ -49,9 +49,9 @@ export { deletePasskey } from '../modules/auth/passkeys/deletePasskey';
49
49
  export { getPasskeys } from '../modules/auth/passkeys/getPasskeys';
50
50
  export { registerPasskey } from '../modules/auth/passkeys/registerPasskey';
51
51
  export { signInWithPasskey } from '../modules/auth/passkeys/signInWithPasskey';
52
- export { completeSocialRedirectSignIn } from '../modules/auth/social/oauth/completeSocialRedirectSignIn';
52
+ export { authenticateWithSocial } from '../modules/auth/social/oauth/authenticateWithSocial';
53
+ export { completeSocialAuthentication } from '../modules/auth/social/oauth/completeSocialAuthentication';
53
54
  export { detectOAuthRedirect } from '../modules/auth/social/oauth/detectOAuthRedirect';
54
- export { signInWithSocialRedirect } from '../modules/auth/social/oauth/signInWithSocialRedirect';
55
55
  export type { SocialProvider } from '../modules/auth/social/social.types';
56
56
  export { getMultichainBalances, type GetMultichainBalancesParams, } from '../modules/balances/getMultichainBalances';
57
57
  export { isCaptchaRequired } from '../modules/captcha/isCaptchaRequired';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/client/src/exports/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/client/src/exports/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { SocialProvider } from '../../social.types';
2
- type SignInWithSocialRedirectParams = {
2
+ type AuthenticateWithSocialParams = {
3
3
  provider: SocialProvider;
4
4
  redirectUrl: string;
5
5
  };
@@ -9,11 +9,13 @@ type SignInWithSocialRedirectParams = {
9
9
  * This function redirects the user to the specified social provider's
10
10
  * authorization page to complete OAuth authentication flow.
11
11
  * After the oauth flow is complete, the user will be redirected back to your app.
12
+ * You can then call `detectOAuthRedirect` to check if the user got redirected back to your app due to the oauth flow,
13
+ * and finally call `completeSocialAuthentication` to complete the social authentication flow.
12
14
  *
13
15
  * @param params.provider - The social provider to authenticate with (e.g., 'google', 'github').
14
16
  * @param params.redirectUrl - The URL to redirect back to after authentication.
15
17
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
16
18
  */
17
- export declare const signInWithSocialRedirect: ({ provider, redirectUrl }: SignInWithSocialRedirectParams, client?: import("../../../../../exports").DynamicClient) => Promise<void>;
19
+ export declare const authenticateWithSocial: ({ provider, redirectUrl }: AuthenticateWithSocialParams, client?: import("../../../../../exports").DynamicClient) => Promise<void>;
18
20
  export {};
19
- //# sourceMappingURL=signInWithSocialRedirect.d.ts.map
21
+ //# sourceMappingURL=authenticateWithSocial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticateWithSocial.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/authenticateWithSocial.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,KAAK,4BAA4B,GAAG;IAClC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,8BACN,4BAA4B,2EA4BxD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addOAuthUrlParams.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,4BAA4B,CAAC;AAOzE,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,aAAc,QAAQ,WAAW,GAAG,KAAG,GA+BpE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOAuthUrl.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/buildOAuthUrl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAUvE,KAAK,QAAQ,GAAG;IACd,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IAEd,4CAA4C;IAC5C,GAAG,EAAE,GAAG,CAAC;CACV,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,aAAa,SAElB,WAAW,YAGP,YAAY,KACrB,OAAO,CAAC,QAAQ,CAwClB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOAuthBaseUrl.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/getOAuthBaseUrl/getOAuthBaseUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,4BAA4B,CAAC;AAIzE,wEAAwE;AACxE,eAAO,MAAM,eAAe,aAAc,QAAQ,KAAG,GA4BpD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/getOAuthBaseUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { authenticateWithSocial } from './authenticateWithSocial';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/authenticateWithSocial/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { User } from '../../../../user/user.types';
2
- type CompleteSocialRedirectSignInParams = {
2
+ type CompleteSocialAuthenticationParams = {
3
3
  url: URL;
4
4
  };
5
5
  /**
@@ -14,6 +14,6 @@ type CompleteSocialRedirectSignInParams = {
14
14
  * @throws MissingSocialUrlParamError If required OAuth parameters are missing.
15
15
  * @throws InvalidRedirectStorageStateError If the stored state doesn't match.
16
16
  */
17
- export declare const completeSocialRedirectSignIn: ({ url }: CompleteSocialRedirectSignInParams, client?: import("../../../../../exports").DynamicClient) => Promise<User | null>;
17
+ export declare const completeSocialAuthentication: ({ url }: CompleteSocialAuthenticationParams, client?: import("../../../../../exports").DynamicClient) => Promise<User | null>;
18
18
  export {};
19
- //# sourceMappingURL=completeSocialRedirectSignIn.d.ts.map
19
+ //# sourceMappingURL=completeSocialAuthentication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completeSocialAuthentication.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/completeSocialAuthentication/completeSocialAuthentication.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAIxD,KAAK,kCAAkC,GAAG;IACxC,GAAG,EAAE,GAAG,CAAC;CACV,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,YAC9B,kCAAkC,8DAE1C,OAAO,CAAC,IAAI,GAAG,IAAI,CA+DrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { completeSocialAuthentication } from './completeSocialAuthentication';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/completeSocialRedirectSignIn/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/completeSocialAuthentication/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"completeSocialRedirectSignIn.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/completeSocialRedirectSignIn/completeSocialRedirectSignIn.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAIxD,KAAK,kCAAkC,GAAG;IACxC,GAAG,EAAE,GAAG,CAAC;CACV,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,YAC9B,kCAAkC,8DAE1C,OAAO,CAAC,IAAI,GAAG,IAAI,CA+CrB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { completeSocialRedirectSignIn } from './completeSocialRedirectSignIn';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addOAuthUrlParams.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,4BAA4B,CAAC;AAOzE,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,aAAc,QAAQ,WAAW,GAAG,KAAG,GA+BpE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/addOAuthUrlParams/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildOAuthUrl.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/buildOAuthUrl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAUvE,KAAK,QAAQ,GAAG;IACd,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IAEd,4CAA4C;IAC5C,GAAG,EAAE,GAAG,CAAC;CACV,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,aAAa,SAElB,WAAW,YAGP,YAAY,KACrB,OAAO,CAAC,QAAQ,CAwClB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getOAuthBaseUrl.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/getOAuthBaseUrl/getOAuthBaseUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,4BAA4B,CAAC;AAIzE,wEAAwE;AACxE,eAAO,MAAM,eAAe,aAAc,QAAQ,KAAG,GA4BpD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/buildOAuthUrl/getOAuthBaseUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { signInWithSocialRedirect } from './signInWithSocialRedirect';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signInWithSocialRedirect.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/client/src/modules/auth/social/oauth/signInWithSocialRedirect/signInWithSocialRedirect.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,8BACR,8BAA8B,2EA4B1D,CAAC"}