diff --git a/.changeset/chilly-mangos-decide.md b/.changeset/chilly-mangos-decide.md
new file mode 100644
index 00000000000..695ae11bd3e
--- /dev/null
+++ b/.changeset/chilly-mangos-decide.md
@@ -0,0 +1,5 @@
+---
+"@thirdweb-dev/react-native-adapter": minor
+---
+
+Updated required dependencies
diff --git a/.changeset/soft-colts-eat.md b/.changeset/soft-colts-eat.md
new file mode 100644
index 00000000000..883abd74530
--- /dev/null
+++ b/.changeset/soft-colts-eat.md
@@ -0,0 +1,7 @@
+---
+"thirdweb": minor
+---
+
+Support for enclave wallet migration in React Native
+
+this change requires the latest version of the `@thirdweb-dev/react-native-adapter` package to be installed.
diff --git a/packages/react-native-adapter/package.json b/packages/react-native-adapter/package.json
index 278827fd966..26b457d9fac 100644
--- a/packages/react-native-adapter/package.json
+++ b/packages/react-native-adapter/package.json
@@ -23,11 +23,9 @@
},
"./package.json": "./package.json"
},
- "files": [
- "dist/*",
- "src/*"
- ],
+ "files": ["dist/*", "src/*"],
"dependencies": {
+ "@aws-sdk/client-kms": "3.670.0",
"@aws-sdk/client-lambda": "3.670.0",
"@aws-sdk/credential-providers": "3.670.0",
"@mobile-wallet-protocol/client": "0.0.3",
diff --git a/packages/thirdweb/package.json b/packages/thirdweb/package.json
index 6a7a65ad8a2..01caad5c18f 100644
--- a/packages/thirdweb/package.json
+++ b/packages/thirdweb/package.json
@@ -234,6 +234,9 @@
"@aws-sdk/client-lambda": {
"optional": true
},
+ "@aws-sdk/client-kms": {
+ "optional": true
+ },
"@aws-sdk/credential-providers": {
"optional": true
},
@@ -279,6 +282,7 @@
"node": ">=18"
},
"devDependencies": {
+ "@aws-sdk/client-kms": "3.670.0",
"@aws-sdk/client-lambda": "3.670.0",
"@aws-sdk/credential-providers": "3.670.0",
"@biomejs/biome": "1.9.3",
diff --git a/packages/thirdweb/src/react/native/ui/components/WalletImage.tsx b/packages/thirdweb/src/react/native/ui/components/WalletImage.tsx
index 78d11cd6882..7aa5fc24632 100644
--- a/packages/thirdweb/src/react/native/ui/components/WalletImage.tsx
+++ b/packages/thirdweb/src/react/native/ui/components/WalletImage.tsx
@@ -1,4 +1,6 @@
import { useQuery } from "@tanstack/react-query";
+import type { ThirdwebClient } from "../../../../client/client.js";
+import { resolveScheme } from "../../../../utils/ipfs.js";
import { nativeLocalStorage } from "../../../../utils/storage/nativeStorage.js";
import { getWalletInfo } from "../../../../wallets/__generated__/getWalletInfo.js";
import type { Wallet } from "../../../../wallets/interfaces/wallet.js";
@@ -25,10 +27,11 @@ import { RNImage } from "./RNImage.js";
export const WalletImage = (props: {
theme: Theme;
wallet: Wallet;
+ client: ThirdwebClient;
size: number;
avatar?: string | null;
}) => {
- const { wallet, avatar, size } = props;
+ const { wallet, avatar, size, client } = props;
const { data: imageData } = useQuery({
queryKey: ["wallet-image", wallet.id, wallet.getAccount()?.address],
@@ -55,7 +58,7 @@ export const WalletImage = (props: {
try {
const externalWalletImage = await getWalletInfo(activeEOAId, true);
if (externalWalletImage) {
- return externalWalletImage;
+ return resolveScheme({ client, uri: externalWalletImage });
}
} catch {}
diff --git a/packages/thirdweb/src/react/native/ui/connect/ConnectModal.tsx b/packages/thirdweb/src/react/native/ui/connect/ConnectModal.tsx
index 4ab5be8902c..804efe246e1 100644
--- a/packages/thirdweb/src/react/native/ui/connect/ConnectModal.tsx
+++ b/packages/thirdweb/src/react/native/ui/connect/ConnectModal.tsx
@@ -2,6 +2,7 @@ import { useCallback, useState } from "react";
import { Platform, StyleSheet, View } from "react-native";
import { SvgXml } from "react-native-svg";
import type { Chain } from "../../../../chains/types.js";
+import type { ThirdwebClient } from "../../../../client/client.js";
import type { MultiStepAuthProviderType } from "../../../../wallets/in-app/core/authentication/types.js";
import type { InAppWalletAuth } from "../../../../wallets/in-app/core/wallet/types.js";
import type { Wallet } from "../../../../wallets/interfaces/wallet.js";
@@ -269,6 +270,7 @@ export function ConnectModal(
{containerType === "modal" ? (
@@ -328,6 +330,7 @@ export function ConnectModal(
)}
props.onClose?.()}
onError={(error) => setModalState({ screen: "error", error })}
@@ -462,10 +465,12 @@ export function ConnectModal(
function WalletLoadingView({
theme,
wallet,
+ client,
authProvider,
}: {
theme: Theme;
wallet: Wallet;
+ client: ThirdwebClient;
authProvider?: InAppWalletAuth;
}) {
const walletInfo = useWalletInfo(wallet.id);
@@ -500,7 +505,12 @@ function WalletLoadingView({
/>
) : (
-
+
)}
@@ -522,12 +532,14 @@ function WalletLoadingView({
function SignInView({
theme,
siweAuth,
+ client,
onSignIn,
onError,
onDisconnect,
}: {
theme: Theme;
siweAuth: ReturnType;
+ client: ThirdwebClient;
onSignIn: () => void;
onError: (error: string) => void;
onDisconnect: () => void;
@@ -552,7 +564,12 @@ function SignInView({
imageSize={100}
animate={isSigningIn}
>
-
+
diff --git a/packages/thirdweb/src/react/native/ui/connect/ConnectedButton.tsx b/packages/thirdweb/src/react/native/ui/connect/ConnectedButton.tsx
index 83fcfb92f34..4243381b2e8 100644
--- a/packages/thirdweb/src/react/native/ui/connect/ConnectedButton.tsx
+++ b/packages/thirdweb/src/react/native/ui/connect/ConnectedButton.tsx
@@ -20,7 +20,7 @@ export function ConnectedButton(
},
) {
const theme = parseTheme(props.theme);
- const { account, wallet } = props;
+ const { account, wallet, client } = props;
const walletChain = useActiveWalletChain();
const { pfp, name, balanceQuery } = useConnectedWalletDetails(
props.client,
@@ -40,7 +40,13 @@ export function ConnectedButton(
}}
>
-
+
setModalState({ screen: "account" })}
@@ -161,7 +162,7 @@ export function ConnectedModal(props: ConnectedModalProps) {
}
const AccountHeader = (props: ConnectedModalProps) => {
- const { account, wallet, theme } = props;
+ const { account, wallet, theme, client } = props;
const walletChain = useActiveWalletChain();
const { pfp, name, balanceQuery } = useConnectedWalletDetails(
props.client,
@@ -171,7 +172,13 @@ const AccountHeader = (props: ConnectedModalProps) => {
);
return (
-
+
diff --git a/packages/thirdweb/src/react/native/ui/connect/ReceiveScreen.tsx b/packages/thirdweb/src/react/native/ui/connect/ReceiveScreen.tsx
index 1646e6f09c3..7923e629a92 100644
--- a/packages/thirdweb/src/react/native/ui/connect/ReceiveScreen.tsx
+++ b/packages/thirdweb/src/react/native/ui/connect/ReceiveScreen.tsx
@@ -1,4 +1,5 @@
import { StyleSheet, View } from "react-native";
+import type { ThirdwebClient } from "../../../../client/client.js";
import { shortenAddress } from "../../../../utils/address.js";
import type { Account, Wallet } from "../../../../wallets/interfaces/wallet.js";
import type { Theme } from "../../../core/design-system/index.js";
@@ -16,10 +17,12 @@ type ReceiveScreenProps = {
onClose?: () => void;
onBack?: () => void;
containerType: ContainerType;
+ client: ThirdwebClient;
};
export const ReceiveScreen = (props: ReceiveScreenProps) => {
- const { wallet, account, theme, onClose, onBack, containerType } = props;
+ const { wallet, account, theme, onClose, onBack, containerType, client } =
+ props;
return (
<>
@@ -32,7 +35,7 @@ export const ReceiveScreen = (props: ReceiveScreenProps) => {
/>
{/* TODO (rn) QR code scanning */}
-
+
;
storage: ClientScopedStorage;
}) {
- const clientFetch = getClientFetch(client, ecosystem);
const authToken = await storage.getAuthCookie();
+ const ecosystem = storage.ecosystem;
+ const clientFetch = getClientFetch(client, ecosystem);
if (!authToken) {
throw new Error("No auth token found when signing transaction");
diff --git a/packages/thirdweb/src/wallets/in-app/web/lib/actions/sign-typed-data.enclave.ts b/packages/thirdweb/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts
similarity index 73%
rename from packages/thirdweb/src/wallets/in-app/web/lib/actions/sign-typed-data.enclave.ts
rename to packages/thirdweb/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts
index 48c7bf55132..c1cba42593d 100644
--- a/packages/thirdweb/src/wallets/in-app/web/lib/actions/sign-typed-data.enclave.ts
+++ b/packages/thirdweb/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts
@@ -1,28 +1,26 @@
import type { TypedData } from "abitype";
import type { TypedDataDefinition } from "viem";
-import type { ThirdwebClient } from "../../../../../client/client.js";
-import { getThirdwebBaseUrl } from "../../../../../utils/domains.js";
-import { getClientFetch } from "../../../../../utils/fetch.js";
-import { stringify } from "../../../../../utils/json.js";
-import type { ClientScopedStorage } from "../../../core/authentication/client-scoped-storage.js";
-import type { Ecosystem } from "../../../core/wallet/types.js";
+import type { ThirdwebClient } from "../../../../client/client.js";
+import { getThirdwebBaseUrl } from "../../../../utils/domains.js";
+import { getClientFetch } from "../../../../utils/fetch.js";
+import { stringify } from "../../../../utils/json.js";
+import type { ClientScopedStorage } from "../authentication/client-scoped-storage.js";
export async function signTypedData<
const typedData extends TypedData | Record,
primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
>({
client,
- ecosystem,
payload,
storage,
}: {
client: ThirdwebClient;
- ecosystem?: Ecosystem;
payload: TypedDataDefinition;
storage: ClientScopedStorage;
}) {
- const clientFetch = getClientFetch(client, ecosystem);
const authToken = await storage.getAuthCookie();
+ const ecosystem = storage.ecosystem;
+ const clientFetch = getClientFetch(client, ecosystem);
if (!authToken) {
throw new Error("No auth token found when signing typed data");
diff --git a/packages/thirdweb/src/wallets/in-app/core/authentication/client-scoped-storage.ts b/packages/thirdweb/src/wallets/in-app/core/authentication/client-scoped-storage.ts
index cd14e0e2f6c..ab5921dec0e 100644
--- a/packages/thirdweb/src/wallets/in-app/core/authentication/client-scoped-storage.ts
+++ b/packages/thirdweb/src/wallets/in-app/core/authentication/client-scoped-storage.ts
@@ -1,5 +1,4 @@
import type { AsyncStorage } from "../../../../utils/storage/AsyncStorage.js";
-import type { EcosystemWalletId } from "../../../wallet-types.js";
import {
AUTH_TOKEN_LOCAL_STORAGE_NAME,
DEVICE_SHARE_LOCAL_STORAGE_NAME,
@@ -8,6 +7,7 @@ import {
WALLET_CONNECT_SESSIONS_LOCAL_STORAGE_NAME,
WALLET_USER_ID_LOCAL_STORAGE_NAME,
} from "../constants/settings.js";
+import type { Ecosystem } from "../wallet/types.js";
const data = new Map();
@@ -17,20 +17,22 @@ const data = new Map();
export class ClientScopedStorage {
protected key: string;
protected storage: AsyncStorage | null;
+ public ecosystem?: Ecosystem;
/**
* @internal
*/
constructor({
storage,
clientId,
- ecosystemId,
+ ecosystem,
}: {
storage: AsyncStorage | null;
clientId: string;
- ecosystemId?: EcosystemWalletId;
+ ecosystem?: Ecosystem;
}) {
this.storage = storage;
- this.key = getLocalStorageKey(clientId, ecosystemId);
+ this.key = getLocalStorageKey(clientId, ecosystem?.id);
+ this.ecosystem = ecosystem;
}
protected async getItem(key: string): Promise {
diff --git a/packages/thirdweb/src/wallets/in-app/core/authentication/guest.ts b/packages/thirdweb/src/wallets/in-app/core/authentication/guest.ts
index 614e4072aec..1417d15779b 100644
--- a/packages/thirdweb/src/wallets/in-app/core/authentication/guest.ts
+++ b/packages/thirdweb/src/wallets/in-app/core/authentication/guest.ts
@@ -19,7 +19,7 @@ export async function guestAuthenticate(args: {
const storage = new ClientScopedStorage({
storage: args.storage,
clientId: args.client.clientId,
- ecosystemId: args.ecosystem?.id,
+ ecosystem: args.ecosystem,
});
let sessionId = await storage.getGuestSessionId();
diff --git a/packages/thirdweb/src/wallets/in-app/core/wallet/enclave-wallet.ts b/packages/thirdweb/src/wallets/in-app/core/wallet/enclave-wallet.ts
index 5feda5b9129..9e6f0473f03 100644
--- a/packages/thirdweb/src/wallets/in-app/core/wallet/enclave-wallet.ts
+++ b/packages/thirdweb/src/wallets/in-app/core/wallet/enclave-wallet.ts
@@ -11,10 +11,10 @@ import type {
Account,
SendTransactionOption,
} from "../../../interfaces/wallet.js";
-import { getUserStatus } from "../../web/lib/actions/get-enclave-user-status.js";
-import { signMessage as signEnclaveMessage } from "../../web/lib/actions/sign-message.enclave.js";
-import { signTransaction as signEnclaveTransaction } from "../../web/lib/actions/sign-transaction.enclave.js";
-import { signTypedData as signEnclaveTypedData } from "../../web/lib/actions/sign-typed-data.enclave.js";
+import { getUserStatus } from "../actions/get-enclave-user-status.js";
+import { signMessage as signEnclaveMessage } from "../actions/sign-message.enclave.js";
+import { signTransaction as signEnclaveTransaction } from "../actions/sign-transaction.enclave.js";
+import { signTypedData as signEnclaveTypedData } from "../actions/sign-typed-data.enclave.js";
import type { ClientScopedStorage } from "../authentication/client-scoped-storage.js";
import type {
AuthDetails,
@@ -33,18 +33,16 @@ export type UserStatus = {
| { address: string; [key: string]: string }
| { id: string; [key: string]: string };
}[];
- wallets:
- | [
- {
- address: string;
- createdAt: string;
- type: "sharded" | "enclave";
- },
- ]
- | [];
+ wallets: UserWallet[];
id: string;
};
+export type UserWallet = {
+ address: string;
+ createdAt: string;
+ type: "sharded" | "enclave";
+};
+
export class EnclaveWallet implements IWebWallet {
private client: ThirdwebClient;
private ecosystem?: Ecosystem;
@@ -130,7 +128,6 @@ export class EnclaveWallet implements IWebWallet {
*/
async getAccount(): Promise {
const client = this.client;
- const ecosystem = this.ecosystem;
const storage = this.localStorage;
const _signTransaction = async (tx: SendTransactionOption) => {
@@ -171,7 +168,6 @@ export class EnclaveWallet implements IWebWallet {
return signEnclaveTransaction({
client,
- ecosystem,
storage,
payload: transaction,
});
@@ -218,7 +214,6 @@ export class EnclaveWallet implements IWebWallet {
const { signature } = await signEnclaveMessage({
client,
- ecosystem,
payload: messagePayload,
storage,
});
@@ -228,7 +223,6 @@ export class EnclaveWallet implements IWebWallet {
const parsedTypedData = parseTypedData(_typedData);
const { signature } = await signEnclaveTypedData({
client,
- ecosystem,
payload: parsedTypedData,
storage,
});
diff --git a/packages/thirdweb/src/wallets/in-app/native/auth/passkeys.ts b/packages/thirdweb/src/wallets/in-app/native/auth/passkeys.ts
index 2abe7042357..48e250a0d3f 100644
--- a/packages/thirdweb/src/wallets/in-app/native/auth/passkeys.ts
+++ b/packages/thirdweb/src/wallets/in-app/native/auth/passkeys.ts
@@ -125,7 +125,7 @@ export async function hasStoredPasskey(
const storage = new ClientScopedStorage({
storage: nativeLocalStorage,
clientId: client.clientId,
- ecosystemId: ecosystemId,
+ ecosystem: ecosystemId ? { id: ecosystemId } : undefined,
});
const credId = await storage.getPasskeyCredentialId();
return !!credId;
diff --git a/packages/thirdweb/src/wallets/in-app/native/helpers/api/fetchers.ts b/packages/thirdweb/src/wallets/in-app/native/helpers/api/fetchers.ts
index 9c2cf461940..e4ef3d6fd71 100644
--- a/packages/thirdweb/src/wallets/in-app/native/helpers/api/fetchers.ts
+++ b/packages/thirdweb/src/wallets/in-app/native/helpers/api/fetchers.ts
@@ -14,6 +14,8 @@ import { createErrorMessage } from "../errors.js";
const EMBEDDED_WALLET_TOKEN_HEADER = "embedded-wallet-token";
const PAPER_CLIENT_ID_HEADER = "x-thirdweb-client-id";
+const ECOSYSTEM_ID_HEADER = "x-ecosystem-id";
+const ECOSYSTEM_PARTNER_ID_HEADER = "x-ecosystem-partner-id";
let sessionNonce: Hex | undefined = undefined;
@@ -63,6 +65,12 @@ export async function authFetchEmbeddedWalletUser(args: {
authTokenClient || ""
}`,
[PAPER_CLIENT_ID_HEADER]: client.clientId,
+ ...(storage.ecosystem
+ ? {
+ [ECOSYSTEM_ID_HEADER]: storage.ecosystem.id,
+ [ECOSYSTEM_PARTNER_ID_HEADER]: storage.ecosystem?.partnerId,
+ }
+ : {}),
...getSessionHeaders(),
}
: {
@@ -70,6 +78,12 @@ export async function authFetchEmbeddedWalletUser(args: {
authTokenClient || ""
}`,
[PAPER_CLIENT_ID_HEADER]: client.clientId,
+ ...(storage.ecosystem
+ ? {
+ [ECOSYSTEM_ID_HEADER]: storage.ecosystem.id,
+ [ECOSYSTEM_PARTNER_ID_HEADER]: storage.ecosystem?.partnerId,
+ }
+ : {}),
...getSessionHeaders(),
};
diff --git a/packages/thirdweb/src/wallets/in-app/native/helpers/auth/middleware.ts b/packages/thirdweb/src/wallets/in-app/native/helpers/auth/middleware.ts
index a6979f136d6..6873dd63fd5 100644
--- a/packages/thirdweb/src/wallets/in-app/native/helpers/auth/middleware.ts
+++ b/packages/thirdweb/src/wallets/in-app/native/helpers/auth/middleware.ts
@@ -102,10 +102,11 @@ async function getRecoveryCode(args: {
}
try {
return await getCognitoRecoveryPasswordV2({ client, storage });
- } catch {
+ } catch (err) {
+ console.error("Error recovering wallet", err);
return await getCognitoRecoveryPasswordV1({ client, storage }).catch(
() => {
- throw new Error("Something went wrong getting cognito recovery code");
+ throw new Error("Something went wrong while recovering wallet");
},
);
}
diff --git a/packages/thirdweb/src/wallets/in-app/native/helpers/constants.ts b/packages/thirdweb/src/wallets/in-app/native/helpers/constants.ts
index cf67abece5f..130c1f2b4e1 100644
--- a/packages/thirdweb/src/wallets/in-app/native/helpers/constants.ts
+++ b/packages/thirdweb/src/wallets/in-app/native/helpers/constants.ts
@@ -22,6 +22,8 @@ export const GENERATE_RECOVERY_PASSWORD_LAMBDA_FUNCTION_V1 =
"arn:aws:lambda:us-west-2:324457261097:function:recovery-share-password-GenerateRecoverySharePassw-bbE5ZbVAToil";
export const GENERATE_RECOVERY_PASSWORD_LAMBDA_FUNCTION_V2 =
"arn:aws:lambda:us-west-2:324457261097:function:lambda-thirdweb-auth-enc-key-prod-ThirdwebAuthEncKeyFunction";
+export const ENCLAVE_KMS_KEY_ARN =
+ "arn:aws:kms:us-west-2:324457261097:key/8b2a8cd5-9b22-4ea0-a6bc-463824a78f20";
// TODO allow overriding domain
const DOMAIN_URL_2023 = getThirdwebBaseUrl("inAppWallet");
diff --git a/packages/thirdweb/src/wallets/in-app/native/helpers/wallet/migration.ts b/packages/thirdweb/src/wallets/in-app/native/helpers/wallet/migration.ts
new file mode 100644
index 00000000000..d353f97a622
--- /dev/null
+++ b/packages/thirdweb/src/wallets/in-app/native/helpers/wallet/migration.ts
@@ -0,0 +1,185 @@
+import { GenerateDataKeyCommand, KMSClient } from "@aws-sdk/client-kms";
+import { fromCognitoIdentity } from "@aws-sdk/credential-providers";
+import QuickCrypto from "react-native-quick-crypto";
+import type { ThirdwebClient } from "../../../../../client/client.js";
+import { getThirdwebBaseUrl } from "../../../../../utils/domains.js";
+import { stringToBytes } from "../../../../../utils/encoding/to-bytes.js";
+import { randomBytesBuffer } from "../../../../../utils/random.js";
+import {
+ concatUint8Arrays,
+ uint8ArrayToBase64,
+} from "../../../../../utils/uint8-array.js";
+import { privateKeyToAccount } from "../../../../private-key.js";
+import type { ClientScopedStorage } from "../../../core/authentication/client-scoped-storage.js";
+import type { AuthStoredTokenWithCookieReturnType } from "../../../core/authentication/types.js";
+import type { UserWallet } from "../../../core/wallet/enclave-wallet.js";
+import { authFetchEmbeddedWalletUser } from "../api/fetchers.js";
+import { postAuth } from "../auth/middleware.js";
+import {
+ AWS_REGION,
+ ENCLAVE_KMS_KEY_ARN,
+ ROUTE_AUTH_COGNITO_ID_TOKEN_V2,
+} from "../constants.js";
+import { getShares, getWalletPrivateKeyFromShares } from "./retrieval.js";
+
+/**
+ * Migrate a sharded wallet to an enclave wallet.
+ *
+ * @param args - The arguments for the migration process.
+ * @returns The migrated user wallet.
+ */
+export async function migrateToEnclaveWallet(args: {
+ client: ThirdwebClient;
+ storage: ClientScopedStorage;
+ storedToken: AuthStoredTokenWithCookieReturnType["storedToken"];
+ encryptionKey?: string;
+}): Promise {
+ // setup sharded wallet first, so we have the shares available
+ await postAuth({
+ storedToken: args.storedToken,
+ client: args.client,
+ storage: args.storage,
+ encryptionKey: args.encryptionKey,
+ });
+
+ const { authShare, deviceShare } = await getShares({
+ client: args.client,
+ authShare: { toRetrieve: true },
+ deviceShare: { toRetrieve: true },
+ recoveryShare: { toRetrieve: false },
+ storage: args.storage,
+ });
+
+ // construct the sharded wallet
+ const privateKey = await getWalletPrivateKeyFromShares([
+ authShare,
+ deviceShare,
+ ]);
+ const account = privateKeyToAccount({
+ client: args.client,
+ privateKey,
+ });
+ const address = account.address;
+
+ // get cognito identity
+ const idTokenResponse = await authFetchEmbeddedWalletUser({
+ client: args.client,
+ url: ROUTE_AUTH_COGNITO_ID_TOKEN_V2,
+ props: {
+ method: "GET",
+ },
+ storage: args.storage,
+ });
+ if (!idTokenResponse.ok) {
+ throw new Error(
+ `Failed to fetch id token from Cognito: ${JSON.stringify(
+ await idTokenResponse.json(),
+ null,
+ 2,
+ )}`,
+ );
+ }
+ const idTokenResult = await idTokenResponse.json();
+ const { token, identityId } = idTokenResult;
+
+ const cognitoIdentity = fromCognitoIdentity({
+ clientConfig: {
+ region: AWS_REGION,
+ },
+ identityId,
+ logins: {
+ "cognito-identity.amazonaws.com": token,
+ },
+ });
+
+ // get kms key
+ const kmsClient = new KMSClient({
+ region: AWS_REGION,
+ credentials: cognitoIdentity,
+ });
+ const generateDataKeyCommand = new GenerateDataKeyCommand({
+ KeyId: ENCLAVE_KMS_KEY_ARN,
+ KeySpec: "AES_256",
+ });
+ const encryptedKeyResult = await kmsClient.send(generateDataKeyCommand);
+ const plaintextKeyBlob = encryptedKeyResult.Plaintext;
+ const cipherTextBlob = encryptedKeyResult.CiphertextBlob;
+ if (!plaintextKeyBlob || !cipherTextBlob) {
+ throw new Error("No migration key found. Please try again.");
+ }
+
+ // encrypt private key
+ const iv = randomBytesBuffer(16);
+ // @ts-ignore - default import buils but ts doesn't like it
+ const key = await QuickCrypto.subtle.importKey(
+ "raw",
+ plaintextKeyBlob,
+ "AES-CBC",
+ false,
+ ["encrypt", "decrypt"],
+ );
+
+ // @ts-ignore - default import buils but ts doesn't like it
+ const encryptedPrivateKey = await QuickCrypto.subtle.encrypt(
+ {
+ name: "AES-CBC",
+ iv,
+ },
+ key,
+ stringToBytes(privateKey),
+ );
+
+ const encryptedData = concatUint8Arrays([
+ iv,
+ new Uint8Array(encryptedPrivateKey),
+ ]);
+
+ const ivB64 = uint8ArrayToBase64(iv);
+ const cipherTextB64 = uint8ArrayToBase64(cipherTextBlob);
+ const encryptedPrivateKeyB64 = uint8ArrayToBase64(encryptedData);
+
+ // execute migration
+ const result = await executeMigration({
+ client: args.client,
+ storage: args.storage,
+ address,
+ kmsCiphertextB64: cipherTextB64,
+ encryptedPrivateKeyB64: encryptedPrivateKeyB64,
+ ivB64,
+ });
+
+ return result;
+}
+
+async function executeMigration(args: {
+ client: ThirdwebClient;
+ storage: ClientScopedStorage;
+ address: string;
+ kmsCiphertextB64: string;
+ encryptedPrivateKeyB64: string;
+ ivB64: string;
+}): Promise {
+ const migrationResponse = await authFetchEmbeddedWalletUser({
+ client: args.client,
+ url: `${getThirdwebBaseUrl("inAppWallet")}/api/v1/enclave-wallet/migrate`,
+ props: {
+ method: "POST",
+ body: JSON.stringify({
+ address: args.address,
+ kmsCiphertextB64: args.kmsCiphertextB64,
+ encryptedPrivateKeyB64: args.encryptedPrivateKeyB64,
+ ivB64: args.ivB64,
+ }),
+ },
+ storage: args.storage,
+ });
+ if (!migrationResponse.ok) {
+ throw new Error(
+ `Failed to migrate to enclave wallet: ${JSON.stringify(
+ await migrationResponse.json(),
+ )}`,
+ );
+ }
+ const migrationResult = (await migrationResponse.json()) as UserWallet;
+ return migrationResult;
+}
diff --git a/packages/thirdweb/src/wallets/in-app/native/helpers/wallet/retrieval.ts b/packages/thirdweb/src/wallets/in-app/native/helpers/wallet/retrieval.ts
index f87861c2459..d780bfc7d21 100644
--- a/packages/thirdweb/src/wallets/in-app/native/helpers/wallet/retrieval.ts
+++ b/packages/thirdweb/src/wallets/in-app/native/helpers/wallet/retrieval.ts
@@ -40,7 +40,7 @@ export async function getExistingUserAccount(args: {
});
}
-async function getWalletPrivateKeyFromShares(shares: string[]) {
+export async function getWalletPrivateKeyFromShares(shares: string[]) {
const { secrets } = await import("./sss.js");
let privateKeyHex = secrets.combine(shares, 0);
if (!isHex(privateKeyHex)) {
@@ -86,7 +86,7 @@ async function getAccountFromShares(args: {
* @returns The requested shares
* @throws if attempting to get deviceShare when it's not present
*/
-async function getShares<
+export async function getShares<
A extends boolean,
D extends boolean,
R extends boolean,
diff --git a/packages/thirdweb/src/wallets/in-app/native/native-connector.ts b/packages/thirdweb/src/wallets/in-app/native/native-connector.ts
index 3155548dd5d..16ac2358d15 100644
--- a/packages/thirdweb/src/wallets/in-app/native/native-connector.ts
+++ b/packages/thirdweb/src/wallets/in-app/native/native-connector.ts
@@ -2,6 +2,7 @@ import type { ThirdwebClient } from "../../../client/client.js";
import { stringify } from "../../../utils/json.js";
import { nativeLocalStorage } from "../../../utils/storage/nativeStorage.js";
import type { Account } from "../../interfaces/wallet.js";
+import { getUserStatus } from "../core/actions/get-enclave-user-status.js";
import { authEndpoint } from "../core/authentication/authEndpoint.js";
import { ClientScopedStorage } from "../core/authentication/client-scoped-storage.js";
import { guestAuthenticate } from "../core/authentication/guest.js";
@@ -29,7 +30,6 @@ import type { InAppConnector } from "../core/interfaces/connector.js";
import { EnclaveWallet } from "../core/wallet/enclave-wallet.js";
import type { Ecosystem } from "../core/wallet/types.js";
import type { IWebWallet } from "../core/wallet/web-wallet.js";
-import { getUserStatus } from "../web/lib/actions/get-enclave-user-status.js";
import { sendOtp, verifyOtp } from "../web/lib/auth/otp.js";
import { deleteActiveAccount, socialAuth } from "./auth/native-auth.js";
import { logoutUser } from "./helpers/auth/logout.js";
@@ -44,60 +44,95 @@ type NativeConnectorOptions = {
export class InAppNativeConnector implements InAppConnector {
private client: ThirdwebClient;
private ecosystem?: Ecosystem;
+ private storage: ClientScopedStorage;
private passkeyDomain?: string;
- private localStorage: ClientScopedStorage;
private wallet?: IWebWallet;
constructor(options: NativeConnectorOptions) {
this.client = options.client;
- this.ecosystem = options.ecosystem;
this.passkeyDomain = options.passkeyDomain;
- this.localStorage = new ClientScopedStorage({
+ this.ecosystem = options.ecosystem;
+ this.storage = new ClientScopedStorage({
storage: nativeLocalStorage,
clientId: this.client.clientId,
- ecosystemId: this.ecosystem?.id,
+ ecosystem: options.ecosystem,
});
}
- async initializeWallet(authToken?: string) {
- const storedAuthToken = await this.localStorage.getAuthCookie();
- if (!authToken && storedAuthToken === null) {
+ async initializeWallet(
+ authResult?: AuthStoredTokenWithCookieReturnType,
+ encryptionKey?: string,
+ ) {
+ const storedAuthToken = await this.storage.getAuthCookie();
+ if (!authResult && storedAuthToken === null) {
throw new Error(
"No auth token provided and no stored auth token found to initialize the wallet",
);
}
const user = await getUserStatus({
- authToken: authToken || (storedAuthToken as string),
+ authToken:
+ authResult?.storedToken.cookieString || (storedAuthToken as string),
client: this.client,
- ecosystem: this.ecosystem,
+ ecosystem: this.storage.ecosystem,
});
if (!user) {
throw new Error("Cannot initialize wallet, no user logged in");
}
- const wallet = user.wallets[0];
- // TODO (enclaves): Migration to enclave wallet if sharded
+ let wallet = user.wallets[0];
+
+ // TODO (enclaves): Migration to enclave wallet for in-app wallets as well
+ if (
+ authResult &&
+ this.storage.ecosystem &&
+ wallet &&
+ wallet.type === "sharded"
+ ) {
+ const { migrateToEnclaveWallet } = await import(
+ "./helpers/wallet/migration.js"
+ );
+ wallet = await migrateToEnclaveWallet({
+ client: this.client,
+ storage: this.storage,
+ storedToken: authResult.storedToken,
+ encryptionKey,
+ });
+ }
+
+ if (authResult && this.ecosystem && !wallet) {
+ // new ecosystem user, generate enclave wallet
+ // TODO (enclaves): same flow for in-app wallets
+ const { generateWallet } = await import(
+ "../core/actions/generate-wallet.enclave.js"
+ );
+ wallet = await generateWallet({
+ authToken: authResult.storedToken.cookieString,
+ client: this.client,
+ ecosystem: this.ecosystem,
+ });
+ }
+
if (wallet && wallet.type === "enclave") {
this.wallet = new EnclaveWallet({
client: this.client,
ecosystem: this.ecosystem,
address: wallet.address,
- storage: this.localStorage,
+ storage: this.storage,
});
} else {
this.wallet = new ShardedWallet({
client: this.client,
- storage: this.localStorage,
+ storage: this.storage,
});
}
}
async getUser(): Promise {
if (!this.wallet) {
- const localAuthToken = await this.localStorage.getAuthCookie();
+ const localAuthToken = await this.storage.getAuthCookie();
if (!localAuthToken) {
return { status: "Logged Out" };
}
- await this.initializeWallet(localAuthToken);
+ await this.initializeWallet();
}
if (!this.wallet) {
throw new Error("Wallet not initialized");
@@ -164,13 +199,13 @@ export class InAppNativeConnector implements InAppConnector {
return customJwt({
jwt: params.jwt,
client: this.client,
- storage: this.localStorage,
+ storage: this.storage,
});
case "auth_endpoint":
return authEndpoint({
payload: params.payload,
client: this.client,
- storage: this.localStorage,
+ storage: this.storage,
});
default:
throw new Error(`Unsupported authentication type: ${strategy}`);
@@ -185,17 +220,16 @@ export class InAppNativeConnector implements InAppConnector {
client: this.client,
ecosystem: this.ecosystem,
});
- await this.initializeWallet(authResult.storedToken.cookieString);
- if (!this.wallet) {
- throw new Error("Wallet not initialized");
- }
const encryptionKey =
params.strategy === "jwt"
? params.encryptionKey
: params.strategy === "auth_endpoint"
? params.encryptionKey
: undefined;
-
+ await this.initializeWallet(authResult, encryptionKey);
+ if (!this.wallet) {
+ throw new Error("Wallet not initialized");
+ }
await this.wallet.postWalletSetUp({
...authResult,
encryptionKey,
@@ -226,7 +260,7 @@ export class InAppNativeConnector implements InAppConnector {
storeLastUsedPasskey = true,
} = args;
const domain = this.passkeyDomain;
- const storage = this.localStorage;
+ const storage = this.storage;
if (!domain) {
throw new Error(
"Passkey domain is required for native platforms. Please pass it in the 'auth' options when creating the inAppWallet().",
@@ -278,14 +312,14 @@ export class InAppNativeConnector implements InAppConnector {
async deleteActiveAccount() {
return deleteActiveAccount({
client: this.client,
- storage: this.localStorage,
+ storage: this.storage,
});
}
logout(): Promise {
return logoutUser({
client: this.client,
- storage: this.localStorage,
+ storage: this.storage,
});
}
@@ -294,7 +328,7 @@ export class InAppNativeConnector implements InAppConnector {
return await linkAccount({
client: args.client,
tokenToLink: storedToken.cookieString,
- storage: this.localStorage,
+ storage: this.storage,
ecosystem: args.ecosystem || this.ecosystem,
});
}
@@ -303,7 +337,7 @@ export class InAppNativeConnector implements InAppConnector {
return getLinkedProfilesInternal({
client: this.client,
ecosystem: this.ecosystem,
- storage: this.localStorage,
+ storage: this.storage,
});
}
}
diff --git a/packages/thirdweb/src/wallets/in-app/web/lib/auth/iframe-auth.ts b/packages/thirdweb/src/wallets/in-app/web/lib/auth/iframe-auth.ts
index 6d7a94dd312..8681c562cd4 100644
--- a/packages/thirdweb/src/wallets/in-app/web/lib/auth/iframe-auth.ts
+++ b/packages/thirdweb/src/wallets/in-app/web/lib/auth/iframe-auth.ts
@@ -1,4 +1,6 @@
import type { ThirdwebClient } from "../../../../../client/client.js";
+import { generateWallet } from "../../../core/actions/generate-wallet.enclave.js";
+import { getUserStatus } from "../../../core/actions/get-enclave-user-status.js";
import type { ClientScopedStorage } from "../../../core/authentication/client-scoped-storage.js";
import type {
AuthAndWalletRpcReturnType,
@@ -10,8 +12,6 @@ import type {
import type { Ecosystem } from "../../../core/wallet/types.js";
import type { ClientIdWithQuerierType } from "../../types.js";
import type { InAppWalletIframeCommunicator } from "../../utils/iFrameCommunication/InAppWalletIframeCommunicator.js";
-import { generateWallet } from "../actions/generate-wallet.enclave.js";
-import { getUserStatus } from "../actions/get-enclave-user-status.js";
import { BaseLogin } from "./base-login.js";
export type AuthQuerierTypes = {
diff --git a/packages/thirdweb/src/wallets/in-app/web/lib/auth/passkeys.ts b/packages/thirdweb/src/wallets/in-app/web/lib/auth/passkeys.ts
index 0e31db3cfbb..a05bde6a048 100644
--- a/packages/thirdweb/src/wallets/in-app/web/lib/auth/passkeys.ts
+++ b/packages/thirdweb/src/wallets/in-app/web/lib/auth/passkeys.ts
@@ -86,7 +86,7 @@ export async function hasStoredPasskey(
const storage = new ClientScopedStorage({
storage: webLocalStorage, // TODO (passkey) react native variant of this fn
clientId: client.clientId,
- ecosystemId: ecosystemId,
+ ecosystem: ecosystemId ? { id: ecosystemId } : undefined,
});
const credId = await storage.getPasskeyCredentialId();
return !!credId;
diff --git a/packages/thirdweb/src/wallets/in-app/web/lib/web-connector.ts b/packages/thirdweb/src/wallets/in-app/web/lib/web-connector.ts
index 807bc052298..bcea7cb0dd2 100644
--- a/packages/thirdweb/src/wallets/in-app/web/lib/web-connector.ts
+++ b/packages/thirdweb/src/wallets/in-app/web/lib/web-connector.ts
@@ -3,6 +3,7 @@ import { getThirdwebBaseUrl } from "../../../../utils/domains.js";
import { webLocalStorage } from "../../../../utils/storage/webStorage.js";
import type { SocialAuthOption } from "../../../../wallets/types.js";
import type { Account } from "../../../interfaces/wallet.js";
+import { getUserStatus } from "../../core/actions/get-enclave-user-status.js";
import { ClientScopedStorage } from "../../core/authentication/client-scoped-storage.js";
import { guestAuthenticate } from "../../core/authentication/guest.js";
import {
@@ -28,7 +29,6 @@ import type { InAppConnector } from "../../core/interfaces/connector.js";
import { EnclaveWallet } from "../../core/wallet/enclave-wallet.js";
import type { Ecosystem } from "../../core/wallet/types.js";
import type { IWebWallet } from "../../core/wallet/web-wallet.js";
-import { getUserStatus } from "../lib/actions/get-enclave-user-status.js";
import type { InAppWalletConstructorType } from "../types.js";
import { InAppWalletIframeCommunicator } from "../utils/iFrameCommunication/InAppWalletIframeCommunicator.js";
import { Auth, type AuthQuerierTypes } from "./auth/iframe-auth.js";
@@ -43,7 +43,7 @@ export class InAppWebConnector implements InAppConnector {
private client: ThirdwebClient;
private ecosystem?: Ecosystem;
private querier: InAppWalletIframeCommunicator;
- private localStorage: ClientScopedStorage;
+ private storage: ClientScopedStorage;
private wallet?: IWebWallet;
/**
@@ -79,10 +79,10 @@ export class InAppWebConnector implements InAppConnector {
this.client = client;
this.ecosystem = ecosystem;
this.passkeyDomain = passkeyDomain;
- this.localStorage = new ClientScopedStorage({
+ this.storage = new ClientScopedStorage({
storage: webLocalStorage,
clientId: client.clientId,
- ecosystemId: ecosystem?.id,
+ ecosystem: ecosystem,
});
this.querier = new InAppWalletIframeCommunicator({
clientId: client.clientId,
@@ -94,7 +94,7 @@ export class InAppWebConnector implements InAppConnector {
client,
querier: this.querier,
baseUrl,
- localStorage: this.localStorage,
+ localStorage: this.storage,
ecosystem,
onAuthSuccess: async (authResult) => {
onAuthSuccess?.(authResult);
@@ -162,7 +162,7 @@ export class InAppWebConnector implements InAppConnector {
}
async initializeWallet(authToken?: string) {
- const storedAuthToken = await this.localStorage.getAuthCookie();
+ const storedAuthToken = await this.storage.getAuthCookie();
if (!authToken && storedAuthToken === null) {
throw new Error(
"No auth token provided and no stored auth token found to initialize the wallet",
@@ -183,12 +183,12 @@ export class InAppWebConnector implements InAppConnector {
);
}
- if (user.wallets[0].type === "enclave") {
+ if (user.wallets[0]?.type === "enclave") {
this.wallet = new EnclaveWallet({
client: this.client,
ecosystem: this.ecosystem,
address: user.wallets[0].address,
- storage: this.localStorage,
+ storage: this.storage,
});
return;
}
@@ -197,7 +197,7 @@ export class InAppWebConnector implements InAppConnector {
client: this.client,
ecosystem: this.ecosystem,
querier: this.querier,
- localStorage: this.localStorage,
+ localStorage: this.storage,
});
}
@@ -227,7 +227,7 @@ export class InAppWebConnector implements InAppConnector {
async getUser(): Promise {
// If we don't have a wallet yet we'll create one
if (!this.wallet) {
- const localAuthToken = await this.localStorage.getAuthCookie();
+ const localAuthToken = await this.storage.getAuthCookie();
if (!localAuthToken) {
return { status: "Logged Out" };
}
@@ -413,7 +413,7 @@ export class InAppWebConnector implements InAppConnector {
const { PasskeyWebClient } = await import("./auth/passkeys.js");
const { passkeyName, storeLastUsedPasskey = true } = args;
const passkeyClient = new PasskeyWebClient();
- const storage = this.localStorage;
+ const storage = this.storage;
if (args.type === "sign-up") {
return registerPasskey({
client: this.client,
@@ -444,7 +444,7 @@ export class InAppWebConnector implements InAppConnector {
return await linkAccount({
client: args.client,
tokenToLink: storedToken.cookieString,
- storage: this.localStorage,
+ storage: this.storage,
ecosystem: args.ecosystem || this.ecosystem,
});
}
@@ -453,7 +453,7 @@ export class InAppWebConnector implements InAppConnector {
return getLinkedProfilesInternal({
client: this.client,
ecosystem: this.ecosystem,
- storage: this.localStorage,
+ storage: this.storage,
});
}
}
diff --git a/packages/thirdweb/src/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.ts b/packages/thirdweb/src/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.ts
index c1af63986e8..4dc1ad7d7fd 100644
--- a/packages/thirdweb/src/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.ts
+++ b/packages/thirdweb/src/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.ts
@@ -47,7 +47,7 @@ export class InAppWalletIframeCommunicator<
const localStorage = new ClientScopedStorage({
storage: webLocalStorage,
clientId: this.clientId,
- ecosystemId: this.ecosystem?.id,
+ ecosystem: this.ecosystem,
});
return {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ba10dbadbf9..8bcadfcfce1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -134,7 +134,7 @@ importers:
version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@sentry/nextjs':
specifier: 8.34.0
- version: 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ version: 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
'@shazow/whatsabi':
specifier: ^0.15.3
version: 0.15.3(@noble/hashes@1.5.0)(bufferutil@4.0.8)(utf-8-validate@5.0.10)
@@ -290,7 +290,7 @@ importers:
version: 2.5.4
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
thirdweb:
specifier: workspace:*
version: link:../../packages/thirdweb
@@ -339,7 +339,7 @@ importers:
version: 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))
'@storybook/nextjs':
specifier: 8.3.5
- version: 8.3.5(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ version: 8.3.5(@swc/core@1.7.35)(esbuild@0.23.1)(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
'@storybook/react':
specifier: 8.3.5
version: 8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)
@@ -387,7 +387,7 @@ importers:
version: 10.4.20(postcss@8.4.47)
checkly:
specifier: ^4.8.1
- version: 4.9.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)
+ version: 4.9.0(@swc/core@1.7.35)(@types/node@20.14.9)(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)
eslint:
specifier: 8.57.0
version: 8.57.0
@@ -414,7 +414,7 @@ importers:
version: 8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)
tailwindcss:
specifier: 3.4.13
- version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
typescript:
specifier: 5.6.3
version: 5.6.3
@@ -526,10 +526,10 @@ importers:
version: 8.4.47
tailwindcss:
specifier: 3.4.13
- version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
typescript:
specifier: 5.6.3
version: 5.6.3
@@ -541,13 +541,13 @@ importers:
version: 1.0.1(react@18.3.1)
'@mdx-js/loader':
specifier: ^2.3.0
- version: 2.3.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13)))
+ version: 2.3.0(webpack@5.95.0)
'@mdx-js/react':
specifier: ^2.3.0
version: 2.3.0(react@18.3.1)
'@next/mdx':
specifier: ^13.5.6
- version: 13.5.7(@mdx-js/loader@2.3.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))))(@mdx-js/react@2.3.0(react@18.3.1))
+ version: 13.5.7(@mdx-js/loader@2.3.0(webpack@5.95.0))(@mdx-js/react@2.3.0(react@18.3.1))
'@radix-ui/react-dialog':
specifier: 1.1.2
version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -631,7 +631,7 @@ importers:
version: 2.5.4
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
thirdweb:
specifier: workspace:*
version: link:../../packages/thirdweb
@@ -689,7 +689,7 @@ importers:
version: 1.2.4
eslint-plugin-tailwindcss:
specifier: ^3.17.5
- version: 3.17.5(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 3.17.5(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
next-sitemap:
specifier: ^4.2.3
version: 4.2.3(next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
@@ -698,7 +698,7 @@ importers:
version: 8.4.47
tailwindcss:
specifier: 3.4.13
- version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
tsx:
specifier: ^4.19.1
version: 4.19.1
@@ -767,7 +767,7 @@ importers:
version: 2.5.4
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
thirdweb:
specifier: workspace:*
version: link:../../packages/thirdweb
@@ -798,13 +798,16 @@ importers:
version: 8.4.47
tailwindcss:
specifier: 3.4.13
- version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
typescript:
specifier: 5.6.3
version: 5.6.3
packages/react-native-adapter:
dependencies:
+ '@aws-sdk/client-kms':
+ specifier: 3.670.0
+ version: 3.670.0
'@aws-sdk/client-lambda':
specifier: 3.670.0
version: 3.670.0
@@ -946,6 +949,9 @@ importers:
specifier: 2.21.25
version: 2.21.25(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)
devDependencies:
+ '@aws-sdk/client-kms':
+ specifier: 3.670.0
+ version: 3.670.0
'@aws-sdk/client-lambda':
specifier: 3.670.0
version: 3.670.0
@@ -1134,6 +1140,10 @@ packages:
resolution: {integrity: sha512-4q/yYdtO/RisGdQ3a2E912YekIpQYvS4TYPYS/onCbTXW/7C8/Ha7yUEncE7Woou0MDXyoVh50UATcJEmUt0+Q==}
engines: {node: '>=16.0.0'}
+ '@aws-sdk/client-kms@3.670.0':
+ resolution: {integrity: sha512-cV7tcrBfK3J/GrIe77ATi7LabZxCRRssj5QlPDV2dn5KRuxHWl9jR3JyglmEowsXKFiKllvbRi0PE9MM/y9UOw==}
+ engines: {node: '>=16.0.0'}
+
'@aws-sdk/client-lambda@3.670.0':
resolution: {integrity: sha512-C4puzTkOyzB6sKIngLHkRURvM7rzJi5VLYALYpBVnSw5cWVeOJ9r4ne3Pn3hYKay54RXikJ840Svr33Nc1CX5Q==}
engines: {node: '>=16.0.0'}
@@ -6402,9 +6412,6 @@ packages:
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- '@swc/helpers@0.5.13':
- resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==}
-
'@swc/helpers@0.5.5':
resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
@@ -15292,6 +15299,52 @@ snapshots:
transitivePeerDependencies:
- aws-crt
+ '@aws-sdk/client-kms@3.670.0':
+ dependencies:
+ '@aws-crypto/sha256-browser': 5.2.0
+ '@aws-crypto/sha256-js': 5.2.0
+ '@aws-sdk/client-sso-oidc': 3.670.0(@aws-sdk/client-sts@3.670.0)
+ '@aws-sdk/client-sts': 3.670.0
+ '@aws-sdk/core': 3.667.0
+ '@aws-sdk/credential-provider-node': 3.670.0(@aws-sdk/client-sso-oidc@3.670.0(@aws-sdk/client-sts@3.670.0))(@aws-sdk/client-sts@3.670.0)
+ '@aws-sdk/middleware-host-header': 3.667.0
+ '@aws-sdk/middleware-logger': 3.667.0
+ '@aws-sdk/middleware-recursion-detection': 3.667.0
+ '@aws-sdk/middleware-user-agent': 3.669.0
+ '@aws-sdk/region-config-resolver': 3.667.0
+ '@aws-sdk/types': 3.667.0
+ '@aws-sdk/util-endpoints': 3.667.0
+ '@aws-sdk/util-user-agent-browser': 3.670.0
+ '@aws-sdk/util-user-agent-node': 3.669.0
+ '@smithy/config-resolver': 3.0.9
+ '@smithy/core': 2.4.8
+ '@smithy/fetch-http-handler': 3.2.9
+ '@smithy/hash-node': 3.0.7
+ '@smithy/invalid-dependency': 3.0.7
+ '@smithy/middleware-content-length': 3.0.9
+ '@smithy/middleware-endpoint': 3.1.4
+ '@smithy/middleware-retry': 3.0.23
+ '@smithy/middleware-serde': 3.0.7
+ '@smithy/middleware-stack': 3.0.7
+ '@smithy/node-config-provider': 3.1.8
+ '@smithy/node-http-handler': 3.2.4
+ '@smithy/protocol-http': 4.1.4
+ '@smithy/smithy-client': 3.4.0
+ '@smithy/types': 3.5.0
+ '@smithy/url-parser': 3.0.7
+ '@smithy/util-base64': 3.0.0
+ '@smithy/util-body-length-browser': 3.0.0
+ '@smithy/util-body-length-node': 3.0.0
+ '@smithy/util-defaults-mode-browser': 3.0.23
+ '@smithy/util-defaults-mode-node': 3.0.23
+ '@smithy/util-endpoints': 2.1.3
+ '@smithy/util-middleware': 3.0.7
+ '@smithy/util-retry': 3.0.7
+ '@smithy/util-utf8': 3.0.0
+ tslib: 2.7.0
+ transitivePeerDependencies:
+ - aws-crt
+
'@aws-sdk/client-lambda@3.670.0':
dependencies:
'@aws-crypto/sha256-browser': 5.2.0
@@ -20191,11 +20244,11 @@ snapshots:
jju: 1.4.0
read-yaml-file: 1.1.0
- '@mdx-js/loader@2.3.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13)))':
+ '@mdx-js/loader@2.3.0(webpack@5.95.0)':
dependencies:
'@mdx-js/mdx': 2.3.0
source-map: 0.7.4
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))
+ webpack: 5.95.0
transitivePeerDependencies:
- supports-color
@@ -20351,11 +20404,11 @@ snapshots:
dependencies:
glob: 10.3.10
- '@next/mdx@13.5.7(@mdx-js/loader@2.3.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))))(@mdx-js/react@2.3.0(react@18.3.1))':
+ '@next/mdx@13.5.7(@mdx-js/loader@2.3.0(webpack@5.95.0))(@mdx-js/react@2.3.0(react@18.3.1))':
dependencies:
source-map: 0.7.4
optionalDependencies:
- '@mdx-js/loader': 2.3.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13)))
+ '@mdx-js/loader': 2.3.0(webpack@5.95.0)
'@mdx-js/react': 2.3.0(react@18.3.1)
'@next/swc-darwin-arm64@14.2.15':
@@ -20508,7 +20561,7 @@ snapshots:
widest-line: 3.1.0
wrap-ansi: 7.0.0
- '@oclif/core@2.8.11(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)':
+ '@oclif/core@2.8.11(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)':
dependencies:
'@types/cli-progress': 3.11.5
ansi-escapes: 4.3.2
@@ -20534,7 +20587,7 @@ snapshots:
strip-ansi: 6.0.1
supports-color: 8.1.1
supports-hyperlinks: 2.3.0
- ts-node: 10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)
+ ts-node: 10.9.2(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)
tslib: 2.7.0
widest-line: 3.1.0
wordwrap: 1.0.0
@@ -20571,10 +20624,10 @@ snapshots:
dependencies:
'@oclif/core': 1.26.2
- '@oclif/plugin-not-found@2.3.23(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)':
+ '@oclif/plugin-not-found@2.3.23(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)':
dependencies:
'@oclif/color': 1.0.13
- '@oclif/core': 2.8.11(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)
+ '@oclif/core': 2.8.11(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)
fast-levenshtein: 3.0.0
lodash: 4.17.21
transitivePeerDependencies:
@@ -20599,9 +20652,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@oclif/plugin-warn-if-update-available@2.0.24(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)':
+ '@oclif/plugin-warn-if-update-available@2.0.24(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)':
dependencies:
- '@oclif/core': 2.8.11(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)
+ '@oclif/core': 2.8.11(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)
chalk: 4.1.2
debug: 4.3.7(supports-color@8.1.1)
fs-extra: 9.1.0
@@ -20964,7 +21017,7 @@ snapshots:
playwright: 1.48.0
optional: true
- '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))':
+ '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))':
dependencies:
ansi-html: 0.0.9
core-js-pure: 3.38.1
@@ -20974,7 +21027,7 @@ snapshots:
react-refresh: 0.14.2
schema-utils: 4.2.0
source-map: 0.7.4
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
optionalDependencies:
type-fest: 4.26.1
webpack-hot-middleware: 2.26.1
@@ -22628,7 +22681,7 @@ snapshots:
'@sentry/types': 8.34.0
'@sentry/utils': 8.34.0
- '@sentry/nextjs@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))':
+ '@sentry/nextjs@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))':
dependencies:
'@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.27.0
@@ -22641,14 +22694,14 @@ snapshots:
'@sentry/types': 8.34.0
'@sentry/utils': 8.34.0
'@sentry/vercel-edge': 8.34.0
- '@sentry/webpack-plugin': 2.22.3(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ '@sentry/webpack-plugin': 2.22.3(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
chalk: 3.0.0
next: 14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
resolve: 1.22.8
rollup: 3.29.5
stacktrace-parser: 0.1.10
optionalDependencies:
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
transitivePeerDependencies:
- '@opentelemetry/api'
- '@opentelemetry/core'
@@ -22730,12 +22783,12 @@ snapshots:
'@sentry/types': 8.34.0
'@sentry/utils': 8.34.0
- '@sentry/webpack-plugin@2.22.3(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))':
+ '@sentry/webpack-plugin@2.22.3(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))':
dependencies:
'@sentry/bundler-plugin-core': 2.22.3
unplugin: 1.0.1
uuid: 9.0.1
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
transitivePeerDependencies:
- encoding
- supports-color
@@ -23383,7 +23436,7 @@ snapshots:
- supports-color
- webpack-sources
- '@storybook/builder-webpack5@8.3.5(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)':
+ '@storybook/builder-webpack5@8.3.5(@swc/core@1.7.35)(esbuild@0.23.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)':
dependencies:
'@storybook/core-webpack': 8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))
'@types/node': 22.7.5
@@ -23392,25 +23445,25 @@ snapshots:
case-sensitive-paths-webpack-plugin: 2.4.0
cjs-module-lexer: 1.4.1
constants-browserify: 1.0.0
- css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
es-module-lexer: 1.5.4
express: 4.21.1
- fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
fs-extra: 11.2.0
- html-webpack-plugin: 5.6.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ html-webpack-plugin: 5.6.0(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
magic-string: 0.30.12
path-browserify: 1.0.1
process: 0.11.10
semver: 7.6.3
storybook: 8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- style-loader: 3.3.4(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
- terser-webpack-plugin: 5.3.10(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ style-loader: 3.3.4(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
+ terser-webpack-plugin: 5.3.10(@swc/core@1.7.35)(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
ts-dedent: 2.2.0
url: 0.11.4
util: 0.12.5
util-deprecate: 1.0.2
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
- webpack-dev-middleware: 6.1.3(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
+ webpack-dev-middleware: 6.1.3(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
webpack-hot-middleware: 2.26.1
webpack-virtual-modules: 0.6.2
optionalDependencies:
@@ -23486,7 +23539,7 @@ snapshots:
dependencies:
storybook: 8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- '@storybook/nextjs@8.3.5(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))':
+ '@storybook/nextjs@8.3.5(@swc/core@1.7.35)(esbuild@0.23.1)(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))':
dependencies:
'@babel/core': 7.25.8
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.8)
@@ -23501,32 +23554,32 @@ snapshots:
'@babel/preset-react': 7.25.7(@babel/core@7.25.8)
'@babel/preset-typescript': 7.25.7(@babel/core@7.25.8)
'@babel/runtime': 7.25.7
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
- '@storybook/builder-webpack5': 8.3.5(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)
- '@storybook/preset-react-webpack': 8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
+ '@storybook/builder-webpack5': 8.3.5(@swc/core@1.7.35)(esbuild@0.23.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)
+ '@storybook/preset-react-webpack': 8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(@swc/core@1.7.35)(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)
'@storybook/react': 8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)
'@storybook/test': 8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))
'@types/node': 22.7.5
'@types/semver': 7.5.8
- babel-loader: 9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
- css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ babel-loader: 9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
+ css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
find-up: 5.0.0
fs-extra: 11.2.0
image-size: 1.1.1
loader-utils: 3.3.1
next: 14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- node-polyfill-webpack-plugin: 2.0.1(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ node-polyfill-webpack-plugin: 2.0.1(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
pnp-webpack-plugin: 1.7.0(typescript@5.6.3)
postcss: 8.4.47
- postcss-loader: 8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ postcss-loader: 8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-refresh: 0.14.2
resolve-url-loader: 5.0.0
- sass-loader: 13.3.3(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ sass-loader: 13.3.3(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
semver: 7.6.3
storybook: 8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- style-loader: 3.3.4(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ style-loader: 3.3.4(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
styled-jsx: 5.1.6(@babel/core@7.25.8)(react@18.3.1)
ts-dedent: 2.2.0
tsconfig-paths: 4.2.0
@@ -23534,7 +23587,7 @@ snapshots:
optionalDependencies:
sharp: 0.33.5
typescript: 5.6.3
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
transitivePeerDependencies:
- '@rspack/core'
- '@swc/core'
@@ -23554,11 +23607,11 @@ snapshots:
- webpack-hot-middleware
- webpack-plugin-serve
- '@storybook/preset-react-webpack@8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)':
+ '@storybook/preset-react-webpack@8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(@swc/core@1.7.35)(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)':
dependencies:
'@storybook/core-webpack': 8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))
'@storybook/react': 8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)
- '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
'@types/node': 22.7.5
'@types/semver': 7.5.8
find-up: 5.0.0
@@ -23571,7 +23624,7 @@ snapshots:
semver: 7.6.3
storybook: 8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)
tsconfig-paths: 4.2.0
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
@@ -23586,7 +23639,7 @@ snapshots:
dependencies:
storybook: 8.3.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))':
+ '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))':
dependencies:
debug: 4.3.7(supports-color@8.1.1)
endent: 2.1.0
@@ -23596,7 +23649,7 @@ snapshots:
react-docgen-typescript: 2.2.2(typescript@5.6.3)
tslib: 2.7.0
typescript: 5.6.3
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
transitivePeerDependencies:
- supports-color
@@ -24047,7 +24100,7 @@ snapshots:
'@swc/core-win32-x64-msvc@1.7.35':
optional: true
- '@swc/core@1.7.35(@swc/helpers@0.5.13)':
+ '@swc/core@1.7.35':
dependencies:
'@swc/counter': 0.1.3
'@swc/types': 0.1.13
@@ -24062,16 +24115,10 @@ snapshots:
'@swc/core-win32-arm64-msvc': 1.7.35
'@swc/core-win32-ia32-msvc': 1.7.35
'@swc/core-win32-x64-msvc': 1.7.35
- '@swc/helpers': 0.5.13
optional: true
'@swc/counter@0.1.3': {}
- '@swc/helpers@0.5.13':
- dependencies:
- tslib: 2.7.0
- optional: true
-
'@swc/helpers@0.5.5':
dependencies:
'@swc/counter': 0.1.3
@@ -25626,12 +25673,12 @@ snapshots:
dependencies:
'@babel/core': 7.25.8
- babel-loader@9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ babel-loader@9.2.1(@babel/core@7.25.8)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
'@babel/core': 7.25.8
find-cache-dir: 4.0.0
schema-utils: 4.2.0
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
babel-plugin-macros@3.1.0:
dependencies:
@@ -26106,13 +26153,13 @@ snapshots:
check-error@2.1.1: {}
- checkly@4.9.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10):
+ checkly@4.9.0(@swc/core@1.7.35)(@types/node@20.14.9)(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10):
dependencies:
- '@oclif/core': 2.8.11(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)
+ '@oclif/core': 2.8.11(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)
'@oclif/plugin-help': 5.1.20
- '@oclif/plugin-not-found': 2.3.23(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)
+ '@oclif/plugin-not-found': 2.3.23(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)
'@oclif/plugin-plugins': 5.4.4
- '@oclif/plugin-warn-if-update-available': 2.0.24(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)
+ '@oclif/plugin-warn-if-update-available': 2.0.24(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3)
acorn: 8.8.1
acorn-walk: 8.2.0
@@ -26590,7 +26637,7 @@ snapshots:
css-color-keywords@1.0.0: {}
- css-loader@6.11.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ css-loader@6.11.0(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
icss-utils: 5.1.0(postcss@8.4.47)
postcss: 8.4.47
@@ -26601,7 +26648,7 @@ snapshots:
postcss-value-parser: 4.2.0
semver: 7.6.3
optionalDependencies:
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
css-select@4.3.0:
dependencies:
@@ -27301,7 +27348,7 @@ snapshots:
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0)
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0)
eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.0)
eslint-plugin-react: 7.37.1(eslint@8.57.0)
eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.0)
@@ -27332,7 +27379,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0)
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -27360,6 +27407,16 @@ snapshots:
- bluebird
- supports-color
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0):
+ dependencies:
+ debug: 3.2.7
+ optionalDependencies:
+ '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.6.3)
+ eslint: 8.57.0
+ eslint-import-resolver-node: 0.3.9
+ transitivePeerDependencies:
+ - supports-color
+
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
dependencies:
debug: 3.2.7
@@ -27371,7 +27428,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -27382,7 +27439,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.9.0(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -27394,7 +27451,7 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.9.0(eslint@8.57.0)(typescript@5.6.3)
+ '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -27493,11 +27550,11 @@ snapshots:
eslint-plugin-svg-jsx@1.2.4: {}
- eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))):
+ eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))):
dependencies:
fast-glob: 3.3.2
postcss: 8.4.47
- tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))
+ tailwindcss: 3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
eslint-scope@5.1.1:
dependencies:
@@ -28193,7 +28250,7 @@ snapshots:
cross-spawn: 7.0.3
signal-exit: 4.1.0
- fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
'@babel/code-frame': 7.25.7
chalk: 4.1.2
@@ -28208,7 +28265,7 @@ snapshots:
semver: 7.6.3
tapable: 2.2.1
typescript: 5.6.3
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
form-data-encoder@2.1.4: {}
@@ -28736,7 +28793,7 @@ snapshots:
html-void-elements@3.0.0: {}
- html-webpack-plugin@5.6.0(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ html-webpack-plugin@5.6.0(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
@@ -28744,7 +28801,7 @@ snapshots:
pretty-error: 4.0.0
tapable: 2.2.1
optionalDependencies:
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
htmlparser2@3.10.1:
dependencies:
@@ -31201,7 +31258,7 @@ snapshots:
'@next/env': 13.5.6
fast-glob: 3.3.2
minimist: 1.2.8
- next: 14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
@@ -31262,33 +31319,6 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
- next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@next/env': 14.2.15
- '@swc/helpers': 0.5.5
- busboy: 1.6.0
- caniuse-lite: 1.0.30001668
- graceful-fs: 4.2.11
- postcss: 8.4.31
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- styled-jsx: 5.1.1(@babel/core@7.25.8)(react@18.3.1)
- optionalDependencies:
- '@next/swc-darwin-arm64': 14.2.15
- '@next/swc-darwin-x64': 14.2.15
- '@next/swc-linux-arm64-gnu': 14.2.15
- '@next/swc-linux-arm64-musl': 14.2.15
- '@next/swc-linux-x64-gnu': 14.2.15
- '@next/swc-linux-x64-musl': 14.2.15
- '@next/swc-win32-arm64-msvc': 14.2.15
- '@next/swc-win32-ia32-msvc': 14.2.15
- '@next/swc-win32-x64-msvc': 14.2.15
- '@opentelemetry/api': 1.9.0
- '@playwright/test': 1.48.0
- transitivePeerDependencies:
- - '@babel/core'
- - babel-plugin-macros
-
nextjs-toploader@1.6.12(next@14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
next: 14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -31299,7 +31329,7 @@ snapshots:
nextjs-toploader@1.6.12(next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- next: 14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
nprogress: 0.2.0
prop-types: 15.8.1
react: 18.3.1
@@ -31351,7 +31381,7 @@ snapshots:
node-int64@0.4.0: {}
- node-polyfill-webpack-plugin@2.0.1(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ node-polyfill-webpack-plugin@2.0.1(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
assert: 2.1.0
browserify-zlib: 0.2.0
@@ -31378,7 +31408,7 @@ snapshots:
url: 0.11.4
util: 0.12.5
vm-browserify: 1.1.2
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
node-releases@2.0.18: {}
@@ -31977,22 +32007,22 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.47
- postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)):
+ postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.5.1
optionalDependencies:
postcss: 8.4.47
- ts-node: 10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)
+ ts-node: 10.9.2(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3)
- postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
cosmiconfig: 9.0.0(typescript@5.6.3)
jiti: 1.21.6
postcss: 8.4.47
semver: 7.6.3
optionalDependencies:
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
transitivePeerDependencies:
- typescript
@@ -33273,10 +33303,10 @@ snapshots:
safer-buffer@2.1.2: {}
- sass-loader@13.3.3(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ sass-loader@13.3.3(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
neo-async: 2.6.2
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
satori@0.10.9:
dependencies:
@@ -33806,9 +33836,9 @@ snapshots:
structured-headers@0.4.1: {}
- style-loader@3.3.4(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ style-loader@3.3.4(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
style-to-object@0.4.4:
dependencies:
@@ -33957,11 +33987,11 @@ snapshots:
tailwind-merge@2.5.4: {}
- tailwindcss-animate@1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))):
+ tailwindcss-animate@1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))):
dependencies:
- tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))
+ tailwindcss: 3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
- tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3)):
+ tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -33980,7 +34010,7 @@ snapshots:
postcss: 8.4.47
postcss-import: 15.1.0(postcss@8.4.47)
postcss-js: 4.0.1(postcss@8.4.47)
- postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3))
+ postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
postcss-nested: 6.2.0(postcss@8.4.47)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
@@ -34071,29 +34101,18 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
- terser-webpack-plugin@5.3.10(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ terser-webpack-plugin@5.3.10(@swc/core@1.7.35)(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.34.1
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
optionalDependencies:
- '@swc/core': 1.7.35(@swc/helpers@0.5.13)
+ '@swc/core': 1.7.35
esbuild: 0.23.1
- terser-webpack-plugin@5.3.10(@swc/core@1.7.35(@swc/helpers@0.5.13))(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.25
- jest-worker: 27.5.1
- schema-utils: 3.3.0
- serialize-javascript: 6.0.2
- terser: 5.34.1
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))
- optionalDependencies:
- '@swc/core': 1.7.35(@swc/helpers@0.5.13)
-
terser-webpack-plugin@5.3.10(webpack@5.95.0):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
@@ -34247,7 +34266,7 @@ snapshots:
ts-mixer@6.0.4: {}
- ts-node@10.9.2(@swc/core@1.7.35(@swc/helpers@0.5.13))(@types/node@20.14.9)(typescript@5.6.3):
+ ts-node@10.9.2(@swc/core@1.7.35)(@types/node@20.14.9)(typescript@5.6.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@@ -34265,7 +34284,7 @@ snapshots:
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
- '@swc/core': 1.7.35(@swc/helpers@0.5.13)
+ '@swc/core': 1.7.35
ts-pnp@1.2.0(typescript@5.6.3):
optionalDependencies:
@@ -35091,7 +35110,7 @@ snapshots:
- bufferutil
- utf-8-validate
- webpack-dev-middleware@6.1.3(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)):
+ webpack-dev-middleware@6.1.3(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)):
dependencies:
colorette: 2.0.20
memfs: 3.5.3
@@ -35099,7 +35118,7 @@ snapshots:
range-parser: 1.2.1
schema-utils: 4.2.0
optionalDependencies:
- webpack: 5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)
+ webpack: 5.95.0(@swc/core@1.7.35)(esbuild@0.23.1)
webpack-hot-middleware@2.26.1:
dependencies:
@@ -35143,37 +35162,7 @@ snapshots:
- esbuild
- uglify-js
- webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13)):
- dependencies:
- '@types/estree': 1.0.6
- '@webassemblyjs/ast': 1.12.1
- '@webassemblyjs/wasm-edit': 1.12.1
- '@webassemblyjs/wasm-parser': 1.12.1
- acorn: 8.12.1
- acorn-import-attributes: 1.9.5(acorn@8.12.1)
- browserslist: 4.24.0
- chrome-trace-event: 1.0.4
- enhanced-resolve: 5.17.1
- es-module-lexer: 1.5.4
- eslint-scope: 5.1.1
- events: 3.3.0
- glob-to-regexp: 0.4.1
- graceful-fs: 4.2.11
- json-parse-even-better-errors: 2.3.1
- loader-runner: 4.3.0
- mime-types: 2.1.35
- neo-async: 2.6.2
- schema-utils: 3.3.0
- tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(@swc/core@1.7.35(@swc/helpers@0.5.13))(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13)))
- watchpack: 2.4.2
- webpack-sources: 3.2.3
- transitivePeerDependencies:
- - '@swc/core'
- - esbuild
- - uglify-js
-
- webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1):
+ webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1):
dependencies:
'@types/estree': 1.0.6
'@webassemblyjs/ast': 1.12.1
@@ -35195,7 +35184,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.35(@swc/helpers@0.5.13))(esbuild@0.23.1))
+ terser-webpack-plugin: 5.3.10(@swc/core@1.7.35)(esbuild@0.23.1)(webpack@5.95.0(@swc/core@1.7.35)(esbuild@0.23.1))
watchpack: 2.4.2
webpack-sources: 3.2.3
transitivePeerDependencies: