Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8ebbe54d9 | ||
|
|
ca756819db | ||
|
|
7217e774b2 | ||
|
|
5de72c5ecd | ||
|
|
60c5c26583 | ||
|
|
dc74c3b4b9 | ||
|
|
69a921d01f | ||
|
|
9abdb92028 | ||
|
|
6ed2fd13de | ||
|
|
a22457a69c | ||
|
|
ae675db8c8 | ||
|
|
54c9333fc9 | ||
|
|
541cf0b3e9 |
+33
-14
@@ -26,6 +26,7 @@ import { ToolTipLabel } from "@/components/ui/tooltip";
|
||||
import type { Account } from "@3rdweb-sdk/react/hooks/useApi";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { useMutation } from "@tanstack/react-query";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { TransactionButton } from "components/buttons/TransactionButton";
|
||||
import { addDays, fromUnixTime } from "date-fns";
|
||||
import { useAllChainsData } from "hooks/chains/allChains";
|
||||
@@ -119,22 +120,39 @@ function ClaimableModule(props: ModuleInstanceProps) {
|
||||
claimConditionQuery.data?.startTimestamp === 0 &&
|
||||
claimConditionQuery.data?.endTimestamp === 0;
|
||||
|
||||
const currencyContract = getContract({
|
||||
address: claimConditionQuery.data?.currency || "",
|
||||
chain: props.contract.chain,
|
||||
client: props.contract.client,
|
||||
});
|
||||
const claimConditionCurrency = claimConditionQuery.data?.currency;
|
||||
|
||||
const shouldFetchTokenDecimals =
|
||||
claimConditionQuery.data &&
|
||||
claimConditionQuery.data?.currency !== ZERO_ADDRESS;
|
||||
const shouldFetchCurrencyDecimals =
|
||||
!!claimConditionCurrency && claimConditionCurrency !== ZERO_ADDRESS;
|
||||
|
||||
const currencyDecimalsQuery = useReadContract(decimals, {
|
||||
contract: currencyContract,
|
||||
queryOptions: {
|
||||
enabled: shouldFetchTokenDecimals,
|
||||
const currencyDecimalsQuery = useQuery({
|
||||
queryKey: [
|
||||
"currency-decimals",
|
||||
{
|
||||
contractAddress: props.contract.address,
|
||||
chainId: props.contract.chain.id,
|
||||
claimConditionCurrency,
|
||||
},
|
||||
],
|
||||
queryFn: async () => {
|
||||
if (!claimConditionCurrency) {
|
||||
throw new Error();
|
||||
}
|
||||
const currencyContract = getContract({
|
||||
address: claimConditionCurrency,
|
||||
chain: props.contract.chain,
|
||||
client: props.contract.client,
|
||||
});
|
||||
|
||||
const decimalsVal = await decimals({
|
||||
contract: currencyContract,
|
||||
});
|
||||
|
||||
return decimalsVal;
|
||||
},
|
||||
enabled: shouldFetchCurrencyDecimals,
|
||||
});
|
||||
|
||||
const tokenDecimalsQuery = useReadContract(decimals, {
|
||||
contract: contract,
|
||||
queryOptions: {
|
||||
@@ -265,7 +283,7 @@ function ClaimableModule(props: ModuleInstanceProps) {
|
||||
// claim conditions data is present
|
||||
claimConditionQuery.data &&
|
||||
// token decimals is fetched if it should be fetched
|
||||
(shouldFetchTokenDecimals ? currencyDecimalsQuery.isFetched : true)
|
||||
(shouldFetchCurrencyDecimals ? currencyDecimalsQuery.isFetched : true)
|
||||
? {
|
||||
claimCondition: claimConditionQuery.data,
|
||||
currencyDecimals: currencyDecimalsQuery.data,
|
||||
@@ -276,7 +294,7 @@ function ClaimableModule(props: ModuleInstanceProps) {
|
||||
tokenId,
|
||||
isLoading:
|
||||
claimConditionQuery.isLoading ||
|
||||
(!!shouldFetchTokenDecimals && currencyDecimalsQuery.isLoading),
|
||||
(!!shouldFetchCurrencyDecimals && currencyDecimalsQuery.isLoading),
|
||||
}}
|
||||
isOwnerAccount={!!ownerAccount}
|
||||
name={props.contractInfo.name}
|
||||
@@ -565,6 +583,7 @@ function ClaimConditionSection(props: {
|
||||
onClick={() => setAddClaimConditionButtonClicked(true)}
|
||||
variant="outline"
|
||||
className="w-full"
|
||||
disabled={!props.isOwnerAccount}
|
||||
>
|
||||
Add Claim Condition
|
||||
</Button>
|
||||
|
||||
@@ -417,14 +417,9 @@ function AuthEndpointFields(props: {
|
||||
canEditAdvancedFeatures: boolean;
|
||||
}) {
|
||||
const { form, canEditAdvancedFeatures } = props;
|
||||
const customHeaderFields = useFieldArray({
|
||||
control: form.control,
|
||||
name: "customAuthEndpoint.customHeaders",
|
||||
});
|
||||
|
||||
const expandCustomAuthEndpointField =
|
||||
form.watch("customAuthEndpoint")?.authEndpoint !== undefined &&
|
||||
canEditAdvancedFeatures;
|
||||
form.watch("customAuthEndpoint") !== undefined && canEditAdvancedFeatures;
|
||||
|
||||
return (
|
||||
<div>
|
||||
@@ -464,88 +459,107 @@ function AuthEndpointFields(props: {
|
||||
}}
|
||||
/>
|
||||
</SwitchContainer>
|
||||
|
||||
<AdvancedConfigurationContainer
|
||||
show={expandCustomAuthEndpointField}
|
||||
className="grid grid-cols-1 gap-6 lg:grid-cols-2"
|
||||
>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="customAuthEndpoint.authEndpoint"
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>Authentication Endpoint</FormLabel>
|
||||
<FormControl>
|
||||
<Input
|
||||
{...field}
|
||||
placeholder="https://example.com/your-auth-verifier"
|
||||
/>
|
||||
</FormControl>
|
||||
<FormDescription>
|
||||
Enter the URL of your server where we will send the user payload
|
||||
for verification
|
||||
</FormDescription>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
{/* useFieldArray used on this component - it creates empty customAuthEndpoint.customHeaders array on mount */}
|
||||
{/* So only mount if expandCustomAuthEndpointField is true */}
|
||||
{expandCustomAuthEndpointField && (
|
||||
<AuthEndpointFieldsContent
|
||||
form={form}
|
||||
canEditAdvancedFeatures={canEditAdvancedFeatures}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
<div>
|
||||
<Label className="mb-3 inline-block">Custom Headers</Label>
|
||||
<div className="flex flex-col gap-4">
|
||||
{customHeaderFields.fields.map((field, customHeaderIdx) => {
|
||||
return (
|
||||
<div className="flex gap-4" key={field.id}>
|
||||
<Input
|
||||
placeholder="Name"
|
||||
type="text"
|
||||
{...form.register(
|
||||
`customAuthEndpoint.customHeaders.${customHeaderIdx}.key`,
|
||||
)}
|
||||
/>
|
||||
<Input
|
||||
placeholder="Value"
|
||||
type="text"
|
||||
{...form.register(
|
||||
`customAuthEndpoint.customHeaders.${customHeaderIdx}.value`,
|
||||
)}
|
||||
/>
|
||||
<Button
|
||||
variant="outline"
|
||||
aria-label="Remove header"
|
||||
onClick={() => {
|
||||
customHeaderFields.remove(customHeaderIdx);
|
||||
}}
|
||||
className="!w-auto px-3"
|
||||
>
|
||||
<Trash2Icon className="size-4 shrink-0 text-destructive-text" />
|
||||
</Button>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
function AuthEndpointFieldsContent(props: {
|
||||
form: UseFormReturn<ApiKeyEmbeddedWalletsValidationSchema>;
|
||||
canEditAdvancedFeatures: boolean;
|
||||
}) {
|
||||
const { form } = props;
|
||||
|
||||
<Button
|
||||
variant="outline"
|
||||
className="w-full gap-2 bg-background"
|
||||
onClick={() => {
|
||||
customHeaderFields.append({
|
||||
key: "",
|
||||
value: "",
|
||||
});
|
||||
}}
|
||||
>
|
||||
<PlusIcon className="size-4" />
|
||||
Add header
|
||||
</Button>
|
||||
</div>
|
||||
const customHeaderFields = useFieldArray({
|
||||
control: form.control,
|
||||
name: "customAuthEndpoint.customHeaders",
|
||||
});
|
||||
|
||||
<p className="mt-3 text-muted-foreground text-sm">
|
||||
Set custom headers to be sent along the request with the payload to
|
||||
the authentication endpoint above. This can be used to verify the
|
||||
incoming requests
|
||||
</p>
|
||||
return (
|
||||
<div className="mt-6 grid grid-cols-1 gap-6 lg:grid-cols-2">
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="customAuthEndpoint.authEndpoint"
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>Authentication Endpoint</FormLabel>
|
||||
<FormControl>
|
||||
<Input
|
||||
{...field}
|
||||
placeholder="https://example.com/your-auth-verifier"
|
||||
/>
|
||||
</FormControl>
|
||||
<FormDescription>
|
||||
Enter the URL of your server where we will send the user payload
|
||||
for verification
|
||||
</FormDescription>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
|
||||
<div>
|
||||
<Label className="mb-3 inline-block">Custom Headers</Label>
|
||||
<div className="flex flex-col gap-4">
|
||||
{customHeaderFields.fields.map((field, customHeaderIdx) => {
|
||||
return (
|
||||
<div className="flex gap-4" key={field.id}>
|
||||
<Input
|
||||
placeholder="Name"
|
||||
type="text"
|
||||
{...form.register(
|
||||
`customAuthEndpoint.customHeaders.${customHeaderIdx}.key`,
|
||||
)}
|
||||
/>
|
||||
<Input
|
||||
placeholder="Value"
|
||||
type="text"
|
||||
{...form.register(
|
||||
`customAuthEndpoint.customHeaders.${customHeaderIdx}.value`,
|
||||
)}
|
||||
/>
|
||||
<Button
|
||||
variant="outline"
|
||||
aria-label="Remove header"
|
||||
onClick={() => {
|
||||
customHeaderFields.remove(customHeaderIdx);
|
||||
}}
|
||||
className="!w-auto px-3"
|
||||
>
|
||||
<Trash2Icon className="size-4 shrink-0 text-destructive-text" />
|
||||
</Button>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
|
||||
<Button
|
||||
variant="outline"
|
||||
className="w-full gap-2 bg-background"
|
||||
onClick={() => {
|
||||
customHeaderFields.append({
|
||||
key: "",
|
||||
value: "",
|
||||
});
|
||||
}}
|
||||
>
|
||||
<PlusIcon className="size-4" />
|
||||
Add header
|
||||
</Button>
|
||||
</div>
|
||||
</AdvancedConfigurationContainer>
|
||||
|
||||
<p className="mt-3 text-muted-foreground text-sm">
|
||||
Set custom headers to be sent along the request with the payload to
|
||||
the authentication endpoint above. This can be used to verify the
|
||||
incoming requests
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.*
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/versions
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# env files (can opt-in for committing if needed)
|
||||
.env*
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
@@ -0,0 +1,36 @@
|
||||
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
||||
|
||||
## Getting Started
|
||||
|
||||
First, run the development server:
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# or
|
||||
yarn dev
|
||||
# or
|
||||
pnpm dev
|
||||
# or
|
||||
bun dev
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||
|
||||
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||
|
||||
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||
|
||||
## Learn More
|
||||
|
||||
To learn more about Next.js, take a look at the following resources:
|
||||
|
||||
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||
|
||||
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||
|
||||
## Deploy on Vercel
|
||||
|
||||
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||
|
||||
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||
@@ -0,0 +1,16 @@
|
||||
import { dirname } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { FlatCompat } from "@eslint/eslintrc";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
});
|
||||
|
||||
const eslintConfig = [
|
||||
...compat.extends("next/core-web-vitals", "next/typescript"),
|
||||
];
|
||||
|
||||
export default eslintConfig;
|
||||
@@ -0,0 +1,28 @@
|
||||
import type { NextConfig } from "next";
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
/* config options here */
|
||||
async headers() {
|
||||
return [
|
||||
{
|
||||
source: "/api/request",
|
||||
headers: [
|
||||
{
|
||||
key: "Access-Control-Allow-Origin",
|
||||
value: "*", // Set your origin
|
||||
},
|
||||
{
|
||||
key: "Access-Control-Allow-Methods",
|
||||
value: "GET, POST, PUT, DELETE, OPTIONS",
|
||||
},
|
||||
{
|
||||
key: "Access-Control-Allow-Headers",
|
||||
value: "Content-Type, Authorization",
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
},
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "thirdweb-login",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"preinstall": "npx only-allow pnpm",
|
||||
"dev": "next dev --turbopack",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"format": "biome format ./src --write",
|
||||
"lint": "biome check ./src && knip && eslint ./src",
|
||||
"fix": "biome check ./src --fix && eslint ./src --fix",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"knip": "knip"
|
||||
},
|
||||
"dependencies": {
|
||||
"next": "15.1.6",
|
||||
"react": "19.0.0",
|
||||
"react-dom": "19.0.0",
|
||||
"thirdweb": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/eslintrc": "^3",
|
||||
"@types/node": "22.10.10",
|
||||
"@types/react": "19.0.8",
|
||||
"@types/react-dom": "19.0.3",
|
||||
"eslint": "^9",
|
||||
"eslint-config-next": "15.1.6",
|
||||
"postcss": "8.5.1",
|
||||
"tailwindcss": "3.4.17",
|
||||
"typescript": "5.7.3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
/** @type {import('postcss-load-config').Config} */
|
||||
const config = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
@@ -0,0 +1,125 @@
|
||||
// biome-ignore lint/complexity/useArrowFunction: This is a self-executing function, we do not want to use an arrow function here.
|
||||
(function () {
|
||||
const globalSetup = getSetup();
|
||||
|
||||
const USER_ADDRESS_KEY = "tw.login:userAddress";
|
||||
const SESSION_KEY_ADDRESS_KEY = "tw.login:sessionKeyAddress";
|
||||
const CODE_KEY = "tw.login:code";
|
||||
|
||||
function main() {
|
||||
// check if redirected first, this sets up the logged in state if it was from redirect
|
||||
const params = parseURLHash(new URL(window.location));
|
||||
if (params && params.code === localStorage.getItem(CODE_KEY)) {
|
||||
// reset the URL hash
|
||||
window.location.hash = "";
|
||||
// reset the code
|
||||
localStorage.setItem(CODE_KEY, params.code);
|
||||
// write the userAddress to local storage
|
||||
localStorage.setItem(USER_ADDRESS_KEY, params.userAddress);
|
||||
// write the sessionKeyAddress to local storage
|
||||
localStorage.setItem(SESSION_KEY_ADDRESS_KEY, params.sessionKeyAddress);
|
||||
}
|
||||
|
||||
const userAddress = localStorage.getItem(USER_ADDRESS_KEY);
|
||||
const sessionKeyAddress = localStorage.getItem(SESSION_KEY_ADDRESS_KEY);
|
||||
|
||||
if (userAddress && sessionKeyAddress) {
|
||||
// handle logged in state
|
||||
handleIsLoggedIn();
|
||||
} else {
|
||||
// handle not logged in state
|
||||
handleNotLoggedIn();
|
||||
}
|
||||
}
|
||||
|
||||
function handleIsLoggedIn() {
|
||||
console.log("handleIsLoggedIn");
|
||||
|
||||
window.thirdweb = {
|
||||
isLoggedIn: true,
|
||||
getAddress: () => getAddress(),
|
||||
logout: () => {
|
||||
window.localStorage.removeItem(USER_ADDRESS_KEY);
|
||||
window.localStorage.removeItem(SESSION_KEY_ADDRESS_KEY);
|
||||
window.location.reload();
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function handleNotLoggedIn() {
|
||||
window.thirdweb = { login: onLogin, isLoggedIn: false };
|
||||
}
|
||||
|
||||
function onLogin() {
|
||||
const code = window.crypto.getRandomValues(new Uint8Array(4)).join("");
|
||||
localStorage.setItem(CODE_KEY, code);
|
||||
// redirect to the login page
|
||||
const redirect = new URL(globalSetup.baseUrl);
|
||||
redirect.searchParams.set("code", code);
|
||||
redirect.searchParams.set("clientId", globalSetup.clientId);
|
||||
redirect.searchParams.set("redirect", window.location.href);
|
||||
window.location.href = redirect.href;
|
||||
}
|
||||
|
||||
function getAddress() {
|
||||
return localStorage.getItem(USER_ADDRESS_KEY);
|
||||
}
|
||||
|
||||
// utils
|
||||
function getSetup() {
|
||||
const el = document.currentScript;
|
||||
if (!el) {
|
||||
throw new Error("Could not find script element");
|
||||
}
|
||||
const baseUrl = new URL(el.src).origin;
|
||||
const dataset = el.dataset;
|
||||
const clientId = dataset.clientId;
|
||||
if (!clientId) {
|
||||
throw new Error("Missing client-id");
|
||||
}
|
||||
return { clientId, baseUrl };
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {URL} url
|
||||
* @returns null | { [key: string]: string }
|
||||
*/
|
||||
function parseURLHash(url) {
|
||||
if (!url.hash) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return decodeHash(url.hash);
|
||||
} catch {
|
||||
// if this fails, invalid data -> return null
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Decodes a URL hash string to extract the three keys.
|
||||
*
|
||||
* @param {string} hash - A string like "#eyJrZXkxIjoiVmFsdWU..."
|
||||
* @returns {{ userAddress: string, sessionKeyAddress: string, code: string }} An object with the three keys
|
||||
*/
|
||||
function decodeHash(hash) {
|
||||
// Remove the "#" prefix, if present.
|
||||
const base64Data = hash.startsWith("#") ? hash.slice(1) : hash;
|
||||
|
||||
// Decode the Base64 string, then parse the JSON.
|
||||
const jsonString = atob(base64Data);
|
||||
const data = JSON.parse(jsonString);
|
||||
|
||||
// data should have the shape { userAddress, sessionKeyAddress, code }.
|
||||
if (
|
||||
"userAddress" in data &&
|
||||
"sessionKeyAddress" in data &&
|
||||
"code" in data
|
||||
) {
|
||||
return data;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
main();
|
||||
})();
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
!function(){const e=function e(){const t=document.currentScript;if(!t)throw Error("Could not find script element");const s=new URL(t.src).origin,n=t.dataset,r=n.clientId;if(!r)throw Error("Missing client-id");return{clientId:r,baseUrl:s}}(),t="tw.login:userAddress",s="tw.login:sessionKeyAddress",n="tw.login:code";function r(){const t=window.crypto.getRandomValues(new Uint8Array(4)).join("");localStorage.setItem(n,t);const s=new URL(e.baseUrl);s.searchParams.set("code",t),s.searchParams.set("clientId",e.clientId),s.searchParams.set("redirect",window.location.href),window.location.href=s.href}!function e(){const o=function e(t){if(!t.hash)return null;try{return function e(t){const s=t.startsWith("#")?t.slice(1):t,n=atob(s),r=JSON.parse(n);return"userAddress"in r&&"sessionKeyAddress"in r&&"code"in r?r:null}(t.hash)}catch{return null}}(new URL(window.location));o&&o.code===localStorage.getItem(n)&&(window.location.hash="",localStorage.setItem(n,o.code),localStorage.setItem(t,o.userAddress),localStorage.setItem(s,o.sessionKeyAddress));const i=localStorage.getItem(t),l=localStorage.getItem(s);i&&l?(console.log("handleIsLoggedIn"),window.thirdweb={isLoggedIn:!0,getAddress:()=>localStorage.getItem(t),logout(){window.localStorage.removeItem(t),window.localStorage.removeItem(s),window.location.reload()}}):window.thirdweb={login:r,isLoggedIn:!1}}()}();
|
||||
@@ -0,0 +1,36 @@
|
||||
import { type NextRequest, NextResponse } from "next/server";
|
||||
|
||||
export const POST = async (req: NextRequest) => {
|
||||
const body = await req.json();
|
||||
const userAddress = body.userAddress;
|
||||
const sessionKeyAddress = body.sessionKeyAddress;
|
||||
if (!userAddress || !sessionKeyAddress) {
|
||||
return NextResponse.json(
|
||||
{
|
||||
message: "Missing userAddress or sessionKeyAddress",
|
||||
},
|
||||
{ status: 400 },
|
||||
);
|
||||
}
|
||||
const url = `${ENGINE_URL}/contract/84532/0x638263e3eAa3917a53630e61B1fBa685308024fa/erc1155/claim-to`;
|
||||
|
||||
console.log("url", url);
|
||||
|
||||
const res = await fetch(url, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
authorization: `Bearer ${ACCESS_TOKEN}`,
|
||||
"x-account-address": userAddress,
|
||||
"x-backend-wallet-address": sessionKeyAddress,
|
||||
"content-type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
receiver: userAddress,
|
||||
tokenId: "0",
|
||||
quantity: "1",
|
||||
}),
|
||||
});
|
||||
const data = await res.json();
|
||||
|
||||
return NextResponse.json(data, { status: res.status });
|
||||
};
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,163 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
html {
|
||||
/* scroll-behavior: smooth; */
|
||||
font-feature-settings: "cv02", "cv03", "cv04", "cv11";
|
||||
font-feature-settings: "rlig" 1, "calt" 0;
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
font-variation-settings: normal;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
@layer base {
|
||||
:root {
|
||||
--radius: 0.5rem;
|
||||
--sticky-top-height: 70px;
|
||||
}
|
||||
|
||||
:root,
|
||||
[data-theme="dark"] {
|
||||
/* bg - neutral */
|
||||
--background: 0 0% 0%;
|
||||
--card: 0 0% 3.92%;
|
||||
--popover: 0 0% 0%;
|
||||
--secondary: 0 0% 11%;
|
||||
--muted: 0 0% 11%;
|
||||
--accent: 0 0% 11%;
|
||||
--inverted: 0 0% 100%;
|
||||
|
||||
/* bg - colorful */
|
||||
--primary: 221 83% 54%;
|
||||
--destructive: 360 72% 51%;
|
||||
|
||||
/* Text */
|
||||
--foreground: 0 0% 98%;
|
||||
--card-foreground: 0 0% 98%;
|
||||
--popover-foreground: 0 0% 98%;
|
||||
--primary-foreground: 0 0% 100%;
|
||||
--secondary-foreground: 0 0% 98%;
|
||||
--muted-foreground: 0 0% 63%;
|
||||
--accent-foreground: 0 0% 98%;
|
||||
--destructive-foreground: 0 0% 100%;
|
||||
--link-foreground: 215.88 100% 65%;
|
||||
--warning-text: 38 92% 50%;
|
||||
--destructive-text: 360 72% 55%;
|
||||
--success-text: 142 75% 50%;
|
||||
--inverted-foreground: 0 0% 0%;
|
||||
|
||||
/* Borders */
|
||||
--border: 0 0% 15%;
|
||||
--active-border: 0 0% 22%;
|
||||
--ring: 0 0% 30%;
|
||||
--input: 0 0% 15%;
|
||||
}
|
||||
|
||||
[data-theme="light"] {
|
||||
/* bg - neutral */
|
||||
--background: 0 0% 98%;
|
||||
--popover: 0 0% 100%;
|
||||
--card: 0 0% 100%;
|
||||
--secondary: 0 0% 90%;
|
||||
--muted: 0 0% 93%;
|
||||
--accent: 0 0% 93%;
|
||||
--inverted: 0 0 0%;
|
||||
|
||||
/* bg - colorful */
|
||||
--primary: 221 83% 54%;
|
||||
--destructive: 360 72% 51%;
|
||||
|
||||
/* Text */
|
||||
--foreground: 0 0% 4%;
|
||||
--card-foreground: 0 0% 4%;
|
||||
--popover-foreground: 240 10% 4%;
|
||||
--primary-foreground: 0 0% 100%;
|
||||
--secondary-foreground: 0 0% 4%;
|
||||
--muted-foreground: 0 0% 40%;
|
||||
--accent-foreground: 0 0% 9%;
|
||||
--destructive-foreground: 0 0% 100%;
|
||||
--inverted-foreground: 0 0% 100%;
|
||||
--link-foreground: 221.21deg 83.19% 53.33%;
|
||||
--success-text: 142.09 70.56% 35.29%;
|
||||
--warning-text: 38 92% 40%;
|
||||
--destructive-text: 357.15deg 100% 68.72%;
|
||||
|
||||
/* Borders */
|
||||
--border: 0 0% 85%;
|
||||
--active-border: 0 0% 70%;
|
||||
--input: 0 0% 85%;
|
||||
--ring: 0 0% 80%;
|
||||
}
|
||||
}
|
||||
|
||||
/* If no data-theme is added in body, its in dark theme */
|
||||
body:not([data-theme="light"]) .light-only {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[data-theme="light"] .dark-only {
|
||||
display: none;
|
||||
}
|
||||
|
||||
code span {
|
||||
color: var(--code-dark-color);
|
||||
}
|
||||
|
||||
body[data-theme="light"] code span {
|
||||
color: var(--code-light-color);
|
||||
}
|
||||
|
||||
/* @layer base {
|
||||
* {
|
||||
@apply border-border;
|
||||
}
|
||||
body {
|
||||
@apply bg-background text-foreground;
|
||||
}
|
||||
} */
|
||||
|
||||
.styled-scrollbar::-webkit-scrollbar {
|
||||
width: 0.5rem;
|
||||
height: 0.5rem;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.styled-scrollbar::-webkit-scrollbar {
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.styled-scrollbar::-webkit-scrollbar-thumb {
|
||||
border-radius: 0.5rem;
|
||||
transition: color 200ms ease;
|
||||
background: var(--border);
|
||||
}
|
||||
|
||||
.styled-scrollbar::-webkit-scrollbar-thumb:hover {
|
||||
background: hsl(var(--foreground));
|
||||
}
|
||||
|
||||
.styled-scrollbar::-webkit-scrollbar-track {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
button {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: hsl(var(--foreground));
|
||||
color: hsl(var(--background));
|
||||
}
|
||||
|
||||
.hide-scrollbar {
|
||||
scrollbar-width: none; /* Firefox */
|
||||
}
|
||||
|
||||
.hide-scrollbar::-webkit-scrollbar {
|
||||
display: none; /* Safari and Chrome */
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Fira_Code, Inter } from "next/font/google";
|
||||
import { Suspense } from "react";
|
||||
|
||||
import "./globals.css";
|
||||
import { Providers } from "./providers";
|
||||
|
||||
const sansFont = Inter({
|
||||
subsets: ["latin"],
|
||||
variable: "--font-sans",
|
||||
weight: "variable",
|
||||
});
|
||||
|
||||
const monoFont = Fira_Code({
|
||||
subsets: ["latin"],
|
||||
variable: "--font-mono",
|
||||
weight: "variable",
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "login with thirdweb",
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
return (
|
||||
<html lang="en" className="h-full w-full bg-black text-white">
|
||||
<body
|
||||
className={`${sansFont.variable} ${monoFont.variable} h-full w-full font-sans antialiased`}
|
||||
>
|
||||
<Providers>
|
||||
<Suspense>{children}</Suspense>
|
||||
</Providers>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
"use client";
|
||||
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import { createThirdwebClient, getContract } from "thirdweb";
|
||||
import { baseSepolia } from "thirdweb/chains";
|
||||
import { addSessionKey, isActiveSigner } from "thirdweb/extensions/erc4337";
|
||||
import {
|
||||
ConnectEmbed,
|
||||
TransactionButton,
|
||||
useActiveAccount,
|
||||
} from "thirdweb/react";
|
||||
import { isContractDeployed } from "thirdweb/utils";
|
||||
|
||||
const sesionKeySignerAddress = "0x6f700ba0258886411D2536399624EAa7158d1742";
|
||||
|
||||
const client = createThirdwebClient({
|
||||
clientId: "e9ba48c289e0cc3d06a23bfd370cc111",
|
||||
});
|
||||
|
||||
export default function Page() {
|
||||
const account = useActiveAccount();
|
||||
|
||||
const searchParams = useSearchParams();
|
||||
const code = searchParams.get("code");
|
||||
const clientId = searchParams.get("clientId");
|
||||
const redirect = searchParams.get("redirect");
|
||||
|
||||
console.log({ code, clientId, redirect });
|
||||
|
||||
return (
|
||||
<div className="grid h-full w-full place-items-center">
|
||||
{account ? (
|
||||
<div className="flex flex-col gap-4 rounded-lg border border-gray-800 p-12">
|
||||
<h1 className="font-bold text-3xl">Grant Permissions</h1>
|
||||
<p>
|
||||
<strong>App.xyz</strong> is asking you to grant it the following
|
||||
permissions:
|
||||
</p>
|
||||
<ul>
|
||||
<li>✅ Receive your identity information.</li>
|
||||
<li>
|
||||
✅ Interact with <strong>all</strong> contracts on{" "}
|
||||
<strong>Base Sepolia</strong>
|
||||
</li>
|
||||
<li>
|
||||
✅ Spend <strong>all</strong> your funds on{" "}
|
||||
<strong>Base Sepolia</strong>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
By approving below you will grant <strong>App.xyz</strong> these
|
||||
permissions until <strong>02/02/2025</strong>.
|
||||
</p>
|
||||
<TransactionButton
|
||||
transaction={async () => {
|
||||
if (!account) {
|
||||
throw new Error("No account found");
|
||||
}
|
||||
const accountContract = getContract({
|
||||
address: account.address,
|
||||
// hard coded for now
|
||||
chain: baseSepolia,
|
||||
client,
|
||||
});
|
||||
let hasSesionKey = false;
|
||||
// check if already added
|
||||
const accountDeployed = await isContractDeployed(accountContract);
|
||||
if (accountDeployed) {
|
||||
hasSesionKey = await isActiveSigner({
|
||||
contract: accountContract,
|
||||
signer: sesionKeySignerAddress,
|
||||
});
|
||||
}
|
||||
// if not added, send tx to add the session key
|
||||
if (!hasSesionKey) {
|
||||
return addSessionKey({
|
||||
account,
|
||||
contract: accountContract,
|
||||
sessionKeyAddress: sesionKeySignerAddress,
|
||||
// hard coded for now
|
||||
permissions: { approvedTargets: "*" },
|
||||
});
|
||||
}
|
||||
throw "already-added";
|
||||
}}
|
||||
onError={(e) => {
|
||||
if (typeof e === "string" && e === "already-added") {
|
||||
// redirect back to the app
|
||||
window.location.href = `${redirect}${encodeHash(
|
||||
account.address,
|
||||
sesionKeySignerAddress,
|
||||
code || "",
|
||||
)}`;
|
||||
} else {
|
||||
console.error(e);
|
||||
}
|
||||
}}
|
||||
onTransactionConfirmed={() => {
|
||||
// redirect back to the app
|
||||
window.location.href = `${redirect}${encodeHash(
|
||||
account.address,
|
||||
sesionKeySignerAddress,
|
||||
code || "",
|
||||
)}`;
|
||||
}}
|
||||
>
|
||||
Approve
|
||||
</TransactionButton>
|
||||
</div>
|
||||
) : (
|
||||
<ConnectEmbed
|
||||
client={client}
|
||||
accountAbstraction={{ chain: baseSepolia, sponsorGas: true }}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function encodeHash(
|
||||
userAddress: string,
|
||||
sessionKeyAddress: string,
|
||||
code: string,
|
||||
) {
|
||||
// Create an object with the three keys.
|
||||
const data = { userAddress, sessionKeyAddress, code };
|
||||
|
||||
// Convert to JSON and then Base64-encode the result.
|
||||
const jsonString = JSON.stringify(data);
|
||||
const base64Data = btoa(jsonString);
|
||||
|
||||
// Return as a hash string (with the "#" prefix).
|
||||
return `#${base64Data}`;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
"use client";
|
||||
|
||||
import { ThirdwebProvider } from "thirdweb/react";
|
||||
|
||||
export const Providers = ({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) => {
|
||||
return <ThirdwebProvider>{children}</ThirdwebProvider>;
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
import type { Config } from "tailwindcss";
|
||||
|
||||
export default {
|
||||
content: [
|
||||
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
|
||||
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
|
||||
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
|
||||
],
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
background: "var(--background)",
|
||||
foreground: "var(--foreground)",
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
} satisfies Config;
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2017",
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"noEmit": true,
|
||||
"esModuleInterop": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve",
|
||||
"incremental": true,
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
}
|
||||
],
|
||||
"paths": {
|
||||
"@/*": ["./src/*"]
|
||||
}
|
||||
},
|
||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
+2
-2
@@ -12,9 +12,9 @@
|
||||
},
|
||||
"scripts": {
|
||||
"preinstall": "npx only-allow pnpm",
|
||||
"lint": "pnpm dlx sherif@latest -i remark-gfm && turbo run lint",
|
||||
"lint": "pnpm dlx sherif@latest -i remark-gfm -i eslint && turbo run lint",
|
||||
"storybook:react": "turbo run storybook --filter=./packages/*",
|
||||
"prefix": "pnpm dlx sherif@latest -i remark-gfm --fix",
|
||||
"prefix": "pnpm dlx sherif@latest -i remark-gfm -i eslint --fix",
|
||||
"fix": "turbo run fix",
|
||||
"wallet-ui": "turbo run dev --filter=./apps/wallet-ui --filter=./packages/thirdweb",
|
||||
"wallet-ui:build": "turbo run build --filter=./apps/wallet-ui --filter=./packages/thirdweb",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @thirdweb-dev/service-utils
|
||||
|
||||
## 0.8.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#6121](https://github.com/thirdweb-dev/js/pull/6121) [`6ed2fd1`](https://github.com/thirdweb-dev/js/commit/6ed2fd13de1638bcf1c28fd4fdbeb00c0d449994) Thanks [@arcoraven](https://github.com/arcoraven)! - [service-utils] import LZ4 codec
|
||||
|
||||
- [#6120](https://github.com/thirdweb-dev/js/pull/6120) [`a22457a`](https://github.com/thirdweb-dev/js/commit/a22457a69cc6667ac13599d10ebddc41ceafa0ff) Thanks [@arcoraven](https://github.com/arcoraven)! - [service-utils] Expose kafkajs config
|
||||
|
||||
## 0.8.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/service-utils",
|
||||
"version": "0.8.2",
|
||||
"version": "0.8.3",
|
||||
"type": "module",
|
||||
"main": "dist/cjs/index.js",
|
||||
"module": "dist/esm/index.js",
|
||||
@@ -47,6 +47,7 @@
|
||||
"dependencies": {
|
||||
"aws4fetch": "1.0.20",
|
||||
"kafkajs": "2.2.4",
|
||||
"kafkajs-lz4": "2.0.0-beta.0",
|
||||
"zod": "3.24.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
import { randomUUID } from "node:crypto";
|
||||
import { checkServerIdentity } from "node:tls";
|
||||
import { Kafka, type Producer } from "kafkajs";
|
||||
import {
|
||||
CompressionTypes,
|
||||
Kafka,
|
||||
type Producer,
|
||||
type ProducerConfig,
|
||||
} from "kafkajs";
|
||||
import LZ4Codec from "kafkajs-lz4";
|
||||
import type { ServiceName } from "../core/services.js";
|
||||
import { type UsageV2Event, getTopicName } from "../core/usageV2.js";
|
||||
|
||||
// Import KafkaJS with CJS pattern (source: https://github.com/tulios/kafkajs/issues/1391)
|
||||
import KafkaJS from "kafkajs";
|
||||
const { CompressionCodecs } = KafkaJS;
|
||||
|
||||
/**
|
||||
* Creates a UsageV2Producer which opens a persistent TCP connection.
|
||||
* This class is thread-safe so your service should re-use one instance.
|
||||
@@ -21,6 +31,7 @@ export class UsageV2Producer {
|
||||
private kafka: Kafka;
|
||||
private producer: Producer | null = null;
|
||||
private topic: string;
|
||||
private compression: CompressionTypes;
|
||||
|
||||
constructor(config: {
|
||||
/**
|
||||
@@ -35,14 +46,27 @@ export class UsageV2Producer {
|
||||
* The product "source" where usage is coming from.
|
||||
*/
|
||||
productName: ServiceName;
|
||||
/**
|
||||
* The compression algorithm to use.
|
||||
*/
|
||||
compression?: CompressionTypes;
|
||||
|
||||
username: string;
|
||||
password: string;
|
||||
}) {
|
||||
const {
|
||||
producerName,
|
||||
environment,
|
||||
productName,
|
||||
compression = CompressionTypes.LZ4,
|
||||
username,
|
||||
password,
|
||||
} = config;
|
||||
|
||||
this.kafka = new Kafka({
|
||||
clientId: `${config.producerName}-${config.environment}`,
|
||||
clientId: `${producerName}-${environment}`,
|
||||
brokers:
|
||||
config.environment === "production"
|
||||
environment === "production"
|
||||
? ["warpstream.thirdweb.xyz:9092"]
|
||||
: ["warpstream-dev.thirdweb.xyz:9092"],
|
||||
ssl: {
|
||||
@@ -52,21 +76,27 @@ export class UsageV2Producer {
|
||||
},
|
||||
sasl: {
|
||||
mechanism: "plain",
|
||||
username: config.username,
|
||||
password: config.password,
|
||||
username,
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
this.topic = getTopicName(config.productName);
|
||||
this.topic = getTopicName(productName);
|
||||
this.compression = compression;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect the producer.
|
||||
* This must be called before calling `sendEvents()`.
|
||||
*/
|
||||
async init() {
|
||||
async init(configOverrides?: ProducerConfig) {
|
||||
if (this.compression === CompressionTypes.LZ4) {
|
||||
CompressionCodecs[CompressionTypes.LZ4] = new LZ4Codec().codec;
|
||||
}
|
||||
|
||||
this.producer = this.kafka.producer({
|
||||
allowAutoTopicCreation: false,
|
||||
...configOverrides,
|
||||
});
|
||||
await this.producer.connect();
|
||||
}
|
||||
@@ -81,7 +111,16 @@ export class UsageV2Producer {
|
||||
*
|
||||
* @param events - The events to send.
|
||||
*/
|
||||
async sendEvents(events: UsageV2Event[]): Promise<void> {
|
||||
async sendEvents(
|
||||
events: UsageV2Event[],
|
||||
/**
|
||||
* Reference: https://kafka.js.org/docs/producing#producing-messages
|
||||
*/
|
||||
configOverrides?: {
|
||||
acks?: number;
|
||||
timeout?: number;
|
||||
},
|
||||
): Promise<void> {
|
||||
if (!this.producer) {
|
||||
throw new Error("Producer not initialized. Call `init()` first.");
|
||||
}
|
||||
@@ -103,6 +142,10 @@ export class UsageV2Producer {
|
||||
messages: parsedEvents.map((event) => ({
|
||||
value: JSON.stringify(event),
|
||||
})),
|
||||
acks: -1, // All brokers must acknowledge
|
||||
timeout: 10_000, // 10 seconds
|
||||
compression: this.compression,
|
||||
...configOverrides,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @thirdweb-dev/wagmi-adapter
|
||||
|
||||
## 0.2.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#6117](https://github.com/thirdweb-dev/js/pull/6117) [`ae675db`](https://github.com/thirdweb-dev/js/commit/ae675db8c86a9e4cddb6eb208cd132e0eeaa1978) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Fixes getProvider autoconnections with account factory
|
||||
|
||||
## 0.2.10
|
||||
|
||||
## 0.2.9
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/wagmi-adapter",
|
||||
"version": "0.2.10",
|
||||
"version": "0.2.11",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/thirdweb-dev/js.git#main"
|
||||
|
||||
@@ -148,7 +148,9 @@ export function inAppWalletConnector(
|
||||
},
|
||||
getProvider: async (params) => {
|
||||
const lastChainId = await config.storage?.getItem("tw.lastChainId");
|
||||
const chain = defineChain(params?.chainId || lastChainId || 1);
|
||||
const chain = defineChain(
|
||||
params?.chainId || args.smartAccount?.chain?.id || lastChainId || 1,
|
||||
);
|
||||
if (!wallet.getAccount()) {
|
||||
const { autoConnect } = await import("thirdweb/wallets");
|
||||
await autoConnect({
|
||||
|
||||
Generated
+536
@@ -411,6 +411,49 @@ importers:
|
||||
specifier: 5.7.3
|
||||
version: 5.7.3
|
||||
|
||||
apps/login:
|
||||
dependencies:
|
||||
next:
|
||||
specifier: 15.1.6
|
||||
version: 15.1.6(@babel/[email protected])(@opentelemetry/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected])
|
||||
react:
|
||||
specifier: 19.0.0
|
||||
version: 19.0.0
|
||||
react-dom:
|
||||
specifier: 19.0.0
|
||||
version: 19.0.0([email protected])
|
||||
thirdweb:
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/thirdweb
|
||||
devDependencies:
|
||||
'@eslint/eslintrc':
|
||||
specifier: ^3
|
||||
version: 3.2.0
|
||||
'@types/node':
|
||||
specifier: 22.10.10
|
||||
version: 22.10.10
|
||||
'@types/react':
|
||||
specifier: 19.0.8
|
||||
version: 19.0.8
|
||||
'@types/react-dom':
|
||||
specifier: 19.0.3
|
||||
version: 19.0.3(@types/[email protected])
|
||||
eslint:
|
||||
specifier: ^9
|
||||
version: 9.19.0([email protected])
|
||||
eslint-config-next:
|
||||
specifier: 15.1.6
|
||||
version: 15.1.6([email protected]([email protected]))([email protected])
|
||||
postcss:
|
||||
specifier: 8.5.1
|
||||
version: 8.5.1
|
||||
tailwindcss:
|
||||
specifier: 3.4.17
|
||||
version: 3.4.17([email protected](@swc/[email protected](@swc/[email protected]))(@types/[email protected])([email protected]))
|
||||
typescript:
|
||||
specifier: 5.7.3
|
||||
version: 5.7.3
|
||||
|
||||
apps/playground-web:
|
||||
dependencies:
|
||||
'@abstract-foundation/agw-client':
|
||||
@@ -891,6 +934,9 @@ importers:
|
||||
kafkajs:
|
||||
specifier: 2.2.4
|
||||
version: 2.2.4
|
||||
kafkajs-lz4:
|
||||
specifier: 2.0.0-beta.0
|
||||
version: 2.0.0-beta.0
|
||||
zod:
|
||||
specifier: 3.24.1
|
||||
version: 3.24.1
|
||||
@@ -2919,14 +2965,38 @@ packages:
|
||||
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
|
||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@ethereumjs/[email protected]':
|
||||
resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==}
|
||||
|
||||
@@ -3171,6 +3241,14 @@ packages:
|
||||
peerDependencies:
|
||||
react-hook-form: ^7.0.0
|
||||
|
||||
'@humanfs/[email protected]':
|
||||
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
|
||||
engines: {node: '>=18.18.0'}
|
||||
|
||||
'@humanfs/[email protected]':
|
||||
resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
|
||||
engines: {node: '>=18.18.0'}
|
||||
|
||||
'@humanwhocodes/[email protected]':
|
||||
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
|
||||
engines: {node: '>=10.10.0'}
|
||||
@@ -3184,6 +3262,14 @@ packages:
|
||||
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
|
||||
deprecated: Use @eslint/object-schema instead
|
||||
|
||||
'@humanwhocodes/[email protected]':
|
||||
resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
|
||||
engines: {node: '>=18.18'}
|
||||
|
||||
'@humanwhocodes/[email protected]':
|
||||
resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
|
||||
engines: {node: '>=18.18'}
|
||||
|
||||
'@img/[email protected]':
|
||||
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
@@ -6856,6 +6942,10 @@ packages:
|
||||
engines: {'0': node >= 0.8.0}
|
||||
hasBin: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -7402,6 +7492,10 @@ packages:
|
||||
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -7609,6 +7703,9 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
|
||||
|
||||
@@ -7642,6 +7739,10 @@ packages:
|
||||
react: ^18 || ^19 || ^19.0.0-rc
|
||||
react-dom: ^18 || ^19 || ^19.0.0-rc
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
||||
|
||||
@@ -8611,6 +8712,10 @@ packages:
|
||||
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
@@ -8625,6 +8730,20 @@ packages:
|
||||
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
|
||||
hasBin: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
jiti: '*'
|
||||
peerDependenciesMeta:
|
||||
jiti:
|
||||
optional: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
@@ -8988,6 +9107,10 @@ packages:
|
||||
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
|
||||
engines: {node: ^10.12.0 || >=12.0.0}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==}
|
||||
engines: {node: '>= 12'}
|
||||
@@ -9057,6 +9180,10 @@ packages:
|
||||
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
|
||||
engines: {node: ^10.12.0 || >=12.0.0}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -9326,6 +9453,10 @@ packages:
|
||||
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@@ -9675,6 +9806,10 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==}
|
||||
engines: {node: '>=12.22.0'}
|
||||
@@ -9796,6 +9931,10 @@ packages:
|
||||
resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -10219,6 +10358,10 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-uWnO/NtXVNGvKPyjMOQnPrPiMS5XJMqDRBq8xmRivanXTxPdZ/yIUZU31Wo8ySAadTPIx4enxCVmCf61+CyQXQ==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@@ -10264,6 +10407,10 @@ packages:
|
||||
resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
|
||||
engines: {node: '>=14.16'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -10559,6 +10706,10 @@ packages:
|
||||
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
|
||||
hasBin: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-1i6ycr3lLNMiV9qjHn4OwaDRR3hxHhVTxAmX2W7PiWITJym6im6vCD7/201RoBIfsN9Rw+XUMdJx9l5KJaXnnA==}
|
||||
hasBin: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -11548,6 +11699,10 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ==}
|
||||
engines: {node: '>=18.18'}
|
||||
@@ -11691,6 +11846,10 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@@ -13428,6 +13587,10 @@ packages:
|
||||
resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -13475,6 +13638,10 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -14678,6 +14845,11 @@ packages:
|
||||
resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==}
|
||||
engines: {node: '>= 0.10.0'}
|
||||
hasBin: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==}
|
||||
|
||||
@@ -14697,6 +14869,10 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -14807,6 +14983,9 @@ packages:
|
||||
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
|
||||
engines: {node: '>=0.4'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
|
||||
|
||||
@@ -14845,6 +15024,9 @@ packages:
|
||||
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==}
|
||||
engines: {node: '>=4.0.0'}
|
||||
@@ -17542,8 +17724,25 @@ snapshots:
|
||||
eslint: 8.57.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@eslint-community/[email protected]([email protected]([email protected]))':
|
||||
dependencies:
|
||||
eslint: 9.19.0([email protected])
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@eslint-community/[email protected]': {}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
dependencies:
|
||||
'@eslint/object-schema': 2.1.5
|
||||
debug: 4.4.0([email protected])
|
||||
minimatch: 3.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint/[email protected]':
|
||||
dependencies:
|
||||
'@types/json-schema': 7.0.15
|
||||
|
||||
'@eslint/[email protected]':
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
@@ -17558,8 +17757,31 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint/[email protected]':
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
debug: 4.4.0([email protected])
|
||||
espree: 10.3.0
|
||||
globals: 14.0.0
|
||||
ignore: 5.3.2
|
||||
import-fresh: 3.3.0
|
||||
js-yaml: 4.1.0
|
||||
minimatch: 3.1.2
|
||||
strip-json-comments: 3.1.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint/[email protected]': {}
|
||||
|
||||
'@eslint/[email protected]': {}
|
||||
|
||||
'@eslint/[email protected]': {}
|
||||
|
||||
'@eslint/[email protected]':
|
||||
dependencies:
|
||||
'@eslint/core': 0.10.0
|
||||
levn: 0.4.1
|
||||
|
||||
'@ethereumjs/[email protected]':
|
||||
dependencies:
|
||||
'@ethereumjs/util': 9.1.0
|
||||
@@ -18232,6 +18454,13 @@ snapshots:
|
||||
dependencies:
|
||||
react-hook-form: 7.54.2([email protected])
|
||||
|
||||
'@humanfs/[email protected]': {}
|
||||
|
||||
'@humanfs/[email protected]':
|
||||
dependencies:
|
||||
'@humanfs/core': 0.19.1
|
||||
'@humanwhocodes/retry': 0.3.1
|
||||
|
||||
'@humanwhocodes/[email protected]':
|
||||
dependencies:
|
||||
'@humanwhocodes/object-schema': 2.0.3
|
||||
@@ -18244,6 +18473,10 @@ snapshots:
|
||||
|
||||
'@humanwhocodes/[email protected]': {}
|
||||
|
||||
'@humanwhocodes/[email protected]': {}
|
||||
|
||||
'@humanwhocodes/[email protected]': {}
|
||||
|
||||
'@img/[email protected]':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-darwin-arm64': 1.0.4
|
||||
@@ -22971,6 +23204,24 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/[email protected](@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.12.1
|
||||
'@typescript-eslint/parser': 7.14.1([email protected]([email protected]))([email protected])
|
||||
'@typescript-eslint/scope-manager': 7.14.1
|
||||
'@typescript-eslint/type-utils': 7.14.1([email protected]([email protected]))([email protected])
|
||||
'@typescript-eslint/utils': 7.14.1([email protected]([email protected]))([email protected])
|
||||
'@typescript-eslint/visitor-keys': 7.14.1
|
||||
eslint: 9.19.0([email protected])
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.3.2
|
||||
natural-compare: 1.4.0
|
||||
ts-api-utils: 1.4.3([email protected])
|
||||
optionalDependencies:
|
||||
typescript: 5.7.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/[email protected]([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 7.14.1
|
||||
@@ -22984,6 +23235,19 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/[email protected]([email protected]([email protected]))([email protected])':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 7.14.1
|
||||
'@typescript-eslint/types': 7.14.1
|
||||
'@typescript-eslint/typescript-estree': 7.14.1([email protected])
|
||||
'@typescript-eslint/visitor-keys': 7.14.1
|
||||
debug: 4.4.0([email protected])
|
||||
eslint: 9.19.0([email protected])
|
||||
optionalDependencies:
|
||||
typescript: 5.7.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/[email protected]':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.14.1
|
||||
@@ -23006,6 +23270,18 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/[email protected]([email protected]([email protected]))([email protected])':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 7.14.1([email protected])
|
||||
'@typescript-eslint/utils': 7.14.1([email protected]([email protected]))([email protected])
|
||||
debug: 4.4.0([email protected])
|
||||
eslint: 9.19.0([email protected])
|
||||
ts-api-utils: 1.4.3([email protected])
|
||||
optionalDependencies:
|
||||
typescript: 5.7.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/[email protected]': {}
|
||||
|
||||
'@typescript-eslint/[email protected]': {}
|
||||
@@ -23067,6 +23343,17 @@ snapshots:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@typescript-eslint/[email protected]([email protected]([email protected]))([email protected])':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.1([email protected]([email protected]))
|
||||
'@typescript-eslint/scope-manager': 7.14.1
|
||||
'@typescript-eslint/types': 7.14.1
|
||||
'@typescript-eslint/typescript-estree': 7.14.1([email protected])
|
||||
eslint: 9.19.0([email protected])
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@typescript-eslint/[email protected]([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.1([email protected])
|
||||
@@ -24120,6 +24407,8 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -24778,6 +25067,8 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -25002,6 +25293,12 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
string-width: 1.0.2
|
||||
strip-ansi: 3.0.1
|
||||
wrap-ansi: 2.1.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
@@ -25040,6 +25337,8 @@ snapshots:
|
||||
- '@types/react'
|
||||
- '@types/react-dom'
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
color-name: 1.1.3
|
||||
@@ -26031,6 +26330,26 @@ snapshots:
|
||||
- eslint-plugin-import-x
|
||||
- supports-color
|
||||
|
||||
[email protected]([email protected]([email protected]))([email protected]):
|
||||
dependencies:
|
||||
'@next/eslint-plugin-next': 15.1.6
|
||||
'@rushstack/eslint-patch': 1.10.5
|
||||
'@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])
|
||||
'@typescript-eslint/parser': 7.14.1([email protected]([email protected]))([email protected])
|
||||
eslint: 9.19.0([email protected])
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 3.7.0([email protected])([email protected]([email protected]))
|
||||
eslint-plugin-import: 2.31.0(@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected]))
|
||||
eslint-plugin-jsx-a11y: 6.10.2([email protected]([email protected]))
|
||||
eslint-plugin-react: 7.37.4([email protected]([email protected]))
|
||||
eslint-plugin-react-hooks: 5.1.0([email protected]([email protected]))
|
||||
optionalDependencies:
|
||||
typescript: 5.7.3
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-webpack
|
||||
- eslint-plugin-import-x
|
||||
- supports-color
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
debug: 3.2.7
|
||||
@@ -26055,6 +26374,22 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected]([email protected])([email protected]([email protected])):
|
||||
dependencies:
|
||||
'@nolyfill/is-core-module': 1.0.39
|
||||
debug: 4.4.0([email protected])
|
||||
enhanced-resolve: 5.18.0
|
||||
eslint: 9.19.0([email protected])
|
||||
fast-glob: 3.3.3
|
||||
get-tsconfig: 4.10.0
|
||||
is-bun-module: 1.3.0
|
||||
is-glob: 4.0.3
|
||||
stable-hash: 0.0.4
|
||||
optionalDependencies:
|
||||
eslint-plugin-import: 2.31.0(@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected]))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected]([email protected]):
|
||||
dependencies:
|
||||
acorn: 8.14.0
|
||||
@@ -26087,6 +26422,17 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected])([email protected]([email protected])))([email protected]([email protected])):
|
||||
dependencies:
|
||||
debug: 3.2.7
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 7.14.1([email protected]([email protected]))([email protected])
|
||||
eslint: 9.19.0([email protected])
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 3.7.0([email protected])([email protected]([email protected]))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]):
|
||||
dependencies:
|
||||
'@rtsao/scc': 1.1.0
|
||||
@@ -26116,6 +26462,35 @@ snapshots:
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected])):
|
||||
dependencies:
|
||||
'@rtsao/scc': 1.1.0
|
||||
array-includes: 3.1.8
|
||||
array.prototype.findlastindex: 1.2.5
|
||||
array.prototype.flat: 1.3.3
|
||||
array.prototype.flatmap: 1.3.3
|
||||
debug: 3.2.7
|
||||
doctrine: 2.1.0
|
||||
eslint: 9.19.0([email protected])
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-module-utils: 2.12.0(@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected])([email protected]([email protected])))([email protected]([email protected]))
|
||||
hasown: 2.0.2
|
||||
is-core-module: 2.16.1
|
||||
is-glob: 4.0.3
|
||||
minimatch: 3.1.2
|
||||
object.fromentries: 2.0.8
|
||||
object.groupby: 1.0.3
|
||||
object.values: 1.2.1
|
||||
semver: 7.7.0
|
||||
string.prototype.trimend: 1.0.9
|
||||
tsconfig-paths: 3.15.0
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 7.14.1([email protected]([email protected]))([email protected])
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-typescript
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
|
||||
[email protected]([email protected]):
|
||||
dependencies:
|
||||
aria-query: 5.3.2
|
||||
@@ -26135,6 +26510,25 @@ snapshots:
|
||||
safe-regex-test: 1.1.0
|
||||
string.prototype.includes: 2.0.1
|
||||
|
||||
[email protected]([email protected]([email protected])):
|
||||
dependencies:
|
||||
aria-query: 5.3.2
|
||||
array-includes: 3.1.8
|
||||
array.prototype.flatmap: 1.3.3
|
||||
ast-types-flow: 0.0.8
|
||||
axe-core: 4.10.2
|
||||
axobject-query: 4.1.0
|
||||
damerau-levenshtein: 1.0.8
|
||||
emoji-regex: 9.2.2
|
||||
eslint: 9.19.0([email protected])
|
||||
hasown: 2.0.2
|
||||
jsx-ast-utils: 3.3.5
|
||||
language-tags: 1.0.9
|
||||
minimatch: 3.1.2
|
||||
object.fromentries: 2.0.8
|
||||
safe-regex-test: 1.1.0
|
||||
string.prototype.includes: 2.0.1
|
||||
|
||||
[email protected]([email protected]):
|
||||
dependencies:
|
||||
eslint: 8.57.0
|
||||
@@ -26173,6 +26567,10 @@ snapshots:
|
||||
dependencies:
|
||||
eslint: 8.57.0
|
||||
|
||||
[email protected]([email protected]([email protected])):
|
||||
dependencies:
|
||||
eslint: 9.19.0([email protected])
|
||||
|
||||
[email protected]([email protected]):
|
||||
dependencies:
|
||||
array-includes: 3.1.8
|
||||
@@ -26195,6 +26593,28 @@ snapshots:
|
||||
string.prototype.matchall: 4.0.12
|
||||
string.prototype.repeat: 1.0.0
|
||||
|
||||
[email protected]([email protected]([email protected])):
|
||||
dependencies:
|
||||
array-includes: 3.1.8
|
||||
array.prototype.findlast: 1.2.5
|
||||
array.prototype.flatmap: 1.3.3
|
||||
array.prototype.tosorted: 1.1.4
|
||||
doctrine: 2.1.0
|
||||
es-iterator-helpers: 1.2.1
|
||||
eslint: 9.19.0([email protected])
|
||||
estraverse: 5.3.0
|
||||
hasown: 2.0.2
|
||||
jsx-ast-utils: 3.3.5
|
||||
minimatch: 3.1.2
|
||||
object.entries: 1.1.8
|
||||
object.fromentries: 2.0.8
|
||||
object.values: 1.2.1
|
||||
prop-types: 15.8.1
|
||||
resolve: 2.0.0-next.5
|
||||
semver: 7.7.0
|
||||
string.prototype.matchall: 4.0.12
|
||||
string.prototype.repeat: 1.0.0
|
||||
|
||||
[email protected]([email protected])([email protected]):
|
||||
dependencies:
|
||||
'@storybook/csf': 0.1.13
|
||||
@@ -26223,6 +26643,11 @@ snapshots:
|
||||
esrecurse: 4.3.0
|
||||
estraverse: 5.3.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
esrecurse: 4.3.0
|
||||
estraverse: 5.3.0
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -26270,6 +26695,53 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected]([email protected]):
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.1([email protected]([email protected]))
|
||||
'@eslint-community/regexpp': 4.12.1
|
||||
'@eslint/config-array': 0.19.1
|
||||
'@eslint/core': 0.10.0
|
||||
'@eslint/eslintrc': 3.2.0
|
||||
'@eslint/js': 9.19.0
|
||||
'@eslint/plugin-kit': 0.2.5
|
||||
'@humanfs/node': 0.16.6
|
||||
'@humanwhocodes/module-importer': 1.0.1
|
||||
'@humanwhocodes/retry': 0.4.1
|
||||
'@types/estree': 1.0.6
|
||||
'@types/json-schema': 7.0.15
|
||||
ajv: 6.12.6
|
||||
chalk: 4.1.2
|
||||
cross-spawn: 7.0.6
|
||||
debug: 4.4.0([email protected])
|
||||
escape-string-regexp: 4.0.0
|
||||
eslint-scope: 8.2.0
|
||||
eslint-visitor-keys: 4.2.0
|
||||
espree: 10.3.0
|
||||
esquery: 1.6.0
|
||||
esutils: 2.0.3
|
||||
fast-deep-equal: 3.1.3
|
||||
file-entry-cache: 8.0.0
|
||||
find-up: 5.0.0
|
||||
glob-parent: 6.0.2
|
||||
ignore: 5.3.2
|
||||
imurmurhash: 0.1.4
|
||||
is-glob: 4.0.3
|
||||
json-stable-stringify-without-jsonify: 1.0.1
|
||||
lodash.merge: 4.6.2
|
||||
minimatch: 3.1.2
|
||||
natural-compare: 1.4.0
|
||||
optionator: 0.9.4
|
||||
optionalDependencies:
|
||||
jiti: 2.4.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
acorn: 8.14.0
|
||||
acorn-jsx: 5.3.2([email protected])
|
||||
eslint-visitor-keys: 4.2.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
acorn: 8.14.0
|
||||
@@ -26830,6 +27302,10 @@ snapshots:
|
||||
dependencies:
|
||||
flat-cache: 3.2.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
flat-cache: 4.0.1
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
@@ -26912,6 +27388,11 @@ snapshots:
|
||||
keyv: 4.5.4
|
||||
rimraf: 3.0.2
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
flatted: 3.3.2
|
||||
keyv: 4.5.4
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -27194,6 +27675,8 @@ snapshots:
|
||||
dependencies:
|
||||
type-fest: 0.20.2
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
define-properties: 1.2.1
|
||||
@@ -27609,6 +28092,8 @@ snapshots:
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
'@ioredis/commands': 1.2.0
|
||||
@@ -27731,6 +28216,10 @@ snapshots:
|
||||
dependencies:
|
||||
call-bound: 1.0.3
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
number-is-nan: 1.0.1
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
@@ -28171,6 +28660,10 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
lz4-asm: 0.4.2
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
@@ -28243,6 +28736,10 @@ snapshots:
|
||||
dependencies:
|
||||
package-json: 8.1.1
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
invert-kv: 1.0.0
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
@@ -28492,6 +28989,10 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
yargs: 3.32.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
@@ -30095,6 +30596,8 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
flow-enums-runtime: 0.0.6
|
||||
@@ -30264,6 +30767,10 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
lcid: 1.0.0
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -32384,6 +32891,12 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
code-point-at: 1.1.0
|
||||
is-fullwidth-code-point: 1.0.0
|
||||
strip-ansi: 3.0.1
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
emoji-regex: 8.0.0
|
||||
@@ -32467,6 +32980,10 @@ snapshots:
|
||||
character-entities-html4: 2.1.0
|
||||
character-entities-legacy: 3.0.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
ansi-regex: 2.1.1
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
ansi-regex: 4.1.1
|
||||
@@ -34014,6 +34531,8 @@ snapshots:
|
||||
dependencies:
|
||||
string-width: 5.1.2
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -34039,6 +34558,11 @@ snapshots:
|
||||
worker-timers-broker: 6.1.8
|
||||
worker-timers-worker: 7.0.71
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
string-width: 1.0.2
|
||||
strip-ansi: 3.0.1
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
@@ -34132,6 +34656,8 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -34175,6 +34701,16 @@ snapshots:
|
||||
y18n: 5.0.8
|
||||
yargs-parser: 21.1.1
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
camelcase: 2.1.1
|
||||
cliui: 3.2.0
|
||||
decamelize: 1.2.0
|
||||
os-locale: 1.4.0
|
||||
string-width: 1.0.2
|
||||
window-size: 0.1.4
|
||||
y18n: 3.2.2
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
|
||||
@@ -14,6 +14,10 @@
|
||||
"outputs": ["typedoc/**"],
|
||||
"dependsOn": ["^build"]
|
||||
},
|
||||
"thirdweb-login#build": {
|
||||
"outputs": [".next/**", "!.next/cache/**"],
|
||||
"dependsOn": ["^build"]
|
||||
},
|
||||
"thirdweb-dashboard#build": {
|
||||
"env": [
|
||||
"SENTRY_AUTH_TOKEN",
|
||||
|
||||
Reference in New Issue
Block a user