diff --git a/.gitignore b/.gitignore
index 0a6fee1..4bb6a53 100644
--- a/.gitignore
+++ b/.gitignore
@@ -129,3 +129,4 @@ dist
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
+.vercel
diff --git a/.vscode/config.json b/.vscode/config.json
new file mode 100644
index 0000000..fae8e3d
--- /dev/null
+++ b/.vscode/config.json
@@ -0,0 +1,4 @@
+{
+ "typescript.tsdk": "node_modules/typescript/lib",
+ "typescript.enablePromptUseWorkspaceTsdk": true
+}
diff --git a/README.md b/README.md
index 1c3e09b..28f6329 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,10 @@ Core libraries:
- [React](https://react.dev) - Library for rendering UI and controlling basic state
- [Vite](https://vitejs.dev) - Build library for client UIs
+- [Openzeppelin](https://docs.openzeppelin.com/contracts/4.x/) - Library for writing secure and audited smart contracts
+- [EAS](https://attest.sh) - Contracts for making attestations and verifying claims
+- [Envio](https://envio.dev) - Indexer for querying and indexing blockchain data
+- [Foundry](https://book.getfoundry.sh/getting-started/installation) - Library for compiling and deploying smart contracts
## Contributing
@@ -48,7 +52,6 @@ If you would like to contribute here are the following steps:
- Once done open a [PR](<[https://github.com/wefa-labs/wefa/pulls](https://github.com/Oba-One/web3-starter-kit/pulls)>) to merge into the development branch of the starter kit repo
- Once approved make sure your branch is up to date with main and complete the merge.
-
### test
-```forge test --fork-url https://base-sepolia-rpc.publicnode.com -vvvv```
+`forge test --fork-url https://base-sepolia-rpc.publicnode.com -vvvv`
diff --git a/package.json b/package.json
index d3db60b..90747f9 100644
--- a/package.json
+++ b/package.json
@@ -26,14 +26,15 @@
"deploy:arbitrum": "pnpm --filter 'contracts' run deploy:arbitrum --network arbitrum"
},
"dependencies": {
+ "@ethereum-attestation-service/eas-sdk": "^2.5.0",
"dotenv": "16.4.5",
"ethers": "^6.13.2",
"viem": "^2.19.6"
},
"devDependencies": {
+ "@types/node": "22.5.1",
"concurrently": "8.2.2",
"prettier": "^3.3.3",
- "typescript": "^5.5.4",
"wait-port": "1.1.0"
},
"engines": {
diff --git a/packages/app/index.html b/packages/app/index.html
deleted file mode 100644
index 7af9a51..0000000
--- a/packages/app/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
- Camp Green App
-
-
-
-
-
-
diff --git a/packages/app/package.json b/packages/app/package.json
deleted file mode 100644
index bc82b7b..0000000
--- a/packages/app/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "app",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
- "preview": "vite preview"
- },
- "dependencies": {
- "@ethereum-attestation-service/eas-sdk": "2.5.0",
- "@hookform/resolvers": "^3.3.4",
- "@privy-io/react-auth": "1.77.0",
- "@xstate/react": "3.2.2",
- "graphql": "16.9.0",
- "lucide-react": "^0.424.0",
- "permissionless": "0.1.44",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-dropzone": "14.2.3",
- "react-hook-form": "^7.51.0",
- "react-hot-toast": "2.4.1",
- "react-router-dom": "6.22.2",
- "tailwindcss-animate": "^1.0.7",
- "xstate": "4.38.2",
- "zod": "^3.22.4"
- },
- "devDependencies": {
- "@types/node": "22.1.0",
- "@types/react": "^18.3.3",
- "@types/react-dom": "^18.3.0",
- "@typescript-eslint/eslint-plugin": "^8.0.1",
- "@typescript-eslint/parser": "^8.0.1",
- "@vitejs/plugin-react": "^4.3.1",
- "autoprefixer": "10.4.20",
- "eslint": "^9.8.0",
- "eslint-plugin-react-hooks": "^4.6.0",
- "eslint-plugin-react-refresh": "^0.4.9",
- "postcss": "8.4.41",
- "preline": "2.4.1",
- "tailwindcss": "3.4.1",
- "vite": "^5.4.0",
- "vite-plugin-mkcert": "1.17.5",
- "vite-plugin-pwa": "0.20.1",
- "vite-plugin-svgr": "4.2.0"
- }
-}
diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx
deleted file mode 100644
index d72d662..0000000
--- a/packages/app/src/App.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-import { Toaster } from "react-hot-toast";
-
-import { useWeb3 } from "@/hooks/providers/web3";
-import { usePWA, InstallState } from "@/hooks/providers/pwa";
-import { CampaignsProvider } from "@/hooks/campaign/useCampaigns";
-import { ContributionsProvider } from "@/hooks/work/useContributions";
-
-import Views from "@/views";
-import { Login } from "@/views/Login";
-
-import { Appbar } from "@/components/Layout/AppBar";
-import { CircleLoader } from "@/components/Loader/Circle";
-import { OnlyMobile } from "@/components/Layout/OnlyMobile";
-
-function App() {
- const web3Props = useWeb3();
- const { installState } = usePWA();
- const isLoggedIn = !!web3Props.address;
-
- const Onboard: Record = {
- idle: (
-
-
-
- ),
- installed: !isLoggedIn ? (
- <>
-
-
- >
- ) : (
-
- ),
- prompt: null,
- unsupported: ,
- };
-
- return (
-
-
- {Onboard[installState]}
-
-
-
- );
-}
-
-export default App;
diff --git a/packages/app/src/components/Actions.tsx b/packages/app/src/components/Actions.tsx
deleted file mode 100644
index bbef1c5..0000000
--- a/packages/app/src/components/Actions.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { Web3Props } from "../../hooks/providers/web3";
-
-import { Button } from "../../../../client/src/components/Button";
-
-interface ProfileActionsProps extends Web3Props {}
-
-export const ProfileActions: React.FC = ({
- error,
- address,
- logout,
- login,
-}) => {
- return (
-
- );
-};
diff --git a/packages/app/src/components/Info.tsx b/packages/app/src/components/Info.tsx
deleted file mode 100644
index ec6c36b..0000000
--- a/packages/app/src/components/Info.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import { SpringValue, a } from "@react-spring/web";
-
-interface ProfileInfoProps {
- username?: string | null;
- avatar?: string;
- avatarSpring: {
- opacity: SpringValue;
- transform: SpringValue;
- };
-}
-
-export const ProfileInfo: React.FC = ({
- avatar,
- avatarSpring,
- username,
-}) => {
- return (
-
-
-
-
- {username}
-
- );
-};
diff --git a/packages/app/src/constants.ts b/packages/app/src/constants.ts
new file mode 100644
index 0000000..918da13
--- /dev/null
+++ b/packages/app/src/constants.ts
@@ -0,0 +1,6 @@
+export const WORK_SCHEMA_UID =
+ "0x9341009d07b8de3eb72b96ac42246c549f3e32636cb31a75961fbee6db44a0eb";
+export const WORK_APPROVAL_SCHEMA_UID =
+ "0x019249c30ec1d02ae41abb3fbbeeb56b9bbb2261cf94191fac73089308aa662a";
+export const GARDEN_ASSESSMENT_SCHEMA_UID =
+ "0x7433e24287be826b49e5eb28cd52192823e542521c94084a691e67e5cc7e8176";
diff --git a/packages/app/src/hooks/machine.ts b/packages/app/src/hooks/machine.ts
deleted file mode 100644
index 4c58c3d..0000000
--- a/packages/app/src/hooks/machine.ts
+++ /dev/null
@@ -1,258 +0,0 @@
-import { createMachine, assign } from "xstate";
-
-import { uploadMedia } from "@/modules/nftStorage";
-
-export const EASContractAddress = "0xC2679fBD37d54388Ce493F1DB75320D236e1815e"; // Sepolia v0.26
-
-export interface ContributionInfo {
- value: number;
- campaign: string;
- title: string | null;
- description: string | null;
- media: { file: File; title: string; description: string } | null;
- capitals: Capital[];
-}
-
-export interface ContributionContext {
- info: ContributionInfo;
- result: {
- id: string | null;
- };
- error: string | null;
-}
-
-export const contributionMachine = createMachine(
- {
- id: "contribution",
- description:
- "Contribution machine for providing data of contribution for campaign.",
- strict: true,
- tsTypes: {} as import("./machine.typegen").Typegen0,
- predictableActionArguments: true,
- initial: "details",
- schema: {
- services: {} as {
- mediaUploader: {
- data: {
- urls: string[];
- };
- };
- contributionAttester: {
- data: {
- id: string;
- };
- };
- },
- context: {
- info: {
- value: 0,
- campaign: "",
- title: null,
- description: null,
- media: null,
- capitals: [],
- },
- result: {
- id: null,
- },
- error: null,
- } as ContributionContext,
- },
- states: {
- idle: {
- on: {
- ATTEST_WORK: {
- target: "details",
- },
- },
- },
- details: {
- on: {
- NEXT: {
- target: "campaign",
- cond: "areDetailsValid",
- actions: "saveDetails",
- },
- CANCEL: {
- target: "idle",
- actions: "reset",
- },
- },
- },
- // media: {
- // on: {
- // NEXT: {
- // target: "campaign",
- // cond: "isMediaValid",
- // actions: "saveMedia",
- // },
- // BACK: {
- // target: "details",
- // },
- // CANCEL: {
- // target: "idle",
- // actions: "reset",
- // },
- // },
- // },
- campaign: {
- on: {
- NEXT: {
- target: "review",
- cond: "isCampaignValid",
- actions: "saveCampaign",
- },
- BACK: {
- target: "details",
- },
- CANCEL: {
- target: "idle",
- actions: "reset",
- },
- },
- },
- review: {
- on: {
- ATTEST: {
- target: "uploading_media",
- },
- BACK: {
- target: "campaign",
- },
- CANCEL: {
- target: "idle",
- },
- },
- },
- uploading_media: {
- invoke: {
- id: "mediaUploader",
- src: "mediaUploader",
- onDone: {
- target: "attesting_contribution",
- },
- onError: {
- target: "review",
- actions: "error",
- },
- },
- },
- attesting_contribution: {
- invoke: {
- id: "contributionAttester",
- src: "contributionAttester",
- onDone: {
- target: "contribution_attested",
- actions: "contributed",
- },
- onError: {
- target: "review",
- actions: "error",
- },
- },
- },
- contribution_attested: {
- on: {
- GO_HOME: {
- target: "idle",
- actions: ["goHome", "reset"],
- },
- CONTRIBUTE_MORE: {
- target: "details",
- actions: "reset",
- },
- },
- },
- },
- },
- {
- delays: {
- LIGHT_DELAY: (_context, _event) => {
- return true;
- },
- },
- guards: {
- areDetailsValid: (_context, _event) => {
- return true;
- },
- isCampaignValid: (_context) => {
- return true;
- },
- },
- actions: {
- saveDetails: assign((context, event) => {
- console.log("saveDetails", context, event);
-
- return context;
- }),
- saveCampaign: assign((context, event) => {
- console.log("saveCampaign", context, event);
-
- return context;
- }),
- contributed: assign((context, event) => {
- console.log("contributed", context, event);
-
- return context;
- }),
- reset: assign((context, _event) => {
- context.info.value = 0;
- context.info.campaign = "";
- context.info.title = null;
- context.info.description = null;
- context.info.media = null;
- context.info.capitals = [];
-
- context.result.id = null;
-
- context.error = null;
-
- return context;
- }),
- error: assign((context, event) => {
- switch (event.type) {
- case "error.platform.mediaUploader":
- // context.image = null;
- // context.element = null;
-
- // @ts-ignore
- context.error = event.data.message;
- break;
-
- case "error.platform.contributionAttester":
- // @ts-ignore
- context.error = event.data.message;
- break;
-
- default:
- break;
- }
- console.log("Error!", context, event);
-
- // toast.error(context.error || "Error with creature generator.");
-
- return context;
- }),
- },
- services: {
- mediaUploader: async (context, _meta) => {
- if (!context.info.media) {
- return {
- urls: [],
- };
- }
-
- try {
- const urls = await uploadMedia([context.info.media]);
-
- return {
- urls,
- };
- } catch (error) {
- console.log("Media uploading failed!", error);
- throw error;
- }
- },
- },
- }
-);
diff --git a/packages/app/src/hooks/machine.typegen.ts b/packages/app/src/hooks/machine.typegen.ts
deleted file mode 100644
index a5db979..0000000
--- a/packages/app/src/hooks/machine.typegen.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-// This file was automatically generated. Edits will be overwritten
-
-export interface Typegen0 {
- "@@xstate/typegen": true;
- internalEvents: {
- "done.invoke.contributionAttester": {
- type: "done.invoke.contributionAttester";
- data: unknown;
- __tip: "See the XState TS docs to learn how to strongly type this.";
- };
- "done.invoke.mediaUploader": {
- type: "done.invoke.mediaUploader";
- data: unknown;
- __tip: "See the XState TS docs to learn how to strongly type this.";
- };
- "error.platform.contributionAttester": {
- type: "error.platform.contributionAttester";
- data: unknown;
- };
- "error.platform.mediaUploader": {
- type: "error.platform.mediaUploader";
- data: unknown;
- };
- "xstate.init": { type: "xstate.init" };
- };
- invokeSrcNameMap: {
- contributionAttester: "done.invoke.contributionAttester";
- mediaUploader: "done.invoke.mediaUploader";
- };
- missingImplementations: {
- actions: "goHome";
- delays: never;
- guards: never;
- services: "contributionAttester";
- };
- eventsCausingActions: {
- contributed: "done.invoke.contributionAttester";
- error:
- | "error.platform.contributionAttester"
- | "error.platform.mediaUploader";
- goHome: "GO_HOME";
- reset: "CANCEL" | "CONTRIBUTE_MORE" | "GO_HOME";
- saveCampaign: "NEXT";
- saveDetails: "NEXT";
- };
- eventsCausingDelays: {};
- eventsCausingGuards: {
- areDetailsValid: "NEXT";
- isCampaignValid: "NEXT";
- };
- eventsCausingServices: {
- contributionAttester: "done.invoke.mediaUploader";
- mediaUploader: "ATTEST";
- };
- matchesStates:
- | "attesting_contribution"
- | "campaign"
- | "contribution_attested"
- | "details"
- | "idle"
- | "review"
- | "uploading_media";
- tags: never;
-}
diff --git a/packages/app/src/hooks/useContribution.ts b/packages/app/src/hooks/useContribution.ts
deleted file mode 100644
index adcea7c..0000000
--- a/packages/app/src/hooks/useContribution.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { useContributions } from "./useContributions";
-
-export const EASContractAddress = "0xC2679fBD37d54388Ce493F1DB75320D236e1815e"; // Sepolia v0.26
-
-interface ContributionDataProps extends Contribution {}
-
-export const useContribution = (id: string): ContributionDataProps => {
- const { confirmationMap, contributionMap } = useContributions();
-
- const confirmation = confirmationMap[id];
- const contribution = contributionMap[id];
-
- console.log(contributionMap, confirmation);
-
- return {
- ...contribution,
- status: confirmation
- ? confirmation.approval
- ? "approved"
- : "rejected"
- : "pending",
- };
-};
diff --git a/packages/app/src/hooks/useContributions.tsx b/packages/app/src/hooks/useContributions.tsx
deleted file mode 100644
index 2709c7c..0000000
--- a/packages/app/src/hooks/useContributions.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import { createContext, useContext } from "react";
-import { ApolloError, useQuery } from "@apollo/client";
-
-import { useWeb3 } from "../providers/web3";
-import {
- attestationClient,
- userConfirmationsQuery,
- userContributionsQuery,
-} from "@/modules/apollo";
-import { mockContributions } from "@/lib/mockData";
-
-export interface ContributionsDataProps {
- address: string | null;
- contributions: Contribution[];
- contributionMap: Record;
- confirmationMap: Record;
- contributionsError?: ApolloError;
- confirmationsError?: ApolloError;
-}
-
-const ContributionsContext = createContext(null);
-
-type Props = {
- children: React.ReactNode;
-};
-
-export const ContributionsProvider = ({ children }: Props) => {
- const currentValue = useContext(ContributionsContext);
-
- if (currentValue)
- throw new Error("Contribution/Provider can only be used once");
-
- const { address } = useWeb3();
-
- const { data: contributionData } = useQuery(userContributionsQuery, {
- client: attestationClient,
- variables: {
- where: {
- attester: {
- equals: address,
- },
- },
- },
- });
-
- const { data: confirmationData } = useQuery(userConfirmationsQuery, {
- client: attestationClient,
- variables: {
- where: {
- recipient: {
- equals: address,
- },
- },
- },
- });
-
- const contributionMap: Record = {};
- const confirmationMap: Record = {};
-
- console.log("confirmationData", confirmationData);
- console.log("contributionData", contributionData);
-
- return (
- , contribution) => {
- acc[contribution.id] = contribution;
- return acc;
- },
- {}
- ),
- confirmationMap,
- }}
- >
- {children}
-
- );
-};
-
-export const useContributions = () => {
- const value = useContext(ContributionsContext);
- if (!value) throw new Error("Must be used within a ContributionsProvider");
- return value;
-};
diff --git a/packages/app/src/hooks/useMakeContribution.ts b/packages/app/src/hooks/useMakeContribution.ts
deleted file mode 100644
index 5e34dc0..0000000
--- a/packages/app/src/hooks/useMakeContribution.ts
+++ /dev/null
@@ -1,170 +0,0 @@
-import { useMachine } from "@xstate/react";
-import { useNavigate } from "react-router-dom";
-import { EAS, SchemaEncoder } from "@ethereum-attestation-service/eas-sdk";
-
-import { EASContractAddress } from "@/lib/constants";
-
-import { ContributionContext, contributionMachine } from "./machine";
-
-export interface MakeContributionDataProps extends ContributionContext {
- isIdle: boolean;
- isDetails: boolean;
- isCampaign: boolean;
- isReview: boolean;
- isUploading: boolean;
- isAttesting: boolean;
- isAttested: boolean;
- contribute: () => void;
- setDetails: (details: { title: string; description: string }) => void;
- setCampaign: (campaign: string) => void;
- attestContribution: () => void;
- back: () => void;
- cancel: () => void;
- goHome: () => void;
- contributeMore: () => void;
-}
-
-export const useMakeContribution = (): MakeContributionDataProps => {
- // const { getEthersProvider } = useWeb3();
- const navigate = useNavigate();
-
- const [state, send] = useMachine(contributionMachine, {
- actions: {
- goHome: () => {
- // Refetch contributions
- navigate("home");
- },
- },
- services: {
- contributionAttester: async (context, event) => {
- console.log("Contribution attestation started!", context, event);
-
- const { campaign, title, description, capitals, value } = context.info;
- const { data } = event;
-
- try {
- // const signer = ethersProvider?.getSigner();
-
- // if (!signer) {
- // throw new Error("No signer found!");
- // }
-
- const eas = new EAS(EASContractAddress);
-
- // @ts-ignore
- eas.connect(signer);
-
- // Initialize SchemaEncoder with the schema string
- const schemaEncoder = new SchemaEncoder(
- "uint256 value, address campaign, string title, string description, string[] media, string[] capitals"
- );
-
- const encodedData = schemaEncoder.encodeData([
- { name: "value", value: value, type: "uint256" },
- { name: "campaign", value: campaign, type: "address" },
- { name: "title", value: title ?? "", type: "string" },
- {
- name: "description",
- value: description ?? "",
- type: "string",
- },
- { name: "media", value: data.urls, type: "string[]" },
- {
- name: "capitals",
- value: capitals,
- type: "string[]",
- },
- ]);
-
- const schemaUID = ""; // TODO: Get the schema UID from the registry
-
- const tx = await eas.attest({
- schema: schemaUID,
- data: {
- recipient: "",
- revocable: true, // Be aware that if your schema is not revocable, this MUST be false
- data: encodedData,
- },
- });
-
- const newAttestationUID = await tx.wait();
-
- console.log("New attestation UID:", newAttestationUID);
- return { id: newAttestationUID };
- } catch (error) {
- console.log("Contribution attestation failed!", error);
- throw error;
- }
- },
- },
- });
-
- function contribute() {
- send("ATTEST_WORK");
- }
-
- function setDetails(details: { title: string; description: string }) {
- if (state.matches("details")) {
- send({ type: "NEXT", details });
- }
- }
-
- function setCampaign(campaign: string) {
- if (state.matches("campaign")) {
- send({ type: "NEXT", campaign });
- }
- }
-
- function back() {
- if (state.matches("campaign") || state.matches("review")) {
- send("BACK");
- }
- }
-
- function cancel() {
- if (
- state.matches("details") ||
- state.matches("campaign") ||
- state.matches("review")
- ) {
- send("CANCEL");
- }
- }
-
- function attestContribution() {
- if (state.matches("review")) {
- send("ATTEST");
- }
- }
-
- function goHome() {
- if (state.matches("contribution_attested")) {
- send("GO_HOME");
- }
- }
-
- function contributeMore() {
- if (state.matches("contribution_attested")) {
- send("CONTRIBUTE_MORE");
- }
- }
-
- return {
- isIdle: state.matches("idle"),
- isDetails: state.matches("details"),
- isCampaign: state.matches("campaign"),
- isReview: state.matches("review"),
- isAttested: state.matches("contribution_attested"),
- isAttesting: state.matches("attesting_contribution"),
- isUploading: state.matches("uploading_media"),
- ...state.context,
- contribute,
- setDetails,
- setCampaign,
- attestContribution,
- back,
- cancel,
- goHome,
- contributeMore,
- };
-};
diff --git a/packages/app/src/hooks/useProfile.ts b/packages/app/src/hooks/useProfile.ts
deleted file mode 100644
index 5636f9a..0000000
--- a/packages/app/src/hooks/useProfile.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { SpringValue, useSpring } from "@react-spring/web";
-
-import { Web3Props, useWeb3 } from "../providers/web3";
-
-export interface ProfileDataProps extends Web3Props {
- name?: string | null;
- avatar?: string | null;
- avatarSpring: {
- opacity: SpringValue;
- transform: SpringValue;
- };
-}
-
-export const useProfile = (): ProfileDataProps => {
- const web3 = useWeb3();
-
- const avatarSpring = useSpring({
- from: { opacity: 0, transform: "translate3d(0, -100%, 0)" },
- to: { opacity: 1, transform: "translate3d(0, 0%, 0)" },
- });
-
- return {
- name: web3.user?.email?.address,
- avatar: web3.user?.farcaster?.pfp,
- avatarSpring,
- ...web3,
- };
-};
diff --git a/packages/app/src/main.tsx b/packages/app/src/main.tsx
deleted file mode 100644
index 9b485dd..0000000
--- a/packages/app/src/main.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import React from "react";
-import ReactDOM from "react-dom/client";
-import { ApolloProvider } from "@apollo/client";
-import { BrowserRouter } from "react-router-dom";
-import { arbitrum, arbitrumSepolia, foundry } from "viem/chains";
-import { PrivyProvider } from "@privy-io/react-auth";
-
-import { contractClient } from "@/modules/apollo";
-
-import { AppProvider } from "@/hooks/providers/app";
-import { Web3Provider } from "@/hooks/providers/web3";
-
-import App from "@/App.tsx";
-
-import "./index.css";
-
-ReactDOM.createRoot(document.getElementById("root")!).render(
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
diff --git a/packages/app/src/types/greengoods.d.ts b/packages/app/src/types/greengoods.d.ts
new file mode 100644
index 0000000..9f414c9
--- /dev/null
+++ b/packages/app/src/types/greengoods.d.ts
@@ -0,0 +1,5 @@
+declare interface Garden {}
+declare interface GardenAssessment {}
+declare interface Action {}
+declare interface Work {}
+declare interface WorkApproval {}
diff --git a/packages/app/src/views/Contribute/index.tsx b/packages/app/src/views/Contribute/index.tsx
deleted file mode 100644
index 706a077..0000000
--- a/packages/app/src/views/Contribute/index.tsx
+++ /dev/null
@@ -1,313 +0,0 @@
-import { z } from "zod";
-import React, { useState } from "react";
-import { useForm } from "react-hook-form";
-import { zodResolver } from "@hookform/resolvers/zod";
-
-import { ContributeDataProps } from "@/hooks/views/useContribute";
-
-import {
- Form,
- FormControl,
- FormDescription,
- FormField,
- FormItem,
- FormLabel,
- FormMessage,
-} from "@/components/ui/form";
-import { Input } from "@/components/ui/input";
-import { Button } from "@/components/ui/button";
-import { CircleLoader } from "@/components/Loader/Circle";
-import { MultiSelect } from "@/components/ui/multi-select";
-
-interface ContributeProps extends ContributeDataProps {}
-
-const capitalOptions: Capital[] = [
- "Living",
- "Social",
- "Material",
- "Cultural",
- "Financial",
- "Intellectual",
- "Experiental",
- "Spiritual",
-];
-
-const formSchema = z.object({
- title: z.string(),
- description: z.string(),
- details: z.string().url(),
- capitals: z.array(z.string()),
- value: z.number(),
- image: z.instanceof(File),
- campaign: z.string().optional(),
-});
-
-const Contribute: React.FC = ({
- isIdle,
- isDetails,
- isCampaign,
- isReview,
- isUploading,
- isAttesting,
- isAttested,
- campaigns,
- setDetails,
- setCampaign,
- attestContribution,
- back,
- cancel,
- contributeMore,
- goHome,
- error,
- info,
-}) => {
- console.log(info);
-
- const [preview, setPreview] = useState(null);
-
- const form = useForm>({
- resolver: zodResolver(formSchema),
- defaultValues: {
- title: info?.title || "",
- description: info?.description || "",
- capitals: [],
- details: "",
- campaign: info?.campaign || "",
- value: info?.value || 0,
- },
- });
-
- async function handleImage(file: File | null) {
- if (!file) {
- return;
- }
-
- const url = URL.createObjectURL(file);
-
- if (url) {
- setPreview(url);
-
- const reader = new FileReader();
- reader.onloadend = () => {
- const image = reader.result;
- if (!image) {
- console.log("No image");
- return;
- }
- };
- reader.readAsDataURL(file);
- }
- }
-
- function onSubmit(values: z.infer) {
- if (isIdle) return;
- if (isDetails) return setDetails(values);
- if (isCampaign) return setCampaign(values.campaign ?? "");
- if (isReview) return attestContribution();
- if (isUploading) return;
- if (isAttesting) return;
- if (isAttested) return contributeMore();
- }
-
- return (
-
- );
-};
-
-export default Contribute;
diff --git a/packages/app/src/views/Home/Campaigns.tsx b/packages/app/src/views/Home/Campaigns.tsx
deleted file mode 100644
index 2b41cad..0000000
--- a/packages/app/src/views/Home/Campaigns.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import React from "react";
-import { Outlet, useNavigate, useLocation } from "react-router-dom";
-
-import { HomeDataProps } from "@/hooks/views/useHome";
-
-interface CampaignsProps extends HomeDataProps {}
-
-const Campaigns: React.FC = (
- {
- // address,
- // confirmationMap,
- // contributions,
- }
-) => {
- const navigate = useNavigate();
- const location = useLocation();
-
- function handleCardClick(id: string) {
- navigate(`/campaigns/${id}`);
- }
-
- return (
-
-
- {location.pathname === "/campaigns" ? (
-
- {Array.from({ length: 5 }).map((_, index) => (
- handleCardClick("")}>
- {index}
-
- ))}
-
- ) : null}
-
-
- );
-};
-
-export default Campaigns;
diff --git a/packages/app/src/views/Home/Contributions.tsx b/packages/app/src/views/Home/Contributions.tsx
deleted file mode 100644
index 4ad403c..0000000
--- a/packages/app/src/views/Home/Contributions.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import React from "react";
-import { Outlet, useNavigate, useLocation } from "react-router-dom";
-
-import { HomeDataProps } from "@/hooks/views/useHome";
-
-interface ContributionsProps extends HomeDataProps {}
-
-const Contributions: React.FC = (
- {
- // address,
- // confirmationMap,
- // contributions,
- }
-) => {
- const navigate = useNavigate();
- const location = useLocation();
-
- function handleCardClick(id: string) {
- navigate(`/contributions/${id}`);
- }
-
- return (
-
-
- {location.pathname === "/contributions" ? (
-
- {Array.from({ length: 5 }).map((_, index) => (
- handleCardClick("")}>
- {index}
-
- ))}
-
- ) : null}
-
-
- );
-};
-
-export default Contributions;
diff --git a/packages/app/src/views/Home/index.tsx b/packages/app/src/views/Home/index.tsx
deleted file mode 100644
index 5cf3027..0000000
--- a/packages/app/src/views/Home/index.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import React from "react";
-
-import { HomeDataProps } from "@/hooks/views/useHome";
-
-import {
- Carousel,
- CarouselContent,
- CarouselItem,
-} from "@/components/ui/carousel";
-
-interface HomeProps extends HomeDataProps {}
-
-const Home: React.FC = ({}) => {
- return (
-
-
- Contributions
-
-
- {Array.from({ length: 5 }).map((_, index) => (
-
- {index}
-
- ))}
-
-
-
-
- Campaigns
-
-
- {Array.from({ length: 5 }).map((_, index) => (
-
- {index}
-
- ))}
-
-
-
-
- );
-};
-
-export default Home;
diff --git a/packages/app/src/views/Login/index.tsx b/packages/app/src/views/Login/index.tsx
deleted file mode 100644
index 3a717a2..0000000
--- a/packages/app/src/views/Login/index.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from "react";
-
-import { Web3Props } from "../../hooks/providers/web3";
-import { Button } from "../../components/ui/button";
-
-interface LoginProps extends Web3Props {}
-
-export const Login: React.FC = ({ error, login }) => {
- return (
-
-
-
-
Welcome To
- Camp Green
-
-
-
- Login
-
-
-
- );
-};
diff --git a/packages/app/src/views/Profile/index.tsx b/packages/app/src/views/Profile/index.tsx
index 83f9753..d91a5f6 100644
--- a/packages/app/src/views/Profile/index.tsx
+++ b/packages/app/src/views/Profile/index.tsx
@@ -1,9 +1,9 @@
import React from "react";
import { Web3Props } from "../../hooks/providers/web3";
-import { ProfileDataProps } from "../../hooks/useProfile";
+import { ProfileDataProps } from "../../../../client/src/views/Profile/useProfile";
-import { ProfileInfo } from "../../components/Info";
+import { ProfileInfo } from "../../../../client/src/views/Profile/Account";
import { ProfileActions } from "../../components/Profile/Actions";
interface ProfileProps extends ProfileDataProps, Web3Props {}
diff --git a/packages/app/src/views/index.tsx b/packages/app/src/views/index.tsx
deleted file mode 100644
index d98ac7c..0000000
--- a/packages/app/src/views/index.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import { a, useTransition } from "@react-spring/web";
-import { Navigate, Route, Routes, useLocation } from "react-router-dom";
-
-import { useHome } from "@/hooks/views/useHome";
-import { useProfile } from "@/hooks/useProfile";
-import { useContribute } from "@/hooks/views/useContribute";
-
-import CampaignViewer from "@/components/Campaign/Viewer";
-import ContributionViewer from "@/components/Contriburion/Viewer";
-
-import Home from "./Home";
-import Profile from "./Profile";
-import Contribute from "./Contribute";
-import Campaigns from "./Home/Campaigns";
-import Contributions from "./Home/Contributions";
-
-export default function Views() {
- const location = useLocation();
- const transitions = useTransition(location, {
- from: { opacity: 0 },
- enter: { opacity: 1 },
- leave: { opacity: 0 },
- exitBeforeEnter: true,
- config: {
- tension: 300,
- friction: 20,
- clamp: true,
- },
- });
-
- const home = useHome();
- const contribute = useContribute();
- const profile = useProfile();
-
- return transitions((style, location) => (
-
-
- } />
- }>
- } />
-
- }>
- } />
-
- } />
- } />
- } />
-
-
- ));
-}
diff --git a/packages/app/vite.config.ts b/packages/app/vite.config.ts
deleted file mode 100644
index 53b1fc0..0000000
--- a/packages/app/vite.config.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import path from "path";
-import { defineConfig } from "vite";
-import svgr from "vite-plugin-svgr";
-import react from "@vitejs/plugin-react";
-import mkcert from "vite-plugin-mkcert";
-import { VitePWA } from "vite-plugin-pwa";
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [
- mkcert(),
- react(),
- svgr({
- svgrOptions: {
- namedExport: "RC",
- },
- }),
- VitePWA({
- includeAssets: [
- "assets/favicon.ico",
- "assets/logo-64.png",
- "assets/logo-310.png",
- "assets/world.png",
- "assets/profile.png",
- ],
- injectRegister: "auto",
- registerType: "autoUpdate",
- devOptions: {
- enabled: true,
- },
- workbox: {
- // globPatterns: ["**/*.{js,css,html,ico,png,svg}"],
- },
- manifest: {
- name: "Green Goods",
- short_name: "Green Goods",
- icons: [
- {
- src: "assets/logo-64.png",
- sizes: "64x64",
- type: "image/png",
- },
- {
- src: "assets/logo-310.png",
- sizes: "192X192",
- type: "image/png",
- },
- {
- src: "assets/logo-310.png",
- sizes: "512x512",
- type: "image/png",
- },
- ],
- start_url: "/",
- scope: "/",
- display: "fullscreen",
- orientation: "portrait-primary",
- theme_color: "#fff",
- background_color: "#000",
- shortcuts: [
- {
- name: "Profile",
- description: "View your profile",
- url: "/profile",
- icons: [
- {
- src: "assets/profile.png",
- sizes: "64x64",
- type: "image/png",
- },
- ],
- },
- ],
- related_applications: [
- {
- platform: "webapp",
- url: "https://localhost:3001/manifest.webmanifest",
- },
- ],
- categories: [],
- },
- }),
- ],
- resolve: {
- alias: {
- "@": path.resolve(__dirname, "./src"),
- },
- },
- server: {
- port: 3001,
- },
-});
diff --git a/packages/client/.env.example b/packages/client/.env.example
index 6cdcb1c..df05a03 100644
--- a/packages/client/.env.example
+++ b/packages/client/.env.example
@@ -4,5 +4,6 @@ VITE_PRIVY_APP_ID=
VITE_PIMLICO_API_KEY=
VITE_PINATA_API_KEY=
+PINATA_API_KEY=
PINATA_API_SECRET=
-PINATA_API_JWT=
\ No newline at end of file
+PRIVY_APP_SECRET_ID=
diff --git a/packages/client/api/users.ts b/packages/client/api/users.ts
new file mode 100644
index 0000000..903e4bf
--- /dev/null
+++ b/packages/client/api/users.ts
@@ -0,0 +1,31 @@
+import { PrivyClient } from "@privy-io/server-auth";
+import type { VercelRequest, VercelResponse } from "@vercel/node";
+
+declare global {
+ namespace NodeJS {
+ interface ProcessEnv {
+ VITE_PRIVY_APP_ID?: string;
+ PINATA_API_KEY?: string;
+ PINATA_API_SECRET?: string;
+ PRIVY_APP_SECRET_ID?: string;
+ }
+ }
+}
+
+export const config = {
+ // runtime: "nodejs",
+};
+
+const privy = new PrivyClient(
+ process.env.VITE_PRIVY_APP_ID!,
+ process.env.PRIVY_APP_SECRET_ID!
+);
+
+export default async function handler(
+ _request: VercelRequest,
+ response: VercelResponse
+) {
+ const users = await privy.getUsers();
+
+ response.status(200).json(users);
+}
diff --git a/packages/client/dev-dist/registerSW.js b/packages/client/dev-dist/registerSW.js
new file mode 100644
index 0000000..1d5625f
--- /dev/null
+++ b/packages/client/dev-dist/registerSW.js
@@ -0,0 +1 @@
+if('serviceWorker' in navigator) navigator.serviceWorker.register('/dev-sw.js?dev-sw', { scope: '/', type: 'classic' })
\ No newline at end of file
diff --git a/packages/client/dev-dist/sw.js b/packages/client/dev-dist/sw.js
new file mode 100644
index 0000000..01dd529
--- /dev/null
+++ b/packages/client/dev-dist/sw.js
@@ -0,0 +1,92 @@
+/**
+ * Copyright 2018 Google Inc. All Rights Reserved.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// If the loader is already loaded, just stop.
+if (!self.define) {
+ let registry = {};
+
+ // Used for `eval` and `importScripts` where we can't get script URL by other means.
+ // In both cases, it's safe to use a global var because those functions are synchronous.
+ let nextDefineUri;
+
+ const singleRequire = (uri, parentUri) => {
+ uri = new URL(uri + ".js", parentUri).href;
+ return registry[uri] || (
+
+ new Promise(resolve => {
+ if ("document" in self) {
+ const script = document.createElement("script");
+ script.src = uri;
+ script.onload = resolve;
+ document.head.appendChild(script);
+ } else {
+ nextDefineUri = uri;
+ importScripts(uri);
+ resolve();
+ }
+ })
+
+ .then(() => {
+ let promise = registry[uri];
+ if (!promise) {
+ throw new Error(`Module ${uri} didn’t register its module`);
+ }
+ return promise;
+ })
+ );
+ };
+
+ self.define = (depsNames, factory) => {
+ const uri = nextDefineUri || ("document" in self ? document.currentScript.src : "") || location.href;
+ if (registry[uri]) {
+ // Module is already loading or loaded.
+ return;
+ }
+ let exports = {};
+ const require = depUri => singleRequire(depUri, uri);
+ const specialDeps = {
+ module: { uri },
+ exports,
+ require
+ };
+ registry[uri] = Promise.all(depsNames.map(
+ depName => specialDeps[depName] || require(depName)
+ )).then(deps => {
+ factory(...deps);
+ return exports;
+ });
+ };
+}
+define(['./workbox-c982e567'], (function (workbox) { 'use strict';
+
+ self.skipWaiting();
+ workbox.clientsClaim();
+
+ /**
+ * The precacheAndRoute() method efficiently caches and responds to
+ * requests for URLs in the manifest.
+ * See https://goo.gl/S9QRab
+ */
+ workbox.precacheAndRoute([{
+ "url": "registerSW.js",
+ "revision": "3ca0b8505b4bec776b69afdba2768812"
+ }, {
+ "url": "index.html",
+ "revision": "0.9bt3crbamtg"
+ }], {});
+ workbox.cleanupOutdatedCaches();
+ workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {
+ allowlist: [/^\/$/]
+ }));
+
+}));
diff --git a/packages/client/dev-dist/workbox-c982e567.js b/packages/client/dev-dist/workbox-c982e567.js
new file mode 100644
index 0000000..077fa26
--- /dev/null
+++ b/packages/client/dev-dist/workbox-c982e567.js
@@ -0,0 +1,3391 @@
+define(['exports'], (function (exports) { 'use strict';
+
+ // @ts-ignore
+ try {
+ self['workbox:core:7.0.0'] && _();
+ } catch (e) {}
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Claim any currently available clients once the service worker
+ * becomes active. This is normally used in conjunction with `skipWaiting()`.
+ *
+ * @memberof workbox-core
+ */
+ function clientsClaim() {
+ self.addEventListener('activate', () => self.clients.claim());
+ }
+
+ /*
+ Copyright 2019 Google LLC
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ const logger = (() => {
+ // Don't overwrite this value if it's already set.
+ // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923
+ if (!('__WB_DISABLE_DEV_LOGS' in globalThis)) {
+ self.__WB_DISABLE_DEV_LOGS = false;
+ }
+ let inGroup = false;
+ const methodToColorMap = {
+ debug: `#7f8c8d`,
+ log: `#2ecc71`,
+ warn: `#f39c12`,
+ error: `#c0392b`,
+ groupCollapsed: `#3498db`,
+ groupEnd: null // No colored prefix on groupEnd
+ };
+ const print = function (method, args) {
+ if (self.__WB_DISABLE_DEV_LOGS) {
+ return;
+ }
+ if (method === 'groupCollapsed') {
+ // Safari doesn't print all console.groupCollapsed() arguments:
+ // https://bugs.webkit.org/show_bug.cgi?id=182754
+ if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
+ console[method](...args);
+ return;
+ }
+ }
+ const styles = [`background: ${methodToColorMap[method]}`, `border-radius: 0.5em`, `color: white`, `font-weight: bold`, `padding: 2px 0.5em`];
+ // When in a group, the workbox prefix is not displayed.
+ const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];
+ console[method](...logPrefix, ...args);
+ if (method === 'groupCollapsed') {
+ inGroup = true;
+ }
+ if (method === 'groupEnd') {
+ inGroup = false;
+ }
+ };
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ const api = {};
+ const loggerMethods = Object.keys(methodToColorMap);
+ for (const key of loggerMethods) {
+ const method = key;
+ api[method] = (...args) => {
+ print(method, args);
+ };
+ }
+ return api;
+ })();
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ const messages = {
+ 'invalid-value': ({
+ paramName,
+ validValueDescription,
+ value
+ }) => {
+ if (!paramName || !validValueDescription) {
+ throw new Error(`Unexpected input to 'invalid-value' error.`);
+ }
+ return `The '${paramName}' parameter was given a value with an ` + `unexpected value. ${validValueDescription} Received a value of ` + `${JSON.stringify(value)}.`;
+ },
+ 'not-an-array': ({
+ moduleName,
+ className,
+ funcName,
+ paramName
+ }) => {
+ if (!moduleName || !className || !funcName || !paramName) {
+ throw new Error(`Unexpected input to 'not-an-array' error.`);
+ }
+ return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className}.${funcName}()' must be an array.`;
+ },
+ 'incorrect-type': ({
+ expectedType,
+ paramName,
+ moduleName,
+ className,
+ funcName
+ }) => {
+ if (!expectedType || !paramName || !moduleName || !funcName) {
+ throw new Error(`Unexpected input to 'incorrect-type' error.`);
+ }
+ const classNameStr = className ? `${className}.` : '';
+ return `The parameter '${paramName}' passed into ` + `'${moduleName}.${classNameStr}` + `${funcName}()' must be of type ${expectedType}.`;
+ },
+ 'incorrect-class': ({
+ expectedClassName,
+ paramName,
+ moduleName,
+ className,
+ funcName,
+ isReturnValueProblem
+ }) => {
+ if (!expectedClassName || !moduleName || !funcName) {
+ throw new Error(`Unexpected input to 'incorrect-class' error.`);
+ }
+ const classNameStr = className ? `${className}.` : '';
+ if (isReturnValueProblem) {
+ return `The return value from ` + `'${moduleName}.${classNameStr}${funcName}()' ` + `must be an instance of class ${expectedClassName}.`;
+ }
+ return `The parameter '${paramName}' passed into ` + `'${moduleName}.${classNameStr}${funcName}()' ` + `must be an instance of class ${expectedClassName}.`;
+ },
+ 'missing-a-method': ({
+ expectedMethod,
+ paramName,
+ moduleName,
+ className,
+ funcName
+ }) => {
+ if (!expectedMethod || !paramName || !moduleName || !className || !funcName) {
+ throw new Error(`Unexpected input to 'missing-a-method' error.`);
+ }
+ return `${moduleName}.${className}.${funcName}() expected the ` + `'${paramName}' parameter to expose a '${expectedMethod}' method.`;
+ },
+ 'add-to-cache-list-unexpected-type': ({
+ entry
+ }) => {
+ return `An unexpected entry was passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` + `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` + `strings with one or more characters, objects with a url property or ` + `Request objects.`;
+ },
+ 'add-to-cache-list-conflicting-entries': ({
+ firstEntry,
+ secondEntry
+ }) => {
+ if (!firstEntry || !secondEntry) {
+ throw new Error(`Unexpected input to ` + `'add-to-cache-list-duplicate-entries' error.`);
+ }
+ return `Two of the entries passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` + `${firstEntry} but different revision details. Workbox is ` + `unable to cache and version the asset correctly. Please remove one ` + `of the entries.`;
+ },
+ 'plugin-error-request-will-fetch': ({
+ thrownErrorMessage
+ }) => {
+ if (!thrownErrorMessage) {
+ throw new Error(`Unexpected input to ` + `'plugin-error-request-will-fetch', error.`);
+ }
+ return `An error was thrown by a plugins 'requestWillFetch()' method. ` + `The thrown error message was: '${thrownErrorMessage}'.`;
+ },
+ 'invalid-cache-name': ({
+ cacheNameId,
+ value
+ }) => {
+ if (!cacheNameId) {
+ throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`);
+ }
+ return `You must provide a name containing at least one character for ` + `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` + `'${JSON.stringify(value)}'`;
+ },
+ 'unregister-route-but-not-found-with-method': ({
+ method
+ }) => {
+ if (!method) {
+ throw new Error(`Unexpected input to ` + `'unregister-route-but-not-found-with-method' error.`);
+ }
+ return `The route you're trying to unregister was not previously ` + `registered for the method type '${method}'.`;
+ },
+ 'unregister-route-route-not-registered': () => {
+ return `The route you're trying to unregister was not previously ` + `registered.`;
+ },
+ 'queue-replay-failed': ({
+ name
+ }) => {
+ return `Replaying the background sync queue '${name}' failed.`;
+ },
+ 'duplicate-queue-name': ({
+ name
+ }) => {
+ return `The Queue name '${name}' is already being used. ` + `All instances of backgroundSync.Queue must be given unique names.`;
+ },
+ 'expired-test-without-max-age': ({
+ methodName,
+ paramName
+ }) => {
+ return `The '${methodName}()' method can only be used when the ` + `'${paramName}' is used in the constructor.`;
+ },
+ 'unsupported-route-type': ({
+ moduleName,
+ className,
+ funcName,
+ paramName
+ }) => {
+ return `The supplied '${paramName}' parameter was an unsupported type. ` + `Please check the docs for ${moduleName}.${className}.${funcName} for ` + `valid input types.`;
+ },
+ 'not-array-of-class': ({
+ value,
+ expectedClass,
+ moduleName,
+ className,
+ funcName,
+ paramName
+ }) => {
+ return `The supplied '${paramName}' parameter must be an array of ` + `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` + `Please check the call to ${moduleName}.${className}.${funcName}() ` + `to fix the issue.`;
+ },
+ 'max-entries-or-age-required': ({
+ moduleName,
+ className,
+ funcName
+ }) => {
+ return `You must define either config.maxEntries or config.maxAgeSeconds` + `in ${moduleName}.${className}.${funcName}`;
+ },
+ 'statuses-or-headers-required': ({
+ moduleName,
+ className,
+ funcName
+ }) => {
+ return `You must define either config.statuses or config.headers` + `in ${moduleName}.${className}.${funcName}`;
+ },
+ 'invalid-string': ({
+ moduleName,
+ funcName,
+ paramName
+ }) => {
+ if (!paramName || !moduleName || !funcName) {
+ throw new Error(`Unexpected input to 'invalid-string' error.`);
+ }
+ return `When using strings, the '${paramName}' parameter must start with ` + `'http' (for cross-origin matches) or '/' (for same-origin matches). ` + `Please see the docs for ${moduleName}.${funcName}() for ` + `more info.`;
+ },
+ 'channel-name-required': () => {
+ return `You must provide a channelName to construct a ` + `BroadcastCacheUpdate instance.`;
+ },
+ 'invalid-responses-are-same-args': () => {
+ return `The arguments passed into responsesAreSame() appear to be ` + `invalid. Please ensure valid Responses are used.`;
+ },
+ 'expire-custom-caches-only': () => {
+ return `You must provide a 'cacheName' property when using the ` + `expiration plugin with a runtime caching strategy.`;
+ },
+ 'unit-must-be-bytes': ({
+ normalizedRangeHeader
+ }) => {
+ if (!normalizedRangeHeader) {
+ throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);
+ }
+ return `The 'unit' portion of the Range header must be set to 'bytes'. ` + `The Range header provided was "${normalizedRangeHeader}"`;
+ },
+ 'single-range-only': ({
+ normalizedRangeHeader
+ }) => {
+ if (!normalizedRangeHeader) {
+ throw new Error(`Unexpected input to 'single-range-only' error.`);
+ }
+ return `Multiple ranges are not supported. Please use a single start ` + `value, and optional end value. The Range header provided was ` + `"${normalizedRangeHeader}"`;
+ },
+ 'invalid-range-values': ({
+ normalizedRangeHeader
+ }) => {
+ if (!normalizedRangeHeader) {
+ throw new Error(`Unexpected input to 'invalid-range-values' error.`);
+ }
+ return `The Range header is missing both start and end values. At least ` + `one of those values is needed. The Range header provided was ` + `"${normalizedRangeHeader}"`;
+ },
+ 'no-range-header': () => {
+ return `No Range header was found in the Request provided.`;
+ },
+ 'range-not-satisfiable': ({
+ size,
+ start,
+ end
+ }) => {
+ return `The start (${start}) and end (${end}) values in the Range are ` + `not satisfiable by the cached response, which is ${size} bytes.`;
+ },
+ 'attempt-to-cache-non-get-request': ({
+ url,
+ method
+ }) => {
+ return `Unable to cache '${url}' because it is a '${method}' request and ` + `only 'GET' requests can be cached.`;
+ },
+ 'cache-put-with-no-response': ({
+ url
+ }) => {
+ return `There was an attempt to cache '${url}' but the response was not ` + `defined.`;
+ },
+ 'no-response': ({
+ url,
+ error
+ }) => {
+ let message = `The strategy could not generate a response for '${url}'.`;
+ if (error) {
+ message += ` The underlying error is ${error}.`;
+ }
+ return message;
+ },
+ 'bad-precaching-response': ({
+ url,
+ status
+ }) => {
+ return `The precaching request for '${url}' failed` + (status ? ` with an HTTP status of ${status}.` : `.`);
+ },
+ 'non-precached-url': ({
+ url
+ }) => {
+ return `createHandlerBoundToURL('${url}') was called, but that URL is ` + `not precached. Please pass in a URL that is precached instead.`;
+ },
+ 'add-to-cache-list-conflicting-integrities': ({
+ url
+ }) => {
+ return `Two of the entries passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` + `${url} with different integrity values. Please remove one of them.`;
+ },
+ 'missing-precache-entry': ({
+ cacheName,
+ url
+ }) => {
+ return `Unable to find a precached response in ${cacheName} for ${url}.`;
+ },
+ 'cross-origin-copy-response': ({
+ origin
+ }) => {
+ return `workbox-core.copyResponse() can only be used with same-origin ` + `responses. It was passed a response with origin ${origin}.`;
+ },
+ 'opaque-streams-source': ({
+ type
+ }) => {
+ const message = `One of the workbox-streams sources resulted in an ` + `'${type}' response.`;
+ if (type === 'opaqueredirect') {
+ return `${message} Please do not use a navigation request that results ` + `in a redirect as a source.`;
+ }
+ return `${message} Please ensure your sources are CORS-enabled.`;
+ }
+ };
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ const generatorFunction = (code, details = {}) => {
+ const message = messages[code];
+ if (!message) {
+ throw new Error(`Unable to find message for code '${code}'.`);
+ }
+ return message(details);
+ };
+ const messageGenerator = generatorFunction;
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Workbox errors should be thrown with this class.
+ * This allows use to ensure the type easily in tests,
+ * helps developers identify errors from workbox
+ * easily and allows use to optimise error
+ * messages correctly.
+ *
+ * @private
+ */
+ class WorkboxError extends Error {
+ /**
+ *
+ * @param {string} errorCode The error code that
+ * identifies this particular error.
+ * @param {Object=} details Any relevant arguments
+ * that will help developers identify issues should
+ * be added as a key on the context object.
+ */
+ constructor(errorCode, details) {
+ const message = messageGenerator(errorCode, details);
+ super(message);
+ this.name = errorCode;
+ this.details = details;
+ }
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /*
+ * This method throws if the supplied value is not an array.
+ * The destructed values are required to produce a meaningful error for users.
+ * The destructed and restructured object is so it's clear what is
+ * needed.
+ */
+ const isArray = (value, details) => {
+ if (!Array.isArray(value)) {
+ throw new WorkboxError('not-an-array', details);
+ }
+ };
+ const hasMethod = (object, expectedMethod, details) => {
+ const type = typeof object[expectedMethod];
+ if (type !== 'function') {
+ details['expectedMethod'] = expectedMethod;
+ throw new WorkboxError('missing-a-method', details);
+ }
+ };
+ const isType = (object, expectedType, details) => {
+ if (typeof object !== expectedType) {
+ details['expectedType'] = expectedType;
+ throw new WorkboxError('incorrect-type', details);
+ }
+ };
+ const isInstance = (object,
+ // Need the general type to do the check later.
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ expectedClass, details) => {
+ if (!(object instanceof expectedClass)) {
+ details['expectedClassName'] = expectedClass.name;
+ throw new WorkboxError('incorrect-class', details);
+ }
+ };
+ const isOneOf = (value, validValues, details) => {
+ if (!validValues.includes(value)) {
+ details['validValueDescription'] = `Valid values are ${JSON.stringify(validValues)}.`;
+ throw new WorkboxError('invalid-value', details);
+ }
+ };
+ const isArrayOfClass = (value,
+ // Need general type to do check later.
+ expectedClass,
+ // eslint-disable-line
+ details) => {
+ const error = new WorkboxError('not-array-of-class', details);
+ if (!Array.isArray(value)) {
+ throw error;
+ }
+ for (const item of value) {
+ if (!(item instanceof expectedClass)) {
+ throw error;
+ }
+ }
+ };
+ const finalAssertExports = {
+ hasMethod,
+ isArray,
+ isInstance,
+ isOneOf,
+ isType,
+ isArrayOfClass
+ };
+
+ // @ts-ignore
+ try {
+ self['workbox:routing:7.0.0'] && _();
+ } catch (e) {}
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * The default HTTP method, 'GET', used when there's no specific method
+ * configured for a route.
+ *
+ * @type {string}
+ *
+ * @private
+ */
+ const defaultMethod = 'GET';
+ /**
+ * The list of valid HTTP methods associated with requests that could be routed.
+ *
+ * @type {Array}
+ *
+ * @private
+ */
+ const validMethods = ['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT'];
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * @param {function()|Object} handler Either a function, or an object with a
+ * 'handle' method.
+ * @return {Object} An object with a handle method.
+ *
+ * @private
+ */
+ const normalizeHandler = handler => {
+ if (handler && typeof handler === 'object') {
+ {
+ finalAssertExports.hasMethod(handler, 'handle', {
+ moduleName: 'workbox-routing',
+ className: 'Route',
+ funcName: 'constructor',
+ paramName: 'handler'
+ });
+ }
+ return handler;
+ } else {
+ {
+ finalAssertExports.isType(handler, 'function', {
+ moduleName: 'workbox-routing',
+ className: 'Route',
+ funcName: 'constructor',
+ paramName: 'handler'
+ });
+ }
+ return {
+ handle: handler
+ };
+ }
+ };
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * A `Route` consists of a pair of callback functions, "match" and "handler".
+ * The "match" callback determine if a route should be used to "handle" a
+ * request by returning a non-falsy value if it can. The "handler" callback
+ * is called when there is a match and should return a Promise that resolves
+ * to a `Response`.
+ *
+ * @memberof workbox-routing
+ */
+ class Route {
+ /**
+ * Constructor for Route class.
+ *
+ * @param {workbox-routing~matchCallback} match
+ * A callback function that determines whether the route matches a given
+ * `fetch` event by returning a non-falsy value.
+ * @param {workbox-routing~handlerCallback} handler A callback
+ * function that returns a Promise resolving to a Response.
+ * @param {string} [method='GET'] The HTTP method to match the Route
+ * against.
+ */
+ constructor(match, handler, method = defaultMethod) {
+ {
+ finalAssertExports.isType(match, 'function', {
+ moduleName: 'workbox-routing',
+ className: 'Route',
+ funcName: 'constructor',
+ paramName: 'match'
+ });
+ if (method) {
+ finalAssertExports.isOneOf(method, validMethods, {
+ paramName: 'method'
+ });
+ }
+ }
+ // These values are referenced directly by Router so cannot be
+ // altered by minificaton.
+ this.handler = normalizeHandler(handler);
+ this.match = match;
+ this.method = method;
+ }
+ /**
+ *
+ * @param {workbox-routing-handlerCallback} handler A callback
+ * function that returns a Promise resolving to a Response
+ */
+ setCatchHandler(handler) {
+ this.catchHandler = normalizeHandler(handler);
+ }
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * RegExpRoute makes it easy to create a regular expression based
+ * {@link workbox-routing.Route}.
+ *
+ * For same-origin requests the RegExp only needs to match part of the URL. For
+ * requests against third-party servers, you must define a RegExp that matches
+ * the start of the URL.
+ *
+ * @memberof workbox-routing
+ * @extends workbox-routing.Route
+ */
+ class RegExpRoute extends Route {
+ /**
+ * If the regular expression contains
+ * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},
+ * the captured values will be passed to the
+ * {@link workbox-routing~handlerCallback} `params`
+ * argument.
+ *
+ * @param {RegExp} regExp The regular expression to match against URLs.
+ * @param {workbox-routing~handlerCallback} handler A callback
+ * function that returns a Promise resulting in a Response.
+ * @param {string} [method='GET'] The HTTP method to match the Route
+ * against.
+ */
+ constructor(regExp, handler, method) {
+ {
+ finalAssertExports.isInstance(regExp, RegExp, {
+ moduleName: 'workbox-routing',
+ className: 'RegExpRoute',
+ funcName: 'constructor',
+ paramName: 'pattern'
+ });
+ }
+ const match = ({
+ url
+ }) => {
+ const result = regExp.exec(url.href);
+ // Return immediately if there's no match.
+ if (!result) {
+ return;
+ }
+ // Require that the match start at the first character in the URL string
+ // if it's a cross-origin request.
+ // See https://github.com/GoogleChrome/workbox/issues/281 for the context
+ // behind this behavior.
+ if (url.origin !== location.origin && result.index !== 0) {
+ {
+ logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` + `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` + `handle cross-origin requests if they match the entire URL.`);
+ }
+ return;
+ }
+ // If the route matches, but there aren't any capture groups defined, then
+ // this will return [], which is truthy and therefore sufficient to
+ // indicate a match.
+ // If there are capture groups, then it will return their values.
+ return result.slice(1);
+ };
+ super(match, handler, method);
+ }
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ const getFriendlyURL = url => {
+ const urlObj = new URL(String(url), location.href);
+ // See https://github.com/GoogleChrome/workbox/issues/2323
+ // We want to include everything, except for the origin if it's same-origin.
+ return urlObj.href.replace(new RegExp(`^${location.origin}`), '');
+ };
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * The Router can be used to process a `FetchEvent` using one or more
+ * {@link workbox-routing.Route}, responding with a `Response` if
+ * a matching route exists.
+ *
+ * If no route matches a given a request, the Router will use a "default"
+ * handler if one is defined.
+ *
+ * Should the matching Route throw an error, the Router will use a "catch"
+ * handler if one is defined to gracefully deal with issues and respond with a
+ * Request.
+ *
+ * If a request matches multiple routes, the **earliest** registered route will
+ * be used to respond to the request.
+ *
+ * @memberof workbox-routing
+ */
+ class Router {
+ /**
+ * Initializes a new Router.
+ */
+ constructor() {
+ this._routes = new Map();
+ this._defaultHandlerMap = new Map();
+ }
+ /**
+ * @return {Map>} routes A `Map` of HTTP
+ * method name ('GET', etc.) to an array of all the corresponding `Route`
+ * instances that are registered.
+ */
+ get routes() {
+ return this._routes;
+ }
+ /**
+ * Adds a fetch event listener to respond to events when a route matches
+ * the event's request.
+ */
+ addFetchListener() {
+ // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705
+ self.addEventListener('fetch', event => {
+ const {
+ request
+ } = event;
+ const responsePromise = this.handleRequest({
+ request,
+ event
+ });
+ if (responsePromise) {
+ event.respondWith(responsePromise);
+ }
+ });
+ }
+ /**
+ * Adds a message event listener for URLs to cache from the window.
+ * This is useful to cache resources loaded on the page prior to when the
+ * service worker started controlling it.
+ *
+ * The format of the message data sent from the window should be as follows.
+ * Where the `urlsToCache` array may consist of URL strings or an array of
+ * URL string + `requestInit` object (the same as you'd pass to `fetch()`).
+ *
+ * ```
+ * {
+ * type: 'CACHE_URLS',
+ * payload: {
+ * urlsToCache: [
+ * './script1.js',
+ * './script2.js',
+ * ['./script3.js', {mode: 'no-cors'}],
+ * ],
+ * },
+ * }
+ * ```
+ */
+ addCacheListener() {
+ // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705
+ self.addEventListener('message', event => {
+ // event.data is type 'any'
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
+ if (event.data && event.data.type === 'CACHE_URLS') {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ const {
+ payload
+ } = event.data;
+ {
+ logger.debug(`Caching URLs from the window`, payload.urlsToCache);
+ }
+ const requestPromises = Promise.all(payload.urlsToCache.map(entry => {
+ if (typeof entry === 'string') {
+ entry = [entry];
+ }
+ const request = new Request(...entry);
+ return this.handleRequest({
+ request,
+ event
+ });
+ // TODO(philipwalton): TypeScript errors without this typecast for
+ // some reason (probably a bug). The real type here should work but
+ // doesn't: `Array | undefined>`.
+ })); // TypeScript
+ event.waitUntil(requestPromises);
+ // If a MessageChannel was used, reply to the message on success.
+ if (event.ports && event.ports[0]) {
+ void requestPromises.then(() => event.ports[0].postMessage(true));
+ }
+ }
+ });
+ }
+ /**
+ * Apply the routing rules to a FetchEvent object to get a Response from an
+ * appropriate Route's handler.
+ *
+ * @param {Object} options
+ * @param {Request} options.request The request to handle.
+ * @param {ExtendableEvent} options.event The event that triggered the
+ * request.
+ * @return {Promise|undefined} A promise is returned if a
+ * registered route can handle the request. If there is no matching
+ * route and there's no `defaultHandler`, `undefined` is returned.
+ */
+ handleRequest({
+ request,
+ event
+ }) {
+ {
+ finalAssertExports.isInstance(request, Request, {
+ moduleName: 'workbox-routing',
+ className: 'Router',
+ funcName: 'handleRequest',
+ paramName: 'options.request'
+ });
+ }
+ const url = new URL(request.url, location.href);
+ if (!url.protocol.startsWith('http')) {
+ {
+ logger.debug(`Workbox Router only supports URLs that start with 'http'.`);
+ }
+ return;
+ }
+ const sameOrigin = url.origin === location.origin;
+ const {
+ params,
+ route
+ } = this.findMatchingRoute({
+ event,
+ request,
+ sameOrigin,
+ url
+ });
+ let handler = route && route.handler;
+ const debugMessages = [];
+ {
+ if (handler) {
+ debugMessages.push([`Found a route to handle this request:`, route]);
+ if (params) {
+ debugMessages.push([`Passing the following params to the route's handler:`, params]);
+ }
+ }
+ }
+ // If we don't have a handler because there was no matching route, then
+ // fall back to defaultHandler if that's defined.
+ const method = request.method;
+ if (!handler && this._defaultHandlerMap.has(method)) {
+ {
+ debugMessages.push(`Failed to find a matching route. Falling ` + `back to the default handler for ${method}.`);
+ }
+ handler = this._defaultHandlerMap.get(method);
+ }
+ if (!handler) {
+ {
+ // No handler so Workbox will do nothing. If logs is set of debug
+ // i.e. verbose, we should print out this information.
+ logger.debug(`No route found for: ${getFriendlyURL(url)}`);
+ }
+ return;
+ }
+ {
+ // We have a handler, meaning Workbox is going to handle the route.
+ // print the routing details to the console.
+ logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);
+ debugMessages.forEach(msg => {
+ if (Array.isArray(msg)) {
+ logger.log(...msg);
+ } else {
+ logger.log(msg);
+ }
+ });
+ logger.groupEnd();
+ }
+ // Wrap in try and catch in case the handle method throws a synchronous
+ // error. It should still callback to the catch handler.
+ let responsePromise;
+ try {
+ responsePromise = handler.handle({
+ url,
+ request,
+ event,
+ params
+ });
+ } catch (err) {
+ responsePromise = Promise.reject(err);
+ }
+ // Get route's catch handler, if it exists
+ const catchHandler = route && route.catchHandler;
+ if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) {
+ responsePromise = responsePromise.catch(async err => {
+ // If there's a route catch handler, process that first
+ if (catchHandler) {
+ {
+ // Still include URL here as it will be async from the console group
+ // and may not make sense without the URL
+ logger.groupCollapsed(`Error thrown when responding to: ` + ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);
+ logger.error(`Error thrown by:`, route);
+ logger.error(err);
+ logger.groupEnd();
+ }
+ try {
+ return await catchHandler.handle({
+ url,
+ request,
+ event,
+ params
+ });
+ } catch (catchErr) {
+ if (catchErr instanceof Error) {
+ err = catchErr;
+ }
+ }
+ }
+ if (this._catchHandler) {
+ {
+ // Still include URL here as it will be async from the console group
+ // and may not make sense without the URL
+ logger.groupCollapsed(`Error thrown when responding to: ` + ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);
+ logger.error(`Error thrown by:`, route);
+ logger.error(err);
+ logger.groupEnd();
+ }
+ return this._catchHandler.handle({
+ url,
+ request,
+ event
+ });
+ }
+ throw err;
+ });
+ }
+ return responsePromise;
+ }
+ /**
+ * Checks a request and URL (and optionally an event) against the list of
+ * registered routes, and if there's a match, returns the corresponding
+ * route along with any params generated by the match.
+ *
+ * @param {Object} options
+ * @param {URL} options.url
+ * @param {boolean} options.sameOrigin The result of comparing `url.origin`
+ * against the current origin.
+ * @param {Request} options.request The request to match.
+ * @param {Event} options.event The corresponding event.
+ * @return {Object} An object with `route` and `params` properties.
+ * They are populated if a matching route was found or `undefined`
+ * otherwise.
+ */
+ findMatchingRoute({
+ url,
+ sameOrigin,
+ request,
+ event
+ }) {
+ const routes = this._routes.get(request.method) || [];
+ for (const route of routes) {
+ let params;
+ // route.match returns type any, not possible to change right now.
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ const matchResult = route.match({
+ url,
+ sameOrigin,
+ request,
+ event
+ });
+ if (matchResult) {
+ {
+ // Warn developers that using an async matchCallback is almost always
+ // not the right thing to do.
+ if (matchResult instanceof Promise) {
+ logger.warn(`While routing ${getFriendlyURL(url)}, an async ` + `matchCallback function was used. Please convert the ` + `following route to use a synchronous matchCallback function:`, route);
+ }
+ }
+ // See https://github.com/GoogleChrome/workbox/issues/2079
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ params = matchResult;
+ if (Array.isArray(params) && params.length === 0) {
+ // Instead of passing an empty array in as params, use undefined.
+ params = undefined;
+ } else if (matchResult.constructor === Object &&
+ // eslint-disable-line
+ Object.keys(matchResult).length === 0) {
+ // Instead of passing an empty object in as params, use undefined.
+ params = undefined;
+ } else if (typeof matchResult === 'boolean') {
+ // For the boolean value true (rather than just something truth-y),
+ // don't set params.
+ // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353
+ params = undefined;
+ }
+ // Return early if have a match.
+ return {
+ route,
+ params
+ };
+ }
+ }
+ // If no match was found above, return and empty object.
+ return {};
+ }
+ /**
+ * Define a default `handler` that's called when no routes explicitly
+ * match the incoming request.
+ *
+ * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.
+ *
+ * Without a default handler, unmatched requests will go against the
+ * network as if there were no service worker present.
+ *
+ * @param {workbox-routing~handlerCallback} handler A callback
+ * function that returns a Promise resulting in a Response.
+ * @param {string} [method='GET'] The HTTP method to associate with this
+ * default handler. Each method has its own default.
+ */
+ setDefaultHandler(handler, method = defaultMethod) {
+ this._defaultHandlerMap.set(method, normalizeHandler(handler));
+ }
+ /**
+ * If a Route throws an error while handling a request, this `handler`
+ * will be called and given a chance to provide a response.
+ *
+ * @param {workbox-routing~handlerCallback} handler A callback
+ * function that returns a Promise resulting in a Response.
+ */
+ setCatchHandler(handler) {
+ this._catchHandler = normalizeHandler(handler);
+ }
+ /**
+ * Registers a route with the router.
+ *
+ * @param {workbox-routing.Route} route The route to register.
+ */
+ registerRoute(route) {
+ {
+ finalAssertExports.isType(route, 'object', {
+ moduleName: 'workbox-routing',
+ className: 'Router',
+ funcName: 'registerRoute',
+ paramName: 'route'
+ });
+ finalAssertExports.hasMethod(route, 'match', {
+ moduleName: 'workbox-routing',
+ className: 'Router',
+ funcName: 'registerRoute',
+ paramName: 'route'
+ });
+ finalAssertExports.isType(route.handler, 'object', {
+ moduleName: 'workbox-routing',
+ className: 'Router',
+ funcName: 'registerRoute',
+ paramName: 'route'
+ });
+ finalAssertExports.hasMethod(route.handler, 'handle', {
+ moduleName: 'workbox-routing',
+ className: 'Router',
+ funcName: 'registerRoute',
+ paramName: 'route.handler'
+ });
+ finalAssertExports.isType(route.method, 'string', {
+ moduleName: 'workbox-routing',
+ className: 'Router',
+ funcName: 'registerRoute',
+ paramName: 'route.method'
+ });
+ }
+ if (!this._routes.has(route.method)) {
+ this._routes.set(route.method, []);
+ }
+ // Give precedence to all of the earlier routes by adding this additional
+ // route to the end of the array.
+ this._routes.get(route.method).push(route);
+ }
+ /**
+ * Unregisters a route with the router.
+ *
+ * @param {workbox-routing.Route} route The route to unregister.
+ */
+ unregisterRoute(route) {
+ if (!this._routes.has(route.method)) {
+ throw new WorkboxError('unregister-route-but-not-found-with-method', {
+ method: route.method
+ });
+ }
+ const routeIndex = this._routes.get(route.method).indexOf(route);
+ if (routeIndex > -1) {
+ this._routes.get(route.method).splice(routeIndex, 1);
+ } else {
+ throw new WorkboxError('unregister-route-route-not-registered');
+ }
+ }
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ let defaultRouter;
+ /**
+ * Creates a new, singleton Router instance if one does not exist. If one
+ * does already exist, that instance is returned.
+ *
+ * @private
+ * @return {Router}
+ */
+ const getOrCreateDefaultRouter = () => {
+ if (!defaultRouter) {
+ defaultRouter = new Router();
+ // The helpers that use the default Router assume these listeners exist.
+ defaultRouter.addFetchListener();
+ defaultRouter.addCacheListener();
+ }
+ return defaultRouter;
+ };
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Easily register a RegExp, string, or function with a caching
+ * strategy to a singleton Router instance.
+ *
+ * This method will generate a Route for you if needed and
+ * call {@link workbox-routing.Router#registerRoute}.
+ *
+ * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture
+ * If the capture param is a `Route`, all other arguments will be ignored.
+ * @param {workbox-routing~handlerCallback} [handler] A callback
+ * function that returns a Promise resulting in a Response. This parameter
+ * is required if `capture` is not a `Route` object.
+ * @param {string} [method='GET'] The HTTP method to match the Route
+ * against.
+ * @return {workbox-routing.Route} The generated `Route`.
+ *
+ * @memberof workbox-routing
+ */
+ function registerRoute(capture, handler, method) {
+ let route;
+ if (typeof capture === 'string') {
+ const captureUrl = new URL(capture, location.href);
+ {
+ if (!(capture.startsWith('/') || capture.startsWith('http'))) {
+ throw new WorkboxError('invalid-string', {
+ moduleName: 'workbox-routing',
+ funcName: 'registerRoute',
+ paramName: 'capture'
+ });
+ }
+ // We want to check if Express-style wildcards are in the pathname only.
+ // TODO: Remove this log message in v4.
+ const valueToCheck = capture.startsWith('http') ? captureUrl.pathname : capture;
+ // See https://github.com/pillarjs/path-to-regexp#parameters
+ const wildcards = '[*:?+]';
+ if (new RegExp(`${wildcards}`).exec(valueToCheck)) {
+ logger.debug(`The '$capture' parameter contains an Express-style wildcard ` + `character (${wildcards}). Strings are now always interpreted as ` + `exact matches; use a RegExp for partial or wildcard matches.`);
+ }
+ }
+ const matchCallback = ({
+ url
+ }) => {
+ {
+ if (url.pathname === captureUrl.pathname && url.origin !== captureUrl.origin) {
+ logger.debug(`${capture} only partially matches the cross-origin URL ` + `${url.toString()}. This route will only handle cross-origin requests ` + `if they match the entire URL.`);
+ }
+ }
+ return url.href === captureUrl.href;
+ };
+ // If `capture` is a string then `handler` and `method` must be present.
+ route = new Route(matchCallback, handler, method);
+ } else if (capture instanceof RegExp) {
+ // If `capture` is a `RegExp` then `handler` and `method` must be present.
+ route = new RegExpRoute(capture, handler, method);
+ } else if (typeof capture === 'function') {
+ // If `capture` is a function then `handler` and `method` must be present.
+ route = new Route(capture, handler, method);
+ } else if (capture instanceof Route) {
+ route = capture;
+ } else {
+ throw new WorkboxError('unsupported-route-type', {
+ moduleName: 'workbox-routing',
+ funcName: 'registerRoute',
+ paramName: 'capture'
+ });
+ }
+ const defaultRouter = getOrCreateDefaultRouter();
+ defaultRouter.registerRoute(route);
+ return route;
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ const _cacheNameDetails = {
+ googleAnalytics: 'googleAnalytics',
+ precache: 'precache-v2',
+ prefix: 'workbox',
+ runtime: 'runtime',
+ suffix: typeof registration !== 'undefined' ? registration.scope : ''
+ };
+ const _createCacheName = cacheName => {
+ return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix].filter(value => value && value.length > 0).join('-');
+ };
+ const eachCacheNameDetail = fn => {
+ for (const key of Object.keys(_cacheNameDetails)) {
+ fn(key);
+ }
+ };
+ const cacheNames = {
+ updateDetails: details => {
+ eachCacheNameDetail(key => {
+ if (typeof details[key] === 'string') {
+ _cacheNameDetails[key] = details[key];
+ }
+ });
+ },
+ getGoogleAnalyticsName: userCacheName => {
+ return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);
+ },
+ getPrecacheName: userCacheName => {
+ return userCacheName || _createCacheName(_cacheNameDetails.precache);
+ },
+ getPrefix: () => {
+ return _cacheNameDetails.prefix;
+ },
+ getRuntimeName: userCacheName => {
+ return userCacheName || _createCacheName(_cacheNameDetails.runtime);
+ },
+ getSuffix: () => {
+ return _cacheNameDetails.suffix;
+ }
+ };
+
+ /*
+ Copyright 2020 Google LLC
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * A utility method that makes it easier to use `event.waitUntil` with
+ * async functions and return the result.
+ *
+ * @param {ExtendableEvent} event
+ * @param {Function} asyncFn
+ * @return {Function}
+ * @private
+ */
+ function waitUntil(event, asyncFn) {
+ const returnPromise = asyncFn();
+ event.waitUntil(returnPromise);
+ return returnPromise;
+ }
+
+ // @ts-ignore
+ try {
+ self['workbox:precaching:7.0.0'] && _();
+ } catch (e) {}
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ // Name of the search parameter used to store revision info.
+ const REVISION_SEARCH_PARAM = '__WB_REVISION__';
+ /**
+ * Converts a manifest entry into a versioned URL suitable for precaching.
+ *
+ * @param {Object|string} entry
+ * @return {string} A URL with versioning info.
+ *
+ * @private
+ * @memberof workbox-precaching
+ */
+ function createCacheKey(entry) {
+ if (!entry) {
+ throw new WorkboxError('add-to-cache-list-unexpected-type', {
+ entry
+ });
+ }
+ // If a precache manifest entry is a string, it's assumed to be a versioned
+ // URL, like '/app.abcd1234.js'. Return as-is.
+ if (typeof entry === 'string') {
+ const urlObject = new URL(entry, location.href);
+ return {
+ cacheKey: urlObject.href,
+ url: urlObject.href
+ };
+ }
+ const {
+ revision,
+ url
+ } = entry;
+ if (!url) {
+ throw new WorkboxError('add-to-cache-list-unexpected-type', {
+ entry
+ });
+ }
+ // If there's just a URL and no revision, then it's also assumed to be a
+ // versioned URL.
+ if (!revision) {
+ const urlObject = new URL(url, location.href);
+ return {
+ cacheKey: urlObject.href,
+ url: urlObject.href
+ };
+ }
+ // Otherwise, construct a properly versioned URL using the custom Workbox
+ // search parameter along with the revision info.
+ const cacheKeyURL = new URL(url, location.href);
+ const originalURL = new URL(url, location.href);
+ cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);
+ return {
+ cacheKey: cacheKeyURL.href,
+ url: originalURL.href
+ };
+ }
+
+ /*
+ Copyright 2020 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * A plugin, designed to be used with PrecacheController, to determine the
+ * of assets that were updated (or not updated) during the install event.
+ *
+ * @private
+ */
+ class PrecacheInstallReportPlugin {
+ constructor() {
+ this.updatedURLs = [];
+ this.notUpdatedURLs = [];
+ this.handlerWillStart = async ({
+ request,
+ state
+ }) => {
+ // TODO: `state` should never be undefined...
+ if (state) {
+ state.originalRequest = request;
+ }
+ };
+ this.cachedResponseWillBeUsed = async ({
+ event,
+ state,
+ cachedResponse
+ }) => {
+ if (event.type === 'install') {
+ if (state && state.originalRequest && state.originalRequest instanceof Request) {
+ // TODO: `state` should never be undefined...
+ const url = state.originalRequest.url;
+ if (cachedResponse) {
+ this.notUpdatedURLs.push(url);
+ } else {
+ this.updatedURLs.push(url);
+ }
+ }
+ }
+ return cachedResponse;
+ };
+ }
+ }
+
+ /*
+ Copyright 2020 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * A plugin, designed to be used with PrecacheController, to translate URLs into
+ * the corresponding cache key, based on the current revision info.
+ *
+ * @private
+ */
+ class PrecacheCacheKeyPlugin {
+ constructor({
+ precacheController
+ }) {
+ this.cacheKeyWillBeUsed = async ({
+ request,
+ params
+ }) => {
+ // Params is type any, can't change right now.
+ /* eslint-disable */
+ const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) || this._precacheController.getCacheKeyForURL(request.url);
+ /* eslint-enable */
+ return cacheKey ? new Request(cacheKey, {
+ headers: request.headers
+ }) : request;
+ };
+ this._precacheController = precacheController;
+ }
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * @param {string} groupTitle
+ * @param {Array} deletedURLs
+ *
+ * @private
+ */
+ const logGroup = (groupTitle, deletedURLs) => {
+ logger.groupCollapsed(groupTitle);
+ for (const url of deletedURLs) {
+ logger.log(url);
+ }
+ logger.groupEnd();
+ };
+ /**
+ * @param {Array} deletedURLs
+ *
+ * @private
+ * @memberof workbox-precaching
+ */
+ function printCleanupDetails(deletedURLs) {
+ const deletionCount = deletedURLs.length;
+ if (deletionCount > 0) {
+ logger.groupCollapsed(`During precaching cleanup, ` + `${deletionCount} cached ` + `request${deletionCount === 1 ? ' was' : 's were'} deleted.`);
+ logGroup('Deleted Cache Requests', deletedURLs);
+ logger.groupEnd();
+ }
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * @param {string} groupTitle
+ * @param {Array} urls
+ *
+ * @private
+ */
+ function _nestedGroup(groupTitle, urls) {
+ if (urls.length === 0) {
+ return;
+ }
+ logger.groupCollapsed(groupTitle);
+ for (const url of urls) {
+ logger.log(url);
+ }
+ logger.groupEnd();
+ }
+ /**
+ * @param {Array} urlsToPrecache
+ * @param {Array} urlsAlreadyPrecached
+ *
+ * @private
+ * @memberof workbox-precaching
+ */
+ function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) {
+ const precachedCount = urlsToPrecache.length;
+ const alreadyPrecachedCount = urlsAlreadyPrecached.length;
+ if (precachedCount || alreadyPrecachedCount) {
+ let message = `Precaching ${precachedCount} file${precachedCount === 1 ? '' : 's'}.`;
+ if (alreadyPrecachedCount > 0) {
+ message += ` ${alreadyPrecachedCount} ` + `file${alreadyPrecachedCount === 1 ? ' is' : 's are'} already cached.`;
+ }
+ logger.groupCollapsed(message);
+ _nestedGroup(`View newly precached URLs.`, urlsToPrecache);
+ _nestedGroup(`View previously precached URLs.`, urlsAlreadyPrecached);
+ logger.groupEnd();
+ }
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ let supportStatus;
+ /**
+ * A utility function that determines whether the current browser supports
+ * constructing a new `Response` from a `response.body` stream.
+ *
+ * @return {boolean} `true`, if the current browser can successfully
+ * construct a `Response` from a `response.body` stream, `false` otherwise.
+ *
+ * @private
+ */
+ function canConstructResponseFromBodyStream() {
+ if (supportStatus === undefined) {
+ const testResponse = new Response('');
+ if ('body' in testResponse) {
+ try {
+ new Response(testResponse.body);
+ supportStatus = true;
+ } catch (error) {
+ supportStatus = false;
+ }
+ }
+ supportStatus = false;
+ }
+ return supportStatus;
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Allows developers to copy a response and modify its `headers`, `status`,
+ * or `statusText` values (the values settable via a
+ * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}
+ * object in the constructor).
+ * To modify these values, pass a function as the second argument. That
+ * function will be invoked with a single object with the response properties
+ * `{headers, status, statusText}`. The return value of this function will
+ * be used as the `ResponseInit` for the new `Response`. To change the values
+ * either modify the passed parameter(s) and return it, or return a totally
+ * new object.
+ *
+ * This method is intentionally limited to same-origin responses, regardless of
+ * whether CORS was used or not.
+ *
+ * @param {Response} response
+ * @param {Function} modifier
+ * @memberof workbox-core
+ */
+ async function copyResponse(response, modifier) {
+ let origin = null;
+ // If response.url isn't set, assume it's cross-origin and keep origin null.
+ if (response.url) {
+ const responseURL = new URL(response.url);
+ origin = responseURL.origin;
+ }
+ if (origin !== self.location.origin) {
+ throw new WorkboxError('cross-origin-copy-response', {
+ origin
+ });
+ }
+ const clonedResponse = response.clone();
+ // Create a fresh `ResponseInit` object by cloning the headers.
+ const responseInit = {
+ headers: new Headers(clonedResponse.headers),
+ status: clonedResponse.status,
+ statusText: clonedResponse.statusText
+ };
+ // Apply any user modifications.
+ const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;
+ // Create the new response from the body stream and `ResponseInit`
+ // modifications. Note: not all browsers support the Response.body stream,
+ // so fall back to reading the entire body into memory as a blob.
+ const body = canConstructResponseFromBodyStream() ? clonedResponse.body : await clonedResponse.blob();
+ return new Response(body, modifiedResponseInit);
+ }
+
+ /*
+ Copyright 2020 Google LLC
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ function stripParams(fullURL, ignoreParams) {
+ const strippedURL = new URL(fullURL);
+ for (const param of ignoreParams) {
+ strippedURL.searchParams.delete(param);
+ }
+ return strippedURL.href;
+ }
+ /**
+ * Matches an item in the cache, ignoring specific URL params. This is similar
+ * to the `ignoreSearch` option, but it allows you to ignore just specific
+ * params (while continuing to match on the others).
+ *
+ * @private
+ * @param {Cache} cache
+ * @param {Request} request
+ * @param {Object} matchOptions
+ * @param {Array} ignoreParams
+ * @return {Promise}
+ */
+ async function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {
+ const strippedRequestURL = stripParams(request.url, ignoreParams);
+ // If the request doesn't include any ignored params, match as normal.
+ if (request.url === strippedRequestURL) {
+ return cache.match(request, matchOptions);
+ }
+ // Otherwise, match by comparing keys
+ const keysOptions = Object.assign(Object.assign({}, matchOptions), {
+ ignoreSearch: true
+ });
+ const cacheKeys = await cache.keys(request, keysOptions);
+ for (const cacheKey of cacheKeys) {
+ const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);
+ if (strippedRequestURL === strippedCacheKeyURL) {
+ return cache.match(cacheKey, matchOptions);
+ }
+ }
+ return;
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * The Deferred class composes Promises in a way that allows for them to be
+ * resolved or rejected from outside the constructor. In most cases promises
+ * should be used directly, but Deferreds can be necessary when the logic to
+ * resolve a promise must be separate.
+ *
+ * @private
+ */
+ class Deferred {
+ /**
+ * Creates a promise and exposes its resolve and reject functions as methods.
+ */
+ constructor() {
+ this.promise = new Promise((resolve, reject) => {
+ this.resolve = resolve;
+ this.reject = reject;
+ });
+ }
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ // Callbacks to be executed whenever there's a quota error.
+ // Can't change Function type right now.
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ const quotaErrorCallbacks = new Set();
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Runs all of the callback functions, one at a time sequentially, in the order
+ * in which they were registered.
+ *
+ * @memberof workbox-core
+ * @private
+ */
+ async function executeQuotaErrorCallbacks() {
+ {
+ logger.log(`About to run ${quotaErrorCallbacks.size} ` + `callbacks to clean up caches.`);
+ }
+ for (const callback of quotaErrorCallbacks) {
+ await callback();
+ {
+ logger.log(callback, 'is complete.');
+ }
+ }
+ {
+ logger.log('Finished running callbacks.');
+ }
+ }
+
+ /*
+ Copyright 2019 Google LLC
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Returns a promise that resolves and the passed number of milliseconds.
+ * This utility is an async/await-friendly version of `setTimeout`.
+ *
+ * @param {number} ms
+ * @return {Promise}
+ * @private
+ */
+ function timeout(ms) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+ }
+
+ // @ts-ignore
+ try {
+ self['workbox:strategies:7.0.0'] && _();
+ } catch (e) {}
+
+ /*
+ Copyright 2020 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ function toRequest(input) {
+ return typeof input === 'string' ? new Request(input) : input;
+ }
+ /**
+ * A class created every time a Strategy instance instance calls
+ * {@link workbox-strategies.Strategy~handle} or
+ * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and
+ * cache actions around plugin callbacks and keeps track of when the strategy
+ * is "done" (i.e. all added `event.waitUntil()` promises have resolved).
+ *
+ * @memberof workbox-strategies
+ */
+ class StrategyHandler {
+ /**
+ * Creates a new instance associated with the passed strategy and event
+ * that's handling the request.
+ *
+ * The constructor also initializes the state that will be passed to each of
+ * the plugins handling this request.
+ *
+ * @param {workbox-strategies.Strategy} strategy
+ * @param {Object} options
+ * @param {Request|string} options.request A request to run this strategy for.
+ * @param {ExtendableEvent} options.event The event associated with the
+ * request.
+ * @param {URL} [options.url]
+ * @param {*} [options.params] The return value from the
+ * {@link workbox-routing~matchCallback} (if applicable).
+ */
+ constructor(strategy, options) {
+ this._cacheKeys = {};
+ /**
+ * The request the strategy is performing (passed to the strategy's
+ * `handle()` or `handleAll()` method).
+ * @name request
+ * @instance
+ * @type {Request}
+ * @memberof workbox-strategies.StrategyHandler
+ */
+ /**
+ * The event associated with this request.
+ * @name event
+ * @instance
+ * @type {ExtendableEvent}
+ * @memberof workbox-strategies.StrategyHandler
+ */
+ /**
+ * A `URL` instance of `request.url` (if passed to the strategy's
+ * `handle()` or `handleAll()` method).
+ * Note: the `url` param will be present if the strategy was invoked
+ * from a workbox `Route` object.
+ * @name url
+ * @instance
+ * @type {URL|undefined}
+ * @memberof workbox-strategies.StrategyHandler
+ */
+ /**
+ * A `param` value (if passed to the strategy's
+ * `handle()` or `handleAll()` method).
+ * Note: the `param` param will be present if the strategy was invoked
+ * from a workbox `Route` object and the
+ * {@link workbox-routing~matchCallback} returned
+ * a truthy value (it will be that value).
+ * @name params
+ * @instance
+ * @type {*|undefined}
+ * @memberof workbox-strategies.StrategyHandler
+ */
+ {
+ finalAssertExports.isInstance(options.event, ExtendableEvent, {
+ moduleName: 'workbox-strategies',
+ className: 'StrategyHandler',
+ funcName: 'constructor',
+ paramName: 'options.event'
+ });
+ }
+ Object.assign(this, options);
+ this.event = options.event;
+ this._strategy = strategy;
+ this._handlerDeferred = new Deferred();
+ this._extendLifetimePromises = [];
+ // Copy the plugins list (since it's mutable on the strategy),
+ // so any mutations don't affect this handler instance.
+ this._plugins = [...strategy.plugins];
+ this._pluginStateMap = new Map();
+ for (const plugin of this._plugins) {
+ this._pluginStateMap.set(plugin, {});
+ }
+ this.event.waitUntil(this._handlerDeferred.promise);
+ }
+ /**
+ * Fetches a given request (and invokes any applicable plugin callback
+ * methods) using the `fetchOptions` (for non-navigation requests) and
+ * `plugins` defined on the `Strategy` object.
+ *
+ * The following plugin lifecycle methods are invoked when using this method:
+ * - `requestWillFetch()`
+ * - `fetchDidSucceed()`
+ * - `fetchDidFail()`
+ *
+ * @param {Request|string} input The URL or request to fetch.
+ * @return {Promise}
+ */
+ async fetch(input) {
+ const {
+ event
+ } = this;
+ let request = toRequest(input);
+ if (request.mode === 'navigate' && event instanceof FetchEvent && event.preloadResponse) {
+ const possiblePreloadResponse = await event.preloadResponse;
+ if (possiblePreloadResponse) {
+ {
+ logger.log(`Using a preloaded navigation response for ` + `'${getFriendlyURL(request.url)}'`);
+ }
+ return possiblePreloadResponse;
+ }
+ }
+ // If there is a fetchDidFail plugin, we need to save a clone of the
+ // original request before it's either modified by a requestWillFetch
+ // plugin or before the original request's body is consumed via fetch().
+ const originalRequest = this.hasCallback('fetchDidFail') ? request.clone() : null;
+ try {
+ for (const cb of this.iterateCallbacks('requestWillFetch')) {
+ request = await cb({
+ request: request.clone(),
+ event
+ });
+ }
+ } catch (err) {
+ if (err instanceof Error) {
+ throw new WorkboxError('plugin-error-request-will-fetch', {
+ thrownErrorMessage: err.message
+ });
+ }
+ }
+ // The request can be altered by plugins with `requestWillFetch` making
+ // the original request (most likely from a `fetch` event) different
+ // from the Request we make. Pass both to `fetchDidFail` to aid debugging.
+ const pluginFilteredRequest = request.clone();
+ try {
+ let fetchResponse;
+ // See https://github.com/GoogleChrome/workbox/issues/1796
+ fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);
+ if ("development" !== 'production') {
+ logger.debug(`Network request for ` + `'${getFriendlyURL(request.url)}' returned a response with ` + `status '${fetchResponse.status}'.`);
+ }
+ for (const callback of this.iterateCallbacks('fetchDidSucceed')) {
+ fetchResponse = await callback({
+ event,
+ request: pluginFilteredRequest,
+ response: fetchResponse
+ });
+ }
+ return fetchResponse;
+ } catch (error) {
+ {
+ logger.log(`Network request for ` + `'${getFriendlyURL(request.url)}' threw an error.`, error);
+ }
+ // `originalRequest` will only exist if a `fetchDidFail` callback
+ // is being used (see above).
+ if (originalRequest) {
+ await this.runCallbacks('fetchDidFail', {
+ error: error,
+ event,
+ originalRequest: originalRequest.clone(),
+ request: pluginFilteredRequest.clone()
+ });
+ }
+ throw error;
+ }
+ }
+ /**
+ * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on
+ * the response generated by `this.fetch()`.
+ *
+ * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,
+ * so you do not have to manually call `waitUntil()` on the event.
+ *
+ * @param {Request|string} input The request or URL to fetch and cache.
+ * @return {Promise}
+ */
+ async fetchAndCachePut(input) {
+ const response = await this.fetch(input);
+ const responseClone = response.clone();
+ void this.waitUntil(this.cachePut(input, responseClone));
+ return response;
+ }
+ /**
+ * Matches a request from the cache (and invokes any applicable plugin
+ * callback methods) using the `cacheName`, `matchOptions`, and `plugins`
+ * defined on the strategy object.
+ *
+ * The following plugin lifecycle methods are invoked when using this method:
+ * - cacheKeyWillByUsed()
+ * - cachedResponseWillByUsed()
+ *
+ * @param {Request|string} key The Request or URL to use as the cache key.
+ * @return {Promise} A matching response, if found.
+ */
+ async cacheMatch(key) {
+ const request = toRequest(key);
+ let cachedResponse;
+ const {
+ cacheName,
+ matchOptions
+ } = this._strategy;
+ const effectiveRequest = await this.getCacheKey(request, 'read');
+ const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), {
+ cacheName
+ });
+ cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);
+ {
+ if (cachedResponse) {
+ logger.debug(`Found a cached response in '${cacheName}'.`);
+ } else {
+ logger.debug(`No cached response found in '${cacheName}'.`);
+ }
+ }
+ for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {
+ cachedResponse = (await callback({
+ cacheName,
+ matchOptions,
+ cachedResponse,
+ request: effectiveRequest,
+ event: this.event
+ })) || undefined;
+ }
+ return cachedResponse;
+ }
+ /**
+ * Puts a request/response pair in the cache (and invokes any applicable
+ * plugin callback methods) using the `cacheName` and `plugins` defined on
+ * the strategy object.
+ *
+ * The following plugin lifecycle methods are invoked when using this method:
+ * - cacheKeyWillByUsed()
+ * - cacheWillUpdate()
+ * - cacheDidUpdate()
+ *
+ * @param {Request|string} key The request or URL to use as the cache key.
+ * @param {Response} response The response to cache.
+ * @return {Promise} `false` if a cacheWillUpdate caused the response
+ * not be cached, and `true` otherwise.
+ */
+ async cachePut(key, response) {
+ const request = toRequest(key);
+ // Run in the next task to avoid blocking other cache reads.
+ // https://github.com/w3c/ServiceWorker/issues/1397
+ await timeout(0);
+ const effectiveRequest = await this.getCacheKey(request, 'write');
+ {
+ if (effectiveRequest.method && effectiveRequest.method !== 'GET') {
+ throw new WorkboxError('attempt-to-cache-non-get-request', {
+ url: getFriendlyURL(effectiveRequest.url),
+ method: effectiveRequest.method
+ });
+ }
+ // See https://github.com/GoogleChrome/workbox/issues/2818
+ const vary = response.headers.get('Vary');
+ if (vary) {
+ logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` + `has a 'Vary: ${vary}' header. ` + `Consider setting the {ignoreVary: true} option on your strategy ` + `to ensure cache matching and deletion works as expected.`);
+ }
+ }
+ if (!response) {
+ {
+ logger.error(`Cannot cache non-existent response for ` + `'${getFriendlyURL(effectiveRequest.url)}'.`);
+ }
+ throw new WorkboxError('cache-put-with-no-response', {
+ url: getFriendlyURL(effectiveRequest.url)
+ });
+ }
+ const responseToCache = await this._ensureResponseSafeToCache(response);
+ if (!responseToCache) {
+ {
+ logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` + `will not be cached.`, responseToCache);
+ }
+ return false;
+ }
+ const {
+ cacheName,
+ matchOptions
+ } = this._strategy;
+ const cache = await self.caches.open(cacheName);
+ const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');
+ const oldResponse = hasCacheUpdateCallback ? await cacheMatchIgnoreParams(
+ // TODO(philipwalton): the `__WB_REVISION__` param is a precaching
+ // feature. Consider into ways to only add this behavior if using
+ // precaching.
+ cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions) : null;
+ {
+ logger.debug(`Updating the '${cacheName}' cache with a new Response ` + `for ${getFriendlyURL(effectiveRequest.url)}.`);
+ }
+ try {
+ await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);
+ } catch (error) {
+ if (error instanceof Error) {
+ // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError
+ if (error.name === 'QuotaExceededError') {
+ await executeQuotaErrorCallbacks();
+ }
+ throw error;
+ }
+ }
+ for (const callback of this.iterateCallbacks('cacheDidUpdate')) {
+ await callback({
+ cacheName,
+ oldResponse,
+ newResponse: responseToCache.clone(),
+ request: effectiveRequest,
+ event: this.event
+ });
+ }
+ return true;
+ }
+ /**
+ * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and
+ * executes any of those callbacks found in sequence. The final `Request`
+ * object returned by the last plugin is treated as the cache key for cache
+ * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have
+ * been registered, the passed request is returned unmodified
+ *
+ * @param {Request} request
+ * @param {string} mode
+ * @return {Promise}
+ */
+ async getCacheKey(request, mode) {
+ const key = `${request.url} | ${mode}`;
+ if (!this._cacheKeys[key]) {
+ let effectiveRequest = request;
+ for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {
+ effectiveRequest = toRequest(await callback({
+ mode,
+ request: effectiveRequest,
+ event: this.event,
+ // params has a type any can't change right now.
+ params: this.params // eslint-disable-line
+ }));
+ }
+ this._cacheKeys[key] = effectiveRequest;
+ }
+ return this._cacheKeys[key];
+ }
+ /**
+ * Returns true if the strategy has at least one plugin with the given
+ * callback.
+ *
+ * @param {string} name The name of the callback to check for.
+ * @return {boolean}
+ */
+ hasCallback(name) {
+ for (const plugin of this._strategy.plugins) {
+ if (name in plugin) {
+ return true;
+ }
+ }
+ return false;
+ }
+ /**
+ * Runs all plugin callbacks matching the given name, in order, passing the
+ * given param object (merged ith the current plugin state) as the only
+ * argument.
+ *
+ * Note: since this method runs all plugins, it's not suitable for cases
+ * where the return value of a callback needs to be applied prior to calling
+ * the next callback. See
+ * {@link workbox-strategies.StrategyHandler#iterateCallbacks}
+ * below for how to handle that case.
+ *
+ * @param {string} name The name of the callback to run within each plugin.
+ * @param {Object} param The object to pass as the first (and only) param
+ * when executing each callback. This object will be merged with the
+ * current plugin state prior to callback execution.
+ */
+ async runCallbacks(name, param) {
+ for (const callback of this.iterateCallbacks(name)) {
+ // TODO(philipwalton): not sure why `any` is needed. It seems like
+ // this should work with `as WorkboxPluginCallbackParam[C]`.
+ await callback(param);
+ }
+ }
+ /**
+ * Accepts a callback and returns an iterable of matching plugin callbacks,
+ * where each callback is wrapped with the current handler state (i.e. when
+ * you call each callback, whatever object parameter you pass it will
+ * be merged with the plugin's current state).
+ *
+ * @param {string} name The name fo the callback to run
+ * @return {Array}
+ */
+ *iterateCallbacks(name) {
+ for (const plugin of this._strategy.plugins) {
+ if (typeof plugin[name] === 'function') {
+ const state = this._pluginStateMap.get(plugin);
+ const statefulCallback = param => {
+ const statefulParam = Object.assign(Object.assign({}, param), {
+ state
+ });
+ // TODO(philipwalton): not sure why `any` is needed. It seems like
+ // this should work with `as WorkboxPluginCallbackParam[C]`.
+ return plugin[name](statefulParam);
+ };
+ yield statefulCallback;
+ }
+ }
+ }
+ /**
+ * Adds a promise to the
+ * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}
+ * of the event event associated with the request being handled (usually a
+ * `FetchEvent`).
+ *
+ * Note: you can await
+ * {@link workbox-strategies.StrategyHandler~doneWaiting}
+ * to know when all added promises have settled.
+ *
+ * @param {Promise} promise A promise to add to the extend lifetime promises
+ * of the event that triggered the request.
+ */
+ waitUntil(promise) {
+ this._extendLifetimePromises.push(promise);
+ return promise;
+ }
+ /**
+ * Returns a promise that resolves once all promises passed to
+ * {@link workbox-strategies.StrategyHandler~waitUntil}
+ * have settled.
+ *
+ * Note: any work done after `doneWaiting()` settles should be manually
+ * passed to an event's `waitUntil()` method (not this handler's
+ * `waitUntil()` method), otherwise the service worker thread my be killed
+ * prior to your work completing.
+ */
+ async doneWaiting() {
+ let promise;
+ while (promise = this._extendLifetimePromises.shift()) {
+ await promise;
+ }
+ }
+ /**
+ * Stops running the strategy and immediately resolves any pending
+ * `waitUntil()` promises.
+ */
+ destroy() {
+ this._handlerDeferred.resolve(null);
+ }
+ /**
+ * This method will call cacheWillUpdate on the available plugins (or use
+ * status === 200) to determine if the Response is safe and valid to cache.
+ *
+ * @param {Request} options.request
+ * @param {Response} options.response
+ * @return {Promise}
+ *
+ * @private
+ */
+ async _ensureResponseSafeToCache(response) {
+ let responseToCache = response;
+ let pluginsUsed = false;
+ for (const callback of this.iterateCallbacks('cacheWillUpdate')) {
+ responseToCache = (await callback({
+ request: this.request,
+ response: responseToCache,
+ event: this.event
+ })) || undefined;
+ pluginsUsed = true;
+ if (!responseToCache) {
+ break;
+ }
+ }
+ if (!pluginsUsed) {
+ if (responseToCache && responseToCache.status !== 200) {
+ responseToCache = undefined;
+ }
+ {
+ if (responseToCache) {
+ if (responseToCache.status !== 200) {
+ if (responseToCache.status === 0) {
+ logger.warn(`The response for '${this.request.url}' ` + `is an opaque response. The caching strategy that you're ` + `using will not cache opaque responses by default.`);
+ } else {
+ logger.debug(`The response for '${this.request.url}' ` + `returned a status code of '${response.status}' and won't ` + `be cached as a result.`);
+ }
+ }
+ }
+ }
+ }
+ return responseToCache;
+ }
+ }
+
+ /*
+ Copyright 2020 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * An abstract base class that all other strategy classes must extend from:
+ *
+ * @memberof workbox-strategies
+ */
+ class Strategy {
+ /**
+ * Creates a new instance of the strategy and sets all documented option
+ * properties as public instance properties.
+ *
+ * Note: if a custom strategy class extends the base Strategy class and does
+ * not need more than these properties, it does not need to define its own
+ * constructor.
+ *
+ * @param {Object} [options]
+ * @param {string} [options.cacheName] Cache name to store and retrieve
+ * requests. Defaults to the cache names provided by
+ * {@link workbox-core.cacheNames}.
+ * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}
+ * to use in conjunction with this caching strategy.
+ * @param {Object} [options.fetchOptions] Values passed along to the
+ * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)
+ * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)
+ * `fetch()` requests made by this strategy.
+ * @param {Object} [options.matchOptions] The
+ * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}
+ * for any `cache.match()` or `cache.put()` calls made by this strategy.
+ */
+ constructor(options = {}) {
+ /**
+ * Cache name to store and retrieve
+ * requests. Defaults to the cache names provided by
+ * {@link workbox-core.cacheNames}.
+ *
+ * @type {string}
+ */
+ this.cacheName = cacheNames.getRuntimeName(options.cacheName);
+ /**
+ * The list
+ * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}
+ * used by this strategy.
+ *
+ * @type {Array}
+ */
+ this.plugins = options.plugins || [];
+ /**
+ * Values passed along to the
+ * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}
+ * of all fetch() requests made by this strategy.
+ *
+ * @type {Object}
+ */
+ this.fetchOptions = options.fetchOptions;
+ /**
+ * The
+ * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}
+ * for any `cache.match()` or `cache.put()` calls made by this strategy.
+ *
+ * @type {Object}
+ */
+ this.matchOptions = options.matchOptions;
+ }
+ /**
+ * Perform a request strategy and returns a `Promise` that will resolve with
+ * a `Response`, invoking all relevant plugin callbacks.
+ *
+ * When a strategy instance is registered with a Workbox
+ * {@link workbox-routing.Route}, this method is automatically
+ * called when the route matches.
+ *
+ * Alternatively, this method can be used in a standalone `FetchEvent`
+ * listener by passing it to `event.respondWith()`.
+ *
+ * @param {FetchEvent|Object} options A `FetchEvent` or an object with the
+ * properties listed below.
+ * @param {Request|string} options.request A request to run this strategy for.
+ * @param {ExtendableEvent} options.event The event associated with the
+ * request.
+ * @param {URL} [options.url]
+ * @param {*} [options.params]
+ */
+ handle(options) {
+ const [responseDone] = this.handleAll(options);
+ return responseDone;
+ }
+ /**
+ * Similar to {@link workbox-strategies.Strategy~handle}, but
+ * instead of just returning a `Promise` that resolves to a `Response` it
+ * it will return an tuple of `[response, done]` promises, where the former
+ * (`response`) is equivalent to what `handle()` returns, and the latter is a
+ * Promise that will resolve once any promises that were added to
+ * `event.waitUntil()` as part of performing the strategy have completed.
+ *
+ * You can await the `done` promise to ensure any extra work performed by
+ * the strategy (usually caching responses) completes successfully.
+ *
+ * @param {FetchEvent|Object} options A `FetchEvent` or an object with the
+ * properties listed below.
+ * @param {Request|string} options.request A request to run this strategy for.
+ * @param {ExtendableEvent} options.event The event associated with the
+ * request.
+ * @param {URL} [options.url]
+ * @param {*} [options.params]
+ * @return {Array} A tuple of [response, done]
+ * promises that can be used to determine when the response resolves as
+ * well as when the handler has completed all its work.
+ */
+ handleAll(options) {
+ // Allow for flexible options to be passed.
+ if (options instanceof FetchEvent) {
+ options = {
+ event: options,
+ request: options.request
+ };
+ }
+ const event = options.event;
+ const request = typeof options.request === 'string' ? new Request(options.request) : options.request;
+ const params = 'params' in options ? options.params : undefined;
+ const handler = new StrategyHandler(this, {
+ event,
+ request,
+ params
+ });
+ const responseDone = this._getResponse(handler, request, event);
+ const handlerDone = this._awaitComplete(responseDone, handler, request, event);
+ // Return an array of promises, suitable for use with Promise.all().
+ return [responseDone, handlerDone];
+ }
+ async _getResponse(handler, request, event) {
+ await handler.runCallbacks('handlerWillStart', {
+ event,
+ request
+ });
+ let response = undefined;
+ try {
+ response = await this._handle(request, handler);
+ // The "official" Strategy subclasses all throw this error automatically,
+ // but in case a third-party Strategy doesn't, ensure that we have a
+ // consistent failure when there's no response or an error response.
+ if (!response || response.type === 'error') {
+ throw new WorkboxError('no-response', {
+ url: request.url
+ });
+ }
+ } catch (error) {
+ if (error instanceof Error) {
+ for (const callback of handler.iterateCallbacks('handlerDidError')) {
+ response = await callback({
+ error,
+ event,
+ request
+ });
+ if (response) {
+ break;
+ }
+ }
+ }
+ if (!response) {
+ throw error;
+ } else {
+ logger.log(`While responding to '${getFriendlyURL(request.url)}', ` + `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` + `a handlerDidError plugin.`);
+ }
+ }
+ for (const callback of handler.iterateCallbacks('handlerWillRespond')) {
+ response = await callback({
+ event,
+ request,
+ response
+ });
+ }
+ return response;
+ }
+ async _awaitComplete(responseDone, handler, request, event) {
+ let response;
+ let error;
+ try {
+ response = await responseDone;
+ } catch (error) {
+ // Ignore errors, as response errors should be caught via the `response`
+ // promise above. The `done` promise will only throw for errors in
+ // promises passed to `handler.waitUntil()`.
+ }
+ try {
+ await handler.runCallbacks('handlerDidRespond', {
+ event,
+ request,
+ response
+ });
+ await handler.doneWaiting();
+ } catch (waitUntilError) {
+ if (waitUntilError instanceof Error) {
+ error = waitUntilError;
+ }
+ }
+ await handler.runCallbacks('handlerDidComplete', {
+ event,
+ request,
+ response,
+ error: error
+ });
+ handler.destroy();
+ if (error) {
+ throw error;
+ }
+ }
+ }
+ /**
+ * Classes extending the `Strategy` based class should implement this method,
+ * and leverage the {@link workbox-strategies.StrategyHandler}
+ * arg to perform all fetching and cache logic, which will ensure all relevant
+ * cache, cache options, fetch options and plugins are used (per the current
+ * strategy instance).
+ *
+ * @name _handle
+ * @instance
+ * @abstract
+ * @function
+ * @param {Request} request
+ * @param {workbox-strategies.StrategyHandler} handler
+ * @return {Promise}
+ *
+ * @memberof workbox-strategies.Strategy
+ */
+
+ /*
+ Copyright 2020 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * A {@link workbox-strategies.Strategy} implementation
+ * specifically designed to work with
+ * {@link workbox-precaching.PrecacheController}
+ * to both cache and fetch precached assets.
+ *
+ * Note: an instance of this class is created automatically when creating a
+ * `PrecacheController`; it's generally not necessary to create this yourself.
+ *
+ * @extends workbox-strategies.Strategy
+ * @memberof workbox-precaching
+ */
+ class PrecacheStrategy extends Strategy {
+ /**
+ *
+ * @param {Object} [options]
+ * @param {string} [options.cacheName] Cache name to store and retrieve
+ * requests. Defaults to the cache names provided by
+ * {@link workbox-core.cacheNames}.
+ * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}
+ * to use in conjunction with this caching strategy.
+ * @param {Object} [options.fetchOptions] Values passed along to the
+ * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}
+ * of all fetch() requests made by this strategy.
+ * @param {Object} [options.matchOptions] The
+ * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}
+ * for any `cache.match()` or `cache.put()` calls made by this strategy.
+ * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to
+ * get the response from the network if there's a precache miss.
+ */
+ constructor(options = {}) {
+ options.cacheName = cacheNames.getPrecacheName(options.cacheName);
+ super(options);
+ this._fallbackToNetwork = options.fallbackToNetwork === false ? false : true;
+ // Redirected responses cannot be used to satisfy a navigation request, so
+ // any redirected response must be "copied" rather than cloned, so the new
+ // response doesn't contain the `redirected` flag. See:
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1
+ this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);
+ }
+ /**
+ * @private
+ * @param {Request|string} request A request to run this strategy for.
+ * @param {workbox-strategies.StrategyHandler} handler The event that
+ * triggered the request.
+ * @return {Promise}
+ */
+ async _handle(request, handler) {
+ const response = await handler.cacheMatch(request);
+ if (response) {
+ return response;
+ }
+ // If this is an `install` event for an entry that isn't already cached,
+ // then populate the cache.
+ if (handler.event && handler.event.type === 'install') {
+ return await this._handleInstall(request, handler);
+ }
+ // Getting here means something went wrong. An entry that should have been
+ // precached wasn't found in the cache.
+ return await this._handleFetch(request, handler);
+ }
+ async _handleFetch(request, handler) {
+ let response;
+ const params = handler.params || {};
+ // Fall back to the network if we're configured to do so.
+ if (this._fallbackToNetwork) {
+ {
+ logger.warn(`The precached response for ` + `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` + `found. Falling back to the network.`);
+ }
+ const integrityInManifest = params.integrity;
+ const integrityInRequest = request.integrity;
+ const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;
+ // Do not add integrity if the original request is no-cors
+ // See https://github.com/GoogleChrome/workbox/issues/3096
+ response = await handler.fetch(new Request(request, {
+ integrity: request.mode !== 'no-cors' ? integrityInRequest || integrityInManifest : undefined
+ }));
+ // It's only "safe" to repair the cache if we're using SRI to guarantee
+ // that the response matches the precache manifest's expectations,
+ // and there's either a) no integrity property in the incoming request
+ // or b) there is an integrity, and it matches the precache manifest.
+ // See https://github.com/GoogleChrome/workbox/issues/2858
+ // Also if the original request users no-cors we don't use integrity.
+ // See https://github.com/GoogleChrome/workbox/issues/3096
+ if (integrityInManifest && noIntegrityConflict && request.mode !== 'no-cors') {
+ this._useDefaultCacheabilityPluginIfNeeded();
+ const wasCached = await handler.cachePut(request, response.clone());
+ {
+ if (wasCached) {
+ logger.log(`A response for ${getFriendlyURL(request.url)} ` + `was used to "repair" the precache.`);
+ }
+ }
+ }
+ } else {
+ // This shouldn't normally happen, but there are edge cases:
+ // https://github.com/GoogleChrome/workbox/issues/1441
+ throw new WorkboxError('missing-precache-entry', {
+ cacheName: this.cacheName,
+ url: request.url
+ });
+ }
+ {
+ const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));
+ // Workbox is going to handle the route.
+ // print the routing details to the console.
+ logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));
+ logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);
+ logger.groupCollapsed(`View request details here.`);
+ logger.log(request);
+ logger.groupEnd();
+ logger.groupCollapsed(`View response details here.`);
+ logger.log(response);
+ logger.groupEnd();
+ logger.groupEnd();
+ }
+ return response;
+ }
+ async _handleInstall(request, handler) {
+ this._useDefaultCacheabilityPluginIfNeeded();
+ const response = await handler.fetch(request);
+ // Make sure we defer cachePut() until after we know the response
+ // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737
+ const wasCached = await handler.cachePut(request, response.clone());
+ if (!wasCached) {
+ // Throwing here will lead to the `install` handler failing, which
+ // we want to do if *any* of the responses aren't safe to cache.
+ throw new WorkboxError('bad-precaching-response', {
+ url: request.url,
+ status: response.status
+ });
+ }
+ return response;
+ }
+ /**
+ * This method is complex, as there a number of things to account for:
+ *
+ * The `plugins` array can be set at construction, and/or it might be added to
+ * to at any time before the strategy is used.
+ *
+ * At the time the strategy is used (i.e. during an `install` event), there
+ * needs to be at least one plugin that implements `cacheWillUpdate` in the
+ * array, other than `copyRedirectedCacheableResponsesPlugin`.
+ *
+ * - If this method is called and there are no suitable `cacheWillUpdate`
+ * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.
+ *
+ * - If this method is called and there is exactly one `cacheWillUpdate`, then
+ * we don't have to do anything (this might be a previously added
+ * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).
+ *
+ * - If this method is called and there is more than one `cacheWillUpdate`,
+ * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,
+ * we need to remove it. (This situation is unlikely, but it could happen if
+ * the strategy is used multiple times, the first without a `cacheWillUpdate`,
+ * and then later on after manually adding a custom `cacheWillUpdate`.)
+ *
+ * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.
+ *
+ * @private
+ */
+ _useDefaultCacheabilityPluginIfNeeded() {
+ let defaultPluginIndex = null;
+ let cacheWillUpdatePluginCount = 0;
+ for (const [index, plugin] of this.plugins.entries()) {
+ // Ignore the copy redirected plugin when determining what to do.
+ if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {
+ continue;
+ }
+ // Save the default plugin's index, in case it needs to be removed.
+ if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {
+ defaultPluginIndex = index;
+ }
+ if (plugin.cacheWillUpdate) {
+ cacheWillUpdatePluginCount++;
+ }
+ }
+ if (cacheWillUpdatePluginCount === 0) {
+ this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);
+ } else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {
+ // Only remove the default plugin; multiple custom plugins are allowed.
+ this.plugins.splice(defaultPluginIndex, 1);
+ }
+ // Nothing needs to be done if cacheWillUpdatePluginCount is 1
+ }
+ }
+ PrecacheStrategy.defaultPrecacheCacheabilityPlugin = {
+ async cacheWillUpdate({
+ response
+ }) {
+ if (!response || response.status >= 400) {
+ return null;
+ }
+ return response;
+ }
+ };
+ PrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {
+ async cacheWillUpdate({
+ response
+ }) {
+ return response.redirected ? await copyResponse(response) : response;
+ }
+ };
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Performs efficient precaching of assets.
+ *
+ * @memberof workbox-precaching
+ */
+ class PrecacheController {
+ /**
+ * Create a new PrecacheController.
+ *
+ * @param {Object} [options]
+ * @param {string} [options.cacheName] The cache to use for precaching.
+ * @param {string} [options.plugins] Plugins to use when precaching as well
+ * as responding to fetch events for precached assets.
+ * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to
+ * get the response from the network if there's a precache miss.
+ */
+ constructor({
+ cacheName,
+ plugins = [],
+ fallbackToNetwork = true
+ } = {}) {
+ this._urlsToCacheKeys = new Map();
+ this._urlsToCacheModes = new Map();
+ this._cacheKeysToIntegrities = new Map();
+ this._strategy = new PrecacheStrategy({
+ cacheName: cacheNames.getPrecacheName(cacheName),
+ plugins: [...plugins, new PrecacheCacheKeyPlugin({
+ precacheController: this
+ })],
+ fallbackToNetwork
+ });
+ // Bind the install and activate methods to the instance.
+ this.install = this.install.bind(this);
+ this.activate = this.activate.bind(this);
+ }
+ /**
+ * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and
+ * used to cache assets and respond to fetch events.
+ */
+ get strategy() {
+ return this._strategy;
+ }
+ /**
+ * Adds items to the precache list, removing any duplicates and
+ * stores the files in the
+ * {@link workbox-core.cacheNames|"precache cache"} when the service
+ * worker installs.
+ *
+ * This method can be called multiple times.
+ *
+ * @param {Array} [entries=[]] Array of entries to precache.
+ */
+ precache(entries) {
+ this.addToCacheList(entries);
+ if (!this._installAndActiveListenersAdded) {
+ self.addEventListener('install', this.install);
+ self.addEventListener('activate', this.activate);
+ this._installAndActiveListenersAdded = true;
+ }
+ }
+ /**
+ * This method will add items to the precache list, removing duplicates
+ * and ensuring the information is valid.
+ *
+ * @param {Array} entries
+ * Array of entries to precache.
+ */
+ addToCacheList(entries) {
+ {
+ finalAssertExports.isArray(entries, {
+ moduleName: 'workbox-precaching',
+ className: 'PrecacheController',
+ funcName: 'addToCacheList',
+ paramName: 'entries'
+ });
+ }
+ const urlsToWarnAbout = [];
+ for (const entry of entries) {
+ // See https://github.com/GoogleChrome/workbox/issues/2259
+ if (typeof entry === 'string') {
+ urlsToWarnAbout.push(entry);
+ } else if (entry && entry.revision === undefined) {
+ urlsToWarnAbout.push(entry.url);
+ }
+ const {
+ cacheKey,
+ url
+ } = createCacheKey(entry);
+ const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';
+ if (this._urlsToCacheKeys.has(url) && this._urlsToCacheKeys.get(url) !== cacheKey) {
+ throw new WorkboxError('add-to-cache-list-conflicting-entries', {
+ firstEntry: this._urlsToCacheKeys.get(url),
+ secondEntry: cacheKey
+ });
+ }
+ if (typeof entry !== 'string' && entry.integrity) {
+ if (this._cacheKeysToIntegrities.has(cacheKey) && this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {
+ throw new WorkboxError('add-to-cache-list-conflicting-integrities', {
+ url
+ });
+ }
+ this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);
+ }
+ this._urlsToCacheKeys.set(url, cacheKey);
+ this._urlsToCacheModes.set(url, cacheMode);
+ if (urlsToWarnAbout.length > 0) {
+ const warningMessage = `Workbox is precaching URLs without revision ` + `info: ${urlsToWarnAbout.join(', ')}\nThis is generally NOT safe. ` + `Learn more at https://bit.ly/wb-precache`;
+ {
+ logger.warn(warningMessage);
+ }
+ }
+ }
+ }
+ /**
+ * Precaches new and updated assets. Call this method from the service worker
+ * install event.
+ *
+ * Note: this method calls `event.waitUntil()` for you, so you do not need
+ * to call it yourself in your event handlers.
+ *
+ * @param {ExtendableEvent} event
+ * @return {Promise}
+ */
+ install(event) {
+ // waitUntil returns Promise
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+ return waitUntil(event, async () => {
+ const installReportPlugin = new PrecacheInstallReportPlugin();
+ this.strategy.plugins.push(installReportPlugin);
+ // Cache entries one at a time.
+ // See https://github.com/GoogleChrome/workbox/issues/2528
+ for (const [url, cacheKey] of this._urlsToCacheKeys) {
+ const integrity = this._cacheKeysToIntegrities.get(cacheKey);
+ const cacheMode = this._urlsToCacheModes.get(url);
+ const request = new Request(url, {
+ integrity,
+ cache: cacheMode,
+ credentials: 'same-origin'
+ });
+ await Promise.all(this.strategy.handleAll({
+ params: {
+ cacheKey
+ },
+ request,
+ event
+ }));
+ }
+ const {
+ updatedURLs,
+ notUpdatedURLs
+ } = installReportPlugin;
+ {
+ printInstallDetails(updatedURLs, notUpdatedURLs);
+ }
+ return {
+ updatedURLs,
+ notUpdatedURLs
+ };
+ });
+ }
+ /**
+ * Deletes assets that are no longer present in the current precache manifest.
+ * Call this method from the service worker activate event.
+ *
+ * Note: this method calls `event.waitUntil()` for you, so you do not need
+ * to call it yourself in your event handlers.
+ *
+ * @param {ExtendableEvent} event
+ * @return {Promise}
+ */
+ activate(event) {
+ // waitUntil returns Promise
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+ return waitUntil(event, async () => {
+ const cache = await self.caches.open(this.strategy.cacheName);
+ const currentlyCachedRequests = await cache.keys();
+ const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());
+ const deletedURLs = [];
+ for (const request of currentlyCachedRequests) {
+ if (!expectedCacheKeys.has(request.url)) {
+ await cache.delete(request);
+ deletedURLs.push(request.url);
+ }
+ }
+ {
+ printCleanupDetails(deletedURLs);
+ }
+ return {
+ deletedURLs
+ };
+ });
+ }
+ /**
+ * Returns a mapping of a precached URL to the corresponding cache key, taking
+ * into account the revision information for the URL.
+ *
+ * @return {Map} A URL to cache key mapping.
+ */
+ getURLsToCacheKeys() {
+ return this._urlsToCacheKeys;
+ }
+ /**
+ * Returns a list of all the URLs that have been precached by the current
+ * service worker.
+ *
+ * @return {Array} The precached URLs.
+ */
+ getCachedURLs() {
+ return [...this._urlsToCacheKeys.keys()];
+ }
+ /**
+ * Returns the cache key used for storing a given URL. If that URL is
+ * unversioned, like `/index.html', then the cache key will be the original
+ * URL with a search parameter appended to it.
+ *
+ * @param {string} url A URL whose cache key you want to look up.
+ * @return {string} The versioned URL that corresponds to a cache key
+ * for the original URL, or undefined if that URL isn't precached.
+ */
+ getCacheKeyForURL(url) {
+ const urlObject = new URL(url, location.href);
+ return this._urlsToCacheKeys.get(urlObject.href);
+ }
+ /**
+ * @param {string} url A cache key whose SRI you want to look up.
+ * @return {string} The subresource integrity associated with the cache key,
+ * or undefined if it's not set.
+ */
+ getIntegrityForCacheKey(cacheKey) {
+ return this._cacheKeysToIntegrities.get(cacheKey);
+ }
+ /**
+ * This acts as a drop-in replacement for
+ * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)
+ * with the following differences:
+ *
+ * - It knows what the name of the precache is, and only checks in that cache.
+ * - It allows you to pass in an "original" URL without versioning parameters,
+ * and it will automatically look up the correct cache key for the currently
+ * active revision of that URL.
+ *
+ * E.g., `matchPrecache('index.html')` will find the correct precached
+ * response for the currently active service worker, even if the actual cache
+ * key is `'/index.html?__WB_REVISION__=1234abcd'`.
+ *
+ * @param {string|Request} request The key (without revisioning parameters)
+ * to look up in the precache.
+ * @return {Promise}
+ */
+ async matchPrecache(request) {
+ const url = request instanceof Request ? request.url : request;
+ const cacheKey = this.getCacheKeyForURL(url);
+ if (cacheKey) {
+ const cache = await self.caches.open(this.strategy.cacheName);
+ return cache.match(cacheKey);
+ }
+ return undefined;
+ }
+ /**
+ * Returns a function that looks up `url` in the precache (taking into
+ * account revision information), and returns the corresponding `Response`.
+ *
+ * @param {string} url The precached URL which will be used to lookup the
+ * `Response`.
+ * @return {workbox-routing~handlerCallback}
+ */
+ createHandlerBoundToURL(url) {
+ const cacheKey = this.getCacheKeyForURL(url);
+ if (!cacheKey) {
+ throw new WorkboxError('non-precached-url', {
+ url
+ });
+ }
+ return options => {
+ options.request = new Request(url);
+ options.params = Object.assign({
+ cacheKey
+ }, options.params);
+ return this.strategy.handle(options);
+ };
+ }
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ let precacheController;
+ /**
+ * @return {PrecacheController}
+ * @private
+ */
+ const getOrCreatePrecacheController = () => {
+ if (!precacheController) {
+ precacheController = new PrecacheController();
+ }
+ return precacheController;
+ };
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Removes any URL search parameters that should be ignored.
+ *
+ * @param {URL} urlObject The original URL.
+ * @param {Array} ignoreURLParametersMatching RegExps to test against
+ * each search parameter name. Matches mean that the search parameter should be
+ * ignored.
+ * @return {URL} The URL with any ignored search parameters removed.
+ *
+ * @private
+ * @memberof workbox-precaching
+ */
+ function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {
+ // Convert the iterable into an array at the start of the loop to make sure
+ // deletion doesn't mess up iteration.
+ for (const paramName of [...urlObject.searchParams.keys()]) {
+ if (ignoreURLParametersMatching.some(regExp => regExp.test(paramName))) {
+ urlObject.searchParams.delete(paramName);
+ }
+ }
+ return urlObject;
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Generator function that yields possible variations on the original URL to
+ * check, one at a time.
+ *
+ * @param {string} url
+ * @param {Object} options
+ *
+ * @private
+ * @memberof workbox-precaching
+ */
+ function* generateURLVariations(url, {
+ ignoreURLParametersMatching = [/^utm_/, /^fbclid$/],
+ directoryIndex = 'index.html',
+ cleanURLs = true,
+ urlManipulation
+ } = {}) {
+ const urlObject = new URL(url, location.href);
+ urlObject.hash = '';
+ yield urlObject.href;
+ const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);
+ yield urlWithoutIgnoredParams.href;
+ if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {
+ const directoryURL = new URL(urlWithoutIgnoredParams.href);
+ directoryURL.pathname += directoryIndex;
+ yield directoryURL.href;
+ }
+ if (cleanURLs) {
+ const cleanURL = new URL(urlWithoutIgnoredParams.href);
+ cleanURL.pathname += '.html';
+ yield cleanURL.href;
+ }
+ if (urlManipulation) {
+ const additionalURLs = urlManipulation({
+ url: urlObject
+ });
+ for (const urlToAttempt of additionalURLs) {
+ yield urlToAttempt.href;
+ }
+ }
+ }
+
+ /*
+ Copyright 2020 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * A subclass of {@link workbox-routing.Route} that takes a
+ * {@link workbox-precaching.PrecacheController}
+ * instance and uses it to match incoming requests and handle fetching
+ * responses from the precache.
+ *
+ * @memberof workbox-precaching
+ * @extends workbox-routing.Route
+ */
+ class PrecacheRoute extends Route {
+ /**
+ * @param {PrecacheController} precacheController A `PrecacheController`
+ * instance used to both match requests and respond to fetch events.
+ * @param {Object} [options] Options to control how requests are matched
+ * against the list of precached URLs.
+ * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will
+ * check cache entries for a URLs ending with '/' to see if there is a hit when
+ * appending the `directoryIndex` value.
+ * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An
+ * array of regex's to remove search params when looking for a cache match.
+ * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will
+ * check the cache for the URL with a `.html` added to the end of the end.
+ * @param {workbox-precaching~urlManipulation} [options.urlManipulation]
+ * This is a function that should take a URL and return an array of
+ * alternative URLs that should be checked for precache matches.
+ */
+ constructor(precacheController, options) {
+ const match = ({
+ request
+ }) => {
+ const urlsToCacheKeys = precacheController.getURLsToCacheKeys();
+ for (const possibleURL of generateURLVariations(request.url, options)) {
+ const cacheKey = urlsToCacheKeys.get(possibleURL);
+ if (cacheKey) {
+ const integrity = precacheController.getIntegrityForCacheKey(cacheKey);
+ return {
+ cacheKey,
+ integrity
+ };
+ }
+ }
+ {
+ logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));
+ }
+ return;
+ };
+ super(match, precacheController.strategy);
+ }
+ }
+
+ /*
+ Copyright 2019 Google LLC
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Add a `fetch` listener to the service worker that will
+ * respond to
+ * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}
+ * with precached assets.
+ *
+ * Requests for assets that aren't precached, the `FetchEvent` will not be
+ * responded to, allowing the event to fall through to other `fetch` event
+ * listeners.
+ *
+ * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}
+ * options.
+ *
+ * @memberof workbox-precaching
+ */
+ function addRoute(options) {
+ const precacheController = getOrCreatePrecacheController();
+ const precacheRoute = new PrecacheRoute(precacheController, options);
+ registerRoute(precacheRoute);
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Adds items to the precache list, removing any duplicates and
+ * stores the files in the
+ * {@link workbox-core.cacheNames|"precache cache"} when the service
+ * worker installs.
+ *
+ * This method can be called multiple times.
+ *
+ * Please note: This method **will not** serve any of the cached files for you.
+ * It only precaches files. To respond to a network request you call
+ * {@link workbox-precaching.addRoute}.
+ *
+ * If you have a single array of files to precache, you can just call
+ * {@link workbox-precaching.precacheAndRoute}.
+ *
+ * @param {Array} [entries=[]] Array of entries to precache.
+ *
+ * @memberof workbox-precaching
+ */
+ function precache(entries) {
+ const precacheController = getOrCreatePrecacheController();
+ precacheController.precache(entries);
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * This method will add entries to the precache list and add a route to
+ * respond to fetch events.
+ *
+ * This is a convenience method that will call
+ * {@link workbox-precaching.precache} and
+ * {@link workbox-precaching.addRoute} in a single call.
+ *
+ * @param {Array} entries Array of entries to precache.
+ * @param {Object} [options] See the
+ * {@link workbox-precaching.PrecacheRoute} options.
+ *
+ * @memberof workbox-precaching
+ */
+ function precacheAndRoute(entries, options) {
+ precache(entries);
+ addRoute(options);
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ const SUBSTRING_TO_FIND = '-precache-';
+ /**
+ * Cleans up incompatible precaches that were created by older versions of
+ * Workbox, by a service worker registered under the current scope.
+ *
+ * This is meant to be called as part of the `activate` event.
+ *
+ * This should be safe to use as long as you don't include `substringToFind`
+ * (defaulting to `-precache-`) in your non-precache cache names.
+ *
+ * @param {string} currentPrecacheName The cache name currently in use for
+ * precaching. This cache won't be deleted.
+ * @param {string} [substringToFind='-precache-'] Cache names which include this
+ * substring will be deleted (excluding `currentPrecacheName`).
+ * @return {Array} A list of all the cache names that were deleted.
+ *
+ * @private
+ * @memberof workbox-precaching
+ */
+ const deleteOutdatedCaches = async (currentPrecacheName, substringToFind = SUBSTRING_TO_FIND) => {
+ const cacheNames = await self.caches.keys();
+ const cacheNamesToDelete = cacheNames.filter(cacheName => {
+ return cacheName.includes(substringToFind) && cacheName.includes(self.registration.scope) && cacheName !== currentPrecacheName;
+ });
+ await Promise.all(cacheNamesToDelete.map(cacheName => self.caches.delete(cacheName)));
+ return cacheNamesToDelete;
+ };
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Adds an `activate` event listener which will clean up incompatible
+ * precaches that were created by older versions of Workbox.
+ *
+ * @memberof workbox-precaching
+ */
+ function cleanupOutdatedCaches() {
+ // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705
+ self.addEventListener('activate', event => {
+ const cacheName = cacheNames.getPrecacheName();
+ event.waitUntil(deleteOutdatedCaches(cacheName).then(cachesDeleted => {
+ {
+ if (cachesDeleted.length > 0) {
+ logger.log(`The following out-of-date precaches were cleaned up ` + `automatically:`, cachesDeleted);
+ }
+ }
+ }));
+ });
+ }
+
+ /*
+ Copyright 2018 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * NavigationRoute makes it easy to create a
+ * {@link workbox-routing.Route} that matches for browser
+ * [navigation requests]{@link https://developers.google.com/web/fundamentals/primers/service-workers/high-performance-loading#first_what_are_navigation_requests}.
+ *
+ * It will only match incoming Requests whose
+ * {@link https://fetch.spec.whatwg.org/#concept-request-mode|mode}
+ * is set to `navigate`.
+ *
+ * You can optionally only apply this route to a subset of navigation requests
+ * by using one or both of the `denylist` and `allowlist` parameters.
+ *
+ * @memberof workbox-routing
+ * @extends workbox-routing.Route
+ */
+ class NavigationRoute extends Route {
+ /**
+ * If both `denylist` and `allowlist` are provided, the `denylist` will
+ * take precedence and the request will not match this route.
+ *
+ * The regular expressions in `allowlist` and `denylist`
+ * are matched against the concatenated
+ * [`pathname`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname}
+ * and [`search`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search}
+ * portions of the requested URL.
+ *
+ * *Note*: These RegExps may be evaluated against every destination URL during
+ * a navigation. Avoid using
+ * [complex RegExps](https://github.com/GoogleChrome/workbox/issues/3077),
+ * or else your users may see delays when navigating your site.
+ *
+ * @param {workbox-routing~handlerCallback} handler A callback
+ * function that returns a Promise resulting in a Response.
+ * @param {Object} options
+ * @param {Array} [options.denylist] If any of these patterns match,
+ * the route will not handle the request (even if a allowlist RegExp matches).
+ * @param {Array} [options.allowlist=[/./]] If any of these patterns
+ * match the URL's pathname and search parameter, the route will handle the
+ * request (assuming the denylist doesn't match).
+ */
+ constructor(handler, {
+ allowlist = [/./],
+ denylist = []
+ } = {}) {
+ {
+ finalAssertExports.isArrayOfClass(allowlist, RegExp, {
+ moduleName: 'workbox-routing',
+ className: 'NavigationRoute',
+ funcName: 'constructor',
+ paramName: 'options.allowlist'
+ });
+ finalAssertExports.isArrayOfClass(denylist, RegExp, {
+ moduleName: 'workbox-routing',
+ className: 'NavigationRoute',
+ funcName: 'constructor',
+ paramName: 'options.denylist'
+ });
+ }
+ super(options => this._match(options), handler);
+ this._allowlist = allowlist;
+ this._denylist = denylist;
+ }
+ /**
+ * Routes match handler.
+ *
+ * @param {Object} options
+ * @param {URL} options.url
+ * @param {Request} options.request
+ * @return {boolean}
+ *
+ * @private
+ */
+ _match({
+ url,
+ request
+ }) {
+ if (request && request.mode !== 'navigate') {
+ return false;
+ }
+ const pathnameAndSearch = url.pathname + url.search;
+ for (const regExp of this._denylist) {
+ if (regExp.test(pathnameAndSearch)) {
+ {
+ logger.log(`The navigation route ${pathnameAndSearch} is not ` + `being used, since the URL matches this denylist pattern: ` + `${regExp.toString()}`);
+ }
+ return false;
+ }
+ }
+ if (this._allowlist.some(regExp => regExp.test(pathnameAndSearch))) {
+ {
+ logger.debug(`The navigation route ${pathnameAndSearch} ` + `is being used.`);
+ }
+ return true;
+ }
+ {
+ logger.log(`The navigation route ${pathnameAndSearch} is not ` + `being used, since the URL being navigated to doesn't ` + `match the allowlist.`);
+ }
+ return false;
+ }
+ }
+
+ /*
+ Copyright 2019 Google LLC
+
+ Use of this source code is governed by an MIT-style
+ license that can be found in the LICENSE file or at
+ https://opensource.org/licenses/MIT.
+ */
+ /**
+ * Helper function that calls
+ * {@link PrecacheController#createHandlerBoundToURL} on the default
+ * {@link PrecacheController} instance.
+ *
+ * If you are creating your own {@link PrecacheController}, then call the
+ * {@link PrecacheController#createHandlerBoundToURL} on that instance,
+ * instead of using this function.
+ *
+ * @param {string} url The precached URL which will be used to lookup the
+ * `Response`.
+ * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the
+ * response from the network if there's a precache miss.
+ * @return {workbox-routing~handlerCallback}
+ *
+ * @memberof workbox-precaching
+ */
+ function createHandlerBoundToURL(url) {
+ const precacheController = getOrCreatePrecacheController();
+ return precacheController.createHandlerBoundToURL(url);
+ }
+
+ exports.NavigationRoute = NavigationRoute;
+ exports.cleanupOutdatedCaches = cleanupOutdatedCaches;
+ exports.clientsClaim = clientsClaim;
+ exports.createHandlerBoundToURL = createHandlerBoundToURL;
+ exports.precacheAndRoute = precacheAndRoute;
+ exports.registerRoute = registerRoute;
+
+}));
diff --git a/packages/client/eslint.config.js b/packages/client/eslint.config.js
index 092408a..b28293c 100644
--- a/packages/client/eslint.config.js
+++ b/packages/client/eslint.config.js
@@ -1,28 +1,34 @@
-import js from '@eslint/js'
-import globals from 'globals'
-import reactHooks from 'eslint-plugin-react-hooks'
-import reactRefresh from 'eslint-plugin-react-refresh'
-import tseslint from 'typescript-eslint'
+import js from "@eslint/js";
+import globals from "globals";
+import reactHooks from "eslint-plugin-react-hooks";
+import reactRefresh from "eslint-plugin-react-refresh";
+import reactQuery from "@tanstack/eslint-plugin-query";
+import tseslint from "typescript-eslint";
export default tseslint.config(
- { ignores: ['dist'] },
+ { ignores: ["dist"] },
{
- extends: [js.configs.recommended, ...tseslint.configs.recommended],
- files: ['**/*.{ts,tsx}'],
+ extends: [
+ js.configs.recommended,
+ ...tseslint.configs.recommended,
+ "plugin:@tanstack/eslint-plugin-query/recommended",
+ ],
+ files: ["**/*.{ts,tsx}"],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
- 'react-hooks': reactHooks,
- 'react-refresh': reactRefresh,
+ "react-hooks": reactHooks,
+ "react-refresh": reactRefresh,
+ "@tanstack/query": reactQuery,
},
rules: {
...reactHooks.configs.recommended.rules,
- 'react-refresh/only-export-components': [
- 'warn',
+ "react-refresh/only-export-components": [
+ "warn",
{ allowConstantExport: true },
],
},
- },
-)
+ }
+);
diff --git a/packages/client/graphql.config.yml b/packages/client/graphql.config.yml
new file mode 100644
index 0000000..409f53a
--- /dev/null
+++ b/packages/client/graphql.config.yml
@@ -0,0 +1,3 @@
+schema:
+ - https://sepolia.easscan.org/graphql
+documents: '**/*.graphql'
diff --git a/packages/client/index.html b/packages/client/index.html
index 0c12346..3177631 100644
--- a/packages/client/index.html
+++ b/packages/client/index.html
@@ -2,12 +2,80 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Green Goods
-
-
+
+
diff --git a/packages/client/package.json b/packages/client/package.json
index 1dbf11d..9142ca8 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -10,24 +10,41 @@
"preview": "vite preview"
},
"dependencies": {
+ "@hookform/resolvers": "3.9.0",
+ "@phosphor-icons/react": "2.1.7",
"@privy-io/react-auth": "^1.80.0",
- "lucide-react": "0.436.0",
+ "@privy-io/server-auth": "1.11.1",
+ "@remixicon/react": "^4.2.0",
+ "@tanstack/react-query": "^5.52.2",
+ "@urql/core": "^5.0.4",
+ "@vercel/functions": "1.4.1",
+ "gql.tada": "^1.8.2",
"permissionless": "^0.1.45",
+ "pinata": "^0.4.0",
"react": "^18.3.1",
+ "react-device-frameset": "1.3.4",
"react-dom": "^18.3.1",
"react-hook-form": "^7.53.0",
- "react-hot-toast": "2.4.1",
- "react-router-dom": "6.26.1",
- "xstate": "^5.17.4",
+ "react-hot-toast": "^2.4.1",
+ "react-intl": "6.6.8",
+ "react-router-dom": "^6.26.1",
+ "react-select": "5.8.0",
+ "react-tailwindcss-datepicker": "^1.7.2",
"zod": "^3.23.8"
},
"devDependencies": {
+ "@0no-co/graphqlsp": "^1.12.12",
+ "daisyui": "4.12.10",
"@eslint/js": "^9.9.0",
+ "@tanstack/eslint-plugin-query": "5.52.0",
+ "@tailwindcss/forms": "^0.5.7",
+ "@tailwindcss/typography": "0.5.15",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
+ "@vercel/node": "3.2.10",
"@vitejs/plugin-react": "^4.3.1",
- "@xstate/react": "^4.1.1",
"autoprefixer": "^10.4.20",
+ "dotenv-expand": "11.0.6",
"eslint": "^9.9.0",
"eslint-plugin-react-hooks": "^5.1.0-rc.0",
"eslint-plugin-react-refresh": "^0.4.9",
@@ -35,10 +52,10 @@
"postcss": "^8.4.41",
"tailwindcss": "^3.4.10",
"tailwindcss-animate": "^1.0.7",
+ "typescript": "^5.5.4",
"typescript-eslint": "^8.0.1",
"vite": "^5.4.1",
"vite-plugin-mkcert": "^1.17.5",
- "vite-plugin-pwa": "^0.20.1",
- "vite-plugin-svgr": "^4.2.0"
+ "vite-plugin-pwa": "^0.20.1"
}
}
diff --git a/packages/client/public/apple-icon.png b/packages/client/public/apple-icon.png
new file mode 100644
index 0000000..7196aa0
Binary files /dev/null and b/packages/client/public/apple-icon.png differ
diff --git a/packages/client/public/favicon.ico b/packages/client/public/favicon.ico
new file mode 100644
index 0000000..4a88d1b
Binary files /dev/null and b/packages/client/public/favicon.ico differ
diff --git a/packages/client/public/icon.png b/packages/client/public/icon.png
new file mode 100644
index 0000000..42268d6
Binary files /dev/null and b/packages/client/public/icon.png differ
diff --git a/packages/client/public/images/android-icon-144x144.png b/packages/client/public/images/android-icon-144x144.png
new file mode 100644
index 0000000..53d9d1c
Binary files /dev/null and b/packages/client/public/images/android-icon-144x144.png differ
diff --git a/packages/client/public/images/android-icon-36x36.png b/packages/client/public/images/android-icon-36x36.png
new file mode 100644
index 0000000..ebe6eea
Binary files /dev/null and b/packages/client/public/images/android-icon-36x36.png differ
diff --git a/packages/client/public/images/android-icon-48x48.png b/packages/client/public/images/android-icon-48x48.png
new file mode 100644
index 0000000..a334cc5
Binary files /dev/null and b/packages/client/public/images/android-icon-48x48.png differ
diff --git a/packages/client/public/images/android-icon-72x72.png b/packages/client/public/images/android-icon-72x72.png
new file mode 100644
index 0000000..46f0a59
Binary files /dev/null and b/packages/client/public/images/android-icon-72x72.png differ
diff --git a/packages/client/public/images/app-mock.png b/packages/client/public/images/app-mock.png
new file mode 100644
index 0000000..0ff419d
Binary files /dev/null and b/packages/client/public/images/app-mock.png differ
diff --git a/packages/client/public/images/apple-icon-120x120.png b/packages/client/public/images/apple-icon-120x120.png
new file mode 100644
index 0000000..dcf3c97
Binary files /dev/null and b/packages/client/public/images/apple-icon-120x120.png differ
diff --git a/packages/client/public/images/apple-icon-144x144.png b/packages/client/public/images/apple-icon-144x144.png
new file mode 100644
index 0000000..53d9d1c
Binary files /dev/null and b/packages/client/public/images/apple-icon-144x144.png differ
diff --git a/packages/client/public/images/apple-icon-57x57.png b/packages/client/public/images/apple-icon-57x57.png
new file mode 100644
index 0000000..9c79ff6
Binary files /dev/null and b/packages/client/public/images/apple-icon-57x57.png differ
diff --git a/packages/client/public/images/apple-icon-60x60.png b/packages/client/public/images/apple-icon-60x60.png
new file mode 100644
index 0000000..a7539aa
Binary files /dev/null and b/packages/client/public/images/apple-icon-60x60.png differ
diff --git a/packages/client/public/images/apple-icon-72x72.png b/packages/client/public/images/apple-icon-72x72.png
new file mode 100644
index 0000000..46f0a59
Binary files /dev/null and b/packages/client/public/images/apple-icon-72x72.png differ
diff --git a/packages/client/public/images/avatar.png b/packages/client/public/images/avatar.png
new file mode 100644
index 0000000..f15e8b3
Binary files /dev/null and b/packages/client/public/images/avatar.png differ
diff --git a/packages/client/public/images/ms-icon-144x144.png b/packages/client/public/images/ms-icon-144x144.png
new file mode 100644
index 0000000..53d9d1c
Binary files /dev/null and b/packages/client/public/images/ms-icon-144x144.png differ
diff --git a/packages/client/public/images/ms-icon-310x310.png b/packages/client/public/images/ms-icon-310x310.png
new file mode 100644
index 0000000..9196760
Binary files /dev/null and b/packages/client/public/images/ms-icon-310x310.png differ
diff --git a/packages/client/public/images/ms-icon-70x70.png b/packages/client/public/images/ms-icon-70x70.png
new file mode 100644
index 0000000..7a10100
Binary files /dev/null and b/packages/client/public/images/ms-icon-70x70.png differ
diff --git a/packages/client/public/social-image.png b/packages/client/public/social-image.png
new file mode 100644
index 0000000..b4a1195
Binary files /dev/null and b/packages/client/public/social-image.png differ
diff --git a/packages/client/public/vite.svg b/packages/client/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/packages/client/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/client/src/App.tsx b/packages/client/src/App.tsx
index 6fb5ffc..8a8617a 100644
--- a/packages/client/src/App.tsx
+++ b/packages/client/src/App.tsx
@@ -1,32 +1,71 @@
-import { useState } from "react";
import { usePrivy } from "@privy-io/react-auth";
+import { QueryClientProvider } from "@tanstack/react-query";
+import { Route, Routes, Navigate, BrowserRouter } from "react-router-dom";
-import viteLogo from "/vite.svg";
+import { queryClient } from "@/modules/react-query";
+
+import { WorkProvider } from "@/providers/WorkProvider";
+import { GardenProvider } from "@/providers/GardenProvider";
+
+import { usePWA } from "@/providers/PWAProvider";
+import { useUser } from "@/providers/UserProvider";
+
+import Views from "@/views";
+import Login from "@/views/Login";
+import Landing from "@/views/Landing";
+import { Appbar } from "@/components/Layout/AppBar";
function App() {
- const [count, setCount] = useState(0);
+ const { authenticated } = usePrivy();
+ const { isMobile, isInstalled, locale } = usePWA();
+ const { smartAccountReady } = useUser();
+
+ console.log("PWA", isMobile, isInstalled, locale);
- const { login, logout } = usePrivy();
+ const isDownloaded = isMobile;
+ const isAuthenticated = authenticated && smartAccountReady;
return (
- <>
-
- Vite + React
-
-
setCount((count) => count + 1)}>
- count is {count}
-
-
- Edit src/App.tsx
and save to test HMR
-
-
Login
-
Logout
-
- >
+
+
+
+ {/* Landing */}
+ : }
+ />
+ {/* Login */}
+
+ :
+ :
+ }
+ />
+ {/* Main: Show app or navigate to login, onboarding, or landing page based on conditions */}
+
+
+
+
+
+
+ :
+ :
+ }
+ />
+ {/* Catch-all: Redirect to the appropriate place */}
+ {/* } /> */}
+
+
+
);
}
diff --git a/packages/client/src/components/AppBar.tsx b/packages/client/src/components/AppBar.tsx
deleted file mode 100644
index 57ff76f..0000000
--- a/packages/client/src/components/AppBar.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import { Link, useLocation } from "react-router-dom";
-// import { a, config, useSpring } from "@react-spring/web";
-
-import { HomeIcon, PlusIcon, CircleUserRoundIcon } from "lucide-react";
-
-const tabs: {
- path: string;
- title: string;
- Icon: React.FunctionComponent<
- React.SVGProps & {
- title?: string | undefined;
- }
- >;
-}[] = [
- {
- path: "/home",
- title: "Home",
- Icon: HomeIcon,
- },
- {
- path: "/contribute",
- title: "Contribute",
- Icon: PlusIcon,
- },
- {
- path: "/profile",
- title: "Profile",
- Icon: CircleUserRoundIcon,
- },
-];
-
-export const Appbar = () => {
- const { pathname } = useLocation();
-
- // const spring = useSpring({
- // from: {
- // opacity: 0,
- // transform: "translateY(100%)",
- // },
- // to: {
- // opacity: 1,
- // transform: "translateY(0)",
- // },
- // config: {
- // ...config.slow,
- // friction: 48,
- // clamp: true,
- // },
- // });
-
- return (
-
- {tabs.map(({ path, Icon, title }) => (
-
-
-
-
- {title}
-
-
-
- ))}
-
- );
-};
diff --git a/packages/client/src/components/Button.tsx b/packages/client/src/components/Button.tsx
index 155abf2..9dbbd1c 100644
--- a/packages/client/src/components/Button.tsx
+++ b/packages/client/src/components/Button.tsx
@@ -1,49 +1,83 @@
-import React from "react";
+import { forwardRef } from "react";
+import { RemixiconComponentType } from "@remixicon/react";
interface ButtonProps {
- title: string;
- onClick?: (e: React.MouseEvent) => void;
- full?: boolean;
- active?: boolean;
+ label: string;
+ style?: "solid" | "soft" | "outline" | "ghost";
+ variant?: "primary" | "secondary" | "tertiary";
+ size?: "small" | "medium" | "large";
+ className?: string;
+ fullWidth?: boolean;
disabled?: boolean;
- state?: "default" | "loading" | "success" | "error";
- variant?: "primary" | "secondary";
+ loading?: boolean;
+ Icon?: RemixiconComponentType;
+ type?: "button" | "submit" | "reset";
+ onClick?: () => void;
}
-export const Button: React.FC = ({
- title,
- onClick,
- full,
- // active,
- disabled,
- variant,
-}) => {
- if (variant === "secondary") {
+const sizes = {
+ small: "py-2 px-3",
+ medium: "py-3 px-4 text-xl",
+ large: "p-4 sm:p-5 text-xl",
+};
+
+const variantColors = {
+ primary: "#367D42",
+ secondary: "#D2B48C",
+ tertiary: "blue",
+};
+
+function generateStyles(variant: "primary" | "secondary" | "tertiary") {
+ return {
+ solid: `border-transparent bg-[${variantColors[variant]}] text-white hover:bg-${variantColors[variant]}-700`,
+ soft: `border-transparent bg-${variantColors[variant]}-100 text-${variantColors[variant]}-800 hover:bg-${variantColors[variant]}-200 dark:hover:bg-${variantColors[variant]}-900 dark:text-${variantColors[variant]}-500 dark:hover:text-${variantColors[variant]}-400`,
+ outline: `border-${variantColors[variant]}-500 text-${variantColors[variant]}-500 hover:border-${variantColors[variant]}-400 hover:text-${variantColors[variant]}-400 `,
+ ghost: `border-transparent text-${variantColors[variant]}-500 hover:bg-${variantColors[variant]}-100 hover:text-${variantColors[variant]}-800 dark:hover:bg-${variantColors[variant]}-800/30 dark:hover:text-${variantColors[variant]}-400`,
+ };
+}
+
+export const Button = forwardRef(
+ (
+ {
+ label,
+ style = "solid",
+ variant = "primary",
+ size = "medium",
+ className,
+ fullWidth = false,
+ disabled = false,
+ loading = false,
+ Icon,
+ ...props
+ },
+ ref
+ ) => {
+ const sizeClasses = sizes[size];
+ const styleClasses = generateStyles(variant)[style];
+
return (
-
- {title}
-
+ {label}
+ {Icon && }
+ {loading && (
+
+ )}
);
}
- return (
-
-
- {title}
-
-
- );
-};
+);
+
+Button.displayName = "Button";
diff --git a/packages/client/src/components/Footer.tsx b/packages/client/src/components/Footer.tsx
deleted file mode 100644
index e69de29..0000000
diff --git a/packages/client/src/components/Form/Date.tsx b/packages/client/src/components/Form/Date.tsx
new file mode 100644
index 0000000..a0ec981
--- /dev/null
+++ b/packages/client/src/components/Form/Date.tsx
@@ -0,0 +1,42 @@
+import Datepicker from "react-tailwindcss-datepicker";
+import { InputHTMLAttributes, forwardRef } from "react";
+
+interface FormDateProps extends InputHTMLAttributes {
+ label: string;
+ helperText?: string;
+ error?: string;
+}
+
+export const FormDate = forwardRef(
+ ({ label, helperText, error, className, ...props }, _ref) => (
+
+
+ {label}
+
+
{}}
+ inputClassName=""
+ containerClassName=""
+ toggleClassName=""
+ />
+
+ {helperText ?? error}
+
+
+ )
+);
+
+FormDate.displayName = "FormDate";
diff --git a/packages/client/src/components/Form/Info.tsx b/packages/client/src/components/Form/Info.tsx
new file mode 100644
index 0000000..069b198
--- /dev/null
+++ b/packages/client/src/components/Form/Info.tsx
@@ -0,0 +1,33 @@
+import { RemixiconComponentType } from "@remixicon/react";
+
+interface FormInfoProps {
+ title: string;
+ info: string;
+ variant?: "primary" | "secondary" | "tertiary";
+ Icon?: RemixiconComponentType;
+}
+
+const variants = {
+ primary: "bg-teal-50 border-teal-200 border-1 shadow-md",
+ secondary: "bg-green-100 text-green-700",
+ tertiary: "bg-yellow-100 text-yellow-700",
+};
+
+export const FormInfo = ({
+ title,
+ info,
+ variant = "primary",
+ ...props
+}: FormInfoProps) => {
+ const variantClasses = variants[variant];
+
+ return (
+
+ );
+};
diff --git a/packages/client/src/components/Form/Input.tsx b/packages/client/src/components/Form/Input.tsx
new file mode 100644
index 0000000..431764b
--- /dev/null
+++ b/packages/client/src/components/Form/Input.tsx
@@ -0,0 +1,33 @@
+import { InputHTMLAttributes, forwardRef } from "react";
+
+interface FormInputProps extends InputHTMLAttributes {
+ label: string;
+ helperText?: string;
+ error?: string;
+}
+
+export const FormInput = forwardRef(
+ ({ label, helperText, error, className, ...props }, ref) => (
+
+
+ {label}
+
+
+
+ {helperText ?? error}
+
+
+ )
+);
+
+FormInput.displayName = "FormInput";
diff --git a/packages/client/src/components/Form/Progress.tsx b/packages/client/src/components/Form/Progress.tsx
new file mode 100644
index 0000000..db3285e
--- /dev/null
+++ b/packages/client/src/components/Form/Progress.tsx
@@ -0,0 +1,46 @@
+import { RiCheckFill } from "@remixicon/react";
+
+interface FormProgressProps {
+ currentStep: number;
+ steps: string[];
+}
+
+export const FormProgress = ({ currentStep, steps }: FormProgressProps) => {
+ return (
+
+ {steps.map((step, index) => (
+
+
+
index + 1 ? "bg-teal-500"
+ : currentStep === index + 1 ?
+ "bg-teal-500 text-white before:absolute before:-inset-1 before:bg-teal-200 before:rounded-full before:w-13 before:h-13 before:z-[-1] before:m-auto"
+ : "bg-slate-200 text-black"
+ }
+ `}
+ >
+ {currentStep > index + 1 ?
+
+ : index + 1}
+
+
index + 1 ? "bg-teal-400" : "bg-slate-400"} ms-2 w-full h-px flex-1 group-last:hidden`}
+ >
+
+
+
+ {step}
+
+
+
+ ))}
+
+ );
+};
diff --git a/packages/client/src/components/Form/Select.tsx b/packages/client/src/components/Form/Select.tsx
new file mode 100644
index 0000000..24c889f
--- /dev/null
+++ b/packages/client/src/components/Form/Select.tsx
@@ -0,0 +1,72 @@
+import "react-tailwindcss-select/dist/index.css";
+
+import Select from "react-select";
+import { forwardRef } from "react";
+import { RiCloseFill } from "@remixicon/react";
+import { Control, Controller } from "react-hook-form";
+
+interface FormSelectProps {
+ label: string;
+ placeholder: string;
+ selected: string[];
+ onRemove: (value: string) => void;
+ error?: string;
+ helperText?: string;
+ options: { label: string; value: string }[];
+ control: Control;
+}
+
+export const FormSelect = forwardRef(
+ (
+ {
+ label,
+ selected,
+ onRemove,
+ // error,
+ // helperText,
+ options,
+ control,
+ // ...props
+ },
+ _ref
+ ) => {
+ return (
+ (
+
+
+ {label}
+
+ {selected.length > 0 &&
+ selected.map((id) => (
+
+
+
+ {options.find((option) => option.value === id)?.label}
+ onRemove(id)}
+ className="h-3 ml-2 mt-2.5 cursor-pointer"
+ />
+
+
+ ))}
+
+
+ )}
+ />
+ );
+ }
+);
+
+FormSelect.displayName = "FormSelect";
diff --git a/packages/client/src/components/Form/Text.tsx b/packages/client/src/components/Form/Text.tsx
new file mode 100644
index 0000000..082efe4
--- /dev/null
+++ b/packages/client/src/components/Form/Text.tsx
@@ -0,0 +1,39 @@
+import { InputHTMLAttributes, forwardRef } from "react";
+
+interface FormTextProps extends InputHTMLAttributes {
+ rows: number;
+ label: string;
+ error?: string;
+ className?: string;
+ helperText?: string;
+}
+
+export const FormText = forwardRef(
+ ({ rows, label, error, className, helperText, ...props }, ref) => {
+ return (
+
+
+ {label}
+
+
+
+ {helperText ?? error}
+
+
+ );
+ }
+);
+
+FormText.displayName = "FormText";
diff --git a/packages/client/src/components/Garden/Actions.tsx b/packages/client/src/components/Garden/Actions.tsx
new file mode 100644
index 0000000..6cfbb59
--- /dev/null
+++ b/packages/client/src/components/Garden/Actions.tsx
@@ -0,0 +1,50 @@
+import { useState } from "react";
+
+import { GardenWorkApproval } from "./WorkApproval";
+
+interface GardenActionsProps {
+ actions: Action[];
+ works: Work[];
+}
+
+export const GardenActions: React.FC = ({
+ actions,
+ works,
+}) => {
+ const [work, setWork] = useState(null);
+
+ return (
+
+
+ {actions.map((action) => (
+
+ {action.title}
+ {action.instructions}
+
+ ))}
+
+
Work
+
+ {works.map((work) => (
+ setWork(work)}>
+ {work.title}
+ {work.feedback}
+
+ ))}
+
+
setWork(null)}
+ open={!!work}
+ >
+
+ {work && }
+
+
+
+
+ );
+};
diff --git a/packages/client/src/components/Garden/Asessments.tsx b/packages/client/src/components/Garden/Asessments.tsx
new file mode 100644
index 0000000..3237ad8
--- /dev/null
+++ b/packages/client/src/components/Garden/Asessments.tsx
@@ -0,0 +1,18 @@
+interface GardenAssessmentsProps {
+ assessments: GardenAssessment[];
+}
+
+export const GardenAssessments: React.FC = ({
+ assessments,
+}) => {
+ return (
+
+ {assessments.map((assessment) => (
+
+ {assessment.tags}
+ {assessment.issues}
+
+ ))}
+
+ );
+};
diff --git a/packages/client/src/components/Garden/Gardeners.tsx b/packages/client/src/components/Garden/Gardeners.tsx
new file mode 100644
index 0000000..d369630
--- /dev/null
+++ b/packages/client/src/components/Garden/Gardeners.tsx
@@ -0,0 +1,25 @@
+import { Gardener } from "@/providers/GardenProvider";
+
+interface GardenGardenersProps {
+ gardeners: Gardener[];
+}
+
+export const GardenGardeners: React.FC = ({
+ gardeners,
+}) => {
+ return (
+
+ {gardeners.map((user) => (
+
+
+
+ {user?.email?.address || user.phone?.number || "Unknown User"}
+
+
+ ))}
+
+ );
+};
diff --git a/packages/client/src/components/Garden/WorkApproval.tsx b/packages/client/src/components/Garden/WorkApproval.tsx
new file mode 100644
index 0000000..85f14f7
--- /dev/null
+++ b/packages/client/src/components/Garden/WorkApproval.tsx
@@ -0,0 +1,103 @@
+import { z } from "zod";
+import toast from "react-hot-toast";
+import { Form, useForm } from "react-hook-form";
+import { useMutation } from "@tanstack/react-query";
+import { zodResolver } from "@hookform/resolvers/zod";
+
+import { EAS } from "@/constants";
+import { encodeWorkApprovalData } from "@/utils/eas";
+
+import { queryClient } from "@/modules/react-query";
+
+import { useUser } from "@/providers/UserProvider";
+
+import { FormInput } from "../Form/Input";
+import { Button } from "../Button";
+
+interface GardenWorkApprovalProps {
+ work: Work;
+}
+
+const workApprovalSchema = z.object({
+ actionUID: z.string(),
+ workUID: z.string(),
+ approved: z.boolean(),
+ feedback: z.string(),
+});
+
+export const GardenWorkApproval: React.FC = ({
+ work,
+}) => {
+ const { title, feedback, media } = work;
+
+ const { smartAccountClient } = useUser();
+ const { register, handleSubmit } = useForm({
+ defaultValues: {
+ actionUID: work.actionUID,
+ workUID: work.id,
+ approved: false,
+ feedback: "",
+ },
+ resolver: zodResolver(workApprovalSchema),
+ });
+
+ const workApprovalMutation = useMutation({
+ mutationFn: async (draft: WorkApprovalDraft) => {
+ if (!smartAccountClient) {
+ throw new Error("No smart account client found");
+ }
+
+ const recipient = work.gardenerAddress as `0x${string}`;
+
+ const data = encodeWorkApprovalData(draft, recipient);
+
+ const receipt = await smartAccountClient.sendTransaction({
+ to: EAS["42161"].EAS.address as `0x${string}`,
+ data,
+ });
+
+ return receipt;
+ },
+ onMutate: () => {
+ toast.loading("Approving work...");
+ },
+ onSuccess: () => {
+ toast.success("Work approved!");
+ queryClient.invalidateQueries({ queryKey: ["workApprovals"] });
+ },
+ onError: () => {
+ toast.error("Work approval failed!");
+ },
+ });
+
+ return (
+
+ );
+};
diff --git a/packages/client/src/components/Hero.tsx b/packages/client/src/components/Hero.tsx
deleted file mode 100644
index d1e3170..0000000
--- a/packages/client/src/components/Hero.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import React, { useState } from "react";
-
-type SubscribeState = "idle" | "subscribing" | "subscribed" | "error";
-
-function wait(ms: number) {
- return new Promise((resolve) => setTimeout(resolve, ms));
-}
-
-const url =
- "https://house.us21.list-manage.com/subscribe/post-json?u=f9cd12d07ddbdbe80d68c3e28&id=792284a5e1&&c=1;f_id=00ddeae6f0";
-
-export const Hero: React.FC = () => {
- const [, setSubscribeState] = useState("idle");
- const [, setSubscribeError] = useState(null);
-
- function handleSubscribe(e: React.FormEvent) {
- e.preventDefault();
-
- setSubscribeState("subscribing");
- setSubscribeError(null);
-
- const formData = new FormData(e.currentTarget);
- const email = formData.get("email") as string;
-
- console.log(email);
-
- fetch(url + "&" + formData, {
- method: "GET",
- headers: {
- "Content-Type": "application/json",
- },
- mode: "cors",
- cache: "default",
- })
- .then((response) => response.json())
- .then((data) => {
- if (data["result"] !== "success") {
- // ERROR
- console.log(data["msg"]);
-
- setSubscribeError("Something went wrong. Please try again.");
- setSubscribeState("error");
- } else {
- // SUCCESS - Show notification
- console.log(data["msg"]);
-
- setSubscribeState("subscribed");
-
- wait(2000).then(() => {
- setSubscribeState("idle");
- });
- }
- })
- .catch((error) => {
- console.error("Error:", error);
-
- setSubscribeError(error.message);
- setSubscribeState("error");
- });
- }
-
- return (
-
-
-
-
- 📲 Visit app.campgreen.world on
- phone to install app
-
-
-
-
- );
-};
diff --git a/packages/client/src/components/Layout/AppBar.tsx b/packages/client/src/components/Layout/AppBar.tsx
new file mode 100644
index 0000000..dcc4078
--- /dev/null
+++ b/packages/client/src/components/Layout/AppBar.tsx
@@ -0,0 +1,66 @@
+import { Link, useLocation } from "react-router-dom";
+
+import {
+ RiHome2Fill,
+ RiCrossFill,
+ RiProfileFill,
+ RemixiconComponentType,
+} from "@remixicon/react";
+
+const tabs: {
+ path: string;
+ title: string;
+ Icon: RemixiconComponentType;
+}[] = [
+ {
+ path: "/gardens",
+ title: "Home",
+ Icon: RiHome2Fill,
+ },
+ {
+ path: "/garden",
+ title: "Garden",
+ Icon: RiCrossFill,
+ },
+ {
+ path: "/profile",
+ title: "Profile",
+ Icon: RiProfileFill,
+ },
+];
+
+export const Appbar = () => {
+ const { pathname } = useLocation();
+
+ return (
+
+ // style={spring}
+ >
+ {tabs.map(({ path, Icon, title }) => (
+
+
+
+
+ {title}
+
+
+
+ ))}
+
+ );
+};
diff --git a/packages/client/src/components/Layout/Footer.tsx b/packages/client/src/components/Layout/Footer.tsx
new file mode 100644
index 0000000..86bbdad
--- /dev/null
+++ b/packages/client/src/components/Layout/Footer.tsx
@@ -0,0 +1,48 @@
+// import {
+// RiTwitterFill,
+// RiGithubFill,
+// RemixiconComponentType,
+// } from "@remixicon/react";
+import React from "react";
+
+interface FooterProps {}
+
+// interface Link {
+// title: string;
+// Icon: RemixiconComponentType;
+// link: string;
+// action?: () => void;
+// }
+
+// const links: Link[] = [
+// { title: "x", Icon: RiTwitterFill, link: "https://x.com/gp_dev_guild" },
+// {
+// title: "github",
+// Icon: RiGithubFill,
+// link: "https://github.com/greenpill-dev-guild",
+// },
+// ];
+
+export const Footer: React.FC = () => {
+ return (
+
+ );
+};
diff --git a/packages/client/src/components/Layout/Header.tsx b/packages/client/src/components/Layout/Header.tsx
new file mode 100644
index 0000000..96614f4
--- /dev/null
+++ b/packages/client/src/components/Layout/Header.tsx
@@ -0,0 +1,47 @@
+import { APP_NAME } from "@/constants";
+import {
+ RiGithubLine,
+ RiTwitterLine,
+ RemixiconComponentType,
+} from "@remixicon/react";
+import React from "react";
+
+interface HeaderProps {}
+
+const links: Link[] = [
+ {
+ title: "twitter",
+ Icon: RiTwitterLine,
+ link: "https://x.com/greengoodsapp",
+ },
+ {
+ title: "github",
+ Icon: RiGithubLine,
+ link: "https://github.com/greenpill-dev-guild/green-goods",
+ },
+];
+
+export const Header: React.FC = () => {
+ return (
+
+ );
+};
diff --git a/packages/client/src/components/Layout/Hero.tsx b/packages/client/src/components/Layout/Hero.tsx
new file mode 100644
index 0000000..25b5eea
--- /dev/null
+++ b/packages/client/src/components/Layout/Hero.tsx
@@ -0,0 +1,135 @@
+import { usePWA } from "@/providers/PWAProvider";
+import React, { useState } from "react";
+import { DeviceFrameset } from "react-device-frameset";
+import "react-device-frameset/styles/marvel-devices.min.css";
+import toast from "react-hot-toast";
+
+type SubscribeState = "idle" | "subscribing" | "subscribed" | "error";
+
+const url =
+ "https://app.us13.list-manage.com/subscribe/post?u=16db3a1a92dd56e81459cd500&id=c6c12d1a3f&f_id=0021fae1f0";
+
+export const Hero: React.FC = () => {
+ const { isMobile } = usePWA();
+ const [state, setSubscribeState] = useState("idle");
+
+ function handleSubscribe(e: React.FormEvent) {
+ e.preventDefault();
+
+ setSubscribeState("subscribing");
+
+ const formData = new FormData(e.currentTarget);
+ const email = formData.get("email") as string;
+
+ console.log(email);
+
+ fetch(url + "&" + formData, {
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ mode: "cors",
+ cache: "default",
+ })
+ .then((response) => response.json())
+ .then((data) => {
+ if (data["result"] !== "success") {
+ // ERROR
+ console.log(data["msg"]);
+
+ throw new Error(data["msg"]);
+ } else {
+ // SUCCESS - Show notification
+ console.log(data["msg"]);
+
+ toast.success("Successfilly subscribed!");
+
+ setSubscribeState("subscribed");
+ }
+ })
+ .catch((error) => {
+ console.error("Error:", error);
+
+ setSubscribeState("error");
+ toast.error("Something went wrong. Please try again.");
+ });
+ }
+
+ return (
+
+
+
+ {!isMobile && (
+
+
+
+
+
+ )}
+
+
+ );
+};
diff --git a/packages/client/src/components/Layout/Splash.tsx b/packages/client/src/components/Layout/Splash.tsx
new file mode 100644
index 0000000..0b15f5c
--- /dev/null
+++ b/packages/client/src/components/Layout/Splash.tsx
@@ -0,0 +1,33 @@
+import React from "react";
+
+import { APP_NAME } from "@/constants";
+
+import { Button } from "../Button";
+
+interface SplashProps {
+ login: () => void;
+ isLoggingIn: boolean;
+ buttonLabel: string;
+}
+
+export const Splash: React.FC = ({
+ login,
+ isLoggingIn,
+ buttonLabel,
+}) => {
+ return (
+
+
+
+ {APP_NAME}
+
+
+
+ );
+};
diff --git a/packages/client/src/components/Loader.tsx b/packages/client/src/components/Loader.tsx
index 9afc5d5..76c9ef6 100644
--- a/packages/client/src/components/Loader.tsx
+++ b/packages/client/src/components/Loader.tsx
@@ -1,50 +1,45 @@
import React from "react";
-// import { a, config, useSpring } from "@react-spring/web";
export const CircleLoader: React.FC = () => {
- // const spring = useSpring({
- // from: { opacity: 0 },
- // to: { opacity: 1 },
- // config: { ...config.default, clamp: true },
- // });
-
return (
-
-
-
-
+
+ className="relative h-12 w-12"
+ // style={spring}
+ >
+
+
+
+
+
);
};
diff --git a/packages/client/src/constants.ts b/packages/client/src/constants.ts
new file mode 100644
index 0000000..0db93f9
--- /dev/null
+++ b/packages/client/src/constants.ts
@@ -0,0 +1,34 @@
+import schemas from "../../eas/src/resources/schemas.json";
+
+export const APP_NAME = "Green Goods";
+export const APP_DEFAULT_TITLE = "Green Goods";
+export const APP_TITLE_TEMPLATE = "%s - Green Goods";
+export const APP_DESCRIPTION = "Start Bringing Biodiversity Onchain";
+export const APP_URL = "https://greengoods.app";
+export const APP_ICON = "https://greengoods.app/icon.png";
+
+export const EAS = {
+ "42161": {
+ GARDEN_ASSESSMENT: {
+ uid: schemas[0].UID,
+ schema: schemas[0].parsed,
+ },
+ WORK: {
+ uid: schemas[1].UID,
+ schema: schemas[1].parsed,
+ },
+ WORK_APPROVAL: {
+ uid: schemas[2].UID,
+ schema: schemas[2].parsed,
+ },
+ EAS: {
+ address: "0xbD75f629A22Dc1ceD33dDA0b68c546A1c035c458",
+ },
+ },
+};
+
+export const GREEN_GOODS_GARDEN_OPERATOR_WHITELIST = [
+ "afo@greenpill.builders",
+ "coi@greenpill.builders",
+ "nansel@greenpill.builders",
+];
diff --git a/packages/client/src/i18n/en.json b/packages/client/src/i18n/en.json
new file mode 100644
index 0000000..dcc8bd5
--- /dev/null
+++ b/packages/client/src/i18n/en.json
@@ -0,0 +1,11 @@
+{
+ "app.title": "Welcome to the App",
+ "app.login": "Login",
+ "app.logout": "Logout",
+ "app.home": "Home",
+ "app.home.title": "Gardens",
+ "app.profile": "Profile",
+ "app.profile.account": "Account",
+ "app.profile.help": "Help",
+ "app.profile.settings": "Settings"
+}
diff --git a/packages/client/src/i18n/pt.json b/packages/client/src/i18n/pt.json
new file mode 100644
index 0000000..57abcc6
--- /dev/null
+++ b/packages/client/src/i18n/pt.json
@@ -0,0 +1,5 @@
+{
+ "app.title": "Bienvenido a la aplicación",
+ "app.login": "Iniciar sesión",
+ "app.logout": "Cerrar sesión"
+}
diff --git a/packages/client/src/index.css b/packages/client/src/index.css
index eb6f360..4df05e4 100644
--- a/packages/client/src/index.css
+++ b/packages/client/src/index.css
@@ -3,169 +3,117 @@
@tailwind utilities;
:root {
- font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- font-weight: 400;
-
color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #242424;
+ color: #213547;
+ background-color: #ffffff;
+
+ scrollbar-width: none;
+ -ms-overflow-style: none; /* IE and Edge */
+
+ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
+ font-style: normal;
+ font-weight: 400;
font-synthesis: none;
+ font-optical-sizing: auto;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
-}
-a:hover {
- color: #535bf2;
-}
+/* @media (prefers-color-scheme: dark) {
+ :root {
+ color: rgba(255, 255, 255, 0.87);
+ background-color: #242424;
+ }
+} */
-body {
- margin: 0;
- display: flex;
- place-items: center;
- min-width: 320px;
- min-height: 100vh;
+::-webkit-scrollbar {
+ display: none;
}
+/*
+ Typography
+*/
h1 {
- font-size: 3.2em;
- line-height: 1.1;
+ @apply text-6xl;
+ @apply font-medium;
}
h2 {
- @apply text-4xl;
- @apply font-bold;
+ @apply text-5xl;
+ @apply font-medium;
}
h3 {
- @apply text-3xl;
+ @apply text-4xl;
@apply font-medium;
}
h4 {
@apply text-2xl;
+ @apply font-medium;
}
h5 {
@apply text-xl;
+ @apply font-medium;
+}
+
+p {
+ @apply text-base;
+ @apply font-normal;
+}
+
+span {
+ @apply text-base;
+ @apply font-normal;
}
-h6,
-p,
-span,
-a,
-li,
label {
- font-weight: 300;
+ @apply text-base;
+ @apply font-medium;
}
+a {
+ @apply text-base;
+ @apply font-medium;
+ color: #646cff;
+ text-decoration: inherit;
+}
+
+.small {
+ @apply text-sm;
+ @apply font-normal;
+}
+
+/* a:hover {
+ color: #535bf2;
+} */
+
+/*
+ Components
+*/
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
- font-family: inherit;
- background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
+
button:hover {
border-color: #646cff;
}
+
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
-@media (prefers-color-scheme: light) {
- :root {
- color: #213547;
- background-color: #ffffff;
- }
- a:hover {
- color: #747bff;
- }
- button {
- background-color: #f9f9f9;
- }
-}
-
-#root {
- max-width: 1280px;
- margin: 0 auto;
- padding: 2rem;
- text-align: center;
-}
-
-.logo {
- height: 6em;
- padding: 1.5em;
- will-change: filter;
- transition: filter 300ms;
-}
-.logo:hover {
- filter: drop-shadow(0 0 2em #646cffaa);
-}
-.logo.react:hover {
- filter: drop-shadow(0 0 2em #61dafbaa);
-}
-
-@keyframes logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-@media (prefers-reduced-motion: no-preference) {
- a:nth-of-type(2) .logo {
- animation: logo-spin infinite 20s linear;
- }
-}
-
-.card {
- padding: 2em;
-}
-
-.read-the-docs {
- color: #888;
-}
-
-#root {
- width: 100%;
- height: 100%;
- overflow-y: visible;
- overflow: hidden;
-}
-
-/* #root > div {
- width: 100%;
- height: 100%;
- overflow: hidden;
- overflow-y: visible;
-} */
-
-::-webkit-scrollbar {
- display: none;
-}
-
-/*
- Components
-*/
-.particle-pwe-btn {
- z-index: 0 !important;
-}
-.dot {
+.loader {
position: absolute;
opacity: 0.27;
animation: dot-fade 1s infinite;
diff --git a/packages/client/src/machines/work.ts b/packages/client/src/machines/work.ts
deleted file mode 100644
index e69de29..0000000
diff --git a/packages/client/src/main.tsx b/packages/client/src/main.tsx
index a9e11f9..eba6b35 100644
--- a/packages/client/src/main.tsx
+++ b/packages/client/src/main.tsx
@@ -1,34 +1,46 @@
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
-import { PrivyProvider } from "@privy-io/react-auth";
+
import { arbitrum } from "viem/chains";
+import { Toaster } from "react-hot-toast";
+import { PrivyProvider } from "@privy-io/react-auth";
-import { SmartAccountProvider } from "./providers/SmartAccountProvider.tsx";
+import { PWAProvider } from "@/providers/PWAProvider.tsx";
+import { UserProvider } from "@/providers/UserProvider.tsx";
-import App from "./App.tsx";
-import "./index.css";
+import { APP_DESCRIPTION } from "@/constants";
+import App from "@/App.tsx";
+import "@/index.css";
createRoot(document.getElementById("root")!).render(
-
-
-
-
-
+
+
+
+
+
+
+
+
);
diff --git a/packages/client/src/modules/eas.ts b/packages/client/src/modules/eas.ts
index e69de29..10cfae3 100644
--- a/packages/client/src/modules/eas.ts
+++ b/packages/client/src/modules/eas.ts
@@ -0,0 +1,228 @@
+import { graphql } from "gql.tada";
+
+import { EAS } from "@/constants";
+
+import { getFileByHash } from "./pinata";
+import { easArbitrumClient } from "./urql";
+
+const parseDataToWork = async (
+ workUID: string,
+ attestation: {
+ attester: string;
+ recipient: string;
+ time: number;
+ },
+ decodedDataJson: any
+): Promise => {
+ const data = JSON.parse(decodedDataJson);
+
+ const media: string[] = data.filter((d: any) => d.name === "media")[0].value
+ .value!;
+
+ const mediaUrls = await Promise.all(
+ media.map(async (hash: string) => {
+ const file = await getFileByHash(hash);
+ return file.data;
+ })
+ );
+
+ const filteredMedia = mediaUrls.filter((url) => typeof url === "string");
+
+ return {
+ id: workUID,
+ gardenerAddress: attestation.attester,
+ gardenAddress: attestation.recipient,
+ actionUID: data.filter((d: any) => d.name === "actionUID")[0].value.value!,
+ title: data.filter((d: any) => d.name === "title")[0].value.value!,
+ feedback: data.filter((d: any) => d.name === "feedback")[0].value.value!,
+ metadata: data.filter((d: any) => d.name === "metadata")[0].value.value!,
+ media: filteredMedia,
+ createdAt: attestation.time,
+ approvals: [],
+ };
+};
+
+const parseDataToWorkApproval = (
+ workApprovalUID: string,
+ attestation: {
+ attester: string;
+ recipient: string;
+ time: number;
+ },
+ decodedDataJson: any
+): WorkApproval => {
+ const data = JSON.parse(decodedDataJson);
+
+ return {
+ id: workApprovalUID,
+ approverAddress: attestation.attester,
+ recipientAddress: attestation.recipient,
+ actionUID: data.filter((d: any) => d.name === "actionUID")[0].value.value!,
+ workUID: data.filter((d: any) => d.name === "workUID")[0].value.value!,
+ approved: data.filter((d: any) => d.name === "approved")[0].value.value!,
+ feedback: data.filter((d: any) => d.name === "feedback")[0].value.value!,
+ createdAt: attestation.time,
+ };
+};
+
+const parseDataToGardenAssessment = (
+ gardenAssessmentUID: string,
+ attestation: {
+ attester: string;
+ recipient: string;
+ time: number;
+ },
+ decodedDataJson: any
+): GardenAssessment => {
+ const data = JSON.parse(decodedDataJson);
+
+ return {
+ id: gardenAssessmentUID,
+ authorAddress: attestation.attester,
+ gardenAddress: attestation.recipient,
+ soilMoisturePercentage: data.filter(
+ (d: any) => d.name === "soilMoisturePercentage"
+ )[0].value.value!,
+ carbonTonStock: data.filter((d: any) => d.name === "carbonTonStock")[0]
+ .value.value!,
+ carbonTonPotential: data.filter(
+ (d: any) => d.name === "carbonTonPotential"
+ )[0].value.value!,
+ gardenSquareMeters: data.filter(
+ (d: any) => d.name === "gardenSquareMeters"
+ )[0].value.value!,
+ biome: data.filter((d: any) => d.name === "biome")[0].value.value!,
+ remoteReportCID: data.filter((d: any) => d.name === "remoteReportPDF")[0]
+ .value.value!,
+ speciesRegistryCID: data.filter(
+ (d: any) => d.name === "speciesRegistryJSON"
+ )[0].value.value!,
+ polygonCoordinates: data.filter(
+ (d: any) => d.name === "polygonCoordinates"
+ )[0].value.value!,
+ treeGenusesObserved: data.filter(
+ (d: any) => d.name === "treeGenusesObserved"
+ )[0].value.value!,
+ weedGenusesObserved: data.filter(
+ (d: any) => d.name === "weedGenusesObserved"
+ )[0].value.value!,
+ issues: data.filter((d: any) => d.name === "issues")[0].value.value!,
+ tags: data.filter((d: any) => d.name === "tags")[0].value.value!,
+ createdAt: attestation.time,
+ };
+};
+
+export const getWorks = async (): Promise => {
+ // TODO add 'where: valid: true' filter
+ const QUERY = graphql(/* GraphQL */ `
+ query Attestations($where: AttestationWhereInput) {
+ attestations(where: $where) {
+ id
+ attester
+ recipient
+ timeCreated
+ decodedDataJson
+ }
+ }
+ `);
+
+ const { data, error } = await easArbitrumClient
+ .query(QUERY, {
+ where: {
+ schemaId: { equals: EAS["42161"].WORK.uid },
+ },
+ })
+ .toPromise();
+
+ if (error) console.error(error);
+ if (!data) console.error("No data found");
+
+ const works = Promise.all(
+ data?.attestations.map(
+ async ({ id, recipient, timeCreated, decodedDataJson }) =>
+ await parseDataToWork(
+ id,
+ { attester: recipient, recipient, time: timeCreated },
+ decodedDataJson
+ )
+ ) ?? []
+ );
+
+ return works;
+};
+
+export const getWorkApprovals = async (): Promise => {
+ // TODO add 'where: valid: true' filter
+ const QUERY = graphql(/* GraphQL */ `
+ query Attestations($where: AttestationWhereInput) {
+ attestations(where: $where) {
+ id
+ attester
+ recipient
+ timeCreated
+ decodedDataJson
+ }
+ }
+ `);
+
+ const { data, error } = await easArbitrumClient
+ .query(QUERY, {
+ where: {
+ schemaId: { equals: EAS["42161"].WORK_APPROVAL.uid },
+ },
+ })
+ .toPromise();
+
+ if (error) console.error(error);
+ if (!data) console.error("No data found");
+
+ return (
+ data?.attestations.map(({ id, recipient, timeCreated, decodedDataJson }) =>
+ parseDataToWorkApproval(
+ id,
+ { attester: recipient, recipient, time: timeCreated },
+ decodedDataJson
+ )
+ ) ?? []
+ );
+};
+
+export const getGardenAssessments = async (): Promise => {
+ // TODO add 'where: valid: true' filter
+ const QUERY = graphql(/* GraphQL */ `
+ query Attestations($where: AttestationWhereInput) {
+ attestations(where: $where) {
+ id
+ attester
+ recipient
+ timeCreated
+ decodedDataJson
+ }
+ }
+ `);
+
+ const { data, error } = await easArbitrumClient
+ .query(QUERY, {
+ where: {
+ schemaId: { equals: EAS["42161"].GARDEN_ASSESSMENT.uid },
+ },
+ })
+ .toPromise();
+
+ if (error) console.error(error);
+ if (!data) console.error("No data found");
+
+ return (
+ data?.attestations.map(({ id, recipient, timeCreated, decodedDataJson }) =>
+ parseDataToGardenAssessment(
+ id,
+ {
+ attester: recipient,
+ recipient,
+ time: timeCreated,
+ },
+ decodedDataJson
+ )
+ ) ?? []
+ );
+};
diff --git a/packages/client/src/modules/greengoods.ts b/packages/client/src/modules/greengoods.ts
new file mode 100644
index 0000000..e49b45a
--- /dev/null
+++ b/packages/client/src/modules/greengoods.ts
@@ -0,0 +1,75 @@
+import { User } from "@privy-io/react-auth";
+
+import plantActionInstructions from "../utils/actions/plant.json";
+import observerActionInstructions from "../utils/actions/observe.json";
+
+export function getActions(): Action[] {
+ return [
+ {
+ id: 0,
+ startTime: 0,
+ endTime: 0,
+ title: "Observation",
+ instructions: "cid:0x1234",
+ capitals: [Capital.LIVING],
+ media: [],
+ createdAt: 0,
+ description: plantActionInstructions.description,
+ inputs: plantActionInstructions.details.inputs as WorkInput[],
+ mediaInfo: plantActionInstructions.media,
+ details: plantActionInstructions.details,
+ review: plantActionInstructions.review,
+ },
+ {
+ id: 0,
+ startTime: 0,
+ endTime: 0,
+ title: "Planting",
+ instructions: "cid:0x1234",
+ capitals: [Capital.LIVING],
+ media: [],
+ createdAt: 0,
+ description: observerActionInstructions.description,
+ inputs: observerActionInstructions.details.inputs as WorkInput[],
+ mediaInfo: observerActionInstructions.media,
+ details: observerActionInstructions.details,
+ review: observerActionInstructions.review,
+ },
+ ];
+}
+
+export function getGardens(): Garden[] {
+ const operators = [
+ "0x2aa64E6d80390F5C017F0313cB908051BE2FD35e",
+ "0xAcD59e854adf632d2322404198624F757C868C97,",
+ "0x29e6cbF2450F86006292D10A3cF791955600a457",
+ "0x41f842E28c5a18aAF1fCA0e5908E16d3Ff7e4E9c",
+ "0x742fa58340df9Ad7c691De4Ed999CF7f71079A8F",
+ "0xb084b8258e3409deCa8a5847aa5Ee9fda07a62A8",
+ ];
+
+ return [
+ {
+ id: "0xa9Cb249a3B651Ce82bf9E9cc48BCF41957647F48",
+ name: "Root Planet",
+ location: "Rio Claro, São Paulo",
+ bannerImage: "",
+ operators,
+ gardeners: operators,
+ gardenAssessments: [],
+ description:
+ "Observing invasive species and planting natives species to improve biodiversity.",
+ tokenAddress: "0x9EF896a314B7aE98609eC0c0cA43724C768046B4",
+ tokenID: 0,
+ },
+ ];
+}
+
+export async function getGardeners(): Promise {
+ const request = await fetch(
+ import.meta.env.DEV ? "http://localhost:3000/api/users" : "/api/users"
+ );
+ const response: User[] = await request.json();
+
+ return response;
+}
diff --git a/packages/client/src/modules/indexer.ts b/packages/client/src/modules/indexer.ts
deleted file mode 100644
index 8b13789..0000000
--- a/packages/client/src/modules/indexer.ts
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/client/src/modules/pinata.ts b/packages/client/src/modules/pinata.ts
index e69de29..64eaddd 100644
--- a/packages/client/src/modules/pinata.ts
+++ b/packages/client/src/modules/pinata.ts
@@ -0,0 +1,21 @@
+import { PinataSDK } from "pinata";
+
+export const pinata = new PinataSDK({
+ pinataJwt: import.meta.env.VITE_PINATA_JWT as string,
+});
+
+export async function uploadFileToIPFS(file: File) {
+ return await pinata.upload.file(file);
+}
+
+export async function uploadFilesToIPFS(files: File[]) {
+ return await pinata.upload.fileArray(files);
+}
+
+export async function uploadJSONToIPFS(json: Record) {
+ return await pinata.upload.json(json);
+}
+
+export async function getFileByHash(hash: string) {
+ return await pinata.gateways.get(hash);
+}
diff --git a/packages/client/src/modules/react-query.ts b/packages/client/src/modules/react-query.ts
new file mode 100644
index 0000000..6c7b9de
--- /dev/null
+++ b/packages/client/src/modules/react-query.ts
@@ -0,0 +1,3 @@
+import { QueryClient } from "@tanstack/react-query";
+
+export const queryClient = new QueryClient();
diff --git a/packages/client/src/modules/urql.ts b/packages/client/src/modules/urql.ts
new file mode 100644
index 0000000..1794d82
--- /dev/null
+++ b/packages/client/src/modules/urql.ts
@@ -0,0 +1,14 @@
+import { Client, cacheExchange, fetchExchange } from "@urql/core";
+
+export const greenGoodsIndexer = new Client({
+ url:
+ import.meta.env.DEV ?
+ "http://localhost:8000"
+ : "https://green-goods-indever.herokuapp.com",
+ exchanges: [cacheExchange, fetchExchange],
+});
+
+export const easArbitrumClient = new Client({
+ url: "https://arbitrum.easscan.org/graphql",
+ exchanges: [cacheExchange, fetchExchange],
+});
diff --git a/packages/client/src/providers/GardenProvider.tsx b/packages/client/src/providers/GardenProvider.tsx
index e69de29..90d0ace 100644
--- a/packages/client/src/providers/GardenProvider.tsx
+++ b/packages/client/src/providers/GardenProvider.tsx
@@ -0,0 +1,74 @@
+import React, { useContext } from "react";
+import { User } from "@privy-io/react-auth";
+import { useQuery } from "@tanstack/react-query";
+
+import { getGardenAssessments } from "@/modules/eas";
+import { getActions, getGardeners, getGardens } from "@/modules/greengoods";
+
+import { GREEN_GOODS_GARDEN_OPERATOR_WHITELIST } from "@/constants";
+
+export type Gardener = User & { operator: boolean };
+
+export interface GardenDataProps {
+ actions: Action[];
+ gardens: Garden[];
+ gardeners: Gardener[];
+}
+
+const GardenContext = React.createContext({
+ actions: [],
+ gardens: [],
+ gardeners: [],
+});
+
+export const useGarden = () => {
+ return useContext(GardenContext);
+};
+
+export const GardenProvider = ({ children }: { children: React.ReactNode }) => {
+ // QUERIES
+ const { data: actions } = useQuery({
+ queryKey: ["actions"],
+ queryFn: getActions,
+ });
+
+ const { data: gardens } = useQuery({
+ queryKey: ["gardens"],
+ queryFn: async () => {
+ const gardens = getGardens();
+ const assessments = await getGardenAssessments();
+
+ return gardens.map((garden) => {
+ garden.gardenAssessments = assessments.filter(
+ (assessment) => assessment.gardenAddress === garden.id
+ );
+
+ return garden;
+ });
+ },
+ });
+ const { data: gardeners } = useQuery({
+ queryKey: ["gardeners"],
+ queryFn: getGardeners,
+ });
+
+ return (
+ {
+ return {
+ ...gardener,
+ operator: GREEN_GOODS_GARDEN_OPERATOR_WHITELIST.includes(
+ gardener.email?.address || gardener.phone?.number || ""
+ ),
+ };
+ }) || [],
+ }}
+ >
+ {children}
+
+ );
+};
diff --git a/packages/client/src/providers/PWAProvider.tsx b/packages/client/src/providers/PWAProvider.tsx
index 9cb3717..a4f8ed5 100644
--- a/packages/client/src/providers/PWAProvider.tsx
+++ b/packages/client/src/providers/PWAProvider.tsx
@@ -1,16 +1,38 @@
-import { useEffect, useState } from "react";
-
-export type DisplayMode = "standalone" | "browser" | "twa";
-export type InstallState = "idle" | "prompt" | "installed" | "unsupported";
-
+import { IntlProvider } from "react-intl";
+import React, { useState, useEffect, useContext } from "react";
+
+import enMessages from "@/i18n/en.json";
+import ptMessages from "@/i18n/pt.json";
+
+export type InstallState =
+ | "idle"
+ | "not-installed"
+ | "installed"
+ | "unsupported";
+export type Locale = "en" | "pt";
export type Platform = "ios" | "android" | "windows" | "unknown";
export interface PWADataProps {
+ isMobile: boolean;
+ isInstalled: boolean;
platform: Platform;
- installState: InstallState;
+ locale: Locale;
+ deferredPrompt: BeforeInstallPromptEvent | null;
+ promptInstall: () => void;
handleInstallCheck: (e: any) => void;
+ switchLanguage: (lang: Locale) => void;
+}
+
+interface BeforeInstallPromptEvent extends Event {
+ prompt: () => Promise;
+ userChoice: Promise<{ outcome: "accepted" | "dismissed" }>;
}
+const messages = {
+ en: enMessages,
+ pt: ptMessages,
+};
+
function getMobileOperatingSystem(): Platform {
// @ts-ignore
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
@@ -33,73 +55,108 @@ function getMobileOperatingSystem(): Platform {
return "unknown";
}
-export const isHandheld = detectHandheld();
+const PWAContext = React.createContext({
+ isMobile: false,
+ isInstalled: false,
+ locale: "en",
+ deferredPrompt: null,
+ platform: "unknown",
+ promptInstall: () => {},
+ handleInstallCheck: () => {},
+ switchLanguage: () => {},
+});
+
+export const usePWA = () => {
+ return useContext(PWAContext);
+};
-export const usePWA = (): PWADataProps => {
- const [installState, setInstalledState] = useState(
- isHandheld ? "installed" : "unsupported"
- );
+export const PWAProvider = ({ children }: { children: React.ReactNode }) => {
+ const [locale, setLocale] = useState("en");
+ const [deferredPrompt, setDeferredPrompt] =
+ useState(null);
+ const [installState, setInstalledState] = useState("idle");
const platform = getMobileOperatingSystem();
- async function handleInstallCheck(e: any) {
+ async function handleInstallCheck(e: any | null) {
+ e?.preventDefault(); // Prevent the automatic prompt
+ setDeferredPrompt(e);
+
if (
window.matchMedia("(display-mode: standalone)").matches ||
- window.matchMedia("(display-mode: fullscreen)").matches
+ window.matchMedia("(display-mode: fullscreen)").matches ||
+ (window.navigator as any).standalone
) {
setInstalledState("installed");
console.log("PWA was installed", e);
} else {
- // setInstalledState("prompt");
- setInstalledState("installed"); // TODO: Update PWA flow
+ setInstalledState("not-installed");
console.log("PWA was not installed", e);
}
}
+ function handleBeforeInstall(e: Event) {
+ e.preventDefault();
+ setDeferredPrompt(e as BeforeInstallPromptEvent);
+ }
+
function handlePWAInstalled() {
setInstalledState("installed");
// TODO: Add analytics and fire notification
}
+ function switchLanguage(lang: Locale) {
+ setLocale(lang);
+ }
+
+ const promptInstall = () => {
+ if (deferredPrompt) {
+ deferredPrompt.prompt(); // Show the install prompt
+ deferredPrompt.userChoice.then((choiceResult) => {
+ if (choiceResult.outcome === "accepted") {
+ console.log("User accepted the install prompt");
+ } else {
+ console.log("User dismissed the install prompt");
+ }
+ setDeferredPrompt(null); // Clear the saved prompt
+ });
+ }
+ };
+
useEffect(() => {
- isHandheld &&
- window.addEventListener("beforeinstallprompt", handleInstallCheck);
- isHandheld && window.addEventListener("appinstalled", handlePWAInstalled);
+ handleInstallCheck(null);
+
+ window.addEventListener("beforeinstallprompt", handleBeforeInstall);
+ window.addEventListener("appinstalled", handlePWAInstalled);
return () => {
- isHandheld &&
- window.removeEventListener("beforeinstallprompt", handleInstallCheck);
- isHandheld &&
- window.removeEventListener("appinstalled", handlePWAInstalled);
+ window.removeEventListener("beforeinstallprompt", handleBeforeInstall);
+ window.removeEventListener("appinstalled", handlePWAInstalled);
};
}, []);
- return {
- platform,
- installState,
- handleInstallCheck,
- };
-};
-function detectHandheld(): boolean {
- const userAgent =
- navigator.userAgent || navigator.vendor || (window as any).opera;
-
- // Check if the user agent contains any keywords indicating a handheld device
- const handheldKeywords = [
- "Android",
- "webOS",
- "iPhone",
- "iPad",
- "iPod",
- "BlackBerry",
- "Windows Phone",
- ];
- const isHandheld = handheldKeywords.some((keyword) =>
- userAgent.includes(keyword)
+ return (
+
+
+ {children}
+
+
);
-
- return isHandheld;
-}
+};
diff --git a/packages/client/src/providers/SmartAccountProvider.tsx b/packages/client/src/providers/UserProvider.tsx
similarity index 65%
rename from packages/client/src/providers/SmartAccountProvider.tsx
rename to packages/client/src/providers/UserProvider.tsx
index 720137e..99664c5 100644
--- a/packages/client/src/providers/SmartAccountProvider.tsx
+++ b/packages/client/src/providers/UserProvider.tsx
@@ -1,3 +1,13 @@
+import React, { useState, useEffect, useContext } from "react";
+import {
+ User,
+ useLogin,
+ useLogout,
+ usePrivy,
+ useWallets,
+ ConnectedWallet,
+} from "@privy-io/react-auth";
+
import {
ENTRYPOINT_ADDRESS_V07,
type SmartAccountClient,
@@ -12,68 +22,67 @@ import {
createPimlicoBundlerClient,
createPimlicoPaymasterClient,
} from "permissionless/clients/pimlico";
-import { Chain, Transport } from "viem";
-import { arbitrum } from "viem/chains";
import { EntryPoint } from "permissionless/types";
-import React, { useState, useEffect, useContext } from "react";
-import { ConnectedWallet, usePrivy, useWallets } from "@privy-io/react-auth";
+
+import { arbitrum } from "viem/chains";
+import { Chain, Transport } from "viem";
import { createPublicClient, createWalletClient, custom, http } from "viem";
-interface SmartAccountInterface {
- eoa: ConnectedWallet | undefined;
+type SAC = SmartAccountClient<
+ EntryPoint,
+ Transport,
+ Chain,
+ SmartAccount
+>;
+
+interface UserInterface {
+ user: User | null;
+ isOnboarded: boolean;
+ eoa?: ConnectedWallet;
smartAccountReady: boolean;
- smartAccountAddress: `0x${string}` | undefined;
- smartAccountClient:
- | SmartAccountClient<
- EntryPoint,
- Transport,
- Chain,
- SmartAccount
- >
- | Transport
- | any
- | SmartAccount
- | null;
+ smartAccountAddress?: `0x${string}`;
+ smartAccountClient: SAC | null;
+ login: () => void;
+ logout: () => void;
}
-const SmartAccountContext = React.createContext({
+const UserContext = React.createContext({
+ user: null,
+ isOnboarded: false,
eoa: undefined,
- smartAccountClient: undefined,
+ smartAccountClient: null,
smartAccountAddress: undefined,
smartAccountReady: false,
+ login: () => {},
+ logout: () => {},
});
-export const useSmartAccount = () => {
- return useContext(SmartAccountContext);
+export const useUser = () => {
+ return useContext(UserContext);
};
-export const SmartAccountProvider = ({
- children,
-}: {
- children: React.ReactNode;
-}) => {
- // Get a list of all of the wallets (EOAs) the user has connected to your site
+export const UserProvider = ({ children }: { children: React.ReactNode }) => {
+ const [isOnboarded, setOnboarded] = useState(false);
+
const { wallets } = useWallets();
- const { ready } = usePrivy();
- // Find the embedded wallet by finding the entry in the list with a `walletClientType` of 'privy'
+ const { ready, user } = usePrivy();
+ const { login } = useLogin({
+ onComplete(isNewUser) {
+ setOnboarded(!isNewUser);
+ },
+ onError(error) {
+ console.error("Privy error logging in", error);
+ },
+ });
+ const { logout } = useLogout();
const embeddedWallet = wallets.find(
(wallet) => wallet.walletClientType === "privy"
);
- // States to store the smart account and its status
const [eoa, setEoa] = useState();
- const [smartAccountClient, setSmartAccountClient] = useState<
- | SmartAccountClient<
- EntryPoint,
- Transport,
- Chain,
- SmartAccount
- >
- | Transport
- | any
- | SmartAccount
- | null
- >();
+ const [smartAccountClient, setSmartAccountClient] = useState(
+ null
+ );
const [smartAccountAddress, setSmartAccountAddress] = useState<
`0x${string}` | undefined
>();
@@ -84,8 +93,6 @@ export const SmartAccountProvider = ({
}, [ready, embeddedWallet]);
useEffect(() => {
- // Creates a smart account given a Privy `ConnectedWallet` object representing
- // the user's EOA.
const createSmartWallet = async (eoa: ConnectedWallet) => {
setEoa(eoa);
// Get an EIP1193 provider and viem WalletClient for the EOA
@@ -141,28 +148,39 @@ export const SmartAccountProvider = ({
const smartAccountAddress = smartAccountClient.account?.address;
- setSmartAccountClient(smartAccountClient);
+ // Todo: Add test attestation to check if smart account is ready
+
+ setSmartAccountClient(
+ smartAccountClient as SmartAccountClient<
+ EntryPoint,
+ Transport,
+ Chain,
+ SmartAccount
+ >
+ );
setSmartAccountAddress(smartAccountAddress);
setSmartAccountReady(true);
- console.log("smartAccountClient", smartAccountClient.account.address);
+ console.log("smartAccountClient", smartAccountAddress);
};
if (embeddedWallet) createSmartWallet(embeddedWallet);
}, [embeddedWallet?.address]);
- console.log("client", smartAccountClient);
-
return (
-
{children}
-
+
);
};
diff --git a/packages/client/src/providers/WorkProvider.tsx b/packages/client/src/providers/WorkProvider.tsx
index bdfecd9..76b3734 100644
--- a/packages/client/src/providers/WorkProvider.tsx
+++ b/packages/client/src/providers/WorkProvider.tsx
@@ -1,22 +1,161 @@
-// import { getContract } from "viem";
+import { z } from "zod";
+import toast from "react-hot-toast";
+import React, { useContext, useState } from "react";
+import { zodResolver } from "@hookform/resolvers/zod";
+import { useMutation, useQuery } from "@tanstack/react-query";
+import { FormState, useForm, UseFormRegister } from "react-hook-form";
-// import { useSmartAccount } from "./SmartAccountProvider";
+import { EAS } from "@/constants";
+
+import { queryClient } from "@/modules/react-query";
+
+import { useUser } from "./UserProvider";
+import { useGarden } from "./GardenProvider";
+import { encodeWorkData } from "@/utils/eas";
+
+export interface WorkDataProps {
+ actions: Action[];
+ works: Work[];
+ workApprovals: WorkApprovalCard[];
+ form: {
+ state: FormState;
+ actionUID: number | null;
+ images: File[];
+ setImages: React.Dispatch>;
+ setActionUID: React.Dispatch>;
+ register: UseFormRegister;
+ uploadWork?: (e?: React.BaseSyntheticEvent) => Promise;
+ };
+}
+
+const workSchema = z.object({
+ actionUID: z.number(),
+ title: z.string(),
+ feedback: z.string(),
+ metadata: z.string(),
+ plantSelection: z.array(z.string()),
+ plantCount: z.number(),
+ media: z.array(z.instanceof(File)),
+});
+
+const WorkContext = React.createContext({
+ actions: [],
+ actionUID: null,
+ setActionUID: () => {},
+ works: [],
+ workApprovals: [],
+ uploadWork: async () => "",
+ form: {
+ // @ts-ignore
+ register: () => {},
+ actionUID: null,
+ setActionUID: () => {},
+ uploadWork: async () => {},
+ },
+});
export const useWork = () => {
- // const { smartAccountClient } = useSmartAccount();
+ return useContext(WorkContext);
+};
- // const easContract = getContract({
- // address: "0x6d3dC0Fe5351087E3Af3bDe8eB3F7350ed894fc3",
- // abi: [],
- // client: smartAccountClient,
- // });
+export const WorkProvider = ({ children }: { children: React.ReactNode }) => {
+ const { smartAccountClient } = useUser();
+ const { actions } = useGarden();
- function uploadWork() {
- // easContract.write.
- console.log("uploadWork");
- }
+ // QUERIES
+ const { data: works } = useQuery({
+ queryKey: ["works"],
+ queryFn: () => [],
+ });
+ const { data: workApprovals } = useQuery({
+ queryKey: ["workApprovals"],
+ queryFn: () => [],
+ });
- return {
- uploadWork,
- };
+ // MUTATIONS
+ const [actionUID, setActionUID] = useState(null);
+ const [images, setImages] = useState([]);
+
+ const { register, handleSubmit, formState } = useForm({
+ defaultValues: {
+ actionUID: 0,
+ title: "",
+ feedback: "",
+ plantSelection: [],
+ plantCount: 0,
+ // metadata: {},
+ media: [],
+ },
+ resolver: zodResolver(workSchema),
+ });
+
+ const workMutation = useMutation({
+ mutationFn: async (draft: WorkDraft) => {
+ if (!smartAccountClient) {
+ throw new Error("No smart account client found");
+ }
+
+ const encodedData = encodeWorkData(
+ {
+ ...draft,
+ media: images,
+ },
+ "0x"
+ );
+
+ const encodedFunctionCall: `0x${string}` = `0x${encodedData}`; // Todo encode function call and arguments
+
+ const receipt = await smartAccountClient.sendTransaction({
+ to: EAS["42161"].EAS.address as `0x${string}`,
+ data: encodedFunctionCall, // Todo encode solidty function call and arguments
+ });
+
+ return receipt;
+ },
+ onMutate: () => {
+ toast.loading("Uploading work...");
+ },
+ onSuccess: () => {
+ toast.success("Work uploaded!");
+ queryClient.invalidateQueries({ queryKey: ["works"] });
+ },
+ onError: () => {
+ toast.error("Work upload failed!");
+ },
+ });
+
+ const uploadWork = handleSubmit((data) => {
+ workMutation.mutate(data);
+ });
+
+ return (
+ {
+ return {
+ ...work,
+ metadata: JSON.parse(work.metadata),
+ approvals:
+ workApprovals?.filter(
+ (approval) => approval.workUID === work.id
+ ) || [],
+ };
+ }) || [],
+ workApprovals: workApprovals || [],
+ form: {
+ state: formState,
+ register,
+ actionUID,
+ images,
+ setImages,
+ setActionUID,
+ uploadWork,
+ },
+ }}
+ >
+ {children}
+
+ );
};
diff --git a/packages/client/src/types/app.d.ts b/packages/client/src/types/app.d.ts
new file mode 100644
index 0000000..f15f90a
--- /dev/null
+++ b/packages/client/src/types/app.d.ts
@@ -0,0 +1,6 @@
+declare interface Link {
+ title: string;
+ Icon: T;
+ link: string;
+ action?: () => void;
+}
diff --git a/packages/client/src/types/eas.d.ts b/packages/client/src/types/eas.d.ts
new file mode 100644
index 0000000..4c4396b
--- /dev/null
+++ b/packages/client/src/types/eas.d.ts
@@ -0,0 +1,249 @@
+/* eslint-disable */
+/* prettier-ignore */
+
+/** An IntrospectionQuery representation of your schema.
+ *
+ * @remarks
+ * This is an introspection of your schema saved as a file by GraphQLSP.
+ * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents.
+ * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to
+ * instead save to a .ts instead of a .d.ts file.
+ */
+export type introspection = {
+ name: never;
+ query: 'Query';
+ mutation: 'Mutation';
+ subscription: never;
+ types: {
+ 'AffectedRowsOutput': { kind: 'OBJECT'; name: 'AffectedRowsOutput'; fields: { 'count': { name: 'count'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'AggregateAttestation': { kind: 'OBJECT'; name: 'AggregateAttestation'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'AttestationAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'AttestationCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'AttestationMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'AttestationMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'AttestationSumAggregate'; ofType: null; } }; }; };
+ 'AggregateEnsName': { kind: 'OBJECT'; name: 'AggregateEnsName'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'EnsNameAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'EnsNameCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'EnsNameMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'EnsNameMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'EnsNameSumAggregate'; ofType: null; } }; }; };
+ 'AggregateOffchainRevocation': { kind: 'OBJECT'; name: 'AggregateOffchainRevocation'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'OffchainRevocationAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'OffchainRevocationCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'OffchainRevocationMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'OffchainRevocationMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'OffchainRevocationSumAggregate'; ofType: null; } }; }; };
+ 'AggregateSchema': { kind: 'OBJECT'; name: 'AggregateSchema'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'SchemaAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'SchemaCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'SchemaMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'SchemaMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'SchemaSumAggregate'; ofType: null; } }; }; };
+ 'AggregateSchemaName': { kind: 'OBJECT'; name: 'AggregateSchemaName'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'SchemaNameAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'SchemaNameCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'SchemaNameMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'SchemaNameMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'SchemaNameSumAggregate'; ofType: null; } }; }; };
+ 'AggregateServiceStat': { kind: 'OBJECT'; name: 'AggregateServiceStat'; fields: { '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'ServiceStatCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'ServiceStatMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'ServiceStatMinAggregate'; ofType: null; } }; }; };
+ 'AggregateTimestamp': { kind: 'OBJECT'; name: 'AggregateTimestamp'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'TimestampAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'TimestampCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'TimestampMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'TimestampMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'TimestampSumAggregate'; ofType: null; } }; }; };
+ 'Attestation': { kind: 'OBJECT'; name: 'Attestation'; fields: { 'attester': { name: 'attester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'data': { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'decodedDataJson': { name: 'decodedDataJson'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'expirationTime': { name: 'expirationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ipfsHash': { name: 'ipfsHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'isOffchain': { name: 'isOffchain'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'recipient': { name: 'recipient'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'refUID': { name: 'refUID'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'revocable': { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'revocationTime': { name: 'revocationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'revoked': { name: 'revoked'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schema': { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Schema'; ofType: null; }; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'timeCreated': { name: 'timeCreated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'AttestationAvgAggregate': { kind: 'OBJECT'; name: 'AttestationAvgAggregate'; fields: { 'expirationTime': { name: 'expirationTime'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'revocationTime': { name: 'revocationTime'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'timeCreated': { name: 'timeCreated'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; }; };
+ 'AttestationAvgOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationAvgOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationCountAggregate': { kind: 'OBJECT'; name: 'AttestationCountAggregate'; fields: { '_all': { name: '_all'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'attester': { name: 'attester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'data': { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'decodedDataJson': { name: 'decodedDataJson'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'expirationTime': { name: 'expirationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'ipfsHash': { name: 'ipfsHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'isOffchain': { name: 'isOffchain'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'recipient': { name: 'recipient'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'refUID': { name: 'refUID'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'revocable': { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'revocationTime': { name: 'revocationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'revoked': { name: 'revoked'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'timeCreated': { name: 'timeCreated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'AttestationCountOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationCountOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationCreateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationCreateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'attester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateNestedOneWithoutAttestationsInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationCreateManyInput': { kind: 'INPUT_OBJECT'; name: 'AttestationCreateManyInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'attester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationCreateManySchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationCreateManySchemaInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'attester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationCreateManySchemaInputEnvelope': { kind: 'INPUT_OBJECT'; name: 'AttestationCreateManySchemaInputEnvelope'; isOneOf: false; inputFields: [{ name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateManySchemaInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'skipDuplicates'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationCreateNestedManyWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationCreateNestedManyWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateOrConnectWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'createMany'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateManySchemaInputEnvelope'; ofType: null; }; defaultValue: null }, { name: 'connect'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }]; };
+ 'AttestationCreateOrConnectWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationCreateOrConnectWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationCreateWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationCreateWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'attester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationGroupBy': { kind: 'OBJECT'; name: 'AttestationGroupBy'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'AttestationAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'AttestationCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'AttestationMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'AttestationMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'AttestationSumAggregate'; ofType: null; } }; 'attester': { name: 'attester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'data': { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'decodedDataJson': { name: 'decodedDataJson'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'expirationTime': { name: 'expirationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ipfsHash': { name: 'ipfsHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'isOffchain': { name: 'isOffchain'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'recipient': { name: 'recipient'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'refUID': { name: 'refUID'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'revocable': { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'revocationTime': { name: 'revocationTime'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'revoked': { name: 'revoked'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'timeCreated': { name: 'timeCreated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'AttestationListRelationFilter': { kind: 'INPUT_OBJECT'; name: 'AttestationListRelationFilter'; isOneOf: false; inputFields: [{ name: 'every'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereInput'; ofType: null; }; defaultValue: null }, { name: 'some'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereInput'; ofType: null; }; defaultValue: null }, { name: 'none'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereInput'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationMaxAggregate': { kind: 'OBJECT'; name: 'AttestationMaxAggregate'; fields: { 'attester': { name: 'attester'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'data': { name: 'data'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'decodedDataJson': { name: 'decodedDataJson'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'expirationTime': { name: 'expirationTime'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'ipfsHash': { name: 'ipfsHash'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'isOffchain': { name: 'isOffchain'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'recipient': { name: 'recipient'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'refUID': { name: 'refUID'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'revocable': { name: 'revocable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'revocationTime': { name: 'revocationTime'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'revoked': { name: 'revoked'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'timeCreated': { name: 'timeCreated'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'AttestationMaxOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationMaxOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationMinAggregate': { kind: 'OBJECT'; name: 'AttestationMinAggregate'; fields: { 'attester': { name: 'attester'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'data': { name: 'data'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'decodedDataJson': { name: 'decodedDataJson'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'expirationTime': { name: 'expirationTime'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'ipfsHash': { name: 'ipfsHash'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'isOffchain': { name: 'isOffchain'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'recipient': { name: 'recipient'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'refUID': { name: 'refUID'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'revocable': { name: 'revocable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'revocationTime': { name: 'revocationTime'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'revoked': { name: 'revoked'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'timeCreated': { name: 'timeCreated'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'AttestationMinOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationMinOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationOrderByRelationAggregateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationOrderByRelationAggregateInput'; isOneOf: false; inputFields: [{ name: '_count'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationOrderByWithAggregationInput': { kind: 'INPUT_OBJECT'; name: 'AttestationOrderByWithAggregationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationCountOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationAvgOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationMaxOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationMinOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationSumOrderByAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationOrderByWithRelationInput': { kind: 'INPUT_OBJECT'; name: 'AttestationOrderByWithRelationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaOrderByWithRelationInput'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationScalarFieldEnum': { name: 'AttestationScalarFieldEnum'; enumValues: 'id' | 'data' | 'decodedDataJson' | 'recipient' | 'attester' | 'time' | 'timeCreated' | 'expirationTime' | 'revocationTime' | 'refUID' | 'revocable' | 'revoked' | 'txid' | 'schemaId' | 'ipfsHash' | 'isOffchain'; };
+ 'AttestationScalarWhereInput': { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationScalarWhereWithAggregatesInput': { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereWithAggregatesInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'INPUT_OBJECT'; name: 'BoolWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'INPUT_OBJECT'; name: 'BoolWithAggregatesFilter'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationSumAggregate': { kind: 'OBJECT'; name: 'AttestationSumAggregate'; fields: { 'expirationTime': { name: 'expirationTime'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'revocationTime': { name: 'revocationTime'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'timeCreated': { name: 'timeCreated'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'AttestationSumOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationSumOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationUpdateInput': { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateOneRequiredWithoutAttestationsNestedInput'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationUpdateManyMutationInput': { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateManyMutationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationUpdateManyWithWhereWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateManyWithWhereWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereInput'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateManyMutationInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationUpdateManyWithoutSchemaNestedInput': { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateManyWithoutSchemaNestedInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateOrConnectWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'upsert'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationUpsertWithWhereUniqueWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'createMany'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateManySchemaInputEnvelope'; ofType: null; }; defaultValue: null }, { name: 'set'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'disconnect'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'delete'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'connect'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'update'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateWithWhereUniqueWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'updateMany'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateManyWithWhereWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'deleteMany'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }]; };
+ 'AttestationUpdateWithWhereUniqueWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateWithWhereUniqueWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationUpdateWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationUpsertWithWhereUniqueWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'AttestationUpsertWithWhereUniqueWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'update'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'AttestationWhereInput': { kind: 'INPUT_OBJECT'; name: 'AttestationWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AttestationWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'data'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'decodedDataJson'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'recipient'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'attester'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'timeCreated'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'expirationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'revocationTime'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'refUID'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }, { name: 'revoked'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'ipfsHash'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'isOffchain'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaRelationFilter'; ofType: null; }; defaultValue: null }]; };
+ 'AttestationWhereUniqueInput': { kind: 'INPUT_OBJECT'; name: 'AttestationWhereUniqueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ 'BoolFieldUpdateOperationsInput': { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; isOneOf: false; inputFields: [{ name: 'set'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; };
+ 'BoolFilter': { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolFilter'; ofType: null; }; defaultValue: null }]; };
+ 'BoolWithAggregatesFilter': { kind: 'INPUT_OBJECT'; name: 'BoolWithAggregatesFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolFilter'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolFilter'; ofType: null; }; defaultValue: null }]; };
+ 'Boolean': unknown;
+ 'EnsName': { kind: 'OBJECT'; name: 'EnsName'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'EnsNameAvgAggregate': { kind: 'OBJECT'; name: 'EnsNameAvgAggregate'; fields: { 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; }; };
+ 'EnsNameAvgOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameAvgOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameCountAggregate': { kind: 'OBJECT'; name: 'EnsNameCountAggregate'; fields: { '_all': { name: '_all'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'EnsNameCountOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameCountOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameCreateInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameCreateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; };
+ 'EnsNameCreateManyInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameCreateManyInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; };
+ 'EnsNameGroupBy': { kind: 'OBJECT'; name: 'EnsNameGroupBy'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'EnsNameAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'EnsNameCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'EnsNameMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'EnsNameMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'EnsNameSumAggregate'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'EnsNameMaxAggregate': { kind: 'OBJECT'; name: 'EnsNameMaxAggregate'; fields: { 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'EnsNameMaxOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameMaxOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameMinAggregate': { kind: 'OBJECT'; name: 'EnsNameMinAggregate'; fields: { 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'EnsNameMinOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameMinOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameOrderByWithAggregationInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameOrderByWithAggregationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'EnsNameCountOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'EnsNameAvgOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'EnsNameMaxOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'EnsNameMinOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'EnsNameSumOrderByAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameOrderByWithRelationInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameOrderByWithRelationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameScalarFieldEnum': { name: 'EnsNameScalarFieldEnum'; enumValues: 'id' | 'name' | 'timestamp'; };
+ 'EnsNameScalarWhereWithAggregatesInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameScalarWhereWithAggregatesInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'EnsNameScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'EnsNameScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'EnsNameScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameSumAggregate': { kind: 'OBJECT'; name: 'EnsNameSumAggregate'; fields: { 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'EnsNameSumOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameSumOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameUpdateInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameUpdateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameUpdateManyMutationInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameUpdateManyMutationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameWhereInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'EnsNameWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'EnsNameWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'EnsNameWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }]; };
+ 'EnsNameWhereUniqueInput': { kind: 'INPUT_OBJECT'; name: 'EnsNameWhereUniqueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ 'Float': unknown;
+ 'Int': unknown;
+ 'IntFieldUpdateOperationsInput': { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; isOneOf: false; inputFields: [{ name: 'set'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'increment'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'decrement'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'multiply'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'divide'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }]; };
+ 'IntFilter': { kind: 'INPUT_OBJECT'; name: 'IntFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }]; };
+ 'IntWithAggregatesFilter': { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'NestedFloatFilter'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }]; };
+ 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'createManyAttestation': { name: 'createManyAttestation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'createManyEnsName': { name: 'createManyEnsName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'createManyOffchainRevocation': { name: 'createManyOffchainRevocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'createManySchema': { name: 'createManySchema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'createManySchemaName': { name: 'createManySchemaName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'createManyServiceStat': { name: 'createManyServiceStat'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'createManyTimestamp': { name: 'createManyTimestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'createOneAttestation': { name: 'createOneAttestation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; }; } }; 'createOneEnsName': { name: 'createOneEnsName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; }; } }; 'createOneOffchainRevocation': { name: 'createOneOffchainRevocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; }; } }; 'createOneSchema': { name: 'createOneSchema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Schema'; ofType: null; }; } }; 'createOneSchemaName': { name: 'createOneSchemaName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; }; } }; 'createOneServiceStat': { name: 'createOneServiceStat'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; }; } }; 'createOneTimestamp': { name: 'createOneTimestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; }; } }; 'deleteManyAttestation': { name: 'deleteManyAttestation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'deleteManyEnsName': { name: 'deleteManyEnsName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'deleteManyOffchainRevocation': { name: 'deleteManyOffchainRevocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'deleteManySchema': { name: 'deleteManySchema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'deleteManySchemaName': { name: 'deleteManySchemaName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'deleteManyServiceStat': { name: 'deleteManyServiceStat'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'deleteManyTimestamp': { name: 'deleteManyTimestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'deleteOneAttestation': { name: 'deleteOneAttestation'; type: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; } }; 'deleteOneEnsName': { name: 'deleteOneEnsName'; type: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; } }; 'deleteOneOffchainRevocation': { name: 'deleteOneOffchainRevocation'; type: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; } }; 'deleteOneSchema': { name: 'deleteOneSchema'; type: { kind: 'OBJECT'; name: 'Schema'; ofType: null; } }; 'deleteOneSchemaName': { name: 'deleteOneSchemaName'; type: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; } }; 'deleteOneServiceStat': { name: 'deleteOneServiceStat'; type: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; } }; 'deleteOneTimestamp': { name: 'deleteOneTimestamp'; type: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; } }; 'updateManyAttestation': { name: 'updateManyAttestation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'updateManyEnsName': { name: 'updateManyEnsName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'updateManyOffchainRevocation': { name: 'updateManyOffchainRevocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'updateManySchema': { name: 'updateManySchema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'updateManySchemaName': { name: 'updateManySchemaName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'updateManyServiceStat': { name: 'updateManyServiceStat'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'updateManyTimestamp': { name: 'updateManyTimestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AffectedRowsOutput'; ofType: null; }; } }; 'updateOneAttestation': { name: 'updateOneAttestation'; type: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; } }; 'updateOneEnsName': { name: 'updateOneEnsName'; type: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; } }; 'updateOneOffchainRevocation': { name: 'updateOneOffchainRevocation'; type: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; } }; 'updateOneSchema': { name: 'updateOneSchema'; type: { kind: 'OBJECT'; name: 'Schema'; ofType: null; } }; 'updateOneSchemaName': { name: 'updateOneSchemaName'; type: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; } }; 'updateOneServiceStat': { name: 'updateOneServiceStat'; type: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; } }; 'updateOneTimestamp': { name: 'updateOneTimestamp'; type: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; } }; 'upsertOneAttestation': { name: 'upsertOneAttestation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; }; } }; 'upsertOneEnsName': { name: 'upsertOneEnsName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; }; } }; 'upsertOneOffchainRevocation': { name: 'upsertOneOffchainRevocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; }; } }; 'upsertOneSchema': { name: 'upsertOneSchema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Schema'; ofType: null; }; } }; 'upsertOneSchemaName': { name: 'upsertOneSchemaName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; }; } }; 'upsertOneServiceStat': { name: 'upsertOneServiceStat'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; }; } }; 'upsertOneTimestamp': { name: 'upsertOneTimestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; }; } }; }; };
+ 'NestedBoolFilter': { kind: 'INPUT_OBJECT'; name: 'NestedBoolFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolFilter'; ofType: null; }; defaultValue: null }]; };
+ 'NestedBoolWithAggregatesFilter': { kind: 'INPUT_OBJECT'; name: 'NestedBoolWithAggregatesFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolFilter'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'NestedBoolFilter'; ofType: null; }; defaultValue: null }]; };
+ 'NestedFloatFilter': { kind: 'INPUT_OBJECT'; name: 'NestedFloatFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedFloatFilter'; ofType: null; }; defaultValue: null }]; };
+ 'NestedIntFilter': { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }]; };
+ 'NestedIntWithAggregatesFilter': { kind: 'INPUT_OBJECT'; name: 'NestedIntWithAggregatesFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'NestedFloatFilter'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }]; };
+ 'NestedStringFilter': { kind: 'INPUT_OBJECT'; name: 'NestedStringFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'startsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'endsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringFilter'; ofType: null; }; defaultValue: null }]; };
+ 'NestedStringWithAggregatesFilter': { kind: 'INPUT_OBJECT'; name: 'NestedStringWithAggregatesFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'startsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'endsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringFilter'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringFilter'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocation': { kind: 'OBJECT'; name: 'OffchainRevocation'; fields: { 'from': { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'uid': { name: 'uid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'OffchainRevocationAvgAggregate': { kind: 'OBJECT'; name: 'OffchainRevocationAvgAggregate'; fields: { 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; }; };
+ 'OffchainRevocationAvgOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationAvgOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationCountAggregate': { kind: 'OBJECT'; name: 'OffchainRevocationCountAggregate'; fields: { '_all': { name: '_all'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'from': { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'uid': { name: 'uid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'OffchainRevocationCountOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationCountOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationCreateInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationCreateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'uid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; };
+ 'OffchainRevocationCreateManyInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationCreateManyInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'uid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; };
+ 'OffchainRevocationGroupBy': { kind: 'OBJECT'; name: 'OffchainRevocationGroupBy'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'OffchainRevocationAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'OffchainRevocationCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'OffchainRevocationMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'OffchainRevocationMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'OffchainRevocationSumAggregate'; ofType: null; } }; 'from': { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'uid': { name: 'uid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'OffchainRevocationMaxAggregate': { kind: 'OBJECT'; name: 'OffchainRevocationMaxAggregate'; fields: { 'from': { name: 'from'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'uid': { name: 'uid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'OffchainRevocationMaxOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationMaxOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationMinAggregate': { kind: 'OBJECT'; name: 'OffchainRevocationMinAggregate'; fields: { 'from': { name: 'from'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'uid': { name: 'uid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'OffchainRevocationMinOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationMinOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationOrderByWithAggregationInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationOrderByWithAggregationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationCountOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationAvgOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationMaxOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationMinOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationSumOrderByAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationOrderByWithRelationInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationOrderByWithRelationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationScalarFieldEnum': { name: 'OffchainRevocationScalarFieldEnum'; enumValues: 'id' | 'from' | 'uid' | 'txid' | 'timestamp'; };
+ 'OffchainRevocationScalarWhereWithAggregatesInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationScalarWhereWithAggregatesInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationSumAggregate': { kind: 'OBJECT'; name: 'OffchainRevocationSumAggregate'; fields: { 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'OffchainRevocationSumOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationSumOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationUpdateInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationUpdateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationUpdateManyMutationInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationUpdateManyMutationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationWhereInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }]; };
+ 'OffchainRevocationWhereUniqueInput': { kind: 'INPUT_OBJECT'; name: 'OffchainRevocationWhereUniqueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'aggregateAttestation': { name: 'aggregateAttestation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AggregateAttestation'; ofType: null; }; } }; 'aggregateEnsName': { name: 'aggregateEnsName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AggregateEnsName'; ofType: null; }; } }; 'aggregateOffchainRevocation': { name: 'aggregateOffchainRevocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AggregateOffchainRevocation'; ofType: null; }; } }; 'aggregateSchema': { name: 'aggregateSchema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AggregateSchema'; ofType: null; }; } }; 'aggregateSchemaName': { name: 'aggregateSchemaName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AggregateSchemaName'; ofType: null; }; } }; 'aggregateServiceStat': { name: 'aggregateServiceStat'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AggregateServiceStat'; ofType: null; }; } }; 'aggregateTimestamp': { name: 'aggregateTimestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AggregateTimestamp'; ofType: null; }; } }; 'attestation': { name: 'attestation'; type: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; } }; 'attestations': { name: 'attestations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; }; }; }; } }; 'ensName': { name: 'ensName'; type: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; } }; 'ensNames': { name: 'ensNames'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; }; }; }; } }; 'findFirstAttestation': { name: 'findFirstAttestation'; type: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; } }; 'findFirstAttestationOrThrow': { name: 'findFirstAttestationOrThrow'; type: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; } }; 'findFirstEnsName': { name: 'findFirstEnsName'; type: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; } }; 'findFirstEnsNameOrThrow': { name: 'findFirstEnsNameOrThrow'; type: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; } }; 'findFirstOffchainRevocation': { name: 'findFirstOffchainRevocation'; type: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; } }; 'findFirstOffchainRevocationOrThrow': { name: 'findFirstOffchainRevocationOrThrow'; type: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; } }; 'findFirstSchema': { name: 'findFirstSchema'; type: { kind: 'OBJECT'; name: 'Schema'; ofType: null; } }; 'findFirstSchemaName': { name: 'findFirstSchemaName'; type: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; } }; 'findFirstSchemaNameOrThrow': { name: 'findFirstSchemaNameOrThrow'; type: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; } }; 'findFirstSchemaOrThrow': { name: 'findFirstSchemaOrThrow'; type: { kind: 'OBJECT'; name: 'Schema'; ofType: null; } }; 'findFirstServiceStat': { name: 'findFirstServiceStat'; type: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; } }; 'findFirstServiceStatOrThrow': { name: 'findFirstServiceStatOrThrow'; type: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; } }; 'findFirstTimestamp': { name: 'findFirstTimestamp'; type: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; } }; 'findFirstTimestampOrThrow': { name: 'findFirstTimestampOrThrow'; type: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; } }; 'getAttestation': { name: 'getAttestation'; type: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; } }; 'getEnsName': { name: 'getEnsName'; type: { kind: 'OBJECT'; name: 'EnsName'; ofType: null; } }; 'getOffchainRevocation': { name: 'getOffchainRevocation'; type: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; } }; 'getSchema': { name: 'getSchema'; type: { kind: 'OBJECT'; name: 'Schema'; ofType: null; } }; 'getSchemaName': { name: 'getSchemaName'; type: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; } }; 'getServiceStat': { name: 'getServiceStat'; type: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; } }; 'getTimestamp': { name: 'getTimestamp'; type: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; } }; 'groupByAttestation': { name: 'groupByAttestation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AttestationGroupBy'; ofType: null; }; }; }; } }; 'groupByEnsName': { name: 'groupByEnsName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'EnsNameGroupBy'; ofType: null; }; }; }; } }; 'groupByOffchainRevocation': { name: 'groupByOffchainRevocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OffchainRevocationGroupBy'; ofType: null; }; }; }; } }; 'groupBySchema': { name: 'groupBySchema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SchemaGroupBy'; ofType: null; }; }; }; } }; 'groupBySchemaName': { name: 'groupBySchemaName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SchemaNameGroupBy'; ofType: null; }; }; }; } }; 'groupByServiceStat': { name: 'groupByServiceStat'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ServiceStatGroupBy'; ofType: null; }; }; }; } }; 'groupByTimestamp': { name: 'groupByTimestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TimestampGroupBy'; ofType: null; }; }; }; } }; 'offchainRevocation': { name: 'offchainRevocation'; type: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; } }; 'offchainRevocations': { name: 'offchainRevocations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OffchainRevocation'; ofType: null; }; }; }; } }; 'schema': { name: 'schema'; type: { kind: 'OBJECT'; name: 'Schema'; ofType: null; } }; 'schemaName': { name: 'schemaName'; type: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; } }; 'schemaNames': { name: 'schemaNames'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; }; }; }; } }; 'schemata': { name: 'schemata'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Schema'; ofType: null; }; }; }; } }; 'serviceStat': { name: 'serviceStat'; type: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; } }; 'serviceStats': { name: 'serviceStats'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ServiceStat'; ofType: null; }; }; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; } }; 'timestamps': { name: 'timestamps'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Timestamp'; ofType: null; }; }; }; } }; }; };
+ 'QueryMode': { name: 'QueryMode'; enumValues: 'default' | 'insensitive'; };
+ 'Schema': { kind: 'OBJECT'; name: 'Schema'; fields: { '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'SchemaCount'; ofType: null; } }; 'attestations': { name: 'attestations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Attestation'; ofType: null; }; }; }; } }; 'creator': { name: 'creator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'index': { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'resolver': { name: 'resolver'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'revocable': { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schema': { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'schemaNames': { name: 'schemaNames'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SchemaName'; ofType: null; }; }; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'SchemaAvgAggregate': { kind: 'OBJECT'; name: 'SchemaAvgAggregate'; fields: { 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; }; };
+ 'SchemaAvgOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaAvgOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaCount': { kind: 'OBJECT'; name: 'SchemaCount'; fields: { 'attestations': { name: 'attestations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'schemaNames': { name: 'schemaNames'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'SchemaCountAggregate': { kind: 'OBJECT'; name: 'SchemaCountAggregate'; fields: { '_all': { name: '_all'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'creator': { name: 'creator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'index': { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'resolver': { name: 'resolver'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'revocable': { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'schema': { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'SchemaCountOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCountOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaCreateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'creator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'attestations'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateNestedManyWithoutSchemaInput'; ofType: null; }; defaultValue: null }, { name: 'schemaNames'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateNestedManyWithoutSchemaInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaCreateManyInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateManyInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'creator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaCreateNestedOneWithoutAttestationsInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateNestedOneWithoutAttestationsInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutAttestationsInput'; ofType: null; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateOrConnectWithoutAttestationsInput'; ofType: null; }; defaultValue: null }, { name: 'connect'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereUniqueInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaCreateNestedOneWithoutSchemaNamesInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateNestedOneWithoutSchemaNamesInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutSchemaNamesInput'; ofType: null; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateOrConnectWithoutSchemaNamesInput'; ofType: null; }; defaultValue: null }, { name: 'connect'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereUniqueInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaCreateOrConnectWithoutAttestationsInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateOrConnectWithoutAttestationsInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutAttestationsInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaCreateOrConnectWithoutSchemaNamesInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateOrConnectWithoutSchemaNamesInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutSchemaNamesInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaCreateWithoutAttestationsInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutAttestationsInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'creator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'schemaNames'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateNestedManyWithoutSchemaInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaCreateWithoutSchemaNamesInput': { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutSchemaNamesInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'creator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'attestations'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationCreateNestedManyWithoutSchemaInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaGroupBy': { kind: 'OBJECT'; name: 'SchemaGroupBy'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'SchemaAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'SchemaCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'SchemaMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'SchemaMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'SchemaSumAggregate'; ofType: null; } }; 'creator': { name: 'creator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'index': { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'resolver': { name: 'resolver'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'revocable': { name: 'revocable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schema': { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'SchemaMaxAggregate': { kind: 'OBJECT'; name: 'SchemaMaxAggregate'; fields: { 'creator': { name: 'creator'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'index': { name: 'index'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'resolver': { name: 'resolver'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'revocable': { name: 'revocable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'schema': { name: 'schema'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'SchemaMaxOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaMaxOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaMinAggregate': { kind: 'OBJECT'; name: 'SchemaMinAggregate'; fields: { 'creator': { name: 'creator'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'index': { name: 'index'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'resolver': { name: 'resolver'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'revocable': { name: 'revocable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'schema': { name: 'schema'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'SchemaMinOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaMinOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaName': { kind: 'OBJECT'; name: 'SchemaName'; fields: { 'attesterAddress': { name: 'attesterAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'isCreator': { name: 'isCreator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'schema': { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Schema'; ofType: null; }; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'SchemaNameAvgAggregate': { kind: 'OBJECT'; name: 'SchemaNameAvgAggregate'; fields: { 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; }; };
+ 'SchemaNameAvgOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameAvgOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameCountAggregate': { kind: 'OBJECT'; name: 'SchemaNameCountAggregate'; fields: { '_all': { name: '_all'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'attesterAddress': { name: 'attesterAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'isCreator': { name: 'isCreator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'SchemaNameCountOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCountOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameCreateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'schema'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateNestedOneWithoutSchemaNamesInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameCreateManyInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateManyInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameCreateManySchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateManySchemaInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameCreateManySchemaInputEnvelope': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateManySchemaInputEnvelope'; isOneOf: false; inputFields: [{ name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateManySchemaInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'skipDuplicates'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameCreateNestedManyWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateNestedManyWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateOrConnectWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'createMany'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateManySchemaInputEnvelope'; ofType: null; }; defaultValue: null }, { name: 'connect'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }]; };
+ 'SchemaNameCreateOrConnectWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateOrConnectWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameCreateWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameGroupBy': { kind: 'OBJECT'; name: 'SchemaNameGroupBy'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'SchemaNameAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'SchemaNameCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'SchemaNameMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'SchemaNameMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'SchemaNameSumAggregate'; ofType: null; } }; 'attesterAddress': { name: 'attesterAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'isCreator': { name: 'isCreator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'time': { name: 'time'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'SchemaNameListRelationFilter': { kind: 'INPUT_OBJECT'; name: 'SchemaNameListRelationFilter'; isOneOf: false; inputFields: [{ name: 'every'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereInput'; ofType: null; }; defaultValue: null }, { name: 'some'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereInput'; ofType: null; }; defaultValue: null }, { name: 'none'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameMaxAggregate': { kind: 'OBJECT'; name: 'SchemaNameMaxAggregate'; fields: { 'attesterAddress': { name: 'attesterAddress'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'isCreator': { name: 'isCreator'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'SchemaNameMaxOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameMaxOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameMinAggregate': { kind: 'OBJECT'; name: 'SchemaNameMinAggregate'; fields: { 'attesterAddress': { name: 'attesterAddress'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'isCreator': { name: 'isCreator'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'schemaId': { name: 'schemaId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'SchemaNameMinOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameMinOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameOrderByRelationAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameOrderByRelationAggregateInput'; isOneOf: false; inputFields: [{ name: '_count'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameOrderByWithAggregationInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameOrderByWithAggregationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCountOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameAvgOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameMaxOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameMinOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameSumOrderByAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameOrderByWithRelationInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameOrderByWithRelationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaOrderByWithRelationInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameScalarFieldEnum': { name: 'SchemaNameScalarFieldEnum'; enumValues: 'id' | 'schemaId' | 'attesterAddress' | 'name' | 'time' | 'isCreator'; };
+ 'SchemaNameScalarWhereInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameScalarWhereWithAggregatesInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereWithAggregatesInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'INPUT_OBJECT'; name: 'BoolWithAggregatesFilter'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameSumAggregate': { kind: 'OBJECT'; name: 'SchemaNameSumAggregate'; fields: { 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'SchemaNameSumOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameSumOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameUpdateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateOneRequiredWithoutSchemaNamesNestedInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameUpdateManyMutationInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateManyMutationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameUpdateManyWithWhereWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateManyWithWhereWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereInput'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateManyMutationInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameUpdateManyWithoutSchemaNestedInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateManyWithoutSchemaNestedInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateOrConnectWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'upsert'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpsertWithWhereUniqueWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'createMany'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateManySchemaInputEnvelope'; ofType: null; }; defaultValue: null }, { name: 'set'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'disconnect'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'delete'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'connect'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'update'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateWithWhereUniqueWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'updateMany'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateManyWithWhereWithoutSchemaInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'deleteMany'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameScalarWhereInput'; ofType: null; }; }; }; defaultValue: null }]; };
+ 'SchemaNameUpdateWithWhereUniqueWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateWithWhereUniqueWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameUpdateWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameUpsertWithWhereUniqueWithoutSchemaInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpsertWithWhereUniqueWithoutSchemaInput'; isOneOf: false; inputFields: [{ name: 'where'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; ofType: null; }; }; defaultValue: null }, { name: 'update'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameCreateWithoutSchemaInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaNameWhereInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'schemaId'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'attesterAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'isCreator'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaRelationFilter'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaNameWhereUniqueInput': { kind: 'INPUT_OBJECT'; name: 'SchemaNameWhereUniqueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaOrderByWithAggregationInput': { kind: 'INPUT_OBJECT'; name: 'SchemaOrderByWithAggregationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCountOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaAvgOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaMaxOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaMinOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaSumOrderByAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaOrderByWithRelationInput': { kind: 'INPUT_OBJECT'; name: 'SchemaOrderByWithRelationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attestations'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationOrderByRelationAggregateInput'; ofType: null; }; defaultValue: null }, { name: 'schemaNames'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameOrderByRelationAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaRelationFilter': { kind: 'INPUT_OBJECT'; name: 'SchemaRelationFilter'; isOneOf: false; inputFields: [{ name: 'is'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereInput'; ofType: null; }; defaultValue: null }, { name: 'isNot'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaScalarFieldEnum': { name: 'SchemaScalarFieldEnum'; enumValues: 'id' | 'schema' | 'creator' | 'resolver' | 'revocable' | 'index' | 'txid' | 'time'; };
+ 'SchemaScalarWhereWithAggregatesInput': { kind: 'INPUT_OBJECT'; name: 'SchemaScalarWhereWithAggregatesInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaSumAggregate': { kind: 'OBJECT'; name: 'SchemaSumAggregate'; fields: { 'time': { name: 'time'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'SchemaSumOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaSumOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'time'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaUpdateInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attestations'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateManyWithoutSchemaNestedInput'; ofType: null; }; defaultValue: null }, { name: 'schemaNames'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateManyWithoutSchemaNestedInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaUpdateManyMutationInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateManyMutationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaUpdateOneRequiredWithoutAttestationsNestedInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateOneRequiredWithoutAttestationsNestedInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutAttestationsInput'; ofType: null; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateOrConnectWithoutAttestationsInput'; ofType: null; }; defaultValue: null }, { name: 'upsert'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaUpsertWithoutAttestationsInput'; ofType: null; }; defaultValue: null }, { name: 'connect'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereUniqueInput'; ofType: null; }; defaultValue: null }, { name: 'update'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateWithoutAttestationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaUpdateOneRequiredWithoutSchemaNamesNestedInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateOneRequiredWithoutSchemaNamesNestedInput'; isOneOf: false; inputFields: [{ name: 'create'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutSchemaNamesInput'; ofType: null; }; defaultValue: null }, { name: 'connectOrCreate'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateOrConnectWithoutSchemaNamesInput'; ofType: null; }; defaultValue: null }, { name: 'upsert'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaUpsertWithoutSchemaNamesInput'; ofType: null; }; defaultValue: null }, { name: 'connect'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereUniqueInput'; ofType: null; }; defaultValue: null }, { name: 'update'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateWithoutSchemaNamesInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaUpdateWithoutAttestationsInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateWithoutAttestationsInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'schemaNames'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameUpdateManyWithoutSchemaNestedInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaUpdateWithoutSchemaNamesInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateWithoutSchemaNamesInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'attestations'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationUpdateManyWithoutSchemaNestedInput'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaUpsertWithoutAttestationsInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpsertWithoutAttestationsInput'; isOneOf: false; inputFields: [{ name: 'update'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateWithoutAttestationsInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutAttestationsInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaUpsertWithoutSchemaNamesInput': { kind: 'INPUT_OBJECT'; name: 'SchemaUpsertWithoutSchemaNamesInput'; isOneOf: false; inputFields: [{ name: 'update'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaUpdateWithoutSchemaNamesInput'; ofType: null; }; }; defaultValue: null }, { name: 'create'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaCreateWithoutSchemaNamesInput'; ofType: null; }; }; defaultValue: null }]; };
+ 'SchemaWhereInput': { kind: 'INPUT_OBJECT'; name: 'SchemaWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SchemaWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'schema'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'creator'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'resolver'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'revocable'; type: { kind: 'INPUT_OBJECT'; name: 'BoolFilter'; ofType: null; }; defaultValue: null }, { name: 'index'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'time'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }, { name: 'attestations'; type: { kind: 'INPUT_OBJECT'; name: 'AttestationListRelationFilter'; ofType: null; }; defaultValue: null }, { name: 'schemaNames'; type: { kind: 'INPUT_OBJECT'; name: 'SchemaNameListRelationFilter'; ofType: null; }; defaultValue: null }]; };
+ 'SchemaWhereUniqueInput': { kind: 'INPUT_OBJECT'; name: 'SchemaWhereUniqueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStat': { kind: 'OBJECT'; name: 'ServiceStat'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'ServiceStatCountAggregate': { kind: 'OBJECT'; name: 'ServiceStatCountAggregate'; fields: { '_all': { name: '_all'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'ServiceStatCountOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatCountOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatCreateInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatCreateInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; };
+ 'ServiceStatCreateManyInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatCreateManyInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; };
+ 'ServiceStatGroupBy': { kind: 'OBJECT'; name: 'ServiceStatGroupBy'; fields: { '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'ServiceStatCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'ServiceStatMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'ServiceStatMinAggregate'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'ServiceStatMaxAggregate': { kind: 'OBJECT'; name: 'ServiceStatMaxAggregate'; fields: { 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'value': { name: 'value'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'ServiceStatMaxOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatMaxOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatMinAggregate': { kind: 'OBJECT'; name: 'ServiceStatMinAggregate'; fields: { 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'value': { name: 'value'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'ServiceStatMinOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatMinOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatOrderByWithAggregationInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatOrderByWithAggregationInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'ServiceStatCountOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'ServiceStatMaxOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'ServiceStatMinOrderByAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatOrderByWithRelationInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatOrderByWithRelationInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatScalarFieldEnum': { name: 'ServiceStatScalarFieldEnum'; enumValues: 'name' | 'value'; };
+ 'ServiceStatScalarWhereWithAggregatesInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatScalarWhereWithAggregatesInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ServiceStatScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ServiceStatScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ServiceStatScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatUpdateInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatUpdateInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatUpdateManyMutationInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatUpdateManyMutationInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatWhereInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ServiceStatWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ServiceStatWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ServiceStatWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }]; };
+ 'ServiceStatWhereUniqueInput': { kind: 'INPUT_OBJECT'; name: 'ServiceStatWhereUniqueInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ 'SortOrder': { name: 'SortOrder'; enumValues: 'asc' | 'desc'; };
+ 'String': unknown;
+ 'StringFieldUpdateOperationsInput': { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; isOneOf: false; inputFields: [{ name: 'set'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ 'StringFilter': { kind: 'INPUT_OBJECT'; name: 'StringFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'startsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'endsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'mode'; type: { kind: 'ENUM'; name: 'QueryMode'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringFilter'; ofType: null; }; defaultValue: null }]; };
+ 'StringWithAggregatesFilter': { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; isOneOf: false; inputFields: [{ name: 'equals'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'startsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'endsWith'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'mode'; type: { kind: 'ENUM'; name: 'QueryMode'; ofType: null; }; defaultValue: null }, { name: 'not'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'NestedIntFilter'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringFilter'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'NestedStringFilter'; ofType: null; }; defaultValue: null }]; };
+ 'Timestamp': { kind: 'OBJECT'; name: 'Timestamp'; fields: { 'from': { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'tree': { name: 'tree'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'TimestampAvgAggregate': { kind: 'OBJECT'; name: 'TimestampAvgAggregate'; fields: { 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; }; };
+ 'TimestampAvgOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'TimestampAvgOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampCountAggregate': { kind: 'OBJECT'; name: 'TimestampCountAggregate'; fields: { '_all': { name: '_all'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'from': { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'tree': { name: 'tree'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; };
+ 'TimestampCountOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'TimestampCountOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampCreateInput': { kind: 'INPUT_OBJECT'; name: 'TimestampCreateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'tree'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; };
+ 'TimestampCreateManyInput': { kind: 'INPUT_OBJECT'; name: 'TimestampCreateManyInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'tree'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; };
+ 'TimestampGroupBy': { kind: 'OBJECT'; name: 'TimestampGroupBy'; fields: { '_avg': { name: '_avg'; type: { kind: 'OBJECT'; name: 'TimestampAvgAggregate'; ofType: null; } }; '_count': { name: '_count'; type: { kind: 'OBJECT'; name: 'TimestampCountAggregate'; ofType: null; } }; '_max': { name: '_max'; type: { kind: 'OBJECT'; name: 'TimestampMaxAggregate'; ofType: null; } }; '_min': { name: '_min'; type: { kind: 'OBJECT'; name: 'TimestampMinAggregate'; ofType: null; } }; '_sum': { name: '_sum'; type: { kind: 'OBJECT'; name: 'TimestampSumAggregate'; ofType: null; } }; 'from': { name: 'from'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'tree': { name: 'tree'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'txid': { name: 'txid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; };
+ 'TimestampMaxAggregate': { kind: 'OBJECT'; name: 'TimestampMaxAggregate'; fields: { 'from': { name: 'from'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'tree': { name: 'tree'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'TimestampMaxOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'TimestampMaxOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampMinAggregate': { kind: 'OBJECT'; name: 'TimestampMinAggregate'; fields: { 'from': { name: 'from'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'tree': { name: 'tree'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'txid': { name: 'txid'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; };
+ 'TimestampMinOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'TimestampMinOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampOrderByWithAggregationInput': { kind: 'INPUT_OBJECT'; name: 'TimestampOrderByWithAggregationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: '_count'; type: { kind: 'INPUT_OBJECT'; name: 'TimestampCountOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_avg'; type: { kind: 'INPUT_OBJECT'; name: 'TimestampAvgOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_max'; type: { kind: 'INPUT_OBJECT'; name: 'TimestampMaxOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_min'; type: { kind: 'INPUT_OBJECT'; name: 'TimestampMinOrderByAggregateInput'; ofType: null; }; defaultValue: null }, { name: '_sum'; type: { kind: 'INPUT_OBJECT'; name: 'TimestampSumOrderByAggregateInput'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampOrderByWithRelationInput': { kind: 'INPUT_OBJECT'; name: 'TimestampOrderByWithRelationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampScalarFieldEnum': { name: 'TimestampScalarFieldEnum'; enumValues: 'id' | 'from' | 'txid' | 'tree' | 'timestamp'; };
+ 'TimestampScalarWhereWithAggregatesInput': { kind: 'INPUT_OBJECT'; name: 'TimestampScalarWhereWithAggregatesInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TimestampScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TimestampScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TimestampScalarWhereWithAggregatesInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'INPUT_OBJECT'; name: 'StringWithAggregatesFilter'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntWithAggregatesFilter'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampSumAggregate': { kind: 'OBJECT'; name: 'TimestampSumAggregate'; fields: { 'timestamp': { name: 'timestamp'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; };
+ 'TimestampSumOrderByAggregateInput': { kind: 'INPUT_OBJECT'; name: 'TimestampSumOrderByAggregateInput'; isOneOf: false; inputFields: [{ name: 'timestamp'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampUpdateInput': { kind: 'INPUT_OBJECT'; name: 'TimestampUpdateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampUpdateManyMutationInput': { kind: 'INPUT_OBJECT'; name: 'TimestampUpdateManyMutationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'INPUT_OBJECT'; name: 'StringFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFieldUpdateOperationsInput'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampWhereInput': { kind: 'INPUT_OBJECT'; name: 'TimestampWhereInput'; isOneOf: false; inputFields: [{ name: 'AND'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TimestampWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'OR'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TimestampWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'NOT'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TimestampWhereInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'from'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'txid'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'tree'; type: { kind: 'INPUT_OBJECT'; name: 'StringFilter'; ofType: null; }; defaultValue: null }, { name: 'timestamp'; type: { kind: 'INPUT_OBJECT'; name: 'IntFilter'; ofType: null; }; defaultValue: null }]; };
+ 'TimestampWhereUniqueInput': { kind: 'INPUT_OBJECT'; name: 'TimestampWhereUniqueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; };
+ };
+};
+
+import * as gqlTada from 'gql.tada';
+
+declare module 'gql.tada' {
+ interface setupSchema {
+ introspection: introspection
+ }
+}
\ No newline at end of file
diff --git a/packages/client/src/types/greengoods.d.ts b/packages/client/src/types/greengoods.d.ts
index e69de29..4c42e34 100644
--- a/packages/client/src/types/greengoods.d.ts
+++ b/packages/client/src/types/greengoods.d.ts
@@ -0,0 +1,162 @@
+declare enum Capital {
+ SOCIAL,
+ MATERIAL,
+ FINANCIAL,
+ LIVING,
+ INTELLECTUAL,
+ EXPERIENTIAL,
+ SPIRITUAL,
+ CULTURAL,
+}
+
+declare type Plant =
+ | "Jatoba"
+ | "uvaia"
+ | "avocado"
+ | "banana"
+ | "jambo"
+ | "inga"
+ | "ipê";
+
+// declare interface UserCard {
+// id: string; // Privy ID
+// username: string; // Unique username
+// gardenerAddress: string; // Smart Account Address
+// avatar?: string;
+// location?: string;
+// createdAt?: string;
+// }
+
+// declare interface UserDraft {
+// username: string;
+// avatar: string;
+// location: string;
+// }
+
+// declare interface User extends UserDraft, UserCard {
+// eoaAddress: string; // EOA address
+// onboarded: boolean;
+// email?: string;
+// phoneNumber?: string;
+// }
+
+declare interface GardenAssessment {
+ id: string;
+ authorAddress: string;
+ gardenAddress: string;
+ soilMoisturePercentage: number;
+ carbonTonStock: number;
+ carbonTonPotential: number;
+ gardenSquareMeters: number;
+ biome: string;
+ remoteReportCID: string;
+ speciesRegistryCID: string;
+ polygonCoordinates: string;
+ treeGenusesObserved: string[];
+ weedGenusesObserved: string[];
+ issues: string[];
+ tags: string[];
+ createdAt: number;
+}
+
+declare interface GardenCard {
+ id: string;
+ name: string;
+ location: string;
+ bannerImage: string;
+ operators: string[];
+}
+
+declare interface Garden extends GardenCard {
+ description: string;
+ tokenAddress: string;
+ tokenID: number;
+ gardeners: string[];
+ gardenAssessments: GardenAssessment[];
+}
+
+declare interface ActionCard {
+ id: number;
+ startTime: number;
+ endTime: number;
+ title: string;
+ instructions: string;
+ capitals: Captial[];
+ media: string[];
+ createdAt: number;
+}
+
+declare interface Action extends ActionCard {
+ description: string;
+ inputs: WorkInput[];
+ mediaInfo: {
+ title: string;
+ description: string;
+ maxImageCount: number;
+ };
+ details: {
+ title: string;
+ description: string;
+ feedbackPlaceholder: string;
+ };
+ review: {
+ title: string;
+ description: string;
+ };
+}
+
+declare interface WorkInput {
+ title: string;
+ placeholder: string;
+ type: "text" | "textarea" | "select" | "number";
+ required: boolean;
+ options: string[];
+}
+
+declare interface WorkDraft {
+ actionUID: number;
+ title: string;
+ plantSelection: string[];
+ plantCount: number;
+ feedback: string;
+ // metadata: Record;
+ media: File[];
+}
+
+declare interface WorkCard {
+ id: string;
+ title: string;
+ actionUID: number;
+ gardenerAddress: string;
+ gardenAddress: string;
+ feedback: string;
+ metadata: string;
+ media: string[];
+ createdAt: number;
+}
+
+declare interface WorkMetadata {
+ [key: string]: string | number | boolean | string[];
+}
+
+declare interface Work extends WorkCard {
+ approvals: WorkApproval[];
+}
+
+declare interface WorkApprovalDraft {
+ actionUID: number;
+ workUID: string;
+ approved: boolean;
+ feedback: string;
+}
+
+declare interface WorkApprovalCard {
+ id: string;
+ workUID: string;
+ approved: boolean;
+ recipientAddress: string;
+ approverAddress: string;
+ createdAt: number;
+}
+
+declare interface WorkApproval extends WorkApprovalDraft, WorkApprovalCard {}
diff --git a/packages/client/src/types/vite-env.d.ts b/packages/client/src/types/vite-env.d.ts
index 7cb47f4..7751425 100644
--- a/packages/client/src/types/vite-env.d.ts
+++ b/packages/client/src/types/vite-env.d.ts
@@ -1,9 +1,15 @@
///
///
-// declare namespace NodeJS {
-// interface ProcessEnv {
-// readonly NODE_ENV: "development" | "production" | "test";
-// readonly PUBLIC_URL: string;
-// }
-// }
+interface ImportMetaEnv {
+ readonly NODE_ENV: "development" | "production" | "test";
+ readonly PUBLIC_URL: string;
+ readonly VITE_ALCHEMY_API_KEY: string;
+ readonly VITE_PRIVY_APP_ID: string;
+ readonly VITE_PIMLICO_API_KEY: string;
+ readonly VITE_PINATA_API_KEY: string;
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv;
+}
diff --git a/packages/client/src/utils/EAS.json b/packages/client/src/utils/EAS.json
deleted file mode 100644
index 899ca7e..0000000
--- a/packages/client/src/utils/EAS.json
+++ /dev/null
@@ -1,1185 +0,0 @@
-{
- "_format": "hh-sol-artifact-1",
- "contractName": "EAS",
- "sourceName": "contracts/EAS.sol",
- "abi": [
- {
- "inputs": [
- {
- "internalType": "contract ISchemaRegistry",
- "name": "registry",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "constructor"
- },
- {
- "inputs": [],
- "name": "AccessDenied",
- "type": "error"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "account",
- "type": "address"
- }
- ],
- "name": "AddressInsufficientBalance",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "AlreadyRevoked",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "AlreadyRevokedOffchain",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "AlreadyTimestamped",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "DeadlineExpired",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "FailedInnerCall",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InsufficientValue",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidAttestation",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidAttestations",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidExpirationTime",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidLength",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidNonce",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidOffset",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidRegistry",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidRevocation",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidRevocations",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidSchema",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidShortString",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidSignature",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "InvalidVerifier",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "Irrevocable",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "NotFound",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "NotPayable",
- "type": "error"
- },
- {
- "inputs": [
- {
- "internalType": "string",
- "name": "str",
- "type": "string"
- }
- ],
- "name": "StringTooLong",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "WrongSchema",
- "type": "error"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "recipient",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "attester",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "schemaUID",
- "type": "bytes32"
- }
- ],
- "name": "Attested",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [],
- "name": "EIP712DomainChanged",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "oldNonce",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "newNonce",
- "type": "uint256"
- }
- ],
- "name": "NonceIncreased",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "recipient",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "attester",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "schemaUID",
- "type": "bytes32"
- }
- ],
- "name": "Revoked",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "revoker",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "data",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "uint64",
- "name": "timestamp",
- "type": "uint64"
- }
- ],
- "name": "RevokedOffchain",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "data",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "uint64",
- "name": "timestamp",
- "type": "uint64"
- }
- ],
- "name": "Timestamped",
- "type": "event"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "address",
- "name": "recipient",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "expirationTime",
- "type": "uint64"
- },
- {
- "internalType": "bool",
- "name": "revocable",
- "type": "bool"
- },
- {
- "internalType": "bytes32",
- "name": "refUID",
- "type": "bytes32"
- },
- {
- "internalType": "bytes",
- "name": "data",
- "type": "bytes"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct AttestationRequestData",
- "name": "data",
- "type": "tuple"
- }
- ],
- "internalType": "struct AttestationRequest",
- "name": "request",
- "type": "tuple"
- }
- ],
- "name": "attest",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "address",
- "name": "recipient",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "expirationTime",
- "type": "uint64"
- },
- {
- "internalType": "bool",
- "name": "revocable",
- "type": "bool"
- },
- {
- "internalType": "bytes32",
- "name": "refUID",
- "type": "bytes32"
- },
- {
- "internalType": "bytes",
- "name": "data",
- "type": "bytes"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct AttestationRequestData",
- "name": "data",
- "type": "tuple"
- },
- {
- "components": [
- {
- "internalType": "uint8",
- "name": "v",
- "type": "uint8"
- },
- {
- "internalType": "bytes32",
- "name": "r",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "s",
- "type": "bytes32"
- }
- ],
- "internalType": "struct Signature",
- "name": "signature",
- "type": "tuple"
- },
- {
- "internalType": "address",
- "name": "attester",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "deadline",
- "type": "uint64"
- }
- ],
- "internalType": "struct DelegatedAttestationRequest",
- "name": "delegatedRequest",
- "type": "tuple"
- }
- ],
- "name": "attestByDelegation",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "eip712Domain",
- "outputs": [
- {
- "internalType": "bytes1",
- "name": "fields",
- "type": "bytes1"
- },
- {
- "internalType": "string",
- "name": "name",
- "type": "string"
- },
- {
- "internalType": "string",
- "name": "version",
- "type": "string"
- },
- {
- "internalType": "uint256",
- "name": "chainId",
- "type": "uint256"
- },
- {
- "internalType": "address",
- "name": "verifyingContract",
- "type": "address"
- },
- {
- "internalType": "bytes32",
- "name": "salt",
- "type": "bytes32"
- },
- {
- "internalType": "uint256[]",
- "name": "extensions",
- "type": "uint256[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "getAttestTypeHash",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "pure",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- }
- ],
- "name": "getAttestation",
- "outputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "internalType": "uint64",
- "name": "time",
- "type": "uint64"
- },
- {
- "internalType": "uint64",
- "name": "expirationTime",
- "type": "uint64"
- },
- {
- "internalType": "uint64",
- "name": "revocationTime",
- "type": "uint64"
- },
- {
- "internalType": "bytes32",
- "name": "refUID",
- "type": "bytes32"
- },
- {
- "internalType": "address",
- "name": "recipient",
- "type": "address"
- },
- {
- "internalType": "address",
- "name": "attester",
- "type": "address"
- },
- {
- "internalType": "bool",
- "name": "revocable",
- "type": "bool"
- },
- {
- "internalType": "bytes",
- "name": "data",
- "type": "bytes"
- }
- ],
- "internalType": "struct Attestation",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "getDomainSeparator",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "getName",
- "outputs": [
- {
- "internalType": "string",
- "name": "",
- "type": "string"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "account",
- "type": "address"
- }
- ],
- "name": "getNonce",
- "outputs": [
- {
- "internalType": "uint256",
- "name": "",
- "type": "uint256"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "revoker",
- "type": "address"
- },
- {
- "internalType": "bytes32",
- "name": "data",
- "type": "bytes32"
- }
- ],
- "name": "getRevokeOffchain",
- "outputs": [
- {
- "internalType": "uint64",
- "name": "",
- "type": "uint64"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "getRevokeTypeHash",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "pure",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "getSchemaRegistry",
- "outputs": [
- {
- "internalType": "contract ISchemaRegistry",
- "name": "",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "data",
- "type": "bytes32"
- }
- ],
- "name": "getTimestamp",
- "outputs": [
- {
- "internalType": "uint64",
- "name": "",
- "type": "uint64"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "uint256",
- "name": "newNonce",
- "type": "uint256"
- }
- ],
- "name": "increaseNonce",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- }
- ],
- "name": "isAttestationValid",
- "outputs": [
- {
- "internalType": "bool",
- "name": "",
- "type": "bool"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "address",
- "name": "recipient",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "expirationTime",
- "type": "uint64"
- },
- {
- "internalType": "bool",
- "name": "revocable",
- "type": "bool"
- },
- {
- "internalType": "bytes32",
- "name": "refUID",
- "type": "bytes32"
- },
- {
- "internalType": "bytes",
- "name": "data",
- "type": "bytes"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct AttestationRequestData[]",
- "name": "data",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct MultiAttestationRequest[]",
- "name": "multiRequests",
- "type": "tuple[]"
- }
- ],
- "name": "multiAttest",
- "outputs": [
- {
- "internalType": "bytes32[]",
- "name": "",
- "type": "bytes32[]"
- }
- ],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "address",
- "name": "recipient",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "expirationTime",
- "type": "uint64"
- },
- {
- "internalType": "bool",
- "name": "revocable",
- "type": "bool"
- },
- {
- "internalType": "bytes32",
- "name": "refUID",
- "type": "bytes32"
- },
- {
- "internalType": "bytes",
- "name": "data",
- "type": "bytes"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct AttestationRequestData[]",
- "name": "data",
- "type": "tuple[]"
- },
- {
- "components": [
- {
- "internalType": "uint8",
- "name": "v",
- "type": "uint8"
- },
- {
- "internalType": "bytes32",
- "name": "r",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "s",
- "type": "bytes32"
- }
- ],
- "internalType": "struct Signature[]",
- "name": "signatures",
- "type": "tuple[]"
- },
- {
- "internalType": "address",
- "name": "attester",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "deadline",
- "type": "uint64"
- }
- ],
- "internalType": "struct MultiDelegatedAttestationRequest[]",
- "name": "multiDelegatedRequests",
- "type": "tuple[]"
- }
- ],
- "name": "multiAttestByDelegation",
- "outputs": [
- {
- "internalType": "bytes32[]",
- "name": "",
- "type": "bytes32[]"
- }
- ],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct RevocationRequestData[]",
- "name": "data",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct MultiRevocationRequest[]",
- "name": "multiRequests",
- "type": "tuple[]"
- }
- ],
- "name": "multiRevoke",
- "outputs": [],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct RevocationRequestData[]",
- "name": "data",
- "type": "tuple[]"
- },
- {
- "components": [
- {
- "internalType": "uint8",
- "name": "v",
- "type": "uint8"
- },
- {
- "internalType": "bytes32",
- "name": "r",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "s",
- "type": "bytes32"
- }
- ],
- "internalType": "struct Signature[]",
- "name": "signatures",
- "type": "tuple[]"
- },
- {
- "internalType": "address",
- "name": "revoker",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "deadline",
- "type": "uint64"
- }
- ],
- "internalType": "struct MultiDelegatedRevocationRequest[]",
- "name": "multiDelegatedRequests",
- "type": "tuple[]"
- }
- ],
- "name": "multiRevokeByDelegation",
- "outputs": [],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32[]",
- "name": "data",
- "type": "bytes32[]"
- }
- ],
- "name": "multiRevokeOffchain",
- "outputs": [
- {
- "internalType": "uint64",
- "name": "",
- "type": "uint64"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32[]",
- "name": "data",
- "type": "bytes32[]"
- }
- ],
- "name": "multiTimestamp",
- "outputs": [
- {
- "internalType": "uint64",
- "name": "",
- "type": "uint64"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct RevocationRequestData",
- "name": "data",
- "type": "tuple"
- }
- ],
- "internalType": "struct RevocationRequest",
- "name": "request",
- "type": "tuple"
- }
- ],
- "name": "revoke",
- "outputs": [],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "schema",
- "type": "bytes32"
- },
- {
- "components": [
- {
- "internalType": "bytes32",
- "name": "uid",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "internalType": "struct RevocationRequestData",
- "name": "data",
- "type": "tuple"
- },
- {
- "components": [
- {
- "internalType": "uint8",
- "name": "v",
- "type": "uint8"
- },
- {
- "internalType": "bytes32",
- "name": "r",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "s",
- "type": "bytes32"
- }
- ],
- "internalType": "struct Signature",
- "name": "signature",
- "type": "tuple"
- },
- {
- "internalType": "address",
- "name": "revoker",
- "type": "address"
- },
- {
- "internalType": "uint64",
- "name": "deadline",
- "type": "uint64"
- }
- ],
- "internalType": "struct DelegatedRevocationRequest",
- "name": "delegatedRequest",
- "type": "tuple"
- }
- ],
- "name": "revokeByDelegation",
- "outputs": [],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "data",
- "type": "bytes32"
- }
- ],
- "name": "revokeOffchain",
- "outputs": [
- {
- "internalType": "uint64",
- "name": "",
- "type": "uint64"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "data",
- "type": "bytes32"
- }
- ],
- "name": "timestamp",
- "outputs": [
- {
- "internalType": "uint64",
- "name": "",
- "type": "uint64"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "version",
- "outputs": [
- {
- "internalType": "string",
- "name": "",
- "type": "string"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- }
- ],
- "bytecode": "0x6101e060405234801561001157600080fd5b50604051614e58380380614e58833981016040819052610030916101f3565b60408051808201825260038082526245415360e81b602080840191909152835180850190945260058452640312e332e360dc1b90840152600160805260a052600060c081905290919082908290610088908390610179565b61018052610097816001610179565b6101a0528151602080840191909120610140528151908201206101605246610100526101276101405161016051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60e05250503061012052600261013d83826102c2565b5050506001600160a01b038116610167576040516311a1e69760e01b815260040160405180910390fd5b6001600160a01b03166101c0526103f2565b60006020835110156101955761018e836101ac565b90506101a6565b816101a084826102c2565b5060ff90505b92915050565b600080829050601f815111156101e0578260405163305a27a960e01b81526004016101d79190610380565b60405180910390fd5b80516101eb826103ce565b179392505050565b60006020828403121561020557600080fd5b81516001600160a01b038116811461021c57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061024d57607f821691505b60208210810361026d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102bd57806000526020600020601f840160051c8101602085101561029a5750805b601f840160051c820191505b818110156102ba57600081556001016102a6565b50505b505050565b81516001600160401b038111156102db576102db610223565b6102ef816102e98454610239565b84610273565b6020601f821160018114610323576000831561030b5750848201515b600019600385901b1c1916600184901b1784556102ba565b600084815260208120601f198516915b828110156103535787850151825560209485019460019092019101610333565b50848210156103715786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b818110156103ae5760208186018101516040868401015201610391565b506000604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561026d5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516149d261048660003960008181610538015281816115c10152611ef901526000612824015260006127f70152600061293101526000612909015260006128640152600061288e015260006128b801526000610c3401526000610c0b01526000610be201526149d26000f3fe6080604052600436106101965760003560e01c806384b0196e116100e1578063cf190f341161008a578063e71ff36511610064578063e71ff365146104dc578063ed24911d146104fc578063f10b5cc814610511578063f17325e71461056257600080fd5b8063cf190f3414610446578063d45c443514610466578063e30bb5631461049d57600080fd5b8063a6d4dbc7116100bb578063a6d4dbc7146103a6578063b469318d146103b9578063b83010d31461041357600080fd5b806384b0196e1461033e5780639541152514610366578063a3112a641461037957600080fd5b806344adc90e116101435780634d0030701161011d5780634d003070146102e957806354fd4d501461030957806379f7573a1461031e57600080fd5b806344adc90e146102a357806346926267146102c35780634cb7e9e5146102d657600080fd5b806317d7de7c1161017457806317d7de7c1461022b5780632d0335ab1461024d5780633c0427151461029057600080fd5b80630eabf6601461019b57806312b11a17146101b057806313893f61146101f2575b600080fd5b6101ae6101a936600461378d565b610575565b005b3480156101bc57600080fd5b507ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880765b6040519081526020015b60405180910390f35b3480156101fe57600080fd5b5061021261020d36600461378d565b61070c565b60405167ffffffffffffffff90911681526020016101e9565b34801561023757600080fd5b50610240610751565b6040516101e9919061383d565b34801561025957600080fd5b506101df610268366004613889565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101df61029e3660046138a6565b6107e3565b6102b66102b136600461378d565b6108e6565b6040516101e991906138e1565b6101ae6102d1366004613924565b610a67565b6101ae6102e436600461378d565b610aeb565b3480156102f557600080fd5b5061021261030436600461393f565b610bce565b34801561031557600080fd5b50610240610bdb565b34801561032a57600080fd5b506101ae61033936600461393f565b610c7e565b34801561034a57600080fd5b50610353610d17565b6040516101e99796959493929190613994565b6102b661037436600461378d565b610d79565b34801561038557600080fd5b5061039961039436600461393f565b610fec565b6040516101e99190613b16565b6101ae6103b4366004613b29565b6111ae565b3480156103c557600080fd5b506102126103d4366004613b3d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205467ffffffffffffffff1690565b34801561041f57600080fd5b507fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e756101df565b34801561045257600080fd5b5061021261046136600461393f565b611253565b34801561047257600080fd5b5061021261048136600461393f565b60009081526005602052604090205467ffffffffffffffff1690565b3480156104a957600080fd5b506104cc6104b836600461393f565b600090815260046020526040902054151590565b60405190151581526020016101e9565b3480156104e857600080fd5b506102126104f736600461378d565b611261565b34801561050857600080fd5b506101df611299565b34801561051d57600080fd5b5060405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101e9565b6101df610570366004613b69565b6112a8565b348160005b81811015610705577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201811460008686848181106105bb576105bb613ba4565b90506020028101906105cd9190613bd3565b6105d690613e69565b60208101518051919250908015806105f357508260400151518114155b1561062a576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156106ce576106c66040518060a001604052808660000151815260200185848151811061065f5761065f613ba4565b602002602001015181526020018660400151848151811061068257610682613ba4565b60200260200101518152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015167ffffffffffffffff16815250611366565b60010161062d565b506106e483600001518385606001518a88611578565b6106ee9088613f99565b9650505050506106fe8160010190565b905061057a565b5050505050565b60004282825b818110156107455761073d3387878481811061073057610730613ba4565b9050602002013585611bc9565b600101610712565b50909150505b92915050565b60606002805461076090613fac565b80601f016020809104026020016040519081016040528092919081815260200182805461078c90613fac565b80156107d95780601f106107ae576101008083540402835291602001916107d9565b820191906000526020600020905b8154815290600101906020018083116107bc57829003601f168201915b5050505050905090565b60006107f66107f183614126565b611cc8565b604080516001808252818301909252600091816020015b6040805160c081018252600080825260208083018290529282018190526060808301829052608083015260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161080d57905050905061087b60208401846141a1565b610884906141d5565b8160008151811061089757610897613ba4565b60209081029190910101526108c08335826108b860c0870160a08801613889565b346001611e53565b602001516000815181106108d6576108d6613ba4565b6020026020010151915050919050565b60608160008167ffffffffffffffff81111561090457610904613c11565b60405190808252806020026020018201604052801561093757816020015b60608152602001906001900390816109225790505b509050600034815b84811015610a51577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850181143689898481811061097f5761097f613ba4565b905060200281019061099191906141e1565b90506109a06020820182614215565b90506000036109db576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a0082356109ef6020850185614215565b6109f89161427d565b338887611e53565b8051909150610a0f9086613f99565b94508060200151878581518110610a2857610a28613ba4565b602002602001018190525080602001515186019550505050610a4a8160010190565b905061093f565b50610a5c8383612586565b979650505050505050565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610a7e579050509050610ab9368390038301602084016142e3565b81600081518110610acc57610acc613ba4565b6020908102919091010152610ae682358233346001611578565b505050565b348160005b81811015610705577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201811436868684818110610b3057610b30613ba4565b9050602002810190610b4291906141e1565b9050610baf8135610b5660208401846142ff565b808060200260200160405190810160405280939291908181526020016000905b82821015610ba257610b93604083028601368190038101906142e3565b81526020019060010190610b76565b5050505050338886611578565b610bb99086613f99565b94505050610bc78160010190565b9050610af0565b60004261074b8382612670565b6060610c067f0000000000000000000000000000000000000000000000000000000000000000612732565b610c2f7f0000000000000000000000000000000000000000000000000000000000000000612732565b610c587f0000000000000000000000000000000000000000000000000000000000000000612732565b604051602001610c6a93929190614367565b604051602081830303815290604052905090565b33600090815260036020526040902054808211610cc7576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602090815260409182902084905581518381529081018490527f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb7910160405180910390a15050565b600060608060008060006060610d2b6127f0565b610d3361281d565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60608160008167ffffffffffffffff811115610d9757610d97613c11565b604051908082528060200260200182016040528015610dca57816020015b6060815260200190600190039081610db55790505b509050600034815b84811015610a51577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8501811436898984818110610e1257610e12613ba4565b9050602002810190610e249190613bd3565b9050366000610e366020840184614215565b909250905080801580610e575750610e5160408501856143fe565b90508114155b15610e8e576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610f6f57610f676040518060a0016040528087600001358152602001868685818110610ec357610ec3613ba4565b9050602002810190610ed591906141a1565b610ede906141d5565b8152602001610ef060408901896143fe565b85818110610f0057610f00613ba4565b905060600201803603810190610f169190614465565b8152602001610f2b6080890160608a01613889565b73ffffffffffffffffffffffffffffffffffffffff168152602001610f5660a0890160808a01614481565b67ffffffffffffffff169052611cc8565b600101610e91565b506000610f988535610f81858761427d565b610f916080890160608a01613889565b8b8a611e53565b8051909150610fa79089613f99565b975080602001518a8881518110610fc057610fc0613ba4565b602002602001018190525080602001515189019850505050505050610fe58160010190565b9050610dd2565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082019290925261012081019190915260008281526004602081815260409283902083516101408101855281548152600182015492810192909252600281015467ffffffffffffffff808216958401959095526801000000000000000081048516606084015270010000000000000000000000000000000090049093166080820152600383015460a08201529082015473ffffffffffffffffffffffffffffffffffffffff90811660c0830152600583015490811660e083015274010000000000000000000000000000000000000000900460ff1615156101008201526006820180549192916101208401919061112590613fac565b80601f016020809104026020016040519081016040528092919081815260200182805461115190613fac565b801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b5050505050815250509050919050565b6111c56111c03683900383018361449c565b611366565b604080516001808252818301909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816111dc579050509050611217368390038301602084016142e3565b8160008151811061122a5761122a613ba4565b6020908102919091010152610ae682358261124b60e0860160c08701613889565b346001611578565b60004261074b338483611bc9565b60004282825b818110156107455761129186868381811061128457611284613ba4565b9050602002013584612670565b600101611267565b60006112a361284a565b905090565b604080516001808252818301909252600091829190816020015b6040805160c081018252600080825260208083018290529282018190526060808301829052608083015260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112c257905050905061133060208401846141a1565b611339906141d5565b8160008151811061134c5761134c613ba4565b60209081029190910101526108c083358233346001611e53565b608081015167ffffffffffffffff161580159061139a57504267ffffffffffffffff16816080015167ffffffffffffffff16105b156113d1576040517f1ab7da6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808201516040808401516060850151855184518587015173ffffffffffffffffffffffffffffffffffffffff84166000908152600390985294872080549697949694956114c6957fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e7595949392886114498361450c565b909155506080808c015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff9097169688019690965260608701949094529285019190915260a084015260c083015267ffffffffffffffff1660e0820152610100015b60405160208183030381529060405280519060200120612982565b905061153c84606001518284602001518560400151866000015160405160200161152893929190928352602083019190915260f81b7fff0000000000000000000000000000000000000000000000000000000000000016604082015260410190565b6040516020818303038152906040526129ca565b611572576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6040517fa2ea7c6e00000000000000000000000000000000000000000000000000000000815260048101869052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a2ea7c6e90602401600060405180830381865afa158015611608573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261164e9190810190614544565b8051909150611689576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855160008167ffffffffffffffff8111156116a6576116a6613c11565b60405190808252806020026020018201604052801561174557816020015b60408051610140810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083019190915261012082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116c45790505b50905060008267ffffffffffffffff81111561176357611763613c11565b60405190808252806020026020018201604052801561178c578160200160208202803683370190505b50905060005b83811015611bab5760008a82815181106117ae576117ae613ba4565b6020908102919091018101518051600090815260049092526040909120805491925090611807576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c816001015414611844576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581015473ffffffffffffffffffffffffffffffffffffffff8c811691161461189a576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581015474010000000000000000000000000000000000000000900460ff166118f0576040517f157bd4c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002810154700100000000000000000000000000000000900467ffffffffffffffff161561194a576040517f905e710700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426002820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff811670010000000000000000000000000000000067ffffffffffffffff948516810291821793849055604080516101408101825287548152600188015460208201529386169286169290921791830191909152680100000000000000008304841660608301529091049091166080820152600382015460a0820152600482015473ffffffffffffffffffffffffffffffffffffffff90811660c0830152600583015490811660e083015274010000000000000000000000000000000000000000900460ff1615156101008201526006820180548391610120840191611a5690613fac565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8290613fac565b8015611acf5780601f10611aa457610100808354040283529160200191611acf565b820191906000526020600020905b815481529060010190602001808311611ab257829003601f168201915b505050505081525050858481518110611aea57611aea613ba4565b60200260200101819052508160200151848481518110611b0c57611b0c613ba4565b6020026020010181815250508c8b73ffffffffffffffffffffffffffffffffffffffff16868581518110611b4257611b42613ba4565b602002602001015160c0015173ffffffffffffffffffffffffffffffffffffffff167ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f6158560000151604051611b9991815260200190565b60405180910390a45050600101611792565b50611bbb84838360018b8b612a46565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600660209081526040808320858452918290529091205467ffffffffffffffff1615611c3d576040517fec9d6eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526020829052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff861690811790915590519091859173ffffffffffffffffffffffffffffffffffffffff8816917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a222991a450505050565b608081015167ffffffffffffffff1615801590611cfc57504267ffffffffffffffff16816080015167ffffffffffffffff16105b15611d33576040517f1ab7da6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808201516040808401516060808601518651855186880151868801519488015160808901518051908b012060a08a015173ffffffffffffffffffffffffffffffffffffffff871660009081526003909c52988b2080549a9b989a98996114c6997ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d988076999493928c611dc48361450c565b919050558e608001516040516020016114ab9b9a999897969594939291909a8b5273ffffffffffffffffffffffffffffffffffffffff998a1660208c015260408b019890985295909716606089015267ffffffffffffffff938416608089015291151560a088015260c087015260e0860152610100850193909352610120840152166101408201526101600190565b60408051808201909152600081526060602082015284516040805180820190915260008152606060208201528167ffffffffffffffff811115611e9857611e98613c11565b604051908082528060200260200182016040528015611ec1578160200160208202803683370190505b5060208201526040517fa2ea7c6e000000000000000000000000000000000000000000000000000000008152600481018990526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a2ea7c6e90602401600060405180830381865afa158015611f55573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f9b9190810190614544565b8051909150611fd6576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008367ffffffffffffffff811115611ff157611ff1613c11565b60405190808252806020026020018201604052801561209057816020015b60408051610140810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083019190915261012082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161200f5790505b50905060008467ffffffffffffffff8111156120ae576120ae613c11565b6040519080825280602002602001820160405280156120d7578160200160208202803683370190505b50905060005b858110156125655760008b82815181106120f9576120f9613ba4565b60200260200101519050600067ffffffffffffffff16816020015167ffffffffffffffff161415801561214457504267ffffffffffffffff16816020015167ffffffffffffffff1611155b1561217b576040517f08e8b93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846040015115801561218e575080604001515b156121c5576040517f157bd4c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061014001604052806000801b81526020018f81526020016121e94290565b67ffffffffffffffff168152602001836020015167ffffffffffffffff168152602001600067ffffffffffffffff16815260200183606001518152602001836000015173ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff16815260200183604001511515815260200183608001518152509050600080600090505b61228b8382612e35565b600081815260046020526040902054909250156122aa57600101612281565b81835260008281526004602081815260409283902086518155908601516001820155918501516002830180546060880151608089015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117905560a0850151600383015560c0850151908201805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905560e0850151600583018054610100880151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff000000000000000000000000000000000000000000909116929093169190911791909117905561012084015184919060068201906124299082614669565b505050606084015115612480576060840151600090815260046020526040902054612480576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8287868151811061249357612493613ba4565b60200260200101819052508360a001518686815181106124b5576124b5613ba4565b60200260200101818152505081896020015186815181106124d8576124d8613ba4565b6020026020010181815250508f8e73ffffffffffffffffffffffffffffffffffffffff16856000015173ffffffffffffffffffffffffffffffffffffffff167f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b358560405161254891815260200190565b60405180910390a45050505061255e8160010190565b90506120dd565b5061257583838360008c8c612a46565b845250919998505050505050505050565b606060008267ffffffffffffffff8111156125a3576125a3613c11565b6040519080825280602002602001820160405280156125cc578160200160208202803683370190505b508451909150600090815b818110156126655760008782815181106125f3576125f3613ba4565b6020026020010151905060008151905060005b818110156126515782818151811061262057612620613ba4565b602002602001015187878151811061263a5761263a613ba4565b602090810291909101015260019586019501612606565b50505061265e8160010190565b90506125d7565b509195945050505050565b60008281526005602052604090205467ffffffffffffffff16156126c0576040517f2e26794600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff85169081179091559051909184917f5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f9190a35050565b6060600061273f83612e94565b600101905060008167ffffffffffffffff81111561275f5761275f613c11565b6040519080825280601f01601f191660200182016040528015612789576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461279357509392505050565b60606112a37f00000000000000000000000000000000000000000000000000000000000000006000612f76565b60606112a37f00000000000000000000000000000000000000000000000000000000000000006001612f76565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156128b057507f000000000000000000000000000000000000000000000000000000000000000046145b156128da57507f000000000000000000000000000000000000000000000000000000000000000090565b6112a3604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600061074b61298f61284a565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006129d98585613021565b50909250905060008160038111156129f3576129f3614782565b148015612a2b57508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612a3c5750612a3c86868661306e565b9695505050505050565b84516000906001819003612a9e57612a968888600081518110612a6b57612a6b613ba4565b602002602001015188600081518110612a8657612a86613ba4565b60200260200101518888886131bb565b915050612a3c565b602088015173ffffffffffffffffffffffffffffffffffffffff8116612b3f5760005b82811015612b2457878181518110612adb57612adb613ba4565b6020026020010151600014612b1c576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101612ac1565b508315612b3457612b34856134da565b600092505050612a3c565b6000808273ffffffffffffffffffffffffffffffffffffffff1663ce46e0466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb191906147b1565b905060005b84811015612c6e5760008a8281518110612bd257612bd2613ba4565b6020026020010151905080600003612bea5750612c66565b82612c21576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b88811115612c5b576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b978890039792909201915b600101612bb6565b508715612d49576040517f88e5b2d900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906388e5b2d9908490612ccb908e908e906004016147ce565b60206040518083038185885af1158015612ce9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0e91906147b1565b612d44576040517fbf2f3a8b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e18565b6040517f91db0b7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906391db0b7e908490612d9f908e908e906004016147ce565b60206040518083038185885af1158015612dbd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612de291906147b1565b612e18576040517fe8bee83900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515612e2757612e27876134da565b509998505050505050505050565b60208083015160c084015160e0850151604080870151606088015161010089015160a08a01516101208b01519451600099612e7699989796918c9101614864565b60405160208183030381529060405280519060200120905092915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612edd577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612f09576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612f2757662386f26fc10000830492506010015b6305f5e1008310612f3f576305f5e100830492506008015b6127108310612f5357612710830492506004015b60648310612f65576064830492506002015b600a831061074b5760010192915050565b606060ff8314612f9057612f89836134ed565b905061074b565b818054612f9c90613fac565b80601f0160208091040260200160405190810160405280929190818152602001828054612fc890613fac565b80156130155780601f10612fea57610100808354040283529160200191613015565b820191906000526020600020905b815481529060010190602001808311612ff857829003601f168201915b5050505050905061074b565b6000806000835160410361305b5760208401516040850151606086015160001a61304d8882858561352c565b955095509550505050613067565b50508151600091506002905b9250925092565b60008060008573ffffffffffffffffffffffffffffffffffffffff16858560405160240161309d929190614981565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e000000000000000000000000000000000000000000000000000000001790525161311e919061499a565b600060405180830381855afa9150503d8060008114613159576040519150601f19603f3d011682016040523d82523d6000602084013e61315e565b606091505b509150915081801561317257506020815110155b8015612a3c575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906131b090830160209081019084016149ac565b149695505050505050565b602086015160009073ffffffffffffffffffffffffffffffffffffffff811661322f578515613216576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821561322557613225846134da565b6000915050612a3c565b851561331a578073ffffffffffffffffffffffffffffffffffffffff1663ce46e0466040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a491906147b1565b6132da576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83861115613314576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85840393505b84156133f2576040517fe49617e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063e49617e1908890613374908b90600401613b16565b60206040518083038185885af1158015613392573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133b791906147b1565b6133ed576040517fccf3bb2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6134bf565b6040517fe60c350500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063e60c3505908890613446908b90600401613b16565b60206040518083038185885af1158015613464573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061348991906147b1565b6134bf576040517fbd8ba84d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82156134ce576134ce846134da565b50939695505050505050565b80156134ea576134ea3382613626565b50565b606060006134fa83613700565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613567575060009150600390508261361c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156135bb573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166136125750600092506001915082905061361c565b9250600091508190505b9450945094915050565b80471015613666576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146136c0576040519150601f19603f3d011682016040523d82523d6000602084013e6136c5565b606091505b5050905080610ae6576040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ff8216601f81111561074b576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f84011261375357600080fd5b50813567ffffffffffffffff81111561376b57600080fd5b6020830191508360208260051b850101111561378657600080fd5b9250929050565b600080602083850312156137a057600080fd5b823567ffffffffffffffff8111156137b757600080fd5b6137c385828601613741565b90969095509350505050565b60005b838110156137ea5781810151838201526020016137d2565b50506000910152565b6000815180845261380b8160208601602086016137cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061385060208301846137f3565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146134ea57600080fd5b803561388481613857565b919050565b60006020828403121561389b57600080fd5b813561385081613857565b6000602082840312156138b857600080fd5b813567ffffffffffffffff8111156138cf57600080fd5b820160e0818503121561385057600080fd5b602080825282518282018190526000918401906040840190835b818110156139195783518352602093840193909201916001016138fb565b509095945050505050565b6000606082840312801561393757600080fd5b509092915050565b60006020828403121561395157600080fd5b5035919050565b600081518084526020840193506020830160005b8281101561398a57815186526020958601959091019060010161396c565b5093949350505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e0602082015260006139cf60e08301896137f3565b82810360408401526139e181896137f3565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152611bbb8185613958565b805182526020810151602083015260006040820151613a48604085018267ffffffffffffffff169052565b506060820151613a64606085018267ffffffffffffffff169052565b506080820151613a80608085018267ffffffffffffffff169052565b5060a082015160a084015260c0820151613ab260c085018273ffffffffffffffffffffffffffffffffffffffff169052565b5060e0820151613ada60e085018273ffffffffffffffffffffffffffffffffffffffff169052565b50610100820151613af061010085018215159052565b50610120820151610140610120850152613b0e6101408501826137f3565b949350505050565b6020815260006138506020830184613a1d565b600061010082840312801561393757600080fd5b60008060408385031215613b5057600080fd5b8235613b5b81613857565b946020939093013593505050565b600060208284031215613b7b57600080fd5b813567ffffffffffffffff811115613b9257600080fd5b82016040818503121561385057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112613c0757600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715613c6357613c63613c11565b60405290565b60405160c0810167ffffffffffffffff81118282101715613c6357613c63613c11565b6040516080810167ffffffffffffffff81118282101715613c6357613c63613c11565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cf657613cf6613c11565b604052919050565b600067ffffffffffffffff821115613d1857613d18613c11565b5060051b60200190565b600060408284031215613d3457600080fd5b6040805190810167ffffffffffffffff81118282101715613d5757613d57613c11565b604052823581526020928301359281019290925250919050565b600060608284031215613d8357600080fd5b6040516060810167ffffffffffffffff81118282101715613da657613da6613c11565b604052905080823560ff81168114613dbd57600080fd5b815260208381013590820152604092830135920191909152919050565b600082601f830112613deb57600080fd5b8135613dfe613df982613cfe565b613caf565b80828252602082019150602060608402860101925085831115613e2057600080fd5b602085015b83811015613e4757613e378782613d71565b8352602090920191606001613e25565b5095945050505050565b803567ffffffffffffffff8116811461388457600080fd5b600060a08236031215613e7b57600080fd5b613e83613c40565b82358152602083013567ffffffffffffffff811115613ea157600080fd5b830136601f820112613eb257600080fd5b8035613ec0613df982613cfe565b8082825260208201915060208360061b850101925036831115613ee257600080fd5b6020840193505b82841015613f0e57613efb3685613d22565b8252602082019150604084019350613ee9565b6020850152505050604083013567ffffffffffffffff811115613f3057600080fd5b613f3c36828601613dda565b604083015250613f4e60608401613879565b6060820152613f5f60808401613e51565b608082015292915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561074b5761074b613f6a565b600181811c90821680613fc057607f821691505b602082108103613ff9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80151581146134ea57600080fd5b600067ffffffffffffffff82111561402757614027613c11565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060c0828403121561406557600080fd5b61406d613c69565b9050813561407a81613857565b815261408860208301613e51565b6020820152604082013561409b81613fff565b604082015260608281013590820152608082013567ffffffffffffffff8111156140c457600080fd5b8201601f810184136140d557600080fd5b80356140e3613df98261400d565b8181528560208385010111156140f857600080fd5b8160208401602083013760009181016020019190915260808301525060a09182013591810191909152919050565b600060e0823603121561413857600080fd5b614140613c40565b82358152602083013567ffffffffffffffff81111561415e57600080fd5b61416a36828601614053565b60208301525061417d3660408501613d71565b604082015260a083013561419081613857565b6060820152613f5f60c08401613e51565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112613c0757600080fd5b600061074b3683614053565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c0757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261424a57600080fd5b83018035915067ffffffffffffffff82111561426557600080fd5b6020019150600581901b360382131561378657600080fd5b600061428b613df984613cfe565b8381526020810190600585901b8401368111156142a757600080fd5b845b8181101561391957803567ffffffffffffffff8111156142c857600080fd5b6142d436828901614053565b855250602093840193016142a9565b6000604082840312156142f557600080fd5b6138508383613d22565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261433457600080fd5b83018035915067ffffffffffffffff82111561434f57600080fd5b6020019150600681901b360382131561378657600080fd5b600084516143798184602089016137cf565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815284516143b38160018401602089016137cf565b7f2e000000000000000000000000000000000000000000000000000000000000006001929091019182015283516143f18160028401602088016137cf565b0160020195945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261443357600080fd5b83018035915067ffffffffffffffff82111561444e57600080fd5b602001915060608102360382131561378657600080fd5b60006060828403121561447757600080fd5b6138508383613d71565b60006020828403121561449357600080fd5b61385082613e51565b60006101008284031280156144b057600080fd5b506144b9613c40565b823581526144ca8460208501613d22565b60208201526144dc8460608501613d71565b604082015260c08301356144ef81613857565b606082015261450060e08401613e51565b60808201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361453d5761453d613f6a565b5060010190565b60006020828403121561455657600080fd5b815167ffffffffffffffff81111561456d57600080fd5b82016080818503121561457f57600080fd5b614587613c8c565b81518152602082015161459981613857565b602082015260408201516145ac81613fff565b6040820152606082015167ffffffffffffffff8111156145cb57600080fd5b80830192505084601f8301126145e057600080fd5b81516145ee613df98261400d565b81815286602083860101111561460357600080fd5b6146148260208301602087016137cf565b606083015250949350505050565b601f821115610ae657806000526020600020601f840160051c810160208510156146495750805b601f840160051c820191505b818110156107055760008155600101614655565b815167ffffffffffffffff81111561468357614683613c11565b614697816146918454613fac565b84614622565b6020601f8211600181146146e957600083156146b35750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610705565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156147375787850151825560209485019460019092019101614717565b508482101561477357868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082840312156147c357600080fd5b815161385081613fff565b6000604082016040835280855180835260608501915060608160051b86010192506020870160005b82811015614845577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018452614830858351613a1d565b945060209384019391909101906001016147f6565b50505050828103602084015261485b8185613958565b95945050505050565b8981527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008960601b1660208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008860601b1660348201527fffffffffffffffff0000000000000000000000000000000000000000000000008760c01b1660488201527fffffffffffffffff0000000000000000000000000000000000000000000000008660c01b16605082015284151560f81b60588201528360598201526000607982016000855161493c818460208a016137cf565b8201905061496e818660e01b7fffffffff00000000000000000000000000000000000000000000000000000000169052565b6004019c9b505050505050505050505050565b828152604060208201526000613b0e60408301846137f3565b60008251613c078184602087016137cf565b6000602082840312156149be57600080fd5b505191905056fea164736f6c634300081a000a",
- "deployedBytecode": "0x6080604052600436106101965760003560e01c806384b0196e116100e1578063cf190f341161008a578063e71ff36511610064578063e71ff365146104dc578063ed24911d146104fc578063f10b5cc814610511578063f17325e71461056257600080fd5b8063cf190f3414610446578063d45c443514610466578063e30bb5631461049d57600080fd5b8063a6d4dbc7116100bb578063a6d4dbc7146103a6578063b469318d146103b9578063b83010d31461041357600080fd5b806384b0196e1461033e5780639541152514610366578063a3112a641461037957600080fd5b806344adc90e116101435780634d0030701161011d5780634d003070146102e957806354fd4d501461030957806379f7573a1461031e57600080fd5b806344adc90e146102a357806346926267146102c35780634cb7e9e5146102d657600080fd5b806317d7de7c1161017457806317d7de7c1461022b5780632d0335ab1461024d5780633c0427151461029057600080fd5b80630eabf6601461019b57806312b11a17146101b057806313893f61146101f2575b600080fd5b6101ae6101a936600461378d565b610575565b005b3480156101bc57600080fd5b507ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880765b6040519081526020015b60405180910390f35b3480156101fe57600080fd5b5061021261020d36600461378d565b61070c565b60405167ffffffffffffffff90911681526020016101e9565b34801561023757600080fd5b50610240610751565b6040516101e9919061383d565b34801561025957600080fd5b506101df610268366004613889565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101df61029e3660046138a6565b6107e3565b6102b66102b136600461378d565b6108e6565b6040516101e991906138e1565b6101ae6102d1366004613924565b610a67565b6101ae6102e436600461378d565b610aeb565b3480156102f557600080fd5b5061021261030436600461393f565b610bce565b34801561031557600080fd5b50610240610bdb565b34801561032a57600080fd5b506101ae61033936600461393f565b610c7e565b34801561034a57600080fd5b50610353610d17565b6040516101e99796959493929190613994565b6102b661037436600461378d565b610d79565b34801561038557600080fd5b5061039961039436600461393f565b610fec565b6040516101e99190613b16565b6101ae6103b4366004613b29565b6111ae565b3480156103c557600080fd5b506102126103d4366004613b3d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205467ffffffffffffffff1690565b34801561041f57600080fd5b507fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e756101df565b34801561045257600080fd5b5061021261046136600461393f565b611253565b34801561047257600080fd5b5061021261048136600461393f565b60009081526005602052604090205467ffffffffffffffff1690565b3480156104a957600080fd5b506104cc6104b836600461393f565b600090815260046020526040902054151590565b60405190151581526020016101e9565b3480156104e857600080fd5b506102126104f736600461378d565b611261565b34801561050857600080fd5b506101df611299565b34801561051d57600080fd5b5060405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101e9565b6101df610570366004613b69565b6112a8565b348160005b81811015610705577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201811460008686848181106105bb576105bb613ba4565b90506020028101906105cd9190613bd3565b6105d690613e69565b60208101518051919250908015806105f357508260400151518114155b1561062a576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156106ce576106c66040518060a001604052808660000151815260200185848151811061065f5761065f613ba4565b602002602001015181526020018660400151848151811061068257610682613ba4565b60200260200101518152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015167ffffffffffffffff16815250611366565b60010161062d565b506106e483600001518385606001518a88611578565b6106ee9088613f99565b9650505050506106fe8160010190565b905061057a565b5050505050565b60004282825b818110156107455761073d3387878481811061073057610730613ba4565b9050602002013585611bc9565b600101610712565b50909150505b92915050565b60606002805461076090613fac565b80601f016020809104026020016040519081016040528092919081815260200182805461078c90613fac565b80156107d95780601f106107ae576101008083540402835291602001916107d9565b820191906000526020600020905b8154815290600101906020018083116107bc57829003601f168201915b5050505050905090565b60006107f66107f183614126565b611cc8565b604080516001808252818301909252600091816020015b6040805160c081018252600080825260208083018290529282018190526060808301829052608083015260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161080d57905050905061087b60208401846141a1565b610884906141d5565b8160008151811061089757610897613ba4565b60209081029190910101526108c08335826108b860c0870160a08801613889565b346001611e53565b602001516000815181106108d6576108d6613ba4565b6020026020010151915050919050565b60608160008167ffffffffffffffff81111561090457610904613c11565b60405190808252806020026020018201604052801561093757816020015b60608152602001906001900390816109225790505b509050600034815b84811015610a51577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850181143689898481811061097f5761097f613ba4565b905060200281019061099191906141e1565b90506109a06020820182614215565b90506000036109db576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a0082356109ef6020850185614215565b6109f89161427d565b338887611e53565b8051909150610a0f9086613f99565b94508060200151878581518110610a2857610a28613ba4565b602002602001018190525080602001515186019550505050610a4a8160010190565b905061093f565b50610a5c8383612586565b979650505050505050565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610a7e579050509050610ab9368390038301602084016142e3565b81600081518110610acc57610acc613ba4565b6020908102919091010152610ae682358233346001611578565b505050565b348160005b81811015610705577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201811436868684818110610b3057610b30613ba4565b9050602002810190610b4291906141e1565b9050610baf8135610b5660208401846142ff565b808060200260200160405190810160405280939291908181526020016000905b82821015610ba257610b93604083028601368190038101906142e3565b81526020019060010190610b76565b5050505050338886611578565b610bb99086613f99565b94505050610bc78160010190565b9050610af0565b60004261074b8382612670565b6060610c067f0000000000000000000000000000000000000000000000000000000000000000612732565b610c2f7f0000000000000000000000000000000000000000000000000000000000000000612732565b610c587f0000000000000000000000000000000000000000000000000000000000000000612732565b604051602001610c6a93929190614367565b604051602081830303815290604052905090565b33600090815260036020526040902054808211610cc7576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602090815260409182902084905581518381529081018490527f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb7910160405180910390a15050565b600060608060008060006060610d2b6127f0565b610d3361281d565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60608160008167ffffffffffffffff811115610d9757610d97613c11565b604051908082528060200260200182016040528015610dca57816020015b6060815260200190600190039081610db55790505b509050600034815b84811015610a51577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8501811436898984818110610e1257610e12613ba4565b9050602002810190610e249190613bd3565b9050366000610e366020840184614215565b909250905080801580610e575750610e5160408501856143fe565b90508114155b15610e8e576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610f6f57610f676040518060a0016040528087600001358152602001868685818110610ec357610ec3613ba4565b9050602002810190610ed591906141a1565b610ede906141d5565b8152602001610ef060408901896143fe565b85818110610f0057610f00613ba4565b905060600201803603810190610f169190614465565b8152602001610f2b6080890160608a01613889565b73ffffffffffffffffffffffffffffffffffffffff168152602001610f5660a0890160808a01614481565b67ffffffffffffffff169052611cc8565b600101610e91565b506000610f988535610f81858761427d565b610f916080890160608a01613889565b8b8a611e53565b8051909150610fa79089613f99565b975080602001518a8881518110610fc057610fc0613ba4565b602002602001018190525080602001515189019850505050505050610fe58160010190565b9050610dd2565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082019290925261012081019190915260008281526004602081815260409283902083516101408101855281548152600182015492810192909252600281015467ffffffffffffffff808216958401959095526801000000000000000081048516606084015270010000000000000000000000000000000090049093166080820152600383015460a08201529082015473ffffffffffffffffffffffffffffffffffffffff90811660c0830152600583015490811660e083015274010000000000000000000000000000000000000000900460ff1615156101008201526006820180549192916101208401919061112590613fac565b80601f016020809104026020016040519081016040528092919081815260200182805461115190613fac565b801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b5050505050815250509050919050565b6111c56111c03683900383018361449c565b611366565b604080516001808252818301909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816111dc579050509050611217368390038301602084016142e3565b8160008151811061122a5761122a613ba4565b6020908102919091010152610ae682358261124b60e0860160c08701613889565b346001611578565b60004261074b338483611bc9565b60004282825b818110156107455761129186868381811061128457611284613ba4565b9050602002013584612670565b600101611267565b60006112a361284a565b905090565b604080516001808252818301909252600091829190816020015b6040805160c081018252600080825260208083018290529282018190526060808301829052608083015260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112c257905050905061133060208401846141a1565b611339906141d5565b8160008151811061134c5761134c613ba4565b60209081029190910101526108c083358233346001611e53565b608081015167ffffffffffffffff161580159061139a57504267ffffffffffffffff16816080015167ffffffffffffffff16105b156113d1576040517f1ab7da6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808201516040808401516060850151855184518587015173ffffffffffffffffffffffffffffffffffffffff84166000908152600390985294872080549697949694956114c6957fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e7595949392886114498361450c565b909155506080808c015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff9097169688019690965260608701949094529285019190915260a084015260c083015267ffffffffffffffff1660e0820152610100015b60405160208183030381529060405280519060200120612982565b905061153c84606001518284602001518560400151866000015160405160200161152893929190928352602083019190915260f81b7fff0000000000000000000000000000000000000000000000000000000000000016604082015260410190565b6040516020818303038152906040526129ca565b611572576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6040517fa2ea7c6e00000000000000000000000000000000000000000000000000000000815260048101869052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a2ea7c6e90602401600060405180830381865afa158015611608573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261164e9190810190614544565b8051909150611689576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855160008167ffffffffffffffff8111156116a6576116a6613c11565b60405190808252806020026020018201604052801561174557816020015b60408051610140810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083019190915261012082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116c45790505b50905060008267ffffffffffffffff81111561176357611763613c11565b60405190808252806020026020018201604052801561178c578160200160208202803683370190505b50905060005b83811015611bab5760008a82815181106117ae576117ae613ba4565b6020908102919091018101518051600090815260049092526040909120805491925090611807576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c816001015414611844576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581015473ffffffffffffffffffffffffffffffffffffffff8c811691161461189a576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581015474010000000000000000000000000000000000000000900460ff166118f0576040517f157bd4c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002810154700100000000000000000000000000000000900467ffffffffffffffff161561194a576040517f905e710700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426002820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff811670010000000000000000000000000000000067ffffffffffffffff948516810291821793849055604080516101408101825287548152600188015460208201529386169286169290921791830191909152680100000000000000008304841660608301529091049091166080820152600382015460a0820152600482015473ffffffffffffffffffffffffffffffffffffffff90811660c0830152600583015490811660e083015274010000000000000000000000000000000000000000900460ff1615156101008201526006820180548391610120840191611a5690613fac565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8290613fac565b8015611acf5780601f10611aa457610100808354040283529160200191611acf565b820191906000526020600020905b815481529060010190602001808311611ab257829003601f168201915b505050505081525050858481518110611aea57611aea613ba4565b60200260200101819052508160200151848481518110611b0c57611b0c613ba4565b6020026020010181815250508c8b73ffffffffffffffffffffffffffffffffffffffff16868581518110611b4257611b42613ba4565b602002602001015160c0015173ffffffffffffffffffffffffffffffffffffffff167ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f6158560000151604051611b9991815260200190565b60405180910390a45050600101611792565b50611bbb84838360018b8b612a46565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600660209081526040808320858452918290529091205467ffffffffffffffff1615611c3d576040517fec9d6eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526020829052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff861690811790915590519091859173ffffffffffffffffffffffffffffffffffffffff8816917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a222991a450505050565b608081015167ffffffffffffffff1615801590611cfc57504267ffffffffffffffff16816080015167ffffffffffffffff16105b15611d33576040517f1ab7da6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808201516040808401516060808601518651855186880151868801519488015160808901518051908b012060a08a015173ffffffffffffffffffffffffffffffffffffffff871660009081526003909c52988b2080549a9b989a98996114c6997ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d988076999493928c611dc48361450c565b919050558e608001516040516020016114ab9b9a999897969594939291909a8b5273ffffffffffffffffffffffffffffffffffffffff998a1660208c015260408b019890985295909716606089015267ffffffffffffffff938416608089015291151560a088015260c087015260e0860152610100850193909352610120840152166101408201526101600190565b60408051808201909152600081526060602082015284516040805180820190915260008152606060208201528167ffffffffffffffff811115611e9857611e98613c11565b604051908082528060200260200182016040528015611ec1578160200160208202803683370190505b5060208201526040517fa2ea7c6e000000000000000000000000000000000000000000000000000000008152600481018990526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a2ea7c6e90602401600060405180830381865afa158015611f55573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f9b9190810190614544565b8051909150611fd6576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008367ffffffffffffffff811115611ff157611ff1613c11565b60405190808252806020026020018201604052801561209057816020015b60408051610140810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083019190915261012082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161200f5790505b50905060008467ffffffffffffffff8111156120ae576120ae613c11565b6040519080825280602002602001820160405280156120d7578160200160208202803683370190505b50905060005b858110156125655760008b82815181106120f9576120f9613ba4565b60200260200101519050600067ffffffffffffffff16816020015167ffffffffffffffff161415801561214457504267ffffffffffffffff16816020015167ffffffffffffffff1611155b1561217b576040517f08e8b93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846040015115801561218e575080604001515b156121c5576040517f157bd4c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061014001604052806000801b81526020018f81526020016121e94290565b67ffffffffffffffff168152602001836020015167ffffffffffffffff168152602001600067ffffffffffffffff16815260200183606001518152602001836000015173ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff16815260200183604001511515815260200183608001518152509050600080600090505b61228b8382612e35565b600081815260046020526040902054909250156122aa57600101612281565b81835260008281526004602081815260409283902086518155908601516001820155918501516002830180546060880151608089015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117905560a0850151600383015560c0850151908201805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905560e0850151600583018054610100880151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff000000000000000000000000000000000000000000909116929093169190911791909117905561012084015184919060068201906124299082614669565b505050606084015115612480576060840151600090815260046020526040902054612480576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8287868151811061249357612493613ba4565b60200260200101819052508360a001518686815181106124b5576124b5613ba4565b60200260200101818152505081896020015186815181106124d8576124d8613ba4565b6020026020010181815250508f8e73ffffffffffffffffffffffffffffffffffffffff16856000015173ffffffffffffffffffffffffffffffffffffffff167f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b358560405161254891815260200190565b60405180910390a45050505061255e8160010190565b90506120dd565b5061257583838360008c8c612a46565b845250919998505050505050505050565b606060008267ffffffffffffffff8111156125a3576125a3613c11565b6040519080825280602002602001820160405280156125cc578160200160208202803683370190505b508451909150600090815b818110156126655760008782815181106125f3576125f3613ba4565b6020026020010151905060008151905060005b818110156126515782818151811061262057612620613ba4565b602002602001015187878151811061263a5761263a613ba4565b602090810291909101015260019586019501612606565b50505061265e8160010190565b90506125d7565b509195945050505050565b60008281526005602052604090205467ffffffffffffffff16156126c0576040517f2e26794600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff85169081179091559051909184917f5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f9190a35050565b6060600061273f83612e94565b600101905060008167ffffffffffffffff81111561275f5761275f613c11565b6040519080825280601f01601f191660200182016040528015612789576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461279357509392505050565b60606112a37f00000000000000000000000000000000000000000000000000000000000000006000612f76565b60606112a37f00000000000000000000000000000000000000000000000000000000000000006001612f76565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156128b057507f000000000000000000000000000000000000000000000000000000000000000046145b156128da57507f000000000000000000000000000000000000000000000000000000000000000090565b6112a3604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600061074b61298f61284a565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006129d98585613021565b50909250905060008160038111156129f3576129f3614782565b148015612a2b57508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612a3c5750612a3c86868661306e565b9695505050505050565b84516000906001819003612a9e57612a968888600081518110612a6b57612a6b613ba4565b602002602001015188600081518110612a8657612a86613ba4565b60200260200101518888886131bb565b915050612a3c565b602088015173ffffffffffffffffffffffffffffffffffffffff8116612b3f5760005b82811015612b2457878181518110612adb57612adb613ba4565b6020026020010151600014612b1c576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101612ac1565b508315612b3457612b34856134da565b600092505050612a3c565b6000808273ffffffffffffffffffffffffffffffffffffffff1663ce46e0466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb191906147b1565b905060005b84811015612c6e5760008a8281518110612bd257612bd2613ba4565b6020026020010151905080600003612bea5750612c66565b82612c21576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b88811115612c5b576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b978890039792909201915b600101612bb6565b508715612d49576040517f88e5b2d900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906388e5b2d9908490612ccb908e908e906004016147ce565b60206040518083038185885af1158015612ce9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0e91906147b1565b612d44576040517fbf2f3a8b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e18565b6040517f91db0b7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906391db0b7e908490612d9f908e908e906004016147ce565b60206040518083038185885af1158015612dbd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612de291906147b1565b612e18576040517fe8bee83900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515612e2757612e27876134da565b509998505050505050505050565b60208083015160c084015160e0850151604080870151606088015161010089015160a08a01516101208b01519451600099612e7699989796918c9101614864565b60405160208183030381529060405280519060200120905092915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612edd577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612f09576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612f2757662386f26fc10000830492506010015b6305f5e1008310612f3f576305f5e100830492506008015b6127108310612f5357612710830492506004015b60648310612f65576064830492506002015b600a831061074b5760010192915050565b606060ff8314612f9057612f89836134ed565b905061074b565b818054612f9c90613fac565b80601f0160208091040260200160405190810160405280929190818152602001828054612fc890613fac565b80156130155780601f10612fea57610100808354040283529160200191613015565b820191906000526020600020905b815481529060010190602001808311612ff857829003601f168201915b5050505050905061074b565b6000806000835160410361305b5760208401516040850151606086015160001a61304d8882858561352c565b955095509550505050613067565b50508151600091506002905b9250925092565b60008060008573ffffffffffffffffffffffffffffffffffffffff16858560405160240161309d929190614981565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e000000000000000000000000000000000000000000000000000000001790525161311e919061499a565b600060405180830381855afa9150503d8060008114613159576040519150601f19603f3d011682016040523d82523d6000602084013e61315e565b606091505b509150915081801561317257506020815110155b8015612a3c575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906131b090830160209081019084016149ac565b149695505050505050565b602086015160009073ffffffffffffffffffffffffffffffffffffffff811661322f578515613216576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821561322557613225846134da565b6000915050612a3c565b851561331a578073ffffffffffffffffffffffffffffffffffffffff1663ce46e0466040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a491906147b1565b6132da576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83861115613314576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85840393505b84156133f2576040517fe49617e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063e49617e1908890613374908b90600401613b16565b60206040518083038185885af1158015613392573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133b791906147b1565b6133ed576040517fccf3bb2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6134bf565b6040517fe60c350500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063e60c3505908890613446908b90600401613b16565b60206040518083038185885af1158015613464573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061348991906147b1565b6134bf576040517fbd8ba84d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82156134ce576134ce846134da565b50939695505050505050565b80156134ea576134ea3382613626565b50565b606060006134fa83613700565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613567575060009150600390508261361c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156135bb573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166136125750600092506001915082905061361c565b9250600091508190505b9450945094915050565b80471015613666576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146136c0576040519150601f19603f3d011682016040523d82523d6000602084013e6136c5565b606091505b5050905080610ae6576040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ff8216601f81111561074b576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008083601f84011261375357600080fd5b50813567ffffffffffffffff81111561376b57600080fd5b6020830191508360208260051b850101111561378657600080fd5b9250929050565b600080602083850312156137a057600080fd5b823567ffffffffffffffff8111156137b757600080fd5b6137c385828601613741565b90969095509350505050565b60005b838110156137ea5781810151838201526020016137d2565b50506000910152565b6000815180845261380b8160208601602086016137cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061385060208301846137f3565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146134ea57600080fd5b803561388481613857565b919050565b60006020828403121561389b57600080fd5b813561385081613857565b6000602082840312156138b857600080fd5b813567ffffffffffffffff8111156138cf57600080fd5b820160e0818503121561385057600080fd5b602080825282518282018190526000918401906040840190835b818110156139195783518352602093840193909201916001016138fb565b509095945050505050565b6000606082840312801561393757600080fd5b509092915050565b60006020828403121561395157600080fd5b5035919050565b600081518084526020840193506020830160005b8281101561398a57815186526020958601959091019060010161396c565b5093949350505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e0602082015260006139cf60e08301896137f3565b82810360408401526139e181896137f3565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152611bbb8185613958565b805182526020810151602083015260006040820151613a48604085018267ffffffffffffffff169052565b506060820151613a64606085018267ffffffffffffffff169052565b506080820151613a80608085018267ffffffffffffffff169052565b5060a082015160a084015260c0820151613ab260c085018273ffffffffffffffffffffffffffffffffffffffff169052565b5060e0820151613ada60e085018273ffffffffffffffffffffffffffffffffffffffff169052565b50610100820151613af061010085018215159052565b50610120820151610140610120850152613b0e6101408501826137f3565b949350505050565b6020815260006138506020830184613a1d565b600061010082840312801561393757600080fd5b60008060408385031215613b5057600080fd5b8235613b5b81613857565b946020939093013593505050565b600060208284031215613b7b57600080fd5b813567ffffffffffffffff811115613b9257600080fd5b82016040818503121561385057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112613c0757600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715613c6357613c63613c11565b60405290565b60405160c0810167ffffffffffffffff81118282101715613c6357613c63613c11565b6040516080810167ffffffffffffffff81118282101715613c6357613c63613c11565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cf657613cf6613c11565b604052919050565b600067ffffffffffffffff821115613d1857613d18613c11565b5060051b60200190565b600060408284031215613d3457600080fd5b6040805190810167ffffffffffffffff81118282101715613d5757613d57613c11565b604052823581526020928301359281019290925250919050565b600060608284031215613d8357600080fd5b6040516060810167ffffffffffffffff81118282101715613da657613da6613c11565b604052905080823560ff81168114613dbd57600080fd5b815260208381013590820152604092830135920191909152919050565b600082601f830112613deb57600080fd5b8135613dfe613df982613cfe565b613caf565b80828252602082019150602060608402860101925085831115613e2057600080fd5b602085015b83811015613e4757613e378782613d71565b8352602090920191606001613e25565b5095945050505050565b803567ffffffffffffffff8116811461388457600080fd5b600060a08236031215613e7b57600080fd5b613e83613c40565b82358152602083013567ffffffffffffffff811115613ea157600080fd5b830136601f820112613eb257600080fd5b8035613ec0613df982613cfe565b8082825260208201915060208360061b850101925036831115613ee257600080fd5b6020840193505b82841015613f0e57613efb3685613d22565b8252602082019150604084019350613ee9565b6020850152505050604083013567ffffffffffffffff811115613f3057600080fd5b613f3c36828601613dda565b604083015250613f4e60608401613879565b6060820152613f5f60808401613e51565b608082015292915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561074b5761074b613f6a565b600181811c90821680613fc057607f821691505b602082108103613ff9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80151581146134ea57600080fd5b600067ffffffffffffffff82111561402757614027613c11565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060c0828403121561406557600080fd5b61406d613c69565b9050813561407a81613857565b815261408860208301613e51565b6020820152604082013561409b81613fff565b604082015260608281013590820152608082013567ffffffffffffffff8111156140c457600080fd5b8201601f810184136140d557600080fd5b80356140e3613df98261400d565b8181528560208385010111156140f857600080fd5b8160208401602083013760009181016020019190915260808301525060a09182013591810191909152919050565b600060e0823603121561413857600080fd5b614140613c40565b82358152602083013567ffffffffffffffff81111561415e57600080fd5b61416a36828601614053565b60208301525061417d3660408501613d71565b604082015260a083013561419081613857565b6060820152613f5f60c08401613e51565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112613c0757600080fd5b600061074b3683614053565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c0757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261424a57600080fd5b83018035915067ffffffffffffffff82111561426557600080fd5b6020019150600581901b360382131561378657600080fd5b600061428b613df984613cfe565b8381526020810190600585901b8401368111156142a757600080fd5b845b8181101561391957803567ffffffffffffffff8111156142c857600080fd5b6142d436828901614053565b855250602093840193016142a9565b6000604082840312156142f557600080fd5b6138508383613d22565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261433457600080fd5b83018035915067ffffffffffffffff82111561434f57600080fd5b6020019150600681901b360382131561378657600080fd5b600084516143798184602089016137cf565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815284516143b38160018401602089016137cf565b7f2e000000000000000000000000000000000000000000000000000000000000006001929091019182015283516143f18160028401602088016137cf565b0160020195945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261443357600080fd5b83018035915067ffffffffffffffff82111561444e57600080fd5b602001915060608102360382131561378657600080fd5b60006060828403121561447757600080fd5b6138508383613d71565b60006020828403121561449357600080fd5b61385082613e51565b60006101008284031280156144b057600080fd5b506144b9613c40565b823581526144ca8460208501613d22565b60208201526144dc8460608501613d71565b604082015260c08301356144ef81613857565b606082015261450060e08401613e51565b60808201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361453d5761453d613f6a565b5060010190565b60006020828403121561455657600080fd5b815167ffffffffffffffff81111561456d57600080fd5b82016080818503121561457f57600080fd5b614587613c8c565b81518152602082015161459981613857565b602082015260408201516145ac81613fff565b6040820152606082015167ffffffffffffffff8111156145cb57600080fd5b80830192505084601f8301126145e057600080fd5b81516145ee613df98261400d565b81815286602083860101111561460357600080fd5b6146148260208301602087016137cf565b606083015250949350505050565b601f821115610ae657806000526020600020601f840160051c810160208510156146495750805b601f840160051c820191505b818110156107055760008155600101614655565b815167ffffffffffffffff81111561468357614683613c11565b614697816146918454613fac565b84614622565b6020601f8211600181146146e957600083156146b35750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610705565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156147375787850151825560209485019460019092019101614717565b508482101561477357868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082840312156147c357600080fd5b815161385081613fff565b6000604082016040835280855180835260608501915060608160051b86010192506020870160005b82811015614845577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018452614830858351613a1d565b945060209384019391909101906001016147f6565b50505050828103602084015261485b8185613958565b95945050505050565b8981527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008960601b1660208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008860601b1660348201527fffffffffffffffff0000000000000000000000000000000000000000000000008760c01b1660488201527fffffffffffffffff0000000000000000000000000000000000000000000000008660c01b16605082015284151560f81b60588201528360598201526000607982016000855161493c818460208a016137cf565b8201905061496e818660e01b7fffffffff00000000000000000000000000000000000000000000000000000000169052565b6004019c9b505050505050505050505050565b828152604060208201526000613b0e60408301846137f3565b60008251613c078184602087016137cf565b6000602082840312156149be57600080fd5b505191905056fea164736f6c634300081a000a",
- "linkReferences": {},
- "deployedLinkReferences": {}
-}
diff --git a/packages/client/src/utils/actions/observe.json b/packages/client/src/utils/actions/observe.json
new file mode 100644
index 0000000..3185ecb
--- /dev/null
+++ b/packages/client/src/utils/actions/observe.json
@@ -0,0 +1,33 @@
+{
+ "description": "Observe the growth and health of the plants, including the location, date, and any other relevant details. Each observation action should be documented separately.",
+ "media": {
+ "title": "Capture the Observation",
+ "description": "Please take a photo of the location where you will be observing the plants. You can also take photos of the plants to document their growth and health.",
+ "maxImageCount": 7
+ },
+ "details": {
+ "title": "Input Observation Details",
+ "description": "Please provide the following details about the observation.",
+ "feedbackPlaceholder": "Provide feedback or any issues during the observation process",
+ "inputs": [
+ {
+ "title": "Plants Observed",
+ "placeholder": "Select the different species observed",
+ "type": "select",
+ "required": false,
+ "options": []
+ },
+ {
+ "title": "Number of Plants Observed",
+ "placeholder": "Enter the number of plants observed",
+ "type": "number",
+ "required": false,
+ "options": []
+ }
+ ]
+ },
+ "review": {
+ "title": "Review Observation Details",
+ "description": "Please review the details you have provided before submitting."
+ }
+}
diff --git a/packages/client/src/utils/actions/plant.json b/packages/client/src/utils/actions/plant.json
new file mode 100644
index 0000000..cbb520f
--- /dev/null
+++ b/packages/client/src/utils/actions/plant.json
@@ -0,0 +1,33 @@
+{
+ "description": "Capture the planting process for seedlings or saplings, including the location, date, and any other relevant details. Each planting action should be documented separately.",
+ "media": {
+ "title": "Photograph the Plot",
+ "description": "Please take a photo of the location where you will be planting Seedlings or Saplings.",
+ "maxImageCount": 8
+ },
+ "details": {
+ "title": "Input Planting Details",
+ "description": "Please provide the following details about the planting process.",
+ "feedbackPlaceholder": "Provide feedback or any issues during the planting process",
+ "inputs": [
+ {
+ "title": "Plants Planted",
+ "placeholder": "Select the different species planted",
+ "type": "select",
+ "required": true,
+ "options": ["Acacia", "Eucalyptus", "Pine", "Other"]
+ },
+ {
+ "title": "How many plants were planted?",
+ "placeholder": "Enter the number of plants planted",
+ "type": "number",
+ "required": true,
+ "options": []
+ }
+ ]
+ },
+ "review": {
+ "title": "Review Planting Details",
+ "description": "Please review the details you have provided before submitting."
+ }
+}
diff --git a/packages/client/src/utils/eas.ts b/packages/client/src/utils/eas.ts
new file mode 100644
index 0000000..4174c9f
--- /dev/null
+++ b/packages/client/src/utils/eas.ts
@@ -0,0 +1,144 @@
+import { encodeFunctionData } from "viem";
+import {
+ SchemaEncoder,
+ ZERO_BYTES32,
+ NO_EXPIRATION,
+} from "@ethereum-attestation-service/eas-sdk";
+
+import { EAS } from "@/constants";
+import { uploadFileToIPFS, uploadJSONToIPFS } from "@/modules/pinata";
+
+const value = 0n;
+
+export function encodeAttestCallData(
+ schema: `0x${string}`,
+ data: `0x${string}`,
+ recipient: `0x${string}`
+) {
+ return encodeFunctionData({
+ abi: [
+ {
+ inputs: [
+ {
+ components: [
+ {
+ internalType: "bytes32",
+ name: "schema",
+ type: "bytes32",
+ },
+ {
+ components: [
+ {
+ internalType: "address",
+ name: "recipient",
+ type: "address",
+ },
+ {
+ internalType: "uint64",
+ name: "expirationTime",
+ type: "uint64",
+ },
+ {
+ internalType: "bool",
+ name: "revocable",
+ type: "bool",
+ },
+ {
+ internalType: "bytes32",
+ name: "refUID",
+ type: "bytes32",
+ },
+ {
+ internalType: "bytes",
+ name: "data",
+ type: "bytes",
+ },
+ {
+ internalType: "uint256",
+ name: "value",
+ type: "uint256",
+ },
+ ],
+ internalType: "struct AttestationRequestData",
+ name: "data",
+ type: "tuple",
+ },
+ ],
+ internalType: "struct AttestationRequest",
+ name: "request",
+ type: "tuple",
+ },
+ ],
+ name: "attest",
+ outputs: [
+ {
+ internalType: "bytes32",
+ name: "",
+ type: "bytes32",
+ },
+ ],
+ stateMutability: "payable",
+ type: "function",
+ },
+ ],
+ args: [
+ {
+ schema,
+ data: {
+ data,
+ recipient,
+ value,
+ revocable: true,
+ refUID: ZERO_BYTES32,
+ expirationTime: NO_EXPIRATION,
+ },
+ },
+ ],
+ });
+}
+
+export async function encodeWorkData(
+ data: WorkDraft,
+ recipient: `0x${string}`
+) {
+ const schema = EAS["42161"].WORK.schema as `0x${string}`;
+ const schemaEncoder = new SchemaEncoder(schema);
+
+ const media = await Promise.all(
+ data.media.map(async (file) => {
+ return (await uploadFileToIPFS(file)).IpfsHash;
+ })
+ );
+
+ const metadata = await uploadJSONToIPFS({
+ plantSelection: data.plantSelection,
+ plantCount: data.plantCount,
+ });
+
+ const encodedData = schemaEncoder.encodeData([
+ { name: "actionUID", value: data.actionUID, type: "uint256" },
+ { name: "title", value: data.title, type: "string" },
+ { name: "feedback", value: data.feedback, type: "string" },
+ { name: "metadata", value: metadata, type: "string" },
+ { name: "media", value: media, type: "string[]" },
+ ]) as `0x${string}`;
+
+ return encodeAttestCallData(schema, encodedData, recipient);
+}
+
+export function encodeWorkApprovalData(
+ data: WorkApprovalDraft,
+ recipient: `0x${string}`
+) {
+ const schema = EAS["42161"].WORK_APPROVAL.schema as `0x${string}`;
+ const schemaEncoder = new SchemaEncoder(schema);
+
+ const encodedData = schemaEncoder.encodeData([
+ { name: "actionUID", value: data.actionUID, type: "uint256" },
+ { name: "workUID", value: data.workUID, type: "bytes32" },
+ { name: "approved", value: data.approved, type: "bool" },
+ { name: "feedback", value: data.feedback, type: "string" },
+ ]) as `0x${string}`;
+
+ return encodeAttestCallData(schema, encodedData, recipient);
+}
diff --git a/packages/client/src/utils/text.ts b/packages/client/src/utils/text.ts
new file mode 100644
index 0000000..f871099
--- /dev/null
+++ b/packages/client/src/utils/text.ts
@@ -0,0 +1,60 @@
+export const formatAddress: (arg0: string) => string = (address) => {
+ if (!address) return "no address provided";
+ if (address.includes(".eth")) return address;
+
+ const start = address.slice(0, 6);
+ const end = address.slice(address.length - 4);
+ return `${start}...${end}`;
+};
+
+export function truncate(str: string, n: number) {
+ return str.length > n ? str.slice(0, n - 1) + "..." : str;
+}
+
+export function isValidEmail(email: string) {
+ // eslint-disable-next-line no-useless-escape
+ return /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
+ email
+ );
+}
+
+export function truncateDescription(description: string) {
+ return description.length > 80 ?
+ description.slice(0, 80 - 1) + "..."
+ : description;
+}
+
+export function formatPrice(
+ price: number | null,
+ currency?: "ETH" | "USDC" | "OP"
+) {
+ return price?.toLocaleString("en-US", {
+ style: "currency",
+ currency: currency ?? "USD",
+ });
+}
+
+export function formatLastUpdated(updatedAt: string) {
+ const updatedDate = new Date(updatedAt).getSeconds();
+ const now = new Date().getSeconds();
+
+ const differenceInSeconds = Math.floor((now - updatedDate) / 1000);
+
+ const intervals = [
+ { label: "year", seconds: 31536000 },
+ { label: "month", seconds: 2592000 },
+ { label: "day", seconds: 86400 },
+ { label: "hour", seconds: 3600 },
+ { label: "minute", seconds: 60 },
+ { label: "second", seconds: 1 },
+ ];
+
+ for (const interval of intervals) {
+ const count = Math.floor(differenceInSeconds / interval.seconds);
+ if (count !== 0) {
+ return `${count} ${interval.label}${count !== 1 ? "s" : ""} ago`;
+ }
+ }
+
+ return "just now";
+}
diff --git a/packages/client/src/views/Gardens/Card.tsx b/packages/client/src/views/Gardens/Card.tsx
new file mode 100644
index 0000000..32a6400
--- /dev/null
+++ b/packages/client/src/views/Gardens/Card.tsx
@@ -0,0 +1,56 @@
+import React from "react";
+import {
+ RiMapPin2Fill,
+ // RiCalendar2Fill,
+ // RiThumbUpFill,
+} from "@remixicon/react";
+import { Button } from "@/components/Button";
+
+// import { truncateDescription } from "../../utils/text";
+// import { Button } from "../Button";
+
+export interface GardenCardProps extends Garden {
+ onCardClick: () => void;
+}
+
+export const GardenCard: React.FC = ({
+ // id,
+ name,
+ location,
+ bannerImage,
+ // operators,
+ onCardClick,
+}) => {
+ return (
+
+
+
+
+
+
+ {name}
+
+
+
+ {location}
+
+ {/*
{problem}
*/}
+
+
+
+
+
+ );
+};
diff --git a/packages/client/src/views/Gardens/Garden.tsx b/packages/client/src/views/Gardens/Garden.tsx
new file mode 100644
index 0000000..2722128
--- /dev/null
+++ b/packages/client/src/views/Gardens/Garden.tsx
@@ -0,0 +1,128 @@
+import {
+ RiMapPin2Fill,
+ RiArrowLeftFill,
+ RiCalendarEventFill,
+ RiProfileFill,
+ // RiThumbUpFill,
+ // PencilLineIcon,
+} from "@remixicon/react";
+import React, { useState } from "react";
+import { useParams } from "react-router-dom";
+
+import { formatAddress } from "@/utils/text";
+
+import { useGarden } from "@/providers/GardenProvider";
+
+import { CircleLoader } from "@/components/Loader";
+import { GardenActions } from "@/components/Garden/Actions";
+import { GardenAssessments } from "@/components/Garden/Asessments";
+import { GardenGardeners } from "@/components/Garden/Gardeners";
+import { useWork } from "@/providers/WorkProvider";
+
+enum GardenTab {
+ Actions = "actions",
+ Assessments = "assessments",
+ Gardeners = "gardeners",
+}
+
+interface GardenProps {}
+
+export const cardStyles = "bg-white border rounded-xl shadow-sm";
+export const cardTitleStyles = "text-base font-medium bg-teal-100 py-2 px-3";
+export const cardContentStyles = "text-sm leading-1 mt-2 px-3 pb-2";
+
+export const Garden: React.FC = () => {
+ const { id } = useParams<{
+ id: string;
+ }>();
+ const { actions, gardens, gardeners } = useGarden();
+ const { works } = useWork();
+ const [activeTab, setActiveTab] = useState(GardenTab.Actions);
+
+ const garden = gardens.find((garden) => garden.id === id);
+
+ if (!garden) return ;
+
+ const { name, bannerImage, location, operators, gardenAssessments } = garden;
+
+ const gardenWorks = works.filter((work) => work.gardenAddress === id);
+ const gardenGardeners = gardeners.filter((gardener) =>
+ garden.gardeners.includes(gardener.wallet?.address ?? "")
+ );
+
+ const renderTabContent = () => {
+ switch (activeTab) {
+ case GardenTab.Actions:
+ return ;
+ case GardenTab.Assessments:
+ return ;
+ case GardenTab.Gardeners:
+ return ;
+ default:
+ return null;
+ }
+ };
+
+ return (
+
+
+
+
{name}
+
+
+
+
+
+ {operators
+ .map((operator) => formatAddress(operator))
+ .join(", ")}
+
+
+
+
+ {location}
+
+
+
+ {/*
+ {start_date && end_date ?
+ `${start_date.toLocaleDateString()} - ${end_date.toLocaleDateString()}`
+ : "No timeline provided."}
+ */}
+
+
+
+
+
+
+ {Object.values(GardenTab).map((tab) => (
+ setActiveTab(tab)}
+ style={{
+ fontWeight: activeTab === tab ? "bold" : "normal",
+ cursor: "pointer",
+ }}
+ >
+ {tab}
+
+ ))}
+
+ {renderTabContent()}
+
+
+ );
+};
diff --git a/packages/client/src/views/Gardens/index.tsx b/packages/client/src/views/Gardens/index.tsx
new file mode 100644
index 0000000..342a209
--- /dev/null
+++ b/packages/client/src/views/Gardens/index.tsx
@@ -0,0 +1,49 @@
+import { Outlet, useLocation, useNavigate } from "react-router-dom";
+
+import { useGarden } from "@/providers/GardenProvider";
+
+import { GardenCard } from "./Card";
+
+export interface GardensProps {}
+
+const Gardens: React.FC = () => {
+ const { gardens } = useGarden();
+ const navigate = useNavigate();
+ const location = useLocation();
+
+ function handleCardClick(id: string) {
+ navigate(`/gardens/${id}`);
+ }
+
+ return (
+
+ );
+};
+
+export default Gardens;
diff --git a/packages/client/src/views/Home/index.tsx b/packages/client/src/views/Home/index.tsx
deleted file mode 100644
index e69de29..0000000
diff --git a/packages/client/src/views/Landing/index.tsx b/packages/client/src/views/Landing/index.tsx
new file mode 100644
index 0000000..8331eb0
--- /dev/null
+++ b/packages/client/src/views/Landing/index.tsx
@@ -0,0 +1,19 @@
+import React from "react";
+
+import { Hero } from "@/components/Layout/Hero";
+import { Header } from "@/components/Layout/Header";
+import { Footer } from "@/components/Layout/Footer";
+
+interface LandingProps {}
+
+const Landing: React.FC = () => {
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+export default Landing;
diff --git a/packages/client/src/views/Login/index.tsx b/packages/client/src/views/Login/index.tsx
index e69de29..8cd0d34 100644
--- a/packages/client/src/views/Login/index.tsx
+++ b/packages/client/src/views/Login/index.tsx
@@ -0,0 +1,14 @@
+import React from "react";
+import { usePrivy } from "@privy-io/react-auth";
+
+import { Splash } from "@/components/Layout/Splash";
+
+interface LoginProps {}
+
+const Login: React.FC = () => {
+ const { login } = usePrivy();
+
+ return ;
+};
+
+export default Login;
diff --git a/packages/client/src/views/Profile/Account.tsx b/packages/client/src/views/Profile/Account.tsx
new file mode 100644
index 0000000..9971d73
--- /dev/null
+++ b/packages/client/src/views/Profile/Account.tsx
@@ -0,0 +1,98 @@
+import {
+ RiKeyLine,
+ RiMailFill,
+ RiPhoneLine,
+ RiUserLine,
+} from "@remixicon/react";
+import { usePrivy } from "@privy-io/react-auth";
+
+import { usePWA } from "@/providers/PWAProvider";
+import { useUser } from "@/providers/UserProvider";
+
+interface LinkedAccount {
+ title: string;
+ description: string;
+ isLinked: boolean;
+ Icon: React.ReactNode;
+ link: () => void;
+ unlink: () => void;
+}
+
+interface ProfileAccountProps {}
+
+export const ProfileAccount: React.FC = () => {
+ const {
+ user,
+ linkEmail,
+ linkPhone,
+ linkPasskey,
+ linkFarcaster,
+ unlinkEmail,
+ unlinkPhone,
+ // unlinkPasskey,
+ unlinkFarcaster,
+ } = usePrivy();
+ const { switchLanguage } = usePWA();
+ const { logout } = useUser();
+
+ const linkedAccounts: LinkedAccount[] = [
+ {
+ title: "Email",
+ description: user?.email?.address || "Not Linked",
+ isLinked: !!user?.email?.address,
+ Icon: ,
+ link: linkEmail,
+ unlink: () => user?.email?.address && unlinkEmail(user?.email?.address),
+ },
+ {
+ title: "Phone",
+ description: user?.phone?.number || "Not Linked",
+ isLinked: !!user?.phone?.number,
+ Icon: ,
+ link: linkPhone,
+ unlink: () => user?.phone?.number && unlinkPhone(user?.phone?.number),
+ },
+ {
+ title: "Passkey",
+ description: user?.mfaMethods.includes("passkey") ? "" : "Not Linked",
+ isLinked: !!user?.mfaMethods.includes("passkey"),
+ Icon: ,
+ link: linkPasskey,
+ unlink: () => {},
+ },
+ {
+ title: "Farcaster",
+ description: user?.farcaster?.displayName || "Not Linked",
+ isLinked: !!user?.farcaster?.displayName,
+ Icon: ,
+ link: linkFarcaster,
+ unlink: () =>
+ user?.farcaster?.fid && unlinkFarcaster(user?.farcaster?.fid),
+ },
+ ];
+
+ return (
+
+
Languages
+
switchLanguage("en")}>English
+
switchLanguage("pt")}>Português
+
Linked Accounts
+
+ {linkedAccounts.map(
+ ({ title, Icon, description, isLinked, link, unlink }) => (
+
+ {Icon}
+ {title}
+ {description}
+
+ {isLinked ? "Unlink" : "Link"}
+
+
+ )
+ )}
+
+
Settings
+
Logout
+
+ );
+};
diff --git a/packages/client/src/views/Profile/Help.tsx b/packages/client/src/views/Profile/Help.tsx
new file mode 100644
index 0000000..2b438bb
--- /dev/null
+++ b/packages/client/src/views/Profile/Help.tsx
@@ -0,0 +1,105 @@
+import { RiTelegramLine, RiWhatsappLine } from "@remixicon/react";
+
+interface Social {
+ title: string;
+ description: string;
+ url: string;
+ Icon: React.ReactNode;
+}
+
+interface FAQ {
+ question: string;
+ answer: string;
+}
+
+interface ProfileHelpProps {}
+
+const faqs: FAQ[] = [
+ {
+ question: "What is Green Goods?",
+ answer:
+ "Green Goods is a platform that allows you to bring biodiversity onchain.",
+ },
+ {
+ question: "What is biodiversity?",
+ answer:
+ "Biodiversity is the variety of life on Earth. It includes all living organisms, from plants and animals to fungi and bacteria.",
+ },
+ {
+ question: "How can I bring biodiversity onchain?",
+ answer:
+ "You can bring biodiversity onchain by creating a garden assessment and submitting it to the Green Goods EAS.",
+ },
+ {
+ question: "What is EAS?",
+ answer:
+ "EAS stands for Ethereum Attestation Service. It is a service that allows you to submit and verify data on the Ethereum blockchain.",
+ },
+ {
+ question: "Who can submit garden work?",
+ answer:
+ "Anyone can submit garden work to the Green Goods EAS. You do not need to be a professional gardener to participate.",
+ },
+ {
+ question: "How can I get involved with Green Goods?",
+ answer:
+ "You can get involved with Green Goods by creating a garden assessment, joining the community, and sharing your knowledge and expertise.",
+ },
+ {
+ question: "How can I learn more about Green Goods?",
+ answer:
+ "You can learn more about Green Goods by visiting our website, joining our Discord server, and following us on social media.",
+ },
+ {
+ question: "How can I contact Green Goods?",
+ answer:
+ "You can contact Green Goods by sending an email at greengoods@greenpill.builders.",
+ },
+];
+
+const socials: Social[] = [
+ {
+ title: "WhatsApp",
+ description: "Join our community on WhatsApp",
+ url: "https://discord.gg/greengoods",
+ Icon: ,
+ },
+ {
+ title: "Telegram",
+ description: "Join our community on Telegram",
+ url: "https://t.me/gp_dev_guild",
+ Icon: ,
+ },
+];
+
+export const ProfileHelp: React.FC = () => {
+ return (
+
+
Get In Touch
+
+
Frequently Asked Questions
+
+ {faqs.map((faq) => (
+
+ {faq.question}
+ {faq.answer}
+
+ ))}
+
+
+ );
+};
diff --git a/packages/client/src/views/Profile/index.tsx b/packages/client/src/views/Profile/index.tsx
index e69de29..ecece47 100644
--- a/packages/client/src/views/Profile/index.tsx
+++ b/packages/client/src/views/Profile/index.tsx
@@ -0,0 +1,66 @@
+import React, { useState } from "react";
+
+import { formatAddress } from "@/utils/text";
+
+import { useUser } from "@/providers/UserProvider";
+
+import { ProfileHelp } from "./Help";
+import { ProfileAccount } from "./Account";
+
+interface ProfileProps {}
+
+enum ProfileTabs {
+ Account = "account",
+ Help = "help",
+}
+
+const Profile: React.FC = () => {
+ const { user } = useUser();
+ const [activeTab, setActiveTab] = useState(ProfileTabs.Account);
+
+ const renderTabContent = () => {
+ switch (activeTab) {
+ case ProfileTabs.Account:
+ return ;
+ case ProfileTabs.Help:
+ return ;
+ default:
+ return null;
+ }
+ };
+
+ return (
+
+
+
+
{user?.email?.address || user?.phone?.number}
+ {user?.wallet?.address && (
+
{formatAddress(user?.wallet?.address)}
+ )}
+
+
+
+ {Object.values(ProfileTabs).map((activeTab) => (
+ setActiveTab(activeTab)}
+ style={{
+ fontWeight: activeTab === activeTab ? "bold" : "normal",
+ cursor: "pointer",
+ }}
+ >
+ {activeTab}
+
+ ))}
+
+ {renderTabContent()}
+
+
+ );
+};
+
+export default Profile;
diff --git a/packages/client/src/views/Work/Details.tsx b/packages/client/src/views/Work/Details.tsx
new file mode 100644
index 0000000..5828ad5
--- /dev/null
+++ b/packages/client/src/views/Work/Details.tsx
@@ -0,0 +1,89 @@
+import { UseFormRegister } from "react-hook-form";
+
+import { FormText } from "@/components/Form/Text";
+import { FormInput } from "@/components/Form/Input";
+// import { FormSelect } from "@/components/Form/Select";
+
+interface WorkDetailsProps {
+ title?: string;
+ description: string;
+ feedbackPlaceholder: string;
+ inputs: WorkInput[];
+ register: UseFormRegister;
+}
+
+export const WorkDetails: React.FC = ({
+ title,
+ description,
+ feedbackPlaceholder,
+ register,
+ inputs,
+}) => {
+ return (
+
+
{title}
+
{description}
+ {inputs.map(({ placeholder, required, title, type }, index) => {
+ if (type === "number") {
+ return (
+
+ );
+ } else if (type === "select") {
+ return (
+ //
({
+ // label: option,
+ // value: option,
+ // }))}
+ // />
+ null
+ );
+ } else if (type === "text") {
+ return (
+
+ );
+ } else if (type === "textarea") {
+ return (
+
+ );
+ } else {
+ return null;
+ }
+ })}
+
+
+ );
+};
diff --git a/packages/client/src/views/Work/Media.tsx b/packages/client/src/views/Work/Media.tsx
new file mode 100644
index 0000000..e7d7a6d
--- /dev/null
+++ b/packages/client/src/views/Work/Media.tsx
@@ -0,0 +1,98 @@
+import React, { useState } from "react";
+
+interface WorkMediaProps {
+ title?: string;
+ description?: string;
+ images: File[];
+ setImages: React.Dispatch>;
+}
+
+export const WorkMedia: React.FC = ({
+ title,
+ description,
+ images,
+ setImages,
+}) => {
+ const [previewModalOpen, setPreviewModalOpen] = useState(false);
+
+ const handleImageUpload = (event: React.ChangeEvent) => {
+ const files = event.target.files;
+ if (files) {
+ setImages((prevImages) => [...prevImages, ...Array.from(files)]);
+ }
+ };
+
+ const removeImage = (index: number) => {
+ setImages((prevImages) => prevImages.filter((_, i) => i !== index));
+ };
+
+ return (
+
+
{title}
+
{description}
+
+
+ Upload Images
+
+
+
+
+ {images.map((file, index) => (
+
setPreviewModalOpen(true)}
+ >
+
+
{
+ e.stopPropagation();
+ removeImage(index);
+ }}
+ type="button"
+ >
+ ✕
+
+
+ ))}
+
+ {previewModalOpen && (
+
setPreviewModalOpen(false)}
+ >
+
+
setPreviewModalOpen(false)}
+ className="btn btn-sm btn-circle absolute right-2 top-2"
+ >
+ ✕
+
+
+ {images.map((file, index) => (
+
+
+
+ ))}
+
+
+
+ )}
+
+ );
+};
diff --git a/packages/client/src/views/Work/Review.tsx b/packages/client/src/views/Work/Review.tsx
new file mode 100644
index 0000000..100262f
--- /dev/null
+++ b/packages/client/src/views/Work/Review.tsx
@@ -0,0 +1,45 @@
+interface WorkReviewProps {
+ title: string;
+ description: string;
+ images: File[];
+ plantSelection: string[];
+ plantCount: number;
+ feedback: string;
+}
+
+export const WorkReview: React.FC = ({
+ title,
+ description,
+ images,
+ plantSelection,
+ plantCount,
+ feedback,
+}) => {
+ return (
+
+
{title}
+
{description}
+
+ {images.map((file, index) => (
+
+
+
+ ))}
+
+
Plant Selection
+
+ {plantSelection.map((plant) => (
+ {plant}
+ ))}
+
+
Plant Count
+
{plantCount}
+
Feedback
+
{feedback}
+
+ );
+};
diff --git a/packages/client/src/views/Work/index.tsx b/packages/client/src/views/Work/index.tsx
index e69de29..1578814 100644
--- a/packages/client/src/views/Work/index.tsx
+++ b/packages/client/src/views/Work/index.tsx
@@ -0,0 +1,73 @@
+import { useState } from "react";
+
+import { useWork } from "@/providers/WorkProvider";
+
+import { WorkMedia } from "./Media";
+import { WorkDetails } from "./Details";
+import { WorkReview } from "./Review";
+
+interface WorkProps {}
+
+enum WorkTab {
+ Media = "Media",
+ Details = "Details",
+ Review = "Review",
+}
+
+const Work: React.FC = () => {
+ const { actions, form } = useWork();
+ const [activeTab, setActiveTab] = useState(WorkTab.Media);
+
+ if (!form) {
+ return null;
+ }
+
+ const { images, setImages, actionUID, register, uploadWork } = form;
+ const action = actions.find((action) => action.id === actionUID);
+
+ const renderTabContent = () => {
+ switch (activeTab) {
+ case WorkTab.Media:
+ return ;
+ case WorkTab.Details:
+ return (
+
+ );
+ case WorkTab.Review:
+ return (
+
+ );
+ default:
+ return null;
+ }
+ };
+
+ return (
+
+ {renderTabContent()}
+
+ {activeTab !== WorkTab.Media && (
+ setActiveTab(WorkTab.Media)}>Back
+ )}
+ {activeTab !== WorkTab.Review && (
+ setActiveTab(WorkTab.Review)}>Next
+ )}
+
+
+ );
+};
+
+export default Work;
diff --git a/packages/client/src/views/index.tsx b/packages/client/src/views/index.tsx
index e69de29..c67142b 100644
--- a/packages/client/src/views/index.tsx
+++ b/packages/client/src/views/index.tsx
@@ -0,0 +1,24 @@
+import { Navigate, Route, Routes } from "react-router-dom";
+
+import Work from "./Work";
+import Profile from "./Profile";
+import Gardens from "./Gardens";
+import { Garden } from "./Gardens/Garden";
+
+export default function Views() {
+ return (
+
+
+ }>
+ } />
+
+ } />
+ } />
+ } />
+
+
+ );
+ // ));
+}
diff --git a/packages/client/tailwind.config.js b/packages/client/tailwind.config.js
index d5f3438..c400921 100644
--- a/packages/client/tailwind.config.js
+++ b/packages/client/tailwind.config.js
@@ -5,5 +5,10 @@ export default {
theme: {
extend: {},
},
- plugins: [require("tailwindcss-animate")],
+ plugins: [
+ require("tailwindcss-animate"),
+ require("@tailwindcss/forms"),
+ require("@tailwindcss/typography"),
+ require("daisyui"),
+ ],
};
diff --git a/packages/client/tsconfig.app.json b/packages/client/tsconfig.app.json
index aedb34b..64960d6 100644
--- a/packages/client/tsconfig.app.json
+++ b/packages/client/tsconfig.app.json
@@ -26,17 +26,6 @@
"paths": {
"@/*": ["./src/*"]
}
-
- // "plugins": [
- // {
- // "name": "@0no-co/graphqlsp",
- // "schema": "https://easscan.org/graphql",
- // "tadaOutputLocation": "src/types/graphql-env.d.ts"
- // },
- // {
- // "name": "next"
- // }
- // ]
},
- "include": ["src"]
+ "include": ["src", "../../eas/src/resources/schemas.json"]
}
diff --git a/packages/client/tsconfig.node.json b/packages/client/tsconfig.node.json
index 0d3d714..dde7f94 100644
--- a/packages/client/tsconfig.node.json
+++ b/packages/client/tsconfig.node.json
@@ -16,7 +16,21 @@
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true
+ "noFallthroughCasesInSwitch": true,
+
+ /* Plugins */
+ "plugins": [
+ {
+ "name": "@0no-co/graphqlsp",
+ "schema": "https://easscan.org/graphql",
+ "tadaOutputLocation": "src/types/eas.d.ts"
+ }
+ // {
+ // "name": "@0no-co/graphqlsp",
+ // "schema": "../../indexer/schema.graphql",
+ // "tadaOutputLocation": "src/types/gg-indexer.d.ts"
+ // }
+ ]
},
- "include": ["vite.config.ts"]
+ "include": ["vite.config.ts", "api", "../../indexer/schema.graphql"]
}
diff --git a/packages/client/vercel.json b/packages/client/vercel.json
new file mode 100644
index 0000000..1323cda
--- /dev/null
+++ b/packages/client/vercel.json
@@ -0,0 +1,8 @@
+{
+ "rewrites": [
+ {
+ "source": "/(.*)",
+ "destination": "/index.html"
+ }
+ ]
+}
diff --git a/packages/client/vite.config.ts b/packages/client/vite.config.ts
index 5a33944..563a02f 100644
--- a/packages/client/vite.config.ts
+++ b/packages/client/vite.config.ts
@@ -1,7 +1,143 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
+import path from "path";
+import dotenvExpand from "dotenv-expand";
+
+import mkcert from "vite-plugin-mkcert";
+import react from "@vitejs/plugin-react";
+import { VitePWA } from "vite-plugin-pwa";
+import { defineConfig, loadEnv } from "vite";
// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [react()],
-})
+export default defineConfig(({ mode }) => {
+ // This check is important!
+ if (mode === "development") {
+ const env = loadEnv(mode, process.cwd(), "");
+ dotenvExpand.expand({ parsed: env });
+ }
+
+ return {
+ plugins: [
+ mkcert(),
+ react(),
+ VitePWA({
+ includeAssets: [
+ "favicon.ico",
+ "icon.png",
+ "apple-icon.png",
+ "images/android-icon-36x36.png",
+ "images/android-icon-48x48.png",
+ "images/android-icon-72x72.png",
+ "images/android-icon-144x144.png",
+ "images/apple-icon-57x57.png",
+ "images/apple-icon-60x60.png",
+ "images/apple-icon-72x72.png",
+ "images/apple-icon-120x120.png",
+ "images/apple-icon-144x144.png",
+ "images/ms-icon-70x70.png",
+ "images/ms-icon-144x144.png",
+ "images/ms-icon-310.png",
+ "images/home.png",
+ "images/work.png",
+ "images/profile.png",
+ ],
+ injectRegister: "auto",
+ registerType: "autoUpdate",
+ devOptions: {
+ enabled: true,
+ },
+ workbox: {
+ // globPatterns: ["**/*.{js,css,html,ico,png,svg}"],
+ },
+ manifest: {
+ name: "Green Goods",
+ short_name: "Green Goods",
+ icons: [
+ {
+ src: "/images/android-icon-36x36.png",
+ sizes: "36x36",
+ type: "image/png",
+ },
+ {
+ src: "/images/android-icon-48x48.png",
+ sizes: "48x48",
+ type: "image/png",
+ },
+ {
+ src: "/images/android-icon-72x72.png",
+ sizes: "72x72",
+ type: "image/png",
+ },
+ {
+ src: "/images/android-icon-144x144.png",
+ sizes: "144x144",
+ type: "image/png",
+ },
+ {
+ src: "/icon.png",
+ sizes: "192x192",
+ type: "image/png",
+ },
+ ],
+ start_url: "/",
+ scope: "/",
+ display: "standalone",
+ orientation: "portrait-primary",
+ theme_color: "#367D42",
+ background_color: "#000",
+ shortcuts: [
+ {
+ name: "Home",
+ description: "View Gardens",
+ url: "/profile",
+ icons: [
+ {
+ src: "images/home.png",
+ sizes: "64x64",
+ type: "image/png",
+ },
+ ],
+ },
+ {
+ name: "Work",
+ description: "Upload your work",
+ url: "/profile",
+ icons: [
+ {
+ src: "images/work.png",
+ sizes: "64x64",
+ type: "image/png",
+ },
+ ],
+ },
+ {
+ name: "Profile",
+ description: "View your profile",
+ url: "/profile",
+ icons: [
+ {
+ src: "images/profile.png",
+ sizes: "64x64",
+ type: "image/png",
+ },
+ ],
+ },
+ ],
+ related_applications: [
+ {
+ platform: "webapp",
+ url: "https://localhost:3001/manifest.webmanifest",
+ },
+ ],
+ categories: [],
+ },
+ }),
+ ],
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, "./src"),
+ },
+ },
+ server: {
+ port: 3001,
+ },
+ };
+});
diff --git a/packages/contracts/package.json b/packages/contracts/package.json
index ce4fd07..521f584 100644
--- a/packages/contracts/package.json
+++ b/packages/contracts/package.json
@@ -17,7 +17,8 @@
"deploy:counter": "source .env && forge script script/Counter.s.sol:CounterScript --private-key $PRIVATE_KEY --etherscan-api-key $API_KEY_ETHERSCAN",
"deploy:action": "source .env && forge script script/DeployActionRegistry.s.sol:DeployActionRegistry --private-key $PRIVATE_KEY --etherscan-api-key $API_KEY_ETHERSCAN",
"deploy:garden": "source .env && forge script script/DeployGardenToken.s.sol:DeployGardenToken --private-key $PRIVATE_KEY --etherscan-api-key $API_KEY_ETHERSCAN",
- "deploy:resolvers": "source .env && forge script script/DeployResolvers.s.sol:DeployResolvers --private-key $PRIVATE_KEY --etherscan-api-key $API_KEY_ETHERSCAN"
+ "deploy:resolvers": "source .env && forge script script/DeployResolvers.s.sol:DeployResolvers --private-key $PRIVATE_KEY --etherscan-api-key $API_KEY_ETHERSCAN",
+ "deploy:operators": "source .env && forge script script/DeployGardenOperators.s.sol:DeployGardenOperators --private-key $PRIVATE_KEY --etherscan-api-key $API_KEY_ETHERSCAN"
},
"dependencies": {
"@ethereum-attestation-service/eas-contracts": "1.7.1",
diff --git a/packages/contracts/script/DeployActionRegistry.s.sol b/packages/contracts/script/DeployActionRegistry.s.sol
index 9991520..4a1af55 100644
--- a/packages/contracts/script/DeployActionRegistry.s.sol
+++ b/packages/contracts/script/DeployActionRegistry.s.sol
@@ -25,26 +25,32 @@ contract DeployActionRegistry is Script {
Capital[] memory capitals = new Capital[](1);
capitals[0] = Capital.LIVING;
- string[] memory media = new string[](2);
- media[0] = "QmWYQY9vnb9ot7u49UMeH41DdjZghrgr2YoaYaNwYSpeAn";
- media[1] = "QmS9K5EdyakRPW7gV86xivaUNx1AuhPUzUSRD53WnjL4Uz";
+ string[] memory observeMedia = new string[](3);
+ observeMedia[0] = "QmVvKqpnfJm8UwRq9SF15V2jgJ86yCBsmMBmpEaoQU92bD";
+ observeMedia[1] = "QmXeV9zWpXHzTGFS3jJRBRYBTHkcVE23qpdhhtQKX1uC4L";
+ observeMedia[2] = "QmXp5fEnjHbsLniCE5BD1LyjoGgvoHKuajqQnDCPAZih2X";
+
+ string[] memory plantMedia = new string[](3);
+ plantMedia[0] = "QmY6h53RyAY6VQfqqUTBwkVkG8JpCon9SdVkqtB5YzPVwx";
+ plantMedia[1] = "QmZAeu9sEtNqXZBmiYiAt7bd4M38TmE73ekj47n7JDU2xm";
+ plantMedia[2] = "QmdYz2JsVhyzZe591vR1sBQQjLWjGCTp1yJ1t1EicrAnYH";
newRegistry.initialize(address(this));
newRegistry.registerAction(
block.timestamp,
block.timestamp + 30 days,
- "Test Action 1",
- "QmTmbcRyKtkMpMFWsm6D8YpgwMUuds3jE4sJdjqhqFGvWe",
+ "Observe",
+ "QmX8rLExs7TDGPNAg9w22R8iYeRUYsrkkLg6LUUK8oNDUJ",
capitals,
- media
+ observeMedia
);
newRegistry.registerAction(
block.timestamp,
block.timestamp + 30 days,
- "Test Action 2",
- "QmTmbcRyKtkMpMFWsm6D8YpgwMUuds3jE4sJdjqhqFGvWe",
+ "Plant",
+ "QmZGJBdZeCVx7S42KqovzUhwrGhqwxVCaoofzUE2YRhb2s",
capitals,
- media
+ plantMedia
);
vm.stopBroadcast();
diff --git a/packages/contracts/script/DeployGardenOperators.s.sol b/packages/contracts/script/DeployGardenOperators.s.sol
new file mode 100644
index 0000000..76d914e
--- /dev/null
+++ b/packages/contracts/script/DeployGardenOperators.s.sol
@@ -0,0 +1,27 @@
+// SPDX-License-Identifier: UNLICENSED
+/* solhint-disable max-line-length */
+/* solhint-disable quotes */
+pragma solidity ^0.8.25;
+
+import { Script, console } from "forge-std/Script.sol";
+
+import { GardenAccount } from "../src/accounts/Garden.sol";
+
+import { ROOT_PLANET_GARDEN } from "../src/Constants.sol";
+
+/// @title DeployGardenOperators
+/// @notice Script for deploying the GardenToken contract and minting a garden for Rio Claro, São Paulo.
+contract DeployGardenOperators is Script {
+ function run() external {
+ // Deploy GardenOperators
+ vm.startBroadcast();
+ GardenAccount gardenAccount = GardenAccount(payable(ROOT_PLANET_GARDEN));
+
+ gardenAccount.addGardener(0x742fa58340df9Ad7c691De4Ed999CF7f71079A8F);
+ gardenAccount.addGardenOperator(0x742fa58340df9Ad7c691De4Ed999CF7f71079A8F);
+
+ vm.stopBroadcast();
+
+ console.log("Operator added to the garden");
+ }
+}
diff --git a/packages/contracts/script/DeployGardenToken.s.sol b/packages/contracts/script/DeployGardenToken.s.sol
index 128218d..e89614e 100644
--- a/packages/contracts/script/DeployGardenToken.s.sol
+++ b/packages/contracts/script/DeployGardenToken.s.sol
@@ -91,15 +91,28 @@ contract DeployGardenToken is Script {
console.log("GardenToken deployed at:", token);
// Mint a garden for Rio Claro, São Paulo
- address[] memory gardeners = new address[](1);
- address[] memory gardenOperators = new address[](1);
+ address[] memory gardeners = new address[](4);
+ address[] memory gardenOperators = new address[](4);
gardeners[0] = 0x2aa64E6d80390F5C017F0313cB908051BE2FD35e; // afo-wefa.eth
+ gardeners[1] = 0xAcD59e854adf632d2322404198624F757C868C97; // groweco.eth
+ gardeners[2] = 0x29e6cbF2450F86006292D10A3cF791955600a457; // marcin
+ gardeners[3] = 0x742fa58340df9Ad7c691De4Ed999CF7f71079A8F; // afo@greenpill.builders
gardenOperators[0] = 0x2aa64E6d80390F5C017F0313cB908051BE2FD35e; // afo-wefa.eth
- gardenAccount = gardenToken.mintGarden(communityToken, "Root Planet", gardeners, gardenOperators);
+ gardenOperators[1] = 0xAcD59e854adf632d2322404198624F757C868C97; // groweco.eth
+ gardenOperators[2] = 0x29e6cbF2450F86006292D10A3cF791955600a457; // marcin
+ gardenOperators[3] = 0x742fa58340df9Ad7c691De4Ed999CF7f71079A8F; // afo@greenpill.builders
+
+ gardenAccount = gardenToken.mintGarden(
+ communityToken,
+ "Root Planet",
+ "Observing invasive species and planting natives to improve biodiversity.",
+ gardeners,
+ gardenOperators
+ );
vm.stopBroadcast();
- console.log("Root Plane Garden for Rio Claro, S\u00e3o Paulo minted.");
+ console.log("Root Plane Garden for Rio Claro, S\u00e3o Paulo minted.", gardenAccount);
} else {
console.log("Garden Token already exists at:", token);
}
@@ -124,11 +137,11 @@ contract DeployGardenToken is Script {
string.concat(
'src/GardenAccount.sol:GardenAccount --constructor-args $(cast abi-encode "constructor(address,address,address,address)" ',
Strings.toHexString(erc4337EntryPoint),
- " ",
+ ", ",
Strings.toHexString(multicallForwarder),
- " ",
+ ", ",
Strings.toHexString(TOKENBOUND_REGISTRY),
- " ",
+ ", ",
Strings.toHexString(guardian),
")\n"
)
@@ -140,7 +153,7 @@ contract DeployGardenToken is Script {
string.concat(
'src/AccountProxy.sol:AccountProxy --constructor-args $(cast abi-encode "constructor(address,address)" ',
Strings.toHexString(guardian),
- " ",
+ ", ",
Strings.toHexString(implementation),
")\n"
)
@@ -151,7 +164,7 @@ contract DeployGardenToken is Script {
string.concat(
'src/GardenToken.sol:GardenToken --constructor-args $(cast abi-encode "constructor(address)" ',
Strings.toHexString(implementation),
- "",
+ ", ",
Strings.toHexString(gardenAccount),
")\n"
)
diff --git a/packages/contracts/script/DeployResolvers.s.sol b/packages/contracts/script/DeployResolvers.s.sol
index 645a77e..724aa15 100644
--- a/packages/contracts/script/DeployResolvers.s.sol
+++ b/packages/contracts/script/DeployResolvers.s.sol
@@ -84,7 +84,7 @@ contract DeployResolvers is Script {
block.chainid,
predictedWorkResolverAddress,
string.concat(
- 'src/resolvers/Work.sol:WorkResolver --constructor-args $(cast abi-encode "constructor(address,address)" ',
+ 'src/resolvers/Work.sol:WorkResolver --constructor-args $(cast abi-encode "constructor(address,address)", ',
Strings.toHexString(eas),
", ",
Strings.toHexString(ACTION_REGISTRY),
diff --git a/packages/contracts/src/Constants.sol b/packages/contracts/src/Constants.sol
index b5192e2..97018d4 100644
--- a/packages/contracts/src/Constants.sol
+++ b/packages/contracts/src/Constants.sol
@@ -3,15 +3,15 @@ pragma solidity ^0.8.25;
// GREEN GOODS
address constant GREEN_GOODS_SAFE = 0x1B9Ac97Ea62f69521A14cbe6F45eb24aD6612C19;
-address constant ACTION_REGISTRY = 0x70Df51173B3EF27A245e1a0F129e2BAab39A937E;
-address constant WORK_RESOLVER = 0x380217CB03B2AA6838C2B6F615F36C677D7922dB;
-address constant WORK_APPROVAL_RESOLVER = 0xECdD5C72D468b2b1d0566102050C42e99A37Ca14;
+address constant ACTION_REGISTRY = 0x9AF3D5Bb1a6d057B99A4948420c5d24ff1e482Ce;
+address constant WORK_RESOLVER = 0x4d394ec4dcDC93e451a27C9c9D915Baee9D43A78;
+address constant WORK_APPROVAL_RESOLVER = 0xAD93d365C83784F245780d914460D60cBa11d1FA;
address constant COMMUNITY_TOKEN_ARBITRUM = 0x633d825006E4c659b061db7FB9378eDEe8bd95f3;
address constant COMMUNITY_TOKEN_SEPOLIA = 0x4cB67033da4FD849a552A4C5553E7F532B93E516;
-address constant GARDEN_TOKEN = 0x5D29C573581270d2bF436382820B3b64904AEeD7;
-address constant GARDEN_ACCOUNT_IMPLEMENTATION = 0x5c4FFaAa4aA538D75f531Ebd5b9B08F37d9a65a2;
-address constant GARDENER_ACCOUNT_IMPLEMENTATION = 0x0000000000000000000000000000000000000000;
+address constant GARDEN_TOKEN = 0x9EF896a314B7aE98609eC0c0cA43724C768046B4;
+address constant GARDEN_ACCOUNT_IMPLEMENTATION = 0x0E69cFBF71cc21490f25c0b61dc833d16BBd4634;
+address constant ROOT_PLANET_GARDEN = 0xa9Cb249a3B651Ce82bf9E9cc48BCF41957647F48;
// TOKENBOUND (FUTURE PRIMTIVE)
bytes32 constant SALT = 0x6551655165516551655165516551655165516551655165516551655165516551;
diff --git a/packages/contracts/src/accounts/Garden.sol b/packages/contracts/src/accounts/Garden.sol
index 4f54a18..fb17557 100644
--- a/packages/contracts/src/accounts/Garden.sol
+++ b/packages/contracts/src/accounts/Garden.sol
@@ -4,7 +4,10 @@ pragma solidity >=0.8.25;
import { AccountV3Upgradable } from "@tokenbound/AccountV3Upgradable.sol";
import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
+// import { Action } from "../registries/Action.sol";
+
error NotGardenOwner();
+error NotGardenOperator();
/// @title GardenAccount Contract
/// @notice Manages gardeners and operators for a Garden, and supports community token management.
@@ -15,6 +18,11 @@ contract GardenAccount is AccountV3Upgradable, Initializable {
/// @param newName The new name of the garden.
event NameUpdated(address indexed updater, string newName);
+ /// @notice Emitted when the garden description is updated.
+ /// @param updater The address of the entity that updated the description.
+ /// @param newDescription The new description of the garden.
+ event DescriptionUpdated(address indexed updater, string newDescription);
+
/// @notice Emitted when a new gardener is added.
/// @param updater The address of the entity that added the gardener.
/// @param gardener The address of the added gardener.
@@ -41,12 +49,33 @@ contract GardenAccount is AccountV3Upgradable, Initializable {
/// @notice The name of the garden.
string public name;
+ /// @notice The description of the garden.
+ string public description;
+
+ // TODO: Add banner image property
+
/// @notice Mapping of gardener addresses to their status.
mapping(address gardener => bool isGardener) public gardeners;
/// @notice Mapping of garden operator addresses to their status.
mapping(address operator => bool isOperator) public gardenOperators;
+ modifier onlyGardenOwner() {
+ if (_isValidSigner(_msgSender(), "") == false) {
+ revert NotGardenOwner();
+ }
+
+ _;
+ }
+
+ modifier onlyOperator() {
+ if (!gardenOperators[_msgSender()]) {
+ revert NotGardenOperator();
+ }
+
+ _;
+ }
+
/// @notice Initializes the contract with the necessary dependencies.
/// @dev This constructor is for the upgradable pattern and uses Initializable for upgrade safety.
/// @param erc4337EntryPoint The entry point address for ERC-4337 operations.
@@ -64,16 +93,22 @@ contract GardenAccount is AccountV3Upgradable, Initializable {
/// @dev This function must be called after the contract is deployed.
/// @param _communityToken The address of the community token associated with the garden.
/// @param _name The name of the garden.
+ /// @param _description The description of the garden.
/// @param _gardeners An array of addresses representing the initial gardeners.
/// @param _gardenOperators An array of addresses representing the initial garden operators.
function initialize(
address _communityToken,
string calldata _name,
+ string calldata _description,
address[] calldata _gardeners,
address[] calldata _gardenOperators
) external initializer {
communityToken = _communityToken;
name = _name;
+ description = _description;
+
+ gardeners[_msgSender()] = true;
+ gardenOperators[_msgSender()] = true;
for (uint256 i = 0; i < _gardeners.length; i++) {
gardeners[_gardeners[i]] = true;
@@ -86,29 +121,34 @@ contract GardenAccount is AccountV3Upgradable, Initializable {
}
emit NameUpdated(_msgSender(), _name);
+ emit DescriptionUpdated(_msgSender(), _description);
+
+ emit GardenerAdded(_msgSender(), _msgSender());
+ emit GardenOperatorAdded(_msgSender(), _msgSender());
}
/// @notice Updates the name of the garden.
/// @dev Only callable by a valid signer of the contract.
/// @param _name The new name of the garden.
- function updateName(string memory _name) external {
- if (_isValidSigner(_msgSender(), "")) {
- revert NotGardenOwner();
- }
-
+ function updateName(string memory _name) external onlyGardenOwner {
name = _name;
emit NameUpdated(_msgSender(), _name);
}
+ /// @notice Updates the description of the garden.
+ /// @dev Only callable by a valid signer of the contract.
+ /// @param _description The new description of the garden.
+ function updateDescription(string memory _description) external {
+ description = _description;
+
+ emit DescriptionUpdated(_msgSender(), _description);
+ }
+
/// @notice Adds a new gardener to the garden.
/// @dev Only callable by a valid signer of the contract.
/// @param gardener The address of the gardener to add.
- function addGardener(address gardener) external {
- if (_isValidSigner(_msgSender(), "")) {
- revert NotGardenOwner();
- }
-
+ function addGardener(address gardener) external onlyOperator {
gardeners[gardener] = true;
emit GardenerAdded(_msgSender(), gardener);
@@ -117,11 +157,7 @@ contract GardenAccount is AccountV3Upgradable, Initializable {
/// @notice Removes an existing gardener from the garden.
/// @dev Only callable by a valid signer of the contract.
/// @param gardener The address of the gardener to remove.
- function removeGardener(address gardener) external {
- if (_isValidSigner(_msgSender(), "")) {
- revert NotGardenOwner();
- }
-
+ function removeGardener(address gardener) external onlyOperator {
gardeners[gardener] = false;
emit GardenerRemoved(_msgSender(), gardener);
@@ -130,11 +166,7 @@ contract GardenAccount is AccountV3Upgradable, Initializable {
/// @notice Adds a new operator to the garden.
/// @dev Only callable by a valid signer of the contract.
/// @param operator The address of the operator to add.
- function addGardenOperator(address operator) external {
- if (_isValidSigner(_msgSender(), "")) {
- revert NotGardenOwner();
- }
-
+ function addGardenOperator(address operator) external onlyOperator {
gardenOperators[operator] = true;
emit GardenOperatorAdded(_msgSender(), operator);
@@ -143,11 +175,7 @@ contract GardenAccount is AccountV3Upgradable, Initializable {
/// @notice Removes an existing operator from the garden.
/// @dev Only callable by a valid signer of the contract.
/// @param operator The address of the operator to remove.
- function removeGardenOperator(address operator) external {
- if (_isValidSigner(_msgSender(), "")) {
- revert NotGardenOwner();
- }
-
+ function removeGardenOperator(address operator) external onlyGardenOwner {
gardenOperators[operator] = false;
emit GardenOperatorRemoved(_msgSender(), operator);
diff --git a/packages/contracts/src/registries/Action.sol b/packages/contracts/src/registries/Action.sol
index f6f3f36..e6478ab 100644
--- a/packages/contracts/src/registries/Action.sol
+++ b/packages/contracts/src/registries/Action.sol
@@ -24,13 +24,40 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable {
/// @notice Emitted when a new action is registered.
/// @param owner The address of the action owner.
+ /// @param actionUID The unique identifier of the action.
/// @param action The details of the registered action.
- event ActionRegistered(address indexed owner, Action indexed action);
+ /// @param timestamp The timestamp of the registration.
+ event ActionRegistered(address indexed owner, uint256 indexed actionUID, Action indexed action, uint256 timestamp);
- /// @notice Emitted when an action is updated.
+ /// @notice Emitted when an existing action is start time is updated.
/// @param owner The address of the action owner.
- /// @param action The updated details of the action.
- event ActionUpdated(address indexed owner, Action indexed action);
+ /// @param actionUID The unique identifier of the action.
+ /// @param startTime The new start time of the action.
+ event ActionStartTimeUpdated(address indexed owner, uint256 indexed actionUID, uint256 indexed startTime);
+
+ /// @notice Emitted when an existing action is end time is updated.
+ /// @param owner The address of the action owner.
+ /// @param actionUID The unique identifier of the action.
+ /// @param endTime The new end time of the action.
+ event ActionEndTimeUpdated(address indexed owner, uint256 indexed actionUID, uint256 indexed endTime);
+
+ /// @notice Emitted when an existing action is title is updated.
+ /// @param owner The address of the action owner.
+ /// @param actionUID The unique identifier of the action.
+ /// @param title The new title of the action.
+ event ActionTitleUpdated(address indexed owner, uint256 indexed actionUID, string indexed title);
+
+ /// @notice Emitted when an existing action is instructions are updated.
+ /// @param owner The address of the action owner.
+ /// @param actionUID The unique identifier of the action.
+ /// @param instructions The new instructions of the action.
+ event ActionInstructionsUpdated(address indexed owner, uint256 indexed actionUID, string indexed instructions);
+
+ /// @notice Emitted when an existing action is media is updated.
+ /// @param owner The address of the action owner.
+ /// @param actionUID The unique identifier of the action.
+ /// @param media The new media URLs of the action.
+ event ActionMediaUpdated(address indexed owner, uint256 indexed actionUID, string[] indexed media);
uint256 private _nextActionUID;
@@ -79,7 +106,7 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable {
actionToOwner[actionUID] = _msgSender();
idToAction[actionUID] = Action(_startTime, _endTime, _title, _instructions, _capitals, _media);
- emit ActionRegistered(_msgSender(), idToAction[actionUID]);
+ emit ActionRegistered(_msgSender(), actionUID, idToAction[actionUID], block.timestamp);
}
/// @notice Updates the start time of an existing action.
@@ -88,7 +115,7 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable {
function updateActionStartTime(uint256 actionUID, uint256 _startTime) external onlyActionOwner(actionUID) {
idToAction[actionUID].startTime = _startTime;
- emit ActionUpdated(actionToOwner[actionUID], idToAction[actionUID]);
+ emit ActionStartTimeUpdated(actionToOwner[actionUID], actionUID, _startTime);
}
/// @notice Updates the end time of an existing action.
@@ -97,7 +124,7 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable {
function updateActionEndTime(uint256 actionUID, uint256 _endTime) external onlyActionOwner(actionUID) {
idToAction[actionUID].endTime = _endTime;
- emit ActionUpdated(actionToOwner[actionUID], idToAction[actionUID]);
+ emit ActionEndTimeUpdated(actionToOwner[actionUID], actionUID, _endTime);
}
/// @notice Updates the title of an existing action.
@@ -106,7 +133,7 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable {
function updateActionTitle(uint256 actionUID, string calldata _title) external onlyActionOwner(actionUID) {
idToAction[actionUID].title = _title;
- emit ActionUpdated(actionToOwner[actionUID], idToAction[actionUID]);
+ emit ActionTitleUpdated(actionToOwner[actionUID], actionUID, _title);
}
/// @notice Updates the instructions for an existing action.
@@ -118,7 +145,7 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable {
) external onlyActionOwner(actionUID) {
idToAction[actionUID].instructions = _instructions;
- emit ActionUpdated(actionToOwner[actionUID], idToAction[actionUID]);
+ emit ActionInstructionsUpdated(actionToOwner[actionUID], actionUID, _instructions);
}
/// @notice Updates the media associated with an existing action.
@@ -127,7 +154,7 @@ contract ActionRegistry is UUPSUpgradeable, OwnableUpgradeable {
function updateActionMedia(uint256 actionUID, string[] memory _media) external onlyActionOwner(actionUID) {
idToAction[actionUID].media = _media;
- emit ActionUpdated(actionToOwner[actionUID], idToAction[actionUID]);
+ emit ActionMediaUpdated(actionToOwner[actionUID], actionUID, _media);
}
/// @dev Authorizes an upgrade to the contract's implementation.
diff --git a/packages/contracts/src/tokens/Garden.sol b/packages/contracts/src/tokens/Garden.sol
index 5cd38a1..8e9f9f9 100644
--- a/packages/contracts/src/tokens/Garden.sol
+++ b/packages/contracts/src/tokens/Garden.sol
@@ -18,8 +18,8 @@ contract GardenToken is ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable {
/// @notice Emitted when a new Garden is minted.
/// @param owner The owner of the minted Garden token.
/// @param tokenId The unique identifier of the minted Garden token.
- /// @param name The name of the Garden associated with the minted token.
- event GardenMinted(address indexed owner, uint256 indexed tokenId, string name);
+ /// @param account The address of the associated Garden account.
+ event GardenMinted(address indexed owner, uint256 indexed tokenId, address indexed account);
/// @custom:oz-upgrades-unsafe-allow constructor
/// @param gardenAccountImplementation The address of the Garden account implementation.
@@ -41,11 +41,13 @@ contract GardenToken is ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable {
/// @dev The Garden account is initialized with the provided parameters.
/// @param communityToken The address of the community token associated with the Garden.
/// @param name The name of the Garden.
+ /// @param description The description of the Garden.
/// @param gardeners An array of addresses representing the gardeners of the Garden.
/// @param gardenOperators An array of addresses representing the operators of the Garden.
function mintGarden(
address communityToken,
string calldata name,
+ string calldata description,
address[] calldata gardeners,
address[] calldata gardenOperators
) external onlyOwner returns (address) {
@@ -54,9 +56,9 @@ contract GardenToken is ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable {
address gardenAccount = TBALib.createAccount(_gardenAccountImplementation, address(this), tokenId);
- GardenAccount(payable(gardenAccount)).initialize(communityToken, name, gardeners, gardenOperators);
+ GardenAccount(payable(gardenAccount)).initialize(communityToken, name, description, gardeners, gardenOperators);
- emit GardenMinted(_msgSender(), tokenId, name);
+ emit GardenMinted(_msgSender(), tokenId, gardenAccount);
return gardenAccount;
}
diff --git a/packages/contracts/test/GardenAccount.t.sol b/packages/contracts/test/GardenAccount.t.sol
index 8189aaa..f2bbe86 100644
--- a/packages/contracts/test/GardenAccount.t.sol
+++ b/packages/contracts/test/GardenAccount.t.sol
@@ -26,7 +26,7 @@ contract GardenAccountTest is Test {
gardeners[0] = address(0x100);
gardenOperators[0] = address(0x200);
- gardenAccount.initialize(address(0x555), "Test Garden", gardeners, gardenOperators);
+ gardenAccount.initialize(address(0x555), "Test Garden", "Test Description", gardeners, gardenOperators);
}
function testInitialize() public {
diff --git a/packages/contracts/test/WorkApprovalResolver.t.sol b/packages/contracts/test/WorkApprovalResolver.t.sol
index a53ecd2..768e540 100644
--- a/packages/contracts/test/WorkApprovalResolver.t.sol
+++ b/packages/contracts/test/WorkApprovalResolver.t.sol
@@ -29,7 +29,13 @@ contract WorkApprovalResolverTest is Test {
mockIEAS = new MockEAS();
mockActionRegistry.initialize(multisig);
- mockGardenAccount.initialize(address(0x555), "Test Garden", new address[](0), new address[](0));
+ mockGardenAccount.initialize(
+ address(0x555),
+ "Test Garden",
+ "Test Description",
+ new address[](0),
+ new address[](0)
+ );
// Deploy the WorkApprovalResolver contract
workApprovalResolver = new WorkApprovalResolver(address(address(0x007)), address(mockActionRegistry));
diff --git a/packages/contracts/test/WorkResolver.t.sol b/packages/contracts/test/WorkResolver.t.sol
index 3813b22..a2e079a 100644
--- a/packages/contracts/test/WorkResolver.t.sol
+++ b/packages/contracts/test/WorkResolver.t.sol
@@ -29,7 +29,13 @@ contract WorkResolverTest is Test {
mockIEAS = new MockEAS();
mockActionRegistry.initialize(multisig);
- mockGardenAccount.initialize(address(0x545), "Test Garden", new address[](0), new address[](0));
+ mockGardenAccount.initialize(
+ address(0x545),
+ "Test Garden",
+ "Test Description",
+ new address[](0),
+ new address[](0)
+ );
// Deploy the WorkResolver contract
workResolver = new WorkResolver(address(mockIEAS), address(mockActionRegistry));
diff --git a/packages/eas/package.json b/packages/eas/package.json
index a7d58ad..4a96bb5 100644
--- a/packages/eas/package.json
+++ b/packages/eas/package.json
@@ -13,7 +13,6 @@
"author": "",
"license": "ISC",
"dependencies": {
- "@ethereum-attestation-service/eas-sdk": "^2.5.0",
"commander": "^12.1.0",
"zod": "^3.23.8"
},
diff --git a/packages/eas/src/resources/schemas.json b/packages/eas/src/resources/schemas.json
index b43b478..2d07e13 100644
--- a/packages/eas/src/resources/schemas.json
+++ b/packages/eas/src/resources/schemas.json
@@ -53,8 +53,8 @@
}
],
"resolver": "",
- "UID": "0xc3b3fd4f173683ad40c405b4e8f5e0ede9ba5605e618eff98d576fa04cd5c890",
- "parsed": "uint8 soilMoisturePrecentage, uint256 carbonTonStock, uint256 carbonTonPotential, uint256 gardenSquareMeters, string biome, string remoteReportPDF, string speciesRegistryJSON, string[] polygonCoordinates, string[] treeGenusesObserved, string[] weedGenusesObserved, string[] issues, string[] tags"
+ "UID": "0x7433e24287be826b49e5eb28cd52192823e542521c94084a691e67e5cc7e8176",
+ "parsed": "uint8 soilMoisturePercentage, uint256 carbonTonStock, uint256 carbonTonPotential, uint256 gardenSquareMeters, string biome, string remoteReportPDF, string speciesRegistryJSON, string[] polygonCoordinates, string[] treeGenusesObserved, string[] weedGenusesObserved, string[] issues, string[] tags"
},
{
"name": "Work",
@@ -81,8 +81,8 @@
"name": "media"
}
],
- "resolver": "0x380217CB03B2AA6838C2B6F615F36C677D7922dB",
- "UID": "0x9341009d07b8de3eb72b96ac42246c549f3e32636cb31a75961fbee6db44a0eb",
+ "resolver": "0x4d394ec4dcDC93e451a27C9c9D915Baee9D43A78",
+ "UID": "0x2bd111016993f4d61d129189141146ec8b2ef88366033d98cd8e9e901be6de00",
"parsed": "uint256 actionUID, string title, string feedback, string metadata, string[] media"
},
{
@@ -106,8 +106,8 @@
"name": "feedback"
}
],
- "resolver": "0xECdD5C72D468b2b1d0566102050C42e99A37Ca14",
- "UID": "0x019249c30ec1d02ae41abb3fbbeeb56b9bbb2261cf94191fac73089308aa662a",
+ "resolver": "0xAD93d365C83784F245780d914460D60cBa11d1FA",
+ "UID": "0xa287afbe9c2243542a5067e6bea39f02fb95bfa32f49dd0910118763794202c9",
"parsed": "uint256 actionUID bytes32 workUID, bool approved, string feedback"
}
]
diff --git a/packages/indexer/.env.example b/packages/indexer/.env.example
new file mode 100644
index 0000000..7d6a1de
--- /dev/null
+++ b/packages/indexer/.env.example
@@ -0,0 +1,2 @@
+# To create or update a token visit https://envio.dev/app/api-tokens
+ENVIO_API_TOKEN=""
diff --git a/packages/indexer/.gitignore b/packages/indexer/.gitignore
new file mode 100644
index 0000000..1b66a1d
--- /dev/null
+++ b/packages/indexer/.gitignore
@@ -0,0 +1,34 @@
+*.exe
+*.obj
+*.out
+*.compile
+*.native
+*.byte
+*.cmo
+*.annot
+*.cmi
+*.cmx
+*.cmt
+*.cmti
+*.cma
+*.a
+*.cmxa
+*.obj
+*~
+*.annot
+*.cmj
+*.bak
+lib/*
+*.mlast
+*.mliast
+.vscode
+.merlin
+.bsb.lock
+/node_modules/
+benchmarks/
+artifacts
+cache
+build
+*.bs.js
+generated
+.env
diff --git a/packages/indexer/.npmrc b/packages/indexer/.npmrc
new file mode 100644
index 0000000..a9602f8
--- /dev/null
+++ b/packages/indexer/.npmrc
@@ -0,0 +1,5 @@
+# Needed for ts build folder to have
+# access to rescript node_modules
+shamefully-hoist=true
+# Needed so users can run `pnpm install` in the root of the repo without requiring the `-w` flag.
+ignore-workspace-root-check=true
diff --git a/packages/indexer/README.md b/packages/indexer/README.md
new file mode 100644
index 0000000..a8fa000
--- /dev/null
+++ b/packages/indexer/README.md
@@ -0,0 +1,3 @@
+## Envio Greeter Template
+
+*Please refer to the [documentation website](https://docs.envio.dev) for a thorough guide on all Envio indexer features*
diff --git a/packages/indexer/config.yaml b/packages/indexer/config.yaml
new file mode 100644
index 0000000..5905548
--- /dev/null
+++ b/packages/indexer/config.yaml
@@ -0,0 +1,37 @@
+# yaml-language-server: $schema=./node_modules/envio/evm.schema.json
+name: Green Goods
+description: Green Goods Indexer
+contracts:
+ - name: ActionRegistry
+ abi_file_path: ../contracts/out/Action.sol/ActionRegistry.json
+ handler: src/EventHandlers.ts
+ events:
+ - event: ActionRegistered
+ - event: ActionStartTimeUpdated
+ - event: ActionEndTimeUpdated
+ - event: ActionTitleUpdated
+ - event: ActionInstructionsUpdated
+ - event: ActionMediaUpdated
+ - name: GardenToken
+ abi_file_path: ../contracts/out/Garden.sol/GardenToken.json
+ handler: src/EventHandlers.ts
+ events:
+ - event: GardenMinted
+ - name: GardenAccount
+ abi_file_path: ../contracts/out/Garden.sol/GardenAccount.json
+ handler: src/EventHandlers.ts
+ events:
+ - event: NameUpdated
+ - event: DescriptionUpdated
+ - event: GardenerAdded
+ - event: GardenerRemoved
+ - event: GardenOperatorAdded
+ - event: GardenOperatorRemoved
+networks:
+ - id: 42161 # Arbitrum
+ start_block: 242630858
+ contracts:
+ - name: ActionRegistry
+ address: 0x9AF3D5Bb1a6d057B99A4948420c5d24ff1e482Ce
+ - name: GardenToken
+ address: 0xf226185e4e76d05EC2cbb9BF1B04e67E25532ecA
diff --git a/packages/indexer/index.html b/packages/indexer/index.html
new file mode 100644
index 0000000..49cef34
--- /dev/null
+++ b/packages/indexer/index.html
@@ -0,0 +1,70 @@
+
+
+
+
+
+ GraphiQL
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+
diff --git a/packages/indexer/package.json b/packages/indexer/package.json
new file mode 100644
index 0000000..18a4204
--- /dev/null
+++ b/packages/indexer/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "indexer",
+ "version": "0.0.0",
+ "scripts": {
+ "clean": "tsc --clean",
+ "build": "tsc --build",
+ "watch": "tsc --watch",
+ "mocha": "ts-mocha test/**/*.ts",
+ "codegen": "envio codegen",
+ "dev": "envio dev",
+ "test": "pnpm mocha",
+ "start": "ts-node generated/src/Index.bs.js"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.3.11",
+ "@types/mocha": "10.0.6",
+ "@types/node": "20.8.8",
+ "ts-mocha": "^10.0.0",
+ "ts-node": "10.9.1",
+ "typescript": "5.2.2",
+ "mocha": "10.2.0"
+ },
+ "dependencies": {
+ "chai": "4.3.10",
+ "envio": "2.1.0",
+ "ethers": "6.8.0"
+ },
+ "optionalDependencies": {
+ "generated": "./generated"
+ }
+}
diff --git a/packages/indexer/pnpm-lock.yaml b/packages/indexer/pnpm-lock.yaml
new file mode 100644
index 0000000..8b3d84e
--- /dev/null
+++ b/packages/indexer/pnpm-lock.yaml
@@ -0,0 +1,2776 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ chai:
+ specifier: 4.3.10
+ version: 4.3.10
+ envio:
+ specifier: 2.1.0
+ version: 2.1.0
+ ethers:
+ specifier: 6.8.0
+ version: 6.8.0
+ optionalDependencies:
+ generated:
+ specifier: ./generated
+ version: link:generated
+ devDependencies:
+ '@types/chai':
+ specifier: ^4.3.11
+ version: 4.3.17
+ '@types/mocha':
+ specifier: 10.0.6
+ version: 10.0.6
+ '@types/node':
+ specifier: 20.8.8
+ version: 20.8.8
+ mocha:
+ specifier: 10.2.0
+ version: 10.2.0
+ ts-mocha:
+ specifier: ^10.0.0
+ version: 10.0.0(mocha@10.2.0)
+ ts-node:
+ specifier: 10.9.1
+ version: 10.9.1(@types/node@20.8.8)(typescript@5.2.2)
+ typescript:
+ specifier: 5.2.2
+ version: 5.2.2
+
+ generated:
+ dependencies:
+ '@elastic/ecs-pino-format':
+ specifier: 1.4.0
+ version: 1.4.0
+ '@envio-dev/hypersync-client':
+ specifier: 0.5.0
+ version: 0.5.0
+ '@glennsl/rescript-fetch':
+ specifier: 0.2.0
+ version: 0.2.0
+ '@rescript/react':
+ specifier: 0.12.1
+ version: 0.12.1(react-dom@18.3.1(react@18.2.0))(react@18.2.0)
+ '@ryyppy/rescript-promise':
+ specifier: 2.1.0
+ version: 2.1.0
+ bignumber.js:
+ specifier: 9.1.2
+ version: 9.1.2
+ date-fns:
+ specifier: 3.3.1
+ version: 3.3.1
+ dotenv:
+ specifier: 16.4.5
+ version: 16.4.5
+ ethers:
+ specifier: 6.8.0
+ version: 6.8.0
+ express:
+ specifier: 4.19.2
+ version: 4.19.2
+ ink:
+ specifier: 3.2.0
+ version: 3.2.0(react@18.2.0)
+ ink-big-text:
+ specifier: 1.2.0
+ version: 1.2.0(ink@3.2.0(react@18.2.0))(react@18.2.0)
+ ink-spinner:
+ specifier: 4.0.3
+ version: 4.0.3(ink@3.2.0(react@18.2.0))(react@18.2.0)
+ js-sdsl:
+ specifier: 4.4.2
+ version: 4.4.2
+ node-fetch:
+ specifier: 2.7.0
+ version: 2.7.0
+ pino:
+ specifier: 8.16.1
+ version: 8.16.1
+ pino-pretty:
+ specifier: 10.2.3
+ version: 10.2.3
+ postgres:
+ specifier: 3.4.1
+ version: 3.4.1
+ prom-client:
+ specifier: 15.0.0
+ version: 15.0.0
+ react:
+ specifier: 18.2.0
+ version: 18.2.0
+ rescript:
+ specifier: 11.1.0
+ version: 11.1.0
+ rescript-envsafe:
+ specifier: 4.2.0
+ version: 4.2.0(rescript-schema@8.0.0(rescript@11.1.0))(rescript@11.1.0)
+ rescript-express:
+ specifier: 0.4.1
+ version: 0.4.1(express@4.19.2)
+ rescript-schema:
+ specifier: 8.0.0
+ version: 8.0.0(rescript@11.1.0)
+ root:
+ specifier: ../.
+ version: link:..
+ viem:
+ specifier: 1.16.6
+ version: 1.16.6(typescript@5.2.2)
+ yargs:
+ specifier: 17.7.2
+ version: 17.7.2
+
+packages:
+
+ '@adraffy/ens-normalize@1.10.0':
+ resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==}
+
+ '@adraffy/ens-normalize@1.9.4':
+ resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==}
+
+ '@cspotcode/source-map-support@0.8.1':
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+
+ '@elastic/ecs-helpers@1.1.0':
+ resolution: {integrity: sha512-MDLb2aFeGjg46O5mLpdCzT5yOUDnXToJSrco2ShqGIXxNJaM8uJjX+4nd+hRYV4Vex8YJyDtOFEVBldQct6ndg==}
+ engines: {node: '>=10'}
+
+ '@elastic/ecs-pino-format@1.4.0':
+ resolution: {integrity: sha512-eCSBUTgl8KbPyxky8cecDRLCYu2C1oFV4AZ72bEsI+TxXEvaljaL2kgttfzfu7gW+M89eCz55s49uF2t+YMTWA==}
+ engines: {node: '>=10'}
+
+ '@envio-dev/hypersync-client-darwin-arm64@0.5.0':
+ resolution: {integrity: sha512-gPL3MFjev2MfMU3Qg77+g3HNipaeEVY1AakW55jjsU8shnVRcFEfykT3AuBK5KO8aFT+itUR5yTZMqaKAY+VRg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@envio-dev/hypersync-client-darwin-x64@0.5.0':
+ resolution: {integrity: sha512-GuM+UODTThVbmRU/XywMCG549wJogDPah94DCiIHKe4Bw6LqWfdEKVXY4kdnerZ8l+7HoewJh+EAlCHAR8+fIQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@envio-dev/hypersync-client-linux-arm64-gnu@0.5.0':
+ resolution: {integrity: sha512-/5HwFJQlYiie62QpP7BUDEGEFHptTOBXq3F0NpLAlbR+TeeK3BXfZEHAR4qpzmJYWJQ21+f0YfuPFzig5ybyfA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@envio-dev/hypersync-client-linux-x64-gnu@0.5.0':
+ resolution: {integrity: sha512-heQPhCzQy3sDgDEguglGKMt6qmg3YbVjEC2SCsAxOV7YTCMmIF6QocIq+N5t3fikDIp1nfH0oGEdlmswnNQ4CQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@envio-dev/hypersync-client-linux-x64-musl@0.5.0':
+ resolution: {integrity: sha512-eTbj91QaqRQXP0hKx0drs9RZFfAdhYurF79sLXp9TLQWBWnnqPF9R+0Fl6WDjVHvUhsvqYqYratNXx5rxuthPg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@envio-dev/hypersync-client-win32-x64-msvc@0.5.0':
+ resolution: {integrity: sha512-rNpt57uYAabned7k+yhvwg5F+xNti65og1u+60H2Q/MqfARppA7A2ntHTCgI865H1fN+/HXEywwtjwLOkX4J2g==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@envio-dev/hypersync-client@0.5.0':
+ resolution: {integrity: sha512-BfYqU2LVTF2A8NdYmu7dedrmk8rC9rEnYCK53zVgmntbFrhEqWv5npl3P6U0IWPeYAt/0woC0jHO8pKpUsjvyQ==}
+ engines: {node: '>= 10'}
+
+ '@glennsl/rescript-fetch@0.2.0':
+ resolution: {integrity: sha512-0tsEqJ/6/WBm02prM4RYG+qpnNTaB8QKKIeQHXdDaE4C5YfA/nzjxMNW3CjsGIaEgyrAmmIXFS0kx24UjvOI6A==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.9':
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+
+ '@noble/curves@1.2.0':
+ resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==}
+
+ '@noble/hashes@1.3.2':
+ resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==}
+ engines: {node: '>= 16'}
+
+ '@opentelemetry/api@1.9.0':
+ resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
+ engines: {node: '>=8.0.0'}
+
+ '@rescript/react@0.12.1':
+ resolution: {integrity: sha512-ZD7nhDr5FZgLYqRH9s4CNM+LRz/3IMuTb+LH12fd2Akk0xYkYUP+DZveB2VQUC2UohJnTf/c8yPSNsiFihVCCg==}
+ peerDependencies:
+ react: '>=18.0.0'
+ react-dom: '>=18.0.0'
+
+ '@ryyppy/rescript-promise@2.1.0':
+ resolution: {integrity: sha512-+dW6msBrj2Lr2hbEMX+HoWCvN89qVjl94RwbYWJgHQuj8jm/izdPC0YzxgpGoEFdeAEW2sOozoLcYHxT6o5WXQ==}
+
+ '@scure/base@1.1.7':
+ resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==}
+
+ '@scure/bip32@1.3.2':
+ resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==}
+
+ '@scure/bip39@1.2.1':
+ resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==}
+
+ '@tsconfig/node10@1.0.11':
+ resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
+
+ '@tsconfig/node12@1.0.11':
+ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
+
+ '@tsconfig/node14@1.0.3':
+ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
+
+ '@tsconfig/node16@1.0.4':
+ resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
+
+ '@types/chai@4.3.17':
+ resolution: {integrity: sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==}
+
+ '@types/json5@0.0.29':
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
+ '@types/mocha@10.0.6':
+ resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==}
+
+ '@types/node@18.15.13':
+ resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==}
+
+ '@types/node@20.8.8':
+ resolution: {integrity: sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==}
+
+ '@types/yoga-layout@1.9.2':
+ resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==}
+
+ abitype@0.9.8:
+ resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3 >=3.19.1
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ acorn-walk@8.3.3:
+ resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==}
+ engines: {node: '>=0.4.0'}
+
+ acorn@8.12.1:
+ resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ aes-js@4.0.0-beta.5:
+ resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==}
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ ansi-colors@4.1.1:
+ resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==}
+ engines: {node: '>=6'}
+
+ ansi-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ arg@4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ arrify@1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+
+ assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+
+ astral-regex@2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+
+ atomic-sleep@1.0.0:
+ resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
+ engines: {node: '>=8.0.0'}
+
+ auto-bind@4.0.0:
+ resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==}
+ engines: {node: '>=8'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ bignumber.js@9.1.2:
+ resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ bintrees@1.0.2:
+ resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==}
+
+ body-parser@1.20.2:
+ resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browser-stdout@1.3.1:
+ resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+
+ camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ cfonts@2.10.1:
+ resolution: {integrity: sha512-l5IcLv4SaOdL/EGR6BpOF5SEro88VcGJJ6+xbvJb+wXi19YC6UeHE/brv7a4vIcLZopnt3Ys3zWeNnyfB04UPg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ chai@4.3.10:
+ resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+
+ chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+
+ ci-info@2.0.0:
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+
+ cli-boxes@2.2.1:
+ resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==}
+ engines: {node: '>=6'}
+
+ cli-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+
+ cli-truncate@2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+
+ cliui@7.0.4:
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ code-excerpt@3.0.0:
+ resolution: {integrity: sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==}
+ engines: {node: '>=10'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ colorette@2.0.20:
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ convert-to-spaces@1.0.2:
+ resolution: {integrity: sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==}
+ engines: {node: '>= 4'}
+
+ cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+
+ cookie@0.6.0:
+ resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ engines: {node: '>= 0.6'}
+
+ create-require@1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+
+ date-fns@3.3.1:
+ resolution: {integrity: sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==}
+
+ dateformat@4.6.3:
+ resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decamelize@4.0.0:
+ resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==}
+ engines: {node: '>=10'}
+
+ deep-eql@4.1.4:
+ resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
+ engines: {node: '>=6'}
+
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-property@1.0.0:
+ resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
+ engines: {node: '>=0.10.0'}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ diff@3.5.0:
+ resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==}
+ engines: {node: '>=0.3.1'}
+
+ diff@4.0.2:
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
+
+ diff@5.0.0:
+ resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==}
+ engines: {node: '>=0.3.1'}
+
+ dotenv@16.4.5:
+ resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
+ engines: {node: '>=12'}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+
+ envio-darwin-arm64@2.1.0:
+ resolution: {integrity: sha512-j3cCOIxhqOk8Gt4Q03BsI4mXEyrWsoMelFHqy6omO6ZFgX8f6SVK5z9b5lZKeUOBKuyX3M7x0jo2P/HKQSSCyw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ envio-darwin-x64@2.1.0:
+ resolution: {integrity: sha512-PPPp0hUbnf07QPozElhESuCvK2ni4DNHCU3njghECAg6A5mEHR9pa/ow8Lr0sSvBqHmBhpCxx5RyF3X5i3lbYA==}
+ cpu: [x64]
+ os: [darwin]
+
+ envio-linux-arm64@2.1.0:
+ resolution: {integrity: sha512-okHUoQMEXtjUo4/x8uQXwrK5AnwfSAT1hQpAx67wZrRkrdqek7r4qfvNMgNQYnzo9/wjrmK5ZGA9uUcW7QuFlA==}
+ cpu: [arm64]
+ os: [linux]
+
+ envio-linux-x64@2.1.0:
+ resolution: {integrity: sha512-Y/FyhIGuyqgwHof1MXKTnhFRoBEJW6KgH3s4EKWBOPUidqvavKYzTiMzhuDAw2XHkgEvTPn9fhRf5gOz6QGH8w==}
+ cpu: [x64]
+ os: [linux]
+
+ envio@2.1.0:
+ resolution: {integrity: sha512-20ev9vY5Ko37oo2sh1rYMBDOoM8AVhjK8Roj+KCrNFMlrM2v2saVdExuzV/a+4Yjhb5Lle6VUkuBF6ODaHbJgw==}
+ hasBin: true
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-string-regexp@2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ ethers@6.8.0:
+ resolution: {integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==}
+ engines: {node: '>=14.0.0'}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ express@4.19.2:
+ resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
+ engines: {node: '>= 0.10.0'}
+
+ fast-copy@3.0.2:
+ resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-json-stringify@2.7.13:
+ resolution: {integrity: sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==}
+ engines: {node: '>= 10.0.0'}
+
+ fast-redact@3.5.0:
+ resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
+ engines: {node: '>=6'}
+
+ fast-safe-stringify@2.1.1:
+ resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.2.0:
+ resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
+ engines: {node: '>= 0.8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ flat@5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob@7.2.0:
+ resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ glob@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+ engines: {node: '>=12'}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ help-me@4.2.0:
+ resolution: {integrity: sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ink-big-text@1.2.0:
+ resolution: {integrity: sha512-xDfn8oOhiji9c4wojTKSaBnEfgpTTd3KL7jsMYVht4SbpfLdSKvVZiMi3U5v45eSjLm1ycMmeMWAP1G99lWL5Q==}
+ engines: {node: '>=8'}
+ peerDependencies:
+ ink: '>=2.0.0'
+ react: '>=16.8.0'
+
+ ink-spinner@4.0.3:
+ resolution: {integrity: sha512-uJ4nbH00MM9fjTJ5xdw0zzvtXMkeGb0WV6dzSWvFv2/+ks6FIhpkt+Ge/eLdh0Ah6Vjw5pLMyNfoHQpRDRVFbQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ ink: '>=3.0.5'
+ react: '>=16.8.2'
+
+ ink@3.2.0:
+ resolution: {integrity: sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '>=16.8.0'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-accessor-descriptor@1.0.1:
+ resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
+ engines: {node: '>= 0.10'}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-buffer@1.1.6:
+ resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+
+ is-ci@2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+
+ is-data-descriptor@1.0.1:
+ resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==}
+ engines: {node: '>= 0.4'}
+
+ is-descriptor@1.0.3:
+ resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@3.0.0:
+ resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-plain-obj@2.1.0:
+ resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
+ engines: {node: '>=8'}
+
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
+ isows@1.0.3:
+ resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==}
+ peerDependencies:
+ ws: '*'
+
+ joycon@3.1.1:
+ resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
+ engines: {node: '>=10'}
+
+ js-sdsl@4.4.2:
+ resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+
+ kind-of@3.2.2:
+ resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
+ engines: {node: '>=0.10.0'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
+
+ make-error@1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ merge-descriptors@1.0.1:
+ resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@5.0.1:
+ resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==}
+ engines: {node: '>=10'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ mkdirp@0.5.6:
+ resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+
+ mocha@10.2.0:
+ resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==}
+ engines: {node: '>= 14.0.0'}
+ hasBin: true
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ nanoid@3.3.3:
+ resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
+
+ on-exit-leak-free@2.1.2:
+ resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
+ engines: {node: '>=14.0.0'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ patch-console@1.0.0:
+ resolution: {integrity: sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==}
+ engines: {node: '>=10'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-to-regexp@0.1.7:
+ resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
+
+ pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pino-abstract-transport@1.1.0:
+ resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
+
+ pino-abstract-transport@1.2.0:
+ resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
+
+ pino-pretty@10.2.3:
+ resolution: {integrity: sha512-4jfIUc8TC1GPUfDyMSlW1STeORqkoxec71yhxIpLDQapUu8WOuoz2TTCoidrIssyz78LZC69whBMPIKCMbi3cw==}
+ hasBin: true
+
+ pino-std-serializers@6.2.2:
+ resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
+
+ pino@8.16.1:
+ resolution: {integrity: sha512-3bKsVhBmgPjGV9pyn4fO/8RtoVDR8ssW1ev819FsRXlRNgW8gR/9Kx+gCK4UPWd4JjrRDLWpzd/pb1AyWm3MGA==}
+ hasBin: true
+
+ postgres@3.4.1:
+ resolution: {integrity: sha512-Wasjv6WEzrZXbwKByR2RGD7MBfj7VBqco3hYWz8ifzSAp6tb2L6MlmcKFzkmgV1jT7/vKlcSa+lxXZeTdeVMzQ==}
+ engines: {node: '>=12'}
+
+ process-warning@2.3.2:
+ resolution: {integrity: sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
+ prom-client@15.0.0:
+ resolution: {integrity: sha512-UocpgIrKyA2TKLVZDSfm8rGkL13C19YrQBAiG3xo3aDFWcHedxRxI3z+cIcucoxpSO0h5lff5iv/SXoxyeopeA==}
+ engines: {node: ^16 || ^18 || >=20}
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
+ pump@3.0.0:
+ resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ qs@6.11.0:
+ resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
+ engines: {node: '>=0.6'}
+
+ quick-format-unescaped@4.0.4:
+ resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+
+ randombytes@2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.2:
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
+ engines: {node: '>= 0.8'}
+
+ react-devtools-core@4.28.5:
+ resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==}
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-reconciler@0.26.2:
+ resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ react: ^17.0.2
+
+ react@18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readable-stream@4.5.2:
+ resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ real-require@0.2.0:
+ resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
+ engines: {node: '>= 12.13.0'}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ rescript-envsafe@4.2.0:
+ resolution: {integrity: sha512-EpoEkyFzYZa2xzvOwHMAeW/dagqN0WXTL03IBJuZlE+33baKSTQEQ60L20472fPTJRxYaDv14A0UXglPvhSDsA==}
+ peerDependencies:
+ rescript: 11.x
+ rescript-schema: 6.x || 7.x || 8.x
+
+ rescript-express@0.4.1:
+ resolution: {integrity: sha512-R+xAQKANfIFAIcxhQrkLn58IZQwhMZuQpVCH6UtTRNLWqlVtaogG9z4Rt0MQZgqYOjvrOtt51P0hOmYGg/90Fw==}
+ peerDependencies:
+ express: ^4.17.1
+
+ rescript-schema@8.0.0:
+ resolution: {integrity: sha512-+i/us90Q73HeRZ9Y6BXfogb0BXpfwDmmFhHI+dZkvnzGOLMQEx3kowXv78LfP2ujpedwpN85/aqEPXRb+eBtog==}
+ peerDependencies:
+ rescript: 11.x
+
+ rescript@11.1.0:
+ resolution: {integrity: sha512-9la2Dv+ACylQ77I8s4spPu1JnLZXbH5WgxcLHLLUBWgFFSiv0wXqgzWztrBIZqwFgVX5BYcwldUqUVcEzdCyHg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+
+ rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-stable-stringify@2.5.0:
+ resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
+ engines: {node: '>=10'}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ scheduler@0.20.2:
+ resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ secure-json-parse@2.7.0:
+ resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
+
+ send@0.18.0:
+ resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
+ engines: {node: '>= 0.8.0'}
+
+ serialize-javascript@6.0.0:
+ resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==}
+
+ serve-static@1.15.0:
+ resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
+ engines: {node: '>= 0.8.0'}
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ shell-quote@1.8.1:
+ resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
+
+ side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ slice-ansi@3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+
+ sonic-boom@3.8.1:
+ resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+
+ stack-utils@2.0.6:
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ string-similarity@4.0.4:
+ resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ tdigest@0.1.2:
+ resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==}
+
+ thread-stream@2.7.0:
+ resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ ts-mocha@10.0.0:
+ resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==}
+ engines: {node: '>= 6.X.X'}
+ hasBin: true
+ peerDependencies:
+ mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X
+
+ ts-node@10.9.1:
+ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+
+ ts-node@7.0.1:
+ resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+
+ tslib@2.4.0:
+ resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
+
+ type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+
+ type-fest@0.12.0:
+ resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==}
+ engines: {node: '>=10'}
+
+ type-fest@0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
+ typescript@5.2.2:
+ resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ undici-types@5.25.3:
+ resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ v8-compile-cache-lib@3.0.1:
+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ viem@1.16.6:
+ resolution: {integrity: sha512-jcWcFQ+xzIfDwexwPJRvCuCRJKEkK9iHTStG7mpU5MmuSBpACs4nATBDyXNFtUiyYTFzLlVEwWkt68K0nCSImg==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ widest-line@3.1.0:
+ resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
+ engines: {node: '>=8'}
+
+ window-size@1.1.1:
+ resolution: {integrity: sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==}
+ engines: {node: '>= 0.10.0'}
+ hasBin: true
+
+ workerpool@6.2.1:
+ resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==}
+
+ wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ ws@7.5.10:
+ resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
+ engines: {node: '>=8.3.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ ws@8.13.0:
+ resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ ws@8.5.0:
+ resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yargs-parser@20.2.4:
+ resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==}
+ engines: {node: '>=10'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs-unparser@2.0.0:
+ resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==}
+ engines: {node: '>=10'}
+
+ yargs@16.2.0:
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
+ engines: {node: '>=10'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+ yn@2.0.0:
+ resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==}
+ engines: {node: '>=4'}
+
+ yn@3.1.1:
+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+ engines: {node: '>=6'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ yoga-layout-prebuilt@1.10.0:
+ resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==}
+ engines: {node: '>=8'}
+
+snapshots:
+
+ '@adraffy/ens-normalize@1.10.0': {}
+
+ '@adraffy/ens-normalize@1.9.4': {}
+
+ '@cspotcode/source-map-support@0.8.1':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+
+ '@elastic/ecs-helpers@1.1.0':
+ dependencies:
+ fast-json-stringify: 2.7.13
+
+ '@elastic/ecs-pino-format@1.4.0':
+ dependencies:
+ '@elastic/ecs-helpers': 1.1.0
+
+ '@envio-dev/hypersync-client-darwin-arm64@0.5.0':
+ optional: true
+
+ '@envio-dev/hypersync-client-darwin-x64@0.5.0':
+ optional: true
+
+ '@envio-dev/hypersync-client-linux-arm64-gnu@0.5.0':
+ optional: true
+
+ '@envio-dev/hypersync-client-linux-x64-gnu@0.5.0':
+ optional: true
+
+ '@envio-dev/hypersync-client-linux-x64-musl@0.5.0':
+ optional: true
+
+ '@envio-dev/hypersync-client-win32-x64-msvc@0.5.0':
+ optional: true
+
+ '@envio-dev/hypersync-client@0.5.0':
+ optionalDependencies:
+ '@envio-dev/hypersync-client-darwin-arm64': 0.5.0
+ '@envio-dev/hypersync-client-darwin-x64': 0.5.0
+ '@envio-dev/hypersync-client-linux-arm64-gnu': 0.5.0
+ '@envio-dev/hypersync-client-linux-x64-gnu': 0.5.0
+ '@envio-dev/hypersync-client-linux-x64-musl': 0.5.0
+ '@envio-dev/hypersync-client-win32-x64-msvc': 0.5.0
+
+ '@glennsl/rescript-fetch@0.2.0': {}
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.9':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@noble/curves@1.2.0':
+ dependencies:
+ '@noble/hashes': 1.3.2
+
+ '@noble/hashes@1.3.2': {}
+
+ '@opentelemetry/api@1.9.0': {}
+
+ '@rescript/react@0.12.1(react-dom@18.3.1(react@18.2.0))(react@18.2.0)':
+ dependencies:
+ react: 18.2.0
+ react-dom: 18.3.1(react@18.2.0)
+
+ '@ryyppy/rescript-promise@2.1.0': {}
+
+ '@scure/base@1.1.7': {}
+
+ '@scure/bip32@1.3.2':
+ dependencies:
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@scure/base': 1.1.7
+
+ '@scure/bip39@1.2.1':
+ dependencies:
+ '@noble/hashes': 1.3.2
+ '@scure/base': 1.1.7
+
+ '@tsconfig/node10@1.0.11': {}
+
+ '@tsconfig/node12@1.0.11': {}
+
+ '@tsconfig/node14@1.0.3': {}
+
+ '@tsconfig/node16@1.0.4': {}
+
+ '@types/chai@4.3.17': {}
+
+ '@types/json5@0.0.29':
+ optional: true
+
+ '@types/mocha@10.0.6': {}
+
+ '@types/node@18.15.13': {}
+
+ '@types/node@20.8.8':
+ dependencies:
+ undici-types: 5.25.3
+
+ '@types/yoga-layout@1.9.2': {}
+
+ abitype@0.9.8(typescript@5.2.2):
+ optionalDependencies:
+ typescript: 5.2.2
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn-walk@8.3.3:
+ dependencies:
+ acorn: 8.12.1
+
+ acorn@8.12.1: {}
+
+ aes-js@4.0.0-beta.5: {}
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ansi-colors@4.1.1: {}
+
+ ansi-escapes@4.3.2:
+ dependencies:
+ type-fest: 0.21.3
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ arg@4.1.3: {}
+
+ argparse@2.0.1: {}
+
+ array-flatten@1.1.1: {}
+
+ arrify@1.0.1: {}
+
+ assertion-error@1.1.0: {}
+
+ astral-regex@2.0.0: {}
+
+ atomic-sleep@1.0.0: {}
+
+ auto-bind@4.0.0: {}
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ bignumber.js@9.1.2: {}
+
+ binary-extensions@2.3.0: {}
+
+ bintrees@1.0.2: {}
+
+ body-parser@1.20.2:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.11.0
+ raw-body: 2.5.2
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browser-stdout@1.3.1: {}
+
+ buffer-from@1.1.2: {}
+
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bytes@3.1.2: {}
+
+ call-bind@1.0.7:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.2
+
+ camelcase@6.3.0: {}
+
+ cfonts@2.10.1:
+ dependencies:
+ chalk: 4.1.2
+ window-size: 1.1.1
+
+ chai@4.3.10:
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.4
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.1.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ check-error@1.0.3:
+ dependencies:
+ get-func-name: 2.0.2
+
+ chokidar@3.5.3:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ ci-info@2.0.0: {}
+
+ cli-boxes@2.2.1: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
+ cli-spinners@2.9.2: {}
+
+ cli-truncate@2.1.0:
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.3
+
+ cliui@7.0.4:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ code-excerpt@3.0.0:
+ dependencies:
+ convert-to-spaces: 1.0.2
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ colorette@2.0.20: {}
+
+ concat-map@0.0.1: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
+ convert-to-spaces@1.0.2: {}
+
+ cookie-signature@1.0.6: {}
+
+ cookie@0.6.0: {}
+
+ create-require@1.1.1: {}
+
+ date-fns@3.3.1: {}
+
+ dateformat@4.6.3: {}
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@4.3.4(supports-color@8.1.1):
+ dependencies:
+ ms: 2.1.2
+ optionalDependencies:
+ supports-color: 8.1.1
+
+ decamelize@4.0.0: {}
+
+ deep-eql@4.1.4:
+ dependencies:
+ type-detect: 4.1.0
+
+ deepmerge@4.3.1: {}
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+
+ define-property@1.0.0:
+ dependencies:
+ is-descriptor: 1.0.3
+
+ depd@2.0.0: {}
+
+ destroy@1.2.0: {}
+
+ diff@3.5.0: {}
+
+ diff@4.0.2: {}
+
+ diff@5.0.0: {}
+
+ dotenv@16.4.5: {}
+
+ ee-first@1.1.1: {}
+
+ emoji-regex@8.0.0: {}
+
+ encodeurl@1.0.2: {}
+
+ end-of-stream@1.4.4:
+ dependencies:
+ once: 1.4.0
+
+ envio-darwin-arm64@2.1.0:
+ optional: true
+
+ envio-darwin-x64@2.1.0:
+ optional: true
+
+ envio-linux-arm64@2.1.0:
+ optional: true
+
+ envio-linux-x64@2.1.0:
+ optional: true
+
+ envio@2.1.0:
+ optionalDependencies:
+ envio-darwin-arm64: 2.1.0
+ envio-darwin-x64: 2.1.0
+ envio-linux-arm64: 2.1.0
+ envio-linux-x64: 2.1.0
+
+ es-define-property@1.0.0:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ es-errors@1.3.0: {}
+
+ escalade@3.1.2: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@2.0.0: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ etag@1.8.1: {}
+
+ ethers@6.8.0:
+ dependencies:
+ '@adraffy/ens-normalize': 1.10.0
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@types/node': 18.15.13
+ aes-js: 4.0.0-beta.5
+ tslib: 2.4.0
+ ws: 8.5.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ event-target-shim@5.0.1: {}
+
+ events@3.3.0: {}
+
+ express@4.19.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.2
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.6.0
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.2.0
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.1
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.7
+ proxy-addr: 2.0.7
+ qs: 6.11.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.18.0
+ serve-static: 1.15.0
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ fast-copy@3.0.2: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-json-stringify@2.7.13:
+ dependencies:
+ ajv: 6.12.6
+ deepmerge: 4.3.1
+ rfdc: 1.4.1
+ string-similarity: 4.0.4
+
+ fast-redact@3.5.0: {}
+
+ fast-safe-stringify@2.1.1: {}
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.2.0:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat@5.0.2: {}
+
+ forwarded@0.2.0: {}
+
+ fresh@0.5.2: {}
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-func-name@2.0.2: {}
+
+ get-intrinsic@1.2.4:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@7.2.0:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ glob@8.1.0:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 5.0.1
+ once: 1.4.0
+
+ gopd@1.0.1:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.0
+
+ has-proto@1.0.3: {}
+
+ has-symbols@1.0.3: {}
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ he@1.2.0: {}
+
+ help-me@4.2.0:
+ dependencies:
+ glob: 8.1.0
+ readable-stream: 3.6.2
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ ieee754@1.2.1: {}
+
+ indent-string@4.0.0: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ ink-big-text@1.2.0(ink@3.2.0(react@18.2.0))(react@18.2.0):
+ dependencies:
+ cfonts: 2.10.1
+ ink: 3.2.0(react@18.2.0)
+ prop-types: 15.8.1
+ react: 18.2.0
+
+ ink-spinner@4.0.3(ink@3.2.0(react@18.2.0))(react@18.2.0):
+ dependencies:
+ cli-spinners: 2.9.2
+ ink: 3.2.0(react@18.2.0)
+ react: 18.2.0
+
+ ink@3.2.0(react@18.2.0):
+ dependencies:
+ ansi-escapes: 4.3.2
+ auto-bind: 4.0.0
+ chalk: 4.1.2
+ cli-boxes: 2.2.1
+ cli-cursor: 3.1.0
+ cli-truncate: 2.1.0
+ code-excerpt: 3.0.0
+ indent-string: 4.0.0
+ is-ci: 2.0.0
+ lodash: 4.17.21
+ patch-console: 1.0.0
+ react: 18.2.0
+ react-devtools-core: 4.28.5
+ react-reconciler: 0.26.2(react@18.2.0)
+ scheduler: 0.20.2
+ signal-exit: 3.0.7
+ slice-ansi: 3.0.0
+ stack-utils: 2.0.6
+ string-width: 4.2.3
+ type-fest: 0.12.0
+ widest-line: 3.1.0
+ wrap-ansi: 6.2.0
+ ws: 7.5.10
+ yoga-layout-prebuilt: 1.10.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ ipaddr.js@1.9.1: {}
+
+ is-accessor-descriptor@1.0.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-buffer@1.1.6: {}
+
+ is-ci@2.0.0:
+ dependencies:
+ ci-info: 2.0.0
+
+ is-data-descriptor@1.0.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-descriptor@1.0.3:
+ dependencies:
+ is-accessor-descriptor: 1.0.1
+ is-data-descriptor: 1.0.1
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@3.0.0:
+ dependencies:
+ kind-of: 3.2.2
+
+ is-number@7.0.0: {}
+
+ is-plain-obj@2.1.0: {}
+
+ is-unicode-supported@0.1.0: {}
+
+ isows@1.0.3(ws@8.13.0):
+ dependencies:
+ ws: 8.13.0
+
+ joycon@3.1.1: {}
+
+ js-sdsl@4.4.2: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ json-schema-traverse@0.4.1: {}
+
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+ optional: true
+
+ kind-of@3.2.2:
+ dependencies:
+ is-buffer: 1.1.6
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash@4.17.21: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ loupe@2.3.7:
+ dependencies:
+ get-func-name: 2.0.2
+
+ make-error@1.3.6: {}
+
+ media-typer@0.3.0: {}
+
+ merge-descriptors@1.0.1: {}
+
+ methods@1.1.2: {}
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ mimic-fn@2.1.0: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimatch@5.0.1:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimist@1.2.8: {}
+
+ mkdirp@0.5.6:
+ dependencies:
+ minimist: 1.2.8
+
+ mocha@10.2.0:
+ dependencies:
+ ansi-colors: 4.1.1
+ browser-stdout: 1.3.1
+ chokidar: 3.5.3
+ debug: 4.3.4(supports-color@8.1.1)
+ diff: 5.0.0
+ escape-string-regexp: 4.0.0
+ find-up: 5.0.0
+ glob: 7.2.0
+ he: 1.2.0
+ js-yaml: 4.1.0
+ log-symbols: 4.1.0
+ minimatch: 5.0.1
+ ms: 2.1.3
+ nanoid: 3.3.3
+ serialize-javascript: 6.0.0
+ strip-json-comments: 3.1.1
+ supports-color: 8.1.1
+ workerpool: 6.2.1
+ yargs: 16.2.0
+ yargs-parser: 20.2.4
+ yargs-unparser: 2.0.0
+
+ ms@2.0.0: {}
+
+ ms@2.1.2: {}
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.3: {}
+
+ negotiator@0.6.3: {}
+
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ normalize-path@3.0.0: {}
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.2: {}
+
+ on-exit-leak-free@2.1.2: {}
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ parseurl@1.3.3: {}
+
+ patch-console@1.0.0: {}
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-to-regexp@0.1.7: {}
+
+ pathval@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ pino-abstract-transport@1.1.0:
+ dependencies:
+ readable-stream: 4.5.2
+ split2: 4.2.0
+
+ pino-abstract-transport@1.2.0:
+ dependencies:
+ readable-stream: 4.5.2
+ split2: 4.2.0
+
+ pino-pretty@10.2.3:
+ dependencies:
+ colorette: 2.0.20
+ dateformat: 4.6.3
+ fast-copy: 3.0.2
+ fast-safe-stringify: 2.1.1
+ help-me: 4.2.0
+ joycon: 3.1.1
+ minimist: 1.2.8
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 1.2.0
+ pump: 3.0.0
+ readable-stream: 4.5.2
+ secure-json-parse: 2.7.0
+ sonic-boom: 3.8.1
+ strip-json-comments: 3.1.1
+
+ pino-std-serializers@6.2.2: {}
+
+ pino@8.16.1:
+ dependencies:
+ atomic-sleep: 1.0.0
+ fast-redact: 3.5.0
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 1.1.0
+ pino-std-serializers: 6.2.2
+ process-warning: 2.3.2
+ quick-format-unescaped: 4.0.4
+ real-require: 0.2.0
+ safe-stable-stringify: 2.5.0
+ sonic-boom: 3.8.1
+ thread-stream: 2.7.0
+
+ postgres@3.4.1: {}
+
+ process-warning@2.3.2: {}
+
+ process@0.11.10: {}
+
+ prom-client@15.0.0:
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ tdigest: 0.1.2
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ pump@3.0.0:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
+ punycode@2.3.1: {}
+
+ qs@6.11.0:
+ dependencies:
+ side-channel: 1.0.6
+
+ quick-format-unescaped@4.0.4: {}
+
+ randombytes@2.1.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.2:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ react-devtools-core@4.28.5:
+ dependencies:
+ shell-quote: 1.8.1
+ ws: 7.5.10
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ react-dom@18.3.1(react@18.2.0):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.2.0
+ scheduler: 0.23.2
+
+ react-is@16.13.1: {}
+
+ react-reconciler@0.26.2(react@18.2.0):
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react: 18.2.0
+ scheduler: 0.20.2
+
+ react@18.2.0:
+ dependencies:
+ loose-envify: 1.4.0
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readable-stream@4.5.2:
+ dependencies:
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ real-require@0.2.0: {}
+
+ require-directory@2.1.1: {}
+
+ rescript-envsafe@4.2.0(rescript-schema@8.0.0(rescript@11.1.0))(rescript@11.1.0):
+ dependencies:
+ rescript: 11.1.0
+ rescript-schema: 8.0.0(rescript@11.1.0)
+
+ rescript-express@0.4.1(express@4.19.2):
+ dependencies:
+ express: 4.19.2
+
+ rescript-schema@8.0.0(rescript@11.1.0):
+ dependencies:
+ rescript: 11.1.0
+
+ rescript@11.1.0: {}
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ rfdc@1.4.1: {}
+
+ safe-buffer@5.2.1: {}
+
+ safe-stable-stringify@2.5.0: {}
+
+ safer-buffer@2.1.2: {}
+
+ scheduler@0.20.2:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
+ secure-json-parse@2.7.0: {}
+
+ send@0.18.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serialize-javascript@6.0.0:
+ dependencies:
+ randombytes: 2.1.0
+
+ serve-static@1.15.0:
+ dependencies:
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.18.0
+ transitivePeerDependencies:
+ - supports-color
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+
+ setprototypeof@1.2.0: {}
+
+ shell-quote@1.8.1: {}
+
+ side-channel@1.0.6:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.2
+
+ signal-exit@3.0.7: {}
+
+ slice-ansi@3.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+
+ sonic-boom@3.8.1:
+ dependencies:
+ atomic-sleep: 1.0.0
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ split2@4.2.0: {}
+
+ stack-utils@2.0.6:
+ dependencies:
+ escape-string-regexp: 2.0.0
+
+ statuses@2.0.1: {}
+
+ string-similarity@4.0.4: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-bom@3.0.0:
+ optional: true
+
+ strip-json-comments@3.1.1: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ tdigest@0.1.2:
+ dependencies:
+ bintrees: 1.0.2
+
+ thread-stream@2.7.0:
+ dependencies:
+ real-require: 0.2.0
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ tr46@0.0.3: {}
+
+ ts-mocha@10.0.0(mocha@10.2.0):
+ dependencies:
+ mocha: 10.2.0
+ ts-node: 7.0.1
+ optionalDependencies:
+ tsconfig-paths: 3.15.0
+
+ ts-node@10.9.1(@types/node@20.8.8)(typescript@5.2.2):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 20.8.8
+ acorn: 8.12.1
+ acorn-walk: 8.3.3
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.2.2
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+
+ ts-node@7.0.1:
+ dependencies:
+ arrify: 1.0.1
+ buffer-from: 1.1.2
+ diff: 3.5.0
+ make-error: 1.3.6
+ minimist: 1.2.8
+ mkdirp: 0.5.6
+ source-map-support: 0.5.21
+ yn: 2.0.0
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+ optional: true
+
+ tslib@2.4.0: {}
+
+ type-detect@4.1.0: {}
+
+ type-fest@0.12.0: {}
+
+ type-fest@0.21.3: {}
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
+ typescript@5.2.2: {}
+
+ undici-types@5.25.3: {}
+
+ unpipe@1.0.0: {}
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ util-deprecate@1.0.2: {}
+
+ utils-merge@1.0.1: {}
+
+ v8-compile-cache-lib@3.0.1: {}
+
+ vary@1.1.2: {}
+
+ viem@1.16.6(typescript@5.2.2):
+ dependencies:
+ '@adraffy/ens-normalize': 1.9.4
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@scure/bip32': 1.3.2
+ '@scure/bip39': 1.2.1
+ abitype: 0.9.8(typescript@5.2.2)
+ isows: 1.0.3(ws@8.13.0)
+ ws: 8.13.0
+ optionalDependencies:
+ typescript: 5.2.2
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - zod
+
+ webidl-conversions@3.0.1: {}
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ widest-line@3.1.0:
+ dependencies:
+ string-width: 4.2.3
+
+ window-size@1.1.1:
+ dependencies:
+ define-property: 1.0.0
+ is-number: 3.0.0
+
+ workerpool@6.2.1: {}
+
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrappy@1.0.2: {}
+
+ ws@7.5.10: {}
+
+ ws@8.13.0: {}
+
+ ws@8.5.0: {}
+
+ y18n@5.0.8: {}
+
+ yargs-parser@20.2.4: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs-unparser@2.0.0:
+ dependencies:
+ camelcase: 6.3.0
+ decamelize: 4.0.0
+ flat: 5.0.2
+ is-plain-obj: 2.1.0
+
+ yargs@16.2.0:
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.1.2
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 20.2.4
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.2
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yn@2.0.0: {}
+
+ yn@3.1.1: {}
+
+ yocto-queue@0.1.0: {}
+
+ yoga-layout-prebuilt@1.10.0:
+ dependencies:
+ '@types/yoga-layout': 1.9.2
diff --git a/packages/indexer/pnpm-workspace.yaml b/packages/indexer/pnpm-workspace.yaml
new file mode 100644
index 0000000..8ace6fc
--- /dev/null
+++ b/packages/indexer/pnpm-workspace.yaml
@@ -0,0 +1,2 @@
+packages:
+ - ./*
diff --git a/packages/indexer/schema.graphql b/packages/indexer/schema.graphql
new file mode 100644
index 0000000..5a99ca1
--- /dev/null
+++ b/packages/indexer/schema.graphql
@@ -0,0 +1,37 @@
+enum Capital {
+ SOCIAL
+ MATERIAL
+ FINANCIAL
+ LIVING
+ INTELLECTUAL
+ EXPERIENTIAL
+ SPIRITUAL
+ CULTURAL
+ UNKNOWN
+}
+
+type Action {
+ id: Int!
+ ownerAddress: String! # Address
+ startTime: BigInt!
+ endTime: BigInt!
+ title: String!
+ instructions: String!
+ capitals: [Capital!]!
+ media: [String!]!
+ createdAt: Int!
+}
+
+type Garden {
+ id: ID! # Address
+ tokenAddress: String! # Address
+ tokenID: BigInt!
+ name: String!
+ description: String!
+ location: String!
+ bannerImage: String!
+ createdAt: Int!
+
+ gardeners: [String!]! # Address
+ operators: [String!]! # Address
+}
diff --git a/packages/indexer/src/EventHandlers.ts b/packages/indexer/src/EventHandlers.ts
new file mode 100644
index 0000000..4eeb531
--- /dev/null
+++ b/packages/indexer/src/EventHandlers.ts
@@ -0,0 +1,226 @@
+import {
+ ActionRegistry,
+ GardenToken,
+ GardenAccount,
+ Capital,
+ Action,
+ Garden,
+} from "generated";
+
+// Handler for the ActionRegistered event
+ActionRegistry.ActionRegistered.handler(async ({ event, context }) => {
+ // const actionId = event.params.actionUID.toString();
+ // // const capitals: Capital[] = event.params.action[4].map((capital) => {
+ // // const number = Number(capital);
+ // // if (number === 1) {
+ // // return "SOCIAL";
+ // // } else if (number === 2) {
+ // // return "MATERIAL";
+ // // } else if (number === 3) {
+ // // return "FINANCIAL";
+ // // } else if (number === 4) {
+ // // return "LIVING";
+ // // } else if (number === 5) {
+ // // return "INTELLECTUAL";
+ // // } else if (number === 6) {
+ // // return "SPIRITUAL";
+ // // } else if (number === 7) {
+ // // return "CULTURAL";
+ // // } else {
+ // // return "UNKNOWN";
+ // // }
+ // // });
+ // // // Update or create a new Action entity
+ // const actionEntity: Action = {
+ // id: actionId,
+ // ownerAddress: event.params.owner,
+ // startTime: event.params.action[0],
+ // endTime: event.params.action[1],
+ // title: event.params.action[2],
+ // instructions: event.params.action[3],
+ // capitals: [],
+ // media: event.params.action[5],
+ // createdAt: event.block.timestamp,
+ // };
+ // context.Action.set(actionEntity);
+});
+
+// Handler for the ActionStartTimeUpdated event
+ActionRegistry.ActionStartTimeUpdated.handler(async ({ event, context }) => {
+ const actionId = event.params.actionUID.toString();
+
+ const currentActionEntity = await context.Action.get(actionId);
+
+ if (currentActionEntity) {
+ // Clear the latestGreeting
+ context.Action.set({
+ ...currentActionEntity,
+ startTime: event.params.startTime,
+ });
+ }
+});
+
+// Handler for the ActionEndTimeUpdated event
+ActionRegistry.ActionEndTimeUpdated.handler(async ({ event, context }) => {
+ const actionId = event.params.actionUID.toString();
+
+ const currentActionEntity = await context.Action.get(actionId);
+
+ if (currentActionEntity) {
+ // Clear the latestGreeting
+ context.Action.set({
+ ...currentActionEntity,
+ endTime: event.params.endTime,
+ });
+ }
+});
+
+// Handler for the ActionTitleUpdated event
+ActionRegistry.ActionTitleUpdated.handler(async ({ event, context }) => {
+ const actionId = event.params.actionUID.toString();
+
+ const currentActionEntity = await context.Action.get(actionId);
+
+ if (currentActionEntity) {
+ // Clear the latestGreeting
+ context.Action.set({
+ ...currentActionEntity,
+ title: event.params.title,
+ });
+ }
+});
+
+// Handler for the ActionInstructionsUpdated event
+ActionRegistry.ActionInstructionsUpdated.handler(async ({ event, context }) => {
+ const actionId = event.params.actionUID.toString();
+
+ const currentActionEntity = await context.Action.get(actionId);
+
+ if (currentActionEntity) {
+ // Clear the latestGreeting
+ context.Action.set({
+ ...currentActionEntity,
+ instructions: event.params.instructions,
+ });
+ }
+});
+
+// Handler for the ActionMediaUpdated event
+ActionRegistry.ActionMediaUpdated.handler(async ({ event, context }) => {
+ const actionId = event.params.actionUID.toString();
+
+ const currentActionEntity = await context.Action.get(actionId);
+
+ if (currentActionEntity) {
+ // Clear the latestGreeting
+ context.Action.set({
+ ...currentActionEntity,
+ media: event.params.media,
+ });
+ }
+});
+
+// Handler for the GardenMinted event
+GardenToken.GardenMinted.handler(async ({ event, context }) => {
+ // create a new Garden entity
+ const gardenEntity: Garden = {
+ id: event.params.account,
+ name: "",
+ description: "",
+ bannerImage: "",
+ location: "",
+ gardeners: [],
+ operators: [],
+ tokenAddress: event.srcAddress,
+ tokenID: event.params.tokenId,
+ createdAt: event.block.timestamp,
+ };
+
+ context.Garden.set(gardenEntity);
+});
+
+GardenToken.GardenMinted.contractRegister(({ event, context }) => {
+ context.addGardenAccount(event.params.account);
+});
+
+// Handler for the GardenNameUpdated event
+GardenAccount.NameUpdated.handler(async ({ event, context }) => {
+ const gardenAccount = event.srcAddress;
+ const gardenAccountEntity = await context.Garden.get(gardenAccount);
+
+ if (gardenAccountEntity) {
+ context.Garden.set({
+ ...gardenAccountEntity,
+ name: event.params.newName,
+ });
+ }
+});
+
+// Handler for the GardenDescriptionUpdated event
+GardenAccount.DescriptionUpdated.handler(async ({ event, context }) => {
+ const gardenAccount = event.srcAddress;
+ const gardenAccountEntity = await context.Garden.get(gardenAccount);
+
+ if (gardenAccountEntity) {
+ context.Garden.set({
+ ...gardenAccountEntity,
+ description: event.params.newDescription,
+ });
+ }
+});
+
+// Handler for the GardenerAdded event
+GardenAccount.GardenerAdded.handler(async ({ event, context }) => {
+ const gardenAccount = event.srcAddress;
+ const gardenAccountEntity = await context.Garden.get(gardenAccount);
+
+ if (gardenAccountEntity) {
+ context.Garden.set({
+ ...gardenAccountEntity,
+ gardeners: [...gardenAccountEntity.gardeners, event.params.gardener],
+ });
+ }
+});
+
+// Handler for the GardenerRemoved event
+GardenAccount.GardenerRemoved.handler(async ({ event, context }) => {
+ const gardenAccount = event.srcAddress;
+ const gardenAccountEntity = await context.Garden.get(gardenAccount);
+
+ if (gardenAccountEntity) {
+ context.Garden.set({
+ ...gardenAccountEntity,
+ gardeners: gardenAccountEntity.gardeners.filter(
+ (g) => g !== event.params.gardener
+ ),
+ });
+ }
+});
+
+// Handler for the GardenOperatorAdded event
+GardenAccount.GardenOperatorAdded.handler(async ({ event, context }) => {
+ const gardenAccount = event.srcAddress;
+ const gardenAccountEntity = await context.Garden.get(gardenAccount);
+
+ if (gardenAccountEntity) {
+ context.Garden.set({
+ ...gardenAccountEntity,
+ operators: [...gardenAccountEntity.operators, event.params.operator],
+ });
+ }
+});
+
+// Handler for the GardenAccount GardenOperatorRemoved event
+GardenAccount.GardenOperatorRemoved.handler(async ({ event, context }) => {
+ const gardenAccount = event.srcAddress;
+ const gardenAccountEntity = await context.Garden.get(gardenAccount);
+
+ if (gardenAccountEntity) {
+ context.Garden.set({
+ ...gardenAccountEntity,
+ operators: gardenAccountEntity.operators.filter(
+ (g) => g !== event.params.operator
+ ),
+ });
+ }
+});
diff --git a/packages/indexer/test/test.ts b/packages/indexer/test/test.ts
new file mode 100644
index 0000000..6dee830
--- /dev/null
+++ b/packages/indexer/test/test.ts
@@ -0,0 +1,120 @@
+import assert from "assert";
+import { TestHelpers, User } from "generated";
+const { MockDb, Greeter, Addresses } = TestHelpers;
+
+describe("Greeter template tests", () => {
+ it("A NewGreeting event creates a User entity", async () => {
+ // Initializing the mock database
+ const mockDbInitial = MockDb.createMockDb();
+
+ // Initializing values for mock event
+ const userAddress = Addresses.defaultAddress;
+ const greeting = "Hi there";
+
+ // Creating a mock event
+ const mockNewGreetingEvent = Greeter.NewGreeting.createMockEvent({
+ greeting: greeting,
+ user: userAddress,
+ });
+
+ // Processing the mock event on the mock database
+ const updatedMockDb = await Greeter.NewGreeting.processEvent({
+ event: mockNewGreetingEvent,
+ mockDb: mockDbInitial,
+ });
+
+ // Expected entity that should be created
+ const expectedUserEntity: User = {
+ id: userAddress,
+ latestGreeting: greeting,
+ numberOfGreetings: 1,
+ greetings: [greeting],
+ };
+
+ // Getting the entity from the mock database
+ const actualUserEntity = updatedMockDb.entities.User.get(userAddress);
+
+ // Asserting that the entity in the mock database is the same as the expected entity
+ assert.deepEqual(expectedUserEntity, actualUserEntity);
+ });
+
+ it("2 Greetings from the same users results in that user having a greeter count of 2", async () => {
+ // Initializing the mock database
+ const mockDbInitial = MockDb.createMockDb();
+ // Initializing values for mock event
+ const userAddress = Addresses.defaultAddress;
+ const greeting = "Hi there";
+ const greetingAgain = "Oh hello again";
+
+ // Creating a mock event
+ const mockNewGreetingEvent = Greeter.NewGreeting.createMockEvent({
+ greeting: greeting,
+ user: userAddress,
+ });
+
+ // Creating a mock event
+ const mockNewGreetingEvent2 = Greeter.NewGreeting.createMockEvent({
+ greeting: greetingAgain,
+ user: userAddress,
+ });
+
+ // Processing the mock event on the mock database
+ const updatedMockDb = await Greeter.NewGreeting.processEvent({
+ event: mockNewGreetingEvent,
+ mockDb: mockDbInitial,
+ });
+
+ // Processing the mock event on the updated mock database
+ const updatedMockDb2 = await Greeter.NewGreeting.processEvent({
+ event: mockNewGreetingEvent2,
+ mockDb: updatedMockDb,
+ });
+
+ // Getting the entity from the mock database
+ const actualUserEntity = updatedMockDb2.entities.User.get(userAddress);
+
+ // Asserting that the field value of the entity in the mock database is the same as the expected field value
+ assert.equal(2, actualUserEntity?.numberOfGreetings);
+ });
+
+ it("2 Greetings from the same users results in the latest greeting being the greeting from the second event", async () => {
+ // Initializing the mock database
+ const mockDbInitial = MockDb.createMockDb();
+ // Initializing values for mock event
+ const userAddress = Addresses.defaultAddress;
+ const greeting = "Hi there";
+ const greetingAgain = "Oh hello again";
+
+ // Creating a mock event
+ const mockNewGreetingEvent = Greeter.NewGreeting.createMockEvent({
+ greeting: greeting,
+ user: userAddress,
+ });
+
+ // Creating a mock event
+ const mockNewGreetingEvent2 = Greeter.NewGreeting.createMockEvent({
+ greeting: greetingAgain,
+ user: userAddress,
+ });
+
+ // Processing the mock event on the mock database
+ const updatedMockDb = await Greeter.NewGreeting.processEvent({
+ event: mockNewGreetingEvent,
+ mockDb: mockDbInitial,
+ });
+
+ // Processing the mock event on the updated mock database
+ const updatedMockDb2 = await Greeter.NewGreeting.processEvent({
+ event: mockNewGreetingEvent2,
+ mockDb: updatedMockDb,
+ });
+
+ // Getting the entity from the mock database
+ const actualUserEntity = updatedMockDb2.entities.User.get(userAddress);
+
+ const expectedGreeting: string = greetingAgain;
+
+ // Asserting that the field value of the entity in the mock database is the same as the expected field value
+ assert.equal(expectedGreeting, actualUserEntity?.latestGreeting);
+ });
+});
diff --git a/packages/indexer/tsconfig.json b/packages/indexer/tsconfig.json
new file mode 100644
index 0000000..2302413
--- /dev/null
+++ b/packages/indexer/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "target": "es2020", //required for use with BigInt types
+ "lib": [
+ "es2020"
+ ],
+ "allowJs": true,
+ "checkJs": false,
+ "outDir": "build",
+ "strict": true,
+ "noImplicitAny": true,
+ "esModuleInterop": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "module": "CommonJS"
+ },
+ "include": [
+ "src",
+ "test"
+ ]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 61d02d3..47962b7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,146 +8,73 @@ importers:
.:
dependencies:
+ '@ethereum-attestation-service/eas-sdk':
+ specifier: ^2.5.0
+ version: 2.5.0(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
dotenv:
specifier: 16.4.5
version: 16.4.5
ethers:
specifier: ^6.13.2
- version: 6.13.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ version: 6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
viem:
specifier: ^2.19.6
- version: 2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
+ version: 2.19.6(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
devDependencies:
+ '@types/node':
+ specifier: 22.5.1
+ version: 22.5.1
concurrently:
specifier: 8.2.2
version: 8.2.2
prettier:
specifier: ^3.3.3
version: 3.3.3
- typescript:
- specifier: ^5.5.4
- version: 5.5.4
wait-port:
specifier: 1.1.0
version: 1.1.0
- packages/app:
- dependencies:
- '@ethereum-attestation-service/eas-sdk':
- specifier: 2.5.0
- version: 2.5.0(bufferutil@4.0.7)(ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
- '@hookform/resolvers':
- specifier: ^3.3.4
- version: 3.3.4(react-hook-form@7.51.0(react@18.2.0))
- '@privy-io/react-auth':
- specifier: 1.77.0
- version: 1.77.0(@babel/core@7.25.2)(@types/react@18.3.3)(bufferutil@4.0.7)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.22.4)
- '@xstate/react':
- specifier: 3.2.2
- version: 3.2.2(@types/react@18.3.3)(react@18.2.0)(xstate@4.38.2)
- graphql:
- specifier: 16.9.0
- version: 16.9.0
- lucide-react:
- specifier: ^0.424.0
- version: 0.424.0(react@18.2.0)
- permissionless:
- specifier: 0.1.44
- version: 0.1.44(viem@2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.22.4))
- react:
- specifier: ^18.2.0
- version: 18.2.0
- react-dom:
- specifier: ^18.2.0
- version: 18.2.0(react@18.2.0)
- react-dropzone:
- specifier: 14.2.3
- version: 14.2.3(react@18.2.0)
- react-hook-form:
- specifier: ^7.51.0
- version: 7.51.0(react@18.2.0)
- react-hot-toast:
- specifier: 2.4.1
- version: 2.4.1(csstype@3.1.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
- react-router-dom:
- specifier: 6.22.2
- version: 6.22.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
- tailwindcss-animate:
- specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)))
- xstate:
- specifier: 4.38.2
- version: 4.38.2
- zod:
- specifier: ^3.22.4
- version: 3.22.4
- devDependencies:
- '@types/node':
- specifier: 22.1.0
- version: 22.1.0
- '@types/react':
- specifier: ^18.3.3
- version: 18.3.3
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@typescript-eslint/eslint-plugin':
- specifier: ^8.0.1
- version: 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
- '@typescript-eslint/parser':
- specifier: ^8.0.1
- version: 8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
- '@vitejs/plugin-react':
- specifier: ^4.3.1
- version: 4.3.1(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0))
- autoprefixer:
- specifier: 10.4.20
- version: 10.4.20(postcss@8.4.41)
- eslint:
- specifier: ^9.8.0
- version: 9.9.0(jiti@1.21.0)
- eslint-plugin-react-hooks:
- specifier: ^4.6.0
- version: 4.6.0(eslint@9.9.0(jiti@1.21.0))
- eslint-plugin-react-refresh:
- specifier: ^0.4.9
- version: 0.4.9(eslint@9.9.0(jiti@1.21.0))
- postcss:
- specifier: 8.4.41
- version: 8.4.41
- preline:
- specifier: 2.4.1
- version: 2.4.1
- tailwindcss:
- specifier: 3.4.1
- version: 3.4.1(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))
- vite:
- specifier: ^5.4.0
- version: 5.4.0(@types/node@22.1.0)(terser@5.21.0)
- vite-plugin-mkcert:
- specifier: 1.17.5
- version: 1.17.5(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0))
- vite-plugin-pwa:
- specifier: 0.20.1
- version: 0.20.1(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0)
- vite-plugin-svgr:
- specifier: 4.2.0
- version: 4.2.0(rollup@2.79.1)(typescript@5.5.4)(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0))
-
packages/client:
dependencies:
+ '@hookform/resolvers':
+ specifier: 3.9.0
+ version: 3.9.0(react-hook-form@7.53.0(react@18.3.1))
+ '@phosphor-icons/react':
+ specifier: 2.1.7
+ version: 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@privy-io/react-auth':
specifier: ^1.80.0
- version: 1.80.0(@babel/core@7.25.2)(@types/react@18.3.3)(bufferutil@4.0.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
- lucide-react:
- specifier: 0.436.0
- version: 0.436.0(react@18.3.1)
+ version: 1.80.0(@babel/core@7.25.2)(@types/react@18.3.3)(bufferutil@4.0.8)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
+ '@privy-io/server-auth':
+ specifier: 1.11.1
+ version: 1.11.1(encoding@0.1.13)
+ '@remixicon/react':
+ specifier: ^4.2.0
+ version: 4.2.0(react@18.3.1)
+ '@tanstack/react-query':
+ specifier: ^5.52.2
+ version: 5.52.2(react@18.3.1)
+ '@urql/core':
+ specifier: ^5.0.4
+ version: 5.0.6(graphql@16.9.0)
+ '@vercel/functions':
+ specifier: 1.4.1
+ version: 1.4.1
+ gql.tada:
+ specifier: ^1.8.2
+ version: 1.8.6(graphql@16.9.0)(typescript@5.5.4)
permissionless:
specifier: ^0.1.45
- version: 0.1.45(viem@2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8))
+ version: 0.1.45(viem@2.19.6(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8))
+ pinata:
+ specifier: ^0.4.0
+ version: 0.4.0
react:
specifier: ^18.3.1
version: 18.3.1
+ react-device-frameset:
+ specifier: 1.3.4
+ version: 1.3.4(react@18.3.1)
react-dom:
specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
@@ -155,36 +82,60 @@ importers:
specifier: ^7.53.0
version: 7.53.0(react@18.3.1)
react-hot-toast:
- specifier: 2.4.1
+ specifier: ^2.4.1
version: 2.4.1(csstype@3.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react-intl:
+ specifier: 6.6.8
+ version: 6.6.8(react@18.3.1)(typescript@5.5.4)
react-router-dom:
- specifier: 6.26.1
+ specifier: ^6.26.1
version: 6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- xstate:
- specifier: ^5.17.4
- version: 5.17.4
+ react-select:
+ specifier: 5.8.0
+ version: 5.8.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react-tailwindcss-datepicker:
+ specifier: ^1.7.2
+ version: 1.7.2(dayjs@1.11.13)(react@18.3.1)
zod:
specifier: ^3.23.8
version: 3.23.8
devDependencies:
+ '@0no-co/graphqlsp':
+ specifier: ^1.12.12
+ version: 1.12.13(graphql@16.9.0)(typescript@5.5.4)
'@eslint/js':
specifier: ^9.9.0
version: 9.9.0
+ '@tailwindcss/forms':
+ specifier: ^0.5.7
+ version: 0.5.7(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)))
+ '@tailwindcss/typography':
+ specifier: 0.5.15
+ version: 0.5.15(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)))
+ '@tanstack/eslint-plugin-query':
+ specifier: 5.52.0
+ version: 5.52.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
'@types/react':
specifier: ^18.3.3
version: 18.3.3
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
+ '@vercel/node':
+ specifier: 3.2.10
+ version: 3.2.10(@swc/core@1.7.11)(encoding@0.1.13)
'@vitejs/plugin-react':
specifier: ^4.3.1
- version: 4.3.1(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0))
- '@xstate/react':
- specifier: ^4.1.1
- version: 4.1.1(@types/react@18.3.3)(react@18.3.1)(xstate@5.17.4)
+ version: 4.3.1(vite@5.4.2(@types/node@16.18.11)(terser@5.21.0))
autoprefixer:
specifier: ^10.4.20
version: 10.4.20(postcss@8.4.41)
+ daisyui:
+ specifier: 4.12.10
+ version: 4.12.10(postcss@8.4.41)
+ dotenv-expand:
+ specifier: 11.0.6
+ version: 11.0.6
eslint:
specifier: ^9.9.0
version: 9.9.0(jiti@1.21.0)
@@ -202,31 +153,31 @@ importers:
version: 8.4.41
tailwindcss:
specifier: ^3.4.10
- version: 3.4.10(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))
+ version: 3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4))
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)))
+ version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)))
+ typescript:
+ specifier: ^5.5.4
+ version: 5.5.4
typescript-eslint:
specifier: ^8.0.1
version: 8.2.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
vite:
specifier: ^5.4.1
- version: 5.4.2(@types/node@22.1.0)(terser@5.21.0)
+ version: 5.4.2(@types/node@16.18.11)(terser@5.21.0)
vite-plugin-mkcert:
specifier: ^1.17.5
- version: 1.17.5(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0))
+ version: 1.17.5(vite@5.4.2(@types/node@16.18.11)(terser@5.21.0))
vite-plugin-pwa:
specifier: ^0.20.1
- version: 0.20.1(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0)
- vite-plugin-svgr:
- specifier: ^4.2.0
- version: 4.2.0(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0))
+ version: 0.20.1(vite@5.4.2(@types/node@16.18.11)(terser@5.21.0))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0)
packages/contracts:
dependencies:
'@ethereum-attestation-service/eas-contracts':
specifier: 1.7.1
- version: 1.7.1(bufferutil@4.0.7)(ts-node@10.9.2(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
+ version: 1.7.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
'@openzeppelin/contracts-upgradeable':
specifier: 4.9.6
version: 4.9.6
@@ -254,16 +205,13 @@ importers:
version: 5.0.3(typescript@5.5.4)
solidity-coverage:
specifier: ^0.8.12
- version: 0.8.12(hardhat@2.22.4(bufferutil@4.0.7)(ts-node@10.9.2(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))
+ version: 0.8.12(hardhat@2.22.4(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))
toml:
specifier: ~3.0.0
version: 3.0.0
packages/eas:
dependencies:
- '@ethereum-attestation-service/eas-sdk':
- specifier: ^2.5.0
- version: 2.5.0(bufferutil@4.0.7)(ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
commander:
specifier: ^12.1.0
version: 12.1.0
@@ -282,10 +230,62 @@ importers:
version: 0.5.12
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4)
+ version: 10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.5.1)(typescript@5.5.4)
+
+ packages/indexer:
+ dependencies:
+ chai:
+ specifier: 4.3.10
+ version: 4.3.10
+ envio:
+ specifier: 2.1.0
+ version: 2.1.0
+ ethers:
+ specifier: 6.8.0
+ version: 6.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ generated:
+ specifier: ./generated
+ version: link:generated
+ devDependencies:
+ '@types/chai':
+ specifier: ^4.3.11
+ version: 4.3.19
+ '@types/mocha':
+ specifier: 10.0.6
+ version: 10.0.6
+ '@types/node':
+ specifier: 20.8.8
+ version: 20.8.8
+ mocha:
+ specifier: 10.2.0
+ version: 10.2.0
+ ts-mocha:
+ specifier: ^10.0.0
+ version: 10.0.0(mocha@10.2.0)
+ ts-node:
+ specifier: 10.9.1
+ version: 10.9.1(@swc/core@1.7.11)(@types/node@20.8.8)(typescript@5.2.2)
+ typescript:
+ specifier: 5.2.2
+ version: 5.2.2
packages:
+ '@0no-co/graphql.web@1.0.8':
+ resolution: {integrity: sha512-8BG6woLtDMvXB9Ajb/uE+Zr/U7y4qJ3upXi0JQHZmsKUJa7HjF/gFvmL2f3/mSmfZoQGRr9VoY97LCX2uaFMzA==}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
+ peerDependenciesMeta:
+ graphql:
+ optional: true
+
+ '@0no-co/graphqlsp@1.12.13':
+ resolution: {integrity: sha512-/C9yXft+mq+VdoniBgWvA+iK5X6cB50KKThg1je4bFIhhBNccLJlNbWFxOglXseKuisq+h5oIY4ELTVKs6GhRQ==}
+ peerDependencies:
+ graphql: ^15.5.0 || ^16.0.0 || ^17.0.0
+ typescript: ^5.0.0
+
'@aashutoshrathi/word-wrap@1.2.6':
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'}
@@ -962,6 +962,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@chainsafe/is-ip@2.0.2':
+ resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==}
+
+ '@chainsafe/netmask@2.0.0':
+ resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==}
+
'@coinbase/wallet-sdk@4.0.3':
resolution: {integrity: sha512-y/OGEjlvosikjfB+wk+4CVb9OxD1ob9cidEBLI5h8Hxaf/Qoob2XoVT1uvhtAzBx34KpGYSd+alKvh/GCRre4Q==}
@@ -969,18 +975,79 @@ packages:
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
+ '@edge-runtime/format@2.2.1':
+ resolution: {integrity: sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/node-utils@2.3.0':
+ resolution: {integrity: sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/ponyfill@2.4.2':
+ resolution: {integrity: sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/primitives@4.1.0':
+ resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/vm@3.2.0':
+ resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==}
+ engines: {node: '>=16'}
+
+ '@emotion/babel-plugin@11.12.0':
+ resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==}
+
+ '@emotion/cache@11.13.1':
+ resolution: {integrity: sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==}
+
+ '@emotion/hash@0.9.2':
+ resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==}
+
'@emotion/is-prop-valid@1.2.2':
resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==}
'@emotion/memoize@0.8.1':
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
+ '@emotion/memoize@0.9.0':
+ resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==}
+
+ '@emotion/react@11.13.3':
+ resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@emotion/serialize@1.3.1':
+ resolution: {integrity: sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==}
+
+ '@emotion/sheet@1.4.0':
+ resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==}
+
'@emotion/stylis@0.8.5':
resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==}
+ '@emotion/unitless@0.10.0':
+ resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==}
+
'@emotion/unitless@0.7.5':
resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
+ '@emotion/use-insertion-effect-with-fallbacks@1.1.0':
+ resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==}
+ peerDependencies:
+ react: '>=16.8.0'
+
+ '@emotion/utils@1.4.0':
+ resolution: {integrity: sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==}
+
+ '@emotion/weak-memoize@0.4.0':
+ resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==}
+
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
@@ -1264,6 +1331,64 @@ packages:
resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==}
engines: {node: '>=14'}
+ '@floating-ui/core@1.6.7':
+ resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
+
+ '@floating-ui/dom@1.6.10':
+ resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==}
+
+ '@floating-ui/utils@0.2.7':
+ resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
+
+ '@formatjs/ecma402-abstract@2.0.0':
+ resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==}
+
+ '@formatjs/fast-memoize@2.2.0':
+ resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==}
+
+ '@formatjs/icu-messageformat-parser@2.7.8':
+ resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==}
+
+ '@formatjs/icu-skeleton-parser@1.8.2':
+ resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==}
+
+ '@formatjs/intl-displaynames@6.6.8':
+ resolution: {integrity: sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==}
+
+ '@formatjs/intl-listformat@7.5.7':
+ resolution: {integrity: sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==}
+
+ '@formatjs/intl-localematcher@0.5.4':
+ resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
+
+ '@formatjs/intl@2.10.4':
+ resolution: {integrity: sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==}
+ peerDependencies:
+ typescript: ^4.7 || 5
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@gql.tada/cli-utils@1.6.1':
+ resolution: {integrity: sha512-ZfYa5+rbK51c6ociTUL66qW1lyB9dXoAKNZMEAp2pWgPp16qZVBwopUaYxSKq4BML9eSiv0ocoJ7H6VW51ud7w==}
+ peerDependencies:
+ '@0no-co/graphqlsp': ^1.12.13
+ '@gql.tada/svelte-support': 1.0.1
+ '@gql.tada/vue-support': 1.0.1
+ graphql: ^15.5.0 || ^16.0.0 || ^17.0.0
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ '@gql.tada/svelte-support':
+ optional: true
+ '@gql.tada/vue-support':
+ optional: true
+
+ '@gql.tada/internal@1.0.7':
+ resolution: {integrity: sha512-mI/7l7If7YR4rBlgnkXihh1qxD7eO41o8nf5ZYjwYl4s6FGFQFZY1E1reV3AgRy8tDXbiuMz1bIVLpnxPXxKIQ==}
+ peerDependencies:
+ graphql: ^15.5.0 || ^16.0.0 || ^17.0.0
+ typescript: ^5.0.0
+
'@headlessui/react@1.7.18':
resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==}
engines: {node: '>=10'}
@@ -1276,8 +1401,8 @@ packages:
peerDependencies:
react: '>= 16'
- '@hookform/resolvers@3.3.4':
- resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==}
+ '@hookform/resolvers@3.9.0':
+ resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==}
peerDependencies:
react-hook-form: ^7.0.0
@@ -1324,12 +1449,22 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+ '@leichtgewicht/ip-codec@2.0.5':
+ resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==}
+
+ '@libp2p/interface@1.7.0':
+ resolution: {integrity: sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==}
+
'@lit-labs/ssr-dom-shim@1.2.0':
resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==}
'@lit/reactive-element@1.6.3':
resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==}
+ '@mapbox/node-pre-gyp@1.0.11':
+ resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
+ hasBin: true
+
'@marsidev/react-turnstile@0.4.1':
resolution: {integrity: sha512-uZusUW9mPr0csWpls8bApe5iuRK0YK7H1PCKqfM4djW3OA9GB9rU68irjk7xRO8qlHyj0aDTeVu9tTLPExBO4Q==}
peerDependencies:
@@ -1381,6 +1516,15 @@ packages:
resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==}
deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion
+ '@multiformats/dns@1.0.6':
+ resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==}
+
+ '@multiformats/mafmt@12.1.6':
+ resolution: {integrity: sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==}
+
+ '@multiformats/multiaddr@12.3.0':
+ resolution: {integrity: sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==}
+
'@noble/curves@1.1.0':
resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==}
@@ -1686,6 +1830,13 @@ packages:
resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==}
engines: {node: '>= 10.0.0'}
+ '@phosphor-icons/react@2.1.7':
+ resolution: {integrity: sha512-g2e2eVAn1XG2a+LI09QU3IORLhnFNAFkNbo2iwbX6NOKSLOwvEMmTa7CgOzEbgNWR47z8i8kwjdvYZ5fkGx1mQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: '>= 16.8'
+ react-dom: '>= 16.8'
+
'@pnpm/config.env-replace@1.1.0':
resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
engines: {node: '>=12.22.0'}
@@ -1698,47 +1849,35 @@ packages:
resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==}
engines: {node: '>=12'}
- '@popperjs/core@2.11.8':
- resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
-
'@privy-io/api-base@1.2.2':
resolution: {integrity: sha512-z9G7Kd/Mz/t8Frl6DTIzGHcu0ITF+eG4BHw+XzExuxmTH/iljDJWQwGoiosbu2k2T1p4OEOqZhaxhgRTA6CeaA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- '@privy-io/js-sdk-core@0.26.0':
- resolution: {integrity: sha512-pEdyi7VpuxSn0YaN3SpmiZcQ5N/YAGcIfpHKJ1kOm29DAwuhOtqCVEWsb+GynVYJjt/Ec2KKgPTBkQjF+JsWbQ==}
-
'@privy-io/js-sdk-core@0.26.2':
resolution: {integrity: sha512-a22YR0zDXFIXgreIcYUEvryYWoS42wBN7XlX6MHiyWRySMOvXVenAMazwZM7TePcOVeYLImpSxe3quQT0tICQA==}
- '@privy-io/public-api@2.8.3':
- resolution: {integrity: sha512-CYmITfRNnAOpbUaRE9ehPPGHV3hDQuI4soOYJdmFra568QWGmhFRCu7Q+7vpezq/i3dr5eLk9ljZuYHw9ZwxWg==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
-
'@privy-io/public-api@2.8.5':
resolution: {integrity: sha512-GEXm5i1MPeB4P1u5W2L9sWBk3CyTwQ63RBn42qj6/KyvdC+3tNXGXP+lW7bHoYcXAKv5RcCGrszjj7zfmopNWQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- '@privy-io/react-auth@1.77.0':
- resolution: {integrity: sha512-EbrRZhstEHAMJVH7ilpLoYJW1ZtiMPmEZUrjPX7+rEa0ecwyLpyCGfRG/9/Wqj5l74gRSyIJEtS2CQDCMDm4sg==}
- peerDependencies:
- react: ^18
- react-dom: ^18
-
'@privy-io/react-auth@1.80.0':
resolution: {integrity: sha512-b7JqLFv/g/Xy+e2FND1Xx48lCpa/e5hEjlMMLaOuKkLN/Rw3H9DneNtf8ee6KhS6VAf+A2lvTNU98MYjgxpZqQ==}
peerDependencies:
react: ^18
react-dom: ^18
- '@remix-run/router@1.15.2':
- resolution: {integrity: sha512-+Rnav+CaoTE5QJc4Jcwh5toUpnVLKYbpU6Ys0zqbakqbaLQHeglLVHPfxOiQqdNmUy5C2lXz5dwC6tQNX2JW2Q==}
- engines: {node: '>=14.0.0'}
+ '@privy-io/server-auth@1.11.1':
+ resolution: {integrity: sha512-ITVwC+Q+ioRX0TJfdETD9Z3OOZe4HP1cAffS5Ws9RQqNlfGXBxrn5BlQxOljw2dwOBSFyOD3/ek6npWN0WlJGA==}
'@remix-run/router@1.19.1':
resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==}
engines: {node: '>=14.0.0'}
+ '@remixicon/react@4.2.0':
+ resolution: {integrity: sha512-eGhKpZ88OU0qkcY9pJu6khBmItDV82nU130E6C68yc+FbljueHlUYy/4CrJsmf860RIDMay2Rpzl27OSJ81miw==}
+ peerDependencies:
+ react: '>=18.2.0'
+
'@rollup/plugin-babel@5.3.1':
resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
engines: {node: '>= 10.0.0'}
@@ -1767,14 +1906,9 @@ packages:
peerDependencies:
rollup: ^1.20.0||^2.0.0
- '@rollup/pluginutils@5.0.5':
- resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
+ '@rollup/pluginutils@4.2.1':
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
'@rollup/rollup-android-arm-eabi@4.20.0':
resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==}
@@ -1921,6 +2055,9 @@ packages:
'@stablelib/aead@1.0.1':
resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==}
+ '@stablelib/base64@1.0.1':
+ resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==}
+
'@stablelib/binary@1.0.1':
resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==}
@@ -1975,74 +2112,6 @@ packages:
'@surma/rollup-plugin-off-main-thread@2.2.3':
resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==}
- '@svgr/babel-plugin-add-jsx-attribute@8.0.0':
- resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-plugin-remove-jsx-attribute@8.0.0':
- resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0':
- resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0':
- resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-plugin-svg-dynamic-title@8.0.0':
- resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-plugin-svg-em-dimensions@8.0.0':
- resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-plugin-transform-react-native-svg@8.1.0':
- resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-plugin-transform-svg-component@8.0.0':
- resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==}
- engines: {node: '>=12'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/babel-preset@8.1.0':
- resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==}
- engines: {node: '>=14'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@svgr/core@8.1.0':
- resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==}
- engines: {node: '>=14'}
-
- '@svgr/hast-util-to-babel-ast@8.0.0':
- resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==}
- engines: {node: '>=14'}
-
- '@svgr/plugin-jsx@8.1.0':
- resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==}
- engines: {node: '>=14'}
- peerDependencies:
- '@svgr/core': '*'
-
'@swc/core-darwin-arm64@1.7.11':
resolution: {integrity: sha512-HRQv4qIeMBPThZ6Y/4yYW52rGsS6yrpusvuxLGyoFo45Y0y12/V2yXkOIA/0HIQyrqoUAxn1k4zQXpPaPNCmnw==}
engines: {node: '>=10'}
@@ -2125,6 +2194,29 @@ packages:
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
engines: {node: '>=14.16'}
+ '@tailwindcss/forms@0.5.7':
+ resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
+
+ '@tailwindcss/typography@0.5.15':
+ resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20'
+
+ '@tanstack/eslint-plugin-query@5.52.0':
+ resolution: {integrity: sha512-i02fOM3TRURI46AswPNlKb4Gwu+/mAPssI+pVu0AifA7/qzOJRgco17vdqjq/VgChKLLIltd9/KI4MCJFFfWEw==}
+ peerDependencies:
+ eslint: ^8 || ^9
+
+ '@tanstack/query-core@5.52.2':
+ resolution: {integrity: sha512-9vvbFecK4A0nDnrc/ks41e3UHONF1DAnGz8Tgbxkl59QcvKWmc0ewhYuIKRh8NC4ja5LTHT9EH16KHbn2AIYWA==}
+
+ '@tanstack/react-query@5.52.2':
+ resolution: {integrity: sha512-d4OwmobpP+6+SvuAxW1RzAY95Pv87Gu+0GjtErzFOUXo+n0FGcwxKvzhswCsXKxsgnAr3bU2eJ2u+GXQAutkCQ==}
+ peerDependencies:
+ react: ^18 || ^19
+
'@tanstack/react-virtual@3.1.3':
resolution: {integrity: sha512-YCzcbF/Ws/uZ0q3Z6fagH+JVhx4JLvbSflgldMgLsuvB8aXjZLLb3HvrEVxY480F9wFlBiXlvQxOyXb5ENPrNA==}
peerDependencies:
@@ -2134,6 +2226,9 @@ packages:
'@tanstack/virtual-core@3.1.3':
resolution: {integrity: sha512-Y5B4EYyv1j9V8LzeAoOVeTg0LI7Fo5InYKgAjkY1Pu9GjtUwX/EKxNcU7ng3sKr99WEf+bPTcktAeybyMOYo+g==}
+ '@ts-morph/common@0.11.1':
+ resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==}
+
'@tsconfig/node10@1.0.11':
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
@@ -2164,9 +2259,15 @@ packages:
'@types/bn.js@5.1.2':
resolution: {integrity: sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==}
+ '@types/chai@4.3.19':
+ resolution: {integrity: sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==}
+
'@types/debug@4.1.9':
resolution: {integrity: sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==}
+ '@types/dns-packet@5.6.5':
+ resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==}
+
'@types/estree@0.0.39':
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
@@ -2176,26 +2277,47 @@ packages:
'@types/glob@7.2.0':
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+ '@types/hoist-non-react-statics@3.3.5':
+ resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==}
+
'@types/http-cache-semantics@4.0.4':
resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/json5@0.0.29':
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
'@types/lru-cache@5.1.1':
resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==}
'@types/minimatch@5.1.2':
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+ '@types/mocha@10.0.6':
+ resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==}
+
'@types/ms@0.7.32':
resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==}
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+ '@types/node@16.18.11':
+ resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==}
+
'@types/node@18.15.13':
resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==}
- '@types/node@22.1.0':
- resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==}
+ '@types/node@20.8.8':
+ resolution: {integrity: sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==}
+
+ '@types/node@22.5.1':
+ resolution: {integrity: sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==}
+
+ '@types/parse-json@4.0.2':
+ resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
'@types/pbkdf2@3.1.0':
resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==}
@@ -2212,6 +2334,9 @@ packages:
'@types/react-dom@18.3.0':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+ '@types/react-transition-group@4.4.11':
+ resolution: {integrity: sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==}
+
'@types/react@18.3.3':
resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
@@ -2224,17 +2349,6 @@ packages:
'@types/trusted-types@2.0.4':
resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==}
- '@typescript-eslint/eslint-plugin@8.1.0':
- resolution: {integrity: sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
- eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
'@typescript-eslint/eslint-plugin@8.2.0':
resolution: {integrity: sha512-02tJIs655em7fvt9gps/+4k4OsKULYGtLBPJfOsmOq1+3cdClYiF0+d6mHu6qDnTcg88wJBkcPLpQhq7FyDz0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2246,16 +2360,6 @@ packages:
typescript:
optional: true
- '@typescript-eslint/parser@8.1.0':
- resolution: {integrity: sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
'@typescript-eslint/parser@8.2.0':
resolution: {integrity: sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2266,23 +2370,14 @@ packages:
typescript:
optional: true
- '@typescript-eslint/scope-manager@8.1.0':
- resolution: {integrity: sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==}
+ '@typescript-eslint/scope-manager@8.0.0-alpha.30':
+ resolution: {integrity: sha512-FGW/iPWGyPFamAVZ60oCAthMqQrqafUGebF8UKuq/ha+e9SVG6YhJoRzurlQXOVf8dHfOhJ0ADMXyFnMc53clg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/scope-manager@8.2.0':
resolution: {integrity: sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@8.1.0':
- resolution: {integrity: sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
'@typescript-eslint/type-utils@8.2.0':
resolution: {integrity: sha512-g1CfXGFMQdT5S+0PSO0fvGXUaiSkl73U1n9LTK5aRAFnPlJ8dLKkXr4AaLFvPedW8lVDoMgLLE3JN98ZZfsj0w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2292,16 +2387,16 @@ packages:
typescript:
optional: true
- '@typescript-eslint/types@8.1.0':
- resolution: {integrity: sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==}
+ '@typescript-eslint/types@8.0.0-alpha.30':
+ resolution: {integrity: sha512-4WzLlw27SO9pK9UFj/Hu7WGo8WveT0SEiIpFVsV2WwtQmLps6kouwtVCB8GJPZKJyurhZhcqCoQVQFmpv441Vg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/types@8.2.0':
resolution: {integrity: sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.1.0':
- resolution: {integrity: sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==}
+ '@typescript-eslint/typescript-estree@8.0.0-alpha.30':
+ resolution: {integrity: sha512-WSXbc9ZcXI+7yC+6q95u77i8FXz6HOLsw3ST+vMUlFy1lFbXyFL/3e6HDKQCm2Clt0krnoCPiTGvIn+GkYPn4Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -2318,8 +2413,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/utils@8.1.0':
- resolution: {integrity: sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==}
+ '@typescript-eslint/utils@8.0.0-alpha.30':
+ resolution: {integrity: sha512-rfhqfLqFyXhHNDwMnHiVGxl/Z2q/3guQ1jLlGQ0hi9Rb7inmwz42crM+NnLPR+2vEnwyw1P/g7fnQgQ3qvFx4g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -2330,23 +2425,49 @@ packages:
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- '@typescript-eslint/visitor-keys@8.1.0':
- resolution: {integrity: sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==}
+ '@typescript-eslint/visitor-keys@8.0.0-alpha.30':
+ resolution: {integrity: sha512-XZuNurZxBqmr6ZIRIwWFq7j5RZd6ZlkId/HZEWyfciK+CWoyOxSF9Pv2VXH9Rlu2ZG2PfbhLz2Veszl4Pfn7yA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/visitor-keys@8.2.0':
resolution: {integrity: sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@urql/core@5.0.6':
+ resolution: {integrity: sha512-38rgSDqVNihFDauw1Pm9V7XLWIKuK8V9CKgrUF7/xEKinze8ENKP1ZeBhkG+dxWzJan7CHK+SLl46kAdvZwIlA==}
+
+ '@vercel/build-utils@8.3.8':
+ resolution: {integrity: sha512-qcKV+owhfSwPJ3RyDpdS3xZdgDtPpVaeYTXRJjmMPv0PQIci5NRik/QNmYth0pyXCYbG5ES9/OYg9j5kAqPhZA==}
+
+ '@vercel/error-utils@2.0.2':
+ resolution: {integrity: sha512-Sj0LFafGpYr6pfCqrQ82X6ukRl5qpmVrHM/191kNYFqkkB9YkjlMAj6QcEsvCG259x4QZ7Tya++0AB85NDPbKQ==}
+
+ '@vercel/functions@1.4.1':
+ resolution: {integrity: sha512-987mKpoDCI18x2rDjrDbiuGOtxDMK/UhfhDZoN3A2SAt40BMaj8HEKwVqL6fOian5j/3RZcOuJnMOpatQGgpjw==}
+ engines: {node: '>= 16'}
+ peerDependencies:
+ '@aws-sdk/credential-provider-web-identity': '*'
+ peerDependenciesMeta:
+ '@aws-sdk/credential-provider-web-identity':
+ optional: true
+
+ '@vercel/nft@0.27.3':
+ resolution: {integrity: sha512-oySTdDSzUAFDXpsSLk9Q943o+/Yu/+TCFxnehpFQEf/3khi2stMpTHPVNwFdvZq/Z4Ky93lE+MGHpXCRpMkSCA==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ '@vercel/node@3.2.10':
+ resolution: {integrity: sha512-NH3qPfIdu/Nxn7v34DnbSFiODIKUrqHWg8IAuRUccFfRIRp4EVreX7QfXGRgzvjTF/Ps+ATluw4IftlHQtVocA==}
+
+ '@vercel/static-config@3.0.0':
+ resolution: {integrity: sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw==}
+
'@vitejs/plugin-react@4.3.1':
resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0
- '@walletconnect/core@2.14.0':
- resolution: {integrity: sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g==}
-
'@walletconnect/core@2.15.1':
resolution: {integrity: sha512-9MWVt33MFrLiAeK9nqY/B30/y0M4uiq8v9EXenIBQdlgkmXM++RTcOnn7u7EAbthGgzx3WLPRm4ViwIb+rI/Cg==}
engines: {node: '>=18'}
@@ -2354,9 +2475,6 @@ packages:
'@walletconnect/environment@1.0.1':
resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==}
- '@walletconnect/ethereum-provider@2.14.0':
- resolution: {integrity: sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg==}
-
'@walletconnect/ethereum-provider@2.15.1':
resolution: {integrity: sha512-3ssEAKc/rLYshwyE2ZIaoTxzi/p9Ws+kj/FIsd1Ed/CC37Rl5l/KYHaRJtevWeni9s4dGqyqKsYkJ0VwwUcnfQ==}
@@ -2401,9 +2519,6 @@ packages:
'@walletconnect/modal@2.6.2':
resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==}
- '@walletconnect/relay-api@1.0.10':
- resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==}
-
'@walletconnect/relay-api@1.0.11':
resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==}
@@ -2413,30 +2528,18 @@ packages:
'@walletconnect/safe-json@1.0.2':
resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==}
- '@walletconnect/sign-client@2.14.0':
- resolution: {integrity: sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg==}
-
'@walletconnect/sign-client@2.15.1':
resolution: {integrity: sha512-YnLNEmCHgZ8yBpE3hwZnHD/bVznVMguSAlwLBNOoWUH2f4d9mR8bqa6KeVXqZ3e8mVHcxKTJTjTJ3oQMLyKIjw==}
'@walletconnect/time@1.0.2':
resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==}
- '@walletconnect/types@2.14.0':
- resolution: {integrity: sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g==}
-
'@walletconnect/types@2.15.1':
resolution: {integrity: sha512-4WkMsHD8ioZI5GmxNT0qMlz6msI7ZajBcTyDxfRncaNZVau0C+Btw1U4jWO+gxwJVDJY+Ue/cb1QKJ5BanZsyw==}
- '@walletconnect/universal-provider@2.14.0':
- resolution: {integrity: sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA==}
-
'@walletconnect/universal-provider@2.15.1':
resolution: {integrity: sha512-JvKwHoE/ugWSKOmrEr03go1V79N0bbYV6w24Lqlzz4VAoReZZo8TDKsya7UkJ1L5HUCgKVP+AVktuJv8khzJ6w==}
- '@walletconnect/utils@2.14.0':
- resolution: {integrity: sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ==}
-
'@walletconnect/utils@2.15.1':
resolution: {integrity: sha512-i5AR8XpZdcX8ghaCjYV13Er/KAGe56c1mLaG9c2cv9kmnZMZijeMdInjX/flnSM1RFDUiZXvKPMUNwlCL4NsWw==}
@@ -2446,27 +2549,6 @@ packages:
'@walletconnect/window-metadata@1.0.1':
resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==}
- '@xstate/react@3.2.2':
- resolution: {integrity: sha512-feghXWLedyq8JeL13yda3XnHPZKwYDN5HPBLykpLeuNpr9178tQd2/3d0NrH6gSd0sG5mLuLeuD+ck830fgzLQ==}
- peerDependencies:
- '@xstate/fsm': ^2.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- xstate: ^4.37.2
- peerDependenciesMeta:
- '@xstate/fsm':
- optional: true
- xstate:
- optional: true
-
- '@xstate/react@4.1.1':
- resolution: {integrity: sha512-pFp/Y+bnczfaZ0V8B4LOhx3d6Gd71YKAPbzerGqydC2nsYN/mp7RZu3q/w6/kvI2hwR/jeDeetM7xc3JFZH2NA==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- xstate: ^5.11.0
- peerDependenciesMeta:
- xstate:
- optional: true
-
abbrev@1.0.9:
resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==}
@@ -2488,6 +2570,11 @@ packages:
abortcontroller-polyfill@1.7.5:
resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==}
+ acorn-import-attributes@1.9.5:
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
+ peerDependencies:
+ acorn: ^8
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -2526,6 +2613,9 @@ packages:
ajv@8.12.0:
resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
+ ajv@8.6.3:
+ resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==}
+
amdefine@1.0.1:
resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==}
engines: {node: '>=0.4.2'}
@@ -2568,6 +2658,14 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
+ aproba@2.0.0:
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
+
+ are-we-there-yet@2.0.0:
+ resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
+ engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
+
arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
@@ -2580,17 +2678,25 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- array-buffer-byte-length@1.0.0:
- resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
+ array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
- arraybuffer.prototype.slice@1.0.2:
- resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
+ arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
engines: {node: '>= 0.4'}
+ arrify@1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+
+ assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+
ast-parents@0.0.1:
resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==}
@@ -2598,6 +2704,17 @@ packages:
resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
engines: {node: '>=8'}
+ async-listen@3.0.0:
+ resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==}
+ engines: {node: '>= 14'}
+
+ async-listen@3.0.1:
+ resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==}
+ engines: {node: '>= 14'}
+
+ async-sema@3.1.1:
+ resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
+
async@1.5.2:
resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==}
@@ -2615,10 +2732,6 @@ packages:
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
engines: {node: '>=8.0.0'}
- attr-accept@2.2.2:
- resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==}
- engines: {node: '>=4'}
-
autoprefixer@10.4.20:
resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
engines: {node: ^10 || ^12 || >=14}
@@ -2630,9 +2743,17 @@ packages:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
axios@1.7.3:
resolution: {integrity: sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==}
+ babel-plugin-macros@3.1.0:
+ resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
+ engines: {node: '>=10', npm: '>=6'}
+
babel-plugin-polyfill-corejs2@0.4.5:
resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==}
peerDependencies:
@@ -2675,6 +2796,9 @@ packages:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
blakejs@1.2.1:
resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==}
@@ -2730,8 +2854,8 @@ packages:
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
- bufferutil@4.0.7:
- resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==}
+ bufferutil@4.0.8:
+ resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
engines: {node: '>=6.14.2'}
builtin-modules@3.3.0:
@@ -2753,6 +2877,10 @@ packages:
call-bind@1.0.2:
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@@ -2775,6 +2903,10 @@ packages:
caniuse-lite@1.0.30001651:
resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==}
+ chai@4.3.10:
+ resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
+ engines: {node: '>=4'}
+
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -2786,10 +2918,21 @@ packages:
charenc@0.0.2:
resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
+ check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+
chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
ci-info@2.0.0:
resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
@@ -2799,6 +2942,9 @@ packages:
citty@0.1.6:
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+ cjs-module-lexer@1.2.3:
+ resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
+
clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
@@ -2832,6 +2978,9 @@ packages:
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
engines: {node: '>=0.10.0'}
+ code-block-writer@10.1.1:
+ resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==}
+
color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@@ -2845,6 +2994,10 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ color-support@1.1.3:
+ resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
+ hasBin: true
+
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
@@ -2896,6 +3049,16 @@ packages:
resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
engines: {node: ^14.18.0 || >=16.10.0}
+ console-control-strings@1.1.0:
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
+
+ convert-hrtime@3.0.0:
+ resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==}
+ engines: {node: '>=8'}
+
+ convert-source-map@1.9.0:
+ resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -2909,6 +3072,10 @@ packages:
core-js-compat@3.33.0:
resolution: {integrity: sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==}
+ cosmiconfig@7.1.0:
+ resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
+ engines: {node: '>=10'}
+
cosmiconfig@8.3.6:
resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
engines: {node: '>=14'}
@@ -2961,6 +3128,9 @@ packages:
resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
engines: {node: '>=4'}
+ css-selector-tokenizer@0.8.0:
+ resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==}
+
css-to-react-native@3.2.0:
resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
@@ -2972,10 +3142,34 @@ packages:
csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
+ culori@3.3.0:
+ resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
d@1.0.2:
resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
engines: {node: '>=0.12'}
+ daisyui@4.12.10:
+ resolution: {integrity: sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==}
+ engines: {node: '>=16.9.0'}
+
+ data-uri-to-buffer@4.0.1:
+ resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
+ engines: {node: '>= 12'}
+
+ data-view-buffer@1.0.1:
+ resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-length@1.0.1:
+ resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-offset@1.0.0:
+ resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+ engines: {node: '>= 0.4'}
+
date-fns@2.30.0:
resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
engines: {node: '>=0.11'}
@@ -2983,6 +3177,9 @@ packages:
dateformat@4.6.3:
resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
+ dayjs@1.11.13:
+ resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
+
death@1.1.0:
resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==}
@@ -3019,6 +3216,10 @@ packages:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
+ deep-eql@4.1.4:
+ resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
+ engines: {node: '>=6'}
+
deep-extend@0.6.0:
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
@@ -3034,8 +3235,8 @@ packages:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
- define-data-property@1.1.0:
- resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==}
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
define-properties@1.2.1:
@@ -3049,6 +3250,9 @@ packages:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
+ delegates@1.0.0:
+ resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+
denque@2.1.0:
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
engines: {node: '>=0.10'}
@@ -3071,9 +3275,17 @@ packages:
engines: {node: '>=0.10'}
hasBin: true
+ detect-libc@2.0.3:
+ resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ engines: {node: '>=8'}
+
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ diff@3.5.0:
+ resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==}
+ engines: {node: '>=0.3.1'}
+
diff@4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
@@ -3095,8 +3307,16 @@ packages:
dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
- dot-case@3.0.4:
- resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+ dns-packet@5.6.1:
+ resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
+ engines: {node: '>=6'}
+
+ dom-helpers@5.2.1:
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+
+ dotenv-expand@11.0.6:
+ resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==}
+ engines: {node: '>=12'}
dotenv@16.4.5:
resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
@@ -3105,6 +3325,11 @@ packages:
duplexify@4.1.2:
resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==}
+ edge-runtime@2.5.9:
+ resolution: {integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==}
+ engines: {node: '>=16'}
+ hasBin: true
+
ejs@3.1.9:
resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==}
engines: {node: '>=0.10.0'}
@@ -3132,10 +3357,6 @@ packages:
resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
engines: {node: '>=8.6'}
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
env-paths@2.2.1:
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
engines: {node: '>=6'}
@@ -3145,15 +3366,54 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ envio-darwin-arm64@2.1.0:
+ resolution: {integrity: sha512-j3cCOIxhqOk8Gt4Q03BsI4mXEyrWsoMelFHqy6omO6ZFgX8f6SVK5z9b5lZKeUOBKuyX3M7x0jo2P/HKQSSCyw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ envio-darwin-x64@2.1.0:
+ resolution: {integrity: sha512-PPPp0hUbnf07QPozElhESuCvK2ni4DNHCU3njghECAg6A5mEHR9pa/ow8Lr0sSvBqHmBhpCxx5RyF3X5i3lbYA==}
+ cpu: [x64]
+ os: [darwin]
+
+ envio-linux-arm64@2.1.0:
+ resolution: {integrity: sha512-okHUoQMEXtjUo4/x8uQXwrK5AnwfSAT1hQpAx67wZrRkrdqek7r4qfvNMgNQYnzo9/wjrmK5ZGA9uUcW7QuFlA==}
+ cpu: [arm64]
+ os: [linux]
+
+ envio-linux-x64@2.1.0:
+ resolution: {integrity: sha512-Y/FyhIGuyqgwHof1MXKTnhFRoBEJW6KgH3s4EKWBOPUidqvavKYzTiMzhuDAw2XHkgEvTPn9fhRf5gOz6QGH8w==}
+ cpu: [x64]
+ os: [linux]
+
+ envio@2.1.0:
+ resolution: {integrity: sha512-20ev9vY5Ko37oo2sh1rYMBDOoM8AVhjK8Roj+KCrNFMlrM2v2saVdExuzV/a+4Yjhb5Lle6VUkuBF6ODaHbJgw==}
+ hasBin: true
+
error-ex@1.3.2:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
- es-abstract@1.22.2:
- resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==}
+ es-abstract@1.23.3:
+ resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
+ engines: {node: '>= 0.4'}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@1.4.1:
+ resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
+
+ es-object-atoms@1.0.0:
+ resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
engines: {node: '>= 0.4'}
- es-set-tostringtag@2.0.1:
- resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
+ es-set-tostringtag@2.0.3:
+ resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
engines: {node: '>= 0.4'}
es-to-primitive@1.2.1:
@@ -3174,6 +3434,131 @@ packages:
resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==}
engines: {node: '>=0.12'}
+ esbuild-android-64@0.14.47:
+ resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ esbuild-android-arm64@0.14.47:
+ resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ esbuild-darwin-64@0.14.47:
+ resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ esbuild-darwin-arm64@0.14.47:
+ resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ esbuild-freebsd-64@0.14.47:
+ resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ esbuild-freebsd-arm64@0.14.47:
+ resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ esbuild-linux-32@0.14.47:
+ resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ esbuild-linux-64@0.14.47:
+ resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ esbuild-linux-arm64@0.14.47:
+ resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ esbuild-linux-arm@0.14.47:
+ resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ esbuild-linux-mips64le@0.14.47:
+ resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ esbuild-linux-ppc64le@0.14.47:
+ resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ esbuild-linux-riscv64@0.14.47:
+ resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ esbuild-linux-s390x@0.14.47:
+ resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ esbuild-netbsd-64@0.14.47:
+ resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ esbuild-openbsd-64@0.14.47:
+ resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ esbuild-sunos-64@0.14.47:
+ resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ esbuild-windows-32@0.14.47:
+ resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ esbuild-windows-64@0.14.47:
+ resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ esbuild-windows-arm64@0.14.47:
+ resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ esbuild@0.14.47:
+ resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==}
+ engines: {node: '>=12'}
+ hasBin: true
+
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
@@ -3196,12 +3581,6 @@ packages:
engines: {node: '>=0.12.0'}
hasBin: true
- eslint-plugin-react-hooks@4.6.0:
- resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
-
eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614:
resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==}
engines: {node: '>=10'}
@@ -3279,6 +3658,10 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
ethereum-bloom-filters@1.0.10:
resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==}
@@ -3304,6 +3687,10 @@ packages:
resolution: {integrity: sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==}
engines: {node: '>=14.0.0'}
+ ethers@6.8.0:
+ resolution: {integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==}
+ engines: {node: '>=14.0.0'}
+
ethjs-unit@0.1.6:
resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==}
engines: {node: '>=6.5.0', npm: '>=3'}
@@ -3368,6 +3755,12 @@ packages:
fast-safe-stringify@2.1.1:
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
+ fast-sha256@1.3.0:
+ resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==}
+
+ fastparse@1.1.2:
+ resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==}
+
fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
@@ -3379,6 +3772,10 @@ packages:
picomatch:
optional: true
+ fetch-blob@3.2.0:
+ resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
+ engines: {node: ^12.20 || >= 14.13}
+
fetch-retry@5.0.6:
resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==}
@@ -3386,9 +3783,8 @@ packages:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
- file-selector@0.6.0:
- resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==}
- engines: {node: '>= 12'}
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
filelist@1.0.4:
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
@@ -3401,6 +3797,9 @@ packages:
resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
engines: {node: '>=0.10.0'}
+ find-root@1.1.0:
+ resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
+
find-up@2.1.0:
resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==}
engines: {node: '>=4'}
@@ -3424,15 +3823,6 @@ packages:
flatted@3.2.9:
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
- follow-redirects@1.15.5:
- resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==}
- engines: {node: '>=4.0'}
- peerDependencies:
- debug: '*'
- peerDependenciesMeta:
- debug:
- optional: true
-
follow-redirects@1.15.6:
resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
engines: {node: '>=4.0'}
@@ -3453,6 +3843,10 @@ packages:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'}
+ formdata-polyfill@4.0.10:
+ resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
+ engines: {node: '>=12.20.0'}
+
fp-ts@1.19.3:
resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==}
@@ -3474,6 +3868,10 @@ packages:
resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
engines: {node: '>=10'}
+ fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@@ -3485,6 +3883,9 @@ packages:
function-bind@1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
function.prototype.name@1.1.6:
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
engines: {node: '>= 0.4'}
@@ -3492,6 +3893,11 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ gauge@3.0.2:
+ resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
+ engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
+
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -3500,9 +3906,16 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
+ get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+
get-intrinsic@1.2.1:
resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+
get-own-enumerable-property-symbols@3.0.2:
resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
@@ -3517,8 +3930,8 @@ packages:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
- get-symbol-description@1.0.0:
- resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
+ get-symbol-description@1.0.2:
+ resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
ghost-testrpc@0.0.2:
@@ -3598,6 +4011,12 @@ packages:
resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
engines: {node: '>=14.16'}
+ gql.tada@1.8.6:
+ resolution: {integrity: sha512-XyN/BkZVEJ5kxgK8oDjHluLwXBLdlUO6P4+u/AmYfknFDj5M5AnaZMm3pntMDO9tpaaEczy9pfXDEJ6tYuTlyA==}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+
graceful-fs@4.2.10:
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
@@ -3658,13 +4077,17 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-property-descriptors@1.0.0:
- resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
has-proto@1.0.1:
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
engines: {node: '>= 0.4'}
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
@@ -3673,6 +4096,13 @@ packages:
resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
engines: {node: '>= 0.4'}
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ has-unicode@2.0.1:
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+
has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'}
@@ -3684,6 +4114,13 @@ packages:
hash.js@1.1.7:
resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
+ hashlru@2.3.0:
+ resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
@@ -3779,14 +4216,17 @@ packages:
ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- internal-slot@1.0.5:
- resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
+ internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
interpret@1.4.0:
resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
engines: {node: '>= 0.10'}
+ intl-messageformat@10.5.14:
+ resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==}
+
io-ts@1.10.4:
resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==}
@@ -3801,8 +4241,9 @@ packages:
resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
engines: {node: '>= 0.4'}
- is-array-buffer@3.0.2:
- resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
+ is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
@@ -3828,6 +4269,10 @@ packages:
is-core-module@2.13.0:
resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
+ is-data-view@1.0.1:
+ resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+ engines: {node: '>= 0.4'}
+
is-date-object@1.0.5:
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
engines: {node: '>= 0.4'}
@@ -3862,11 +4307,15 @@ packages:
engines: {node: '>=14.16'}
hasBin: true
+ is-ipfs@8.0.4:
+ resolution: {integrity: sha512-upkO6a8WgBSZMMmuPzmF2NQLWXtiJtHxdEfEiMWrOzCKoZ+XEiM0XlK4fFMfo/PyiRmPMJ4PsNrXyvJeqMrJXA==}
+ engines: {node: '>=16.0.0', npm: '>=7.0.0'}
+
is-module@1.0.0:
resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
- is-negative-zero@2.0.2:
- resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
is-number-object@1.0.7:
@@ -3897,8 +4346,9 @@ packages:
resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
engines: {node: '>=0.10.0'}
- is-shared-array-buffer@1.0.2:
- resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
+ is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
@@ -3920,6 +4370,10 @@ packages:
resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
engines: {node: '>= 0.4'}
+ is-typed-array@1.1.13:
+ resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+ engines: {node: '>= 0.4'}
+
is-typedarray@1.0.0:
resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
@@ -3944,14 +4398,22 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- isomorphic-unfetch@3.1.0:
- resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==}
+ iso-url@1.2.1:
+ resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==}
+ engines: {node: '>=12'}
isows@1.0.4:
resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==}
peerDependencies:
ws: '*'
+ it-pushable@3.2.3:
+ resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==}
+
+ it-stream-types@2.0.1:
+ resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==}
+ engines: {node: '>=16.0.0', npm: '>=7.0.0'}
+
jake@10.8.7:
resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==}
engines: {node: '>=10'}
@@ -4008,6 +4470,9 @@ packages:
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ json-schema-to-ts@1.6.4:
+ resolution: {integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==}
+
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -4020,6 +4485,10 @@ packages:
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@@ -4112,6 +4581,9 @@ packages:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
+ lodash.castarray@4.4.0:
+ resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
+
lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
@@ -4124,6 +4596,9 @@ packages:
lodash.isequal@4.5.0:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
@@ -4147,8 +4622,8 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
- lower-case@2.0.2:
- resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+ loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
lowercase-keys@3.0.0:
resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
@@ -4168,19 +4643,13 @@ packages:
lru_map@0.3.3:
resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==}
- lucide-react@0.424.0:
- resolution: {integrity: sha512-x2Nj2aytk1iOyHqt4hKenfVlySq0rYxNeEf8hE0o+Yh0iE36Rqz0rkngVdv2uQtjZ70LAE73eeplhhptYt9x4Q==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
-
- lucide-react@0.436.0:
- resolution: {integrity: sha512-N292bIxoqm1aObAg0MzFtvhYwgQE6qnIOWx/GLj5ONgcTPH6N0fD9bVq/GfdeC9ZORBXozt/XeEKDpiB3x3vlQ==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
-
magic-string@0.25.9:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+ make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
@@ -4190,6 +4659,9 @@ packages:
md5@2.3.0:
resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==}
+ memoize-one@6.0.0:
+ resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
+
memorystream@0.3.1:
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
engines: {node: '>= 0.10.0'}
@@ -4233,6 +4705,10 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ mini-svg-data-uri@1.4.4:
+ resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
+ hasBin: true
+
minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
@@ -4257,6 +4733,18 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+
mipd@0.0.7:
resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==}
peerDependencies:
@@ -4269,6 +4757,11 @@ packages:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
mlly@1.6.1:
resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==}
@@ -4296,6 +4789,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ multiformats@13.2.2:
+ resolution: {integrity: sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==}
+
multiformats@9.9.0:
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
@@ -4321,9 +4817,6 @@ packages:
next-tick@1.1.0:
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
- no-case@3.0.4:
- resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
-
node-addon-api@2.0.2:
resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==}
@@ -4331,12 +4824,25 @@ packages:
resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==}
engines: {node: ^16 || ^18 || >= 20}
+ node-domexception@1.0.0:
+ resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+ engines: {node: '>=10.5.0'}
+
node-emoji@1.11.0:
resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==}
node-fetch-native@1.6.4:
resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
+ node-fetch@2.6.9:
+ resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
node-fetch@2.7.0:
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
engines: {node: 4.x || >=6.0.0}
@@ -4346,6 +4852,10 @@ packages:
encoding:
optional: true
+ node-fetch@3.3.2:
+ resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
node-forge@1.3.1:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
@@ -4361,6 +4871,11 @@ packages:
resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==}
hasBin: true
+ nopt@5.0.0:
+ resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -4377,6 +4892,10 @@ packages:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ npmlog@5.0.1:
+ resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+ deprecated: This package is no longer supported.
+
number-to-bn@1.7.0:
resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==}
engines: {node: '>=6.5.0', npm: '>=3'}
@@ -4389,15 +4908,16 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
- object-inspect@1.12.3:
- resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
+ object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
- object.assign@4.1.4:
- resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
+ object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
engines: {node: '>= 0.4'}
obliterator@2.0.4:
@@ -4442,6 +4962,10 @@ packages:
resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
engines: {node: '>=12.20'}
+ p-defer@4.0.1:
+ resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==}
+ engines: {node: '>=12'}
+
p-limit@1.3.0:
resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==}
engines: {node: '>=4'}
@@ -4470,6 +4994,14 @@ packages:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
+ p-queue@8.0.1:
+ resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==}
+ engines: {node: '>=18'}
+
+ p-timeout@6.1.2:
+ resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==}
+ engines: {node: '>=14.16'}
+
p-try@1.0.0:
resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
engines: {node: '>=4'}
@@ -4493,6 +5025,13 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
+ parse-ms@2.1.0:
+ resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==}
+ engines: {node: '>=6'}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
path-exists@3.0.0:
resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
engines: {node: '>=4'}
@@ -4516,6 +5055,9 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ path-to-regexp@6.2.1:
+ resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
+
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@@ -4523,15 +5065,13 @@ packages:
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+ pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+
pbkdf2@3.1.2:
resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==}
engines: {node: '>=0.12'}
- permissionless@0.1.44:
- resolution: {integrity: sha512-NQBATmG4Fp3Zqy1IjjBihfp2huV6sTzUUzZzuSQ7xBnRNABOyIm8d+q76gy2B0LnFfu47RA/aW+fNfZjnbzl4Q==}
- peerDependencies:
- viem: '>=2.14.1 <2.18.0'
-
permissionless@0.1.45:
resolution: {integrity: sha512-YJJrNFeP3T7mmfXExZsGz0J8SfOPgYzT3fyRIJtImFcUI2UmnyBQLrFt+BaiIXNogzAQuBvOSi6KKtyBePJ2/Q==}
peerDependencies:
@@ -4559,6 +5099,9 @@ packages:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
+ pinata@0.4.0:
+ resolution: {integrity: sha512-FUpVWGStibuPTnLHgtoQPy2dPZY8uZBEHV8dhemVt1CNE70e3uKJEPJgQBOGDXYpek7x1cV2MhBS/zWyg1+Drg==}
+
pino-abstract-transport@0.5.0:
resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==}
@@ -4591,6 +5134,10 @@ packages:
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
engines: {node: '>=10.13.0'}
+ possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+
postcss-import@15.1.0:
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
@@ -4621,6 +5168,10 @@ packages:
peerDependencies:
postcss: ^8.2.14
+ postcss-selector-parser@6.0.10:
+ resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ engines: {node: '>=4'}
+
postcss-selector-parser@6.0.13:
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
engines: {node: '>=4'}
@@ -4635,9 +5186,6 @@ packages:
preact@10.19.6:
resolution: {integrity: sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==}
- preline@2.4.1:
- resolution: {integrity: sha512-30yx5s2gEOTBWXSTPa+Th23/kGryn9Inhmp9KPzz9G8DZPp9j/LkGyyrSvdsuXh4Clc/sJFLObumFrbI/WmB0w==}
-
prelude-ls@1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
engines: {node: '>= 0.8.0'}
@@ -4670,6 +5218,10 @@ packages:
resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==}
engines: {node: ^14.13.1 || >=16.0.0}
+ pretty-ms@7.0.1:
+ resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
+ engines: {node: '>=10'}
+
process-warning@1.0.0:
resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
@@ -4677,6 +5229,9 @@ packages:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
+ progress-events@1.0.1:
+ resolution: {integrity: sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==}
+
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
@@ -4705,6 +5260,9 @@ packages:
resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
engines: {node: '>=6'}
+ querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -4735,28 +5293,16 @@ packages:
react: '>= 0.14.0'
react-dom: '>= 0.14.0'
- react-dom@18.2.0:
- resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
+ react-device-frameset@1.3.4:
+ resolution: {integrity: sha512-M9VUa2up9TFOgsELHBFRkZf8ER0AyOYF5+5qbtYseQCZfg6XUxuNDX5VsJNfMGu6Zz6x9Dgh4rfFDFONK9H7dg==}
peerDependencies:
- react: ^18.2.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
peerDependencies:
react: ^18.3.1
- react-dropzone@14.2.3:
- resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==}
- engines: {node: '>= 10.13'}
- peerDependencies:
- react: '>= 16.8 || 18.0.0'
-
- react-hook-form@7.51.0:
- resolution: {integrity: sha512-BggOy5j58RdhdMzzRUHGOYhSz1oeylFAv6jUSG86OvCIvlAvS7KvnRY7yoAf2pfEiPN7BesnR0xx73nEk3qIiw==}
- engines: {node: '>=12.22.0'}
- peerDependencies:
- react: ^16.8.0 || ^17 || ^18
-
react-hook-form@7.53.0:
resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==}
engines: {node: '>=18.0.0'}
@@ -4770,6 +5316,15 @@ packages:
react: '>=16'
react-dom: '>=16'
+ react-intl@6.6.8:
+ resolution: {integrity: sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==}
+ peerDependencies:
+ react: ^16.6.0 || 17 || 18
+ typescript: ^4.7 || 5
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -4780,13 +5335,6 @@ packages:
resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
engines: {node: '>=0.10.0'}
- react-router-dom@6.22.2:
- resolution: {integrity: sha512-WgqxD2qySEIBPZ3w0sHH+PUAiamDeszls9tzqMPBDA1YYVucTBXLU7+gtRfcSnhe92A3glPnvSxK2dhNoAVOIQ==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
-
react-router-dom@6.26.1:
resolution: {integrity: sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==}
engines: {node: '>=14.0.0'}
@@ -4794,21 +5342,29 @@ packages:
react: '>=16.8'
react-dom: '>=16.8'
- react-router@6.22.2:
- resolution: {integrity: sha512-YD3Dzprzpcq+tBMHBS822tCjnWD3iIZbTeSXMY9LPSG541EfoBGyZ3bS25KEnaZjLcmQpw2AVLkFyfgXY8uvcw==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- react: '>=16.8'
-
react-router@6.26.1:
resolution: {integrity: sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: '>=16.8'
- react@18.2.0:
- resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
- engines: {node: '>=0.10.0'}
+ react-select@5.8.0:
+ resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+
+ react-tailwindcss-datepicker@1.7.2:
+ resolution: {integrity: sha512-/NIRLB1evT69pt3Syol3cZpsAnLZlGvFWav98/Rr77Gey382C1fjKW2Emgu+SC4NtiRt6CBFwx/0Wbkn4iI+nA==}
+ peerDependencies:
+ dayjs: ^1.11.12
+ react: ^17.0.2 || ^18.2.0
+
+ react-transition-group@4.4.5:
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
react@18.3.1:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
@@ -4841,6 +5397,9 @@ packages:
resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==}
engines: {node: '>=6.0.0'}
+ redaxios@0.5.1:
+ resolution: {integrity: sha512-FSD2AmfdbkYwl7KDExYQlVvIrFz6Yd83pGfaGjBzM9F6rpq8g652Q4Yq5QD4c+nf4g2AgeElv1y+8ajUPiOYMg==}
+
redis-errors@1.2.0:
resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
engines: {node: '>=4'}
@@ -4862,8 +5421,8 @@ packages:
regenerator-transform@0.15.2:
resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
- regexp.prototype.flags@1.5.1:
- resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
+ regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
engines: {node: '>= 0.4'}
regexpu-core@5.3.2:
@@ -4893,6 +5452,9 @@ packages:
require-main-filename@2.0.0:
resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+ requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+
resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
@@ -4900,6 +5462,10 @@ packages:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
+ resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
resolve@1.1.7:
resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==}
@@ -4923,6 +5489,11 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
ripemd160@2.0.2:
resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==}
@@ -4952,15 +5523,16 @@ packages:
rxjs@7.8.1:
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
- safe-array-concat@1.0.1:
- resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
+ safe-array-concat@1.1.2:
+ resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
engines: {node: '>=0.4'}
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- safe-regex-test@1.0.0:
- resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
+ safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+ engines: {node: '>= 0.4'}
safe-stable-stringify@2.4.3:
resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
@@ -4973,9 +5545,6 @@ packages:
resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==}
hasBin: true
- scheduler@0.23.0:
- resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
-
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
@@ -5017,8 +5586,12 @@ packages:
set-cookie-parser@2.7.0:
resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==}
- set-function-name@2.0.1:
- resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
engines: {node: '>= 0.4'}
setimmediate@1.0.5:
@@ -5053,6 +5626,13 @@ packages:
side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ signal-exit@4.0.2:
+ resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
+ engines: {node: '>=14'}
+
signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
@@ -5065,9 +5645,6 @@ packages:
resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
engines: {node: '>=10'}
- snake-case@3.0.4:
- resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
-
solc@0.7.3:
resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==}
engines: {node: '>=8.0.0'}
@@ -5100,6 +5677,10 @@ packages:
resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==}
engines: {node: '>=0.8.0'}
+ source-map@0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@@ -5154,15 +5735,16 @@ packages:
string.prototype.matchall@4.0.10:
resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==}
- string.prototype.trim@1.2.8:
- resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
+ string.prototype.trim@1.2.9:
+ resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
engines: {node: '>= 0.4'}
- string.prototype.trimend@1.0.7:
- resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
+ string.prototype.trimend@1.0.8:
+ resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
- string.prototype.trimstart@1.0.7:
- resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
+ string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
@@ -5175,6 +5757,10 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
strip-comments@2.0.1:
resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==}
engines: {node: '>=10'}
@@ -5203,6 +5789,9 @@ packages:
react-dom: '>= 16.8.0'
react-is: '>= 16.8.0'
+ stylis@4.2.0:
+ resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
+
sucrase@3.34.0:
resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
engines: {node: '>=8'}
@@ -5232,8 +5821,11 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svg-parser@2.0.4:
- resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==}
+ svix-fetch@3.0.0:
+ resolution: {integrity: sha512-rcADxEFhSqHbraZIsjyZNh4TF6V+koloX1OzZ+AQuObX9mZ2LIMhm1buZeuc5BIZPftZpJCMBsSiBaeszo9tRw==}
+
+ svix@1.31.0:
+ resolution: {integrity: sha512-sBSFoEWklpLqJP6tZZ8r8IcjYCAJOIiHgFSGBHo/AhmjcMfuE7qTuD5XsAXSgqZxSbFUM6CIHjbdV0QgdN1LtA==}
system-architecture@0.1.0:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
@@ -5248,16 +5840,15 @@ packages:
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
- tailwindcss@3.4.1:
- resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
tailwindcss@3.4.10:
resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==}
engines: {node: '>=14.0.0'}
hasBin: true
+ tar@6.2.1:
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
+ engines: {node: '>=10'}
+
temp-dir@2.0.0:
resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
engines: {node: '>=8'}
@@ -5284,6 +5875,10 @@ packages:
thread-stream@0.15.2:
resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==}
+ time-span@4.0.0:
+ resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==}
+ engines: {node: '>=10'}
+
tinycolor2@1.6.0:
resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
@@ -5326,9 +5921,36 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
+ ts-case-convert@2.0.7:
+ resolution: {integrity: sha512-Kqj8wrkuduWsKUOUNRczrkdHCDt4ZNNd6HKjVw42EnMIGHQUABS4pqfy0acETVLwUTppc1fzo/yi11+uMTaqzw==}
+
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ ts-mocha@10.0.0:
+ resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==}
+ engines: {node: '>= 6.X.X'}
+ hasBin: true
+ peerDependencies:
+ mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X
+
+ ts-morph@12.0.0:
+ resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==}
+
+ ts-node@10.9.1:
+ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+
ts-node@10.9.2:
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
@@ -5343,6 +5965,17 @@ packages:
'@swc/wasm':
optional: true
+ ts-node@7.0.1:
+ resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ ts-toolbelt@6.15.5:
+ resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==}
+
+ tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+
tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
@@ -5369,6 +6002,10 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
+ type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+
type-fest@0.16.0:
resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
engines: {node: '>=10'}
@@ -5385,23 +6022,28 @@ packages:
resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==}
engines: {node: '>=8'}
+ type-fest@3.13.1:
+ resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
+ engines: {node: '>=14.16'}
+
type@2.7.2:
resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
- typed-array-buffer@1.0.0:
- resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
+ typed-array-buffer@1.0.2:
+ resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
engines: {node: '>= 0.4'}
- typed-array-byte-length@1.0.0:
- resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
+ typed-array-byte-length@1.0.1:
+ resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
engines: {node: '>= 0.4'}
- typed-array-byte-offset@1.0.0:
- resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
+ typed-array-byte-offset@1.0.2:
+ resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
engines: {node: '>= 0.4'}
- typed-array-length@1.0.4:
- resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
+ typed-array-length@1.0.6:
+ resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+ engines: {node: '>= 0.4'}
typedarray-to-buffer@3.1.5:
resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
@@ -5415,6 +6057,16 @@ packages:
typescript:
optional: true
+ typescript@4.9.5:
+ resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ typescript@5.2.2:
+ resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
typescript@5.5.4:
resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
engines: {node: '>=14.17'}
@@ -5431,31 +6083,44 @@ packages:
engines: {node: '>=0.8.0'}
hasBin: true
+ uint8-varint@2.0.4:
+ resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==}
+
+ uint8arraylist@2.4.8:
+ resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==}
+
uint8arrays@3.1.0:
resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==}
uint8arrays@3.1.1:
resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==}
+ uint8arrays@5.1.0:
+ resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==}
+
unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
- undici-types@6.13.0:
- resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==}
+ undici-types@5.25.3:
+ resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==}
+
+ undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
undici@5.25.4:
resolution: {integrity: sha512-450yJxT29qKMf3aoudzFpIciqpx6Pji3hEWaXqXmanbXF58LTAGCKxcJjxMXWu3iG+Mudgo3ZUfDB6YDFd/dAw==}
engines: {node: '>=14.0'}
+ undici@5.28.4:
+ resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
+ engines: {node: '>=14.0'}
+
unenv@1.9.0:
resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==}
- unfetch@4.2.0:
- resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==}
-
unicode-canonical-property-names-ecmascript@2.0.0:
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
engines: {node: '>=4'}
@@ -5552,6 +6217,9 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+
use-isomorphic-layout-effect@1.1.2:
resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
peerDependencies:
@@ -5628,42 +6296,6 @@ packages:
'@vite-pwa/assets-generator':
optional: true
- vite-plugin-svgr@4.2.0:
- resolution: {integrity: sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==}
- peerDependencies:
- vite: ^2.6.0 || 3 || 4 || 5
-
- vite@5.4.0:
- resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
vite@5.4.2:
resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -5700,6 +6332,10 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ web-streams-polyfill@3.3.3:
+ resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
+ engines: {node: '>= 8'}
+
web3-core-helpers@1.10.3:
resolution: {integrity: sha512-Yv7dQC3B9ipOc5sWm3VAz1ys70Izfzb8n9rSiQYIPjpqtJM+3V4EeK6ghzNR6CO2es0+Yu9CtCkw0h8gQhrTxA==}
engines: {node: '>=8.0.0'}
@@ -5769,6 +6405,9 @@ packages:
resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==}
engines: {node: '>=4.0.0'}
+ whatwg-fetch@3.6.20:
+ resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
+
whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
@@ -5785,6 +6424,10 @@ packages:
resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
engines: {node: '>= 0.4'}
+ which-typed-array@1.1.15:
+ resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
+ engines: {node: '>= 0.4'}
+
which@1.3.1:
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
hasBin: true
@@ -5794,10 +6437,16 @@ packages:
engines: {node: '>= 8'}
hasBin: true
+ wide-align@1.1.5:
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+
widest-line@3.1.0:
resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
engines: {node: '>=8'}
+ wonka@6.3.4:
+ resolution: {integrity: sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==}
+
word-wrap@1.2.5:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
@@ -5904,11 +6553,17 @@ packages:
utf-8-validate:
optional: true
- xstate@4.38.2:
- resolution: {integrity: sha512-Fba/DwEPDLneHT3tbJ9F3zafbQXszOlyCJyQqqdzmtlY/cwE2th462KK48yaANf98jHlP6lJvxfNtN0LFKXPQg==}
-
- xstate@5.17.4:
- resolution: {integrity: sha512-KM2FYVOUJ04HlOO4TY3wEXqoYPR/XsDu+ewm+IWw0vilXqND0jVfvv04tEFwp8Mkk7I/oHXM8t1Ex9xJyUS4ZA==}
+ ws@8.5.0:
+ resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
y18n@4.0.3:
resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
@@ -5927,6 +6582,10 @@ packages:
yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ yaml@1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
yaml@2.3.2:
resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==}
engines: {node: '>= 14'}
@@ -5959,6 +6618,10 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
+ yn@2.0.0:
+ resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==}
+ engines: {node: '>=4'}
+
yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
@@ -5967,14 +6630,21 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- zod@3.22.4:
- resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
-
zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
snapshots:
+ '@0no-co/graphql.web@1.0.8(graphql@16.9.0)':
+ optionalDependencies:
+ graphql: 16.9.0
+
+ '@0no-co/graphqlsp@1.12.13(graphql@16.9.0)(typescript@5.5.4)':
+ dependencies:
+ '@gql.tada/internal': 1.0.7(graphql@16.9.0)(typescript@5.5.4)
+ graphql: 16.9.0
+ typescript: 5.5.4
+
'@aashutoshrathi/word-wrap@1.2.6': {}
'@adraffy/ens-normalize@1.10.0': {}
@@ -6012,10 +6682,10 @@ snapshots:
'@babel/helpers': 7.25.0
'@babel/parser': 7.25.3
'@babel/template': 7.25.0
- '@babel/traverse': 7.25.3
+ '@babel/traverse': 7.25.3(supports-color@5.5.0)
'@babel/types': 7.25.2
convert-source-map: 2.0.0
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -6070,7 +6740,7 @@ snapshots:
'@babel/core': 7.25.2
'@babel/helper-compilation-targets': 7.25.2
'@babel/helper-plugin-utils': 7.24.8
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
lodash.debounce: 4.0.8
resolve: 1.22.6
transitivePeerDependencies:
@@ -6091,13 +6761,6 @@ snapshots:
dependencies:
'@babel/types': 7.25.2
- '@babel/helper-module-imports@7.24.7':
- dependencies:
- '@babel/traverse': 7.25.3
- '@babel/types': 7.25.2
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-module-imports@7.24.7(supports-color@5.5.0)':
dependencies:
'@babel/traverse': 7.25.3(supports-color@5.5.0)
@@ -6108,10 +6771,10 @@ snapshots:
'@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)':
dependencies:
'@babel/core': 7.25.2
- '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0)
'@babel/helper-simple-access': 7.24.7
'@babel/helper-validator-identifier': 7.24.7
- '@babel/traverse': 7.25.3
+ '@babel/traverse': 7.25.3(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -6137,7 +6800,7 @@ snapshots:
'@babel/helper-simple-access@7.24.7':
dependencies:
- '@babel/traverse': 7.25.3
+ '@babel/traverse': 7.25.3(supports-color@5.5.0)
'@babel/types': 7.25.2
transitivePeerDependencies:
- supports-color
@@ -6314,7 +6977,7 @@ snapshots:
'@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.25.2)':
dependencies:
'@babel/core': 7.25.2
- '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0)
'@babel/helper-plugin-utils': 7.24.8
'@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2)
transitivePeerDependencies:
@@ -6715,18 +7378,6 @@ snapshots:
'@babel/parser': 7.25.3
'@babel/types': 7.25.2
- '@babel/traverse@7.25.3':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/generator': 7.25.0
- '@babel/parser': 7.25.3
- '@babel/template': 7.25.0
- '@babel/types': 7.25.2
- debug: 4.3.4(supports-color@8.1.1)
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
'@babel/traverse@7.25.3(supports-color@5.5.0)':
dependencies:
'@babel/code-frame': 7.24.7
@@ -6786,6 +7437,12 @@ snapshots:
'@biomejs/cli-win32-x64@1.7.3':
optional: true
+ '@chainsafe/is-ip@2.0.2': {}
+
+ '@chainsafe/netmask@2.0.0':
+ dependencies:
+ '@chainsafe/is-ip': 2.0.2
+
'@coinbase/wallet-sdk@4.0.3':
dependencies:
buffer: 6.0.3
@@ -6799,32 +7456,108 @@ snapshots:
dependencies:
'@jridgewell/trace-mapping': 0.3.9
- '@emotion/is-prop-valid@1.2.2':
- dependencies:
- '@emotion/memoize': 0.8.1
+ '@edge-runtime/format@2.2.1': {}
- '@emotion/memoize@0.8.1': {}
+ '@edge-runtime/node-utils@2.3.0': {}
- '@emotion/stylis@0.8.5': {}
+ '@edge-runtime/ponyfill@2.4.2': {}
- '@emotion/unitless@0.7.5': {}
+ '@edge-runtime/primitives@4.1.0': {}
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
+ '@edge-runtime/vm@3.2.0':
+ dependencies:
+ '@edge-runtime/primitives': 4.1.0
- '@esbuild/android-arm64@0.21.5':
- optional: true
+ '@emotion/babel-plugin@11.12.0':
+ dependencies:
+ '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0)
+ '@babel/runtime': 7.24.0
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/serialize': 1.3.1
+ babel-plugin-macros: 3.1.0
+ convert-source-map: 1.9.0
+ escape-string-regexp: 4.0.0
+ find-root: 1.1.0
+ source-map: 0.5.7
+ stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
- '@esbuild/android-arm@0.21.5':
- optional: true
+ '@emotion/cache@11.13.1':
+ dependencies:
+ '@emotion/memoize': 0.9.0
+ '@emotion/sheet': 1.4.0
+ '@emotion/utils': 1.4.0
+ '@emotion/weak-memoize': 0.4.0
+ stylis: 4.2.0
- '@esbuild/android-x64@0.21.5':
- optional: true
+ '@emotion/hash@0.9.2': {}
- '@esbuild/darwin-arm64@0.21.5':
- optional: true
+ '@emotion/is-prop-valid@1.2.2':
+ dependencies:
+ '@emotion/memoize': 0.8.1
- '@esbuild/darwin-x64@0.21.5':
+ '@emotion/memoize@0.8.1': {}
+
+ '@emotion/memoize@0.9.0': {}
+
+ '@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1)':
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@emotion/babel-plugin': 11.12.0
+ '@emotion/cache': 11.13.1
+ '@emotion/serialize': 1.3.1
+ '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1)
+ '@emotion/utils': 1.4.0
+ '@emotion/weak-memoize': 0.4.0
+ hoist-non-react-statics: 3.3.2
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/serialize@1.3.1':
+ dependencies:
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/unitless': 0.10.0
+ '@emotion/utils': 1.4.0
+ csstype: 3.1.2
+
+ '@emotion/sheet@1.4.0': {}
+
+ '@emotion/stylis@0.8.5': {}
+
+ '@emotion/unitless@0.10.0': {}
+
+ '@emotion/unitless@0.7.5': {}
+
+ '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
+ '@emotion/utils@1.4.0': {}
+
+ '@emotion/weak-memoize@0.4.0': {}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
optional: true
'@esbuild/freebsd-arm64@0.21.5':
@@ -6888,7 +7621,7 @@ snapshots:
'@eslint/config-array@0.17.1':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -6896,7 +7629,7 @@ snapshots:
'@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
espree: 10.1.0
globals: 14.0.0
ignore: 5.2.4
@@ -6911,9 +7644,9 @@ snapshots:
'@eslint/object-schema@2.1.4': {}
- '@ethereum-attestation-service/eas-contracts@1.4.1(bufferutil@4.0.7)(ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)':
+ '@ethereum-attestation-service/eas-contracts@1.4.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)':
dependencies:
- hardhat: 2.22.1(bufferutil@4.0.7)(ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
+ hardhat: 2.22.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- bufferutil
- c-kzg
@@ -6922,9 +7655,9 @@ snapshots:
- typescript
- utf-8-validate
- '@ethereum-attestation-service/eas-contracts@1.7.1(bufferutil@4.0.7)(ts-node@10.9.2(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)':
+ '@ethereum-attestation-service/eas-contracts@1.7.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)':
dependencies:
- hardhat: 2.22.4(bufferutil@4.0.7)(ts-node@10.9.2(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
+ hardhat: 2.22.4(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- bufferutil
- c-kzg
@@ -6933,11 +7666,11 @@ snapshots:
- typescript
- utf-8-validate
- '@ethereum-attestation-service/eas-sdk@2.5.0(bufferutil@4.0.7)(ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)':
+ '@ethereum-attestation-service/eas-sdk@2.5.0(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)':
dependencies:
- '@ethereum-attestation-service/eas-contracts': 1.4.1(bufferutil@4.0.7)(ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
+ '@ethereum-attestation-service/eas-contracts': 1.4.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
'@openzeppelin/merkle-tree': 1.0.6
- ethers: 6.13.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ethers: 6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
js-base64: 3.7.7
lodash: 4.17.21
multiformats: 9.9.0
@@ -7108,7 +7841,7 @@ snapshots:
dependencies:
'@ethersproject/logger': 5.7.0
- '@ethersproject/providers@5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
+ '@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)':
dependencies:
'@ethersproject/abstract-provider': 5.7.0
'@ethersproject/abstract-signer': 5.7.0
@@ -7129,7 +7862,7 @@ snapshots:
'@ethersproject/transactions': 5.7.0
'@ethersproject/web': 5.7.1
bech32: 1.1.4
- ws: 7.4.6(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -7228,12 +7961,77 @@ snapshots:
'@fastify/busboy@2.0.0': {}
- '@headlessui/react@1.7.18(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
+ '@floating-ui/core@1.6.7':
dependencies:
- '@tanstack/react-virtual': 3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
- client-only: 0.0.1
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
+ '@floating-ui/utils': 0.2.7
+
+ '@floating-ui/dom@1.6.10':
+ dependencies:
+ '@floating-ui/core': 1.6.7
+ '@floating-ui/utils': 0.2.7
+
+ '@floating-ui/utils@0.2.7': {}
+
+ '@formatjs/ecma402-abstract@2.0.0':
+ dependencies:
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.2
+
+ '@formatjs/fast-memoize@2.2.0':
+ dependencies:
+ tslib: 2.6.2
+
+ '@formatjs/icu-messageformat-parser@2.7.8':
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/icu-skeleton-parser': 1.8.2
+ tslib: 2.6.2
+
+ '@formatjs/icu-skeleton-parser@1.8.2':
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ tslib: 2.6.2
+
+ '@formatjs/intl-displaynames@6.6.8':
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.2
+
+ '@formatjs/intl-listformat@7.5.7':
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.2
+
+ '@formatjs/intl-localematcher@0.5.4':
+ dependencies:
+ tslib: 2.6.2
+
+ '@formatjs/intl@2.10.4(typescript@5.5.4)':
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/fast-memoize': 2.2.0
+ '@formatjs/icu-messageformat-parser': 2.7.8
+ '@formatjs/intl-displaynames': 6.6.8
+ '@formatjs/intl-listformat': 7.5.7
+ intl-messageformat: 10.5.14
+ tslib: 2.6.2
+ optionalDependencies:
+ typescript: 5.5.4
+
+ '@gql.tada/cli-utils@1.6.1(@0no-co/graphqlsp@1.12.13(graphql@16.9.0)(typescript@5.5.4))(graphql@16.9.0)(typescript@5.5.4)':
+ dependencies:
+ '@0no-co/graphqlsp': 1.12.13(graphql@16.9.0)(typescript@5.5.4)
+ '@gql.tada/internal': 1.0.7(graphql@16.9.0)(typescript@5.5.4)
+ graphql: 16.9.0
+ typescript: 5.5.4
+
+ '@gql.tada/internal@1.0.7(graphql@16.9.0)(typescript@5.5.4)':
+ dependencies:
+ '@0no-co/graphql.web': 1.0.8(graphql@16.9.0)
+ graphql: 16.9.0
+ typescript: 5.5.4
'@headlessui/react@1.7.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -7242,17 +8040,13 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@heroicons/react@2.1.1(react@18.2.0)':
- dependencies:
- react: 18.2.0
-
'@heroicons/react@2.1.1(react@18.3.1)':
dependencies:
react: 18.3.1
- '@hookform/resolvers@3.3.4(react-hook-form@7.51.0(react@18.2.0))':
+ '@hookform/resolvers@3.9.0(react-hook-form@7.53.0(react@18.3.1))':
dependencies:
- react-hook-form: 7.51.0(react@18.2.0)
+ react-hook-form: 7.53.0(react@18.3.1)
'@humanwhocodes/module-importer@1.0.1': {}
@@ -7295,16 +8089,37 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
+ '@leichtgewicht/ip-codec@2.0.5': {}
+
+ '@libp2p/interface@1.7.0':
+ dependencies:
+ '@multiformats/multiaddr': 12.3.0
+ it-pushable: 3.2.3
+ it-stream-types: 2.0.1
+ multiformats: 13.2.2
+ progress-events: 1.0.1
+ uint8arraylist: 2.4.8
+
'@lit-labs/ssr-dom-shim@1.2.0': {}
'@lit/reactive-element@1.6.3':
dependencies:
'@lit-labs/ssr-dom-shim': 1.2.0
- '@marsidev/react-turnstile@0.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
+ '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)':
dependencies:
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
+ detect-libc: 2.0.3
+ https-proxy-agent: 5.0.1
+ make-dir: 3.1.0
+ node-fetch: 2.7.0(encoding@0.1.13)
+ nopt: 5.0.0
+ npmlog: 5.0.1
+ rimraf: 3.0.2
+ semver: 7.6.0
+ tar: 6.2.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
'@marsidev/react-turnstile@0.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -7341,7 +8156,7 @@ snapshots:
'@metamask/utils@3.6.0':
dependencies:
'@types/debug': 4.1.9
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
semver: 7.6.0
superstruct: 1.0.3
transitivePeerDependencies:
@@ -7351,7 +8166,7 @@ snapshots:
dependencies:
'@ethereumjs/tx': 4.2.0
'@types/debug': 4.1.9
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
semver: 7.6.0
superstruct: 1.0.3
transitivePeerDependencies:
@@ -7402,6 +8217,30 @@ snapshots:
'@motionone/dom': 10.17.0
tslib: 2.6.2
+ '@multiformats/dns@1.0.6':
+ dependencies:
+ '@types/dns-packet': 5.6.5
+ buffer: 6.0.3
+ dns-packet: 5.6.1
+ hashlru: 2.3.0
+ p-queue: 8.0.1
+ progress-events: 1.0.1
+ uint8arrays: 5.1.0
+
+ '@multiformats/mafmt@12.1.6':
+ dependencies:
+ '@multiformats/multiaddr': 12.3.0
+
+ '@multiformats/multiaddr@12.3.0':
+ dependencies:
+ '@chainsafe/is-ip': 2.0.2
+ '@chainsafe/netmask': 2.0.0
+ '@libp2p/interface': 1.7.0
+ '@multiformats/dns': 1.0.6
+ multiformats: 13.2.2
+ uint8-varint: 2.0.4
+ uint8arrays: 5.1.0
+
'@noble/curves@1.1.0':
dependencies:
'@noble/hashes': 1.3.1
@@ -7656,6 +8495,11 @@ snapshots:
'@parcel/watcher-win32-ia32': 2.4.1
'@parcel/watcher-win32-x64': 2.4.1
+ '@phosphor-icons/react@2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
'@pnpm/config.env-replace@1.1.0': {}
'@pnpm/network.ca-file@1.0.2':
@@ -7668,42 +8512,20 @@ snapshots:
'@pnpm/network.ca-file': 1.0.2
config-chain: 1.1.13
- '@popperjs/core@2.11.8': {}
-
'@privy-io/api-base@1.2.2':
dependencies:
zod: 3.23.8
- '@privy-io/js-sdk-core@0.26.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
- dependencies:
- '@ethersproject/abstract-signer': 5.7.0
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/contracts': 5.7.0
- '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
- '@ethersproject/transactions': 5.7.0
- '@ethersproject/units': 5.7.0
- '@privy-io/api-base': 1.2.2
- '@privy-io/public-api': 2.8.3(bufferutil@4.0.7)(utf-8-validate@5.0.10)
- eventemitter3: 5.0.1
- fetch-retry: 5.0.6
- jose: 4.15.5
- js-cookie: 3.0.5
- set-cookie-parser: 2.7.0
- uuid: 9.0.1
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
- '@privy-io/js-sdk-core@0.26.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
+ '@privy-io/js-sdk-core@0.26.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)':
dependencies:
'@ethersproject/abstract-signer': 5.7.0
'@ethersproject/bignumber': 5.7.0
'@ethersproject/contracts': 5.7.0
- '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@ethersproject/transactions': 5.7.0
'@ethersproject/units': 5.7.0
'@privy-io/api-base': 1.2.2
- '@privy-io/public-api': 2.8.5(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@privy-io/public-api': 2.8.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)
eventemitter3: 5.0.1
fetch-retry: 5.0.6
jose: 4.15.5
@@ -7714,95 +8536,17 @@ snapshots:
- bufferutil
- utf-8-validate
- '@privy-io/public-api@2.8.3(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
- dependencies:
- '@privy-io/api-base': 1.2.2
- ethers: 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
- libphonenumber-js: 1.10.47
- zod: 3.23.8
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
- '@privy-io/public-api@2.8.5(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
+ '@privy-io/public-api@2.8.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)':
dependencies:
'@privy-io/api-base': 1.2.2
- ethers: 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
libphonenumber-js: 1.10.47
zod: 3.23.8
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- '@privy-io/react-auth@1.77.0(@babel/core@7.25.2)(@types/react@18.3.3)(bufferutil@4.0.7)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.22.4)':
- dependencies:
- '@coinbase/wallet-sdk': 4.0.3
- '@ethersproject/abstract-signer': 5.7.0
- '@ethersproject/address': 5.7.0
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/contracts': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
- '@ethersproject/strings': 5.7.0
- '@ethersproject/transactions': 5.7.0
- '@ethersproject/units': 5.7.0
- '@headlessui/react': 1.7.18(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
- '@heroicons/react': 2.1.1(react@18.2.0)
- '@marsidev/react-turnstile': 0.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
- '@metamask/eth-sig-util': 6.0.2
- '@privy-io/js-sdk-core': 0.26.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
- '@simplewebauthn/browser': 9.0.1
- '@walletconnect/ethereum-provider': 2.14.0(@types/react@18.3.3)(bufferutil@4.0.7)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)
- '@walletconnect/modal': 2.6.2(@types/react@18.3.3)(react@18.2.0)
- base64-js: 1.5.1
- dotenv: 16.4.5
- encoding: 0.1.13
- eventemitter3: 5.0.1
- fast-password-entropy: 1.1.1
- jose: 4.15.5
- js-cookie: 3.0.5
- libphonenumber-js: 1.10.47
- lokijs: 1.5.12
- md5: 2.3.0
- mipd: 0.0.7(typescript@5.5.4)
- ofetch: 1.3.4
- pino-pretty: 10.3.1
- qrcode: 1.5.3
- react: 18.2.0
- react-device-detect: 2.2.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
- react-dom: 18.2.0(react@18.2.0)
- secure-password-utilities: 0.2.1
- styled-components: 5.3.11(@babel/core@7.25.2)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)
- tinycolor2: 1.6.0
- uuid: 9.0.1
- viem: 2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.22.4)
- web3-core: 1.10.4(encoding@0.1.13)
- web3-core-helpers: 1.10.3
- transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@babel/core'
- - '@capacitor/preferences'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@react-native-async-storage/async-storage'
- - '@types/react'
- - '@upstash/redis'
- - '@vercel/kv'
- - bufferutil
- - react-is
- - supports-color
- - typescript
- - uWebSockets.js
- - utf-8-validate
- - zod
-
- '@privy-io/react-auth@1.80.0(@babel/core@7.25.2)(@types/react@18.3.3)(bufferutil@4.0.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)':
+ '@privy-io/react-auth@1.80.0(@babel/core@7.25.2)(@types/react@18.3.3)(bufferutil@4.0.8)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)':
dependencies:
'@coinbase/wallet-sdk': 4.0.3
'@ethersproject/abstract-signer': 5.7.0
@@ -7811,7 +8555,7 @@ snapshots:
'@ethersproject/bytes': 5.7.0
'@ethersproject/contracts': 5.7.0
'@ethersproject/logger': 5.7.0
- '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@ethersproject/strings': 5.7.0
'@ethersproject/transactions': 5.7.0
'@ethersproject/units': 5.7.0
@@ -7819,9 +8563,9 @@ snapshots:
'@heroicons/react': 2.1.1(react@18.3.1)
'@marsidev/react-turnstile': 0.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@metamask/eth-sig-util': 6.0.2
- '@privy-io/js-sdk-core': 0.26.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@privy-io/js-sdk-core': 0.26.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@simplewebauthn/browser': 9.0.1
- '@walletconnect/ethereum-provider': 2.15.1(@types/react@18.3.3)(bufferutil@4.0.7)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)
+ '@walletconnect/ethereum-provider': 2.15.1(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)
'@walletconnect/modal': 2.6.2(@types/react@18.3.3)(react@18.3.1)
base64-js: 1.5.1
dotenv: 16.4.5
@@ -7844,7 +8588,7 @@ snapshots:
styled-components: 5.3.11(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1)
tinycolor2: 1.6.0
uuid: 9.0.1
- viem: 2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.19.6(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
web3-core: 1.10.4(encoding@0.1.13)
web3-core-helpers: 1.10.3
transitivePeerDependencies:
@@ -7870,14 +8614,28 @@ snapshots:
- utf-8-validate
- zod
- '@remix-run/router@1.15.2': {}
+ '@privy-io/server-auth@1.11.1(encoding@0.1.13)':
+ dependencies:
+ dotenv: 16.4.5
+ jose: 4.15.5
+ node-fetch-native: 1.6.4
+ redaxios: 0.5.1
+ svix: 1.31.0(encoding@0.1.13)
+ ts-case-convert: 2.0.7
+ type-fest: 3.13.1
+ transitivePeerDependencies:
+ - encoding
'@remix-run/router@1.19.1': {}
+ '@remixicon/react@4.2.0(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
'@rollup/plugin-babel@5.3.1(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@2.79.1)':
dependencies:
'@babel/core': 7.25.2
- '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0)
'@rollup/pluginutils': 3.1.0(rollup@2.79.1)
rollup: 2.79.1
optionalDependencies:
@@ -7908,21 +8666,10 @@ snapshots:
picomatch: 2.3.1
rollup: 2.79.1
- '@rollup/pluginutils@5.0.5(rollup@2.79.1)':
- dependencies:
- '@types/estree': 1.0.5
- estree-walker: 2.0.2
- picomatch: 2.3.1
- optionalDependencies:
- rollup: 2.79.1
-
- '@rollup/pluginutils@5.0.5(rollup@4.20.0)':
+ '@rollup/pluginutils@4.2.1':
dependencies:
- '@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
- optionalDependencies:
- rollup: 4.20.0
'@rollup/rollup-android-arm-eabi@4.20.0':
optional: true
@@ -8068,6 +8815,8 @@ snapshots:
'@stablelib/aead@1.0.1': {}
+ '@stablelib/base64@1.0.1': {}
+
'@stablelib/binary@1.0.1':
dependencies:
'@stablelib/int': 1.0.1
@@ -8153,76 +8902,6 @@ snapshots:
magic-string: 0.25.9
string.prototype.matchall: 4.0.10
- '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
-
- '@svgr/babel-preset@8.1.0(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.25.2)
- '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.25.2)
- '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.25.2)
- '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.25.2)
- '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.25.2)
- '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.25.2)
- '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.25.2)
- '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.25.2)
-
- '@svgr/core@8.1.0(typescript@5.5.4)':
- dependencies:
- '@babel/core': 7.25.2
- '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2)
- camelcase: 6.3.0
- cosmiconfig: 8.3.6(typescript@5.5.4)
- snake-case: 3.0.4
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@svgr/hast-util-to-babel-ast@8.0.0':
- dependencies:
- '@babel/types': 7.25.2
- entities: 4.5.0
-
- '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))':
- dependencies:
- '@babel/core': 7.25.2
- '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2)
- '@svgr/core': 8.1.0(typescript@5.5.4)
- '@svgr/hast-util-to-babel-ast': 8.0.0
- svg-parser: 2.0.4
- transitivePeerDependencies:
- - supports-color
-
'@swc/core-darwin-arm64@1.7.11':
optional: true
@@ -8284,20 +8963,49 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@tanstack/react-virtual@3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
+ '@tailwindcss/forms@0.5.7(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)))':
dependencies:
- '@tanstack/virtual-core': 3.1.3
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
+ mini-svg-data-uri: 1.4.4
+ tailwindcss: 3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4))
- '@tanstack/react-virtual@3.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@tailwindcss/typography@0.5.15(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)))':
dependencies:
- '@tanstack/virtual-core': 3.1.3
+ lodash.castarray: 4.4.0
+ lodash.isplainobject: 4.0.6
+ lodash.merge: 4.6.2
+ postcss-selector-parser: 6.0.10
+ tailwindcss: 3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4))
+
+ '@tanstack/eslint-plugin-query@5.52.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
+ eslint: 9.9.0(jiti@1.21.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@tanstack/query-core@5.52.2': {}
+
+ '@tanstack/react-query@5.52.2(react@18.3.1)':
+ dependencies:
+ '@tanstack/query-core': 5.52.2
+ react: 18.3.1
+
+ '@tanstack/react-virtual@3.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@tanstack/virtual-core': 3.1.3
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@tanstack/virtual-core@3.1.3': {}
+ '@ts-morph/common@0.11.1':
+ dependencies:
+ fast-glob: 3.3.2
+ minimatch: 3.1.2
+ mkdirp: 1.0.4
+ path-browserify: 1.0.1
+
'@tsconfig/node10@1.0.11': {}
'@tsconfig/node12@1.0.11': {}
@@ -8329,16 +9037,22 @@ snapshots:
'@types/bn.js@4.11.6':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
'@types/bn.js@5.1.2':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
+
+ '@types/chai@4.3.19': {}
'@types/debug@4.1.9':
dependencies:
'@types/ms': 0.7.32
+ '@types/dns-packet@5.6.5':
+ dependencies:
+ '@types/node': 22.5.1
+
'@types/estree@0.0.39': {}
'@types/estree@1.0.5': {}
@@ -8346,27 +9060,47 @@ snapshots:
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
+
+ '@types/hoist-non-react-statics@3.3.5':
+ dependencies:
+ '@types/react': 18.3.3
+ hoist-non-react-statics: 3.3.2
'@types/http-cache-semantics@4.0.4': {}
+ '@types/json-schema@7.0.15': {}
+
+ '@types/json5@0.0.29':
+ optional: true
+
'@types/lru-cache@5.1.1': {}
'@types/minimatch@5.1.2': {}
+ '@types/mocha@10.0.6': {}
+
'@types/ms@0.7.32': {}
'@types/node@12.20.55': {}
+ '@types/node@16.18.11': {}
+
'@types/node@18.15.13': {}
- '@types/node@22.1.0':
+ '@types/node@20.8.8':
dependencies:
- undici-types: 6.13.0
+ undici-types: 5.25.3
+
+ '@types/node@22.5.1':
+ dependencies:
+ undici-types: 6.19.8
+
+ '@types/parse-json@4.0.2': {}
'@types/pbkdf2@3.1.0':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
'@types/prettier@2.7.3': {}
@@ -8374,12 +9108,16 @@ snapshots:
'@types/qrcode@1.5.5':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
'@types/react-dom@18.3.0':
dependencies:
'@types/react': 18.3.3
+ '@types/react-transition-group@4.4.11':
+ dependencies:
+ '@types/react': 18.3.3
+
'@types/react@18.3.3':
dependencies:
'@types/prop-types': 15.7.11
@@ -8387,32 +9125,14 @@ snapshots:
'@types/resolve@1.17.1':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
'@types/secp256k1@4.0.4':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
'@types/trusted-types@2.0.4': {}
- '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
- dependencies:
- '@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.1.0
- '@typescript-eslint/type-utils': 8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
- '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.1.0
- eslint: 9.9.0(jiti@1.21.0)
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
- optionalDependencies:
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/eslint-plugin@8.2.0(@typescript-eslint/parser@8.2.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.11.0
@@ -8431,59 +9151,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.1.0
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.1.0
- debug: 4.3.4(supports-color@8.1.1)
- eslint: 9.9.0(jiti@1.21.0)
- optionalDependencies:
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/parser@8.2.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
dependencies:
'@typescript-eslint/scope-manager': 8.2.0
'@typescript-eslint/types': 8.2.0
'@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 8.2.0
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
eslint: 9.9.0(jiti@1.21.0)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.1.0':
+ '@typescript-eslint/scope-manager@8.0.0-alpha.30':
dependencies:
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/visitor-keys': 8.1.0
+ '@typescript-eslint/types': 8.0.0-alpha.30
+ '@typescript-eslint/visitor-keys': 8.0.0-alpha.30
'@typescript-eslint/scope-manager@8.2.0':
dependencies:
'@typescript-eslint/types': 8.2.0
'@typescript-eslint/visitor-keys': 8.2.0
- '@typescript-eslint/type-utils@8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
- dependencies:
- '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
- debug: 4.3.4(supports-color@8.1.1)
- ts-api-utils: 1.3.0(typescript@5.5.4)
- optionalDependencies:
- typescript: 5.5.4
- transitivePeerDependencies:
- - eslint
- - supports-color
-
'@typescript-eslint/type-utils@8.2.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
dependencies:
'@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4)
'@typescript-eslint/utils': 8.2.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
@@ -8491,15 +9186,15 @@ snapshots:
- eslint
- supports-color
- '@typescript-eslint/types@8.1.0': {}
+ '@typescript-eslint/types@8.0.0-alpha.30': {}
'@typescript-eslint/types@8.2.0': {}
- '@typescript-eslint/typescript-estree@8.1.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.0.0-alpha.30(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/visitor-keys': 8.1.0
- debug: 4.3.4(supports-color@8.1.1)
+ '@typescript-eslint/types': 8.0.0-alpha.30
+ '@typescript-eslint/visitor-keys': 8.0.0-alpha.30
+ debug: 4.3.4(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
@@ -8514,7 +9209,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.2.0
'@typescript-eslint/visitor-keys': 8.2.0
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
@@ -8525,12 +9220,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.0.0-alpha.30(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.0))
- '@typescript-eslint/scope-manager': 8.1.0
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.0.0-alpha.30
+ '@typescript-eslint/types': 8.0.0-alpha.30
+ '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.5.4)
eslint: 9.9.0(jiti@1.21.0)
transitivePeerDependencies:
- supports-color
@@ -8547,9 +9242,9 @@ snapshots:
- supports-color
- typescript
- '@typescript-eslint/visitor-keys@8.1.0':
+ '@typescript-eslint/visitor-keys@8.0.0-alpha.30':
dependencies:
- '@typescript-eslint/types': 8.1.0
+ '@typescript-eslint/types': 8.0.0-alpha.30
eslint-visitor-keys: 3.4.3
'@typescript-eslint/visitor-keys@8.2.0':
@@ -8557,73 +9252,89 @@ snapshots:
'@typescript-eslint/types': 8.2.0
eslint-visitor-keys: 3.4.3
- '@vitejs/plugin-react@4.3.1(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0))':
+ '@urql/core@5.0.6(graphql@16.9.0)':
dependencies:
- '@babel/core': 7.25.2
- '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2)
- '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2)
- '@types/babel__core': 7.20.5
- react-refresh: 0.14.2
- vite: 5.4.0(@types/node@22.1.0)(terser@5.21.0)
+ '@0no-co/graphql.web': 1.0.8(graphql@16.9.0)
+ wonka: 6.3.4
transitivePeerDependencies:
+ - graphql
+
+ '@vercel/build-utils@8.3.8': {}
+
+ '@vercel/error-utils@2.0.2': {}
+
+ '@vercel/functions@1.4.1': {}
+
+ '@vercel/nft@0.27.3(encoding@0.1.13)':
+ dependencies:
+ '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13)
+ '@rollup/pluginutils': 4.2.1
+ acorn: 8.12.1
+ acorn-import-attributes: 1.9.5(acorn@8.12.1)
+ async-sema: 3.1.1
+ bindings: 1.5.0
+ estree-walker: 2.0.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ micromatch: 4.0.5
+ node-gyp-build: 4.6.1
+ resolve-from: 5.0.0
+ transitivePeerDependencies:
+ - encoding
- supports-color
- '@vitejs/plugin-react@4.3.1(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0))':
+ '@vercel/node@3.2.10(@swc/core@1.7.11)(encoding@0.1.13)':
+ dependencies:
+ '@edge-runtime/node-utils': 2.3.0
+ '@edge-runtime/primitives': 4.1.0
+ '@edge-runtime/vm': 3.2.0
+ '@types/node': 16.18.11
+ '@vercel/build-utils': 8.3.8
+ '@vercel/error-utils': 2.0.2
+ '@vercel/nft': 0.27.3(encoding@0.1.13)
+ '@vercel/static-config': 3.0.0
+ async-listen: 3.0.0
+ cjs-module-lexer: 1.2.3
+ edge-runtime: 2.5.9
+ es-module-lexer: 1.4.1
+ esbuild: 0.14.47
+ etag: 1.8.1
+ node-fetch: 2.6.9(encoding@0.1.13)
+ path-to-regexp: 6.2.1
+ ts-morph: 12.0.0
+ ts-node: 10.9.1(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@4.9.5)
+ typescript: 4.9.5
+ undici: 5.28.4
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ - encoding
+ - supports-color
+
+ '@vercel/static-config@3.0.0':
+ dependencies:
+ ajv: 8.6.3
+ json-schema-to-ts: 1.6.4
+ ts-morph: 12.0.0
+
+ '@vitejs/plugin-react@4.3.1(vite@5.4.2(@types/node@16.18.11)(terser@5.21.0))':
dependencies:
'@babel/core': 7.25.2
'@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2)
'@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
- vite: 5.4.2(@types/node@22.1.0)(terser@5.21.0)
- transitivePeerDependencies:
- - supports-color
-
- '@walletconnect/core@2.14.0(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)':
- dependencies:
- '@walletconnect/heartbeat': 1.2.2
- '@walletconnect/jsonrpc-provider': 1.0.14
- '@walletconnect/jsonrpc-types': 1.0.4
- '@walletconnect/jsonrpc-utils': 1.0.8
- '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.7)(utf-8-validate@5.0.10)
- '@walletconnect/keyvaluestorage': 1.1.1
- '@walletconnect/logger': 2.1.2
- '@walletconnect/relay-api': 1.0.10
- '@walletconnect/relay-auth': 1.0.4
- '@walletconnect/safe-json': 1.0.2
- '@walletconnect/time': 1.0.2
- '@walletconnect/types': 2.14.0
- '@walletconnect/utils': 2.14.0
- events: 3.3.0
- isomorphic-unfetch: 3.1.0(encoding@0.1.13)
- lodash.isequal: 4.5.0
- uint8arrays: 3.1.0
+ vite: 5.4.2(@types/node@16.18.11)(terser@5.21.0)
transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@capacitor/preferences'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@react-native-async-storage/async-storage'
- - '@upstash/redis'
- - '@vercel/kv'
- - bufferutil
- - encoding
- supports-color
- - uWebSockets.js
- - utf-8-validate
- '@walletconnect/core@2.15.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
+ '@walletconnect/core@2.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)':
dependencies:
'@walletconnect/heartbeat': 1.2.2
'@walletconnect/jsonrpc-provider': 1.0.14
'@walletconnect/jsonrpc-types': 1.0.4
'@walletconnect/jsonrpc-utils': 1.0.8
- '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@walletconnect/keyvaluestorage': 1.1.1
'@walletconnect/logger': 2.1.2
'@walletconnect/relay-api': 1.0.11
@@ -8657,49 +9368,16 @@ snapshots:
dependencies:
tslib: 1.14.1
- '@walletconnect/ethereum-provider@2.14.0(@types/react@18.3.3)(bufferutil@4.0.7)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@5.0.10)':
- dependencies:
- '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13)
- '@walletconnect/jsonrpc-provider': 1.0.14
- '@walletconnect/jsonrpc-types': 1.0.4
- '@walletconnect/jsonrpc-utils': 1.0.8
- '@walletconnect/modal': 2.6.2(@types/react@18.3.3)(react@18.2.0)
- '@walletconnect/sign-client': 2.14.0(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)
- '@walletconnect/types': 2.14.0
- '@walletconnect/universal-provider': 2.14.0(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)
- '@walletconnect/utils': 2.14.0
- events: 3.3.0
- transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@capacitor/preferences'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@react-native-async-storage/async-storage'
- - '@types/react'
- - '@upstash/redis'
- - '@vercel/kv'
- - bufferutil
- - encoding
- - react
- - supports-color
- - uWebSockets.js
- - utf-8-validate
-
- '@walletconnect/ethereum-provider@2.15.1(@types/react@18.3.3)(bufferutil@4.0.7)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)':
+ '@walletconnect/ethereum-provider@2.15.1(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)':
dependencies:
'@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13)
'@walletconnect/jsonrpc-provider': 1.0.14
'@walletconnect/jsonrpc-types': 1.0.4
'@walletconnect/jsonrpc-utils': 1.0.8
'@walletconnect/modal': 2.6.2(@types/react@18.3.3)(react@18.3.1)
- '@walletconnect/sign-client': 2.15.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@walletconnect/sign-client': 2.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@walletconnect/types': 2.15.1
- '@walletconnect/universal-provider': 2.15.1(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)
+ '@walletconnect/universal-provider': 2.15.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
'@walletconnect/utils': 2.15.1
events: 3.3.0
transitivePeerDependencies:
@@ -8760,12 +9438,12 @@ snapshots:
'@walletconnect/jsonrpc-types': 1.0.4
tslib: 1.14.1
- '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
+ '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10)':
dependencies:
'@walletconnect/jsonrpc-utils': 1.0.8
'@walletconnect/safe-json': 1.0.2
events: 3.3.0
- ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -8795,13 +9473,6 @@ snapshots:
'@walletconnect/safe-json': 1.0.2
pino: 7.11.0
- '@walletconnect/modal-core@2.6.2(@types/react@18.3.3)(react@18.2.0)':
- dependencies:
- valtio: 1.11.2(@types/react@18.3.3)(react@18.2.0)
- transitivePeerDependencies:
- - '@types/react'
- - react
-
'@walletconnect/modal-core@2.6.2(@types/react@18.3.3)(react@18.3.1)':
dependencies:
valtio: 1.11.2(@types/react@18.3.3)(react@18.3.1)
@@ -8809,16 +9480,6 @@ snapshots:
- '@types/react'
- react
- '@walletconnect/modal-ui@2.6.2(@types/react@18.3.3)(react@18.2.0)':
- dependencies:
- '@walletconnect/modal-core': 2.6.2(@types/react@18.3.3)(react@18.2.0)
- lit: 2.8.0
- motion: 10.16.2
- qrcode: 1.5.3
- transitivePeerDependencies:
- - '@types/react'
- - react
-
'@walletconnect/modal-ui@2.6.2(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@walletconnect/modal-core': 2.6.2(@types/react@18.3.3)(react@18.3.1)
@@ -8829,14 +9490,6 @@ snapshots:
- '@types/react'
- react
- '@walletconnect/modal@2.6.2(@types/react@18.3.3)(react@18.2.0)':
- dependencies:
- '@walletconnect/modal-core': 2.6.2(@types/react@18.3.3)(react@18.2.0)
- '@walletconnect/modal-ui': 2.6.2(@types/react@18.3.3)(react@18.2.0)
- transitivePeerDependencies:
- - '@types/react'
- - react
-
'@walletconnect/modal@2.6.2(@types/react@18.3.3)(react@18.3.1)':
dependencies:
'@walletconnect/modal-core': 2.6.2(@types/react@18.3.3)(react@18.3.1)
@@ -8845,10 +9498,6 @@ snapshots:
- '@types/react'
- react
- '@walletconnect/relay-api@1.0.10':
- dependencies:
- '@walletconnect/jsonrpc-types': 1.0.4
-
'@walletconnect/relay-api@1.0.11':
dependencies:
'@walletconnect/jsonrpc-types': 1.0.4
@@ -8866,39 +9515,9 @@ snapshots:
dependencies:
tslib: 1.14.1
- '@walletconnect/sign-client@2.14.0(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)':
- dependencies:
- '@walletconnect/core': 2.14.0(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)
- '@walletconnect/events': 1.0.1
- '@walletconnect/heartbeat': 1.2.2
- '@walletconnect/jsonrpc-utils': 1.0.8
- '@walletconnect/logger': 2.1.2
- '@walletconnect/time': 1.0.2
- '@walletconnect/types': 2.14.0
- '@walletconnect/utils': 2.14.0
- events: 3.3.0
- transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@capacitor/preferences'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@react-native-async-storage/async-storage'
- - '@upstash/redis'
- - '@vercel/kv'
- - bufferutil
- - encoding
- - supports-color
- - uWebSockets.js
- - utf-8-validate
-
- '@walletconnect/sign-client@2.15.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)':
+ '@walletconnect/sign-client@2.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)':
dependencies:
- '@walletconnect/core': 2.15.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@walletconnect/core': 2.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@walletconnect/events': 1.0.1
'@walletconnect/heartbeat': 1.2.2
'@walletconnect/jsonrpc-utils': 1.0.8
@@ -8929,30 +9548,6 @@ snapshots:
dependencies:
tslib: 1.14.1
- '@walletconnect/types@2.14.0':
- dependencies:
- '@walletconnect/events': 1.0.1
- '@walletconnect/heartbeat': 1.2.2
- '@walletconnect/jsonrpc-types': 1.0.4
- '@walletconnect/keyvaluestorage': 1.1.1
- '@walletconnect/logger': 2.1.2
- events: 3.3.0
- transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@capacitor/preferences'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@react-native-async-storage/async-storage'
- - '@upstash/redis'
- - '@vercel/kv'
- - supports-color
- - uWebSockets.js
-
'@walletconnect/types@2.15.1':
dependencies:
'@walletconnect/events': 1.0.1
@@ -8977,44 +9572,14 @@ snapshots:
- supports-color
- uWebSockets.js
- '@walletconnect/universal-provider@2.14.0(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)':
+ '@walletconnect/universal-provider@2.15.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)':
dependencies:
'@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13)
'@walletconnect/jsonrpc-provider': 1.0.14
'@walletconnect/jsonrpc-types': 1.0.4
'@walletconnect/jsonrpc-utils': 1.0.8
'@walletconnect/logger': 2.1.2
- '@walletconnect/sign-client': 2.14.0(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)
- '@walletconnect/types': 2.14.0
- '@walletconnect/utils': 2.14.0
- events: 3.3.0
- transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@capacitor/preferences'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@react-native-async-storage/async-storage'
- - '@upstash/redis'
- - '@vercel/kv'
- - bufferutil
- - encoding
- - supports-color
- - uWebSockets.js
- - utf-8-validate
-
- '@walletconnect/universal-provider@2.15.1(bufferutil@4.0.7)(encoding@0.1.13)(utf-8-validate@5.0.10)':
- dependencies:
- '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13)
- '@walletconnect/jsonrpc-provider': 1.0.14
- '@walletconnect/jsonrpc-types': 1.0.4
- '@walletconnect/jsonrpc-utils': 1.0.8
- '@walletconnect/logger': 2.1.2
- '@walletconnect/sign-client': 2.15.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@walletconnect/sign-client': 2.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@walletconnect/types': 2.15.1
'@walletconnect/utils': 2.15.1
events: 3.3.0
@@ -9037,38 +9602,6 @@ snapshots:
- uWebSockets.js
- utf-8-validate
- '@walletconnect/utils@2.14.0':
- dependencies:
- '@stablelib/chacha20poly1305': 1.0.1
- '@stablelib/hkdf': 1.0.1
- '@stablelib/random': 1.0.2
- '@stablelib/sha256': 1.0.1
- '@stablelib/x25519': 1.0.3
- '@walletconnect/relay-api': 1.0.10
- '@walletconnect/safe-json': 1.0.2
- '@walletconnect/time': 1.0.2
- '@walletconnect/types': 2.14.0
- '@walletconnect/window-getters': 1.0.1
- '@walletconnect/window-metadata': 1.0.1
- detect-browser: 5.3.0
- query-string: 7.1.3
- uint8arrays: 3.1.0
- transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@capacitor/preferences'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@react-native-async-storage/async-storage'
- - '@upstash/redis'
- - '@vercel/kv'
- - supports-color
- - uWebSockets.js
-
'@walletconnect/utils@2.15.1':
dependencies:
'@stablelib/chacha20poly1305': 1.0.1
@@ -9110,33 +9643,8 @@ snapshots:
'@walletconnect/window-getters': 1.0.1
tslib: 1.14.1
- '@xstate/react@3.2.2(@types/react@18.3.3)(react@18.2.0)(xstate@4.38.2)':
- dependencies:
- react: 18.2.0
- use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.2.0)
- use-sync-external-store: 1.2.0(react@18.2.0)
- optionalDependencies:
- xstate: 4.38.2
- transitivePeerDependencies:
- - '@types/react'
-
- '@xstate/react@4.1.1(@types/react@18.3.3)(react@18.3.1)(xstate@5.17.4)':
- dependencies:
- react: 18.3.1
- use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1)
- use-sync-external-store: 1.2.0(react@18.3.1)
- optionalDependencies:
- xstate: 5.17.4
- transitivePeerDependencies:
- - '@types/react'
-
abbrev@1.0.9: {}
- abitype@1.0.5(typescript@5.5.4)(zod@3.22.4):
- optionalDependencies:
- typescript: 5.5.4
- zod: 3.22.4
-
abitype@1.0.5(typescript@5.5.4)(zod@3.23.8):
optionalDependencies:
typescript: 5.5.4
@@ -9148,6 +9656,10 @@ snapshots:
abortcontroller-polyfill@1.7.5: {}
+ acorn-import-attributes@1.9.5(acorn@8.12.1):
+ dependencies:
+ acorn: 8.12.1
+
acorn-jsx@5.3.2(acorn@8.12.1):
dependencies:
acorn: 8.12.1
@@ -9166,7 +9678,7 @@ snapshots:
agent-base@6.0.2:
dependencies:
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -9189,6 +9701,13 @@ snapshots:
require-from-string: 2.0.2
uri-js: 4.4.1
+ ajv@8.6.3:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+
amdefine@1.0.1:
optional: true
@@ -9223,6 +9742,13 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.1
+ aproba@2.0.0: {}
+
+ are-we-there-yet@2.0.0:
+ dependencies:
+ delegates: 1.0.0
+ readable-stream: 3.6.2
+
arg@4.1.3: {}
arg@5.0.2: {}
@@ -9233,27 +9759,38 @@ snapshots:
argparse@2.0.1: {}
- array-buffer-byte-length@1.0.0:
+ array-buffer-byte-length@1.0.1:
dependencies:
- call-bind: 1.0.2
- is-array-buffer: 3.0.2
+ call-bind: 1.0.7
+ is-array-buffer: 3.0.4
array-union@2.1.0: {}
- arraybuffer.prototype.slice@1.0.2:
+ arraybuffer.prototype.slice@1.0.3:
dependencies:
- array-buffer-byte-length: 1.0.0
- call-bind: 1.0.2
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.2
- get-intrinsic: 1.2.1
- is-array-buffer: 3.0.2
- is-shared-array-buffer: 1.0.2
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ is-array-buffer: 3.0.4
+ is-shared-array-buffer: 1.0.3
+
+ arrify@1.0.1: {}
+
+ assertion-error@1.1.0: {}
ast-parents@0.0.1: {}
astral-regex@2.0.0: {}
+ async-listen@3.0.0: {}
+
+ async-listen@3.0.1: {}
+
+ async-sema@3.1.1: {}
+
async@1.5.2: {}
async@3.2.4: {}
@@ -9264,8 +9801,6 @@ snapshots:
atomic-sleep@1.0.0: {}
- attr-accept@2.2.2: {}
-
autoprefixer@10.4.20(postcss@8.4.41):
dependencies:
browserslist: 4.23.3
@@ -9278,6 +9813,10 @@ snapshots:
available-typed-arrays@1.0.5: {}
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.0.0
+
axios@1.7.3(debug@4.3.4):
dependencies:
follow-redirects: 1.15.6(debug@4.3.4)
@@ -9286,6 +9825,12 @@ snapshots:
transitivePeerDependencies:
- debug
+ babel-plugin-macros@3.1.0:
+ dependencies:
+ '@babel/runtime': 7.24.0
+ cosmiconfig: 7.1.0
+ resolve: 1.22.6
+
babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.25.2):
dependencies:
'@babel/compat-data': 7.25.2
@@ -9310,18 +9855,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-plugin-styled-components@2.1.4(@babel/core@7.25.2)(styled-components@5.3.11(@babel/core@7.25.2)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0))(supports-color@5.5.0):
- dependencies:
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0)
- '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.25.2)
- lodash: 4.17.21
- picomatch: 2.3.1
- styled-components: 5.3.11(@babel/core@7.25.2)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0)
- transitivePeerDependencies:
- - '@babel/core'
- - supports-color
-
babel-plugin-styled-components@2.1.4(@babel/core@7.25.2)(styled-components@5.3.11(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1))(supports-color@5.5.0):
dependencies:
'@babel/helper-annotate-as-pure': 7.22.5
@@ -9350,6 +9883,10 @@ snapshots:
binary-extensions@2.2.0: {}
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
blakejs@1.2.1: {}
bn.js@4.11.6: {}
@@ -9421,7 +9958,7 @@ snapshots:
base64-js: 1.5.1
ieee754: 1.2.1
- bufferutil@4.0.7:
+ bufferutil@4.0.8:
dependencies:
node-gyp-build: 4.6.1
@@ -9446,6 +9983,14 @@ snapshots:
function-bind: 1.1.1
get-intrinsic: 1.2.1
+ call-bind@1.0.7:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.2
+
callsites@3.1.0: {}
camelcase-css@2.0.1: {}
@@ -9458,6 +10003,16 @@ snapshots:
caniuse-lite@1.0.30001651: {}
+ chai@4.3.10:
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.4
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.1.0
+
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -9471,6 +10026,10 @@ snapshots:
charenc@0.0.2: {}
+ check-error@1.0.3:
+ dependencies:
+ get-func-name: 2.0.2
+
chokidar@3.5.3:
dependencies:
anymatch: 3.1.3
@@ -9483,6 +10042,20 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chownr@2.0.0: {}
+
ci-info@2.0.0: {}
cipher-base@1.0.4:
@@ -9494,6 +10067,8 @@ snapshots:
dependencies:
consola: 3.2.3
+ cjs-module-lexer@1.2.3: {}
+
clean-stack@2.2.0: {}
cli-boxes@2.2.1: {}
@@ -9528,6 +10103,8 @@ snapshots:
cluster-key-slot@1.1.2: {}
+ code-block-writer@10.1.1: {}
+
color-convert@1.9.3:
dependencies:
color-name: 1.1.3
@@ -9540,6 +10117,8 @@ snapshots:
color-name@1.1.4: {}
+ color-support@1.1.3: {}
+
colorette@2.0.20: {}
combined-stream@1.0.8:
@@ -9583,6 +10162,12 @@ snapshots:
consola@3.2.3: {}
+ console-control-strings@1.1.0: {}
+
+ convert-hrtime@3.0.0: {}
+
+ convert-source-map@1.9.0: {}
+
convert-source-map@2.0.0: {}
cookie-es@1.0.0: {}
@@ -9593,6 +10178,14 @@ snapshots:
dependencies:
browserslist: 4.23.3
+ cosmiconfig@7.1.0:
+ dependencies:
+ '@types/parse-json': 4.0.2
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+
cosmiconfig@8.3.6(typescript@5.5.4):
dependencies:
import-fresh: 3.3.0
@@ -9649,6 +10242,11 @@ snapshots:
css-color-keywords@1.0.0: {}
+ css-selector-tokenizer@0.8.0:
+ dependencies:
+ cssesc: 3.0.0
+ fastparse: 1.1.2
+
css-to-react-native@3.2.0:
dependencies:
camelize: 1.0.1
@@ -9659,17 +10257,50 @@ snapshots:
csstype@3.1.2: {}
+ culori@3.3.0: {}
+
d@1.0.2:
dependencies:
es5-ext: 0.10.64
type: 2.7.2
+ daisyui@4.12.10(postcss@8.4.41):
+ dependencies:
+ css-selector-tokenizer: 0.8.0
+ culori: 3.3.0
+ picocolors: 1.0.1
+ postcss-js: 4.0.1(postcss@8.4.41)
+ transitivePeerDependencies:
+ - postcss
+
+ data-uri-to-buffer@4.0.1: {}
+
+ data-view-buffer@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
+ data-view-byte-offset@1.0.0:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+
date-fns@2.30.0:
dependencies:
'@babel/runtime': 7.24.0
dateformat@4.6.3: {}
+ dayjs@1.11.13: {}
+
death@1.1.0: {}
debug@2.6.9:
@@ -9698,6 +10329,10 @@ snapshots:
dependencies:
mimic-response: 3.1.0
+ deep-eql@4.1.4:
+ dependencies:
+ type-detect: 4.1.0
+
deep-extend@0.6.0: {}
deep-is@0.1.4: {}
@@ -9706,22 +10341,24 @@ snapshots:
defer-to-connect@2.0.1: {}
- define-data-property@1.1.0:
+ define-data-property@1.1.4:
dependencies:
- get-intrinsic: 1.2.1
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
gopd: 1.0.1
- has-property-descriptors: 1.0.0
define-properties@1.2.1:
dependencies:
- define-data-property: 1.1.0
- has-property-descriptors: 1.0.0
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
object-keys: 1.1.1
defu@6.1.4: {}
delayed-stream@1.0.0: {}
+ delegates@1.0.0: {}
+
denque@2.1.0: {}
depd@2.0.0: {}
@@ -9734,8 +10371,12 @@ snapshots:
detect-libc@1.0.3: {}
+ detect-libc@2.0.3: {}
+
didyoumean@1.2.2: {}
+ diff@3.5.0: {}
+
diff@4.0.2: {}
diff@5.0.0: {}
@@ -9752,10 +10393,18 @@ snapshots:
dlv@1.1.3: {}
- dot-case@3.0.4:
+ dns-packet@5.6.1:
dependencies:
- no-case: 3.0.4
- tslib: 2.6.2
+ '@leichtgewicht/ip-codec': 2.0.5
+
+ dom-helpers@5.2.1:
+ dependencies:
+ '@babel/runtime': 7.24.0
+ csstype: 3.1.2
+
+ dotenv-expand@11.0.6:
+ dependencies:
+ dotenv: 16.4.5
dotenv@16.4.5: {}
@@ -9766,6 +10415,18 @@ snapshots:
readable-stream: 3.6.2
stream-shift: 1.0.3
+ edge-runtime@2.5.9:
+ dependencies:
+ '@edge-runtime/format': 2.2.1
+ '@edge-runtime/ponyfill': 2.4.2
+ '@edge-runtime/vm': 3.2.0
+ async-listen: 3.0.1
+ mri: 1.2.0
+ picocolors: 1.0.0
+ pretty-ms: 7.0.1
+ signal-exit: 4.0.2
+ time-span: 4.0.0
+
ejs@3.1.9:
dependencies:
jake: 10.8.7
@@ -9799,89 +10460,208 @@ snapshots:
ansi-colors: 4.1.3
strip-ansi: 6.0.1
- entities@4.5.0: {}
-
env-paths@2.2.1: {}
envfile@6.18.0: {}
+ envio-darwin-arm64@2.1.0:
+ optional: true
+
+ envio-darwin-x64@2.1.0:
+ optional: true
+
+ envio-linux-arm64@2.1.0:
+ optional: true
+
+ envio-linux-x64@2.1.0:
+ optional: true
+
+ envio@2.1.0:
+ optionalDependencies:
+ envio-darwin-arm64: 2.1.0
+ envio-darwin-x64: 2.1.0
+ envio-linux-arm64: 2.1.0
+ envio-linux-x64: 2.1.0
+
error-ex@1.3.2:
dependencies:
is-arrayish: 0.2.1
- es-abstract@1.22.2:
- dependencies:
- array-buffer-byte-length: 1.0.0
- arraybuffer.prototype.slice: 1.0.2
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
- es-set-tostringtag: 2.0.1
+ es-abstract@1.23.3:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ arraybuffer.prototype.slice: 1.0.3
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ data-view-buffer: 1.0.1
+ data-view-byte-length: 1.0.1
+ data-view-byte-offset: 1.0.0
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-set-tostringtag: 2.0.3
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
- get-intrinsic: 1.2.1
- get-symbol-description: 1.0.0
+ get-intrinsic: 1.2.4
+ get-symbol-description: 1.0.2
globalthis: 1.0.3
gopd: 1.0.1
- has: 1.0.3
- has-property-descriptors: 1.0.0
- has-proto: 1.0.1
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
has-symbols: 1.0.3
- internal-slot: 1.0.5
- is-array-buffer: 3.0.2
+ hasown: 2.0.2
+ internal-slot: 1.0.7
+ is-array-buffer: 3.0.4
is-callable: 1.2.7
- is-negative-zero: 2.0.2
+ is-data-view: 1.0.1
+ is-negative-zero: 2.0.3
is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
+ is-shared-array-buffer: 1.0.3
is-string: 1.0.7
- is-typed-array: 1.1.12
+ is-typed-array: 1.1.13
is-weakref: 1.0.2
- object-inspect: 1.12.3
+ object-inspect: 1.13.2
object-keys: 1.1.1
- object.assign: 4.1.4
- regexp.prototype.flags: 1.5.1
- safe-array-concat: 1.0.1
- safe-regex-test: 1.0.0
- string.prototype.trim: 1.2.8
- string.prototype.trimend: 1.0.7
- string.prototype.trimstart: 1.0.7
- typed-array-buffer: 1.0.0
- typed-array-byte-length: 1.0.0
- typed-array-byte-offset: 1.0.0
- typed-array-length: 1.0.4
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.2
+ safe-array-concat: 1.1.2
+ safe-regex-test: 1.0.3
+ string.prototype.trim: 1.2.9
+ string.prototype.trimend: 1.0.8
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.2
+ typed-array-byte-length: 1.0.1
+ typed-array-byte-offset: 1.0.2
+ typed-array-length: 1.0.6
unbox-primitive: 1.0.2
- which-typed-array: 1.1.11
+ which-typed-array: 1.1.15
- es-set-tostringtag@2.0.1:
+ es-define-property@1.0.0:
dependencies:
- get-intrinsic: 1.2.1
- has: 1.0.3
- has-tostringtag: 1.0.0
+ get-intrinsic: 1.2.4
+
+ es-errors@1.3.0: {}
+
+ es-module-lexer@1.4.1: {}
+
+ es-object-atoms@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.0.3:
+ dependencies:
+ get-intrinsic: 1.2.4
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ es-to-primitive@1.2.1:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+
+ es5-ext@0.10.64:
+ dependencies:
+ es6-iterator: 2.0.3
+ es6-symbol: 3.1.4
+ esniff: 2.0.1
+ next-tick: 1.1.0
+
+ es6-iterator@2.0.3:
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ es6-symbol: 3.1.4
+
+ es6-promise@4.2.8: {}
+
+ es6-symbol@3.1.4:
+ dependencies:
+ d: 1.0.2
+ ext: 1.7.0
+
+ esbuild-android-64@0.14.47:
+ optional: true
+
+ esbuild-android-arm64@0.14.47:
+ optional: true
+
+ esbuild-darwin-64@0.14.47:
+ optional: true
+
+ esbuild-darwin-arm64@0.14.47:
+ optional: true
+
+ esbuild-freebsd-64@0.14.47:
+ optional: true
+
+ esbuild-freebsd-arm64@0.14.47:
+ optional: true
+
+ esbuild-linux-32@0.14.47:
+ optional: true
+
+ esbuild-linux-64@0.14.47:
+ optional: true
+
+ esbuild-linux-arm64@0.14.47:
+ optional: true
+
+ esbuild-linux-arm@0.14.47:
+ optional: true
+
+ esbuild-linux-mips64le@0.14.47:
+ optional: true
+
+ esbuild-linux-ppc64le@0.14.47:
+ optional: true
+
+ esbuild-linux-riscv64@0.14.47:
+ optional: true
+
+ esbuild-linux-s390x@0.14.47:
+ optional: true
+
+ esbuild-netbsd-64@0.14.47:
+ optional: true
- es-to-primitive@1.2.1:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
+ esbuild-openbsd-64@0.14.47:
+ optional: true
- es5-ext@0.10.64:
- dependencies:
- es6-iterator: 2.0.3
- es6-symbol: 3.1.4
- esniff: 2.0.1
- next-tick: 1.1.0
+ esbuild-sunos-64@0.14.47:
+ optional: true
- es6-iterator@2.0.3:
- dependencies:
- d: 1.0.2
- es5-ext: 0.10.64
- es6-symbol: 3.1.4
+ esbuild-windows-32@0.14.47:
+ optional: true
- es6-promise@4.2.8: {}
+ esbuild-windows-64@0.14.47:
+ optional: true
- es6-symbol@3.1.4:
- dependencies:
- d: 1.0.2
- ext: 1.7.0
+ esbuild-windows-arm64@0.14.47:
+ optional: true
+
+ esbuild@0.14.47:
+ optionalDependencies:
+ esbuild-android-64: 0.14.47
+ esbuild-android-arm64: 0.14.47
+ esbuild-darwin-64: 0.14.47
+ esbuild-darwin-arm64: 0.14.47
+ esbuild-freebsd-64: 0.14.47
+ esbuild-freebsd-arm64: 0.14.47
+ esbuild-linux-32: 0.14.47
+ esbuild-linux-64: 0.14.47
+ esbuild-linux-arm: 0.14.47
+ esbuild-linux-arm64: 0.14.47
+ esbuild-linux-mips64le: 0.14.47
+ esbuild-linux-ppc64le: 0.14.47
+ esbuild-linux-riscv64: 0.14.47
+ esbuild-linux-s390x: 0.14.47
+ esbuild-netbsd-64: 0.14.47
+ esbuild-openbsd-64: 0.14.47
+ esbuild-sunos-64: 0.14.47
+ esbuild-windows-32: 0.14.47
+ esbuild-windows-64: 0.14.47
+ esbuild-windows-arm64: 0.14.47
esbuild@0.21.5:
optionalDependencies:
@@ -9924,10 +10704,6 @@ snapshots:
optionalDependencies:
source-map: 0.2.0
- eslint-plugin-react-hooks@4.6.0(eslint@9.9.0(jiti@1.21.0)):
- dependencies:
- eslint: 9.9.0(jiti@1.21.0)
-
eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.9.0(jiti@1.21.0)):
dependencies:
eslint: 9.9.0(jiti@1.21.0)
@@ -9958,7 +10734,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
escape-string-regexp: 4.0.0
eslint-scope: 8.0.2
eslint-visitor-keys: 4.0.0
@@ -10021,6 +10797,8 @@ snapshots:
esutils@2.0.3: {}
+ etag@1.8.1: {}
+
ethereum-bloom-filters@1.0.10:
dependencies:
js-sha3: 0.8.0
@@ -10072,7 +10850,7 @@ snapshots:
ethjs-util: 0.1.6
rlp: 2.2.7
- ethers@5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10):
+ ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10):
dependencies:
'@ethersproject/abi': 5.7.0
'@ethersproject/abstract-provider': 5.7.0
@@ -10092,7 +10870,7 @@ snapshots:
'@ethersproject/networks': 5.7.1
'@ethersproject/pbkdf2': 5.7.0
'@ethersproject/properties': 5.7.0
- '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
'@ethersproject/random': 5.7.0
'@ethersproject/rlp': 5.7.0
'@ethersproject/sha2': 5.7.0
@@ -10108,7 +10886,7 @@ snapshots:
- bufferutil
- utf-8-validate
- ethers@6.13.2(bufferutil@4.0.7)(utf-8-validate@5.0.10):
+ ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10):
dependencies:
'@adraffy/ens-normalize': 1.10.1
'@noble/curves': 1.2.0
@@ -10116,7 +10894,20 @@ snapshots:
'@types/node': 18.15.13
aes-js: 4.0.0-beta.5
tslib: 2.4.0
- ws: 8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ ethers@6.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10):
+ dependencies:
+ '@adraffy/ens-normalize': 1.10.0
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@types/node': 18.15.13
+ aes-js: 4.0.0-beta.5
+ tslib: 2.4.0
+ ws: 8.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -10189,6 +10980,10 @@ snapshots:
fast-safe-stringify@2.1.1: {}
+ fast-sha256@1.3.0: {}
+
+ fastparse@1.1.2: {}
+
fastq@1.15.0:
dependencies:
reusify: 1.0.4
@@ -10197,15 +10992,18 @@ snapshots:
optionalDependencies:
picomatch: 4.0.2
+ fetch-blob@3.2.0:
+ dependencies:
+ node-domexception: 1.0.0
+ web-streams-polyfill: 3.3.3
+
fetch-retry@5.0.6: {}
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
- file-selector@0.6.0:
- dependencies:
- tslib: 2.6.2
+ file-uri-to-path@1.0.0: {}
filelist@1.0.4:
dependencies:
@@ -10217,6 +11015,8 @@ snapshots:
filter-obj@1.1.0: {}
+ find-root@1.1.0: {}
+
find-up@2.1.0:
dependencies:
locate-path: 2.0.0
@@ -10240,13 +11040,9 @@ snapshots:
flatted@3.2.9: {}
- follow-redirects@1.15.5(debug@4.3.4):
- optionalDependencies:
- debug: 4.3.4(supports-color@8.1.1)
-
follow-redirects@1.15.6(debug@4.3.4):
optionalDependencies:
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
for-each@0.3.3:
dependencies:
@@ -10260,6 +11056,10 @@ snapshots:
combined-stream: 1.0.8
mime-types: 2.1.35
+ formdata-polyfill@4.0.10:
+ dependencies:
+ fetch-blob: 3.2.0
+
fp-ts@1.19.3: {}
fraction.js@4.3.7: {}
@@ -10291,6 +11091,10 @@ snapshots:
jsonfile: 6.1.0
universalify: 2.0.0
+ fs-minipass@2.1.0:
+ dependencies:
+ minipass: 3.3.6
+
fs.realpath@1.0.0: {}
fsevents@2.3.3:
@@ -10298,26 +11102,50 @@ snapshots:
function-bind@1.1.1: {}
+ function-bind@1.1.2: {}
+
function.prototype.name@1.1.6:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.23.3
functions-have-names: 1.2.3
functions-have-names@1.2.3: {}
+ gauge@3.0.2:
+ dependencies:
+ aproba: 2.0.0
+ color-support: 1.1.3
+ console-control-strings: 1.1.0
+ has-unicode: 2.0.1
+ object-assign: 4.1.1
+ signal-exit: 3.0.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wide-align: 1.1.5
+
gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: {}
+ get-func-name@2.0.2: {}
+
get-intrinsic@1.2.1:
dependencies:
- function-bind: 1.1.1
+ function-bind: 1.1.2
has: 1.0.3
has-proto: 1.0.1
has-symbols: 1.0.3
+ get-intrinsic@1.2.4:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+
get-own-enumerable-property-symbols@3.0.2: {}
get-port-please@3.1.2: {}
@@ -10326,10 +11154,11 @@ snapshots:
get-stream@8.0.1: {}
- get-symbol-description@1.0.0:
+ get-symbol-description@1.0.2:
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
ghost-testrpc@0.0.2:
dependencies:
@@ -10449,6 +11278,18 @@ snapshots:
p-cancelable: 3.0.0
responselike: 3.0.0
+ gql.tada@1.8.6(graphql@16.9.0)(typescript@5.5.4):
+ dependencies:
+ '@0no-co/graphql.web': 1.0.8(graphql@16.9.0)
+ '@0no-co/graphqlsp': 1.12.13(graphql@16.9.0)(typescript@5.5.4)
+ '@gql.tada/cli-utils': 1.6.1(@0no-co/graphqlsp@1.12.13(graphql@16.9.0)(typescript@5.5.4))(graphql@16.9.0)(typescript@5.5.4)
+ '@gql.tada/internal': 1.0.7(graphql@16.9.0)(typescript@5.5.4)
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - graphql
+
graceful-fs@4.2.10: {}
graceful-fs@4.2.11: {}
@@ -10481,7 +11322,7 @@ snapshots:
optionalDependencies:
uglify-js: 3.17.4
- hardhat@2.22.1(bufferutil@4.0.7)(ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10):
+ hardhat@2.22.1(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10):
dependencies:
'@ethersproject/abi': 5.7.0
'@metamask/eth-sig-util': 4.0.1
@@ -10498,9 +11339,9 @@ snapshots:
ansi-escapes: 4.3.2
boxen: 5.1.2
chalk: 2.4.2
- chokidar: 3.5.3
+ chokidar: 3.6.0
ci-info: 2.0.0
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
enquirer: 2.4.1
env-paths: 2.2.1
ethereum-cryptography: 1.2.0
@@ -10525,9 +11366,9 @@ snapshots:
tsort: 0.0.1
undici: 5.25.4
uuid: 8.3.2
- ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10)
optionalDependencies:
- ts-node: 10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4)
+ ts-node: 10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.5.1)(typescript@5.5.4)
typescript: 5.5.4
transitivePeerDependencies:
- bufferutil
@@ -10535,7 +11376,7 @@ snapshots:
- supports-color
- utf-8-validate
- hardhat@2.22.4(bufferutil@4.0.7)(ts-node@10.9.2(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10):
+ hardhat@2.22.4(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10):
dependencies:
'@ethersproject/abi': 5.7.0
'@metamask/eth-sig-util': 4.0.1
@@ -10552,9 +11393,9 @@ snapshots:
ansi-escapes: 4.3.2
boxen: 5.1.2
chalk: 2.4.2
- chokidar: 3.5.3
+ chokidar: 3.6.0
ci-info: 2.0.0
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
enquirer: 2.4.1
env-paths: 2.2.1
ethereum-cryptography: 1.2.0
@@ -10579,9 +11420,9 @@ snapshots:
tsort: 0.0.1
undici: 5.25.4
uuid: 8.3.2
- ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10)
optionalDependencies:
- ts-node: 10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4)
+ ts-node: 10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.5.1)(typescript@5.5.4)
typescript: 5.5.4
transitivePeerDependencies:
- bufferutil
@@ -10597,18 +11438,26 @@ snapshots:
has-flag@4.0.0: {}
- has-property-descriptors@1.0.0:
+ has-property-descriptors@1.0.2:
dependencies:
- get-intrinsic: 1.2.1
+ es-define-property: 1.0.0
has-proto@1.0.1: {}
+ has-proto@1.0.3: {}
+
has-symbols@1.0.3: {}
has-tostringtag@1.0.0:
dependencies:
has-symbols: 1.0.3
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.0.3
+
+ has-unicode@2.0.1: {}
+
has@1.0.3:
dependencies:
function-bind: 1.1.1
@@ -10624,6 +11473,12 @@ snapshots:
inherits: 2.0.4
minimalistic-assert: 1.0.1
+ hashlru@2.3.0: {}
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
he@1.2.0: {}
heap@0.2.7: {}
@@ -10664,7 +11519,7 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -10708,14 +11563,21 @@ snapshots:
ini@1.3.8: {}
- internal-slot@1.0.5:
+ internal-slot@1.0.7:
dependencies:
- get-intrinsic: 1.2.1
- has: 1.0.3
+ es-errors: 1.3.0
+ hasown: 2.0.2
side-channel: 1.0.4
interpret@1.4.0: {}
+ intl-messageformat@10.5.14:
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/fast-memoize': 2.2.0
+ '@formatjs/icu-messageformat-parser': 2.7.8
+ tslib: 2.6.2
+
io-ts@1.10.4:
dependencies:
fp-ts: 1.19.3
@@ -10724,7 +11586,7 @@ snapshots:
dependencies:
'@ioredis/commands': 1.2.0
cluster-key-slot: 1.1.2
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
denque: 2.1.0
lodash.defaults: 4.2.0
lodash.isarguments: 3.1.0
@@ -10741,11 +11603,10 @@ snapshots:
call-bind: 1.0.2
has-tostringtag: 1.0.0
- is-array-buffer@3.0.2:
+ is-array-buffer@3.0.4:
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
- is-typed-array: 1.1.12
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
is-arrayish@0.2.1: {}
@@ -10759,8 +11620,8 @@ snapshots:
is-boolean-object@1.1.2:
dependencies:
- call-bind: 1.0.2
- has-tostringtag: 1.0.0
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
is-buffer@1.1.6: {}
@@ -10770,9 +11631,13 @@ snapshots:
dependencies:
has: 1.0.3
+ is-data-view@1.0.1:
+ dependencies:
+ is-typed-array: 1.1.13
+
is-date-object@1.0.5:
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
is-docker@3.0.0: {}
@@ -10794,13 +11659,21 @@ snapshots:
dependencies:
is-docker: 3.0.0
+ is-ipfs@8.0.4:
+ dependencies:
+ '@multiformats/mafmt': 12.1.6
+ '@multiformats/multiaddr': 12.3.0
+ iso-url: 1.2.1
+ multiformats: 13.2.2
+ uint8arrays: 5.1.0
+
is-module@1.0.0: {}
- is-negative-zero@2.0.2: {}
+ is-negative-zero@2.0.3: {}
is-number-object@1.0.7:
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
is-number@7.0.0: {}
@@ -10812,14 +11685,14 @@ snapshots:
is-regex@1.1.4:
dependencies:
- call-bind: 1.0.2
- has-tostringtag: 1.0.0
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
is-regexp@1.0.0: {}
- is-shared-array-buffer@1.0.2:
+ is-shared-array-buffer@1.0.3:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
is-stream@2.0.1: {}
@@ -10827,7 +11700,7 @@ snapshots:
is-string@1.0.7:
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
is-symbol@1.0.4:
dependencies:
@@ -10837,13 +11710,17 @@ snapshots:
dependencies:
which-typed-array: 1.1.11
+ is-typed-array@1.1.13:
+ dependencies:
+ which-typed-array: 1.1.15
+
is-typedarray@1.0.0: {}
is-unicode-supported@0.1.0: {}
is-weakref@1.0.2:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
is-wsl@3.1.0:
dependencies:
@@ -10857,16 +11734,17 @@ snapshots:
isexe@2.0.0: {}
- isomorphic-unfetch@3.1.0(encoding@0.1.13):
+ iso-url@1.2.1: {}
+
+ isows@1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)):
dependencies:
- node-fetch: 2.7.0(encoding@0.1.13)
- unfetch: 4.2.0
- transitivePeerDependencies:
- - encoding
+ ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- isows@1.0.4(ws@8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)):
+ it-pushable@3.2.3:
dependencies:
- ws: 8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ p-defer: 4.0.1
+
+ it-stream-types@2.0.1: {}
jake@10.8.7:
dependencies:
@@ -10877,7 +11755,7 @@ snapshots:
jest-worker@26.6.2:
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 22.5.1
merge-stream: 2.0.0
supports-color: 7.2.0
@@ -10912,6 +11790,11 @@ snapshots:
json-parse-even-better-errors@2.3.1: {}
+ json-schema-to-ts@1.6.4:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ts-toolbelt: 6.15.5
+
json-schema-traverse@0.4.1: {}
json-schema-traverse@1.0.0: {}
@@ -10920,6 +11803,11 @@ snapshots:
json-stable-stringify-without-jsonify@1.0.1: {}
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+ optional: true
+
json5@2.2.3: {}
jsonc-parser@3.2.1: {}
@@ -11034,6 +11922,8 @@ snapshots:
dependencies:
p-locate: 5.0.0
+ lodash.castarray@4.4.0: {}
+
lodash.debounce@4.0.8: {}
lodash.defaults@4.2.0: {}
@@ -11042,6 +11932,8 @@ snapshots:
lodash.isequal@4.5.0: {}
+ lodash.isplainobject@4.0.6: {}
+
lodash.merge@4.6.2: {}
lodash.sortby@4.7.0: {}
@@ -11061,9 +11953,9 @@ snapshots:
dependencies:
js-tokens: 4.0.0
- lower-case@2.0.2:
+ loupe@2.3.7:
dependencies:
- tslib: 2.6.2
+ get-func-name: 2.0.2
lowercase-keys@3.0.0: {}
@@ -11079,18 +11971,14 @@ snapshots:
lru_map@0.3.3: {}
- lucide-react@0.424.0(react@18.2.0):
- dependencies:
- react: 18.2.0
-
- lucide-react@0.436.0(react@18.3.1):
- dependencies:
- react: 18.3.1
-
magic-string@0.25.9:
dependencies:
sourcemap-codec: 1.4.8
+ make-dir@3.1.0:
+ dependencies:
+ semver: 6.3.1
+
make-error@1.3.6: {}
md5.js@1.3.5:
@@ -11105,6 +11993,8 @@ snapshots:
crypt: 0.0.2
is-buffer: 1.1.6
+ memoize-one@6.0.0: {}
+
memorystream@0.3.1: {}
merge-stream@2.0.0: {}
@@ -11132,6 +12022,8 @@ snapshots:
mimic-response@4.0.0: {}
+ mini-svg-data-uri@1.4.4: {}
+
minimalistic-assert@1.0.1: {}
minimalistic-crypto-utils@1.0.1: {}
@@ -11154,6 +12046,17 @@ snapshots:
minimist@1.2.8: {}
+ minipass@3.3.6:
+ dependencies:
+ yallist: 4.0.0
+
+ minipass@5.0.0: {}
+
+ minizlib@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+
mipd@0.0.7(typescript@5.5.4):
optionalDependencies:
typescript: 5.5.4
@@ -11162,6 +12065,8 @@ snapshots:
dependencies:
minimist: 1.2.8
+ mkdirp@1.0.4: {}
+
mlly@1.6.1:
dependencies:
acorn: 8.12.1
@@ -11214,6 +12119,8 @@ snapshots:
ms@2.1.3: {}
+ multiformats@13.2.2: {}
+
multiformats@9.9.0: {}
mz@2.7.0:
@@ -11232,27 +12139,36 @@ snapshots:
next-tick@1.1.0: {}
- no-case@3.0.4:
- dependencies:
- lower-case: 2.0.2
- tslib: 2.6.2
-
node-addon-api@2.0.2: {}
node-addon-api@7.1.0: {}
+ node-domexception@1.0.0: {}
+
node-emoji@1.11.0:
dependencies:
lodash: 4.17.21
node-fetch-native@1.6.4: {}
+ node-fetch@2.6.9(encoding@0.1.13):
+ dependencies:
+ whatwg-url: 5.0.0
+ optionalDependencies:
+ encoding: 0.1.13
+
node-fetch@2.7.0(encoding@0.1.13):
dependencies:
whatwg-url: 5.0.0
optionalDependencies:
encoding: 0.1.13
+ node-fetch@3.3.2:
+ dependencies:
+ data-uri-to-buffer: 4.0.1
+ fetch-blob: 3.2.0
+ formdata-polyfill: 4.0.10
+
node-forge@1.3.1: {}
node-gyp-build@4.6.1: {}
@@ -11263,6 +12179,10 @@ snapshots:
dependencies:
abbrev: 1.0.9
+ nopt@5.0.0:
+ dependencies:
+ abbrev: 1.0.9
+
normalize-path@3.0.0: {}
normalize-range@0.1.2: {}
@@ -11273,6 +12193,13 @@ snapshots:
dependencies:
path-key: 4.0.0
+ npmlog@5.0.1:
+ dependencies:
+ are-we-there-yet: 2.0.0
+ console-control-strings: 1.1.0
+ gauge: 3.0.2
+ set-blocking: 2.0.0
+
number-to-bn@1.7.0:
dependencies:
bn.js: 4.11.6
@@ -11282,13 +12209,13 @@ snapshots:
object-hash@3.0.0: {}
- object-inspect@1.12.3: {}
+ object-inspect@1.13.2: {}
object-keys@1.1.1: {}
- object.assign@4.1.4:
+ object.assign@4.1.5:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.1
has-symbols: 1.0.3
object-keys: 1.1.1
@@ -11341,6 +12268,8 @@ snapshots:
p-cancelable@3.0.0: {}
+ p-defer@4.0.1: {}
+
p-limit@1.3.0:
dependencies:
p-try: 1.0.0
@@ -11369,6 +12298,13 @@ snapshots:
dependencies:
aggregate-error: 3.1.0
+ p-queue@8.0.1:
+ dependencies:
+ eventemitter3: 5.0.1
+ p-timeout: 6.1.2
+
+ p-timeout@6.1.2: {}
+
p-try@1.0.0: {}
p-try@2.2.0: {}
@@ -11393,6 +12329,10 @@ snapshots:
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
+ parse-ms@2.1.0: {}
+
+ path-browserify@1.0.1: {}
+
path-exists@3.0.0: {}
path-exists@4.0.0: {}
@@ -11405,10 +12345,14 @@ snapshots:
path-parse@1.0.7: {}
+ path-to-regexp@6.2.1: {}
+
path-type@4.0.0: {}
pathe@1.1.2: {}
+ pathval@1.1.1: {}
+
pbkdf2@3.1.2:
dependencies:
create-hash: 1.2.0
@@ -11417,13 +12361,9 @@ snapshots:
safe-buffer: 5.2.1
sha.js: 2.4.11
- permissionless@0.1.44(viem@2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.22.4)):
- dependencies:
- viem: 2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.22.4)
-
- permissionless@0.1.45(viem@2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)):
+ permissionless@0.1.45(viem@2.19.6(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)):
dependencies:
- viem: 2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.19.6(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8)
picocolors@1.0.0: {}
@@ -11437,6 +12377,11 @@ snapshots:
pify@4.0.1: {}
+ pinata@0.4.0:
+ dependencies:
+ is-ipfs: 8.0.4
+ node-fetch: 3.3.2
+
pino-abstract-transport@0.5.0:
dependencies:
duplexify: 4.1.2
@@ -11492,6 +12437,8 @@ snapshots:
pngjs@5.0.0: {}
+ possible-typed-array-names@1.0.0: {}
+
postcss-import@15.1.0(postcss@8.4.41):
dependencies:
postcss: 8.4.41
@@ -11504,19 +12451,24 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.41
- postcss-load-config@4.0.1(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)):
+ postcss-load-config@4.0.1(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)):
dependencies:
lilconfig: 2.1.0
yaml: 2.3.2
optionalDependencies:
postcss: 8.4.41
- ts-node: 10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4)
+ ts-node: 10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)
postcss-nested@6.0.1(postcss@8.4.41):
dependencies:
postcss: 8.4.41
postcss-selector-parser: 6.0.13
+ postcss-selector-parser@6.0.10:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
postcss-selector-parser@6.0.13:
dependencies:
cssesc: 3.0.0
@@ -11532,10 +12484,6 @@ snapshots:
preact@10.19.6: {}
- preline@2.4.1:
- dependencies:
- '@popperjs/core': 2.11.8
-
prelude-ls@1.1.2: {}
prelude-ls@1.2.1: {}
@@ -11555,10 +12503,16 @@ snapshots:
pretty-bytes@6.1.1: {}
+ pretty-ms@7.0.1:
+ dependencies:
+ parse-ms: 2.1.0
+
process-warning@1.0.0: {}
process@0.11.10: {}
+ progress-events@1.0.1: {}
+
prop-types@15.8.1:
dependencies:
loose-envify: 1.4.0
@@ -11592,6 +12546,8 @@ snapshots:
split-on-first: 1.1.0
strict-uri-encode: 2.0.0
+ querystringify@2.2.0: {}
+
queue-microtask@1.2.3: {}
quick-format-unescaped@4.0.4: {}
@@ -11618,23 +12574,15 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
- react-device-detect@2.2.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
- dependencies:
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
- ua-parser-js: 1.0.37
-
react-device-detect@2.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
ua-parser-js: 1.0.37
- react-dom@18.2.0(react@18.2.0):
+ react-device-frameset@1.3.4(react@18.3.1):
dependencies:
- loose-envify: 1.4.0
- react: 18.2.0
- scheduler: 0.23.0
+ react: 18.3.1
react-dom@18.3.1(react@18.3.1):
dependencies:
@@ -11642,29 +12590,10 @@ snapshots:
react: 18.3.1
scheduler: 0.23.2
- react-dropzone@14.2.3(react@18.2.0):
- dependencies:
- attr-accept: 2.2.2
- file-selector: 0.6.0
- prop-types: 15.8.1
- react: 18.2.0
-
- react-hook-form@7.51.0(react@18.2.0):
- dependencies:
- react: 18.2.0
-
react-hook-form@7.53.0(react@18.3.1):
dependencies:
react: 18.3.1
- react-hot-toast@2.4.1(csstype@3.1.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
- dependencies:
- goober: 2.1.13(csstype@3.1.2)
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
- transitivePeerDependencies:
- - csstype
-
react-hot-toast@2.4.1(csstype@3.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
goober: 2.1.13(csstype@3.1.2)
@@ -11673,19 +12602,28 @@ snapshots:
transitivePeerDependencies:
- csstype
+ react-intl@6.6.8(react@18.3.1)(typescript@5.5.4):
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/icu-messageformat-parser': 2.7.8
+ '@formatjs/intl': 2.10.4(typescript@5.5.4)
+ '@formatjs/intl-displaynames': 6.6.8
+ '@formatjs/intl-listformat': 7.5.7
+ '@types/hoist-non-react-statics': 3.3.5
+ '@types/react': 18.3.3
+ hoist-non-react-statics: 3.3.2
+ intl-messageformat: 10.5.14
+ react: 18.3.1
+ tslib: 2.6.2
+ optionalDependencies:
+ typescript: 5.5.4
+
react-is@16.13.1: {}
react-is@18.2.0: {}
react-refresh@0.14.2: {}
- react-router-dom@6.22.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
- dependencies:
- '@remix-run/router': 1.15.2
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
- react-router: 6.22.2(react@18.2.0)
-
react-router-dom@6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@remix-run/router': 1.19.1
@@ -11693,19 +12631,41 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
react-router: 6.26.1(react@18.3.1)
- react-router@6.22.2(react@18.2.0):
- dependencies:
- '@remix-run/router': 1.15.2
- react: 18.2.0
-
react-router@6.26.1(react@18.3.1):
dependencies:
'@remix-run/router': 1.19.1
react: 18.3.1
- react@18.2.0:
+ react-select@5.8.0(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
+ '@babel/runtime': 7.24.0
+ '@emotion/cache': 11.13.1
+ '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1)
+ '@floating-ui/dom': 1.6.10
+ '@types/react-transition-group': 4.4.11
+ memoize-one: 6.0.0
+ prop-types: 15.8.1
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1)
+ transitivePeerDependencies:
+ - '@types/react'
+ - supports-color
+
+ react-tailwindcss-datepicker@1.7.2(dayjs@1.11.13)(react@18.3.1):
+ dependencies:
+ dayjs: 1.11.13
+ react: 18.3.1
+
+ react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ '@babel/runtime': 7.24.0
+ dom-helpers: 5.2.1
loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
react@18.3.1:
dependencies:
@@ -11743,6 +12703,8 @@ snapshots:
dependencies:
minimatch: 3.1.2
+ redaxios@0.5.1: {}
+
redis-errors@1.2.0: {}
redis-parser@3.0.0:
@@ -11761,11 +12723,12 @@ snapshots:
dependencies:
'@babel/runtime': 7.24.0
- regexp.prototype.flags@1.5.1:
+ regexp.prototype.flags@1.5.2:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.1
- set-function-name: 2.0.1
+ es-errors: 1.3.0
+ set-function-name: 2.0.2
regexpu-core@5.3.2:
dependencies:
@@ -11794,10 +12757,14 @@ snapshots:
require-main-filename@2.0.0: {}
+ requires-port@1.0.0: {}
+
resolve-alpn@1.2.1: {}
resolve-from@4.0.0: {}
+ resolve-from@5.0.0: {}
+
resolve@1.1.7: {}
resolve@1.17.0:
@@ -11820,6 +12787,10 @@ snapshots:
dependencies:
glob: 7.2.3
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
ripemd160@2.0.2:
dependencies:
hash-base: 3.1.0
@@ -11871,19 +12842,19 @@ snapshots:
dependencies:
tslib: 2.6.2
- safe-array-concat@1.0.1:
+ safe-array-concat@1.1.2:
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
has-symbols: 1.0.3
isarray: 2.0.5
safe-buffer@5.2.1: {}
- safe-regex-test@1.0.0:
+ safe-regex-test@1.0.3:
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.7
+ es-errors: 1.3.0
is-regex: 1.1.4
safe-stable-stringify@2.4.3: {}
@@ -11907,10 +12878,6 @@ snapshots:
which: 1.3.1
wordwrap: 1.0.0
- scheduler@0.23.0:
- dependencies:
- loose-envify: 1.4.0
-
scheduler@0.23.2:
dependencies:
loose-envify: 1.4.0
@@ -11947,11 +12914,21 @@ snapshots:
set-cookie-parser@2.7.0: {}
- set-function-name@2.0.1:
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+
+ set-function-name@2.0.2:
dependencies:
- define-data-property: 1.1.0
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
functions-have-names: 1.2.3
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.2
setimmediate@1.0.5: {}
@@ -11980,9 +12957,13 @@ snapshots:
side-channel@1.0.4:
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
- object-inspect: 1.12.3
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.2
+
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.0.2: {}
signal-exit@4.1.0: {}
@@ -11994,16 +12975,11 @@ snapshots:
astral-regex: 2.0.0
is-fullwidth-code-point: 3.0.0
- snake-case@3.0.4:
- dependencies:
- dot-case: 3.0.4
- tslib: 2.6.2
-
solc@0.7.3(debug@4.3.4):
dependencies:
command-exists: 1.2.9
commander: 3.0.2
- follow-redirects: 1.15.5(debug@4.3.4)
+ follow-redirects: 1.15.6(debug@4.3.4)
fs-extra: 0.30.0
js-sha3: 0.8.0
memorystream: 0.3.1
@@ -12038,7 +13014,7 @@ snapshots:
transitivePeerDependencies:
- typescript
- solidity-coverage@0.8.12(hardhat@2.22.4(bufferutil@4.0.7)(ts-node@10.9.2(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)):
+ solidity-coverage@0.8.12(hardhat@2.22.4(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)):
dependencies:
'@ethersproject/abi': 5.7.0
'@solidity-parser/parser': 0.18.0
@@ -12049,7 +13025,7 @@ snapshots:
ghost-testrpc: 0.0.2
global-modules: 2.0.0
globby: 10.0.2
- hardhat: 2.22.4(bufferutil@4.0.7)(ts-node@10.9.2(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
+ hardhat: 2.22.4(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.5.1)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)
jsonschema: 1.4.1
lodash: 4.17.21
mocha: 10.2.0
@@ -12081,6 +13057,8 @@ snapshots:
amdefine: 1.0.1
optional: true
+ source-map@0.5.7: {}
+
source-map@0.6.1: {}
source-map@0.8.0-beta.0:
@@ -12119,33 +13097,34 @@ snapshots:
string.prototype.matchall@4.0.10:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.2
- get-intrinsic: 1.2.1
+ es-abstract: 1.23.3
+ get-intrinsic: 1.2.4
has-symbols: 1.0.3
- internal-slot: 1.0.5
- regexp.prototype.flags: 1.5.1
- set-function-name: 2.0.1
+ internal-slot: 1.0.7
+ regexp.prototype.flags: 1.5.2
+ set-function-name: 2.0.2
side-channel: 1.0.4
- string.prototype.trim@1.2.8:
+ string.prototype.trim@1.2.9:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
- string.prototype.trimend@1.0.7:
+ string.prototype.trimend@1.0.8:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-object-atoms: 1.0.0
- string.prototype.trimstart@1.0.7:
+ string.prototype.trimstart@1.0.8:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-object-atoms: 1.0.0
string_decoder@1.3.0:
dependencies:
@@ -12161,6 +13140,9 @@ snapshots:
dependencies:
ansi-regex: 5.0.1
+ strip-bom@3.0.0:
+ optional: true
+
strip-comments@2.0.1: {}
strip-final-newline@3.0.0: {}
@@ -12173,24 +13155,6 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-components@5.3.11(@babel/core@7.25.2)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0):
- dependencies:
- '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0)
- '@babel/traverse': 7.25.3(supports-color@5.5.0)
- '@emotion/is-prop-valid': 1.2.2
- '@emotion/stylis': 0.8.5
- '@emotion/unitless': 0.7.5
- babel-plugin-styled-components: 2.1.4(@babel/core@7.25.2)(styled-components@5.3.11(@babel/core@7.25.2)(react-dom@18.2.0(react@18.2.0))(react-is@18.2.0)(react@18.2.0))(supports-color@5.5.0)
- css-to-react-native: 3.2.0
- hoist-non-react-statics: 3.3.2
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
- react-is: 18.2.0
- shallowequal: 1.1.0
- supports-color: 5.5.0
- transitivePeerDependencies:
- - '@babel/core'
-
styled-components@5.3.11(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react-is@18.2.0)(react@18.3.1):
dependencies:
'@babel/helper-module-imports': 7.24.7(supports-color@5.5.0)
@@ -12209,6 +13173,8 @@ snapshots:
transitivePeerDependencies:
- '@babel/core'
+ stylis@4.2.0: {}
+
sucrase@3.34.0:
dependencies:
'@jridgewell/gen-mapping': 0.3.5
@@ -12239,7 +13205,22 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svg-parser@2.0.4: {}
+ svix-fetch@3.0.0(encoding@0.1.13):
+ dependencies:
+ node-fetch: 2.7.0(encoding@0.1.13)
+ whatwg-fetch: 3.6.20
+ transitivePeerDependencies:
+ - encoding
+
+ svix@1.31.0(encoding@0.1.13):
+ dependencies:
+ '@stablelib/base64': 1.0.1
+ es6-promise: 4.2.8
+ fast-sha256: 1.3.0
+ svix-fetch: 3.0.0(encoding@0.1.13)
+ url-parse: 1.5.10
+ transitivePeerDependencies:
+ - encoding
system-architecture@0.1.0: {}
@@ -12251,15 +13232,11 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
- tailwindcss-animate@1.0.7(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))):
- dependencies:
- tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))
-
- tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))):
+ tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4))):
dependencies:
- tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))
+ tailwindcss: 3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4))
- tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)):
+ tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -12274,11 +13251,11 @@ snapshots:
micromatch: 4.0.5
normalize-path: 3.0.0
object-hash: 3.0.0
- picocolors: 1.0.0
+ picocolors: 1.0.1
postcss: 8.4.41
postcss-import: 15.1.0(postcss@8.4.41)
postcss-js: 4.0.1(postcss@8.4.41)
- postcss-load-config: 4.0.1(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))
+ postcss-load-config: 4.0.1(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4))
postcss-nested: 6.0.1(postcss@8.4.41)
postcss-selector-parser: 6.0.13
resolve: 1.22.6
@@ -12286,32 +13263,14 @@ snapshots:
transitivePeerDependencies:
- ts-node
- tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)):
+ tar@6.2.1:
dependencies:
- '@alloc/quick-lru': 5.2.0
- arg: 5.0.2
- chokidar: 3.5.3
- didyoumean: 1.2.2
- dlv: 1.1.3
- fast-glob: 3.3.2
- glob-parent: 6.0.2
- is-glob: 4.0.3
- jiti: 1.21.0
- lilconfig: 2.1.0
- micromatch: 4.0.5
- normalize-path: 3.0.0
- object-hash: 3.0.0
- picocolors: 1.0.1
- postcss: 8.4.41
- postcss-import: 15.1.0(postcss@8.4.41)
- postcss-js: 4.0.1(postcss@8.4.41)
- postcss-load-config: 4.0.1(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))
- postcss-nested: 6.0.1(postcss@8.4.41)
- postcss-selector-parser: 6.0.13
- resolve: 1.22.6
- sucrase: 3.34.0
- transitivePeerDependencies:
- - ts-node
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 5.0.0
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
temp-dir@2.0.0: {}
@@ -12343,6 +13302,10 @@ snapshots:
dependencies:
real-require: 0.1.0
+ time-span@4.0.0:
+ dependencies:
+ convert-hrtime: 3.0.0
+
tinycolor2@1.6.0: {}
tinyglobby@0.2.2:
@@ -12376,16 +13339,90 @@ snapshots:
dependencies:
typescript: 5.5.4
+ ts-case-convert@2.0.7: {}
+
ts-interface-checker@0.1.13: {}
- ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.1.0)(typescript@5.5.4):
+ ts-mocha@10.0.0(mocha@10.2.0):
+ dependencies:
+ mocha: 10.2.0
+ ts-node: 7.0.1
+ optionalDependencies:
+ tsconfig-paths: 3.15.0
+
+ ts-morph@12.0.0:
+ dependencies:
+ '@ts-morph/common': 0.11.1
+ code-block-writer: 10.1.1
+
+ ts-node@10.9.1(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@4.9.5):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 16.18.11
+ acorn: 8.12.1
+ acorn-walk: 8.3.3
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.9.5
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.7.11(@swc/helpers@0.5.12)
+
+ ts-node@10.9.1(@swc/core@1.7.11)(@types/node@20.8.8)(typescript@5.2.2):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 20.8.8
+ acorn: 8.12.1
+ acorn-walk: 8.3.3
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.2.2
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.7.11(@swc/helpers@0.5.12)
+
+ ts-node@10.9.2(@swc/core@1.7.11(@swc/helpers@0.5.12))(@types/node@22.5.1)(typescript@5.5.4):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 22.5.1
+ acorn: 8.12.1
+ acorn-walk: 8.3.3
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.5.4
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.7.11(@swc/helpers@0.5.12)
+
+ ts-node@10.9.2(@swc/core@1.7.11)(@types/node@16.18.11)(typescript@5.5.4):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 22.1.0
+ '@types/node': 16.18.11
acorn: 8.12.1
acorn-walk: 8.3.3
arg: 4.1.3
@@ -12397,6 +13434,28 @@ snapshots:
yn: 3.1.1
optionalDependencies:
'@swc/core': 1.7.11(@swc/helpers@0.5.12)
+ optional: true
+
+ ts-node@7.0.1:
+ dependencies:
+ arrify: 1.0.1
+ buffer-from: 1.1.2
+ diff: 3.5.0
+ make-error: 1.3.6
+ minimist: 1.2.8
+ mkdirp: 0.5.6
+ source-map-support: 0.5.21
+ yn: 2.0.0
+
+ ts-toolbelt@6.15.5: {}
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+ optional: true
tslib@1.14.1: {}
@@ -12418,6 +13477,8 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
+ type-detect@4.1.0: {}
+
type-fest@0.16.0: {}
type-fest@0.20.2: {}
@@ -12426,34 +13487,41 @@ snapshots:
type-fest@0.7.1: {}
+ type-fest@3.13.1: {}
+
type@2.7.2: {}
- typed-array-buffer@1.0.0:
+ typed-array-buffer@1.0.2:
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
- is-typed-array: 1.1.12
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-typed-array: 1.1.13
- typed-array-byte-length@1.0.0:
+ typed-array-byte-length@1.0.1:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
for-each: 0.3.3
- has-proto: 1.0.1
- is-typed-array: 1.1.12
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
- typed-array-byte-offset@1.0.0:
+ typed-array-byte-offset@1.0.2:
dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
for-each: 0.3.3
- has-proto: 1.0.1
- is-typed-array: 1.1.12
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
- typed-array-length@1.0.4:
+ typed-array-length@1.0.6:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
for-each: 0.3.3
- is-typed-array: 1.1.12
+ gopd: 1.0.1
+ has-proto: 1.0.3
+ is-typed-array: 1.1.13
+ possible-typed-array-names: 1.0.0
typedarray-to-buffer@3.1.5:
dependencies:
@@ -12470,6 +13538,10 @@ snapshots:
- eslint
- supports-color
+ typescript@4.9.5: {}
+
+ typescript@5.2.2: {}
+
typescript@5.5.4: {}
ua-parser-js@1.0.37: {}
@@ -12479,6 +13551,15 @@ snapshots:
uglify-js@3.17.4:
optional: true
+ uint8-varint@2.0.4:
+ dependencies:
+ uint8arraylist: 2.4.8
+ uint8arrays: 5.1.0
+
+ uint8arraylist@2.4.8:
+ dependencies:
+ uint8arrays: 5.1.0
+
uint8arrays@3.1.0:
dependencies:
multiformats: 9.9.0
@@ -12487,21 +13568,31 @@ snapshots:
dependencies:
multiformats: 9.9.0
+ uint8arrays@5.1.0:
+ dependencies:
+ multiformats: 13.2.2
+
unbox-primitive@1.0.2:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
has-bigints: 1.0.2
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
uncrypto@0.1.3: {}
- undici-types@6.13.0: {}
+ undici-types@5.25.3: {}
+
+ undici-types@6.19.8: {}
undici@5.25.4:
dependencies:
'@fastify/busboy': 2.0.0
+ undici@5.28.4:
+ dependencies:
+ '@fastify/busboy': 2.0.0
+
unenv@1.9.0:
dependencies:
consola: 3.2.3
@@ -12510,8 +13601,6 @@ snapshots:
node-fetch-native: 1.6.4
pathe: 1.1.2
- unfetch@4.2.0: {}
-
unicode-canonical-property-names-ecmascript@2.0.0: {}
unicode-match-property-ecmascript@2.0.0:
@@ -12538,7 +13627,7 @@ snapshots:
unstorage@1.10.1(idb-keyval@6.2.1):
dependencies:
anymatch: 3.1.3
- chokidar: 3.5.3
+ chokidar: 3.6.0
destr: 2.0.3
h3: 1.11.1
ioredis: 5.3.2
@@ -12574,11 +13663,10 @@ snapshots:
dependencies:
punycode: 2.3.0
- use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.2.0):
+ url-parse@1.5.10:
dependencies:
- react: 18.2.0
- optionalDependencies:
- '@types/react': 18.3.3
+ querystringify: 2.2.0
+ requires-port: 1.0.0
use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1):
dependencies:
@@ -12586,10 +13674,6 @@ snapshots:
optionalDependencies:
'@types/react': 18.3.3
- use-sync-external-store@1.2.0(react@18.2.0):
- dependencies:
- react: 18.2.0
-
use-sync-external-store@1.2.0(react@18.3.1):
dependencies:
react: 18.3.1
@@ -12616,14 +13700,6 @@ snapshots:
v8-compile-cache-lib@3.0.1: {}
- valtio@1.11.2(@types/react@18.3.3)(react@18.2.0):
- dependencies:
- proxy-compare: 2.5.1
- use-sync-external-store: 1.2.0(react@18.2.0)
- optionalDependencies:
- '@types/react': 18.3.3
- react: 18.2.0
-
valtio@1.11.2(@types/react@18.3.3)(react@18.3.1):
dependencies:
proxy-compare: 2.5.1
@@ -12632,25 +13708,7 @@ snapshots:
'@types/react': 18.3.3
react: 18.3.1
- viem@2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.22.4):
- dependencies:
- '@adraffy/ens-normalize': 1.10.0
- '@noble/curves': 1.4.0
- '@noble/hashes': 1.4.0
- '@scure/bip32': 1.4.0
- '@scure/bip39': 1.3.0
- abitype: 1.0.5(typescript@5.5.4)(zod@3.22.4)
- isows: 1.0.4(ws@8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10))
- webauthn-p256: 0.0.5
- ws: 8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)
- optionalDependencies:
- typescript: 5.5.4
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
- - zod
-
- viem@2.19.6(bufferutil@4.0.7)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8):
+ viem@2.19.6(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.23.8):
dependencies:
'@adraffy/ens-normalize': 1.10.0
'@noble/curves': 1.4.0
@@ -12658,9 +13716,9 @@ snapshots:
'@scure/bip32': 1.4.0
'@scure/bip39': 1.3.0
abitype: 1.0.5(typescript@5.5.4)(zod@3.23.8)
- isows: 1.0.4(ws@8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10))
+ isows: 1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))
webauthn-p256: 0.0.5
- ws: 8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+ ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
@@ -12668,87 +13726,34 @@ snapshots:
- utf-8-validate
- zod
- vite-plugin-mkcert@1.17.5(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0)):
- dependencies:
- '@octokit/rest': 20.0.2
- axios: 1.7.3(debug@4.3.4)
- debug: 4.3.4(supports-color@8.1.1)
- picocolors: 1.0.1
- vite: 5.4.0(@types/node@22.1.0)(terser@5.21.0)
- transitivePeerDependencies:
- - supports-color
-
- vite-plugin-mkcert@1.17.5(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0)):
+ vite-plugin-mkcert@1.17.5(vite@5.4.2(@types/node@16.18.11)(terser@5.21.0)):
dependencies:
'@octokit/rest': 20.0.2
axios: 1.7.3(debug@4.3.4)
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
picocolors: 1.0.1
- vite: 5.4.2(@types/node@22.1.0)(terser@5.21.0)
- transitivePeerDependencies:
- - supports-color
-
- vite-plugin-pwa@0.20.1(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0):
- dependencies:
- debug: 4.3.4(supports-color@8.1.1)
- pretty-bytes: 6.1.1
- tinyglobby: 0.2.2
- vite: 5.4.0(@types/node@22.1.0)(terser@5.21.0)
- workbox-build: 7.0.0(@types/babel__core@7.20.5)
- workbox-window: 7.0.0
+ vite: 5.4.2(@types/node@16.18.11)(terser@5.21.0)
transitivePeerDependencies:
- supports-color
- vite-plugin-pwa@0.20.1(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0):
+ vite-plugin-pwa@0.20.1(vite@5.4.2(@types/node@16.18.11)(terser@5.21.0))(workbox-build@7.0.0(@types/babel__core@7.20.5))(workbox-window@7.0.0):
dependencies:
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
pretty-bytes: 6.1.1
tinyglobby: 0.2.2
- vite: 5.4.2(@types/node@22.1.0)(terser@5.21.0)
+ vite: 5.4.2(@types/node@16.18.11)(terser@5.21.0)
workbox-build: 7.0.0(@types/babel__core@7.20.5)
workbox-window: 7.0.0
transitivePeerDependencies:
- supports-color
- vite-plugin-svgr@4.2.0(rollup@2.79.1)(typescript@5.5.4)(vite@5.4.0(@types/node@22.1.0)(terser@5.21.0)):
- dependencies:
- '@rollup/pluginutils': 5.0.5(rollup@2.79.1)
- '@svgr/core': 8.1.0(typescript@5.5.4)
- '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4))
- vite: 5.4.0(@types/node@22.1.0)(terser@5.21.0)
- transitivePeerDependencies:
- - rollup
- - supports-color
- - typescript
-
- vite-plugin-svgr@4.2.0(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.2(@types/node@22.1.0)(terser@5.21.0)):
- dependencies:
- '@rollup/pluginutils': 5.0.5(rollup@4.20.0)
- '@svgr/core': 8.1.0(typescript@5.5.4)
- '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4))
- vite: 5.4.2(@types/node@22.1.0)(terser@5.21.0)
- transitivePeerDependencies:
- - rollup
- - supports-color
- - typescript
-
- vite@5.4.0(@types/node@22.1.0)(terser@5.21.0):
- dependencies:
- esbuild: 0.21.5
- postcss: 8.4.41
- rollup: 4.20.0
- optionalDependencies:
- '@types/node': 22.1.0
- fsevents: 2.3.3
- terser: 5.21.0
-
- vite@5.4.2(@types/node@22.1.0)(terser@5.21.0):
+ vite@5.4.2(@types/node@16.18.11)(terser@5.21.0):
dependencies:
esbuild: 0.21.5
postcss: 8.4.41
rollup: 4.20.0
optionalDependencies:
- '@types/node': 22.1.0
+ '@types/node': 16.18.11
fsevents: 2.3.3
terser: 5.21.0
@@ -12756,10 +13761,12 @@ snapshots:
dependencies:
chalk: 4.1.2
commander: 9.5.0
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
+ web-streams-polyfill@3.3.3: {}
+
web3-core-helpers@1.10.3:
dependencies:
web3-eth-iban: 1.10.3
@@ -12876,7 +13883,7 @@ snapshots:
websocket@1.0.34:
dependencies:
- bufferutil: 4.0.7
+ bufferutil: 4.0.8
debug: 2.6.9
es5-ext: 0.10.64
typedarray-to-buffer: 3.1.5
@@ -12885,6 +13892,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ whatwg-fetch@3.6.20: {}
+
whatwg-url@5.0.0:
dependencies:
tr46: 0.0.3
@@ -12914,6 +13923,14 @@ snapshots:
gopd: 1.0.1
has-tostringtag: 1.0.0
+ which-typed-array@1.1.15:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-tostringtag: 1.0.2
+
which@1.3.1:
dependencies:
isexe: 2.0.0
@@ -12922,10 +13939,16 @@ snapshots:
dependencies:
isexe: 2.0.0
+ wide-align@1.1.5:
+ dependencies:
+ string-width: 4.2.3
+
widest-line@3.1.0:
dependencies:
string-width: 4.2.3
+ wonka@6.3.4: {}
+
word-wrap@1.2.5: {}
wordwrap@1.0.0: {}
@@ -13059,24 +14082,25 @@ snapshots:
wrappy@1.0.2: {}
- ws@7.4.6(bufferutil@4.0.7)(utf-8-validate@5.0.10):
+ ws@7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10):
optionalDependencies:
- bufferutil: 4.0.7
+ bufferutil: 4.0.8
utf-8-validate: 5.0.10
- ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10):
+ ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10):
optionalDependencies:
- bufferutil: 4.0.7
+ bufferutil: 4.0.8
utf-8-validate: 5.0.10
- ws@8.17.1(bufferutil@4.0.7)(utf-8-validate@5.0.10):
+ ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10):
optionalDependencies:
- bufferutil: 4.0.7
+ bufferutil: 4.0.8
utf-8-validate: 5.0.10
- xstate@4.38.2: {}
-
- xstate@5.17.4: {}
+ ws@8.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10):
+ optionalDependencies:
+ bufferutil: 4.0.8
+ utf-8-validate: 5.0.10
y18n@4.0.3: {}
@@ -13088,6 +14112,8 @@ snapshots:
yallist@4.0.0: {}
+ yaml@1.10.2: {}
+
yaml@2.3.2: {}
yargs-parser@18.1.3:
@@ -13140,10 +14166,10 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
+ yn@2.0.0: {}
+
yn@3.1.1: {}
yocto-queue@0.1.0: {}
- zod@3.22.4: {}
-
zod@3.23.8: {}