diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c402fc4c7e..2088d7fe47 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,22 +7,52 @@ on: branches: [main] jobs: + # ceramic-config: + # runs-on: ubuntu-latest + + # steps: + # - name: Ceramic Config + # run: | + # echo ${GITHUB_WORKSPACE} + # echo "List files in GITHUB_WORKSPACE" + # ls ${GITHUB_WORKSPACE} + # echo "Pwd" + # pwd + # echo '{"anchor": {"auth-method": "did"}, "http-api": {"cors-allowed-origins": [".*"], "admin-dids": ["did:key:z6MkgUzNYV8J1yw43wj9K2CbhTZoN25uZ6TJ3Gi4cYVpZyDb"]}, "ipfs": {"mode": "bundled", "disable-peer-data-sync": false}, "logger": {"log-level": 2, "log-to-files": false}, "metrics": {"metrics-exporter-enabled": false}, "network": {"name": "testnet-clay"}, "node": {}, "state-store": {"mode": "fs", "local-directory": "/home/root/.ceramic/statestore/"}, "indexing": {"db": "sqlite:///home/root/.ceramic/indexing.sqlite", "allow-queries-before-historical-sync": true, "disable-composedb": false, "enable-historical-sync": false}}' > ${GITHUB_WORKSPACE}/daemon.config.json + + # debug: + # runs-on: ubuntu-latest + + # steps: + # - name: Debug + # run: | + # echo ${GITHUB_WORKSPACE} + # echo "List files in GITHUB_WORKSPACE" + # ls ${GITHUB_WORKSPACE} + # echo "Pwd" + # cat ${GITHUB_WORKSPACE}/daemon.config.json + build: + # needs: [ceramic-config] runs-on: ubuntu-latest # Run a local ceramic nod to test against services: ceramic: - image: ceramicnetwork/js-ceramic:2.20.0 + image: ceramicnetwork/js-ceramic:3.2.0 ports: - 7007:7007 + # volumes: + # # TODO: use GITHUB_WORKSPACE var here .. + # - /home/runner/work/passport/passport/daemon.config.json:/root/.ceramic/daemon.config.json + steps: - uses: actions/checkout@v3 - - name: Use Node.js 18 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 18.18 + node-version: 20.8.1 cache: "yarn" - name: Install Packages run: yarn install @@ -36,15 +66,17 @@ jobs: run: yarn build - name: Run Ceramic Integration Tests run: yarn test:ceramic-integration + env: + CERAMIC_CLIENT_URL: ${{secrets.CERAMIC_CLIENT_URL}} check-provider-bitmap: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Use Node.js 18 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 18.18 + node-version: 20.8 cache: "yarn" - name: Install Packages run: yarn install diff --git a/.github/workflows/iam-cd-review.yml b/.github/workflows/iam-cd-review.yml index b97c1d7b8d..78b682af65 100644 --- a/.github/workflows/iam-cd-review.yml +++ b/.github/workflows/iam-cd-review.yml @@ -12,10 +12,10 @@ jobs: steps: - uses: actions/checkout@v3 # run tests - - name: Use Node.js 18 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20.8 cache: "yarn" - name: Install Packages run: yarn install diff --git a/.github/workflows/iam-promote-production.yml b/.github/workflows/iam-promote-production.yml index 78b82f111f..b846bb5486 100644 --- a/.github/workflows/iam-promote-production.yml +++ b/.github/workflows/iam-promote-production.yml @@ -16,10 +16,10 @@ jobs: with: ref: ${{ github.event.inputs.commit }} # run tests - - name: Use Node.js 16 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20.8 cache: "yarn" - name: Install Packages run: yarn install @@ -67,10 +67,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Use Node.js 18 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 18.18 + node-version: 20.8 cache: "yarn" - name: Install Packages run: yarn install diff --git a/.github/workflows/iam-promote-staging.yml b/.github/workflows/iam-promote-staging.yml index 632c407df3..fa9016606f 100644 --- a/.github/workflows/iam-promote-staging.yml +++ b/.github/workflows/iam-promote-staging.yml @@ -16,10 +16,10 @@ jobs: with: ref: ${{ github.event.inputs.commit }} # run tests - - name: Use Node.js 18 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20.8 cache: "yarn" - name: Install Packages run: yarn install @@ -67,10 +67,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Use Node.js 18 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 18.18 + node-version: 20.8 cache: "yarn" - name: Install Packages run: yarn install diff --git a/.gitignore b/.gitignore index f16f429bdf..776fc50759 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,6 @@ lerna-debug.log* *.ntvs* *.njsproj *.sln -*.sw? \ No newline at end of file +*.sw? + +schemas/.env.yarn \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js index 06371296a2..5c8c0f6543 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,10 +1,10 @@ module.exports = { overrides: [ { - files: ['**/*.js', '**/*.ts', '**/*.tsx'], + files: ["**/*.js", "**/*.ts", "**/*.tsx"], options: { bracketSpacing: true, - trailingComma: 'es5', + trailingComma: "es5", tabWidth: 2, printWidth: 120, singleQuote: false, diff --git a/app/__tests__/context/ceramicContext.test.tsx b/app/__tests__/context/ceramicContext.test.tsx index 79633ed588..edaf5209fe 100644 --- a/app/__tests__/context/ceramicContext.test.tsx +++ b/app/__tests__/context/ceramicContext.test.tsx @@ -6,29 +6,21 @@ import { CeramicContextState, cleanPassport, } from "../../context/ceramicContext"; -import { CeramicDatabase, PassportDatabase } from "@gitcoin/passport-database-client"; +import { ComposeDatabase, PassportDatabase } from "@gitcoin/passport-database-client"; import { googleStampFixture, discordStampFixture, brightidStampFixture, } from "../../__test-fixtures__/databaseStorageFixtures"; import { Passport } from "@gitcoin/passport-types"; -import { - DatastoreConnectionContext, - DatastoreConnectionContextProvider, -} from "../../context/datastoreConnectionContext"; +import { DatastoreConnectionContext } from "../../context/datastoreConnectionContext"; +import { DID } from "dids"; const viewerConnection = { status: "connected", selfID: "did:3:abc", }; -jest.mock("@self.id/framework", () => { - return { - useViewerConnection: () => [viewerConnection], - }; -}); - jest.mock("@didtools/cacao", () => ({ Cacao: { fromBlockBytes: jest.fn(), @@ -93,14 +85,26 @@ const ceramicDbMocks = { addStamps: dbAddStampsMock, deleteStamp: dbDeleteStampMock, deleteStamps: dbDeleteStampsMock, + patchStamps: jest.fn(), did: "test-user-did", }; +jest.mock("@gitcoin/passport-database-client", () => { + return { + ComposeDatabase: jest.fn().mockImplementation(() => ceramicDbMocks), + PassportDatabase: jest.fn().mockImplementation(() => passportDbMocks), + }; +}); + const mockComponent = () => ( {}, disconnect: async () => {}, }} @@ -124,7 +128,7 @@ const mockComponent = () => ( describe("CeramicContextProvider syncs stamp state with ceramic", () => { beforeEach(() => { - (CeramicDatabase as jest.Mock).mockImplementation(() => ceramicDbMocks); + (ComposeDatabase as jest.Mock).mockImplementation(() => ceramicDbMocks); }); it("should return passport and stamps after successful fetch", async () => { @@ -210,7 +214,7 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { }), }; }); - (CeramicDatabase as jest.Mock).mockImplementationOnce(() => { + (ComposeDatabase as jest.Mock).mockImplementationOnce(() => { return { ...ceramicDbMocks, getPassport: jest.fn().mockImplementation(async () => { @@ -235,7 +239,7 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { console.log = jest.fn(); const addStampsMock = jest.fn(); - const setStampMock = jest.fn().mockRejectedValue(new Error("Error")); + const addStampMock = jest.fn().mockRejectedValue(new Error("Error")); (PassportDatabase as jest.Mock).mockImplementationOnce(() => { return { ...passportDbMocks, @@ -257,10 +261,9 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { status: "Success", }; }), - setStamps: setStampMock, }; }); - (CeramicDatabase as jest.Mock).mockImplementationOnce(() => { + (ComposeDatabase as jest.Mock).mockImplementationOnce(() => { return { ...ceramicDbMocks, getPassport: jest.fn().mockImplementation(async () => { @@ -272,7 +275,7 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { status: "Success", }; }), - setStamps: setStampMock, + addStamps: addStampMock, }; }); render(mockComponent()); @@ -280,7 +283,7 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { await waitFor(() => fireEvent.click(screen.getByText("handleAddStamps"))); await waitFor(() => { expect(addStampsMock).toHaveBeenCalled(); - expect(setStampMock).toHaveBeenCalledWith(stamps); + expect(addStampMock).toHaveBeenCalledWith(stamps); expect(console.log).toHaveBeenCalledWith("error setting ceramic stamps", new Error("Error")); }); } finally { @@ -291,8 +294,7 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { const oldConsoleLog = console.log; try { console.log = jest.fn(); - const deleteStampsMock = jest.fn(); - const setStampMock = jest.fn().mockRejectedValue(new Error("Error")); + const deleteStampsMock = jest.fn().mockRejectedValue("Error"); (PassportDatabase as jest.Mock).mockImplementationOnce(() => { return { ...passportDbMocks, @@ -316,19 +318,10 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { }), }; }); - (CeramicDatabase as jest.Mock).mockImplementationOnce(() => { + (ComposeDatabase as jest.Mock).mockImplementationOnce(() => { return { ...ceramicDbMocks, - getPassport: jest.fn().mockImplementation(async () => { - return { - passport: { - stamps: [], - }, - errorDetails: {}, - status: "Success", - }; - }), - setStamps: setStampMock, + deleteStamps: deleteStampsMock, }; }); render(mockComponent()); @@ -336,7 +329,7 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { await waitFor(() => fireEvent.click(screen.getByText("handleDeleteStamps"))); await waitFor(() => { expect(deleteStampsMock).toHaveBeenCalled(); - expect(setStampMock).toHaveBeenCalledWith([]); + expect(deleteStampsMock).toHaveBeenCalledWith(stamps.map((stamp) => stamp.provider)); }); } finally { console.log = oldConsoleLog; @@ -345,7 +338,6 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { it("should patch stamps in database and delete + add stamps in ceramic", async () => { const added = stampPatches.filter(({ credential }) => credential); - const deletedProviders = stampPatches.filter(({ credential }) => !credential).map(({ provider }) => provider); const patchStampsMock = jest.fn(); (PassportDatabase as jest.Mock).mockImplementationOnce(() => { @@ -375,10 +367,9 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { const setStampMock = jest.fn(); const deleteStampsMock = jest.fn(); - (CeramicDatabase as jest.Mock).mockImplementationOnce(() => { + (ComposeDatabase as jest.Mock).mockImplementationOnce(() => { return { ...ceramicDbMocks, - setStamps: setStampMock, deleteStampIDs: deleteStampsMock, }; }); @@ -388,8 +379,6 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { await waitFor(() => fireEvent.click(screen.getByText("handlePatchStamps"))); await waitFor(() => { expect(patchStampsMock).toHaveBeenCalledWith(stampPatches); - expect(deleteStampsMock).toHaveBeenCalledWith(deletedProviders); - expect(setStampMock).toHaveBeenCalledWith(added); }); }); @@ -398,7 +387,7 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { try { console.log = jest.fn(); - const patchStampsMock = jest.fn(); + const patchStampsMock = jest.fn().mockRejectedValue(new Error("Error")); (PassportDatabase as jest.Mock).mockImplementationOnce(() => { return { ...passportDbMocks, @@ -426,11 +415,12 @@ describe("CeramicContextProvider syncs stamp state with ceramic", () => { const setStampMock = jest.fn().mockRejectedValue(new Error("Error")); const deleteStampsMock = jest.fn(); - (CeramicDatabase as jest.Mock).mockImplementationOnce(() => { + (ComposeDatabase as jest.Mock).mockImplementationOnce(() => { return { ...ceramicDbMocks, setStamps: setStampMock, deleteStampIDs: deleteStampsMock, + patchStamps: patchStampsMock, }; }); diff --git a/app/__tests__/context/datastoreConnectionContext.test.tsx b/app/__tests__/context/datastoreConnectionContext.test.tsx index 9d1825a178..1a728b3ff9 100644 --- a/app/__tests__/context/datastoreConnectionContext.test.tsx +++ b/app/__tests__/context/datastoreConnectionContext.test.tsx @@ -1,4 +1,4 @@ -import { render, waitFor, screen } from "@testing-library/react"; +import { render, waitFor, screen, fireEvent } from "@testing-library/react"; import * as framework from "@self.id/framework"; import { EthereumWebAuth } from "@didtools/pkh-ethereum"; import { AccountId } from "caip"; @@ -12,6 +12,7 @@ import { } from "../../context/datastoreConnectionContext"; import { CeramicContext } from "../../context/ceramicContext"; import { Eip1193Provider } from "ethers"; +import { DIDSession } from "did-session"; jest.mock("axios", () => ({ get: () => ({ @@ -44,28 +45,43 @@ jest.mock("@didtools/cacao", () => ({ }, })); +jest.mock("../../context/walletStore", () => { + return { + useWalletStore: () => ({ + chain: "eip155:1", + disconnect: jest.fn(), + }), + }; +}); + +const did = { + createDagJWS: () => ({ + jws: { + link: { + bytes: [1, 2, 3, 4], + }, + payload: "test-payload", + signatures: ["test-signature"], + }, + cacaoBlock: "test-cacao-block", + }), +}; + jest.mock("did-session", () => { return { DIDSession: { authorize: () => ({ serialize: jest.fn(), + did, }), + fromSession: jest.fn(() => ({ + serialize: jest.fn(), + did, + })), }, }; }); -jest.mock("@self.id/web", () => { - return { - EthereumAuthProvider: jest.fn(), - }; -}); - -jest.mock("@self.id/framework", () => { - return { - useViewerConnection: jest.fn(), - }; -}); - const TestingComponent = () => { const { connect, dbAccessTokenStatus, dbAccessToken } = useDatastoreConnectionContext(); const [session, setSession] = useState(""); @@ -108,33 +124,6 @@ describe("", () => { }); describe("when using multichain", () => { - beforeEach(async () => { - const ceramicConnect = jest.fn().mockResolvedValueOnce({ - did: { - createDagJWS: () => ({ - jws: { - link: { - bytes: [1, 2, 3, 4], - }, - payload: "test-payload", - signatures: ["test-signature"], - }, - cacaoBlock: "test-cacao-block", - }), - }, - client: { - session: { - serialize: () => "test-session", - }, - }, - }); - (framework.useViewerConnection as jest.Mock).mockReturnValue([ - { status: "connecting" }, - ceramicConnect, - jest.fn(), - ]); - }); - afterEach(() => { jest.clearAllMocks(); }); @@ -142,9 +131,11 @@ describe("", () => { it("should use chain id 1 in the DID regardless of the wallet chain", async () => { renderTestComponent(); - screen.getByRole("button").click(); + fireEvent.click(screen.getByRole("button")); - await waitFor(() => expect(screen.getByText("Status: connected")).toBeInTheDocument()); + await waitFor(() => { + expect(screen.getByTestId("db-access-token-status").textContent).toContain("connected"); + }); expect(EthereumWebAuth.getAuthMethod as jest.Mock).toHaveBeenCalledWith( expect.anything(), @@ -159,9 +150,13 @@ describe("", () => { screen.getByRole("button").click(); - await waitFor(() => expect(screen.getByText("Status: connected")).toBeInTheDocument()); + await waitFor(() => { + expect(screen.getByTestId("db-access-token-status").textContent).toContain("connected"); + }); - expect(EthereumWebAuth.getAuthMethod as jest.Mock).not.toHaveBeenCalled(); + await waitFor(() => { + expect(DIDSession.fromSession as jest.Mock).toHaveBeenCalled(); + }); }); }); }); diff --git a/app/__tests__/pages/Dashboard.test.tsx b/app/__tests__/pages/Dashboard.test.tsx index 15707b20a7..182a680d3d 100644 --- a/app/__tests__/pages/Dashboard.test.tsx +++ b/app/__tests__/pages/Dashboard.test.tsx @@ -89,21 +89,6 @@ describe("when the user clicks Passport JSON", () => { }); }); -describe("when viewer connection status is connecting", () => { - it("should show a 'waiting for signature' alert", () => { - (framework.useViewerConnection as jest.Mock).mockReturnValue([{ status: "connecting" }]); - renderWithContext( - mockCeramicContext, - - - - ); - - const waitingForSignature = screen.getByTestId("selfId-connection-alert"); - expect(waitingForSignature).toBeInTheDocument(); - }); -}); - describe("dashboard notifications", () => { // using https://www.npmjs.com/package/jest-localstorage-mock to mock localStorage beforeEach(async () => { diff --git a/app/config/stamp_config.ts b/app/config/stamp_config.ts index 3abfcd11ed..2bce8e3100 100644 --- a/app/config/stamp_config.ts +++ b/app/config/stamp_config.ts @@ -3,7 +3,12 @@ import { SignatureType } from "@gitcoin/passport-types"; export const IAM_SIGNATURE_TYPE: SignatureType = process.env.NEXT_PUBLIC_PASSPORT_IAM_SIGNATURE_TYPE?.toLowerCase() === "eip712" ? "EIP712" : "Ed25519"; -const USE_STAMPS_V2 = IAM_SIGNATURE_TYPE === "EIP712"; +// Change of plan. We should not use stamps v2. +// The diferentiation of what exact stamp format is used can be made based on data in the stamp itself. +// There is no need to store additional metadata. +// References to STAMPS_V2 shall be deleted in the future. +// const USE_STAMPS_V2 = IAM_SIGNATURE_TYPE === "EIP712"; +const USE_STAMPS_V2 = false; const CERAMIC_CACHE_ENDPOINT_V1 = process.env.NEXT_PUBLIC_CERAMIC_CACHE_ENDPOINT; const CERAMIC_CACHE_ENDPOINT_V2 = process.env.NEXT_PUBLIC_CERAMIC_CACHE_ENDPOINT_V2; @@ -11,6 +16,8 @@ export const CERAMIC_CACHE_ENDPOINT = USE_STAMPS_V2 ? CERAMIC_CACHE_ENDPOINT_V2 const IAM_ISSUER_DID_V1 = process.env.NEXT_PUBLIC_PASSPORT_IAM_ISSUER_DID || ""; const IAM_ISSUER_DID_V2 = process.env.NEXT_PUBLIC_PASSPORT_IAM_ISSUER_DID_V2 || ""; -export const IAM_ISSUER_DID = USE_STAMPS_V2 ? IAM_ISSUER_DID_V2 : IAM_ISSUER_DID_V1; + +// We are going tu support multiple valid issuers +export const IAM_VALID_ISSUER_DIDS = new Set([IAM_ISSUER_DID_V2, IAM_ISSUER_DID_V1]); export const iamUrl = process.env.NEXT_PUBLIC_PASSPORT_IAM_URL || ""; diff --git a/app/context/ceramicContext.tsx b/app/context/ceramicContext.tsx index ea9da3d760..ca70f87630 100644 --- a/app/context/ceramicContext.tsx +++ b/app/context/ceramicContext.tsx @@ -9,8 +9,7 @@ import { StampPatch, } from "@gitcoin/passport-types"; import { ProviderSpec } from "../config/providers"; -import { CeramicDatabase, PassportDatabase } from "@gitcoin/passport-database-client"; -import { useViewerConnection } from "@self.id/framework"; +import { CeramicStorage, DataStorageBase, ComposeDatabase, PassportDatabase } from "@gitcoin/passport-database-client"; import { datadogLogs } from "@datadog/browser-logs"; import { datadogRum } from "@datadog/browser-rum"; import { useWalletStore } from "./walletStore"; @@ -46,7 +45,7 @@ const { } = stampPlatforms; import { PlatformProps } from "../components/GenericPlatform"; -import { CERAMIC_CACHE_ENDPOINT, IAM_ISSUER_DID } from "../config/stamp_config"; +import { CERAMIC_CACHE_ENDPOINT, IAM_VALID_ISSUER_DIDS } from "../config/stamp_config"; import { useDatastoreConnectionContext } from "./datastoreConnectionContext"; // -- Trusted IAM servers DID @@ -293,7 +292,7 @@ export const CeramicContext = createContext(startingState); export const cleanPassport = ( passport: Passport, - database: CeramicDatabase | PassportDatabase, + database: CeramicStorage | DataStorageBase, allProvidersState: AllProvidersState ): { passport: Passport; @@ -310,7 +309,7 @@ export const cleanPassport = ( return false; } - const has_correct_issuer = stamp.credential.issuer === IAM_ISSUER_DID; + const has_correct_issuer = IAM_VALID_ISSUER_DIDS.has(stamp.credential.issuer); const has_correct_subject = stamp.credential.credentialSubject.id.toLowerCase() === database.did; const has_expired = new Date(stamp.credential.expirationDate) < new Date(); @@ -331,18 +330,17 @@ export const cleanPassport = ( export const CeramicContextProvider = ({ children }: { children: any }) => { const [allProvidersState, setAllProviderState] = useState(startingAllProvidersState); const resolveCancel = useRef<() => void>(); - const [ceramicClient, setCeramicClient] = useState(undefined); + const [ceramicClient, setCeramicClient] = useState(undefined); const [isLoadingPassport, setIsLoadingPassport] = useState(IsLoadingPassportState.Loading); const [passport, setPassport] = useState(undefined); const [userDid, setUserDid] = useState(); const [expiredProviders, setExpiredProviders] = useState([]); const [passportLoadResponse, setPassportLoadResponse] = useState(); const [passportHasCacaoError, setPassportHasCacaoError] = useState(false); - const [viewerConnection] = useViewerConnection(); const [database, setDatabase] = useState(undefined); const address = useWalletStore((state) => state.address); - const { dbAccessToken, dbAccessTokenStatus } = useDatastoreConnectionContext(); + const { dbAccessToken, did } = useDatastoreConnectionContext(); const { refreshScore, fetchStampWeights } = useContext(ScorerContext); useEffect(() => { @@ -357,55 +355,37 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { }, [address]); useEffect((): void => { - switch (viewerConnection.status) { - case "idle": { + try { + if (dbAccessToken && address && !database && did) { + // Ceramic Network Connection + const ceramicClientInstance = new ComposeDatabase( + did, + process.env.NEXT_PUBLIC_CERAMIC_CLIENT_URL, + datadogLogs.logger + ); + setCeramicClient(ceramicClientInstance); + setUserDid(ceramicClientInstance.did); + // Ceramic cache db + const databaseInstance = new PassportDatabase( + CERAMIC_CACHE_ENDPOINT || "", + address, + dbAccessToken, + datadogLogs.logger, + did + ); + + setDatabase(databaseInstance); + } else { setCeramicClient(undefined); setDatabase(undefined); - break; - } - case "connecting": { setIsLoadingPassport(IsLoadingPassportState.Loading); - setCeramicClient(undefined); - setDatabase(undefined); - break; - } - case "connected": { - if (dbAccessTokenStatus === "failed") { - setIsLoadingPassport(IsLoadingPassportState.FailedToConnect); - break; - } else if (dbAccessToken && address && !database) { - // Ceramic Network Connection - const ceramicClientInstance = new CeramicDatabase( - viewerConnection.selfID.did, - process.env.NEXT_PUBLIC_CERAMIC_CLIENT_URL, - undefined, - datadogLogs.logger - ); - setCeramicClient(ceramicClientInstance); - setUserDid(ceramicClientInstance.did); - // Ceramic cache db - const databaseInstance = new PassportDatabase( - CERAMIC_CACHE_ENDPOINT || "", - address, - dbAccessToken, - datadogLogs.logger, - viewerConnection.selfID.did - ); - - setDatabase(databaseInstance); - } - break; - } - case "failed": { - console.log("failed to connect self id :("); - setCeramicClient(undefined); - setDatabase(undefined); - break; } - default: - break; + } catch (e) { + console.log("failed to connect self id :("); + setCeramicClient(undefined); + setDatabase(undefined); } - }, [viewerConnection, address, dbAccessToken, dbAccessTokenStatus]); + }, [address, dbAccessToken]); useEffect(() => { if (database) { @@ -415,7 +395,7 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { }, [database]); const passportLoadSuccess = ( - database: CeramicDatabase | PassportDatabase, + database: ComposeDatabase | PassportDatabase, passport?: Passport, skipLoadingState?: boolean ): Passport => { @@ -446,7 +426,7 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { const handlePassportUpdate = async ( passportResponse: PassportLoadResponse, - database: CeramicDatabase | PassportDatabase, + database: ComposeDatabase | PassportDatabase, skipLoadingState?: boolean, isInitialLoad?: boolean ) => { @@ -480,7 +460,7 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { }; const fetchPassport = async ( - database: CeramicDatabase | PassportDatabase, + database: ComposeDatabase | PassportDatabase, skipLoadingState?: boolean, isInitialLoad?: boolean ): Promise => { @@ -513,7 +493,7 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { if (ceramicClient && addResponse.passport) { ceramicClient - .setStamps(addResponse.passport.stamps) + .addStamps(addResponse.passport.stamps) .catch((e) => console.log("error setting ceramic stamps", e)); } if (dbAccessToken) { @@ -535,13 +515,7 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { if (ceramicClient && patchResponse.passport) { (async () => { try { - const deleteProviderIds = stampPatches - .filter(({ credential }) => !credential) - .map(({ provider }) => provider); - - if (deleteProviderIds.length) await ceramicClient.deleteStampIDs(deleteProviderIds); - - await ceramicClient.setStamps(patchResponse.passport?.stamps || []); + await ceramicClient.patchStamps(stampPatches); } catch (e) { console.log("error patching ceramic stamps", e); } @@ -564,9 +538,7 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { const deleteResponse = await database.deleteStamps(providerIds); handlePassportUpdate(deleteResponse, database); if (ceramicClient && deleteResponse.status === "Success" && deleteResponse.passport?.stamps) { - ceramicClient - .setStamps(deleteResponse.passport.stamps) - .catch((e) => console.log("error setting ceramic stamps", e)); + ceramicClient.deleteStamps(providerIds).catch((e) => console.log("error setting ceramic stamps", e)); } if (dbAccessToken) { refreshScore(address, dbAccessToken); @@ -614,29 +586,35 @@ export const CeramicContextProvider = ({ children }: { children: any }) => { const verifiedPlatforms = useMemo( () => - Object.entries(Object.fromEntries(platforms)).reduce((validPlatformProps, [platformKey, platformProps]) => { - if ( - platformProps.platFormGroupSpec.some(({ providers }) => - providers.some(({ name }) => verifiedProviderIds.includes(name)) + Object.entries(Object.fromEntries(platforms)).reduce( + (validPlatformProps, [platformKey, platformProps]) => { + if ( + platformProps.platFormGroupSpec.some(({ providers }) => + providers.some(({ name }) => verifiedProviderIds.includes(name)) + ) ) - ) - validPlatformProps[platformKey as PLATFORM_ID] = platformProps; - return validPlatformProps; - }, {} as Record), + validPlatformProps[platformKey as PLATFORM_ID] = platformProps; + return validPlatformProps; + }, + {} as Record + ), [verifiedProviderIds, platforms] ); const expiredPlatforms = useMemo( () => - Object.entries(Object.fromEntries(platforms)).reduce((validPlatformProps, [platformKey, platformProps]) => { - if ( - platformProps.platFormGroupSpec.some(({ providers }) => - providers.some(({ name }) => expiredProviders.includes(name)) + Object.entries(Object.fromEntries(platforms)).reduce( + (validPlatformProps, [platformKey, platformProps]) => { + if ( + platformProps.platFormGroupSpec.some(({ providers }) => + providers.some(({ name }) => expiredProviders.includes(name)) + ) ) - ) - validPlatformProps[platformKey as PLATFORM_ID] = platformProps; - return validPlatformProps; - }, {} as Record), + validPlatformProps[platformKey as PLATFORM_ID] = platformProps; + return validPlatformProps; + }, + {} as Record + ), [verifiedProviderIds, platforms] ); diff --git a/app/context/datastoreConnectionContext.tsx b/app/context/datastoreConnectionContext.tsx index 4a76159450..8b3c0580e8 100644 --- a/app/context/datastoreConnectionContext.tsx +++ b/app/context/datastoreConnectionContext.tsx @@ -1,10 +1,10 @@ import { createContext, useContext, useEffect, useState, useMemo, useCallback } from "react"; -import { useViewerConnection } from "@self.id/framework"; import { datadogRum } from "@datadog/browser-rum"; import { useWalletStore } from "./walletStore"; import { DoneToastContent } from "../components/DoneToastContent"; import { EthereumAuthProvider } from "@self.id/web"; -import { EthereumWebAuth } from "@didtools/pkh-ethereum"; +import { EthereumWebAuth, getAccountId } from "@didtools/pkh-ethereum"; +import { ComposeClient } from "@composedb/client"; import { DIDSession } from "did-session"; import { DID } from "dids"; import axios from "axios"; @@ -15,6 +15,7 @@ import { CERAMIC_CACHE_ENDPOINT } from "../config/stamp_config"; import { useToast } from "@chakra-ui/react"; import { Eip1193Provider } from "ethers"; import { createSignedPayload } from "../utils/helpers"; +import { ComposeDatabase } from "@gitcoin/passport-database-client"; const BUFFER_TIME_BEFORE_EXPIRATION = 60 * 60 * 1000; @@ -24,20 +25,19 @@ export type DatastoreConnectionContextState = { dbAccessTokenStatus: DbAuthTokenStatus; dbAccessToken?: string; did?: DID; - disconnect: () => Promise; + disconnect: (address: string) => Promise; connect: (address: string, provider: Eip1193Provider) => Promise; }; export const DatastoreConnectionContext = createContext({ dbAccessTokenStatus: "idle", - disconnect: async () => {}, + disconnect: async (address: string) => {}, connect: async () => {}, }); // In the app, the context hook should be used. This is only exported for testing export const useDatastoreConnection = () => { const toast = useToast(); - const [ceramicConnection, connectCeramic, disconnectCeramic] = useViewerConnection(); const disconnectWallet = useWalletStore((state) => state.disconnect); const chain = useWalletStore((state) => state.chain); @@ -53,26 +53,16 @@ export const useDatastoreConnection = () => { setDbAccessTokenStatus("idle"); setDbAccessToken(undefined); } - }, [chain]); - - useEffect((): void => { - switch (ceramicConnection.status) { - case "failed": { - // user refused to connect to ceramic -- disconnect them - disconnectWallet(); - console.log("failed to connect self id :(", ceramicConnection.error); - break; - } - default: - break; - } - }, [ceramicConnection.status]); + }, [chain, dbAccessTokenStatus]); - const handleConnectionError = async (sessionKey: string, dbCacheTokenKey: string) => { - await disconnectWallet(); - window.localStorage.removeItem(sessionKey); - window.localStorage.removeItem(dbCacheTokenKey); - }; + const handleConnectionError = useCallback( + async (sessionKey: string, dbCacheTokenKey: string) => { + await disconnectWallet(); + window.localStorage.removeItem(sessionKey); + window.localStorage.removeItem(dbCacheTokenKey); + }, + [disconnectWallet] + ); const getPassportDatabaseAccessToken = async (did: DID): Promise => { let nonce = null; @@ -103,7 +93,7 @@ export const useDatastoreConnection = () => { } }; - const loadDbAccessToken = async (address: string, did: DID) => { + const loadDbAccessToken = useCallback(async (address: string, did: DID) => { const dbCacheTokenKey = `dbcache-token-${address}`; // TODO: if we load the token from the localstorage we should validate it // let dbAccessToken = window.localStorage.getItem(dbCacheTokenKey); @@ -114,28 +104,23 @@ export const useDatastoreConnection = () => { // 1. if the user has nonde // 2. in case a new session has been created (access tokens should expire similar to sessions) // TODO: verifying the validity of the access token would also make sense => check the expiration data in the token - if (!dbAccessToken) { - setDbAccessTokenStatus("connecting"); - - try { - dbAccessToken = await getPassportDatabaseAccessToken(did); - // Store the session in localstorage - // @ts-ignore - window.localStorage.setItem(dbCacheTokenKey, dbAccessToken); - setDbAccessToken(dbAccessToken || undefined); - setDbAccessTokenStatus(dbAccessToken ? "connected" : "failed"); - } catch (error) { - setDbAccessTokenStatus("failed"); - - // Should we logout the user here? They will be unable to write to passport - const msg = `Error getting access token for did: ${did}`; - datadogRum.addError(msg); - } - } else { + + try { + dbAccessToken = await getPassportDatabaseAccessToken(did); + // Store the session in localstorage + // @ts-ignore + window.localStorage.setItem(dbCacheTokenKey, dbAccessToken); setDbAccessToken(dbAccessToken || undefined); - setDbAccessTokenStatus(dbAccessToken ? "connected" : "failed"); + const status = dbAccessToken ? "connected" : "failed"; + setDbAccessTokenStatus("connected"); + } catch (error) { + setDbAccessTokenStatus("failed"); + + // Should we logout the user here? They will be unable to write to passport + const msg = `Error getting access token for did: ${did}`; + datadogRum.addError(msg); } - }; + }, []); const connect = useCallback( async (address: string, provider: Eip1193Provider) => { @@ -144,57 +129,36 @@ export const useDatastoreConnection = () => { let dbCacheTokenKey = ""; try { - const ethAuthProvider = new EthereumAuthProvider(provider, address.toLowerCase()); + const accountId = new AccountId({ + chainId: "eip155:1", + address, + }); + const authMethod = await EthereumWebAuth.getAuthMethod(provider, accountId); // Sessions will be serialized and stored in localhost // The sessions are bound to an ETH address, this is why we use the address in the session key sessionKey = `didsession-${address}`; dbCacheTokenKey = `dbcache-token-${address}`; const sessionStr = window.localStorage.getItem(sessionKey); + let session: DIDSession | undefined = undefined; + if (sessionStr) { + session = await DIDSession.fromSession(sessionStr); + } - // @ts-ignore - // When sessionStr is null, this will create a new selfId. We want to avoid this, becasue we want to make sure - // that chainId 1 is in the did - let selfId = !!sessionStr ? await connectCeramic(ethAuthProvider, sessionStr) : null; if ( - // @ts-ignore - !selfId || - // @ts-ignore - !selfId?.client?.session || - // @ts-ignore - selfId?.client?.session?.isExpired || - // @ts-ignore - selfId?.client?.session?.expireInSecs < 3600 || - // @ts-ignore - Date.now() - new Date(selfId?.client?.session?.cacao?.p?.iat).getTime() > + !session || + session.isExpired || + session.expireInSecs < 3600 || + !session.hasSession || + Date.now() - new Date(session?.cacao?.p?.iat).getTime() > MAX_VALID_DID_SESSION_AGE - BUFFER_TIME_BEFORE_EXPIRATION ) { - // If the session loaded is not valid, or if it is expired or close to expire, we create - // a new session - // Also we enforce the "1" chainId, as we always want to use mainnet dids, in order to avoid confusion - // as to where a passport / stamp has been stored - const authMethod = await EthereumWebAuth.getAuthMethod( - provider, - new AccountId({ - chainId: "eip155:1", - address, - }) - ); - - const session = await DIDSession.authorize(authMethod, { - resources: ["ceramic://*"], - }); - const newSessionStr = session.serialize(); - - // @ts-ignore - selfId = await connectCeramic(ethAuthProvider, newSessionStr); - + session = await DIDSession.authorize(authMethod, { resources: ["ceramic://*"] }); // Store the session in localstorage - // @ts-ignore - window.localStorage.setItem(sessionKey, selfId?.client?.session?.serialize()); + window.localStorage.setItem(sessionKey, session.serialize()); } - if (selfId) { - await loadDbAccessToken(address, selfId.did); - setDid(selfId.did); + if (session) { + await loadDbAccessToken(address, session.did); + setDid(session.did); } } catch (error) { await handleConnectionError(sessionKey, dbCacheTokenKey); @@ -214,13 +178,12 @@ export const useDatastoreConnection = () => { } } }, - [connectCeramic, toast] + [handleConnectionError, loadDbAccessToken, toast] ); - const disconnect = async () => { + const disconnect = async (address: string) => { await disconnectWallet(); - disconnectCeramic(); - setDid(undefined); + localStorage.removeItem(`didsession-${address}`); }; return { diff --git a/app/hooks/useSyncToChainButton.tsx b/app/hooks/useSyncToChainButton.tsx index 4722a2c222..6fa15ac5bb 100644 --- a/app/hooks/useSyncToChainButton.tsx +++ b/app/hooks/useSyncToChainButton.tsx @@ -1,5 +1,5 @@ import { useToast } from "@chakra-ui/react"; -import { EasPayload, VerifiableCredential } from "@gitcoin/passport-types"; +import { EasPayload, VerifiableCredential, Passport } from "@gitcoin/passport-types"; import { ethers, EthersError, isError } from "ethers"; import { useCallback, useContext, useState } from "react"; import { CeramicContext } from "../context/ceramicContext"; @@ -33,7 +33,7 @@ export const useSyncToChainButton = ({ const [syncingToChain, setSyncingToChain] = useState(false); const loadVerifierContract = useCallback( - async (provider) => { + async (provider: ethers.Eip1193Provider) => { if (!chain) return; const ethersProvider = new ethers.BrowserProvider(provider, "any"); @@ -49,7 +49,7 @@ export const useSyncToChainButton = ({ ); const onSyncToChain = useCallback( - async (provider, passport) => { + async (provider: ethers.Eip1193Provider | undefined, passport: Passport | undefined | false) => { if (passport && provider && chain) { try { setSyncingToChain(true); @@ -233,7 +233,7 @@ export const useSyncToChainButton = ({ ); const onInitiateSyncToChain = useCallback( - async (provider, passport) => { + async (provider: ethers.Eip1193Provider | undefined, passport: Passport | undefined | false) => { if (connectedChain && chain && connectedChain !== chain.id) { const setChainResponse = await setChain(chain.id); setChainResponse && (await onSyncToChain(provider, passport)); @@ -249,6 +249,7 @@ export const useSyncToChainButton = ({ const needToSwitchChain = isActive && onChainStatus !== OnChainStatus.MOVED_UP_TO_DATE && chain.id !== connectedChain; const onClick = () => onInitiateSyncToChain(provider, passport); + const className = disableBtn ? "cursor-not-allowed" : ""; const disabled = disableBtn; diff --git a/app/package.json b/app/package.json index 182c3b716a..798a2893e8 100644 --- a/app/package.json +++ b/app/package.json @@ -5,7 +5,7 @@ "scripts": { "start": "NEXT_PUBLIC_GIT_COMMIT_HASH=$(git rev-parse --short HEAD) next dev -p 3000", "export": "ts-node ./scripts/preBuild.ts && NEXT_PUBLIC_GIT_COMMIT_HASH=$(git rev-parse --short HEAD) next build && next export", - "build": " ts-node ./scripts/preBuild.ts && NEXT_PUBLIC_GIT_COMMIT_HASH=$(git rev-parse --short HEAD) next build", + "build": "tsx ./scripts/preBuild.tsx && NEXT_PUBLIC_GIT_COMMIT_HASH=$(git rev-parse --short HEAD) next build", "prod-start": "NEXT_PUBLIC_GIT_COMMIT_HASH=$(git rev-parse --short HEAD) next start", "clean": "rimraf node_modules && rimraf .next", "lint": "next lint && prettier --check .", @@ -16,7 +16,8 @@ "@chakra-ui/react": "^2.8.1", "@datadog/browser-logs": "^4.11.2", "@datadog/browser-rum": "^4.11.2", - "@didtools/pkh-ethereum": "^0.0.3", + "@didtools/cacao": "^3.0.1", + "@didtools/pkh-ethereum": "^0.5.0", "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@ethereum-attestation-service/eas-sdk": "^0.29.1", @@ -29,14 +30,15 @@ "@headlessui/tailwindcss": "^0.1.3", "@heroicons/react": "^2.0.17", "@popperjs/core": "^2.11.7", - "@self.id/framework": "0.3.3", + "@self.id/framework": "^0.4.0", "@web3-onboard/core": "2.21.2", "@web3-onboard/injected-wallets": "2.10.7", "@web3-onboard/react": "2.8.13", "@web3-onboard/walletconnect": "2.4.7", "@web3-onboard/walletlink": "2.1.3", "broadcast-channel": "^4.11.0", - "did-session": "^1.0.0", + "did-session": "^3.0.2", + "dids": "^5.0.2", "ethers": "^6.3.0", "framer-motion": "^6.3.0", "jotai": "^2.5.0", @@ -56,9 +58,6 @@ "zustand": "^4.4.5" }, "devDependencies": { - "@ceramicnetwork/common": "^2.2.1", - "@glazed/did-datastore-model": "^0.2.0", - "@glazed/types": "^0.2.0", "@next/eslint-plugin-next": "^12.1.5", "@testing-library/jest-dom": "^6.1.4", "@testing-library/react": "^14.0.0", @@ -68,28 +67,29 @@ "@types/react": "^18.2.34", "@types/react-dom": "^18.2.14", "@types/react-gtm-module": "^2.0.1", - "@typescript-eslint/eslint-plugin": "^5.20.0", - "@typescript-eslint/parser": "^5.20.0", + "@typescript-eslint/eslint-plugin": "^6.19.0", + "@typescript-eslint/parser": "^6.19.0", "autoprefixer": "^10.4.0", "babel-jest": "^28.0.0", "base64-js": "^1.5.1", - "eslint": "^8.13.0", - "eslint-config-next": "^12.1.5", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-jest": "^26.1.4", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-testing-library": "^5.3.1", + "eslint": "^8.56.0", + "eslint-config-next": "^14.1.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-jest": "^27.6.3", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-testing-library": "^6.2.0", "identity-obj-proxy": "^3.0.0", "jest": "^27.5.1", "jest-localstorage-mock": "^2.4.26", "jest-mock-extended": "^2.0.5", "postcss": "^8.4.5", - "prettier": "^2.6.2", - "prettier-plugin-tailwindcss": "^0.1.1", + "prettier": "^3.2.4", + "prettier-plugin-tailwindcss": "^0.5.11", "react-qr-code": "^2.0.7", "tailwindcss": "^3.0.7", "ts-jest": "^27.1.4", - "typescript": "4.5.4" + "typescript": "^5.3.3", + "yarn": "^1.22.21" }, "resolutions": { "csstype": "3.0.10", diff --git a/app/pages/Dashboard.tsx b/app/pages/Dashboard.tsx index 4ff3bfbc0b..7607e48152 100644 --- a/app/pages/Dashboard.tsx +++ b/app/pages/Dashboard.tsx @@ -113,8 +113,6 @@ export default function Dashboard() { }; }, []); // ------------------- END Data items for Google Tag Manager ------------------- - - const [viewerConnection, ceramicConnect] = useViewerConnection(); const { isOpen: retryModalIsOpen, onOpen: onRetryModalOpen, onClose: onRetryModalClose } = useDisclosure(); // stamp filter @@ -175,14 +173,13 @@ export default function Dashboard() { const retryConnection = () => { if (isLoadingPassport == IsLoadingPassportState.FailedToConnect && address) { // connect to ceramic (deliberately connect with a lowercase DID to match reader) - ceramicConnect(new EthereumAuthProvider(provider, address!.toLowerCase())); onRetryModalClose(); } }; const closeModalAndDisconnect = () => { onRetryModalClose(); - disconnect(); + disconnect(address!); }; useEffect(() => { @@ -224,12 +221,6 @@ export default function Dashboard() { const modals = ( <> - {viewerConnection.status === "connecting" && ( - - Please use your wallet to sign the message prompt and complete the sign-in process. - - )} - {isLoadingPassport === IsLoadingPassportState.Loading && ( One moment while we load your Stamps... )} diff --git a/app/pages/_app.tsx b/app/pages/_app.tsx index e57b6c0bf1..ce45087f5e 100644 --- a/app/pages/_app.tsx +++ b/app/pages/_app.tsx @@ -143,10 +143,7 @@ function App({ Component, pageProps }: AppProps) { Gitcoin Passport - + diff --git a/app/scripts/preBuild.ts b/app/scripts/preBuild.tsx similarity index 100% rename from app/scripts/preBuild.ts rename to app/scripts/preBuild.tsx diff --git a/app/tsconfig.json b/app/tsconfig.json index e9b2e36505..966088266b 100644 --- a/app/tsconfig.json +++ b/app/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "target": "es5", + "target": "ES2022", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": false, "skipLibCheck": true, @@ -14,7 +14,7 @@ "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", - "incremental": true + "incremental": true, }, "include": [ "next-env.d.ts", @@ -22,13 +22,13 @@ "**/*.tsx", "./*.tsx", "jest.config.ts", - "jest.setup.ts" + "jest.setup.ts", ], "exclude": ["node_modules"], "ts-node": { "esm": true, "compilerOptions": { - "module": "nodenext" - } - } + "module": "nodenext", + }, + }, } diff --git a/app/utils/theme/palette.tsx b/app/utils/theme/palette.tsx index cb49893d9c..1eac1d5986 100644 --- a/app/utils/theme/palette.tsx +++ b/app/utils/theme/palette.tsx @@ -12,10 +12,13 @@ export const palette = Object.entries({ turquoise: "#074853", paleYellow: "#d2dc95", red: "#ff5c00", -}).reduce((rgbPalette, [name, hex]) => { - rgbPalette[name] = hexToRGB(hex); - return rgbPalette; -}, {} as Record); +}).reduce( + (rgbPalette, [name, hex]) => { + rgbPalette[name] = hexToRGB(hex); + return rgbPalette; + }, + {} as Record +); function hexToRGB(hex: string) { var r = parseInt(hex.slice(1, 3), 16) || 0, diff --git a/database-client/__tests__/CeramicDatabase.test.ts b/database-client/__tests__/CeramicDatabase.test.ts deleted file mode 100644 index 6b2d7d0950..0000000000 --- a/database-client/__tests__/CeramicDatabase.test.ts +++ /dev/null @@ -1,487 +0,0 @@ -import { PassportLoadStatus, Stamp } from "@gitcoin/passport-types"; -import { DID } from "dids"; -import { Ed25519Provider } from "key-did-provider-ed25519"; -import { getResolver } from "key-did-resolver"; -import { jest } from "@jest/globals"; -import { CeramicDatabase } from "../src"; - -import testnetAliases from "./integration-test-model-aliases.json"; -import { TileDoc } from "@glazed/did-datastore/dist/proxy"; - -import axios from "axios"; -import { Stream } from "@ceramicnetwork/common"; -import { StreamID } from "@ceramicnetwork/streamid"; -import { createStamp } from "./utils.test"; - -let testDID: DID; -let ceramicDatabase: CeramicDatabase; - -beforeAll(async () => { - const TEST_SEED = Uint8Array.from({ length: 32 }, () => Math.floor(Math.random() * 256)); - - // Create and authenticate the DID - testDID = new DID({ - provider: new Ed25519Provider(TEST_SEED), - resolver: getResolver(), - }); - await testDID.authenticate(); - - ceramicDatabase = new CeramicDatabase(testDID, process.env.CERAMIC_CLIENT_URL, testnetAliases); -}); - -jest.setTimeout(30000); - -describe("Verify Ceramic Database", () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it("handles failure to read null passport", async () => { - let spyStoreGet = jest.spyOn(ceramicDatabase.store, "get").mockImplementation(async (_name) => { - return null; - }); - - const { passport, status } = await ceramicDatabase.getPassport(); - - // We do not expect to have any passport, hence `false` should be returned - const expectedStatus: PassportLoadStatus = "DoesNotExist"; - expect(status).toEqual(expectedStatus); - expect(passport).toEqual(undefined); - expect(spyStoreGet).toBeCalledTimes(1); - expect(spyStoreGet).toBeCalledWith("Passport"); - }); - - it("handles failure to read an empty passport (no stamps attribute)", async () => { - let spyStoreGet = jest.spyOn(ceramicDatabase.store, "get").mockImplementation(async (_name) => { - return {}; - }); - - const { passport, status } = await ceramicDatabase.getPassport(); - - // We do not expect to have any passport, hence `false` should be returned - const expectedStatus: PassportLoadStatus = "DoesNotExist"; - expect(status).toEqual(expectedStatus); - expect(passport).toEqual(undefined); - expect(spyStoreGet).toBeCalledTimes(1); - expect(spyStoreGet).toBeCalledWith("Passport"); - }); - - it("handles reading passport with stamps", async () => { - const issuanceDate = new Date("2022-06-01"); - const expiryDate = new Date("2022-09-01"); - let spyStoreGet = jest.spyOn(ceramicDatabase.store, "get").mockImplementation(async (_name) => { - return { - id: "passport-id", - issuanceDate, - expiryDate, - stamps: [ - { - provider: "Provider-1", - credential: "ceramic://credential-1", - }, - { - provider: "Provider-2", - credential: "ceramic://credential-2", - }, - { - provider: "Provider-3", - credential: "ceramic://credential-3", - }, - ], - }; - }); - let spyStoreGetRecordDocument = jest - .spyOn(ceramicDatabase.store, "getRecordDocument") - .mockImplementation(async (_name) => { - return { - id: "passport-id", - } as unknown as TileDoc; - }); - const spyLoadStreamReq = jest.spyOn(axios, "get").mockImplementation((url: string): Promise<{}> => { - return new Promise((resolve) => { - const urlSegments = url.split("/"); - const streamId = urlSegments[urlSegments.length - 1]; - resolve({ - data: { - state: { - content: "Stamp Content for ceramic://" + streamId, - }, - }, - status: 200, - }); - }); - }); - - let spyPinAdd = jest.spyOn(ceramicDatabase.ceramicClient.pin, "add").mockImplementation(async (_streamId) => { - // Nothing to do here - return; - }); - - const { passport, status } = await ceramicDatabase.getPassport(); - - // We do not expect to have any passport, hence `false` should be returned - expect(spyStoreGet).toBeCalledTimes(1); - expect(spyStoreGet).toBeCalledWith("Passport"); - expect(spyLoadStreamReq).toBeCalledTimes(3); - expect(spyStoreGetRecordDocument).toBeCalledTimes(1); - - // Ensure the document is pinned - expect(spyPinAdd).toBeCalledTimes(1); - expect(spyPinAdd).toBeCalledWith("passport-id"); - - const expectedStatus: PassportLoadStatus = "Success"; - expect(status).toBe(expectedStatus); - - expect(passport?.stamps).toEqual([ - { - credential: "Stamp Content for ceramic://credential-1", - provider: "Provider-1", - streamId: "ceramic://credential-1", - }, - { - credential: "Stamp Content for ceramic://credential-2", - provider: "Provider-2", - streamId: "ceramic://credential-2", - }, - { - credential: "Stamp Content for ceramic://credential-3", - provider: "Provider-3", - streamId: "ceramic://credential-3", - }, - ]); - expect(passport?.issuanceDate).toEqual(issuanceDate); - expect(passport?.expiryDate).toEqual(expiryDate); - }); - - describe("when stamps cannot successfully be loaded from ceramic", () => { - let spyAxiosGet, spyStoreGet, spyStoreGetRecordDocument, spyPinAdd, issuanceDate, expiryDate; - const parseStreamIdFromUrl = (url: string) => url.split("/").slice(-1); - - beforeEach(() => { - issuanceDate = new Date("2022-06-01"); - expiryDate = new Date("2022-09-01"); - - spyStoreGet = jest.spyOn(ceramicDatabase.store, "get").mockImplementation(async (_name) => { - return { - id: "passport-id", - issuanceDate, - expiryDate, - stamps: [ - { - provider: "Provider-1", - credential: "ceramic://credential-1", - }, - { - provider: "Provider-2", - credential: "ceramic://credential-2", - }, - { - provider: "Provider-3", - credential: "ceramic://credential-3", - }, - ], - }; - }); - spyStoreGetRecordDocument = jest - .spyOn(ceramicDatabase.store, "getRecordDocument") - .mockImplementation(async (_name) => { - return { - id: "passport-id", - } as unknown as TileDoc; - }); - - spyAxiosGet = jest.spyOn(axios, "get"); - - spyPinAdd = jest.spyOn(ceramicDatabase.ceramicClient.pin, "add").mockImplementation(async (_streamId) => { - // Nothing to do here - return; - }); - }); - - it("ignores unsuccessful stamps", async () => { - const maxGoodStamps = 2; - let numGoodStamps = 0; - - spyAxiosGet.mockImplementation(async (url: string): Promise<{}> => { - const streamId = parseStreamIdFromUrl(url); - if (numGoodStamps < maxGoodStamps) { - numGoodStamps += 1; - return { - data: { - state: { - content: "Stamp Content for ceramic://" + streamId, - }, - }, - status: 200, - }; - } - throw "Error loading stamp!"; - }); - - const { passport } = await ceramicDatabase.getPassport(); - - // We do not expect to have any passport, hence `false` should be returned - expect(spyStoreGet).toBeCalledTimes(1); - expect(spyStoreGet).toBeCalledWith("Passport"); - expect(spyAxiosGet).toBeCalledTimes(3); - expect(spyStoreGetRecordDocument).toBeCalledTimes(1); - - // Ensure the document is pinned - expect(spyPinAdd).toBeCalledTimes(1); - expect(spyPinAdd).toBeCalledWith("passport-id"); - - // We only expect 2 stamps to have been loaded - expect(passport?.stamps).toEqual([ - { - credential: "Stamp Content for ceramic://credential-1", - provider: "Provider-1", - streamId: "ceramic://credential-1", - }, - { - credential: "Stamp Content for ceramic://credential-2", - provider: "Provider-2", - streamId: "ceramic://credential-2", - }, - ]); - expect(passport?.issuanceDate).toEqual(issuanceDate); - expect(passport?.expiryDate).toEqual(expiryDate); - }); - - it("records the stream index when a stamp has a CACAO error", async () => { - spyAxiosGet - .mockImplementationOnce(async (): Promise<{}> => { - throw { response: { data: { error: "CACAO has expired" } } }; - }) - .mockImplementation(async (url: string): Promise<{}> => { - return { - data: { - state: { - content: "Stamp Content for ceramic://" + parseStreamIdFromUrl(url), - }, - }, - status: 200, - }; - }); - - const { passport, status, errorDetails } = await ceramicDatabase.getPassport(); - - expect(spyAxiosGet).toBeCalledTimes(3); - - expect(passport?.stamps).toEqual([ - { - credential: "Stamp Content for ceramic://credential-2", - provider: "Provider-2", - streamId: "ceramic://credential-2", - }, - { - credential: "Stamp Content for ceramic://credential-3", - provider: "Provider-3", - streamId: "ceramic://credential-3", - }, - ]); - - const expectedStatus: PassportLoadStatus = "StampCacaoError"; - expect(status).toBe(expectedStatus); - expect(errorDetails?.stampStreamIds).toEqual(["ceramic://credential-1"]); - }); - }); - - it("should have ExceptionRaised status when loading the passport object fails", async () => { - jest.spyOn(ceramicDatabase.store, "get").mockImplementationOnce(() => { - throw "Error"; - }); - - jest.spyOn(ceramicDatabase.store, "getRecordID").mockImplementationOnce(() => { - throw "Error"; - }); - - const { status } = await ceramicDatabase.getPassport(); - const expectedStatus: PassportLoadStatus = "ExceptionRaised"; - expect(status).toBe(expectedStatus); - }); - - it("should have PassportError status when loading the passport object fails and there is a Cacao issue", async () => { - jest.spyOn(ceramicDatabase.store, "get").mockImplementationOnce(() => { - throw "Error"; - }); - - jest.spyOn(ceramicDatabase.store, "getRecordID").mockImplementationOnce(() => { - throw { response: { data: { error: "CACAO has expired" } } }; - }); - - const { status } = await ceramicDatabase.getPassport(); - const expectedStatus: PassportLoadStatus = "PassportCacaoError"; - expect(status).toBe(expectedStatus); - }); - - it("checkPassportCACAOError should indicate if a passport stream is throwing a CACAO error", async () => { - jest - .spyOn(ceramicDatabase.store, "getRecordID") - .mockImplementation(async (_name) => "passport-id" as unknown as string); - - let spyStoreGetRecordDocument = jest - .spyOn(ceramicDatabase.store, "getRecordDocument") - .mockImplementation(async (_name) => { - return { - id: "passport-id", - } as unknown as TileDoc; - }); - - const spyLoadStreamReq = jest.spyOn(axios, "get").mockImplementation((_url: string): Promise<{}> => { - return new Promise((_resolve, reject) => { - reject({ - response: { - data: { - error: "CACAO has expired", - }, - }, - status: 500, - }); - }); - }); - - expect(ceramicDatabase.checkPassportCACAOError()).resolves.toBe(true); - }); - - it("checkPassportCACAOError should not indicate cacao error if not present", () => { - jest.spyOn(ceramicDatabase.store, "getRecordDocument").mockImplementation(async (_name) => { - return { - id: "passport-id", - } as unknown as TileDoc; - }); - - jest.spyOn(axios, "get").mockImplementation((_url: string): Promise<{}> => { - return new Promise((_resolve, reject) => { - reject({ - response: { - data: { - error: "Timeout", - }, - }, - status: 504, - }); - }); - }); - expect(ceramicDatabase.checkPassportCACAOError()).resolves.toBe(false); - }); - - it("should attempt to refresh a passport until successful", async () => { - jest.spyOn(ceramicDatabase.store, "getRecordDocument").mockImplementation(async (_name) => { - return { - id: "passport-id", - } as unknown as TileDoc; - }); - - const spyLoadStream = jest.spyOn(ceramicDatabase.ceramicClient, "loadStream"); - - spyLoadStream.mockImplementationOnce(() => { - throw new Error("CACAO expired: Commit...") as unknown as Stream; - }); - - spyLoadStream.mockImplementationOnce((_streamId) => { - return new Promise((resolve, _reject) => { - resolve("true" as unknown as Stream); - }); - }); - - await ceramicDatabase.refreshPassport(); - - expect(spyLoadStream).toBeCalledTimes(2); - }); - let spyStoreMerge, spyPinAdd, mockstreamUrl, mockstreamUrl1, passportStreamId, spyLoggerInfo, successfulStamps, newStamps; - describe("setStamp", () => { - beforeEach(() => { - successfulStamps = [ - { - provider: "Provider-1", - streamId: "ceramic://credential-1", - credential: createStamp('hash1', '2022-01-01', testDID.id).credential, - } as unknown as Stamp, - { - provider: "Provider-1", - streamId: "ceramic://credential-2", - credential: createStamp('hash2', '2022-01-02', testDID.id).credential, - } as unknown as Stamp, - ] - newStamps = [ - { - provider: "Provider-1", - streamId: "ceramic://credential-1", - credential: createStamp('hash3', '2022-01-03', testDID.id).credential, - } as unknown as Stamp, - { - provider: "Provider-2", - streamId: "ceramic://credential-2", - credential: createStamp('hash4', '2022-01-04', testDID.id).credential, - } as unknown as Stamp, - ] - - - jest.spyOn(ceramicDatabase.store, "get").mockImplementation(async (_name) => { - return { - id: "passport-id", - stamps: [ - { - provider: "Provider-1", - credential: "ceramic://credential-1", - }, - { - provider: "Provider-2", - credential: "ceramic://credential-2", - }, - ], - }; - }); - jest.spyOn(ceramicDatabase, "loadStamps").mockImplementation(async () => { - return { - successfulStamps, - cacaoErrorStampIds: [], - } - }); - - mockstreamUrl = "ceramic://passport-id" - mockstreamUrl1 = "ceramic://passport-id-1" - - jest.spyOn(ceramicDatabase.model, "createTile").mockImplementationOnce(async () => { - return { - id: { - toUrl: jest.fn().mockReturnValue(mockstreamUrl), - }, - } as unknown as TileDoc; - }).mockImplementationOnce(async () => { - return { - id: { - toUrl: jest.fn().mockReturnValue(mockstreamUrl1), - }, - } as unknown as TileDoc; - }); - - passportStreamId = "passport-stream-d" as unknown as StreamID; - spyStoreMerge = jest.spyOn(ceramicDatabase.store, "merge").mockReturnValue(Promise.resolve(passportStreamId)); - - - spyPinAdd = jest.spyOn(ceramicDatabase.ceramicClient.pin, "add").mockImplementation(async (_streamId) => { - // Nothing to do here - return; - }); - - spyLoggerInfo = jest.spyOn(ceramicDatabase.logger, "info") - }); - - it("should attempt to set a stamp when called", async () => { - await ceramicDatabase.setStamps(newStamps); - expect(spyStoreMerge).toBeCalledTimes(1); - expect(spyStoreMerge).toBeCalledWith("Passport", { - stamps: [ - { provider: 'Provider-1', credential: mockstreamUrl }, - { provider: 'Provider-2', credential: mockstreamUrl1 } - ] - }); - expect(spyPinAdd).toBeCalledWith(passportStreamId); - }); - it("should not attempt to save stamps that already exist", async () => { - await ceramicDatabase.setStamps(successfulStamps); - expect(spyLoggerInfo).toHaveBeenNthCalledWith(2, `No stamps were written to ceramic because they already exist ${testDID.id.toLowerCase()}:`); - }); - }); -}); diff --git a/database-client/__tests__/composeDatabase.test.ts b/database-client/__tests__/composeDatabase.test.ts new file mode 100644 index 0000000000..03870dee56 --- /dev/null +++ b/database-client/__tests__/composeDatabase.test.ts @@ -0,0 +1,310 @@ +import { ComposeClient } from "@composedb/client"; +import { PROVIDER_ID, Stamp, StampPatch, VerifiableCredential } from "@gitcoin/passport-types"; +import { DID } from "dids"; +import { ComposeDatabase, GraphqlResponse } from "../src/composeDatabase"; +import { jest } from "@jest/globals"; +import mockStamps from "./mockStamps.json"; +import { GraphQLError } from "graphql"; +import exp from "constants"; +import { debug } from "console"; + +let database: ComposeDatabase; + +const mockComposeError = { + errors: [ + { + message: "Unexpected error.", + locations: [ + { + line: 3, + column: 5, + }, + ], + path: ["viewer", "gitcoinPassportStampWrapperList"], + } as unknown as GraphQLError, + ], + data: { + viewer: { + gitcoinPassportStampWrapperList: null, + }, + }, +}; + +const document = { id: "123" }; + +const mockComposeVc = { + content: { + _context: ["https://www.w3.org/2018/credentials/v1", "https://w3id.org/vc/status-list/2021/v1"], + issuer: "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e", + issuanceDate: "2024-01-18T15:20:18.055Z", + expirationDate: "2024-04-17T14:20:18.055Z", + type: ["VerifiableCredential"], + credentialSubject: { + id: "did:pkh:eip155:1:0x0636F974D29d947d4946b2091d769ec6D2d415DE", + hash: "v0.0.0:eu7RH6ZXAtRhUm3wQ3jfMVYoJ18sXynFm2AvsjsT9FQ=", + provider: "GitcoinContributorStatistics#numGrantsContributeToGte#1", + _context: { + hash: "https://schema.org/Text", + provider: "https://schema.org/Text", + }, + }, + proof: { + type: "EthereumEip712Signature2021", + created: "2024-01-18T15:20:18.055Z", + proofValue: + "0xcd009c8caabd5549c0d20ce729271a10324c3c316972af5a715f801f387fefe76fbdcd657078d84a87fd452dbada03acfa2ce3e6efb829c086b31edeca4d54ae1b", + eip712Domain: { + types: { + CredentialSubject: [ + { + name: "@context", + type: "@context", + }, + { + name: "hash", + type: "string", + }, + { + name: "id", + type: "string", + }, + { + name: "provider", + type: "string", + }, + ], + Document: [ + { + name: "@context", + type: "string[]", + }, + { + name: "credentialSubject", + type: "CredentialSubject", + }, + { + name: "expirationDate", + type: "string", + }, + { + name: "issuanceDate", + type: "string", + }, + { + name: "issuer", + type: "string", + }, + { + name: "proof", + type: "Proof", + }, + { + name: "type", + type: "string[]", + }, + ], + EIP712Domain: [ + { + name: "name", + type: "string", + }, + ], + Proof: [ + { + name: "@context", + type: "string", + }, + { + name: "created", + type: "string", + }, + { + name: "proofPurpose", + type: "string", + }, + { + name: "type", + type: "string", + }, + { + name: "verificationMethod", + type: "string", + }, + ], + _context: [ + { + name: "hash", + type: "string", + }, + { + name: "provider", + type: "string", + }, + ], + }, + domain: { + name: "VerifiableCredential", + }, + primaryType: "Document", + }, + proofPurpose: "assertionMethod", + verificationMethod: "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e#controller", + _context: "https://w3id.org/security/suites/eip712sig-2021/v1", + }, + }, +}; +describe("Compose Database", () => { + beforeEach(() => { + database = new ComposeDatabase({ id: "id" } as unknown as DID); + jest.clearAllMocks(); + }); + it("should format a vc to compose specifications", () => { + const result = database.formatCredentialInput(mockStamps[0] as Stamp); + expect(result).toEqual(mockComposeVc); + }); + describe("adding stamps", () => { + it("should add a single stamp successfully", async () => { + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockResolvedValue({ data: { createGitcoinPassportStamp: { document } } }); + + const result = await database.addStamp(mockStamps[0] as unknown as Stamp); + expect(result).toEqual({ status: "Success" }); + }); + it("should indicate that an error was thrown from the add vc request", async () => { + jest.spyOn(ComposeClient.prototype, "executeQuery").mockResolvedValueOnce(mockComposeError); + await expect(async () => { + return await database.addStamp(mockStamps[0] as unknown as Stamp); + }).rejects.toThrow( + new Error( + `[ComposeDB] error thrown from mutation CreateGitcoinPassportVc, error: ` + + JSON.stringify(mockComposeError.errors) + ) + ); + }); + it("should indicate that an error was thrown from the add wrapper request", async () => { + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockResolvedValueOnce({ data: { createGitcoinPassportStamp: { document } } }); + jest.spyOn(ComposeClient.prototype, "executeQuery").mockResolvedValueOnce(mockComposeError); + await expect(async () => { + return await database.addStamp(mockStamps[0] as unknown as Stamp); + }).rejects.toThrow( + new Error( + `[ComposeDB] error thrown from mutation CreateGitcoinStampWrapper, vcID: ${ + document.id + } error: ${JSON.stringify(mockComposeError.errors)}` + ) + ); + }); + + it("should allow bulk addition of stamps", async () => { + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockResolvedValue({ data: { createGitcoinPassportStamp: { document } } }); + + const result = await database.addStamps(mockStamps as unknown as Stamp[]); + expect(result).toEqual({ status: "Success" }); + }); + + it("should indicate where errors were thrown when creating bulk addition of stamps", async () => { + let i = 0; + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockImplementation(async (query, variableValues): Promise => { + i++; + if (i > 3) { + return await Promise.resolve(mockComposeError); + } else { + return await Promise.resolve({ data: { createGitcoinPassportStamp: { document } } }); + } + }); + const result = await database.addStamps(mockStamps as unknown as Stamp[]); + expect(result.status).toEqual("ExceptionRaised"); + expect(result.errorDetails?.messages?.length).toEqual(3); + }); + }); + describe("getting stamps", () => { + it("should get stamps", async () => { + jest.spyOn(ComposeClient.prototype, "executeQuery").mockResolvedValueOnce({ + data: { + viewer: { + gitcoinPassportStampWrapperList: { edges: [{ node: { vc: mockComposeVc.content } }] }, + }, + }, + }); + const passport = await database.getPassport(); + expect(passport.passport?.stamps).toEqual([mockStamps[0]]); + }); + it("should indicate the an error occurred while getting passport", async () => { + jest.spyOn(ComposeClient.prototype, "executeQuery").mockResolvedValueOnce(mockComposeError); + const stamps = await database.getPassport(); + expect(stamps.status).toEqual("ExceptionRaised"); + }); + }); + describe("deleting stamps", () => { + it("should delete stamps", async () => { + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockResolvedValueOnce({ data: { deleteGitcoinPassportStamp: { document: { id: "123" } } } }); + const results = await database.deleteStamps(mockStamps.map((stamp) => stamp.provider as PROVIDER_ID)); + expect(ComposeClient.prototype.executeQuery).toHaveBeenCalled(); + expect(results).toEqual({ status: "Success" }); + }); + it("indicate the an error occurred while querying", async () => { + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockImplementation(async (query, variableValues): Promise => { + const queryStr = query as string; + if (queryStr.includes("query passport")) { + return await Promise.resolve({ + data: { + viewer: { + gitcoinPassportStampWrapperList: { edges: [{ node: { vc: mockComposeVc.content } }] }, + }, + }, + }); + } else { + return await Promise.resolve(mockComposeError); + } + }); + // jest.spyOn(ComposeClient.prototype, "executeQuery").mockResolvedValueOnce(mockComposeError); + const result = await database.deleteStamps(mockStamps.map((stamp) => stamp.provider as PROVIDER_ID)); + expect(result.status).toEqual("ExceptionRaised"); + expect(ComposeClient.prototype.executeQuery).toHaveBeenCalledTimes(2); + }); + }); + describe("patching stamps", () => { + it("should patch stamps successfully when passport has no existing stamps", async () => { + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockResolvedValue({ data: { createGitcoinPassportStamp: { document: { id: "123" } } } }); + + const result = await database.patchStamps(mockStamps as unknown as StampPatch[]); + expect(ComposeClient.prototype.executeQuery).toHaveBeenCalledTimes(7); + expect(result.status).toEqual("Success"); + }); + + it("should delete existing stamps and create new ones", async () => { + jest + .spyOn(ComposeClient.prototype, "executeQuery") + .mockImplementation(async (query, variableValues): Promise => { + const queryStr = query as string; + if (queryStr.includes("query passport")) { + return await Promise.resolve({ + data: { + viewer: { + gitcoinPassportStampWrapperList: { edges: [{ node: { vc: mockComposeVc.content } }] }, + }, + }, + }); + } else { + return await Promise.resolve({ data: { createGitcoinPassportStamp: { document: { id: "123" } } } }); + } + }); + const result = await database.patchStamps(mockStamps as unknown as StampPatch[]); + expect(ComposeClient.prototype.executeQuery).toHaveBeenCalledTimes(8); + expect(result.status).toEqual("Success"); + }); + }); +}); diff --git a/database-client/__tests__/mockStamps.json b/database-client/__tests__/mockStamps.json new file mode 100644 index 0000000000..1c4978b60a --- /dev/null +++ b/database-client/__tests__/mockStamps.json @@ -0,0 +1,374 @@ +[ + { + "provider": "GitcoinContributorStatistics#numGrantsContributeToGte#1", + "credential": { + "type": ["VerifiableCredential"], + "proof": { + "type": "EthereumEip712Signature2021", + "created": "2024-01-18T15:20:18.055Z", + "@context": "https://w3id.org/security/suites/eip712sig-2021/v1", + "proofValue": "0xcd009c8caabd5549c0d20ce729271a10324c3c316972af5a715f801f387fefe76fbdcd657078d84a87fd452dbada03acfa2ce3e6efb829c086b31edeca4d54ae1b", + "eip712Domain": { + "types": { + "Proof": [ + { + "name": "@context", + "type": "string" + }, + { + "name": "created", + "type": "string" + }, + { + "name": "proofPurpose", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "verificationMethod", + "type": "string" + } + ], + "@context": [ + { + "name": "hash", + "type": "string" + }, + { + "name": "provider", + "type": "string" + } + ], + "Document": [ + { + "name": "@context", + "type": "string[]" + }, + { + "name": "credentialSubject", + "type": "CredentialSubject" + }, + { + "name": "expirationDate", + "type": "string" + }, + { + "name": "issuanceDate", + "type": "string" + }, + { + "name": "issuer", + "type": "string" + }, + { + "name": "proof", + "type": "Proof" + }, + { + "name": "type", + "type": "string[]" + } + ], + "EIP712Domain": [ + { + "name": "name", + "type": "string" + } + ], + "CredentialSubject": [ + { + "name": "@context", + "type": "@context" + }, + { + "name": "hash", + "type": "string" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "provider", + "type": "string" + } + ] + }, + "domain": { + "name": "VerifiableCredential" + }, + "primaryType": "Document" + }, + "proofPurpose": "assertionMethod", + "verificationMethod": "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e#controller" + }, + "issuer": "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "issuanceDate": "2024-01-18T15:20:18.055Z", + "expirationDate": "2024-04-17T14:20:18.055Z", + "credentialSubject": { + "id": "did:pkh:eip155:1:0x0636F974D29d947d4946b2091d769ec6D2d415DE", + "hash": "v0.0.0:eu7RH6ZXAtRhUm3wQ3jfMVYoJ18sXynFm2AvsjsT9FQ=", + "@context": { + "hash": "https://schema.org/Text", + "provider": "https://schema.org/Text" + }, + "provider": "GitcoinContributorStatistics#numGrantsContributeToGte#1" + } + } + }, + { + "provider": "FirstEthTxnProvider", + "credential": { + "type": ["VerifiableCredential"], + "proof": { + "type": "EthereumEip712Signature2021", + "created": "2024-01-16T23:18:51.642Z", + "@context": "https://w3id.org/security/suites/eip712sig-2021/v1", + "proofValue": "0x03734141dea4015030cfefc6bdfb4eb6d401a7db9bc28a1246492e5382a0854a4d8335b06ee515f96f208fbcf0c0d3e5132ef3b7f4c912dc4e2bc2931f29b01c1c", + "eip712Domain": { + "types": { + "Proof": [ + { + "name": "@context", + "type": "string" + }, + { + "name": "created", + "type": "string" + }, + { + "name": "proofPurpose", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "verificationMethod", + "type": "string" + } + ], + "@context": [ + { + "name": "hash", + "type": "string" + }, + { + "name": "provider", + "type": "string" + } + ], + "Document": [ + { + "name": "@context", + "type": "string[]" + }, + { + "name": "credentialSubject", + "type": "CredentialSubject" + }, + { + "name": "expirationDate", + "type": "string" + }, + { + "name": "issuanceDate", + "type": "string" + }, + { + "name": "issuer", + "type": "string" + }, + { + "name": "proof", + "type": "Proof" + }, + { + "name": "type", + "type": "string[]" + } + ], + "EIP712Domain": [ + { + "name": "name", + "type": "string" + } + ], + "CredentialSubject": [ + { + "name": "@context", + "type": "@context" + }, + { + "name": "hash", + "type": "string" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "provider", + "type": "string" + } + ] + }, + "domain": { + "name": "VerifiableCredential" + }, + "primaryType": "Document" + }, + "proofPurpose": "assertionMethod", + "verificationMethod": "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e#controller" + }, + "issuer": "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "issuanceDate": "2024-01-16T23:18:51.641Z", + "expirationDate": "2024-04-15T22:18:51.641Z", + "credentialSubject": { + "id": "did:pkh:eip155:1:0x0636F974D29d947d4946b2091d769ec6D2d415DE", + "hash": "v0.0.0:VC1vOVLxD3X29DYfyyT58AA+j0rC5vkXNflCA94iApA=", + "@context": { + "hash": "https://schema.org/Text", + "provider": "https://schema.org/Text" + }, + "provider": "FirstEthTxnProvider" + } + } + }, + { + "provider": "EthGTEOneTxnProvider", + "credential": { + "type": ["VerifiableCredential"], + "proof": { + "type": "EthereumEip712Signature2021", + "created": "2024-01-16T23:18:51.642Z", + "@context": "https://w3id.org/security/suites/eip712sig-2021/v1", + "proofValue": "0x16619606b1d7d07ef2dc05d1d47e209451f0db323d1685f2355583b14a4526923916746d379211f5bd0759304a495cc2fe6c5dcdfde51f0931d0364e6018e5c41b", + "eip712Domain": { + "types": { + "Proof": [ + { + "name": "@context", + "type": "string" + }, + { + "name": "created", + "type": "string" + }, + { + "name": "proofPurpose", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "verificationMethod", + "type": "string" + } + ], + "@context": [ + { + "name": "hash", + "type": "string" + }, + { + "name": "provider", + "type": "string" + } + ], + "Document": [ + { + "name": "@context", + "type": "string[]" + }, + { + "name": "credentialSubject", + "type": "CredentialSubject" + }, + { + "name": "expirationDate", + "type": "string" + }, + { + "name": "issuanceDate", + "type": "string" + }, + { + "name": "issuer", + "type": "string" + }, + { + "name": "proof", + "type": "Proof" + }, + { + "name": "type", + "type": "string[]" + } + ], + "EIP712Domain": [ + { + "name": "name", + "type": "string" + } + ], + "CredentialSubject": [ + { + "name": "@context", + "type": "@context" + }, + { + "name": "hash", + "type": "string" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "provider", + "type": "string" + } + ] + }, + "domain": { + "name": "VerifiableCredential" + }, + "primaryType": "Document" + }, + "proofPurpose": "assertionMethod", + "verificationMethod": "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e#controller" + }, + "issuer": "did:ethr:0xd6fc34345bc8c8e5659a35bed9629d5558d48c4e", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "issuanceDate": "2024-01-16T23:18:51.641Z", + "expirationDate": "2024-04-15T22:18:51.641Z", + "credentialSubject": { + "id": "did:pkh:eip155:1:0x0636F974D29d947d4946b2091d769ec6D2d415DE", + "hash": "v0.0.0:Oea3wZ4eyz1+5XeCOJo+flx2vSlE9PiZcL9HZeQda44=", + "@context": { + "hash": "https://schema.org/Text", + "provider": "https://schema.org/Text" + }, + "provider": "EthGTEOneTxnProvider" + } + } + } +] diff --git a/database-client/__tests__/passportScorerClient.test.ts b/database-client/__tests__/passportScorerClient.test.ts index ec1d0eaf7e..377743cc89 100644 --- a/database-client/__tests__/passportScorerClient.test.ts +++ b/database-client/__tests__/passportScorerClient.test.ts @@ -14,7 +14,7 @@ const address = "0x123456789abcdef"; jest.mock("axios"); -const stamps = [ +export const stamps = [ { provider: "provider1", credential: "credential1" } as unknown as Stamp, { provider: "provider2", credential: "credential2" } as unknown as Stamp, ]; diff --git a/database-client/composedb.config.json b/database-client/composedb.config.json new file mode 100644 index 0000000000..9b67d4ff5a --- /dev/null +++ b/database-client/composedb.config.json @@ -0,0 +1,24 @@ +{ + "anchor": {}, + "http-api": { + "cors-allowed-origins": [".*"], + "admin-dids": [ + "did:key:z6MknU3gBqubYTbXbHnHzpJurGyrssbpLdS7Mbz1uHdGdzdo", + "did:key:z6Mki9zj9fFYxBbQcaC6EJvST8XHv7i4iXsP281gJV5nM5Hy#z6Mki9zj9fFYxBbQcaC6EJvST8XHv7i4iXsP281gJV5nM5Hy" + ] + }, + "ipfs": { "mode": "bundled" }, + "logger": { "log-level": 2, "log-to-files": false }, + "metrics": { "metrics-exporter-enabled": false, "metrics-port": 9090 }, + "network": { "name": "inmemory" }, + "node": {}, + "state-store": { + "mode": "fs", + "local-directory": "/Users/timschultz/repos/compose-db/ceramic-app/ceramic-app-app/.ceramic/.ceramic/statestore/" + }, + "indexing": { + "db": "sqlite:///Users/timschultz/repos/compose-db/ceramic-app/ceramic-app-app/.ceramic/indexing.sqlite", + "allow-queries-before-historical-sync": true, + "models": [] + } +} diff --git a/database-client/integration-tests/ceramicDatabaseStampValidity.ts b/database-client/integration-tests/ceramicDatabaseStampValidity.ts new file mode 100644 index 0000000000..dbc8af9e64 --- /dev/null +++ b/database-client/integration-tests/ceramicDatabaseStampValidity.ts @@ -0,0 +1,87 @@ +import { Stamp } from "@gitcoin/passport-types"; + +import * as DIDKit from "@spruceid/didkit-wasm-node"; +import { issueEip712Credential, stampCredentialDocument } from "@gitcoin/passport-identity"; + +import { DID } from "dids"; +import { Ed25519Provider } from "key-did-provider-ed25519"; +import { getResolver } from "key-did-resolver"; +import { jest } from "@jest/globals"; + +import { ComposeDatabase } from "../src"; + +let testDID: DID; +let composeDatabase: ComposeDatabase; + +jest.setTimeout(180000); + +const IAM_JWK_EIP712 = + '{"kty":"EC","crv":"secp256k1","x":"PdB2nS-knyAxc6KPuxBr65vRpW-duAXwpeXlwGJ03eU","y":"MwoGZ08hF5uv-_UEC9BKsYdJVSbJNHcFhR1BZWer5RQ","d":"z9VrSNNZXf9ywUx3v_8cLDhSw8-pvAT9qu_WZmqqfWM"}'; +const eip712Key = IAM_JWK_EIP712; + +beforeAll(async () => { + const TEST_SEED = Uint8Array.from({ length: 32 }, () => Math.floor(Math.random() * 256)); + + // Create and authenticate the DID + testDID = new DID({ + provider: new Ed25519Provider(TEST_SEED), + resolver: getResolver(), + }); + await testDID.authenticate(); + + composeDatabase = new ComposeDatabase(testDID, process.env.CERAMIC_CLIENT_URL || "http://localhost:7007"); +}); + +describe("assuming a valid stamp is stored in ceramic", () => { + it("should return a valid stamp that can be validated successfully", async () => { + // Step 1: First, we need to create a valid stamp + const verificationMethod: string = (await DIDKit.keyToVerificationMethod("ethr", eip712Key)) as string; + + const credential = await issueEip712Credential( + DIDKit, + eip712Key, + { expiresAt: new Date("2050-12-31") }, + { + credentialSubject: { + "@context": { + hash: "https://schema.org/Text", + provider: "https://schema.org/Text", + }, + id: "did:3:0x123", + hash: "0x123", + provider: "Discord", + }, + }, + stampCredentialDocument(verificationMethod), + ["https://w3id.org/vc/status-list/2021/v1"] + ); + + const stampsToAdd: Stamp[] = [ + { + credential, + provider: "Discord", + }, + ]; + + // Step 2: Write the stamp to compose + const addRequest = await composeDatabase.addStamps(stampsToAdd); + expect(addRequest.status).toEqual("Success"); + + // Step 3: Read the user passport + const result = await composeDatabase.getPassport(); + + expect(result.status).toEqual("Success"); + expect(result.passport.stamps.length).toEqual(1); + expect(result.passport.stamps[0].provider).toEqual(stampsToAdd[0].provider); + + const readCredential = result.passport.stamps[0].credential; + expect(readCredential).toEqual(credential); + + // Step 4: Validate the stamp + const verificationResult = JSON.parse( + await DIDKit.verifyCredential(JSON.stringify(readCredential), '{"proofPurpose":"assertionMethod"}') + ); + + expect(verificationResult).toEqual({ checks: ["proof"], warnings: [], errors: [] }); + }); +}); diff --git a/database-client/integration-tests/ceramicDatabaseTest.ts b/database-client/integration-tests/ceramicDatabaseTest.ts index 4851e37e87..d9f03cafb8 100644 --- a/database-client/integration-tests/ceramicDatabaseTest.ts +++ b/database-client/integration-tests/ceramicDatabaseTest.ts @@ -1,17 +1,22 @@ -import { PassportLoadStatus, Passport, VerifiableCredential, Stamp, PROVIDER_ID } from "@gitcoin/passport-types"; +import { Stamp, StampPatch } from "@gitcoin/passport-types"; import { DID } from "dids"; import { Ed25519Provider } from "key-did-provider-ed25519"; import { getResolver } from "key-did-resolver"; import { jest } from "@jest/globals"; -import testnetAliases from "./integration-test-model-aliases.json"; +import mockStamps from "../__tests__/mockStamps.json"; -import { CeramicDatabase } from "../src"; +import { ComposeDatabase } from "../src"; let testDID: DID; -let ceramicDatabase: CeramicDatabase; +let composeDatabase: ComposeDatabase; jest.setTimeout(180000); +const stampsToPatch: StampPatch[] = [mockStamps[0] as StampPatch]; +const stampsToAdd: Stamp[] = [mockStamps[1] as Stamp]; +const badStamp = JSON.parse(JSON.stringify(mockStamps[2])) as Stamp; +delete badStamp.credential.issuer; + beforeAll(async () => { const TEST_SEED = Uint8Array.from({ length: 32 }, () => Math.floor(Math.random() * 256)); @@ -22,485 +27,108 @@ beforeAll(async () => { }); await testDID.authenticate(); - ceramicDatabase = new CeramicDatabase(testDID, process.env.CERAMIC_CLIENT_URL, testnetAliases); + composeDatabase = new ComposeDatabase(testDID, process.env.CERAMIC_CLIENT_URL || "http://localhost:7007"); }); -afterAll(async () => { - await ceramicDatabase.store.remove("Passport"); +describe("adding and deleting stamps", () => { + it("should add stamps to compose-db", async () => { + let passportResult = await composeDatabase.getPassport(); + expect(passportResult.status).toEqual("Success"); + expect(passportResult.passport.stamps.length).toEqual(0); + + const addRequest = await composeDatabase.addStamps(stampsToAdd); + const result = await composeDatabase.getPassport(); + debugger; + expect(result.status).toEqual("Success"); + expect(result.passport.stamps.length).toEqual(1); + expect(result.passport.stamps[0].provider).toEqual(stampsToAdd[0].provider); + }); + it("should indicate an error when adding a stamp", async () => { + const result = await composeDatabase.addStamps([badStamp]); + expect(result.status).toEqual("ExceptionRaised"); + expect(result.errorDetails).toBeDefined(); + expect(result.errorDetails?.messages.length).toEqual(1); + }); + it("should delete stamps from compose-db", async () => { + let passportResult = await composeDatabase.getPassport(); + expect(passportResult.status).toEqual("Success"); + expect(passportResult.passport.stamps.length).toEqual(1); + + await composeDatabase.deleteStamps([stampsToAdd[0].provider]); + const result = await composeDatabase.getPassport(); + expect(result.status).toEqual("Success"); + expect(result.passport.stamps.length).toEqual(0); + }); + it("should indicate that one stamp failed to save while others were successful", async () => { + let passportResult = await composeDatabase.getPassport(); + expect(passportResult.status).toEqual("Success"); + expect(passportResult.passport.stamps.length).toEqual(0); + + const result = await composeDatabase.addStamps([badStamp, stampsToAdd[0]]); + expect(result.status).toEqual("ExceptionRaised"); + expect(result.errorDetails).toBeDefined(); + expect(result.errorDetails?.messages.length).toEqual(1); + + let newPassport = await composeDatabase.getPassport(); + expect(newPassport.status).toEqual("Success"); + expect(newPassport.passport.stamps.length).toEqual(1); + }); + // Not sure how to test this one + // it("should indicate an error when deleting a stamp", async () => { + // const invalidStamp = stampsToAdd[0]; + // delete invalidStamp.credential.issuer; + // const result = await composeDatabase.deleteStamps([invalidStamp.provider]); + // expect(result.status).toEqual("ExceptionRaised"); + // expect(result.errorDetails).toBeDefined(); + // expect(result.errorDetails?.messages.length).toEqual(1); + // }); }); -describe("when there is no passport for the given did", () => { - beforeEach(async () => { - await ceramicDatabase.store.remove("Passport"); - }); - - it("createPassport creates a passport in ceramic", async () => { - const actualPassportStreamID = await ceramicDatabase.createPassport(); - - expect(actualPassportStreamID).toBeDefined(); - - const storedPassport = (await ceramicDatabase.loader.load(actualPassportStreamID)).content; - - const formattedDate = new Date(storedPassport["issuanceDate"]); - const todaysDate = new Date(); - - expect(formattedDate.getDay()).toEqual(todaysDate.getDay()); - expect(formattedDate.getMonth()).toEqual(todaysDate.getMonth()); - expect(formattedDate.getFullYear()).toEqual(todaysDate.getFullYear()); - expect(storedPassport["stamps"]).toEqual([]); - }); - - it("getPassport returns false", async () => { - const { passport, status, errorDetails } = await ceramicDatabase.getPassport(); - - const expectedStatus: PassportLoadStatus = "DoesNotExist"; - expect(status).toEqual(expectedStatus); +describe("getting a passport", () => { + it("should return a passport", async () => { + const result = await composeDatabase.getPassport(); + expect(result.status).toEqual("Success"); + expect(result.passport.stamps.length).toEqual(1); + }); + it("should return stamp data", async () => { + const result = await composeDatabase.getPassport(); + expect(result.status).toEqual("Success"); + expect(result.passport.stamps.length).toEqual(1); + const stampData = result.passport.stamps[0]; + expect(stampData.provider).toEqual(stampsToAdd[0].provider); + expect(stampData.credential.issuer).toEqual(stampsToAdd[0].credential.issuer); + expect(stampData.credential.issuanceDate).toEqual(stampsToAdd[0].credential.issuanceDate); + await composeDatabase.deleteStamps([stampsToAdd[0].provider]); }); }); -describe("when there is an existing passport without stamps for the given did", () => { - const existingPassport: Passport = { - issuanceDate: new Date("2022-01-01"), - expiryDate: new Date("2022-01-02"), - stamps: [], - }; - - let existingPassportStreamID; - beforeEach(async () => { - // ceramicPassport follows the schema definition that ceramic expects - const ceramicPassport = { - issuanceDate: existingPassport.issuanceDate, - expiryDate: existingPassport.expiryDate, - stamps: existingPassport.stamps, - }; - const stream = await ceramicDatabase.store.set("Passport", ceramicPassport); - existingPassportStreamID = stream.toUrl(); - }); - - afterEach(async () => { - await ceramicDatabase.store.remove("Passport"); - }); - - it("getPassport retrieves the passport from ceramic", async () => { - const { passport } = await ceramicDatabase.getPassport(); - - expect(passport).toBeDefined(); - expect(passport).toEqual(existingPassport); - expect(passport.stamps).toEqual([]); - }); - - it("addStamp adds a stamp to passport", async () => { - const credential: VerifiableCredential = { - "@context": ["https://www.w3.org/2018/credentials/v1"], - type: ["VerifiableCredential"], - credentialSubject: { - id: `${ceramicDatabase.did}`, - "@context": [ - { - hash: "https://schema.org/Text", - provider: "https://schema.org/Text", - }, - ], - hash: "randomValuesHash", - provider: "randomValuesProvider", - }, - issuer: "did:key:randomValuesIssuer", - issuanceDate: "2022-04-15T21:04:01.708Z", - proof: { - type: "Ed25519Signature2018", - proofPurpose: "assertionMethod", - verificationMethod: "did:key:randomValues", - created: "2022-04-15T21:04:01.708Z", - jws: "randomValues", - }, - expirationDate: "2022-05-15T21:04:01.708Z", - }; - - const googleStampFixture: Stamp = { - provider: "Google", - credential, - }; - - await ceramicDatabase.addStamp(googleStampFixture); - const passport = await ceramicDatabase.store.get("Passport"); - const retrievedStamp = passport?.stamps[0]; - - // retrieve streamId stored in credential to load verifiable credential - const loadedCred = await ceramicDatabase.loader.load(retrievedStamp.credential); - - expect(passport.stamps.length).toEqual(1); - expect(loadedCred.content as VerifiableCredential).toEqual(credential); - expect(retrievedStamp.provider as PROVIDER_ID).toEqual(googleStampFixture.provider); - }); -}); - -describe("when there is an existing passport with stamps for the given did", () => { - const existingPassport: Passport = { - issuanceDate: new Date("2022-01-01"), - expiryDate: new Date("2022-01-02"), - stamps: [], - }; - - // these need to be initialized in beforeEach since `credential` needs `ceramicDatabase` to be defined - let credential: VerifiableCredential; - let ensStampFixture: Stamp; - let googleStampFixture: Stamp; - - let existingPassportStreamID; - beforeEach(async () => { - credential = { - "@context": ["https://www.w3.org/2018/credentials/v1"], - type: ["VerifiableCredential"], - credentialSubject: { - id: `${ceramicDatabase.did}`, - "@context": [ - { - hash: "https://schema.org/Text", - provider: "https://schema.org/Text", - }, - ], - hash: "randomValuesHash", - provider: "randomValuesProvider", - }, - issuer: "did:key:randomValuesIssuer", - issuanceDate: "2022-04-15T21:04:01.708Z", - proof: { - type: "Ed25519Signature2018", - proofPurpose: "assertionMethod", - verificationMethod: "did:key:randomValues", - created: "2022-04-15T21:04:01.708Z", - jws: "randomValues", - }, - expirationDate: "2022-05-15T21:04:01.708Z", - }; - - // create a tile for verifiable credential issued from iam server - const ensStampTile = await ceramicDatabase.model.createTile("VerifiableCredential", credential); - - ensStampFixture = { - provider: "Ens", - credential, - streamId: ensStampTile.id.toUrl(), - }; - - googleStampFixture = { - provider: "Google", - credential, - }; - - // add ENS stamp provider and streamId to passport stamps array - const existingPassportWithStamps = { - issuanceDate: new Date("2022-01-01"), - expiryDate: new Date("2022-01-02"), - stamps: [ - { - provider: ensStampFixture.provider, - credential: ensStampTile.id.toUrl(), - }, - ], - }; - - const stream = await ceramicDatabase.store.set("Passport", existingPassportWithStamps); - existingPassportStreamID = stream.toUrl(); - }); - - afterEach(async () => { - await ceramicDatabase.store.remove("Passport"); - }); - - it("getPassport retrieves the passport and stamps from ceramic", async () => { - const { passport } = await ceramicDatabase.getPassport(); - - const formattedDate = new Date(passport["issuanceDate"]); - - expect(passport).toBeDefined(); - expect(formattedDate.getDay()).toEqual(existingPassport.issuanceDate.getDay()); - expect(formattedDate.getMonth()).toEqual(existingPassport.issuanceDate.getMonth()); - expect(formattedDate.getFullYear()).toEqual(existingPassport.issuanceDate.getFullYear()); - expect(passport.stamps[0]).toEqual(ensStampFixture); - }); - - it("addStamp adds a stamp to passport", async () => { - await ceramicDatabase.addStamp(googleStampFixture); - - const passport = await ceramicDatabase.store.get("Passport"); - - const retrievedStamp = passport?.stamps[1]; - - // retrieve streamId stored in credential to load verifiable credential - const loadedCred = await ceramicDatabase.loader.load(retrievedStamp.credential); - - expect(passport.stamps.length).toEqual(2); - expect(loadedCred.content as VerifiableCredential).toEqual(credential); - expect(retrievedStamp.provider as PROVIDER_ID).toEqual(googleStampFixture.provider); - }); -}); - -describe("when there is an existing passport with stamps for the given did", () => { - const existingPassport: Passport = { - issuanceDate: new Date("2022-01-01"), - expiryDate: new Date("2022-01-02"), - stamps: [], - }; - - // these need to be initialized in beforeEach since `credential` needs `ceramicDatabase` to be defined - let credential: VerifiableCredential; - let ensStampFixture: Stamp; - let googleStampFixture: Stamp; - let poapStampFixture: Stamp; - - let existingPassportStreamID; - let existingEnsStampTileStreamID: string; - let existingGoogleStampTileStreamID: string; - let existingPoapStampTileStreamID: string; - let providerIds: PROVIDER_ID[]; - - beforeEach(async () => { - credential = { - "@context": ["https://www.w3.org/2018/credentials/v1"], - type: ["VerifiableCredential"], - credentialSubject: { - id: `${ceramicDatabase.did}`, - "@context": [ - { - hash: "https://schema.org/Text", - provider: "https://schema.org/Text", - }, - ], - hash: "randomValuesHash", - provider: "randomValuesProvider", - }, - issuer: "did:key:randomValuesIssuer", - issuanceDate: "2022-04-15T21:04:01.708Z", - proof: { - type: "Ed25519Signature2018", - proofPurpose: "assertionMethod", - verificationMethod: "did:key:randomValues", - created: "2022-04-15T21:04:01.708Z", - jws: "randomValues", - }, - expirationDate: "2022-05-15T21:04:01.708Z", - }; - - ensStampFixture = { - provider: "Ens", - credential, - }; - - googleStampFixture = { - provider: "Google", - credential, - }; - - poapStampFixture = { - provider: "POAP", - credential, - }; - - // create the tiles for verifiable credentials - const ensStampTile = await ceramicDatabase.model.createTile("VerifiableCredential", credential); - const googleStampTile = await ceramicDatabase.model.createTile("VerifiableCredential", credential); - const poapStampTile = await ceramicDatabase.model.createTile("VerifiableCredential", credential); - existingEnsStampTileStreamID = ensStampTile.id.toUrl(); - existingGoogleStampTileStreamID = googleStampTile.id.toUrl(); - existingPoapStampTileStreamID = poapStampTile.id.toUrl(); - providerIds = ["Ens", "Google", "POAP"]; - - // add ENS stamp provider and streamId to passport stamps array - const existingPassportWithStamps = { - issuanceDate: new Date("2022-01-01"), - expiryDate: new Date("2022-01-02"), - stamps: [ - { - provider: ensStampFixture.provider, - credential: ensStampTile.id.toUrl(), - }, - { - provider: googleStampFixture.provider, - credential: googleStampTile.id.toUrl(), - }, - { - provider: poapStampFixture.provider, - credential: poapStampTile.id.toUrl(), - }, - ], - }; - - const stream = await ceramicDatabase.store.set("Passport", existingPassportWithStamps); - existingPassportStreamID = stream.toUrl(); - }); - - afterEach(async () => { - await ceramicDatabase.store.remove("Passport"); - }); - - it("deleteStamps deletes selected stamps from passport", async () => { - await ceramicDatabase.deleteStamps(providerIds); - - // The deletion will not be reflected immediately, we need to wait a bit ... - await new Promise((r) => setTimeout(r, 2000)); - const passport = await ceramicDatabase.store.get("Passport"); - - expect(passport.stamps.length).toEqual(0); - expect( - passport.stamps.findIndex((stamp) => { - return stamp.credential === existingEnsStampTileStreamID; - }) - ).toEqual(-1); - expect( - passport.stamps.findIndex((stamp) => { - return stamp.credential === existingPoapStampTileStreamID; - }) - ).toEqual(-1); - expect( - passport.stamps.findIndex((stamp) => { - return stamp.credential === existingGoogleStampTileStreamID; - }) - ).toEqual(-1); - }); - - it("deleteStamp deletes an existing stamp from passport", async () => { - await ceramicDatabase.deleteStamp(existingGoogleStampTileStreamID); - - // The deletion will not be reflected immediately, we need to wait a bit ... - await new Promise((r) => setTimeout(r, 2000)); - const passport = await ceramicDatabase.store.get("Passport"); - - expect(passport.stamps.length).toEqual(2); - expect( - passport.stamps.findIndex((stamp) => { - return stamp.credential === existingEnsStampTileStreamID; - }) - ).toEqual(0); - expect( - passport.stamps.findIndex((stamp) => { - return stamp.credential === existingPoapStampTileStreamID; - }) - ).toEqual(1); - expect( - passport.stamps.findIndex((stamp) => { - return stamp.credential === existingGoogleStampTileStreamID; - }) - ).toEqual(-1); - }); -}); - -describe("when loading a stamp from a passport fails", () => { - const existingPassport: Passport = { - issuanceDate: new Date("2022-01-01"), - expiryDate: new Date("2022-01-02"), - stamps: [], - }; - - // these need to be initialized in beforeEach since `credential` needs `ceramicDatabase` to be defined - let ensCredential: VerifiableCredential; - let poapCredential: VerifiableCredential; - let googleCredential: VerifiableCredential; - let ensStampFixture: Stamp; - let googleStampFixture: Stamp; - let poapStampFixture: Stamp; - - let existingPassportStreamID; - let existingEnsStampTileStreamID: string; - let existingPoapStampTileStreamID: string; - - beforeEach(async () => { - const createVC = function (provider: string): VerifiableCredential { - return { - "@context": ["https://www.w3.org/2018/credentials/v1"], - type: ["VerifiableCredential"], - credentialSubject: { - id: `${ceramicDatabase.did}`, - "@context": [ - { - hash: "https://schema.org/Text", - provider: "https://schema.org/Text", - }, - ], - hash: "randomValuesHash", - provider: provider, - }, - issuer: "did:key:randomValuesIssuer", - issuanceDate: "2022-04-15T21:04:01.708Z", - proof: { - type: "Ed25519Signature2018", - proofPurpose: "assertionMethod", - verificationMethod: "did:key:randomValues", - created: "2022-04-15T21:04:01.708Z", - jws: "randomValues", - }, - expirationDate: "2022-05-15T21:04:01.708Z", - }; - }; - - ensCredential = createVC("Ens"); - poapCredential = createVC("POAP"); - googleCredential = createVC("Google"); - - ensStampFixture = { - provider: "Ens", - credential: ensCredential, - }; - - googleStampFixture = { - provider: "Google", - credential: googleCredential, - }; - - poapStampFixture = { - provider: "POAP", - credential: poapCredential, - }; - - // create the tiles for verifiable credentials - const ensStampTile = await ceramicDatabase.model.createTile("VerifiableCredential", ensCredential); - const poapStampTile = await ceramicDatabase.model.createTile("VerifiableCredential", googleCredential); - - existingEnsStampTileStreamID = ensStampTile.id.toUrl(); - existingPoapStampTileStreamID = poapStampTile.id.toUrl(); - - // add ENS stamp provider and streamId to passport stamps array - const existingPassportWithStamps = { - issuanceDate: new Date("2022-01-01"), - expiryDate: new Date("2022-01-02"), - stamps: [ - { - provider: ensStampFixture.provider, - credential: ensStampTile.id.toUrl(), - }, - { - provider: googleStampFixture.provider, - credential: "ceramic://SOME_BAD_ID_FOR_CERAMIC", - }, - { - provider: poapStampFixture.provider, - credential: poapStampTile.id.toUrl(), - }, - ], - }; - - const stream = await ceramicDatabase.store.set("Passport", existingPassportWithStamps); - existingPassportStreamID = stream.toUrl(); - }); - - afterEach(async () => { - await ceramicDatabase.store.remove("Passport"); - }); - - it("ignores the failed stamp and only returns the successfully loaded stamps", async () => { - const { passport } = await ceramicDatabase.getPassport(); - - // We only expect 2 results: Ens and Google stamps - expect(passport.stamps.length).toEqual(2); - expect( - passport.stamps.findIndex((stamp) => { - return stamp && stamp.credential.credentialSubject.provider === "Ens"; - }) - ).toEqual(0); - expect( - passport.stamps.findIndex((stamp) => { - return stamp && stamp.credential.credentialSubject.provider === "Google"; - }) - ).toEqual(1); +describe("updating an existing passport", () => { + it("should update a passport's stamps within compose-db", async () => { + // First read should return 0 passports ... + let passportResult = await composeDatabase.getPassport(); + + expect(passportResult.status).toEqual("Success"); + expect(passportResult.passport.stamps.length).toEqual(0); + + // Patch a stamp, then read again -> we expect the stamp to be created + await composeDatabase.patchStamps(stampsToPatch); + passportResult = await composeDatabase.getPassport(); + expect(passportResult.status).toEqual("Success"); + expect(passportResult.passport.stamps.length).toEqual(1); + + // Patch a stamp again, then read again. We expect the new + const newStampPatch: StampPatch = JSON.parse(JSON.stringify(stampsToPatch[0])); + newStampPatch.credential.issuer = "Dummy Issuer"; + await composeDatabase.patchStamps([newStampPatch]); + passportResult = await composeDatabase.getPassport(); + expect(passportResult.status).toEqual("Success"); + expect(passportResult.passport.stamps.length).toEqual(1); + expect(passportResult.passport.stamps[0].credential.issuer).toEqual("Dummy Issuer"); + }); + it("should indicate that an error was thrown while patching stamps", async () => { + const result = await composeDatabase.patchStamps([badStamp]); + expect(result.status).toEqual("ExceptionRaised"); + expect(result.errorDetails).toBeDefined(); + expect(result.errorDetails?.messages.length).toEqual(1); }); }); diff --git a/database-client/package.json b/database-client/package.json index d0239b0f9d..bfa2c11539 100644 --- a/database-client/package.json +++ b/database-client/package.json @@ -18,28 +18,26 @@ "scripts": { "build": "tsc", "clean": "rimraf dist node_modules", - "ceramic": "ceramic daemon", + "debug": "tsc --watch", + "ceramic": "CERAMIC_ENABLE_EXPERIMENTAL_COMPOSE_DB='true' ceramic daemon --config composedb.config.json", "test:integration": "yarn build && yarn node --experimental-vm-modules $(yarn bin jest) -c jest.integration.config.js", "test": "yarn node --experimental-vm-modules $(yarn bin jest) -c jest.config.cjs" }, "dependencies": { - "@ceramicnetwork/http-client": "^2.2.1", - "@gitcoin/passport-schemas": "^1.0.0", + "@composedb/client": "^0.6.0", + "@composedb/types": "^0.6.0", "@glazed/datamodel": "^0.3.0", "@glazed/did-datastore": "^0.3.1", "@glazed/tile-loader": "^0.2.0", - "dids": "^3.1.0", + "dids": "^5.0.2", "dotenv": "^16.0.0", "key-did-provider-ed25519": "^2.0.0", - "key-did-resolver": "^2.0.0", - "uint8arrays": "^3.0.0" + "key-did-resolver": "^4.0.0", + "uint8arrays": "^5.0.1" }, "devDependencies": { - "@ceramicnetwork/common": "^2.2.1", - "@ceramicnetwork/stream-tile": "^2.2.2", - "@glazed/devtools": "^0.1.6", - "@glazed/did-datastore-model": "^0.2.0", - "@glazed/types": "^0.2.0", + "@ceramicnetwork/cli": "^3.2.0", + "@composedb/cli": "^0.6.1", "@types/jest": "^27.4.1", "@types/node": "^16.11.6", "jest": "^29.6.4", diff --git a/database-client/src/ceramicClient.ts b/database-client/src/ceramicClient.ts deleted file mode 100644 index 6b00c39526..0000000000 --- a/database-client/src/ceramicClient.ts +++ /dev/null @@ -1,465 +0,0 @@ -import { TileDocument } from "@ceramicnetwork/stream-tile"; -import { - DID, - PROVIDER_ID, - Stamp, - VerifiableCredential, - PassportLoadStatus, - PassportLoadResponse, - PassportLoadErrorDetails, - Passport, -} from "@gitcoin/passport-types"; - -// -- Ceramic and Glazed -import type { CeramicApi, Stream } from "@ceramicnetwork/common"; -import { SyncOptions } from "@ceramicnetwork/common"; -import { CeramicClient } from "@ceramicnetwork/http-client"; -import publishedModel from "@gitcoin/passport-schemas/scripts/publish-model.json"; -import { DataModel } from "@glazed/datamodel"; -import { DIDDataStore } from "@glazed/did-datastore"; -import { TileLoader } from "@glazed/tile-loader"; -import type { DID as CeramicDID } from "dids"; -import { StreamID } from "@ceramicnetwork/streamid"; -import axios from "axios"; -import { DataStorageBase } from "./types"; -import { getTilesToCreate } from "./utils"; - -// const LOCAL_CERAMIC_CLIENT_URL = "http://localhost:7007"; -const COMMUNITY_TESTNET_CERAMIC_CLIENT_URL = "https://ceramic-clay.3boxlabs.com"; - -export type CeramicStamp = { - provider: string; - credential: string; -}; -export type CeramicPassport = { - issuanceDate: string; - expiryDate: string; - stamps: CeramicStamp[]; -}; - -export type ModelTypes = { - schemas: { - Passport: CeramicPassport; - VerifiableCredential: VerifiableCredential; - }; - definitions: { - Passport: "Passport"; - VerifiableCredential: "VerifiableCredential"; - }; - tiles: {}; -}; - -export type Logger = { - error: (msg: string, context?: object) => void; - log: (msg: string, context?: object) => void; - warn: (msg: string, context?: object) => void; - debug: (msg: string, context?: object) => void; - info: (msg: string, context?: object) => void; -}; - -type StampLoadResponse = { - successfulStamps: Stamp[]; - cacaoErrorStampIds: string[]; -}; - -export class CeramicDatabase implements DataStorageBase { - did: string; - loader: TileLoader; - ceramicClient: CeramicApi; - model: DataModel; - store: DIDDataStore; - logger: Logger; - apiHost: string; - - constructor(did?: CeramicDID, ceramicHost?: string, aliases?: any, logger?: Logger) { - if (logger) { - this.logger = logger; - } else { - this.logger = console; - } - - // Create the Ceramic instance and inject the DID - this.apiHost = ceramicHost ?? COMMUNITY_TESTNET_CERAMIC_CLIENT_URL; - const ceramic = new CeramicClient(this.apiHost); - ceramic.setDID(did); - - // Create the loader, model and store - const loader = new TileLoader({ ceramic }); - const model = new DataModel({ ceramic, aliases: aliases ?? publishedModel }); - const store = new DIDDataStore({ loader, ceramic, model }); - - // Store the users did:pkh here to verify match on credential - this.did = (did.hasParent ? did.parent : did.id).toLowerCase(); - - // Store state into class - this.loader = loader; - this.ceramicClient = ceramic; - this.model = model; - this.store = store; - } - - async createPassport(): Promise { - this.logger.info(`create new passport for did ${this.did}`); - const date = new Date(); - const newPassport: CeramicPassport = { - issuanceDate: date.toISOString(), - expiryDate: date.toISOString(), - stamps: [], - }; - const stream = await this.store.set("Passport", { ...newPassport }); - return stream.toUrl(); - } - - async checkPassportCACAOError(): Promise { - try { - let recordId = await this.store.getRecordID(this.model.getDefinitionID("Passport")); - if (recordId) { - // Drop the `ceramic://` - recordId = recordId.substring(10); - const streamUrl = `${this.apiHost}/api/v0/streams/${recordId}`; - await axios.get(streamUrl); - } - return false; - } catch (e) { - this.logger.error(`checkPassportCACAOError - Error when calling getRecordDocument on Passport`, { error: e }); - if ( - e?.response?.data?.error?.includes("CACAO has expired") || - e?.response?.data?.error?.includes("CACAO expired") - ) { - return true; - } - } - return false; - } - - async refreshPassport(): Promise { - let attempts = 1; - let success = false; - - let passportId; - try { - this.logger.info("refreshPassport - getRecordDocument"); - passportId = await this.store.getRecordID(this.model.getDefinitionID("Passport")); - } catch (e) { - this.logger.info("refreshPassport - failed to get record document", { error: e }); - // unable to get passport doc - return false; - } - // Attempt to load stream 36 times, with 5 second delay between each attempt - 5 min total - while (attempts < 36 && !success) { - const options = attempts === 1 ? { sync: SyncOptions.SYNC_ALWAYS } : {}; - try { - this.logger.info( - `refreshPassport - loading stream with SyncOptions.SYNC_ALWAYS, attempt:${attempts}, stream=${passportId}`, - { options: options } - ); - await this.ceramicClient.loadStream(passportId, options); - success = true; - this.logger.info( - `refreshPassport - loading stream with SyncOptions.SYNC_ALWAYS, attempt:${attempts}, stream=${passportId} => SUCCESS` - ); - return success; - } catch (e) { - this.logger.error(`refreshPassport - error when calling loadStream on passport, attempt ${attempts}`, { - error: e, - }); - attempts++; - await new Promise((resolve) => setTimeout(resolve, 5000)); - } - } - return false; - } - - async getPassport(): Promise { - let passport: Passport; - let status: PassportLoadStatus = "Success"; - let errorDetails: PassportLoadErrorDetails; - - try { - const ceramicPassport = await this.store.get("Passport"); - this.logger.info(`[Ceramic] Loaded passport for did ${this.did} => ${JSON.stringify(ceramicPassport)}`); - - // According to the logs, it does happen that passport is sometimes an empty object {} - // We treat this case as an non-existent passport - if (!ceramicPassport?.stamps) status = "DoesNotExist"; - else { - const { successfulStamps, cacaoErrorStampIds } = await this.loadStamps(ceramicPassport); - - if (cacaoErrorStampIds.length) { - errorDetails = { stampStreamIds: cacaoErrorStampIds }; - status = "StampCacaoError"; - } - - passport = { - issuanceDate: new Date(ceramicPassport.issuanceDate), - expiryDate: new Date(ceramicPassport.expiryDate), - stamps: successfulStamps, - }; - - await this.pinCurrentPassport(); - } - } catch (e) { - status = "ExceptionRaised"; - this.logger.error(`[Ceramic] Error when loading passport for did ${this.did}:` + e.toString(), { error: e }); - } finally { - const possiblePassportCacaoErrorStatuses: PassportLoadStatus[] = ["DoesNotExist", "ExceptionRaised"]; - if (possiblePassportCacaoErrorStatuses.includes(status) && (await this.checkPassportCACAOError())) - status = "PassportCacaoError"; - - return { - passport, - status, - errorDetails, - }; - } - } - - async pinCurrentPassport(): Promise { - try { - const passportDoc = await this.store.getRecordDocument(this.model.getDefinitionID("Passport")); - await this.ceramicClient.pin.add(passportDoc.id); - } catch (e) { - this.logger.error(`Error when pinning passport for did ${this.did}:` + e.toString(), { error: e }); - } - } - - async loadStamps(passport: CeramicPassport): Promise { - const cacaoErrorStampIds = []; - - // `stamps` is stored as ceramic URLs - must load actual VC data from URL - const stampsToLoad = passport.stamps.map(async (stamp) => { - const streamId = stamp.credential; - const streamUrl = `${this.apiHost}/api/v0/streams/${streamId.substring(10)}`; - this.logger.log(`get stamp from streamUrl: ${streamUrl}`); - try { - const { provider } = stamp; - const loadedCred = (await axios.get(streamUrl)) as { data: { state: { content: VerifiableCredential } } }; - return { - provider, - credential: loadedCred.data.state.content, - streamId, - } as Stamp; - } catch (e) { - if (e?.response?.data?.error?.includes("CACAO has expired")) { - cacaoErrorStampIds.push(streamId); - } - this.logger.error(`Error when loading stamp with streamId ${streamId} for did ${this.did}:` + e.toString(), { - error: e, - }); - throw e; - } - }); - - const successfulStamps = await getFulfilledPromises(stampsToLoad); - - return { - successfulStamps, - cacaoErrorStampIds, - }; - } - - async addStamp(stamp: Stamp): Promise { - this.logger.info(`adding stamp to did ${this.did}`); - // get passport document from user did data store in ceramic - const passport = await this.store.get("Passport"); - - // ensure the users did matches the credentials subject id otherwise skip the save - if (passport && this.did === stamp.credential.credentialSubject.id.toLowerCase()) { - // create a tile for verifiable credential issued from iam server - const newStampTile = await this.model.createTile("VerifiableCredential", stamp.credential); - - // add stamp provider and streamId to passport stamps array - const newStamps = passport?.stamps.concat({ provider: stamp.provider, credential: newStampTile.id.toUrl() }); - - // merge new stamps array to update stamps on the passport - const streamId = await this.store.merge("Passport", { stamps: newStamps }); - - // try pinning passport - try { - await this.ceramicClient.pin.add(streamId); - } catch (e) { - this.logger.error(`Error when pinning passport for did ${this.did}:` + e.toString()); - } - } - } - - async addStamps(stamps: Stamp[]): Promise { - this.logger.info(`adding stamps to did ${this.did}`); - // get passport document from user did data store in ceramic - const passport = await this.store.get("Passport"); - - // add stamp provider and streamId to passport stamps array - const newStamps = passport?.stamps.concat( - // write all stamps to ceramic as tiles and collate CeramicStamp definitions - ( - await Promise.all( - stamps.map(async (stamp): Promise => { - // ensure the users did matches the credentials subject id otherwise skip the save - if (passport && this.did === stamp.credential.credentialSubject.id.toLowerCase()) { - // create a tile for verifiable credential issued from iam server - const newStampTile = await this.model.createTile("VerifiableCredential", stamp.credential); - - return { provider: stamp.provider, credential: newStampTile.id.toUrl() }; - } - }) - ) - ).filter((v: CeramicStamp | undefined) => v) - ); - - // merge new stamps array to update stamps on the passport - const streamId = await this.store.merge("Passport", { stamps: newStamps }); - - // try pinning passport - try { - await this.ceramicClient.pin.add(streamId); - } catch (e) { - this.logger.error(`Error when pinning passport for did ${this.did}:` + e.toString()); - } - } - - // Owerride the current stamps array in the Passport document, and set only the stamps - // from the stamps parameter - async setStamps(stamps: Stamp[]): Promise { - this.logger.info(`setting stamps for did ${this.did}`); - // get passport document from user did data store in ceramic - const passport = await this.store.get("Passport"); - - const { successfulStamps } = await this.loadStamps(passport); - - const stampsToWrite = getTilesToCreate(stamps, this.did, successfulStamps); - - // If there are no stamps to write, exit - if (stampsToWrite.length === 0) { - this.logger.info(`No stamps were written to ceramic because they already exist ${this.did}:`); - return; - } - - // add stamp provider and streamId to passport stamps array - const newStamps = // write all stamps to ceramic as tiles and collate CeramicStamp definitions - ( - await Promise.all( - stampsToWrite.map(async (stamp): Promise => { - // create a tile for verifiable credential issued from iam server - const newStampTile = await this.model.createTile("VerifiableCredential", stamp.credential); - - return { provider: stamp.provider, credential: newStampTile.id.toUrl() }; - }) - ) - ).filter((v: CeramicStamp | undefined) => v); - - // merge new stamps array to update stamps on the passport - const streamId = await this.store.merge("Passport", { stamps: newStamps }); - - // try pinning passport - try { - await this.ceramicClient.pin.add(streamId); - } catch (e) { - this.logger.error(`Error when pinning passport for did ${this.did}:` + e.toString()); - } - } - - // Update stamps by providerIds - async deleteStamps(providerIds: PROVIDER_ID[]): Promise { - this.logger.info(`updating stamp(s) on ${this.did}`); - - const passport = await this.store.get("Passport"); - - // filter Passport stamp list by the platform's providerIds - if (passport && passport.stamps) { - await Promise.all( - passport.stamps.map(async (stamp) => { - const regex = /ceramic:\/*/i; - const cred = stamp.credential.replace(regex, ""); - - if (providerIds.includes(stamp.provider as PROVIDER_ID)) { - await this.deleteStamp(cred); - } - }) - ); - - const updatedStamps = passport.stamps.filter((stamp) => !providerIds.includes(stamp.provider as PROVIDER_ID)); - - // overwrite stamps array with updated stamps on the passport - const streamId = await this.store.set("Passport", { stamps: updatedStamps }); - - // try pinning passport - try { - await this.ceramicClient.pin.add(streamId); - } catch (e) { - this.logger.error(`Error when pinning passport for did ${this.did}:` + e.toString()); - } - } - } - - async deleteStamp(streamId: string): Promise { - return this.deleteStampIDs([streamId]); - } - - async deleteStampIDs(streamIds: string[]): Promise { - this.logger.info(`deleting stamp(s) ${streamIds.join(", ")} from did ${this.did}`); - // get passport document from user did data store in ceramic - const passport = await this.store.get("Passport"); - - if (passport && passport.stamps) { - const [stampsToDelete, stampsToKeep] = partition(passport.stamps, (stamp) => - streamIds.includes(stamp.credential) - ); - - // merge new stamps array to update stamps on the passport - const passportStreamId = await this.store.merge("Passport", { stamps: stampsToKeep }); - - await Promise.all( - stampsToDelete.map(async (stamp) => { - // try to unpin the stamp - const stampStreamId: StreamID = StreamID.fromString(stamp.credential); - try { - return await this.ceramicClient.pin.rm(stampStreamId); - } catch (e) { - this.logger.error( - `Error when unpinning stamp with id ${stampStreamId.toString()} for did ${this.did}:` + e.toString() - ); - } - }) - ); - - try { - await this.ceramicClient.pin.add(passportStreamId); - } catch (e) { - this.logger.error(`Error when pinning passport for did ${this.did}:` + e.toString()); - } - - const missingStamps = streamIds.filter( - (streamId) => !stampsToDelete.find((stamp) => stamp.credential === streamId) - ); - if (missingStamps.length) - this.logger.info(`unable to find stamp with stream id(s) ${missingStamps.join(", ")} in passport`); - } - } - - async deletePassport(): Promise { - this.logger.info(`deleting passport for did ${this.did}`); - // Created for development purposes - await this.store.remove("Passport"); - } -} - -async function getFulfilledPromises(promises: Promise[]): Promise { - const promiseStatuses = await Promise.allSettled(promises); - - // Filter out only the successful promises - const isFulfilled = (input: PromiseSettledResult): input is PromiseFulfilledResult => - input.status === "fulfilled"; - - const fulfilledPromises = promiseStatuses.filter(isFulfilled); - - return fulfilledPromises.map((fulfilledPromise) => fulfilledPromise.value); -} - -function partition(arr: T[], test: (elem: T) => boolean): [T[], T[]] { - const pass: T[] = []; - const fail: T[] = []; - - arr.map((elem) => (test(elem) ? pass.push(elem) : fail.push(elem))); - - return [pass, fail]; -} diff --git a/database-client/src/composeDatabase.ts b/database-client/src/composeDatabase.ts new file mode 100644 index 0000000000..8f1e223f19 --- /dev/null +++ b/database-client/src/composeDatabase.ts @@ -0,0 +1,446 @@ +import { ComposeClient } from "@composedb/client"; +// import type { RuntimeCompositeDefinition } from "@composedb/types"; +import { DID } from "dids"; + +import { + PassportLoadResponse, + PROVIDER_ID, + Stamp, + StampPatch, + VerifiableCredential, + VerifiableEip712CredentialComposeEncoded, +} from "@gitcoin/passport-types"; + +import { CeramicStorage } from "./types"; +import { definition as GitcoinPassportStampDefinition } from "@gitcoin/passport-schemas"; +import { GraphQLError } from "graphql"; +import { Logger } from "./logger"; +import { RuntimeCompositeDefinition } from "@composedb/types"; + +// const LOCAL_CERAMIC_CLIENT_URL = "http://localhost:7007"; +const COMMUNITY_TESTNET_CERAMIC_CLIENT_URL = "https://ceramic-clay.3boxlabs.com"; + +// Instead of implementing the CeramicStorage interface, we could +// implement the DataStorageBase interface and this would be more flexible, +// but it's not necessary now +type PassportWrapperLoadResponse = { + id: string; + vcID: string; + isDeleted: boolean; + isRevoked: boolean; + vc: VerifiableEip712CredentialComposeEncoded; +}; + +export type GraphqlResponse = { + data: T; + errors?: GraphQLError[]; +}; + +export type AddVCResponse = { createGitcoinPassportStamp: { document: { id: string } } }; +export type AddVCWrapperResponse = { + createGitcoinPassportStampWrapper: { document: { id: string; isDeleted: boolean; isRevoked: boolean } }; +}; +export type DeleteStampResponse = { + createGitcoinPassportStampWrapper: { document: { id: string; isDeleted: boolean; isRevoked: boolean } }; +}; +export type GetVCResponse = { + viewer: { gitcoinPassportStampWrapperList: { edges: { node: PassportWrapperLoadResponse }[] } }; +}; + +const formatCredentialFromCeramic = ( + encodedCredential: VerifiableEip712CredentialComposeEncoded +): VerifiableCredential => { + const credential: VerifiableCredential = { + "@context": encodedCredential._context, + type: encodedCredential.type, + credentialSubject: { + "@context": encodedCredential.credentialSubject._context, + id: encodedCredential.credentialSubject.id, + hash: encodedCredential.credentialSubject.hash, + provider: encodedCredential.credentialSubject.provider, + // address: encodedCredential.credentialSubject.address, + // challenge: encodedCredential.credentialSubject.challenge, + }, + issuer: encodedCredential.issuer, + issuanceDate: encodedCredential.issuanceDate, + expirationDate: encodedCredential.expirationDate, + proof: { + "@context": encodedCredential.proof._context, + type: encodedCredential.proof.type, + proofPurpose: encodedCredential.proof.proofPurpose, + proofValue: encodedCredential.proof.proofValue, + verificationMethod: encodedCredential.proof.verificationMethod, + created: encodedCredential.proof.created, + eip712Domain: { + domain: encodedCredential.proof.eip712Domain.domain, + primaryType: encodedCredential.proof.eip712Domain.primaryType, + types: { + "@context": encodedCredential.proof.eip712Domain.types._context, + // CredentialStatus: encodedCredential.proof.eip712Domain.types.CredentialStatus, + CredentialSubject: encodedCredential.proof.eip712Domain.types.CredentialSubject, + Document: encodedCredential.proof.eip712Domain.types.Document, + EIP712Domain: encodedCredential.proof.eip712Domain.types.EIP712Domain, + Proof: encodedCredential.proof.eip712Domain.types.Proof, + }, + }, + }, + }; + return credential; +}; + +export class ComposeDatabase implements CeramicStorage { + did: string; + compose: ComposeClient; + // logger should indicate with tag where error is coming from similar to: [Scorer] + logger: Logger; + + constructor(did: DID, ceramicUrl: string = COMMUNITY_TESTNET_CERAMIC_CLIENT_URL, logger?: Logger) { + if (logger) { + this.logger = logger; + } else { + this.logger = console; + } + this.compose = new ComposeClient({ + ceramic: ceramicUrl, + definition: GitcoinPassportStampDefinition as RuntimeCompositeDefinition, + }); + this.compose.setDID(did); + this.did = (did.hasParent ? did.parent : did.id).toLowerCase(); + } + setStamps: (stamps: Stamp[]) => Promise; + deleteStampIDs: (streamIds: string[]) => Promise; + + replaceKey(obj, oldKey, newKey) { + const { [oldKey]: old, ...others } = obj; + return { ...others, [newKey]: old }; + } + + formatCredentialInput = (stamp: Stamp) => { + const { type, proof, credentialSubject, issuanceDate, expirationDate, issuer } = stamp.credential; + if (!proof?.eip712Domain) { + throw new Error("Invalid stamp"); + } + const { eip712Domain } = proof; + const { types } = eip712Domain; + + const input = { + content: { + _context: stamp.credential["@context"], + issuer, + issuanceDate, + expirationDate, + type, + credentialSubject: { + ...credentialSubject, + _context: credentialSubject["@context"], + }, + proof: { + ...proof, + _context: proof["@context"], + eip712Domain: { + ...eip712Domain, + types: { + ...types, + _context: types["@context"], + }, + }, + }, + }, + }; + + delete input.content.credentialSubject["@context"]; + delete input.content.proof["@context"]; + delete input.content.proof.eip712Domain.types["@context"]; + + return input; + }; + + findStreamId = (provider: PROVIDER_ID, wrappers: PassportWrapperLoadResponse[]): string => { + const wrapper = wrappers.find((wrapper) => wrapper.vc.credentialSubject.provider === provider); + return wrapper?.id; + }; + + checkSettledResponse = (settledPromises: PromiseSettledResult[]): PassportLoadResponse => { + const errorDetails = settledPromises + .filter((response): response is PromiseRejectedResult => response.status === "rejected") + .map((response) => response.reason) + .flat(); + + if (errorDetails.length > 0) { + return { + status: "ExceptionRaised", + errorDetails: { + messages: errorDetails, + }, + }; + } + + return { + status: "Success", + }; + }; + + addStamp = async (stamp: Stamp): Promise => { + let vcID; + const input = this.formatCredentialInput(stamp); + const result = (await this.compose.executeQuery( + ` + mutation CreateGitcoinPassportVc($input: CreateGitcoinPassportStampInput!) { + createGitcoinPassportStamp(input: $input) { + document { + id + } + } + } + `, + { input } + )) as GraphqlResponse<{ createGitcoinPassportStamp: { document: { id: string } } }>; + + if (result.errors) { + throw Error( + `[ComposeDB] error thrown from mutation CreateGitcoinPassportVc, error: ${JSON.stringify(result.errors)}` + ); + } + + vcID = result?.data?.createGitcoinPassportStamp?.document?.id; + const wrapperRequest = (await this.compose.executeQuery( + ` + mutation CreateGitcoinStampWrapper($wrapperInput: CreateGitcoinPassportStampWrapperInput!) { + createGitcoinPassportStampWrapper(input: $wrapperInput) { + document { + id + isDeleted + isRevoked + } + } + } + `, + { + wrapperInput: { + content: { + vcID, + isDeleted: false, + isRevoked: false, + }, + }, + } + )) as GraphqlResponse<{ + createGitcoinPassportStampWrapper: { document: { id: string; isDeleted: boolean; isRevoked: boolean } }; + }>; + if (wrapperRequest.errors) { + throw Error( + `[ComposeDB] error thrown from mutation CreateGitcoinStampWrapper, vcID: ${vcID} error: ${JSON.stringify( + wrapperRequest.errors + )}` + ); + } + + return { + status: "Success", + }; + }; + + addStamps = async (stamps: Stamp[]): Promise => { + const vcPromises = stamps.map(async (stamp) => await this.addStamp(stamp)); + + const addRequests = await Promise.allSettled(vcPromises); + + return this.checkSettledResponse(addRequests); + }; + + deleteStamp = async (streamId: string): Promise => { + const deleteRequest = (await this.compose.executeQuery( + ` + mutation SoftDeleteGitcoinStampWrapper($updateInput: UpdateGitcoinPassportStampWrapperInput!) { + updateGitcoinPassportStampWrapper(input: $updateInput) { + document { + id + isDeleted + isRevoked + } + } + } + `, + { + updateInput: { + id: streamId, + content: { + isDeleted: true, + }, + }, + } + )) as GraphqlResponse<{ + createGitcoinPassportStampWrapper: { document: { id: string; isDeleted: boolean; isRevoked: boolean } }; + }>; + + if (deleteRequest.errors) { + throw Error(`[ComposeDB] ${JSON.stringify(deleteRequest.errors)} for vcID: ${streamId}`); + } + + return { + status: "Success", + }; + }; + + deleteStamps = async (providers: PROVIDER_ID[]): Promise => { + const existingPassport = await this.getPassportWithWrapper(); + + const stampsToDelete = existingPassport.filter((stamp) => + providers.includes(stamp.vc.credentialSubject.provider as PROVIDER_ID) + ); + + const deleteRequests = await Promise.allSettled( + stampsToDelete.map(async (stamp) => await this.deleteStamp(stamp.id)) + ); + + return this.checkSettledResponse(deleteRequests); + }; + + patchStamps = async (stampPatches: StampPatch[]): Promise => { + const deleteRequests = await this.deleteStamps(stampPatches.map((patch) => patch.provider)); + + const stampsToCreate = stampPatches + .filter((stampPatch) => stampPatch.credential) + .map((stampPatch) => ({ + provider: stampPatch.provider, + credential: stampPatch.credential, + })); + + const createRequest = await this.addStamps(stampsToCreate); + + const errorDetails = [ + ...(deleteRequests?.errorDetails?.messages || []), + ...(createRequest?.errorDetails?.messages || []), + ]; + + return { + status: errorDetails.length > 0 ? "ExceptionRaised" : "Success", + errorDetails: { + messages: errorDetails, + }, + }; + }; + + async getPassportWithWrapper(): Promise { + const result = (await this.compose.executeQuery( + ` + query passport($amount: Int, $wrapperFilter: GitcoinPassportStampWrapperObjectFilterInput) { + viewer { + gitcoinPassportStampWrapperList( + first: $amount + filters: {where: $wrapperFilter} + ) { + edges { + node { + id + isDeleted + isRevoked + vcID + vc { + ... on GitcoinPassportStamp { + id + type + _context + expirationDate + issuanceDate + issuer + proof { + _context + created + eip712Domain { + domain { + name + } + primaryType + types { + _context { + name + type + } + CredentialSubject { + name + type + } + Document { + type + name + } + Proof { + name + type + } + EIP712Domain { + name + type + } + } + } + proofPurpose + proofValue + type + verificationMethod + } + credentialSubject { + _context { + hash + provider + } + hash + id + provider + } + } + } + } + } + } + } + } + `, + { + amount: 1000, + wrapperFilter: { + isDeleted: { + equalTo: false, + }, + isRevoked: { + equalTo: false, + }, + }, + } + )) as GraphqlResponse<{ + viewer: { gitcoinPassportStampWrapperList: { edges: { node: PassportWrapperLoadResponse }[] } }; + }>; + + if (result.errors) { + throw Error(String(result.errors)); + } + + const wrappers = (result?.data?.viewer?.gitcoinPassportStampWrapperList?.edges || []).map((edge) => edge.node); + return wrappers; + } + + async getPassport(): Promise { + try { + const passportWithWrapper = await this.getPassportWithWrapper(); + const stamps = passportWithWrapper.map((wrapper) => ({ + provider: wrapper.vc.credentialSubject.provider as PROVIDER_ID, + credential: formatCredentialFromCeramic(wrapper.vc), + })); + + return { + status: "Success", + passport: { + stamps, + }, + }; + } catch (error) { + return { + status: "ExceptionRaised", + errorDetails: { + messages: [error.message], + }, + }; + } + } +} diff --git a/database-client/src/index.ts b/database-client/src/index.ts index 1597e68a76..0782f7f979 100644 --- a/database-client/src/index.ts +++ b/database-client/src/index.ts @@ -1,2 +1,4 @@ -export * from "./ceramicClient"; +export * from "./logger"; export * from "./passportScorerClient"; +export * from "./composeDatabase"; +export * from "./types"; diff --git a/database-client/src/logger.ts b/database-client/src/logger.ts new file mode 100644 index 0000000000..257421a792 --- /dev/null +++ b/database-client/src/logger.ts @@ -0,0 +1,9 @@ +export type Logger = { + error: (msg: string, context?: object) => void; + log: (msg: string, context?: object) => void; + warn: (msg: string, context?: object) => void; + debug: (msg: string, context?: object) => void; + info: (msg: string, context?: object) => void; + }; + + \ No newline at end of file diff --git a/database-client/src/passportScorerClient.ts b/database-client/src/passportScorerClient.ts index 37719afbb6..2fd8d4bafa 100644 --- a/database-client/src/passportScorerClient.ts +++ b/database-client/src/passportScorerClient.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import { Logger } from "./ceramicClient"; +import { Logger } from "./logger"; import { DataStorageBase } from "./types"; import type { DID as CeramicDID } from "dids"; import { @@ -29,14 +29,16 @@ export class PassportDatabase implements DataStorageBase { this.token = token; } - async createPassport(initialStamps?: Stamp[]): Promise { + async createPassport(initialStamps?: Stamp[]): Promise { if (initialStamps?.length) { await this.addStamps(initialStamps); } else { this.allowEmpty = true; } - return "created"; + return { + status: "Success", + }; } processPassportResponse = async ( @@ -102,10 +104,6 @@ export class PassportDatabase implements DataStorageBase { ); }; - addStamp = async (stamp: Stamp): Promise => { - console.log("Not implemented"); - }; - deleteStamps = async (providers: PROVIDER_ID[]): Promise => { this.logger.info(`deleting stamp from passportScorer for ${providers.join(", ")} on ${this.address}`); return await this.processPassportResponse( diff --git a/database-client/src/types.ts b/database-client/src/types.ts index 3aa09f4350..3b7ffce7ed 100644 --- a/database-client/src/types.ts +++ b/database-client/src/types.ts @@ -1,11 +1,28 @@ -import { Stamp, DID, PassportLoadResponse } from "@gitcoin/passport-types"; +import { + PROVIDER_ID, + Stamp, + PassportLoadStatus, + PassportLoadResponse, + PassportLoadErrorDetails, + Passport, + StampPatch, +} from "@gitcoin/passport-types"; // Class used as a base for each DataStorage Type // Implementations should enforce 1 Passport <-> 1 user // and it is assumed which Passport/user to act on when // calling createPassport, getPassport, addStamp -export abstract class DataStorageBase { - abstract createPassport(): Promise; - abstract getPassport(): Promise; - abstract addStamp(stamp: Stamp): Promise; +export interface DataStorageBase { + did: string; + createPassport: () => Promise; + getPassport: () => Promise; + addStamps: (stamps: Stamp[]) => Promise; + patchStamps: (stampPatches: StampPatch[]) => Promise; + deleteStamps: (providers: PROVIDER_ID[]) => Promise; +} + +export interface CeramicStorage { + did: string; + setStamps: (stamps: Stamp[]) => Promise; + deleteStampIDs: (streamIds: string[]) => Promise; } diff --git a/iam/.eslintrc.cjs b/iam/.eslintrc.cjs index e57a23082d..41a974e9c4 100644 --- a/iam/.eslintrc.cjs +++ b/iam/.eslintrc.cjs @@ -29,7 +29,10 @@ module.exports = { quotes: ["error", "double"], "no-console": "warn", "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": ["warn", { vars: "all", args: "after-used", ignoreRestSiblings: false }], + "@typescript-eslint/no-unused-vars": [ + "warn", + { vars: "all", args: "after-used", ignoreRestSiblings: false }, + ], "@typescript-eslint/explicit-function-return-type": "warn", // Consider using explicit annotations for object literals and function return types even when they can be inferred. "no-empty": "warn", "@typescript-eslint/no-misused-promises": 1, diff --git a/iam/package.json b/iam/package.json index 9e8701d61f..c818512d31 100644 --- a/iam/package.json +++ b/iam/package.json @@ -37,7 +37,6 @@ "moralis": "^2.22.5", "tslint": "^6.1.3", "twitter-api-v2": "^1.15.1", - "typescript": "~4.6.3", "uuid": "^8.3.2" }, "devDependencies": { @@ -56,11 +55,13 @@ "babel-jest": "^29.7.0", "babel-plugin-replace-import-extension": "^1.1.3", "babel-plugin-transform-import-meta": "^2.2.1", + "eslint-plugin-prettier": "^5.1.3", "jest": "^29.6.4", "supertest": "^6.2.2", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "tsx": "^4.7.0" + "tsx": "^4.7.0", + "typescript": "^5.3.3" }, "resolutions": { "leveldown": "6.1.1" diff --git a/iam/src/index.ts b/iam/src/index.ts index a65f08d1fc..64f6117525 100644 --- a/iam/src/index.ts +++ b/iam/src/index.ts @@ -157,23 +157,29 @@ const ATTESTER_TYPES = { ], }; -const providerTypePlatformMap = Object.entries(platforms).reduce((acc, [platformName, { providers }]) => { - providers.forEach(({ type }) => { - acc[type] = platformName; - }); - return acc; -}, {} as { [k: string]: string }); +const providerTypePlatformMap = Object.entries(platforms).reduce( + (acc, [platformName, { providers }]) => { + providers.forEach(({ type }) => { + acc[type] = platformName; + }); + return acc; + }, + {} as { [k: string]: string } +); function groupProviderTypesByPlatform(types: string[]): string[][] { return Object.values( - types.reduce((groupedProviders, type) => { - const platform = providerTypePlatformMap[type] || "generic"; + types.reduce( + (groupedProviders, type) => { + const platform = providerTypePlatformMap[type] || "generic"; - if (!groupedProviders[platform]) groupedProviders[platform] = []; - groupedProviders[platform].push(type); + if (!groupedProviders[platform]) groupedProviders[platform] = []; + groupedProviders[platform].push(type); - return groupedProviders; - }, {} as { [k: keyof typeof platforms]: string[] }) + return groupedProviders; + }, + {} as { [k: keyof typeof platforms]: string[] } + ) ); } @@ -232,8 +238,6 @@ const issueCredentials = async ( ...(verifyResult?.record || {}), }; - const metaPointer = platforms[type]?.PlatformDetails?.metaPointer; - const currentKey = payload.signatureType === "EIP712" ? eip712Key : key; // generate a VC for the given payload ({ credential } = await issueHashedCredential( @@ -242,8 +246,7 @@ const issueCredentials = async ( address, record, verifyResult.expiresInSeconds, - payload.signatureType, - metaPointer + payload.signatureType )); } } catch { @@ -495,13 +498,11 @@ app.post("/api/v0.0.0/convert", (req: Request, res: Response): void => { credentialSubject: { "@context": { hash: "https://schema.org/Text", - metaPointer: "https://schema.org/URL", provider: "https://schema.org/Text", }, id, hash, provider, - metaPointer: "https://passport.gitcoin.co", }, }, stampCredentialDocument(verificationMethod), diff --git a/iam/src/static/providerBitMapInfo.json b/iam/src/static/providerBitMapInfo.json index 0a11f6bd36..1e1a2593c8 100644 --- a/iam/src/static/providerBitMapInfo.json +++ b/iam/src/static/providerBitMapInfo.json @@ -1 +1,116 @@ -[{"bit":0,"index":0,"name":"SelfStakingBronze"},{"bit":1,"index":0,"name":"SelfStakingSilver"},{"bit":2,"index":0,"name":"SelfStakingGold"},{"bit":3,"index":0,"name":"CommunityStakingBronze"},{"bit":4,"index":0,"name":"CommunityStakingSilver"},{"bit":5,"index":0,"name":"CommunityStakingGold"},{"bit":6,"index":0,"name":"GitcoinContributorStatistics#numGrantsContributeToGte#1"},{"bit":7,"index":0,"name":"GitcoinContributorStatistics#numGrantsContributeToGte#10"},{"bit":8,"index":0,"name":"GitcoinContributorStatistics#numGrantsContributeToGte#25"},{"bit":9,"index":0,"name":"GitcoinContributorStatistics#numGrantsContributeToGte#100"},{"bit":10,"index":0,"name":"GitcoinContributorStatistics#totalContributionAmountGte#10"},{"bit":11,"index":0,"name":"GitcoinContributorStatistics#totalContributionAmountGte#100"},{"bit":12,"index":0,"name":"GitcoinContributorStatistics#totalContributionAmountGte#1000"},{"bit":13,"index":0,"name":"GitcoinContributorStatistics#numGr14ContributionsGte#1"},{"bit":14,"index":0,"name":"GitcoinContributorStatistics#numRoundsContributedToGte#1"},{"bit":15,"index":0,"name":"twitterAccountAgeGte#180"},{"bit":16,"index":0,"name":"twitterAccountAgeGte#365"},{"bit":17,"index":0,"name":"twitterAccountAgeGte#730"},{"bit":18,"index":0,"name":"Discord"},{"bit":19,"index":0,"name":"Google"},{"bit":20,"index":0,"name":"githubAccountCreationGte#90"},{"bit":21,"index":0,"name":"githubAccountCreationGte#180"},{"bit":22,"index":0,"name":"githubAccountCreationGte#365"},{"bit":23,"index":0,"name":"githubContributionActivityGte#30"},{"bit":24,"index":0,"name":"githubContributionActivityGte#60"},{"bit":25,"index":0,"name":"githubContributionActivityGte#120"},{"bit":26,"index":0,"name":"Facebook"},{"bit":27,"index":0,"name":"FacebookProfilePicture"},{"bit":28,"index":0,"name":"Linkedin"},{"bit":29,"index":0,"name":"Ens"},{"bit":30,"index":0,"name":"Brightid"},{"bit":31,"index":0,"name":"Poh"},{"bit":32,"index":0,"name":"ethPossessionsGte#1"},{"bit":33,"index":0,"name":"ethPossessionsGte#10"},{"bit":34,"index":0,"name":"ethPossessionsGte#32"},{"bit":35,"index":0,"name":"FirstEthTxnProvider"},{"bit":36,"index":0,"name":"EthGTEOneTxnProvider"},{"bit":37,"index":0,"name":"EthGasProvider"},{"bit":38,"index":0,"name":"SnapshotVotesProvider"},{"bit":39,"index":0,"name":"SnapshotProposalsProvider"},{"bit":40,"index":0,"name":"NFT"},{"bit":41,"index":0,"name":"ZkSync"},{"bit":42,"index":0,"name":"ZkSyncEra"},{"bit":43,"index":0,"name":"Lens"},{"bit":44,"index":0,"name":"GnosisSafe"},{"bit":45,"index":0,"name":"Coinbase"},{"bit":46,"index":0,"name":"GuildMember"},{"bit":47,"index":0,"name":"GuildAdmin"},{"bit":48,"index":0,"name":"GuildPassportMember"},{"bit":49,"index":0,"name":"Hypercerts"},{"bit":50,"index":0,"name":"PHIActivitySilver"},{"bit":51,"index":0,"name":"PHIActivityGold"},{"bit":52,"index":0,"name":"HolonymGovIdProvider"},{"bit":53,"index":0,"name":"IdenaState#Newbie"},{"bit":54,"index":0,"name":"IdenaState#Verified"},{"bit":55,"index":0,"name":"IdenaState#Human"},{"bit":56,"index":0,"name":"IdenaStake#1k"},{"bit":57,"index":0,"name":"IdenaStake#10k"},{"bit":58,"index":0,"name":"IdenaStake#100k"},{"bit":59,"index":0,"name":"IdenaAge#5"},{"bit":60,"index":0,"name":"IdenaAge#10"},{"bit":61,"index":0,"name":"CivicCaptchaPass"},{"bit":62,"index":0,"name":"CivicUniquenessPass"},{"bit":63,"index":0,"name":"CivicLivenessPass"},{"bit":64,"index":0,"name":"CyberProfilePremium"},{"bit":65,"index":0,"name":"CyberProfilePaid"},{"bit":66,"index":0,"name":"CyberProfileOrgMember"},{"bit":67,"index":0,"name":"GrantsStack3Projects"},{"bit":68,"index":0,"name":"GrantsStack5Projects"},{"bit":69,"index":0,"name":"GrantsStack7Projects"},{"bit":70,"index":0,"name":"GrantsStack2Programs"},{"bit":71,"index":0,"name":"GrantsStack4Programs"},{"bit":72,"index":0,"name":"GrantsStack6Programs"},{"bit":73,"index":0,"name":"TrustaLabs"},{"bit":74,"index":0,"name":"BeginnerCommunityStaker"},{"bit":75,"index":0,"name":"ExperiencedCommunityStaker"},{"bit":76,"index":0,"name":"TrustedCitizen"},{"bit":77,"index":0,"name":"CoinbaseDualVerification"}] \ No newline at end of file +[ + { "bit": 0, "index": 0, "name": "SelfStakingBronze" }, + { "bit": 1, "index": 0, "name": "SelfStakingSilver" }, + { "bit": 2, "index": 0, "name": "SelfStakingGold" }, + { "bit": 3, "index": 0, "name": "CommunityStakingBronze" }, + { "bit": 4, "index": 0, "name": "CommunityStakingSilver" }, + { "bit": 5, "index": 0, "name": "CommunityStakingGold" }, + { + "bit": 6, + "index": 0, + "name": "GitcoinContributorStatistics#numGrantsContributeToGte#1" + }, + { + "bit": 7, + "index": 0, + "name": "GitcoinContributorStatistics#numGrantsContributeToGte#10" + }, + { + "bit": 8, + "index": 0, + "name": "GitcoinContributorStatistics#numGrantsContributeToGte#25" + }, + { + "bit": 9, + "index": 0, + "name": "GitcoinContributorStatistics#numGrantsContributeToGte#100" + }, + { + "bit": 10, + "index": 0, + "name": "GitcoinContributorStatistics#totalContributionAmountGte#10" + }, + { + "bit": 11, + "index": 0, + "name": "GitcoinContributorStatistics#totalContributionAmountGte#100" + }, + { + "bit": 12, + "index": 0, + "name": "GitcoinContributorStatistics#totalContributionAmountGte#1000" + }, + { + "bit": 13, + "index": 0, + "name": "GitcoinContributorStatistics#numGr14ContributionsGte#1" + }, + { + "bit": 14, + "index": 0, + "name": "GitcoinContributorStatistics#numRoundsContributedToGte#1" + }, + { "bit": 15, "index": 0, "name": "twitterAccountAgeGte#180" }, + { "bit": 16, "index": 0, "name": "twitterAccountAgeGte#365" }, + { "bit": 17, "index": 0, "name": "twitterAccountAgeGte#730" }, + { "bit": 18, "index": 0, "name": "Discord" }, + { "bit": 19, "index": 0, "name": "Google" }, + { "bit": 20, "index": 0, "name": "githubAccountCreationGte#90" }, + { "bit": 21, "index": 0, "name": "githubAccountCreationGte#180" }, + { "bit": 22, "index": 0, "name": "githubAccountCreationGte#365" }, + { "bit": 23, "index": 0, "name": "githubContributionActivityGte#30" }, + { "bit": 24, "index": 0, "name": "githubContributionActivityGte#60" }, + { "bit": 25, "index": 0, "name": "githubContributionActivityGte#120" }, + { "bit": 26, "index": 0, "name": "Facebook" }, + { "bit": 27, "index": 0, "name": "FacebookProfilePicture" }, + { "bit": 28, "index": 0, "name": "Linkedin" }, + { "bit": 29, "index": 0, "name": "Ens" }, + { "bit": 30, "index": 0, "name": "Brightid" }, + { "bit": 31, "index": 0, "name": "Poh" }, + { "bit": 32, "index": 0, "name": "ethPossessionsGte#1" }, + { "bit": 33, "index": 0, "name": "ethPossessionsGte#10" }, + { "bit": 34, "index": 0, "name": "ethPossessionsGte#32" }, + { "bit": 35, "index": 0, "name": "FirstEthTxnProvider" }, + { "bit": 36, "index": 0, "name": "EthGTEOneTxnProvider" }, + { "bit": 37, "index": 0, "name": "EthGasProvider" }, + { "bit": 38, "index": 0, "name": "SnapshotVotesProvider" }, + { "bit": 39, "index": 0, "name": "SnapshotProposalsProvider" }, + { "bit": 40, "index": 0, "name": "NFT" }, + { "bit": 41, "index": 0, "name": "ZkSync" }, + { "bit": 42, "index": 0, "name": "ZkSyncEra" }, + { "bit": 43, "index": 0, "name": "Lens" }, + { "bit": 44, "index": 0, "name": "GnosisSafe" }, + { "bit": 45, "index": 0, "name": "Coinbase" }, + { "bit": 46, "index": 0, "name": "GuildMember" }, + { "bit": 47, "index": 0, "name": "GuildAdmin" }, + { "bit": 48, "index": 0, "name": "GuildPassportMember" }, + { "bit": 49, "index": 0, "name": "Hypercerts" }, + { "bit": 50, "index": 0, "name": "PHIActivitySilver" }, + { "bit": 51, "index": 0, "name": "PHIActivityGold" }, + { "bit": 52, "index": 0, "name": "HolonymGovIdProvider" }, + { "bit": 53, "index": 0, "name": "IdenaState#Newbie" }, + { "bit": 54, "index": 0, "name": "IdenaState#Verified" }, + { "bit": 55, "index": 0, "name": "IdenaState#Human" }, + { "bit": 56, "index": 0, "name": "IdenaStake#1k" }, + { "bit": 57, "index": 0, "name": "IdenaStake#10k" }, + { "bit": 58, "index": 0, "name": "IdenaStake#100k" }, + { "bit": 59, "index": 0, "name": "IdenaAge#5" }, + { "bit": 60, "index": 0, "name": "IdenaAge#10" }, + { "bit": 61, "index": 0, "name": "CivicCaptchaPass" }, + { "bit": 62, "index": 0, "name": "CivicUniquenessPass" }, + { "bit": 63, "index": 0, "name": "CivicLivenessPass" }, + { "bit": 64, "index": 0, "name": "CyberProfilePremium" }, + { "bit": 65, "index": 0, "name": "CyberProfilePaid" }, + { "bit": 66, "index": 0, "name": "CyberProfileOrgMember" }, + { "bit": 67, "index": 0, "name": "GrantsStack3Projects" }, + { "bit": 68, "index": 0, "name": "GrantsStack5Projects" }, + { "bit": 69, "index": 0, "name": "GrantsStack7Projects" }, + { "bit": 70, "index": 0, "name": "GrantsStack2Programs" }, + { "bit": 71, "index": 0, "name": "GrantsStack4Programs" }, + { "bit": 72, "index": 0, "name": "GrantsStack6Programs" }, + { "bit": 73, "index": 0, "name": "TrustaLabs" }, + { "bit": 74, "index": 0, "name": "BeginnerCommunityStaker" }, + { "bit": 75, "index": 0, "name": "ExperiencedCommunityStaker" }, + { "bit": 76, "index": 0, "name": "TrustedCitizen" }, + { "bit": 77, "index": 0, "name": "CoinbaseDualVerification" } +] diff --git a/iam/tsconfig.json b/iam/tsconfig.json index cd1bb81718..75280c82bb 100644 --- a/iam/tsconfig.json +++ b/iam/tsconfig.json @@ -14,7 +14,8 @@ "resolveJsonModule": true, "paths": { "*": ["../node_modules/*", "node_modules/*"] - } + }, + "skipLibCheck": true }, "include": ["src/**/*", "__tests__/**/*"] } diff --git a/identity/.eslintrc.js b/identity/.eslintrc.js index e57a23082d..b367980299 100644 --- a/identity/.eslintrc.js +++ b/identity/.eslintrc.js @@ -35,6 +35,7 @@ module.exports = { "@typescript-eslint/no-misused-promises": 1, "@typescript-eslint/no-floating-promises": 1, "@typescript-eslint/no-unsafe-assignment": "warn", + "@typescript-eslint/no-explicit-any": "warn", }, settings: { "import/resolver": { diff --git a/identity/package.json b/identity/package.json index f590cc519c..10283f321f 100644 --- a/identity/package.json +++ b/identity/package.json @@ -18,12 +18,12 @@ "@ethersproject/base64": "^5.6.1", "@ethersproject/providers": "^5.6.2", "@gitcoin/passport-types": "^1.0.0", - "axios": "^0.26.1", - "typescript": "~4.6.3" + "axios": "^0.26.1" }, "devDependencies": { "jest": "^27.5.1", - "ts-jest": "^27.1.4" + "ts-jest": "^27.1.4", + "typescript": "^5.3.3" }, "scripts": { "clean": "rimraf dist node_modules", diff --git a/identity/src/credentials.ts b/identity/src/credentials.ts index 73bf202590..7cda0630bb 100644 --- a/identity/src/credentials.ts +++ b/identity/src/credentials.ts @@ -206,8 +206,7 @@ export const issueHashedCredential = async ( address: string, record: ProofRecord, expiresInSeconds: number = CREDENTIAL_EXPIRES_AFTER_SECONDS, - signatureType?: string, - metaPointer?: string + signatureType?: string ): Promise => { // Generate a hash like SHA256(IAM_PRIVATE_KEY+PII), where PII is the (deterministic) JSON representation // of the PII object after transforming it to an array of the form [[key:string, value:string], ...] @@ -231,14 +230,12 @@ export const issueHashedCredential = async ( credentialSubject: { "@context": { hash: "https://schema.org/Text", - metaPointer: "https://schema.org/URL", provider: "https://schema.org/Text", }, // construct a pkh DID on mainnet (:1) for the given wallet address id: `did:pkh:eip155:1:${address}`, provider: record.type, - metaPointer: metaPointer ? metaPointer : "https://passport.gitcoin.co", hash: `${VERSION}:${hash}`, }, // https://www.w3.org/TR/vc-status-list/#statuslist2021entry @@ -287,7 +284,7 @@ export const verifyCredential = async (DIDKit: DIDKitLib, credential: Verifiable try { // parse the result of attempting to verify const verify = JSON.parse( - await DIDKit.verifyCredential(JSON.stringify(credential), `{"proofPurpose":"${proof.proofPurpose}"}`) + await DIDKit.verifyCredential(JSON.stringify(credential), `{"proofPurpose":"${proof?.proofPurpose}"}`) ) as { checks: string[]; warnings: string[]; errors: string[] }; // did we get any errors when we attempted to verify? diff --git a/identity/src/signingDocuments.ts b/identity/src/signingDocuments.ts index 34c9c4a6ec..0a000d81cf 100644 --- a/identity/src/signingDocuments.ts +++ b/identity/src/signingDocuments.ts @@ -89,10 +89,6 @@ export const stampCredentialDocument = (verificationMethod: string): DocumentSig type: "string", name: "hash", }, - { - type: "string", - name: "metaPointer", - }, { type: "string", name: "provider", @@ -163,10 +159,6 @@ export const stampCredentialDocument = (verificationMethod: string): DocumentSig type: "string", name: "id", }, - { - type: "string", - name: "metaPointer", - }, { type: "string", name: "provider", diff --git a/identity/tsconfig.json b/identity/tsconfig.json index f51092bb12..0e2e90d71c 100644 --- a/identity/tsconfig.json +++ b/identity/tsconfig.json @@ -5,16 +5,14 @@ "esModuleInterop": true, "declaration": true, "allowSyntheticDefaultImports": true, - "target": "es6", + "target": "ES2022", "noImplicitAny": true, "moduleResolution": "node", "sourceMap": true, "outDir": "dist/commonjs", "allowJs": true, "baseUrl": "src", - "paths": { - "*": ["../node_modules/*", "node_modules/*"] - } + "skipLibCheck": true }, "include": ["src/**/*"] } diff --git a/package.json b/package.json index 16f53a2972..196bf7d69b 100644 --- a/package.json +++ b/package.json @@ -32,27 +32,29 @@ "test:app": "yarn workspace @gitcoin/passport-app test", "test:identity": "yarn workspace @gitcoin/passport-identity test", "prettier": "lerna run prettier", - "build": "yarn build:identity && yarn build:database-client && yarn build:platforms && yarn build:iam && yarn build:app", + "build": "yarn build:identity && yarn build:schemas && yarn build:database-client && yarn build:platforms && yarn build:iam && yarn build:app", "build:database-client": "yarn workspace @gitcoin/passport-database-client build", "build:identity": "yarn workspace @gitcoin/passport-identity build", "build:iam": "yarn workspace @gitcoin/passport-iam build", "build:app": "yarn workspace @gitcoin/passport-app build", "build:platforms": "yarn workspace @gitcoin/passport-platforms build", - "debug": "concurrently --kill-others \"yarn debug:iam\" \"yarn start:app\"", + "build:schemas": "yarn workspace @gitcoin/passport-schemas build", + "debug": "concurrently --kill-others \"yarn debug:iam\" \"yarn start:app\" \"yarn debug:db-client\"", "debug:iam": "yarn workspace @gitcoin/passport-iam debug", + "debug:db-client": "yarn workspace @gitcoin/passport-database-client debug", "start": "concurrently --kill-others \"yarn start:iam\" \"yarn start:app\"", "start:iam": "yarn workspace @gitcoin/passport-iam start", "start:app": "yarn workspace @gitcoin/passport-app start", - "start:ceramic": "yarn ceramic daemon", + "start:ceramic": "yarn workspace @gitcoin/passport-database-client ceramic", "prod:start:iam": "yarn workspace @gitcoin/passport-iam prod:start", "app": "yarn workspace @gitcoin/passport-app", "schemas": "yarn workspace @gitcoin/passport-schemas", "iam": "yarn workspace @gitcoin/passport-iam", "identity": "yarn workspace @gitcoin/passport-identity", "types": "yarn workspace @gitcoin/passport-types", - "prestart": "yarn build:identity && yarn build:database-client && yarn build:platforms && yarn build:iam", - "pretest": "yarn build:identity && yarn build:database-client", - "postinstall": "yarn build:identity && yarn build:database-client && yarn build:platforms && yarn build:iam", + "prestart": "yarn build:schemas && yarn build:identity && yarn build:database-client && yarn build:platforms && yarn build:iam", + "pretest": "yarn build:schemas && yarn build:identity && yarn build:database-client", + "postinstall": "yarn build:schemas && yarn build:identity && yarn build:database-client && yarn build:platforms && yarn build:iam", "test:ceramic-integration": "yarn workspace @gitcoin/passport-database-client test:integration" }, "engines": { @@ -61,7 +63,6 @@ }, "resolutions": { "csstype": "3.0.10", - "dids": "^3.2.0", "**/@types/react": "17.0.2", "leveldown": "6.1.1", "node-gyp": "^9.0.0" diff --git a/platforms/.eslintrc.js b/platforms/.eslintrc.js index e57a23082d..9a2bc0632b 100644 --- a/platforms/.eslintrc.js +++ b/platforms/.eslintrc.js @@ -35,6 +35,9 @@ module.exports = { "@typescript-eslint/no-misused-promises": 1, "@typescript-eslint/no-floating-promises": 1, "@typescript-eslint/no-unsafe-assignment": "warn", + "@typescript-eslint/no-explicit-any": "warn", + "jest/no-alias-methods": "warn", + "@typescript-eslint/no-redundant-type-constituents": "warn", }, settings: { "import/resolver": { diff --git a/platforms/package.json b/platforms/package.json index 56bba63710..d835dbce1d 100644 --- a/platforms/package.json +++ b/platforms/package.json @@ -38,13 +38,14 @@ "cid": "multiformats/cid", "multiformats": "9", "redis": "^4.6.10", - "typescript": "~4.6.3" + "typescript": "^5.3.3" }, "devDependencies": { "jest": "^27.5.1", "jest-mock-extended": "^3.0.4", "ts-jest": "^27.1.4", - "ts-node": "^10.8.0" + "ts-node": "^10.8.0", + "eslint-plugin-prettier": "^5.1.3" }, "scripts": { "clean": "rimraf dist node_modules", diff --git a/platforms/src/Brightid/__tests__/brightid.test.ts b/platforms/src/Brightid/__tests__/brightid.test.ts index 38e4ebe30a..d58c0aded9 100644 --- a/platforms/src/Brightid/__tests__/brightid.test.ts +++ b/platforms/src/Brightid/__tests__/brightid.test.ts @@ -69,8 +69,8 @@ describe("Attempt BrightId", () => { }, } as unknown as RequestPayload); - expect(verifyContextId).toBeCalledTimes(1); - expect(verifyContextId).toBeCalledWith("Gitcoin", did); + expect(verifyContextId).toHaveBeenCalledTimes(1); + expect(verifyContextId).toHaveBeenCalledWith("Gitcoin", did); expect(result).toMatchObject({ valid: true, record: { @@ -89,7 +89,7 @@ describe("Attempt BrightId", () => { }, } as unknown as RequestPayload); - expect(verifyContextId).toBeCalledTimes(1); + expect(verifyContextId).toHaveBeenCalledTimes(1); expect(result).toMatchObject({ valid: false, record: undefined, @@ -110,7 +110,7 @@ describe("Attempt BrightId", () => { } as unknown as RequestPayload); }).rejects.toThrow(ProviderExternalVerificationError); - expect(verifyContextId).toBeCalledTimes(1); + expect(verifyContextId).toHaveBeenCalledTimes(1); }); it("user is sponsored but did not attend a connection party, returns valid false, record undefined, and error reason", async () => { @@ -122,7 +122,7 @@ describe("Attempt BrightId", () => { }, } as unknown as RequestPayload); - expect(verifyContextId).toBeCalledTimes(1); + expect(verifyContextId).toHaveBeenCalledTimes(1); expect(result).toMatchObject({ valid: false, record: undefined, @@ -140,8 +140,8 @@ describe("Attempt BrightId", () => { (sponsor as jest.Mock).mockResolvedValue(validSponsorshipResponse); const result = await triggerBrightidSponsorship(did); - expect(sponsor).toBeCalledTimes(1); - expect(sponsor).toBeCalledWith(process.env.BRIGHTID_PRIVATE_KEY || "", "Gitcoin", did); + expect(sponsor).toHaveBeenCalledTimes(1); + expect(sponsor).toHaveBeenCalledWith(process.env.BRIGHTID_PRIVATE_KEY || "", "Gitcoin", did); expect(result).toMatchObject({ valid: true, result: validSponsorshipResponse, @@ -152,8 +152,8 @@ describe("Attempt BrightId", () => { (sponsor as jest.Mock).mockResolvedValue(invalidSponsorshipResponse); const result = await triggerBrightidSponsorship(did); - expect(sponsor).toBeCalledTimes(1); - expect(sponsor).toBeCalledWith(process.env.BRIGHTID_PRIVATE_KEY || "", "Gitcoin", did); + expect(sponsor).toHaveBeenCalledTimes(1); + expect(sponsor).toHaveBeenCalledWith(process.env.BRIGHTID_PRIVATE_KEY || "", "Gitcoin", did); expect(result).toMatchObject({ valid: false, result: invalidSponsorshipResponse, @@ -164,8 +164,8 @@ describe("Attempt BrightId", () => { (sponsor as jest.Mock).mockRejectedValue("Thrown Error"); const result = await triggerBrightidSponsorship(did); - expect(sponsor).toBeCalledTimes(1); - expect(sponsor).toBeCalledWith(process.env.BRIGHTID_PRIVATE_KEY || "", "Gitcoin", did); + expect(sponsor).toHaveBeenCalledTimes(1); + expect(sponsor).toHaveBeenCalledWith(process.env.BRIGHTID_PRIVATE_KEY || "", "Gitcoin", did); expect(result).toMatchObject({ valid: false, error: "Thrown Error", diff --git a/platforms/src/Civic/Providers/types.ts b/platforms/src/Civic/Providers/types.ts index c7921206d2..8de0e75540 100644 --- a/platforms/src/Civic/Providers/types.ts +++ b/platforms/src/Civic/Providers/types.ts @@ -26,7 +26,7 @@ export const supportedChains = [ "XDC_APOTHEM", ] as const; -export type SupportedChain = typeof supportedChains[number]; +export type SupportedChain = (typeof supportedChains)[number]; type CivicPassState = "ACTIVE" | "FROZEN" | "REVOKED"; diff --git a/platforms/src/ClearText/Providers/clearTextGithubOrg.ts b/platforms/src/ClearText/Providers/clearTextGithubOrg.ts index 658986ff0e..d0998a0172 100644 --- a/platforms/src/ClearText/Providers/clearTextGithubOrg.ts +++ b/platforms/src/ClearText/Providers/clearTextGithubOrg.ts @@ -46,7 +46,9 @@ export class ClearTextGithubOrgProvider implements Provider { } // verify that the Github user is a memeber of the provided organization - async verify(payload: GHUserRequestPayload): Promise { + async verify(_payload: RequestPayload): Promise { + // TODO: geri review this + const payload = _payload as GHUserRequestPayload; let valid = false, ghVerification: GHVerification, pii; diff --git a/platforms/src/ClearText/__tests__/clearTextGithubOrg.test.ts b/platforms/src/ClearText/__tests__/clearTextGithubOrg.test.ts index afcdba77c4..3e18236f25 100644 --- a/platforms/src/ClearText/__tests__/clearTextGithubOrg.test.ts +++ b/platforms/src/ClearText/__tests__/clearTextGithubOrg.test.ts @@ -88,7 +88,7 @@ describe("Attempt verification", function () { } as unknown as GHUserRequestPayload); // Check the request to get the token - expect(mockedAxios.post).toBeCalledWith( + expect(mockedAxios.post).toHaveBeenCalledWith( `https://github.com/login/oauth/access_token?client_id=${clientId}&client_secret=${clientSecret}&code=${code}`, {}, { @@ -97,12 +97,12 @@ describe("Attempt verification", function () { ); // Check the request to get the user - expect(mockedAxios.get).toBeCalledWith("https://api.github.com/user", { + expect(mockedAxios.get).toHaveBeenCalledWith("https://api.github.com/user", { headers: { Authorization: "token 762165719dhiqudgasyuqwt6235" }, }); // Check the request to get the user's org - expect(mockedAxios.get).toBeCalledWith("https://api.github.com/users/my-login-handle/orgs", { + expect(mockedAxios.get).toHaveBeenCalledWith("https://api.github.com/users/my-login-handle/orgs", { headers: { Authorization: "token 762165719dhiqudgasyuqwt6235" }, }); @@ -128,7 +128,7 @@ describe("Attempt verification", function () { } as unknown as GHUserRequestPayload); // Check the request to get the token - expect(mockedAxios.post).toBeCalledWith( + expect(mockedAxios.post).toHaveBeenCalledWith( `https://github.com/login/oauth/access_token?client_id=${clientId}&client_secret=${clientSecret}&code=${code}`, {}, { diff --git a/platforms/src/ClearText/__tests__/clearTextTwitter.test.ts b/platforms/src/ClearText/__tests__/clearTextTwitter.test.ts index f2dad91fbb..0bf18a4f12 100644 --- a/platforms/src/ClearText/__tests__/clearTextTwitter.test.ts +++ b/platforms/src/ClearText/__tests__/clearTextTwitter.test.ts @@ -44,8 +44,8 @@ describe("Attempt verification", function () { {} ); - expect(getAuthClient).toBeCalledWith(sessionKey, code, {}); - expect(getTwitterUserData).toBeCalled(); + expect(getAuthClient).toHaveBeenCalledWith(sessionKey, code, {}); + expect(getTwitterUserData).toHaveBeenCalled(); expect(verifiedPayload).toEqual({ valid: true, record: { diff --git a/platforms/src/CyberProfile/__tests__/cyberconnect.test.ts b/platforms/src/CyberProfile/__tests__/cyberconnect.test.ts index 280a787c6d..afc932e27f 100644 --- a/platforms/src/CyberProfile/__tests__/cyberconnect.test.ts +++ b/platforms/src/CyberProfile/__tests__/cyberconnect.test.ts @@ -20,7 +20,7 @@ const mockedEthers = ethers as jest.Mocked; jest.mock("axios"); -mockedEthers.Contract.prototype.getPrimaryProfile = jest.fn().mockImplementation((address: string) => { +(mockedEthers.Contract.prototype.getPrimaryProfile as jest.Mock) = jest.fn().mockImplementation((address: string) => { if (!address.startsWith("0x")) throw new Error("Invalid address"); return Promise.resolve( ethers.BigNumber.from( @@ -33,15 +33,17 @@ mockedEthers.Contract.prototype.getPrimaryProfile = jest.fn().mockImplementation ); }); -mockedEthers.Contract.prototype.getHandleByProfileId = jest.fn().mockImplementation((profileId: number) => { - return Promise.resolve( - { - [MOCK_PROFILE_PREMIUM]: "123", - [MOCK_PROFILE_PAID]: "1234567", - [MOCK_PROFILE_UNPAID]: "1234567890123", - }[profileId] || "" - ); -}); +(mockedEthers.Contract.prototype.getHandleByProfileId as jest.Mock) = jest + .fn() + .mockImplementation((profileId: number) => { + return Promise.resolve( + { + [MOCK_PROFILE_PREMIUM]: "123", + [MOCK_PROFILE_PAID]: "1234567", + [MOCK_PROFILE_UNPAID]: "1234567890123", + }[profileId] || "" + ); + }); describe("Attempt premium verification", function () { it("works with the new cyberprofile system", async () => { diff --git a/platforms/src/Discord/__tests__/discord.test.ts b/platforms/src/Discord/__tests__/discord.test.ts index badc02d0bf..0323de7694 100644 --- a/platforms/src/Discord/__tests__/discord.test.ts +++ b/platforms/src/Discord/__tests__/discord.test.ts @@ -57,7 +57,7 @@ describe("Attempt verification", function () { } as unknown as RequestPayload); // Check the request to get the user - expect(mockedAxios.get).toBeCalledWith("https://discord.com/api/oauth2/@me", { + expect(mockedAxios.get).toHaveBeenCalledWith("https://discord.com/api/oauth2/@me", { headers: { Authorization: "Bearer 762165719dhiqudgasyuqwt6235" }, }); diff --git a/platforms/src/Ens/__tests__/EnsProvider.test.ts b/platforms/src/Ens/__tests__/EnsProvider.test.ts index c7a003a3cc..93e0b33f2e 100644 --- a/platforms/src/Ens/__tests__/EnsProvider.test.ts +++ b/platforms/src/Ens/__tests__/EnsProvider.test.ts @@ -39,8 +39,8 @@ describe("Attempt verification", function () { address: MOCK_ADDRESS, } as unknown as RequestPayload); - expect(EthersLookupAddressMock).toBeCalledWith(MOCK_ADDRESS); - expect(EthersGetResolverMock).toBeCalledWith(MOCK_ENS); + expect(EthersLookupAddressMock).toHaveBeenCalledWith(MOCK_ADDRESS); + expect(EthersGetResolverMock).toHaveBeenCalledWith(MOCK_ENS); expect(verifiedPayload).toEqual({ valid: true, @@ -64,7 +64,7 @@ describe("Attempt verification", function () { address: MOCK_ADDRESS, } as unknown as RequestPayload); - expect(EthersLookupAddressMock).toBeCalledWith(MOCK_ADDRESS); + expect(EthersLookupAddressMock).toHaveBeenCalledWith(MOCK_ADDRESS); expect(verifiedPayload).toEqual({ valid: false, @@ -85,7 +85,7 @@ describe("Attempt verification", function () { address: MOCK_ADDRESS, } as unknown as RequestPayload); - expect(EthersLookupAddressMock).toBeCalledWith(MOCK_ADDRESS); + expect(EthersLookupAddressMock).toHaveBeenCalledWith(MOCK_ADDRESS); expect(verifiedPayload).toEqual({ valid: true, @@ -106,7 +106,7 @@ describe("Attempt verification", function () { address: MOCK_FAKE_ADDRESS, } as unknown as RequestPayload); }).rejects.toThrow(new ProviderExternalVerificationError("Error verifying ENS name: Invalid Address")); - expect(EthersLookupAddressMock).toBeCalledWith(MOCK_FAKE_ADDRESS); + expect(EthersLookupAddressMock).toHaveBeenCalledWith(MOCK_FAKE_ADDRESS); }); it("should return false for an address without a valid ens name", async () => { @@ -117,7 +117,7 @@ describe("Attempt verification", function () { address: MOCK_FAKE_ADDRESS, } as unknown as RequestPayload); - expect(EthersLookupAddressMock).toBeCalledWith(MOCK_FAKE_ADDRESS); + expect(EthersLookupAddressMock).toHaveBeenCalledWith(MOCK_FAKE_ADDRESS); expect(verifiedPayload).toEqual({ valid: false, errors: ["Primary ENS name was not found for given address."], diff --git a/platforms/src/Github/Providers/githubContributionActivity.ts b/platforms/src/Github/Providers/githubContributionActivity.ts index 9921438560..30af33dbaf 100644 --- a/platforms/src/Github/Providers/githubContributionActivity.ts +++ b/platforms/src/Github/Providers/githubContributionActivity.ts @@ -21,7 +21,7 @@ export class GithubContributionActivityProvider implements Provider { async verify(payload: RequestPayload, context: GithubContext): Promise { try { - const errors = []; + const errors: string[] = []; let record = undefined, valid = false, contributionResult; @@ -30,7 +30,7 @@ export class GithubContributionActivityProvider implements Provider { contributionResult = await fetchAndCheckContributions(context, payload.proofs.code, this._options.threshold); } catch (e) { valid = false; - errors.push(e); + errors.push(String(e)); } valid = contributionResult.contributionValid; diff --git a/platforms/src/GnosisSafe/Providers/__tests__/gnosisSafe.test.ts b/platforms/src/GnosisSafe/Providers/__tests__/gnosisSafe.test.ts index 836c0b73b8..d7fcb1c215 100644 --- a/platforms/src/GnosisSafe/Providers/__tests__/gnosisSafe.test.ts +++ b/platforms/src/GnosisSafe/Providers/__tests__/gnosisSafe.test.ts @@ -156,7 +156,11 @@ describe("Verification fails", function () { return await gnosisSafeProvider.verify({ address: "", } as unknown as RequestPayload); - }).rejects.toThrow(new ProviderExternalVerificationError(`Error verifying Gnosis Safes: {"reason":"invalid address","code":"INVALID_ARGUMENT","argument":"address","value":""}`)); + }).rejects.toThrow( + new ProviderExternalVerificationError( + `Error verifying Gnosis Safes: {"reason":"invalid address","code":"INVALID_ARGUMENT","argument":"address","value":""}` + ) + ); expect(axios.get).toHaveBeenCalledTimes(0); }); }); diff --git a/platforms/src/GnosisSafe/Providers/gnosisSafe.ts b/platforms/src/GnosisSafe/Providers/gnosisSafe.ts index b446c6c77a..5ffa8c9534 100644 --- a/platforms/src/GnosisSafe/Providers/gnosisSafe.ts +++ b/platforms/src/GnosisSafe/Providers/gnosisSafe.ts @@ -47,7 +47,7 @@ export class GnosisSafeProvider implements Provider { const ownerSafes = await getSafes(address); valid = !!ownerSafes.safes && ownerSafes.safes.length >= 1; } catch (e) { - errors.push((e as unknown).toString()); + errors.push(String(e)); } if (!valid && errors.length === 0) { diff --git a/platforms/src/Google/Providers/__tests__/google.test.ts b/platforms/src/Google/Providers/__tests__/google.test.ts index d2d2322da5..8a17442b8b 100644 --- a/platforms/src/Google/Providers/__tests__/google.test.ts +++ b/platforms/src/Google/Providers/__tests__/google.test.ts @@ -33,7 +33,7 @@ describe("Attempt verification", function () { }, } as unknown as RequestPayload); - expect(verifyGoogleMock).toBeCalledWith(MOCK_TOKEN_ID); + expect(verifyGoogleMock).toHaveBeenCalledWith(MOCK_TOKEN_ID); expect(verifiedPayload).toEqual({ valid: true, record: { @@ -61,7 +61,7 @@ describe("Attempt verification", function () { }, } as unknown as RequestPayload); - expect(verifyGoogleMock).toBeCalledWith(MOCK_TOKEN_ID); + expect(verifyGoogleMock).toHaveBeenCalledWith(MOCK_TOKEN_ID); expect(verifiedPayload).toEqual({ valid: false, record: undefined, @@ -95,8 +95,8 @@ describe("verifyGoogle", function () { }); const verifiedGoogleResponse = await google.verifyGoogle(MOCK_TOKEN_ID); - expect(requestAccessTokenMock).toBeCalledWith(MOCK_TOKEN_ID); - expect(userInfoMock).toBeCalledWith("https://www.googleapis.com/oauth2/v2/userinfo", { + expect(requestAccessTokenMock).toHaveBeenCalledWith(MOCK_TOKEN_ID); + expect(userInfoMock).toHaveBeenCalledWith("https://www.googleapis.com/oauth2/v2/userinfo", { headers: { Authorization: `Bearer ${MOCK_ACCESS_TOKEN}` }, }); expect(verifiedGoogleResponse).toEqual({ @@ -126,9 +126,9 @@ describe("verifyGoogle", function () { "Details: " + JSON.stringify({ error: { message: "error message for user data request" } }), ], }); - expect(requestAccessTokenMock).toBeCalledWith(MOCK_TOKEN_ID); - expect(userInfoMock).toBeCalledTimes(1); - expect(userInfoMock).toBeCalledWith("https://www.googleapis.com/oauth2/v2/userinfo", { + expect(requestAccessTokenMock).toHaveBeenCalledWith(MOCK_TOKEN_ID); + expect(userInfoMock).toHaveBeenCalledTimes(1); + expect(userInfoMock).toHaveBeenCalledWith("https://www.googleapis.com/oauth2/v2/userinfo", { headers: { Authorization: `Bearer ${MOCK_ACCESS_TOKEN}` }, }); }); diff --git a/platforms/src/GtcStaking/__tests__/selfStaking.test.ts b/platforms/src/GtcStaking/__tests__/selfStaking.test.ts index b7a1f93e8c..0a6df7383f 100644 --- a/platforms/src/GtcStaking/__tests__/selfStaking.test.ts +++ b/platforms/src/GtcStaking/__tests__/selfStaking.test.ts @@ -39,7 +39,7 @@ const gtcStakingResponse = (gtcAmount: string) => { event_type: "SelfStake", round_id: 1, staker: MOCK_ADDRESS, - address: null as null, + address: "0x1234", amount: gtcAmount, staked: true, block_number: 14124991, diff --git a/platforms/src/GuildXYZ/Providers/guildXYZ.ts b/platforms/src/GuildXYZ/Providers/guildXYZ.ts index c3045a2a67..3a35adbdc4 100644 --- a/platforms/src/GuildXYZ/Providers/guildXYZ.ts +++ b/platforms/src/GuildXYZ/Providers/guildXYZ.ts @@ -110,13 +110,13 @@ export class GuildMemberProvider extends GuildProvider implements Provider { let valid = false, record = undefined, membershipStats; - const errors = []; + const errors: string[] = []; const address = await getAddress(payload); try { membershipStats = await this.checkMemberShipStats(address); } catch (error) { - errors.push(error); + errors.push(String(error)); } const guildCount = membershipStats.guildCount; @@ -155,12 +155,12 @@ export class GuildAdminProvider extends GuildProvider implements Provider { let valid = false, record = undefined, membershipStats; - const errors = []; + const errors: string[] = []; const address = await getAddress(payload); try { membershipStats = await this.checkMemberShipStats(address); } catch (error) { - errors.push(error); + errors.push(String(error)); } valid = membershipStats.totalAdminOwner > 0; diff --git a/platforms/src/Holonym/__tests__/holonymGovId.test.ts b/platforms/src/Holonym/__tests__/holonymGovId.test.ts index d1923ef8c5..486800954e 100644 --- a/platforms/src/Holonym/__tests__/holonymGovId.test.ts +++ b/platforms/src/Holonym/__tests__/holonymGovId.test.ts @@ -30,7 +30,7 @@ describe("Attempt verification", function () { address: MOCK_ADDRESS, } as RequestPayload); - expect(mockIsUniqueForAction).toBeCalledWith(MOCK_ADDRESS, actionId); + expect(mockIsUniqueForAction).toHaveBeenCalledWith(MOCK_ADDRESS, actionId); expect(verifiedPayload).toEqual({ valid: true, errors: [], @@ -49,7 +49,7 @@ describe("Attempt verification", function () { address: UNREGISTERED_ADDRESS, } as RequestPayload); - expect(mockIsUniqueForAction).toBeCalledWith(UNREGISTERED_ADDRESS, actionId); + expect(mockIsUniqueForAction).toHaveBeenCalledWith(UNREGISTERED_ADDRESS, actionId); expect(verifiedPayload).toEqual({ valid: false, errors: ["We were unable to verify that your address was unique for action -- isUniqueForAction: false."], diff --git a/platforms/src/Idena/Providers/IdenaAgeProvider.ts b/platforms/src/Idena/Providers/IdenaAgeProvider.ts index 505858fece..293591dcce 100644 --- a/platforms/src/Idena/Providers/IdenaAgeProvider.ts +++ b/platforms/src/Idena/Providers/IdenaAgeProvider.ts @@ -1,5 +1,5 @@ // ----- Types -import { RequestPayload, VerifiedPayload } from "@gitcoin/passport-types"; +import { ProviderContext, RequestPayload, VerifiedPayload } from "@gitcoin/passport-types"; import { Provider, ProviderOptions } from "../../types"; // ----- Idena SignIn library @@ -23,7 +23,9 @@ abstract class IdenaAgeProvider implements Provider { } // verify that the proof object contains valid === "true" - async verify(payload: RequestPayload, context: IdenaContext): Promise { + async verify(payload: RequestPayload, _context: ProviderContext): Promise { + // TODO: geri review this + const context = _context as IdenaContext; const token = payload.proofs.sessionKey; const { valid, address, expiresInSeconds, errors } = await checkAge(token, context, this.minAge); return { diff --git a/platforms/src/Idena/Providers/IdenaStakeProvider.ts b/platforms/src/Idena/Providers/IdenaStakeProvider.ts index 577e49da15..5ce6947bc8 100644 --- a/platforms/src/Idena/Providers/IdenaStakeProvider.ts +++ b/platforms/src/Idena/Providers/IdenaStakeProvider.ts @@ -1,6 +1,6 @@ // ----- Types import { Provider, ProviderOptions } from "../../types"; -import { RequestPayload, VerifiedPayload } from "@gitcoin/passport-types"; +import { ProviderContext, RequestPayload, VerifiedPayload } from "@gitcoin/passport-types"; // ----- Idena SignIn library import { IdenaContext, requestIdentityStake } from "../procedures/idenaSignIn"; @@ -22,7 +22,10 @@ abstract class IdenaStakeProvider implements Provider { this.minStake = minStake; } - async verify(payload: RequestPayload, context: IdenaContext): Promise { + async verify(payload: RequestPayload, _context: ProviderContext): Promise { + // TODO: geri review this + const context = _context as IdenaContext; + const token = payload.proofs.sessionKey; const { valid, address, expiresInSeconds, errors } = await checkStake(token, context, this.minStake); return { diff --git a/platforms/src/Idena/Providers/IdenaStateProvider.ts b/platforms/src/Idena/Providers/IdenaStateProvider.ts index 4eda33bb49..8e41af8ead 100644 --- a/platforms/src/Idena/Providers/IdenaStateProvider.ts +++ b/platforms/src/Idena/Providers/IdenaStateProvider.ts @@ -1,6 +1,6 @@ // ----- Types import { Provider, ProviderOptions } from "../../types"; -import { RequestPayload, VerifiedPayload } from "@gitcoin/passport-types"; +import { ProviderContext, RequestPayload, VerifiedPayload } from "@gitcoin/passport-types"; // ----- Idena SignIn library import { IdenaContext, requestIdentityState } from "../procedures/idenaSignIn"; @@ -24,7 +24,9 @@ abstract class IdenaStateProvider implements Provider { this.acceptableStates = acceptableStates; } - async verify(payload: RequestPayload, context: IdenaContext): Promise { + async verify(payload: RequestPayload, _context?: ProviderContext): Promise { + // TODO: geri review this + const context = _context as IdenaContext; const token = payload.proofs.sessionKey; const { valid, address, expiresInSeconds, errors } = await this.checkState(token, context); return { diff --git a/platforms/src/Idena/__tests__/provider.test.ts b/platforms/src/Idena/__tests__/provider.test.ts index 798fb0fbc3..bd3131b0e7 100644 --- a/platforms/src/Idena/__tests__/provider.test.ts +++ b/platforms/src/Idena/__tests__/provider.test.ts @@ -97,9 +97,9 @@ describe("Attempt verification", function () { }; const verifiedPayload = await provider.verify(payload as unknown as RequestPayload, {} as IdenaContext); - expect(mockedAxios.get).toBeCalledTimes(2); - expect(mockedAxios.get).toBeCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); - expect(mockedAxios.get).toBeCalledWith("/api/epoch/last"); + expect(mockedAxios.get).toHaveBeenCalledTimes(2); + expect(mockedAxios.get).toHaveBeenCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); + expect(mockedAxios.get).toHaveBeenCalledWith("/api/epoch/last"); expect(verifiedPayload).toEqual({ valid: true, record: { @@ -119,9 +119,9 @@ describe("Attempt verification", function () { }; const verifiedPayload = await provider.verify(payload as unknown as RequestPayload, {} as IdenaContext); - expect(mockedAxios.get).toBeCalledTimes(2); - expect(mockedAxios.get).toBeCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); - expect(mockedAxios.get).toBeCalledWith("/api/epoch/last"); + expect(mockedAxios.get).toHaveBeenCalledTimes(2); + expect(mockedAxios.get).toHaveBeenCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); + expect(mockedAxios.get).toHaveBeenCalledWith("/api/epoch/last"); expect(verifiedPayload).toEqual( expect.objectContaining({ valid: false, @@ -140,7 +140,7 @@ describe("Attempt verification", function () { await expect(provider.verify(payload as unknown as RequestPayload, {} as IdenaContext)).rejects.toThrow( ProviderInternalVerificationError ); - expect(mockedAxios.get).toBeCalledTimes(0); + expect(mockedAxios.get).toHaveBeenCalledTimes(0); }); it("should throw ProviderExternalVerificationError return false when the Idena API returns an error response", async () => { @@ -157,8 +157,8 @@ describe("Attempt verification", function () { await expect(provider.verify(payload as unknown as RequestPayload, {} as IdenaContext)).rejects.toThrow( ProviderExternalVerificationError ); - expect(mockedAxios.get).toBeCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); + expect(mockedAxios.get).toHaveBeenCalledTimes(1); + expect(mockedAxios.get).toHaveBeenCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); }); it("shouldn't duplicate requests to the Idena API within the same context", async () => { @@ -173,9 +173,9 @@ describe("Attempt verification", function () { await provider1.verify(payload as unknown as RequestPayload, context as IdenaContext); await provider2.verify(payload as unknown as RequestPayload, context as IdenaContext); - expect(mockedAxios.get).toBeCalledTimes(2); - expect(mockedAxios.get).toBeCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); - expect(mockedAxios.get).toBeCalledWith("/api/epoch/last"); + expect(mockedAxios.get).toHaveBeenCalledTimes(2); + expect(mockedAxios.get).toHaveBeenCalledWith(`/api/identity/${MOCK_ADDRESS}/age`); + expect(mockedAxios.get).toHaveBeenCalledWith("/api/epoch/last"); }); }); diff --git a/platforms/src/Idena/__tests__/signin.test.ts b/platforms/src/Idena/__tests__/signin.test.ts index 271f6cb5d8..b451e5dd7e 100644 --- a/platforms/src/Idena/__tests__/signin.test.ts +++ b/platforms/src/Idena/__tests__/signin.test.ts @@ -70,8 +70,10 @@ describe("Attempt signin", function () { const ok = await authenticate(MOCK_SESSION_KEY, MOCK_SIGNATURE); expect(ok).toBe(true); - expect(mockedAxios.get).toBeCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith(`/api/SignatureAddress?value=${MOCK_NONCE}&signature=${MOCK_SIGNATURE}`); + expect(mockedAxios.get).toHaveBeenCalledTimes(1); + expect(mockedAxios.get).toHaveBeenCalledWith( + `/api/SignatureAddress?value=${MOCK_NONCE}&signature=${MOCK_SIGNATURE}` + ); const updatedSession = await loadCacheSession(MOCK_SESSION_KEY); expect(updatedSession).toBeDefined(); diff --git a/platforms/src/Lens/__tests__/lens.test.ts b/platforms/src/Lens/__tests__/lens.test.ts index bacf7cc0da..9780f49165 100644 --- a/platforms/src/Lens/__tests__/lens.test.ts +++ b/platforms/src/Lens/__tests__/lens.test.ts @@ -103,6 +103,6 @@ describe("Attempt verification", function () { await lens.verify({ address: MOCK_ADDRESS_LOWER, } as RequestPayload) - ).rejects.toThrowError("Error verifying Snapshot proposals: {}."); + ).rejects.toThrow("Error verifying Snapshot proposals: {}."); }); }); diff --git a/platforms/src/Linkedin/__tests__/linkedin.test.ts b/platforms/src/Linkedin/__tests__/linkedin.test.ts index 2154336a1d..dadd60c4d3 100644 --- a/platforms/src/Linkedin/__tests__/linkedin.test.ts +++ b/platforms/src/Linkedin/__tests__/linkedin.test.ts @@ -53,7 +53,7 @@ describe("Attempt verification", function () { } as unknown as RequestPayload); // Check the request to get the token - expect(mockedAxios.post).toBeCalledWith( + expect(mockedAxios.post).toHaveBeenCalledWith( `https://www.linkedin.com/oauth/v2/accessToken?grant_type=authorization_code&code=${code}&client_id=${clientId}&client_secret=${clientSecret}&redirect_uri=${process.env.LINKEDIN_CALLBACK}`, {}, { @@ -62,7 +62,7 @@ describe("Attempt verification", function () { ); // Check the request to get the user - expect(mockedAxios.get).toBeCalledWith("https://api.linkedin.com/rest/me", { + expect(mockedAxios.get).toHaveBeenCalledWith("https://api.linkedin.com/rest/me", { headers: { Authorization: "Bearer 762165719dhiqudgasyuqwt6235", "Linkedin-Version": 202305 }, }); diff --git a/platforms/src/Poh/__tests__/poh.test.ts b/platforms/src/Poh/__tests__/poh.test.ts index dba2bc7a92..4e169c64d4 100644 --- a/platforms/src/Poh/__tests__/poh.test.ts +++ b/platforms/src/Poh/__tests__/poh.test.ts @@ -29,7 +29,7 @@ describe("Attempt verification", function () { address: MOCK_ADDRESS, } as RequestPayload); - expect(mockIsRegistered).toBeCalledWith(MOCK_ADDRESS); + expect(mockIsRegistered).toHaveBeenCalledWith(MOCK_ADDRESS); expect(verifiedPayload).toEqual({ valid: true, errors: [], @@ -48,7 +48,7 @@ describe("Attempt verification", function () { address: UNREGISTERED_ADDRESS, } as RequestPayload); - expect(mockIsRegistered).toBeCalledWith(UNREGISTERED_ADDRESS); + expect(mockIsRegistered).toHaveBeenCalledWith(UNREGISTERED_ADDRESS); expect(verifiedPayload).toEqual({ errors: ["Your address is not registered with Proof of Humanity -- isRegistered: false."], valid: false, diff --git a/platforms/src/Snapshot/Providers/snapshotProposalsProvider.ts b/platforms/src/Snapshot/Providers/snapshotProposalsProvider.ts index c26e0ac827..8af4b3c2db 100644 --- a/platforms/src/Snapshot/Providers/snapshotProposalsProvider.ts +++ b/platforms/src/Snapshot/Providers/snapshotProposalsProvider.ts @@ -18,7 +18,7 @@ interface SnapshotProposalQueryResult { id?: string; scores_total?: number; author?: string; - } + }, ]; } diff --git a/platforms/src/Snapshot/Providers/snapshotVotesProvider.ts b/platforms/src/Snapshot/Providers/snapshotVotesProvider.ts index e259563e96..5d2e1498b3 100644 --- a/platforms/src/Snapshot/Providers/snapshotVotesProvider.ts +++ b/platforms/src/Snapshot/Providers/snapshotVotesProvider.ts @@ -24,7 +24,7 @@ interface SnapshotVotesQueryResult { }, space?: { id?: string; - } + }, ]; } diff --git a/platforms/src/ZkSync/Providers/zkSyncLite.ts b/platforms/src/ZkSync/Providers/zkSyncLite.ts index d2d0d4d741..63b609ae9c 100644 --- a/platforms/src/ZkSync/Providers/zkSyncLite.ts +++ b/platforms/src/ZkSync/Providers/zkSyncLite.ts @@ -92,7 +92,7 @@ export class ZkSyncLiteProvider implements Provider { } } else { errors.push( - `ZKSync Lite API Error '${zkSyncLiteResponse.status}'. Details: '${zkSyncLiteResponse.error.toString()}'.` + `ZKSync Lite API Error '${zkSyncLiteResponse.status}'. Details: '${String(zkSyncLiteResponse.error)}'.` ); } } else { diff --git a/platforms/src/ZkSync/__tests__/zkSync.test.ts b/platforms/src/ZkSync/__tests__/zkSync.test.ts index 771d00b5e4..9506c32149 100644 --- a/platforms/src/ZkSync/__tests__/zkSync.test.ts +++ b/platforms/src/ZkSync/__tests__/zkSync.test.ts @@ -131,13 +131,16 @@ describe("Verification succeeds", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith(`${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, { - params: { - from: "latest", - limit: 100, - direction: "older", - }, - }); + expect(mockedAxios.get).toHaveBeenCalledWith( + `${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, + { + params: { + from: "latest", + limit: 100, + direction: "older", + }, + } + ); expect(zkSyncLitePayload).toEqual({ valid: true, @@ -168,13 +171,16 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith(`${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, { - params: { - from: "latest", - limit: 100, - direction: "older", - }, - }); + expect(mockedAxios.get).toHaveBeenCalledWith( + `${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, + { + params: { + from: "latest", + limit: 100, + direction: "older", + }, + } + ); expect(zkSyncLitePayload).toEqual({ valid: false, @@ -201,13 +207,16 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith(`${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, { - params: { - from: "latest", - limit: 100, - direction: "older", - }, - }); + expect(mockedAxios.get).toHaveBeenCalledWith( + `${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, + { + params: { + from: "latest", + limit: 100, + direction: "older", + }, + } + ); expect(zkSyncLitePayload).toEqual({ valid: false, @@ -235,13 +244,16 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith(`${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, { - params: { - from: "latest", - limit: 100, - direction: "older", - }, - }); + expect(mockedAxios.get).toHaveBeenCalledWith( + `${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, + { + params: { + from: "latest", + limit: 100, + direction: "older", + }, + } + ); expect(zkSyncLitePayload).toEqual({ valid: false, @@ -269,13 +281,16 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith(`${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, { - params: { - from: "latest", - limit: 100, - direction: "older", - }, - }); + expect(mockedAxios.get).toHaveBeenCalledWith( + `${zkSyncLiteApiEndpoint}accounts/${MOCK_ADDRESS_LOWER}/transactions`, + { + params: { + from: "latest", + limit: 100, + direction: "older", + }, + } + ); expect(zkSyncLitePayload).toEqual({ valid: false, diff --git a/platforms/src/ZkSync/__tests__/zkSyncEra.test.ts b/platforms/src/ZkSync/__tests__/zkSyncEra.test.ts index f27275d466..9f6f57208e 100644 --- a/platforms/src/ZkSync/__tests__/zkSyncEra.test.ts +++ b/platforms/src/ZkSync/__tests__/zkSyncEra.test.ts @@ -112,7 +112,7 @@ describe("Verification succeeds", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith( + expect(mockedAxios.get).toHaveBeenCalledWith( `${process.env.ZKSYNC_ERA_MAINNET_ENDPOINT}/transactions?address=${MOCK_ADDRESS_LOWER}&limit=100&direction=older` ); @@ -142,7 +142,7 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith( + expect(mockedAxios.get).toHaveBeenCalledWith( `${process.env.ZKSYNC_ERA_MAINNET_ENDPOINT}/transactions?address=${MOCK_ADDRESS_LOWER}&limit=100&direction=older` ); @@ -167,7 +167,7 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith( + expect(mockedAxios.get).toHaveBeenCalledWith( `${process.env.ZKSYNC_ERA_MAINNET_ENDPOINT}/transactions?address=${MOCK_ADDRESS_LOWER}&limit=100&direction=older` ); @@ -193,7 +193,7 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith( + expect(mockedAxios.get).toHaveBeenCalledWith( `${process.env.ZKSYNC_ERA_MAINNET_ENDPOINT}/transactions?address=${MOCK_ADDRESS_LOWER}&limit=100&direction=older` ); @@ -224,7 +224,7 @@ describe("Verification fails", function () { // Check the request to get the transactions expect(axios.get).toHaveBeenCalledTimes(1); - expect(mockedAxios.get).toBeCalledWith( + expect(mockedAxios.get).toHaveBeenCalledWith( `${process.env.ZKSYNC_ERA_MAINNET_ENDPOINT}/transactions?address=${MOCK_ADDRESS_LOWER}&limit=100&direction=older` ); }); diff --git a/platforms/src/types.ts b/platforms/src/types.ts index db028e3b04..6d73e5d148 100644 --- a/platforms/src/types.ts +++ b/platforms/src/types.ts @@ -12,7 +12,6 @@ export type PlatformSpec = { connectMessage: string; isEVM?: boolean; enablePlatformCardUpdate?: boolean; - metaPointer?: string; website?: string; }; diff --git a/platforms/src/utils/providers.ts b/platforms/src/utils/providers.ts index 3db7b0bbe5..314bbf5e85 100644 --- a/platforms/src/utils/providers.ts +++ b/platforms/src/utils/providers.ts @@ -32,13 +32,16 @@ export class Providers { // construct an array of providers constructor(_providers: Provider[]) { // reduce unique entries into _providers object - this._providers = _providers.reduce((providers, provider) => { - if (!providers[provider.type]) { - providers[provider.type] = provider; - } + this._providers = _providers.reduce( + (providers, provider) => { + if (!providers[provider.type]) { + providers[provider.type] = provider; + } - return providers; - }, {} as { [k: string]: Provider }); + return providers; + }, + {} as { [k: string]: Provider } + ); } async verify(type: string, payload: RequestPayload, context: ProviderContext): Promise { diff --git a/platforms/testSetup.js b/platforms/testSetup.js index 2cb30a2d28..2649c8f26b 100644 --- a/platforms/testSetup.js +++ b/platforms/testSetup.js @@ -1,6 +1,6 @@ process.env.ZKSYNC_ERA_MAINNET_ENDPOINT = "https://zksync-era-api-endpoint.io"; -process.env.PASSPORT_SCORER_BACKEND="https://scorer-gtc.com"; -process.env.SCORER_API_KEY="abcdefg12345567"; +process.env.PASSPORT_SCORER_BACKEND = "https://scorer-gtc.com"; +process.env.SCORER_API_KEY = "abcdefg12345567"; jest.mock("redis", () => { // Import your mock Redis client here, so that it doesn't interfere with other mocks diff --git a/platforms/tsconfig.json b/platforms/tsconfig.json index 3d574fc93e..cf6e3e6ae6 100644 --- a/platforms/tsconfig.json +++ b/platforms/tsconfig.json @@ -5,7 +5,8 @@ "esModuleInterop": true, "declaration": true, "allowSyntheticDefaultImports": true, - "target": "es6", + "target": "ES2022", + "skipLibCheck": true, "noImplicitAny": true, "moduleResolution": "node", "sourceMap": true, diff --git a/schemas/.gitignore b/schemas/.gitignore index bf2262a47b..cf344bce87 100644 --- a/schemas/.gitignore +++ b/schemas/.gitignore @@ -37,3 +37,5 @@ scripts/publish-model.json npm-debug.log* yarn-debug.log* yarn-error.log* + +/dist \ No newline at end of file diff --git a/schemas/README.md b/schemas/README.md index bab579036c..34ae7c98a6 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -1,27 +1,26 @@ -# Gitcoin Passport Ceramic Schemas +# Gitcoin Passport Ceramic Ceramic Compose DB Setup ## Setup -1. Install dependencies using `yarn install` -1. Start a local Ceramic node using `yarn ceramic` -1. Publish the model to your Ceramic node with `yarn publish-model` +- `yarn install` +- `yarn start:ceramic` to start local ceramic node -## Scripts +## GraphQL -In the project directory, you can run: +- Run the following commands to compile and deploy the schemas. I was unable to run them via yarn and had to run them from the command line. Will need ti fix passing the arguments via yarn. -### `yarn create-model` + ````bash + TODO: Fix -Runs the `create-model.mjs` script. -This is only needed to make changes to the model used by the app. -A hex-encoded 32-byte `SEED` environment variable must be present to create a key DID for the model when running the script. + ```bash + composedb composite:create models/passportStamps.graphql --output=composites/gitcoin-passport-stamps-composite.json --did-private-key=${PRIVAKE_KEY} -Set the `CERAMIC_CLIENT_URL` environment variable to change the Ceramic node to run against - the scripts will default to `http://localhost:7007` if not provided. -### `yarn publish-model` + composedb composite:deploy composites/gitcoin-passport-stamps-composite.json --ceramic-url=${CERAMIC_URL} --did-private-key=${PRIVAKE_KEY} -Runs the `publish-model.mjs` script to publish the models to Ceramic. -## License + composedb composite:compile composites/gitcoin-passport-stamps-composite.json definitions/gitcoin-passport-stamps.ts --ceramic-url=${CERAMIC_URL} + ```` -Apache-2.0 OR MIT +- Open `schemas/definitions/gitcoin-passport-stamps.ts` and copy the `definition` object into `schemas/composites/gitcoin-passport-stamps-composite.json` +- run `yarn composedb graphql:server --ceramic-url=${CERAMIC_URL} --graphiql composites/gitcoin-passport-stamps-composite.json --did-private-key=${PRIVAKE_KEY} --port=5005` diff --git a/schemas/composites/gitcoin-passport-stamps-composite.json b/schemas/composites/gitcoin-passport-stamps-composite.json new file mode 100644 index 0000000000..b3ba8ed9a0 --- /dev/null +++ b/schemas/composites/gitcoin-passport-stamps-composite.json @@ -0,0 +1 @@ +{"version":"1.1","models":{"kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw":[{"jws":{"payload":"AXESIH2pK4wcK7dxIpguj-dcHEDgh6APOgH5xu-OeODPgBx5","signatures":[{"signature":"kQc-CgkTB6b2ZD_TG23JytECfb4rMNrdeS9rktqnR1_t_gGCUIHj2eRV5GIbxKHNx5MDXiH9lS2f5yAHx1RXCA","protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURiI3o2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYiJ9"}],"link":"bafyreid5vevyyhblw5ysfgbor7tvyhca4cd2adz2ah44n34opdqm7aa4pe"},"linkedBlock":"omRkYXRhqWRuYW1lckdpdGNvaW5BdHRlc3RhdGlvbmV2aWV3c6Bmc2NoZW1hpWR0eXBlZm9iamVjdGckc2NoZW1heCxodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYWhyZXF1aXJlZIFkdHlwZWpwcm9wZXJ0aWVzoWR0eXBlo2R0eXBlZWFycmF5ZWl0ZW1zo2R0eXBlZnN0cmluZ2ltYXhMZW5ndGgZBABpbWluTGVuZ3RoAWhtYXhJdGVtcxkEAHRhZGRpdGlvbmFsUHJvcGVydGllc/RndmVyc2lvbmMyLjBpaW50ZXJmYWNl9WlyZWxhdGlvbnOgamltcGxlbWVudHOAa2Rlc2NyaXB0aW9ueCZCYXNlIGNsYXNzIGZvciBhbnkgR2l0Y29pbiBhdHRlc3RhdGlvbm9hY2NvdW50UmVsYXRpb26hZHR5cGVkbm9uZWZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYg=="}],"kjzl6hvfrbw6c73j1f2hikvr9fq31m1erw4ngur4g0ila46x2kbgx7g76xeom1w":[{"jws":{"payload":"AXESIFAqroM4A5vGEnKMwkwo_ywsnwZV3PjbcDMkNPvKlvkG","signatures":[{"signature":"gxEnYHSlmL5MQaMeq3ZjCqs_VsgMxmYMatw46GQQeHl-reQFzt29coh0GY-YBm3KLCUEq4i3Gb_lmS2q71h8Cw","protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURiI3o2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYiJ9"}],"link":"bafyreicqfkxigoadtpdbe4umyjgcr7zmfspqmvo47dnxamzegt54vfxzay"},"linkedBlock":"omRkYXRhqWRuYW1leBlWZXJpZmlhYmxlQ3JlZGVudGlhbFByb29mZXZpZXdzoGZzY2hlbWGlZHR5cGVmb2JqZWN0ZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkgWR0eXBlanByb3BlcnRpZXOhZHR5cGWjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9Gd2ZXJzaW9uYzIuMGlpbnRlcmZhY2X1aXJlbGF0aW9uc6BqaW1wbGVtZW50c4BrZGVzY3JpcHRpb254J0EgdmVyaWZpYWJsZSBjcmVkZW50aWFsIHByb29mIGludGVyZmFjZW9hY2NvdW50UmVsYXRpb26hZHR5cGVkbm9uZWZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYg=="}],"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd":[{"jws":{"payload":"AXESIMDk9lPFSB0IMfjO5JQn451qSqHHB_QqFyF7zZg02rOf","signatures":[{"signature":"cv7DeWIk7tnPx_3goqDGjqs1OajadfIAwPzBvYyFdSn3RQZQp1rnvPlSD5hmtHgVvACuBju6lRnzGqS34vopDA","protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURiI3o2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYiJ9"}],"link":"bafyreiga4t3fhrkiduedd6go4skcpy45njfkdryh6qvboil3zwmdjwvtt4"},"linkedBlock":"omRkYXRhqWRuYW1ldFZlcmlmaWFibGVDcmVkZW50aWFsZXZpZXdzoGZzY2hlbWGmZHR5cGVmb2JqZWN0ZSRkZWZzoW9HcmFwaFFMRGF0ZVRpbWWkZHR5cGVmc3RyaW5nZXRpdGxlb0dyYXBoUUxEYXRlVGltZWZmb3JtYXRpZGF0ZS10aW1laW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkg2R0eXBlZmlzc3Vlcmxpc3N1YW5jZURhdGVqcHJvcGVydGllc6RkdHlwZaNkdHlwZWVhcnJheWVpdGVtc6NkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAaW1pbkxlbmd0aAFobWF4SXRlbXMZBABmaXNzdWVyo2R0eXBlZnN0cmluZ2ltYXhMZW5ndGgZBABpbWluTGVuZ3RoAWxpc3N1YW5jZURhdGWhZCRyZWZ3Iy8kZGVmcy9HcmFwaFFMRGF0ZVRpbWVuZXhwaXJhdGlvbkRhdGWhZCRyZWZ3Iy8kZGVmcy9HcmFwaFFMRGF0ZVRpbWV0YWRkaXRpb25hbFByb3BlcnRpZXP0Z3ZlcnNpb25jMi4waWludGVyZmFjZfVpcmVsYXRpb25zoGppbXBsZW1lbnRzgXg/a2p6bDZodmZyYnc2YzVuYXdjb244eG1xeWgyNzBvbGV4N2dnYmRycGFtNncwcnBld2tuNWp5eWJta3ljNXJ3a2Rlc2NyaXB0aW9ueCFBIHZlcmlmaWFibGUgY3JlZGVudGlhbCBpbnRlcmZhY2VvYWNjb3VudFJlbGF0aW9uoWR0eXBlZG5vbmVmaGVhZGVyo2NzZXBlbW9kZWxlbW9kZWxSzgEEAXFxCwAJaG1vZGVsLXYxa2NvbnRyb2xsZXJzgXg4ZGlkOmtleTp6Nk1rZ1V6TllWOEoxeXc0M3dqOUsyQ2JoVFpvTjI1dVo2VEozR2k0Y1lWcFp5RGI="}],"kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz":[{"jws":{"payload":"AXESIGUDxpygxrrbI33LsnxD-oU6__iq80z8LbRSnklP3cko","signatures":[{"signature":"0OlvGnOCn94vD2WPqj7jWY7mpTuiJC4rTTm3W0X2zbEyNQug2RhMRWwmyc77aGS1YN0q5X3Z1jDukHivAhwtCA","protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURiI3o2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYiJ9"}],"link":"bafyreidfapdjziggxlnsg7olwj6eh6ufhl77rkxtjt6c3ncstzeu7xojfa"},"linkedBlock":"omRkYXRhqWRuYW1leCRHaXRjb2luUGFzc3BvcnRTdGFtcFdyYXBwZXJJbnRlcmZhY2Vldmlld3OhYnZjo2R0eXBlcHJlbGF0aW9uRG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmM5cm0ybGhrazJtdjV2OHl0YXR2NmJyN3V5NHVnZXdtZjB6aXZrOHhsZTNxbXBia3pnZGhwcm9wZXJ0eWR2Y0lEZnNjaGVtYaZkdHlwZWZvYmplY3RlJGRlZnOhb0NlcmFtaWNTdHJlYW1JRKNkdHlwZWZzdHJpbmdldGl0bGVvQ2VyYW1pY1N0cmVhbUlEaW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkgWR2Y0lEanByb3BlcnRpZXOjZHZjSUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSURpaXNEZWxldGVkoWR0eXBlZ2Jvb2xlYW5paXNSZXZva2VkoWR0eXBlZ2Jvb2xlYW50YWRkaXRpb25hbFByb3BlcnRpZXP0Z3ZlcnNpb25jMi4waWludGVyZmFjZfVpcmVsYXRpb25zoWR2Y0lEomR0eXBlaGRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjOXJtMmxoa2sybXY1djh5dGF0djZicjd1eTR1Z2V3bWYweml2azh4bGUzcW1wYmt6Z2RqaW1wbGVtZW50c4BrZGVzY3JpcHRpb254KUludGVyZmFjZSBmb3IgR2l0Y29pblBhc3Nwb3J0U3RhbXBXcmFwcGVyb2FjY291bnRSZWxhdGlvbqFkdHlwZWRub25lZmhlYWRlcqNjc2VwZW1vZGVsZW1vZGVsUs4BBAFxcQsACWhtb2RlbC12MWtjb250cm9sbGVyc4F4OGRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURi"}],"kjzl6hvfrbw6c9x0b2jmkiuhwejywo1oi5ngz1jxzi61ydsoqq1hic6k382smsu":[{"jws":{"payload":"AXESIF1tS99CGxqnbLcqT_pu1gGRtK0zHt7f_1yGuXChz0AR","signatures":[{"signature":"WrTfXw-5DEpHXk02YLgdBY02_iaLsqcq9UKZbvz77IGyUYh8Ch7S898XyOo7-3S4dIbyGyOS7HwLzhhJDacZCw","protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURiI3o2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYiJ9"}],"link":"bafyreic5nvf56qq3dktwznzkj75g5vqbsg2k2my633p76xegxfykdt2ace"},"linkedBlock":"omRkYXRhqWRuYW1ldEdpdGNvaW5QYXNzcG9ydFN0YW1wZXZpZXdzoGZzY2hlbWGmZHR5cGVmb2JqZWN0ZSRkZWZzqGxFSVA3MTJEb21haW6lZHR5cGVmb2JqZWN0ZXRpdGxlbEVJUDcxMkRvbWFpbmhyZXF1aXJlZINrcHJpbWFyeVR5cGVmZG9tYWluZXR5cGVzanByb3BlcnRpZXOjZXR5cGVzoWQkcmVmeBkjLyRkZWZzL0VJUDcxMkRvbWFpblR5cGVzZmRvbWFpbqFkJHJlZngaIy8kZGVmcy9FSVA3MTJEb21haW5Eb21haW5rcHJpbWFyeVR5cGWjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9G9FSVA3MTJWYWx1ZVR5cGWlZHR5cGVmb2JqZWN0ZXRpdGxlb0VJUDcxMlZhbHVlVHlwZWhyZXF1aXJlZIJkbmFtZWR0eXBlanByb3BlcnRpZXOiZG5hbWWjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBZHR5cGWjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9G9HcmFwaFFMRGF0ZVRpbWWkZHR5cGVmc3RyaW5nZXRpdGxlb0dyYXBoUUxEYXRlVGltZWZmb3JtYXRpZGF0ZS10aW1laW1heExlbmd0aBhkcUVJUDcxMkRvbWFpblR5cGVzpGR0eXBlZm9iamVjdGV0aXRsZXFFSVA3MTJEb21haW5UeXBlc2pwcm9wZXJ0aWVzpmVQcm9vZqNkdHlwZWVhcnJheWVpdGVtc6FkJHJlZncjLyRkZWZzL0VJUDcxMlZhbHVlVHlwZWhtYXhJdGVtcxkEAGhEb2N1bWVudKNkdHlwZWVhcnJheWVpdGVtc6FkJHJlZncjLyRkZWZzL0VJUDcxMlZhbHVlVHlwZWhtYXhJdGVtcxkEAGhfY29udGV4dKNkdHlwZWVhcnJheWVpdGVtc6FkJHJlZncjLyRkZWZzL0VJUDcxMlZhbHVlVHlwZWhtYXhJdGVtcxkEAGxFSVA3MTJEb21haW6jZHR5cGVlYXJyYXllaXRlbXOhZCRyZWZ3Iy8kZGVmcy9FSVA3MTJWYWx1ZVR5cGVobWF4SXRlbXMZBABwQ3JlZGVudGlhbFN0YXR1c6NkdHlwZWVhcnJheWVpdGVtc6FkJHJlZncjLyRkZWZzL0VJUDcxMlZhbHVlVHlwZWhtYXhJdGVtcxkEAHFDcmVkZW50aWFsU3ViamVjdKNkdHlwZWVhcnJheWVpdGVtc6FkJHJlZncjLyRkZWZzL0VJUDcxMlZhbHVlVHlwZWhtYXhJdGVtcxkEAHRhZGRpdGlvbmFsUHJvcGVydGllc/RyRUlQNzEyRG9tYWluRG9tYWlupWR0eXBlZm9iamVjdGV0aXRsZXJFSVA3MTJEb21haW5Eb21haW5ocmVxdWlyZWSBZG5hbWVqcHJvcGVydGllc6FkbmFtZaNkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAaW1pbkxlbmd0aAF0YWRkaXRpb25hbFByb3BlcnRpZXP0dkdpdGNvaW5QYXNzcG9ydFZjUHJvb2alZHR5cGVmb2JqZWN0ZXRpdGxldkdpdGNvaW5QYXNzcG9ydFZjUHJvb2ZocmVxdWlyZWSHaF9jb250ZXh0ZHR5cGVscHJvb2ZQdXJwb3NlanByb29mVmFsdWVydmVyaWZpY2F0aW9uTWV0aG9kZ2NyZWF0ZWRsZWlwNzEyRG9tYWluanByb3BlcnRpZXOnZHR5cGWjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBZ2NyZWF0ZWShZCRyZWZ3Iy8kZGVmcy9HcmFwaFFMRGF0ZVRpbWVoX2NvbnRleHSjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBanByb29mVmFsdWWjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBbGVpcDcxMkRvbWFpbqFkJHJlZnQjLyRkZWZzL0VJUDcxMkRvbWFpbmxwcm9vZlB1cnBvc2WjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBcnZlcmlmaWNhdGlvbk1ldGhvZKNkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAaW1pbkxlbmd0aAF0YWRkaXRpb25hbFByb3BlcnRpZXP0eCJHaXRjb2luUGFzc3BvcnRWY0NyZWRlbnRpYWxTdWJqZWN0pWR0eXBlZm9iamVjdGV0aXRsZXgiR2l0Y29pblBhc3Nwb3J0VmNDcmVkZW50aWFsU3ViamVjdGhyZXF1aXJlZINiaWRocHJvdmlkZXJkaGFzaGpwcm9wZXJ0aWVzpGJpZKNkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAaW1pbkxlbmd0aAFkaGFzaKNkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAaW1pbkxlbmd0aAFoX2NvbnRleHShZCRyZWZ4MSMvJGRlZnMvR2l0Y29pblBhc3Nwb3J0VmNDcmVkZW50aWFsU3ViamVjdENvbnRleHRocHJvdmlkZXKjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9HgpR2l0Y29pblBhc3Nwb3J0VmNDcmVkZW50aWFsU3ViamVjdENvbnRleHSlZHR5cGVmb2JqZWN0ZXRpdGxleClHaXRjb2luUGFzc3BvcnRWY0NyZWRlbnRpYWxTdWJqZWN0Q29udGV4dGhyZXF1aXJlZIJkaGFzaGhwcm92aWRlcmpwcm9wZXJ0aWVzomRoYXNoo2R0eXBlZnN0cmluZ2ltYXhMZW5ndGgZBABpbWluTGVuZ3RoAWhwcm92aWRlcqNkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAaW1pbkxlbmd0aAF0YWRkaXRpb25hbFByb3BlcnRpZXP0ZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkhmhfY29udGV4dGR0eXBlZmlzc3Vlcmxpc3N1YW5jZURhdGVxY3JlZGVudGlhbFN1YmplY3RlcHJvb2ZqcHJvcGVydGllc6dkdHlwZaNkdHlwZWVhcnJheWVpdGVtc6NkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAaW1pbkxlbmd0aAFobWF4SXRlbXMZBABlcHJvb2ahZCRyZWZ4HiMvJGRlZnMvR2l0Y29pblBhc3Nwb3J0VmNQcm9vZmZpc3N1ZXKjZHR5cGVmc3RyaW5naW1heExlbmd0aBkEAGltaW5MZW5ndGgBaF9jb250ZXh0o2R0eXBlZWFycmF5ZWl0ZW1zo2R0eXBlZnN0cmluZ2ltYXhMZW5ndGgZBABpbWluTGVuZ3RoAWhtYXhJdGVtcxkEAGxpc3N1YW5jZURhdGWhZCRyZWZ3Iy8kZGVmcy9HcmFwaFFMRGF0ZVRpbWVuZXhwaXJhdGlvbkRhdGWhZCRyZWZ3Iy8kZGVmcy9HcmFwaFFMRGF0ZVRpbWVxY3JlZGVudGlhbFN1YmplY3ShZCRyZWZ4KiMvJGRlZnMvR2l0Y29pblBhc3Nwb3J0VmNDcmVkZW50aWFsU3ViamVjdHRhZGRpdGlvbmFsUHJvcGVydGllc/RndmVyc2lvbmMyLjBpaW50ZXJmYWNl9GlyZWxhdGlvbnOgamltcGxlbWVudHOCeD9ranpsNmh2ZnJidzZjOXJtMmxoa2sybXY1djh5dGF0djZicjd1eTR1Z2V3bWYweml2azh4bGUzcW1wYmt6Z2R4P2tqemw2aHZmcmJ3NmM1bmF3Y29uOHhtcXloMjcwb2xleDdnZ2JkcnBhbTZ3MHJwZXdrbjVqeXlibWt5YzVyd2tkZXNjcmlwdGlvbngxQSBnaXRjb2luIHBhc3Nwb3J0IHN0YW1wIHdpdGggYSBwcm92aWRlciBhbmQgaGFzaG9hY2NvdW50UmVsYXRpb26hZHR5cGVkbGlzdGZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYg=="}],"kjzl6hvfrbw6ca5ea8vya01k59zeeyetyqbl5ke2xwj83ztl1h0smyq5jkjzb7j":[{"jws":{"payload":"AXESIM-PQ1n98_D2ZyQ1QgjZvvfOne-wcgURLX0JBW9q-V2N","signatures":[{"signature":"zGYJ_sUjeYoRzome6vJ9w_3yN3zCiPiytE0qW-WXLNESaeFA1KwURjvCkKvVVlT4kmL3yANl1rgtwgGrl5O7AQ","protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURiI3o2TWtnVXpOWVY4SjF5dzQzd2o5SzJDYmhUWm9OMjV1WjZUSjNHaTRjWVZwWnlEYiJ9"}],"link":"bafyreigpr5bvt7pt6d3gojbviientpxxz2o67mdsauis27ijavxwv6k5ru"},"linkedBlock":"omRkYXRhqWRuYW1leBtHaXRjb2luUGFzc3BvcnRTdGFtcFdyYXBwZXJldmlld3OhYnZjo2R0eXBlcHJlbGF0aW9uRG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmM5cm0ybGhrazJtdjV2OHl0YXR2NmJyN3V5NHVnZXdtZjB6aXZrOHhsZTNxbXBia3pnZGhwcm9wZXJ0eWR2Y0lEZnNjaGVtYaZkdHlwZWZvYmplY3RlJGRlZnOhb0NlcmFtaWNTdHJlYW1JRKNkdHlwZWZzdHJpbmdldGl0bGVvQ2VyYW1pY1N0cmVhbUlEaW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkgWR2Y0lEanByb3BlcnRpZXOjZHZjSUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSURpaXNEZWxldGVkoWR0eXBlZ2Jvb2xlYW5paXNSZXZva2VkoWR0eXBlZ2Jvb2xlYW50YWRkaXRpb25hbFByb3BlcnRpZXP0Z3ZlcnNpb25jMi4waWludGVyZmFjZfRpcmVsYXRpb25zoWR2Y0lEomR0eXBlaGRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjOXJtMmxoa2sybXY1djh5dGF0djZicjd1eTR1Z2V3bWYweml2azh4bGUzcW1wYmt6Z2RqaW1wbGVtZW50c4F4P2tqemw2aHZmcmJ3NmM3ZjE0MmtvYjNwczUyM3RwZjVkazQ5cXd1cml0d3draW5tcW01aGswNWxjbXFtNHpwemtkZXNjcmlwdGlvbngbR2l0Y29pblBhc3Nwb3J0U3RhbXBXcmFwcGVyb2FjY291bnRSZWxhdGlvbqFkdHlwZWRsaXN0ZmhlYWRlcqNjc2VwZW1vZGVsZW1vZGVsUs4BBAFxcQsACWhtb2RlbC12MWtjb250cm9sbGVyc4F4OGRpZDprZXk6ejZNa2dVek5ZVjhKMXl3NDN3ajlLMkNiaFRab04yNXVaNlRKM0dpNGNZVnBaeURi"}]},"indices":{"kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw":[],"kjzl6hvfrbw6c73j1f2hikvr9fq31m1erw4ngur4g0ila46x2kbgx7g76xeom1w":[],"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd":[],"kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz":[],"kjzl6hvfrbw6c9x0b2jmkiuhwejywo1oi5ngz1jxzi61ydsoqq1hic6k382smsu":[{"fields":[{"path":["issuer"]}]},{"fields":[{"path":["issuanceDate"]}]},{"fields":[{"path":["expirationDate"]}]}],"kjzl6hvfrbw6ca5ea8vya01k59zeeyetyqbl5ke2xwj83ztl1h0smyq5jkjzb7j":[{"fields":[{"path":["vcID"]}]},{"fields":[{"path":["isDeleted"]}]},{"fields":[{"path":["isRevoked"]}]}]},"aliases":{"kjzl6hvfrbw6c73j1f2hikvr9fq31m1erw4ngur4g0ila46x2kbgx7g76xeom1w":"VerifiableCredentialProof","kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw":"GitcoinAttestation","kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd":"VerifiableCredential","kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz":"GitcoinPassportStampWrapperInterface","kjzl6hvfrbw6c9x0b2jmkiuhwejywo1oi5ngz1jxzi61ydsoqq1hic6k382smsu":"GitcoinPassportStamp","kjzl6hvfrbw6ca5ea8vya01k59zeeyetyqbl5ke2xwj83ztl1h0smyq5jkjzb7j":"GitcoinPassportStampWrapper"},"views":{"account":{},"root":{},"models":{"kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw":{},"kjzl6hvfrbw6c73j1f2hikvr9fq31m1erw4ngur4g0ila46x2kbgx7g76xeom1w":{},"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd":{},"kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz":{},"kjzl6hvfrbw6c9x0b2jmkiuhwejywo1oi5ngz1jxzi61ydsoqq1hic6k382smsu":{},"kjzl6hvfrbw6ca5ea8vya01k59zeeyetyqbl5ke2xwj83ztl1h0smyq5jkjzb7j":{}}},"commonEmbeds":["GitcoinPassportVcProof","EIP712Domain","EIP712ValueType","EIP712DomainDomain","EIP712DomainTypes","GitcoinPassportVcCredentialSubjectContext","GitcoinPassportVcCredentialSubject"]} diff --git a/schemas/models/Passports.json b/schemas/models/Passports.json deleted file mode 100644 index 3b4764afc9..0000000000 --- a/schemas/models/Passports.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Passport", - "description": "User Passport storing stamps", - "type": "object", - "properties": { - "issuanceDate": { - "type": "string", - "format": "date-time", - "title": "issuanceDate", - "maxLength": 30 - }, - "expiryDate": { - "type": "string", - "format": "date-time", - "title": "dateUpdated", - "maxLength": 30 - }, - "stamps": { - "type": "array", - "title": "stamps", - "items": { - "type": "object", - "title": "stampItem", - "properties": { - "provider": { - "type": "string" - }, - "credential": { - "$ref": "#/definitions/VerifiableCredential" - } - } - } - } - }, - "definitions": { - "VerifiableCredential": { - "type": "string", - "pattern": "^ceramic://.+(\\?version=.+)?" - } - }, - "additionalProperties": false -} diff --git a/schemas/models/VerifiableCredentials.json b/schemas/models/VerifiableCredentials.json deleted file mode 100644 index e99aad4940..0000000000 --- a/schemas/models/VerifiableCredentials.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VerifiableCredential", - "description": "A [[VerifiableCredential]] is fact-checking review/attestation of claims made about a credentialSubject", - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { "type": "string" }, - "@context": { - "type": "array", - "items": { - "type": "object" - } - }, - "hash": { "type": "string" }, - "provider": { "type": "string" }, - "address": { "type": "string" }, - "challenge": { "type": "string" } - } - }, - "issuer": { "type": "string" }, - "issuanceDate": { "type": "string" }, - "expirationDate": { "type": "string" }, - "proof": { - "type": "object", - "properties": { - "type": { "type": "string" }, - "proofPurpose": { "type": "string" }, - "verificationMethod": { "type": "string" }, - "created": { "type": "string" }, - "jws": { "type": "string" } - } - } - }, - "required": [ - "@context", - "type", - "credentialSubject", - "issuer", - "issuanceDate", - "expirationDate", - "proof" - ], - "additionalProperties": false -} diff --git a/schemas/models/index.js b/schemas/models/index.js deleted file mode 100644 index 4b969fd80f..0000000000 --- a/schemas/models/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Passport } from "./Passports.json"; -export { default as VerifiableCredentials } from "./VerifiableCredentials.json"; diff --git a/schemas/models/passportStamps.graphql b/schemas/models/passportStamps.graphql new file mode 100644 index 0000000000..8ae15e6304 --- /dev/null +++ b/schemas/models/passportStamps.graphql @@ -0,0 +1,148 @@ +interface GitcoinAttestation + @createModel(description: "Base class for any Gitcoin attestation") { + type: [String!]! @string(minLength: 1, maxLength: 1024) @list(maxLength: 1024) +} + +# interface VerifiableCredentialSubject +# @createModel(description: "A verifiable credential subject interface") { +# } + +interface VerifiableCredentialProof + @createModel(description: "A verifiable credential proof interface") { + type: String! @string(minLength: 1, maxLength: 1024) +} + +interface VerifiableCredential implements GitcoinAttestation + @createModel(description: "A verifiable credential interface") { + type: [String!]! @string(minLength: 1, maxLength: 1024) @list(maxLength: 1024) + issuer: String! @string(minLength: 1, maxLength: 1024) + issuanceDate: DateTime! + expirationDate: DateTime +} + +interface VerifiableCredential + @createModel(description: "A verifiable credential interface") { + type: [String!]! @string(minLength: 1, maxLength: 1024) @list(maxLength: 1024) + issuer: String! @string(minLength: 1, maxLength: 1024) + issuanceDate: DateTime! + expirationDate: DateTime +} + +interface GitcoinPassportStampWrapperInterface + @createModel( + accountRelation: LIST + description: "Interface for GitcoinPassportStampWrapper" + ) { + vcID: StreamID! @documentReference(model: "VerifiableCredential") + vc: VerifiableCredential! @relationDocument(property: "vcID") + + isDeleted: Boolean + isRevoked: Boolean +} + +type GitcoinPassportStampWrapper implements GitcoinPassportStampWrapperInterface + @createModel( + accountRelation: LIST + description: "GitcoinPassportStampWrapper" + ) + @createIndex(fields: [{ path: "vcID" }]) + @createIndex(fields: [{ path: "isDeleted" }]) + @createIndex(fields: [{ path: "isRevoked" }]) { + vcID: StreamID! @documentReference(model: "VerifiableCredential") + vc: VerifiableCredential! @relationDocument(property: "vcID") + + isDeleted: Boolean + isRevoked: Boolean +} + +# #### Create a type for the proof (this will most likely be reused) #### +type GitcoinPassportVcProof { + _context: String! @string(minLength: 1, maxLength: 1024) + # _context: [String!] + # @string(minLength: 1, maxLength: 1024) + # @list(maxLength: 1024) + type: String! @string(minLength: 1, maxLength: 1024) + proofPurpose: String! @string(minLength: 1, maxLength: 1024) + proofValue: String! @string(minLength: 1, maxLength: 1024) + verificationMethod: String! @string(minLength: 1, maxLength: 1024) + created: DateTime! + eip712Domain: EIP712Domain! +} + +type EIP712Domain { + primaryType: String! @string(minLength: 1, maxLength: 1024) + domain: EIP712DomainDomain! + types: EIP712DomainTypes! +} + +type EIP712ValueType { + name: String! @string(minLength: 1, maxLength: 1024) + type: String! @string(minLength: 1, maxLength: 1024) +} + +type EIP712DomainDomain { + # TODO: add optional fields ... ??? + name: String! @string(minLength: 1, maxLength: 1024) +} + +type EIP712DomainTypes { + _context: [EIP712ValueType] @list(maxLength: 1024) + CredentialStatus: [EIP712ValueType] @list(maxLength: 1024) # TODO: geri is this field required ??? + CredentialSubject: [EIP712ValueType] @list(maxLength: 1024) + Document: [EIP712ValueType] @list(maxLength: 1024) + EIP712Domain: [EIP712ValueType] @list(maxLength: 1024) + Proof: [EIP712ValueType] @list(maxLength: 1024) +} +############################################################################################ +# #### Implementation of GitcoinPassportStamp (the binary provider based one) #### +############################################################################################ +# Sample VC +# { +# "type": [ +# "VerifiableCredential", "GitcoinPassportStamp" +# ], +# "@context": [ +# "https://www.w3.org/2018/credentials/v1", "https://credentials.passport.gitcoin.co/" +# ], +# "issuer": "...", +# "issuanceDate": "2023-10-23T13:32:52.935Z", +# "expirationDate": "2024-01-21T13:32:52.935Z", +# "credentialSubject": { +# "id": "did:pkh:eip155:1:0x0000000000000000000000000000000000000000", +# "hash": "v0.0.0:12121212121212121212121212121212121212", +# "provider": "MyProvider", +# "@context": [...] +# }, +# "proof": {...} +# } + +type GitcoinPassportVcCredentialSubjectContext { + hash: String! @string(minLength: 1, maxLength: 1024) + provider: String! @string(minLength: 1, maxLength: 1024) +} + +type GitcoinPassportVcCredentialSubject { + id: String! @string(minLength: 1, maxLength: 1024) + provider: String! @string(minLength: 1, maxLength: 1024) + hash: String! @string(minLength: 1, maxLength: 1024) + _context: GitcoinPassportVcCredentialSubjectContext +} + +type GitcoinPassportStamp implements VerifiableCredential + @createModel( + accountRelation: LIST + description: "A gitcoin passport stamp with a provider and hash" + ) + @createIndex(fields: [{ path: "issuer" }]) + @createIndex(fields: [{ path: "issuanceDate" }]) + @createIndex(fields: [{ path: "expirationDate" }]) { + _context: [String!]! + @string(minLength: 1, maxLength: 1024) + @list(maxLength: 1024) + type: [String!]! @string(minLength: 1, maxLength: 1024) @list(maxLength: 1024) + issuer: String! @string(minLength: 1, maxLength: 1024) + issuanceDate: DateTime! + expirationDate: DateTime + credentialSubject: GitcoinPassportVcCredentialSubject! + proof: GitcoinPassportVcProof! +} diff --git a/schemas/package.json b/schemas/package.json index 9e0738ab83..5746a83a23 100644 --- a/schemas/package.json +++ b/schemas/package.json @@ -1,23 +1,40 @@ { "name": "@gitcoin/passport-schemas", "version": "1.0.0", - "private": true, + "license": "MIT", + "main": "dist/commonjs/index.js", + "directories": { + "src": "src", + "dist": "dist" + }, + "files": [ + "src", + "dist" + ], + "injectEnvironmentFiles": [ + ".env.yarn" + ], "scripts": { + "build": "tsc -b .", "clean": "rimraf node_modules", - "ceramic": "ceramic daemon", - "create-model": "node --experimental-json-modules ./scripts/create-model.mjs", - "publish-model": "node --experimental-json-modules ./scripts/publish-model.mjs" + "ceramic": "CERAMIC_ENABLE_EXPERIMENTAL_COMPOSE_DB=true ceramic daemon", + "graphql:server": "composedb graphql:server --ceramic-url=${CERAMIC_URL} --graphiql definitions/gitcoin-passport-stamps.json --did-private-key=${PRIVATE_KEY} --port=5005", + "models:create-composite": "composedb composite:create models/passportStamps.graphql --output=composites/gitcoin-passport-stamps-composite.json --did-private-key=${PRIVATE_KEY}", + "models:deploy-composite": "composedb composite:deploy composites/gitcoin-passport-stamps-composite.json --ceramic-url=${CERAMIC_URL} --did-private-key=${PRIVATE_KEY}", + "models:compile-composite": "composedb composite:compile composites/gitcoin-passport-stamps-composite.json src/definitions/ts/gitcoin-passport-stamps.ts --ceramic-url=${CERAMIC_URL} && composedb composite:compile composites/gitcoin-passport-stamps-composite.json src/definitions/json/gitcoin-passport-stamps.json --ceramic-url=${CERAMIC_URL}" }, "dependencies": { "@ceramicnetwork/http-client": "^2.2.1", - "dids": "^3.0.0", + "@composedb/types": "^0.6.0", + "dids": "^5.0.2", "dotenv": "^16.0.0", "key-did-provider-ed25519": "^2.0.0", - "key-did-resolver": "^2.0.0", + "key-did-resolver": "^4.0.0", "uint8arrays": "^3.0.0" }, "devDependencies": { "@ceramicnetwork/cli": "^2.3.1", + "@composedb/cli": "^0.6.1", "@glazed/devtools": "^0.2.0", "@types/node": "^16.11.6" }, diff --git a/schemas/scripts/create-model.mjs b/schemas/scripts/create-model.mjs deleted file mode 100644 index b87552f8d8..0000000000 --- a/schemas/scripts/create-model.mjs +++ /dev/null @@ -1,58 +0,0 @@ -import { writeFile } from "node:fs/promises"; -import { CeramicClient } from "@ceramicnetwork/http-client"; -import { ModelManager } from "@glazed/devtools"; -import { DID } from "dids"; -import { Ed25519Provider } from "key-did-provider-ed25519"; -import { getResolver } from "key-did-resolver"; -import { fromString } from "uint8arrays"; -import Passport from "../models/Passports.json"; -import VerifiableCredentials from "../models/VerifiableCredentials.json"; - -import dotenv from "dotenv"; -dotenv.config(); - -const models = [Passport, VerifiableCredentials]; - -let SEED = process.env.SEED; - -// The seed must be provided as an environment variable -if (!process.env.SEED) { - throw new Error("Missing SEED environment variable"); -} -const seed = fromString(SEED, "base16"); - -// Create and authenticate the DID -const did = new DID({ - provider: new Ed25519Provider(seed), - resolver: getResolver(), -}); -await did.authenticate(); - -// Connect to the local Ceramic node -const CERAMIC_CLIENT_URL = - process.env.CERAMIC_CLIENT_URL || "http://localhost:7007"; -const ceramic = new CeramicClient(CERAMIC_CLIENT_URL); -ceramic.did = did; - -// Create a manager for the model -const manager = new ModelManager(ceramic); - -// read in files from models directory -models.forEach(async (model) => { - // Pass in schema name and json - const schemaId = await manager.createSchema(model.title, model); - - // Create the definition using the created schema ID - await manager.createDefinition(model.title, { - name: model.title, - description: model.description, - schema: manager.getSchemaURL(schemaId), - }); - - await writeFile( - new URL("create-model.json", import.meta.url), - JSON.stringify(manager.toJSON()) - ); -}); - -console.log("Encoded model written to scripts/create-model.json file"); diff --git a/schemas/scripts/publish-model.json b/schemas/scripts/publish-model.json deleted file mode 100644 index 31eaed1317..0000000000 --- a/schemas/scripts/publish-model.json +++ /dev/null @@ -1 +0,0 @@ -{"definitions":{"Passport":"kjzl6cwe1jw148h1e14jb5fkf55xmqhmyorp29r9cq356c7ou74ulowf8czjlzs","VerifiableCredential":"kjzl6cwe1jw14as2rdgtkfydxiqafbt7db3sld1t90hafem09omybsropfquar0"},"schemas":{"Passport":"ceramic://k3y52l7qbv1frydjk40z9wgf1snwf6axdpc32svgu2jpxrmptldj8rroq2n6a2a68","VerifiableCredential":"ceramic://k3y52l7qbv1frynp3s4v5z0a9wrolxl7kjmbvj19jl9mck442dbtbnwqes5irx3pc"},"tiles":{}} \ No newline at end of file diff --git a/schemas/scripts/publish-model.mjs b/schemas/scripts/publish-model.mjs deleted file mode 100644 index 372d5fe8e5..0000000000 --- a/schemas/scripts/publish-model.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { readFile, writeFile } from "node:fs/promises"; -import { CeramicClient } from "@ceramicnetwork/http-client"; -import { ModelManager } from "@glazed/devtools"; - -import dotenv from "dotenv"; -dotenv.config(); - -// Connect to the local Ceramic node -const CERAMIC_CLIENT_URL = - process.env.CERAMIC_CLIENT_URL || "http://localhost:7007"; -const ceramic = new CeramicClient(CERAMIC_CLIENT_URL); - -// Load and create a manager for the model -const bytes = await readFile(new URL("create-model.json", import.meta.url)); -const manager = ModelManager.fromJSON(ceramic, JSON.parse(bytes.toString())); - -// Write model to JSON file -const model = await manager.toPublished(); -await writeFile( - new URL("publish-model.json", import.meta.url), - JSON.stringify(model) -); - -console.log("Model written to publish-model.json file:", model); diff --git a/schemas/src/definitions/json/gitcoin-passport-stamps.json b/schemas/src/definitions/json/gitcoin-passport-stamps.json new file mode 100644 index 0000000000..0c08082ea1 --- /dev/null +++ b/schemas/src/definitions/json/gitcoin-passport-stamps.json @@ -0,0 +1 @@ +{"models":{"GitcoinAttestation":{"interface":true,"implements":[],"id":"kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw","accountRelation":{"type":"none"}},"VerifiableCredentialProof":{"interface":true,"implements":[],"id":"kjzl6hvfrbw6c73j1f2hikvr9fq31m1erw4ngur4g0ila46x2kbgx7g76xeom1w","accountRelation":{"type":"none"}},"VerifiableCredential":{"interface":true,"implements":["kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw"],"id":"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","accountRelation":{"type":"none"}},"GitcoinPassportStampWrapperInterface":{"interface":true,"implements":[],"id":"kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz","accountRelation":{"type":"none"}},"GitcoinPassportStamp":{"interface":false,"implements":["kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw"],"id":"kjzl6hvfrbw6c9x0b2jmkiuhwejywo1oi5ngz1jxzi61ydsoqq1hic6k382smsu","accountRelation":{"type":"list"}},"GitcoinPassportStampWrapper":{"interface":false,"implements":["kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz"],"id":"kjzl6hvfrbw6ca5ea8vya01k59zeeyetyqbl5ke2xwj83ztl1h0smyq5jkjzb7j","accountRelation":{"type":"list"}}},"objects":{"GitcoinAttestation":{"type":{"type":"list","required":true,"item":{"type":"string","required":true}}},"VerifiableCredentialProof":{"type":{"type":"string","required":true}},"VerifiableCredential":{"type":{"type":"list","required":true,"item":{"type":"string","required":true}},"issuer":{"type":"string","required":true},"issuanceDate":{"type":"datetime","required":true},"expirationDate":{"type":"datetime","required":false}},"GitcoinPassportStampWrapperInterface":{"vcID":{"type":"streamid","required":true},"isDeleted":{"type":"boolean","required":false},"isRevoked":{"type":"boolean","required":false},"vc":{"type":"view","viewType":"relation","relation":{"source":"document","model":"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","property":"vcID"}}},"EIP712ValueType":{"name":{"type":"string","required":true},"type":{"type":"string","required":true}},"EIP712DomainTypes":{"Proof":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"Document":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"_context":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"EIP712Domain":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"CredentialStatus":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"CredentialSubject":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}}},"EIP712DomainDomain":{"name":{"type":"string","required":true}},"EIP712Domain":{"types":{"type":"reference","refType":"object","refName":"EIP712DomainTypes","required":true},"domain":{"type":"reference","refType":"object","refName":"EIP712DomainDomain","required":true},"primaryType":{"type":"string","required":true}},"GitcoinPassportVcProof":{"type":{"type":"string","required":true},"created":{"type":"datetime","required":true},"_context":{"type":"string","required":true},"proofValue":{"type":"string","required":true},"eip712Domain":{"type":"reference","refType":"object","refName":"EIP712Domain","required":true},"proofPurpose":{"type":"string","required":true},"verificationMethod":{"type":"string","required":true}},"GitcoinPassportVcCredentialSubjectContext":{"hash":{"type":"string","required":true},"provider":{"type":"string","required":true}},"GitcoinPassportVcCredentialSubject":{"id":{"type":"string","required":true},"hash":{"type":"string","required":true},"_context":{"type":"reference","refType":"object","refName":"GitcoinPassportVcCredentialSubjectContext","required":false},"provider":{"type":"string","required":true}},"GitcoinPassportStamp":{"type":{"type":"list","required":true,"item":{"type":"string","required":true}},"proof":{"type":"reference","refType":"object","refName":"GitcoinPassportVcProof","required":true},"issuer":{"type":"string","required":true,"indexed":true},"_context":{"type":"list","required":true,"item":{"type":"string","required":true}},"issuanceDate":{"type":"datetime","required":true,"indexed":true},"expirationDate":{"type":"datetime","required":false,"indexed":true},"credentialSubject":{"type":"reference","refType":"object","refName":"GitcoinPassportVcCredentialSubject","required":true}},"GitcoinPassportStampWrapper":{"vcID":{"type":"streamid","required":true,"indexed":true},"isDeleted":{"type":"boolean","required":false,"indexed":true},"isRevoked":{"type":"boolean","required":false,"indexed":true},"vc":{"type":"view","viewType":"relation","relation":{"source":"document","model":"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","property":"vcID"}}}},"enums":{},"accountData":{"gitcoinAttestationList":{"type":"connection","name":"GitcoinAttestation"},"verifiableCredentialProofList":{"type":"connection","name":"VerifiableCredentialProof"},"verifiableCredentialList":{"type":"connection","name":"VerifiableCredential"},"gitcoinPassportStampWrapperInterfaceList":{"type":"connection","name":"GitcoinPassportStampWrapperInterface"},"gitcoinPassportStampList":{"type":"connection","name":"GitcoinPassportStamp"},"gitcoinPassportStampWrapperList":{"type":"connection","name":"GitcoinPassportStampWrapper"}}} diff --git a/schemas/src/definitions/ts/gitcoin-passport-stamps.ts b/schemas/src/definitions/ts/gitcoin-passport-stamps.ts new file mode 100644 index 0000000000..d646b93fa9 --- /dev/null +++ b/schemas/src/definitions/ts/gitcoin-passport-stamps.ts @@ -0,0 +1,3 @@ +// This is an auto-generated file, do not edit manually +import type { RuntimeCompositeDefinition } from '@composedb/types' +export const definition: RuntimeCompositeDefinition = {"models":{"GitcoinAttestation":{"interface":true,"implements":[],"id":"kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw","accountRelation":{"type":"none"}},"VerifiableCredentialProof":{"interface":true,"implements":[],"id":"kjzl6hvfrbw6c73j1f2hikvr9fq31m1erw4ngur4g0ila46x2kbgx7g76xeom1w","accountRelation":{"type":"none"}},"VerifiableCredential":{"interface":true,"implements":["kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw"],"id":"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","accountRelation":{"type":"none"}},"GitcoinPassportStampWrapperInterface":{"interface":true,"implements":[],"id":"kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz","accountRelation":{"type":"none"}},"GitcoinPassportStamp":{"interface":false,"implements":["kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","kjzl6hvfrbw6c5nawcon8xmqyh270olex7ggbdrpam6w0rpewkn5jyybmkyc5rw"],"id":"kjzl6hvfrbw6c9x0b2jmkiuhwejywo1oi5ngz1jxzi61ydsoqq1hic6k382smsu","accountRelation":{"type":"list"}},"GitcoinPassportStampWrapper":{"interface":false,"implements":["kjzl6hvfrbw6c7f142kob3ps523tpf5dk49qwuritwwkinmqm5hk05lcmqm4zpz"],"id":"kjzl6hvfrbw6ca5ea8vya01k59zeeyetyqbl5ke2xwj83ztl1h0smyq5jkjzb7j","accountRelation":{"type":"list"}}},"objects":{"GitcoinAttestation":{"type":{"type":"list","required":true,"item":{"type":"string","required":true}}},"VerifiableCredentialProof":{"type":{"type":"string","required":true}},"VerifiableCredential":{"type":{"type":"list","required":true,"item":{"type":"string","required":true}},"issuer":{"type":"string","required":true},"issuanceDate":{"type":"datetime","required":true},"expirationDate":{"type":"datetime","required":false}},"GitcoinPassportStampWrapperInterface":{"vcID":{"type":"streamid","required":true},"isDeleted":{"type":"boolean","required":false},"isRevoked":{"type":"boolean","required":false},"vc":{"type":"view","viewType":"relation","relation":{"source":"document","model":"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","property":"vcID"}}},"EIP712ValueType":{"name":{"type":"string","required":true},"type":{"type":"string","required":true}},"EIP712DomainTypes":{"Proof":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"Document":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"_context":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"EIP712Domain":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"CredentialStatus":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}},"CredentialSubject":{"type":"list","required":false,"item":{"type":"reference","refType":"object","refName":"EIP712ValueType","required":false}}},"EIP712DomainDomain":{"name":{"type":"string","required":true}},"EIP712Domain":{"types":{"type":"reference","refType":"object","refName":"EIP712DomainTypes","required":true},"domain":{"type":"reference","refType":"object","refName":"EIP712DomainDomain","required":true},"primaryType":{"type":"string","required":true}},"GitcoinPassportVcProof":{"type":{"type":"string","required":true},"created":{"type":"datetime","required":true},"_context":{"type":"string","required":true},"proofValue":{"type":"string","required":true},"eip712Domain":{"type":"reference","refType":"object","refName":"EIP712Domain","required":true},"proofPurpose":{"type":"string","required":true},"verificationMethod":{"type":"string","required":true}},"GitcoinPassportVcCredentialSubjectContext":{"hash":{"type":"string","required":true},"provider":{"type":"string","required":true}},"GitcoinPassportVcCredentialSubject":{"id":{"type":"string","required":true},"hash":{"type":"string","required":true},"_context":{"type":"reference","refType":"object","refName":"GitcoinPassportVcCredentialSubjectContext","required":false},"provider":{"type":"string","required":true}},"GitcoinPassportStamp":{"type":{"type":"list","required":true,"item":{"type":"string","required":true}},"proof":{"type":"reference","refType":"object","refName":"GitcoinPassportVcProof","required":true},"issuer":{"type":"string","required":true,"indexed":true},"_context":{"type":"list","required":true,"item":{"type":"string","required":true}},"issuanceDate":{"type":"datetime","required":true,"indexed":true},"expirationDate":{"type":"datetime","required":false,"indexed":true},"credentialSubject":{"type":"reference","refType":"object","refName":"GitcoinPassportVcCredentialSubject","required":true}},"GitcoinPassportStampWrapper":{"vcID":{"type":"streamid","required":true,"indexed":true},"isDeleted":{"type":"boolean","required":false,"indexed":true},"isRevoked":{"type":"boolean","required":false,"indexed":true},"vc":{"type":"view","viewType":"relation","relation":{"source":"document","model":"kjzl6hvfrbw6c9rm2lhkk2mv5v8ytatv6br7uy4ugewmf0zivk8xle3qmpbkzgd","property":"vcID"}}}},"enums":{},"accountData":{"gitcoinAttestationList":{"type":"connection","name":"GitcoinAttestation"},"verifiableCredentialProofList":{"type":"connection","name":"VerifiableCredentialProof"},"verifiableCredentialList":{"type":"connection","name":"VerifiableCredential"},"gitcoinPassportStampWrapperInterfaceList":{"type":"connection","name":"GitcoinPassportStampWrapperInterface"},"gitcoinPassportStampList":{"type":"connection","name":"GitcoinPassportStamp"},"gitcoinPassportStampWrapperList":{"type":"connection","name":"GitcoinPassportStampWrapper"}}} \ No newline at end of file diff --git a/schemas/src/index.ts b/schemas/src/index.ts new file mode 100644 index 0000000000..7b64f0dc6b --- /dev/null +++ b/schemas/src/index.ts @@ -0,0 +1 @@ +export * from "./definitions/ts/gitcoin-passport-stamps"; diff --git a/schemas/tsconfig.json b/schemas/tsconfig.json new file mode 100644 index 0000000000..0e2e90d71c --- /dev/null +++ b/schemas/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.settings.json", + "compilerOptions": { + "module": "commonjs", + "esModuleInterop": true, + "declaration": true, + "allowSyntheticDefaultImports": true, + "target": "ES2022", + "noImplicitAny": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "dist/commonjs", + "allowJs": true, + "baseUrl": "src", + "skipLibCheck": true + }, + "include": ["src/**/*"] +} diff --git a/types/.eslintrc.js b/types/.eslintrc.js index e57a23082d..b367980299 100644 --- a/types/.eslintrc.js +++ b/types/.eslintrc.js @@ -35,6 +35,7 @@ module.exports = { "@typescript-eslint/no-misused-promises": 1, "@typescript-eslint/no-floating-promises": 1, "@typescript-eslint/no-unsafe-assignment": "warn", + "@typescript-eslint/no-explicit-any": "warn", }, settings: { "import/resolver": { diff --git a/types/package.json b/types/package.json index 5963b1117e..b4698a7105 100644 --- a/types/package.json +++ b/types/package.json @@ -13,6 +13,6 @@ }, "devDependencies": { "tslint": "^6.1.3", - "typescript": "~4.6.3" + "typescript": "^5.3.3" } } diff --git a/types/src/index.d.ts b/types/src/index.d.ts index 4fba0c185d..6e4af088e2 100644 --- a/types/src/index.d.ts +++ b/types/src/index.d.ts @@ -21,7 +21,7 @@ export type DIDKitLib = { } & { [key: string]: any }; // eslint-disable-line @typescript-eslint/no-explicit-any // rough outline of a VerifiableCredential -export type VerifiableCredential = { +export type VerifiableEd25519Credential = { "@context": string[]; type: string[]; credentialSubject: { @@ -36,12 +36,21 @@ export type VerifiableCredential = { issuer: string; issuanceDate: string; expirationDate: string; - proof: { + proof?: { type: string; proofPurpose: string; verificationMethod: string; created: string; jws: string; + eip712Domain?: { + primaryType: string; + types: { + [key: string]: { + name: string; + type: string; + }[]; + }; + }; }; }; @@ -82,6 +91,47 @@ export type VerifiableEip712Credential = { }; }; +/// Define a type for the credential as it is stored in compose +/// This will be identical to VerifiableEip712Credential, with some characters like `@` escaped +// being changed to `_` +export type VerifiableEip712CredentialComposeEncoded = { + _context: string[]; + type: string[]; + credentialSubject: { + id: string; + _context: { [key: string]: string }; + hash?: string; + provider?: string; + address?: string; + challenge?: string; + metaPointer?: string; + }; + issuer: string; + issuanceDate: string; + expirationDate: string; + proof: { + _context: string; + type: string; + proofPurpose: string; + proofValue: string; + verificationMethod: string; + created: string; + eip712Domain: { + domain: { + name: string; + }; + primaryType: string; + types: { + [key: string]: { + name: string; + type: string; + }[]; + }; + }; + }; +}; +export type VerifiableCredential = VerifiableEd25519Credential | VerifiableEip712Credential; + // A ProviderContext is used as a temporary storage so that providers can can share data // between them, in case multiple VCs are requests in one http request export type ProviderContext = { @@ -198,11 +248,8 @@ export type VerifiableCredentialRecord = { }; export type Stamp = { - // recordUserName: string; - // credentialIssuer: string; - streamId?: string; // Must not be undefined for stamps loaded from ceramic provider: PROVIDER_ID; - credential: VerifiableCredential; + credential: VerifiableEd25519Credential | VerifiableEip712Credential; }; // StampPatch should have "provider" mandatory and "credential" optional @@ -222,7 +269,8 @@ export type PassportLoadStatus = | "PassportCacaoError"; export type PassportLoadErrorDetails = { - stampStreamIds: string[]; + stampStreamIds?: string[]; + messages?: string[]; }; export type PassportLoadResponse = { diff --git a/types/tsconfig.json b/types/tsconfig.json index 07d3c48414..34a4eea1e3 100644 --- a/types/tsconfig.json +++ b/types/tsconfig.json @@ -1,11 +1,14 @@ { "extends": "../tsconfig.settings.json", "compilerOptions": { + "target": "ES2022", "composite": true, "declaration": true, "rootDir": ".", "types": ["node"], - "outDir": "/tmp/tsc-output" + "outDir": "/tmp/tsc-output", + "skipLibCheck": true, + "noImplicitAny": true }, "include": ["src"] } diff --git a/yarn.lock b/yarn.lock index e603badfef..fabff942c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41,11 +41,21 @@ "@ceramicnetwork/rpc-window" "^0.6.0" caip "^1.0.0" +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@adobe/css-tools@^4.3.1": version "4.3.1" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.1.tgz#abfccb8ca78075a2b6187345c26243c1a0842f28" integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + "@adraffy/ens-normalize@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" @@ -1193,14 +1203,6 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime-corejs3@^7.10.2": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz#f0cbbe7edda7c4109cd253bb1dee99aba4594ad9" - integrity sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g== - dependencies: - core-js-pure "^3.25.1" - regenerator-runtime "^0.13.4" - "@babel/runtime@7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" @@ -1208,13 +1210,20 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.0", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.0", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.9.2": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.7.2": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" + integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.8.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e" @@ -1295,7 +1304,20 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@ceramicnetwork/3id-did-resolver@^2.0.0", "@ceramicnetwork/3id-did-resolver@^2.1.7": +"@ceramicnetwork/3id-did-resolver@^2.0.0": + version "2.32.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/3id-did-resolver/-/3id-did-resolver-2.32.0.tgz#c3d62ae072435483645e17b8903bcb0632968138" + integrity sha512-9jnibtXIYCPUbS+FlBakh5ghUt7/ItGn2nuRfw8kMGdO4JsfN3jVjLHyah1b2X3AVsGG+V1k1CYH3otgdfvftA== + dependencies: + "@ceramicnetwork/common" "^2.39.0" + "@ceramicnetwork/stream-tile" "^2.35.0" + "@ceramicnetwork/streamid" "^2.17.0" + cross-fetch "^3.1.4" + least-recent "^1.0.3" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@ceramicnetwork/3id-did-resolver@^2.1.7": version "2.1.7" resolved "https://registry.yarnpkg.com/@ceramicnetwork/3id-did-resolver/-/3id-did-resolver-2.1.7.tgz#7a77b8e8b7cda908f10faddec0130e72ef87253e" integrity sha512-EL2GfCnC61zFW52i3XM6PBK1L+d7eA3ZFyWmMNHH30/fwBfmC0egmU2lbaCL14NRBM3y0jAhXevayGRg0vpXMw== @@ -1308,7 +1330,51 @@ multiformats "^9.5.8" uint8arrays "^3.0.0" -"@ceramicnetwork/blockchain-utils-linking@^2.0.0", "@ceramicnetwork/blockchain-utils-linking@^2.0.11", "@ceramicnetwork/blockchain-utils-linking@^2.0.7": +"@ceramicnetwork/3id-did-resolver@^3.0.5", "@ceramicnetwork/3id-did-resolver@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/3id-did-resolver/-/3id-did-resolver-3.2.0.tgz#9c972e4298fa507eb1e2581c1c81175e30925107" + integrity sha512-1rXN22GrmXnSBIDIkYGuoxN3DLUiPJi/CEhL9sF+Ejx1GDI46aLJvbVZJv1YmVDTFm+kxPehrx+6l1hT+9PK3A== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/stream-tile" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + least-recent "^1.0.3" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@ceramicnetwork/anchor-listener@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/anchor-listener/-/anchor-listener-2.2.0.tgz#809d8667aeab3c1e78a15abb3925f966fd42b7cd" + integrity sha512-e23tJHxl60+s4imAUY6a6dPeXp08tGvYLPwkxg+tCPHZmtB/aQ+/exbbarwTVpERtPgGrdCnh7ItiuDHNBjR7Q== + dependencies: + "@ceramicnetwork/anchor-utils" "^2.2.0" + "@ethersproject/providers" "^5.5.1" + rxjs "^7.5.2" + +"@ceramicnetwork/anchor-utils@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/anchor-utils/-/anchor-utils-2.2.0.tgz#b0ee10a0ed0d5165e991c3471c3ec142580e4daa" + integrity sha512-fpEuR4FM1cuttcQz/8z8ec+bauNTlqDjSLUuDvnT0EHjMSrBKzk/0BiyuBM4jp76EPYK/OiAqv5+D/hRe1dQJQ== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ethersproject/abi" "^5.7.0" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@ceramicnetwork/blockchain-utils-linking@^2.0.0", "@ceramicnetwork/blockchain-utils-linking@^2.0.12": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-linking/-/blockchain-utils-linking-2.23.0.tgz#dc6fd86b6d6f919f89cb5eda8cae26c097387130" + integrity sha512-3GA2uZsR9u84Ebs6qszfiY1G1TMsB69A5ApfTzrSSWozvwKMRGj1UqKf55kVVHNLYAqjgtyyY0MWkJUeANs6fA== + dependencies: + "@ceramicnetwork/streamid" "^2.17.0" + "@didtools/cacao" "^2.1.0" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + caip "~1.1.0" + near-api-js "^0.44.2" + uint8arrays "^4.0.3" + +"@ceramicnetwork/blockchain-utils-linking@^2.0.11": version "2.0.11" resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-linking/-/blockchain-utils-linking-2.0.11.tgz#e83223783c27e54a03d06444796c04a4f4bc425d" integrity sha512-vyatJmevt5zgKJoo5Evdq3CLtQsj7k0nZmjN5mNMDhw5kMmP3AFkcJYTXi3/3TMNUUMyj6zUweDWQdiyHIaa9w== @@ -1321,6 +1387,19 @@ near-api-js "^0.44.2" uint8arrays "^3.0.0" +"@ceramicnetwork/blockchain-utils-linking@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-linking/-/blockchain-utils-linking-3.2.0.tgz#454d8390b7c9537c4021b9f4aba649ec61730c9c" + integrity sha512-MykIDuHTc6klDfkWnzljhhsMMYRD+ECSl8QxzVIga7MsavZJaCXgHq27bMa+ACfD0ynjHy2yvD8AyKDA/gD7IA== + dependencies: + "@ceramicnetwork/streamid" "^3.2.0" + "@didtools/cacao" "^2.1.0" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + caip "~1.1.0" + near-api-js "^0.44.2" + uint8arrays "^4.0.3" + "@ceramicnetwork/blockchain-utils-validation@^2.0.12": version "2.0.12" resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-validation/-/blockchain-utils-validation-2.0.12.tgz#4b89ecc745d07253398743d6b50a947f6c9cec6b" @@ -1342,6 +1421,26 @@ tweetnacl "^1.0.3" uint8arrays "^3.0.0" +"@ceramicnetwork/blockchain-utils-validation@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-validation/-/blockchain-utils-validation-3.2.0.tgz#14a47c40527b19a7d40b810869b55db3404a7dd0" + integrity sha512-4vx07R2bgxs7B3XDtIddjqOpb3bvTWXFFyUAXKnywPRiGxVXHR+sZM9c36s2wa0Bq0kYxefGhEv08T+IVzTwpw== + dependencies: + "@ceramicnetwork/blockchain-utils-linking" "^3.2.0" + "@ceramicnetwork/common" "^3.2.0" + "@ethersproject/contracts" "^5.5.0" + "@ethersproject/providers" "^5.5.1" + "@ethersproject/wallet" "^5.5.0" + "@noble/curves" "^1.1.0" + "@polkadot/util-crypto" "^7.0.2" + "@smontero/eosio-signing-tools" "^0.0.6" + "@taquito/utils" "^11.2.0" + "@tendermint/sig" "^0.6.0" + "@zondax/filecoin-signing-tools" "^0.18.2" + caip "~1.1.0" + tweetnacl "^1.0.3" + uint8arrays "^4.0.3" + "@ceramicnetwork/cli@^2.3.1": version "2.6.1" resolved "https://registry.yarnpkg.com/@ceramicnetwork/cli/-/cli-2.6.1.tgz#77a5199a23206f83ba9999d91a20e7344a781fd1" @@ -1383,25 +1482,70 @@ typedjson "^1.8.0" uint8arrays "^3.0.0" -"@ceramicnetwork/common@^1.11.0", "@ceramicnetwork/common@^1.8.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-1.11.0.tgz#f195ef61de73366a64d775496c9328660e9a30a2" - integrity sha512-UU7/POxSl+Wf5f/Wi/ISxhPqaHKqJ4crvVL9/I4FrnDPEqsUPasBwuo5alN6T2zz+AMDksc+bk1FXKLKKY9VRg== +"@ceramicnetwork/cli@^3.0.5", "@ceramicnetwork/cli@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/cli/-/cli-3.2.0.tgz#8523fe7e896dc1b21957d89ac32da587d435c153" + integrity sha512-tQ1vo37NPiYKOrLrJ4wGh4MwGEuMNQuedA6HeLpWuDzrM3xO3RxRNPhfD2rmbKN9xzIRphJ+TXRQySOkz37jLQ== dependencies: - "@ceramicnetwork/streamid" "^1.3.9" - "@overnightjs/logger" "1.2.1" - abort-controller "^3.0.0" - caip "~1.0.0" - cids "~1.1.6" - colors "1.3.3" - cross-fetch "^3.1.4" - flat "^5.0.2" - lodash.clonedeep "^4.5.0" - logfmt "^1.3.2" - rxjs "^7.0.0" - uint8arrays "^2.0.5" + "@awaitjs/express" "^0.9.0" + "@ceramicnetwork/3id-did-resolver" "^3.2.0" + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/core" "^3.2.0" + "@ceramicnetwork/http-client" "^3.2.0" + "@ceramicnetwork/indexing" "^2.2.0" + "@ceramicnetwork/ipfs-daemon" "^3.2.0" + "@ceramicnetwork/logger" "^3.2.0" + "@ceramicnetwork/observability" "^1.4.1" + "@ceramicnetwork/stream-tile" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@stablelib/random" "^1.0.1" + aws-sdk "^2.1049.0" + commander "^9.4.1" + cors "^2.8.5" + did-resolver "^4.0.1" + dids "^4.0.0" + express "^4.17.2" + http-status-codes "^2.2.0" + ipfs-http-client "^60.0.0" + key-did-provider-ed25519 "^3.0.2" + key-did-resolver "^3.0.0" + levelup "^5.1.1" + merge-options "^3.0.4" + morgan "^1.10.0" + p-queue "7.3.0" + picocolors "^1.0.0" + pkh-did-resolver "^1.2.0" + reflect-metadata "^0.1.13" + s3leveldown "^2.2.2" + stream-to-array "^2.3.0" + typedjson "^1.8.0" + uint8arrays "^4.0.3" + +"@ceramicnetwork/codecs@^1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/codecs/-/codecs-1.14.0.tgz#1cd2c97029d14491dea75a77199bf845903e1c0b" + integrity sha512-UElVFFIHWHGc/cr5pZxQTfd7DJIf95cFtADTFQ+O78c+X+OOO323F40KLCP+vuwooyiVbGArHiaU5WsrHCz7bg== + dependencies: + "@ceramicnetwork/streamid" "^2.17.0" + cartonne "^2.1.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + multiformats "^11.0.1" + uint8arrays "^4.0.3" -"@ceramicnetwork/common@^2.0.0", "@ceramicnetwork/common@^2.0.0-rc.0", "@ceramicnetwork/common@^2.2.1", "@ceramicnetwork/common@^2.6.0": +"@ceramicnetwork/codecs@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/codecs/-/codecs-2.2.0.tgz#2c905bc2c0c03bbc71cd9fc62be5429c5c367de1" + integrity sha512-HRDdJN7G954F7KOZ117WxhYUC9pGoUyBc6cEr14MLhhxA9S2+bYYOKZ1VAaTFawF1FB6rQkHIT37IYPVo0tI0A== + dependencies: + "@ceramicnetwork/streamid" "^3.2.0" + cartonne "^2.1.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@ceramicnetwork/common@^2.0.0", "@ceramicnetwork/common@^2.0.0-rc.0", "@ceramicnetwork/common@^2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-2.6.0.tgz#926e055cb3f768f7ef2d4c5b9db5cd096cb7d7a4" integrity sha512-8xnujYalkOB5bzTVSDjyibYWOHlc5Yc8VOhauwWQWXJeHr+FiiLHdQ6O5/Hxhw+cpwf2CfEALLc9EDKvoZAlpg== @@ -1420,15 +1564,18 @@ rxjs "^7.5.2" uint8arrays "^3.0.0" -"@ceramicnetwork/common@^2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-2.16.0.tgz#a7bcd0894cda544aea1fecc01f738faeefd0656d" - integrity sha512-QI6LCS9zeTbeyIYCVl1vVrouuyebJ9XVx7u5u9HxU39jsdpo3tuigxXY9OUb0f98ujQ3XqqIi563Ldt8ELdodg== - dependencies: - "@ceramicnetwork/streamid" "^2.9.0" - "@didtools/cacao" "^1.0.0" - "@didtools/pkh-ethereum" "^0.0.1" - "@didtools/pkh-solana" "^0.0.1" +"@ceramicnetwork/common@^2.39.0": + version "2.39.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-2.39.0.tgz#7c1349b2aa5892bef74569504d6686c4a8aaff7c" + integrity sha512-NB/6XzPqualWK5Kyti664VHhJug3Z8XDFNpYxM0dLz13lgtNnLWUt6xFG0I7chB0ecbhexanKRE/dh7Ltjczvw== + dependencies: + "@ceramicnetwork/codecs" "^1.14.0" + "@ceramicnetwork/streamid" "^2.17.0" + "@didtools/cacao" "^2.1.0" + "@didtools/pkh-ethereum" "^0.1.0" + "@didtools/pkh-solana" "^0.1.0" + "@didtools/pkh-stacks" "^0.1.0" + "@didtools/pkh-tezos" "^0.2.1" "@stablelib/random" "^1.0.1" caip "~1.1.0" cross-fetch "^3.1.4" @@ -1437,9 +1584,32 @@ jet-logger "1.2.2" lodash.clonedeep "^4.5.0" logfmt "^1.3.2" - multiformats "^9.5.8" + multiformats "^11.0.1" rxjs "^7.5.2" - uint8arrays "^3.0.0" + uint8arrays "^4.0.3" + +"@ceramicnetwork/common@^3.0.5", "@ceramicnetwork/common@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-3.2.0.tgz#06a6fa9ac764e3138c32ceadc731b90448fde62c" + integrity sha512-3ql9LN/AXO2VxosnNzTeaMo+JRQpCclwFhyfWrpH0okLdiB1CeDDOkiKNOvz+6ZtYql1NpIby1/Ag5ovtxgQjg== + dependencies: + "@ceramicnetwork/codecs" "^2.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@didtools/cacao" "^2.1.0" + "@didtools/pkh-ethereum" "^0.1.0" + "@didtools/pkh-solana" "^0.1.0" + "@didtools/pkh-stacks" "^0.1.0" + "@didtools/pkh-tezos" "^0.2.1" + "@stablelib/random" "^1.0.1" + caip "~1.1.0" + flat "^5.0.2" + it-first "^1.0.7" + jet-logger "1.2.2" + lodash.clonedeep "^4.5.0" + logfmt "^1.3.2" + multiformats "^11.0.1" + rxjs "^7.5.2" + uint8arrays "^4.0.3" "@ceramicnetwork/core@^2.9.0": version "2.9.0" @@ -1482,7 +1652,76 @@ typescript-memoize "^1.1.0" uint8arrays "^3.0.0" -"@ceramicnetwork/http-client@^2.0.0", "@ceramicnetwork/http-client@^2.2.1", "@ceramicnetwork/http-client@^2.3.4": +"@ceramicnetwork/core@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/core/-/core-3.2.0.tgz#60ea9913679b9854fb6f2b5aa7bd358fa8ab52fd" + integrity sha512-5B/5KgwuR+DBITD/DlZ7j7SD3RfqxbnMDdl++p0pE3NozKZZu06dSeCqCI7+6aESvrq1SPH+neYnFMhg+jx7og== + dependencies: + "@ceramicnetwork/anchor-listener" "^2.2.0" + "@ceramicnetwork/anchor-utils" "^2.2.0" + "@ceramicnetwork/codecs" "^2.2.0" + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/indexing" "^2.2.0" + "@ceramicnetwork/ipfs-topology" "^3.2.0" + "@ceramicnetwork/job-queue" "^2.2.0" + "@ceramicnetwork/observability" "^1.4.1" + "@ceramicnetwork/pinning-aggregation" "^3.2.0" + "@ceramicnetwork/pinning-ipfs-backend" "^3.2.0" + "@ceramicnetwork/stream-caip10-link" "^3.2.0" + "@ceramicnetwork/stream-caip10-link-handler" "^3.2.0" + "@ceramicnetwork/stream-model" "^2.2.0" + "@ceramicnetwork/stream-model-handler" "^2.2.0" + "@ceramicnetwork/stream-model-instance" "^2.2.0" + "@ceramicnetwork/stream-model-instance-handler" "^2.2.0" + "@ceramicnetwork/stream-tile" "^3.2.0" + "@ceramicnetwork/stream-tile-handler" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@ceramicnetwork/wasm-bloom-filter" "^0.1.0" + "@datastructures-js/priority-queue" "^6.1.0" + "@ethersproject/providers" "^5.5.1" + "@ipld/dag-cbor" "^7.0.0" + "@scarf/scarf" "^1.1.1" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + "@stablelib/uuid" "^1.0.1" + ajv "^8.8.2" + ajv-formats "^2.1.1" + await-semaphore "^0.1.3" + cartonne "^2.1.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + dids "^4.0.0" + it-all "^3.0.1" + it-batch "^3.0.1" + it-first "^3.0.1" + knex "^2.1.0" + least-recent "^1.0.3" + level-ts "^2.1.0" + lodash.clonedeep "^4.5.0" + mapmoize "^1.2.1" + multiformats "^11.0.1" + p-queue "7.3.0" + pg "^8.7.3" + rxjs "^7.5.2" + sqlite3 "^5.0.8" + uint8arrays "^4.0.3" + +"@ceramicnetwork/http-client@^2.0.0": + version "2.36.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/http-client/-/http-client-2.36.0.tgz#5efbd6ef9f7cb40f2a496a6a1bfeacd1521f788a" + integrity sha512-N2iTPPAYER81PiU21tIVE7eh8PpNhSXaV7qsOdOZb2F3fmgcbO7PpOHki/1AaaAZUAXUNb0SOOjZGKIzJR1bhw== + dependencies: + "@ceramicnetwork/common" "^2.39.0" + "@ceramicnetwork/stream-caip10-link" "^2.34.0" + "@ceramicnetwork/stream-model" "^1.21.0" + "@ceramicnetwork/stream-model-instance" "^1.21.0" + "@ceramicnetwork/stream-tile" "^2.35.0" + "@ceramicnetwork/streamid" "^2.17.0" + "@scarf/scarf" "^1.1.1" + query-string "^7.1.0" + rxjs "^7.5.2" + +"@ceramicnetwork/http-client@^2.2.1", "@ceramicnetwork/http-client@^2.3.4": version "2.3.4" resolved "https://registry.yarnpkg.com/@ceramicnetwork/http-client/-/http-client-2.3.4.tgz#8610db5da11fab28f659289b6f54b654c8dbffb0" integrity sha512-ctqGj9T+MGrjgdqatyk918FWBsRLc9R8brsUHJlqLD5XYki2Xh+jd5PFE7Ry1HLDIA60Nminli7FLSUY8zTzbw== @@ -1496,6 +1735,41 @@ query-string "^7.1.0" rxjs "^7.5.2" +"@ceramicnetwork/http-client@^3.0.5", "@ceramicnetwork/http-client@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/http-client/-/http-client-3.2.0.tgz#1891b57b85146ed8f4d5c96a75047a94f7a5aa38" + integrity sha512-HC0tw9cL7/Q0qstOSc3pm9uAQ6pPx9Y/0dsmO+lZRxPMW9gQqOqY1Oa7Wi3PIvyiJaimwnM+G1SFM6GWQ676Lg== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/stream-caip10-link" "^3.2.0" + "@ceramicnetwork/stream-model" "^2.2.0" + "@ceramicnetwork/stream-model-instance" "^2.2.0" + "@ceramicnetwork/stream-tile" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@scarf/scarf" "^1.1.1" + query-string "^7.1.0" + rxjs "^7.5.2" + +"@ceramicnetwork/indexing@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/indexing/-/indexing-2.2.0.tgz#74935d7db605f8aa6e542c9315b94871c719c3fd" + integrity sha512-ITozew7UYTHlnHZZ981WCrscEDMBSQhgUWpqmI6MzAlHPSUdgKmFk5kg1FyeQotTB44E0flZAhLDBby8fud7wA== + dependencies: + "@ceramicnetwork/anchor-listener" "^2.2.0" + "@ceramicnetwork/anchor-utils" "^2.2.0" + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/job-queue" "^2.2.0" + "@ceramicnetwork/stream-model" "^2.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@ethersproject/providers" "^5.5.1" + knex "^2.5.1" + lodash.clonedeep "^4.5.0" + multiformats "^12.1.0" + p-queue "^7.4.0" + pg-boss "^8.2.0" + rxjs "^7.8.1" + uint8arrays "^4.0.6" + "@ceramicnetwork/ipfs-daemon@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@ceramicnetwork/ipfs-daemon/-/ipfs-daemon-2.1.4.tgz#f25a87fe7e399d4519668bac6e9f5c582acb2ed2" @@ -1513,6 +1787,22 @@ merge-options "^3.0.4" tmp-promise "^3.0.3" +"@ceramicnetwork/ipfs-daemon@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/ipfs-daemon/-/ipfs-daemon-3.2.0.tgz#5fc35e699f38bac55ce2737c11d03ccc387eb2b2" + integrity sha512-q7Ypon1fYh35Wu9ZLCN1fLxzOF/R3d8d16ij8+APNortIwGzMKxgFeMCqvq+pFJjGMkfeP5zuNQ9vTSj3DcDLg== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/ipfs-topology" "^3.2.0" + express "^4.17.2" + get-port "^6.0.0" + go-ipfs "^0.18.1" + ipfs-http-client "^60.0.0" + ipfsd-ctl "^13.0.0" + kubo-rpc-client "^3.0.0" + merge-options "^3.0.4" + tmp-promise "^3.0.3" + "@ceramicnetwork/ipfs-topology@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ceramicnetwork/ipfs-topology/-/ipfs-topology-2.2.0.tgz#25e3ac7a538870b692ceedc65b24050116b9b064" @@ -1521,6 +1811,23 @@ "@ceramicnetwork/common" "^2.6.0" cross-fetch "^3.1.4" +"@ceramicnetwork/ipfs-topology@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/ipfs-topology/-/ipfs-topology-3.2.0.tgz#480b38a0ef8249f9a67e87334b92a40a3111a657" + integrity sha512-PHKnWVvnz5SPcHyIsQZ9gI/pkrEuKF7Z8quXxhZ0zyOZYnoLiGTZUVHRRfsSnWck3eq8aj+W89W6xHDKOUbfnw== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + +"@ceramicnetwork/job-queue@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/job-queue/-/job-queue-2.2.0.tgz#77e06938dd77928af0ebdc438f3875a14b256389" + integrity sha512-cp+9Bx7a9mJ8hah459cDRsPazGvzh7OyC/850joFmvK2xKaa2fbuRR++RgLl3pJmw0qmDb0+fBy94Ces+i6nGQ== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + pg "^8.11.3" + pg-boss "^8.2.0" + rxjs "^7.8.1" + "@ceramicnetwork/logger@^2.0.8": version "2.0.8" resolved "https://registry.yarnpkg.com/@ceramicnetwork/logger/-/logger-2.0.8.tgz#0affd71ab7e95ead4556b5fac0c5344e571f5544" @@ -1528,6 +1835,13 @@ dependencies: rotating-file-stream "^3.0.2" +"@ceramicnetwork/logger@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/logger/-/logger-3.2.0.tgz#a46b2da6be5eec64c3e83bca220ca15d50c4df2f" + integrity sha512-wkV4ludi4IJ1KEyglnpANg21YA9Wxcne+oiXqRLLwJTariOsOBAUq25eTSU3FaamaNyxuz4Gj81a/3rw+EuoZw== + dependencies: + rotating-file-stream "^3.0.2" + "@ceramicnetwork/metrics@^0.0.3": version "0.0.3" resolved "https://registry.yarnpkg.com/@ceramicnetwork/metrics/-/metrics-0.0.3.tgz#3ed4712458779ea2a28de976d467102a34c30596" @@ -1538,6 +1852,20 @@ "@opentelemetry/sdk-metrics-base" "^0.28.0" "@opentelemetry/semantic-conventions" "^1.3.0" +"@ceramicnetwork/observability@^1.4.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/observability/-/observability-1.4.2.tgz#9f4ca615a38c79b1e0bd58b2ba1c62fd85c5cffb" + integrity sha512-T4m3Iku2aaFNBLH77z3DCjwKOoTZ+od3MDB0VydVpptcMQSOjxrRdmROt+k9Y3IahFG4yaj3Ai4MpujL8W1RTw== + dependencies: + "@opentelemetry/api" "1.3.0" + "@opentelemetry/exporter-metrics-otlp-http" "0.41.0" + "@opentelemetry/exporter-prometheus" "0.41.0" + "@opentelemetry/exporter-trace-otlp-http" "0.41.0" + "@opentelemetry/resources" "1.15.0" + "@opentelemetry/sdk-metrics" "1.15.0" + "@opentelemetry/sdk-trace-base" "1.15.0" + "@opentelemetry/semantic-conventions" "1.15.0" + "@ceramicnetwork/pinning-aggregation@^2.0.12": version "2.0.12" resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-aggregation/-/pinning-aggregation-2.0.12.tgz#d2bbac5c423afddda89485a8f8475000604166b7" @@ -1546,6 +1874,14 @@ "@stablelib/sha256" "^1.0.1" uint8arrays "^3.0.0" +"@ceramicnetwork/pinning-aggregation@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-aggregation/-/pinning-aggregation-3.2.0.tgz#438549464d2dd8a02dc62984a67226f826732908" + integrity sha512-sykfBW9oTkRdTMoy6jSf1QxH9et7cvgHBjvOVs5kfR/eh4zB1djJ9VaXC5HZ4wbzrTYjpFw9eNiGiRoJwhkcSQ== + dependencies: + "@stablelib/sha256" "^1.0.1" + uint8arrays "^4.0.3" + "@ceramicnetwork/pinning-ipfs-backend@^2.0.12": version "2.0.12" resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-ipfs-backend/-/pinning-ipfs-backend-2.0.12.tgz#4451bb20b2c20cb7b405260a7e13051334ff4951" @@ -1555,6 +1891,15 @@ ipfs-http-client "^55.0.0" uint8arrays "^3.0.0" +"@ceramicnetwork/pinning-ipfs-backend@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-ipfs-backend/-/pinning-ipfs-backend-3.2.0.tgz#88abd43171d983296b0137634026da9dfe11693b" + integrity sha512-800OsINFsEy5dfUsjSoy18K3jx9pVGFBv69SJYgk7aHaIkERDyDsnp7FtfBLojnhPJGVJKmlijgFKZ4EFJoNCw== + dependencies: + "@stablelib/sha256" "^1.0.1" + ipfs-http-client "^60.0.0" + uint8arrays "^4.0.3" + "@ceramicnetwork/rpc-postmessage@^0.6.0": version "0.6.1" resolved "https://registry.yarnpkg.com/@ceramicnetwork/rpc-postmessage/-/rpc-postmessage-0.6.1.tgz#185eca671c48bc509471d979fe9c202573e4866a" @@ -1593,6 +1938,16 @@ "@ceramicnetwork/common" "^2.6.0" "@ceramicnetwork/stream-caip10-link" "^2.2.3" +"@ceramicnetwork/stream-caip10-link-handler@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link-handler/-/stream-caip10-link-handler-3.2.0.tgz#98db7d56e139ce29ceacb0988d171807bea86091" + integrity sha512-8Ca4Tbe/41QtKAuXHEwNqH9i2ROLkA4eV6JshNHCAJLRMlD8UiFF/41CfYDHX40gQeUNQEBRVO6nAh8kOh+OYw== + dependencies: + "@ceramicnetwork/blockchain-utils-validation" "^3.2.0" + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/stream-caip10-link" "^3.2.0" + "@ceramicnetwork/stream-handler-common" "^2.2.0" + "@ceramicnetwork/stream-caip10-link@^2.0.0", "@ceramicnetwork/stream-caip10-link@^2.0.0-rc.0", "@ceramicnetwork/stream-caip10-link@^2.2.3": version "2.2.3" resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link/-/stream-caip10-link-2.2.3.tgz#1bfaba15310e55b4bc15feea5090be743f9ea515" @@ -1604,6 +1959,37 @@ did-resolver "^3.1.5" lodash.clonedeep "^4.5.0" +"@ceramicnetwork/stream-caip10-link@^2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link/-/stream-caip10-link-2.34.0.tgz#90b12f7ae0001179e7effaa4392a45c49c346358" + integrity sha512-bBxzPLc+NX+k7nKpmB7rcGy30R31pgU2/3FR1x+rezPY3n3trMZLcHqeNtUtuJv/tDLL2z+EDmfdXK91kBUTag== + dependencies: + "@ceramicnetwork/common" "^2.39.0" + "@ceramicnetwork/streamid" "^2.17.0" + caip "~1.1.0" + did-resolver "^4.0.1" + lodash.clonedeep "^4.5.0" + +"@ceramicnetwork/stream-caip10-link@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link/-/stream-caip10-link-3.2.0.tgz#0b44e6f10ab1cdb6ef56eb7371ec5c2fcf61cf08" + integrity sha512-36/7JWVm9Qn48/ezIRGJy7lAP4IZ2yGucAYXd/Ssq2RDLdGC7xTlva8csYQd/8b4nUu6UZqhqdRGEbBhGRN2Cw== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + caip "~1.1.0" + did-resolver "^4.0.1" + lodash.clonedeep "^4.5.0" + +"@ceramicnetwork/stream-handler-common@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-handler-common/-/stream-handler-common-2.2.0.tgz#6861b75e85ed3e9ea3f09d10d5ac47c3bfa2b06f" + integrity sha512-vSJKJSC7NA62IckiXu+DMiw2X6UjHN1ay1fkNAdZxg2mT+uk3j+c+pX4LukSUbBTJmU94KGN1OSuLr2F5cfAHA== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + lodash.clonedeep "^4.5.0" + "@ceramicnetwork/stream-model-handler@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-handler/-/stream-model-handler-0.5.0.tgz#ea2e2129b21339685a3ea89eb53a0d6c0fd4b224" @@ -1618,6 +2004,23 @@ lodash.clonedeep "^4.5.0" uint8arrays "^3.0.0" +"@ceramicnetwork/stream-model-handler@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-handler/-/stream-model-handler-2.2.0.tgz#2be3e1c12a59f800db1046ad4f7d4170039b60dc" + integrity sha512-9I5h8e28zQHhqEZ/U1ur4kOLB/L19u4E8dED/CBMmPbn1awTzRgJeFQXAzS0SDWaObIsq1m1SMTsWVTsQYh4sA== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/stream-handler-common" "^2.2.0" + "@ceramicnetwork/stream-model" "^2.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + json-ptr "^3.1.1" + lodash.clonedeep "^4.5.0" + lodash.ismatch "^4.4.0" + uint8arrays "^4.0.3" + "@ceramicnetwork/stream-model-instance-handler@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance-handler/-/stream-model-instance-handler-0.6.0.tgz#bc1964289dc3adfc040a4c7ccb57e920c8902ffa" @@ -1632,6 +2035,22 @@ lodash.clonedeep "^4.5.0" uint8arrays "^3.0.0" +"@ceramicnetwork/stream-model-instance-handler@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance-handler/-/stream-model-instance-handler-2.2.0.tgz#4b3096ff1887b38130d7c44439db7ce54711d18a" + integrity sha512-pyLrUishwHilv/kt4iT8vUzLSlUGY8s+359YAj59ipJX1Rdl8QhY0uXmcia60JX9H9dR+p8kBE8IdUNlEWCbcA== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/stream-handler-common" "^2.2.0" + "@ceramicnetwork/stream-model-instance" "^2.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + least-recent "^1.0.3" + lodash.clonedeep "^4.5.0" + uint8arrays "^4.0.3" + "@ceramicnetwork/stream-model-instance@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance/-/stream-model-instance-0.4.1.tgz#b8a608167aac2c2175449929fbaed86afe58677b" @@ -1644,6 +2063,32 @@ fast-json-patch "^3.1.0" uint8arrays "^3.0.0" +"@ceramicnetwork/stream-model-instance@^1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance/-/stream-model-instance-1.21.0.tgz#52a409bfb99aa2749acd9d40b10c3b532b397209" + integrity sha512-XxnLSv9HvzIuAYGlwSh/ODLolzgxrqnflk3rVj0cYODOmFYHi0/cYr2Sh/TTR7VpE3Xm6o1ch8BeLNozx6NGvg== + dependencies: + "@ceramicnetwork/common" "^2.39.0" + "@ceramicnetwork/streamid" "^2.17.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + fast-json-patch "^3.1.0" + object-sizeof "^2.6.1" + uint8arrays "^4.0.3" + +"@ceramicnetwork/stream-model-instance@^2.0.5", "@ceramicnetwork/stream-model-instance@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance/-/stream-model-instance-2.2.0.tgz#d2cd30e1ee68040e4f32ce57af6e99c01e614876" + integrity sha512-sLQjGpQc2V9Mh3BFsJvioKsRy8eyFrufxG7u2WNjSkRdWOrqMBLSuyEy2U5whT92nIe8DcKlD8eGW2rmY7OOCQ== + dependencies: + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + fast-json-patch "^3.1.0" + object-sizeof "^2.6.1" + uint8arrays "^4.0.3" + "@ceramicnetwork/stream-model@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model/-/stream-model-0.5.0.tgz#ac42504b188d793366a2fff8157e7c09731f1b16" @@ -1659,6 +2104,42 @@ multihashes "^4.0.3" uint8arrays "^3.0.0" +"@ceramicnetwork/stream-model@^1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model/-/stream-model-1.21.0.tgz#fa445322e61d525cb5a71d0759bae19a0b29dee6" + integrity sha512-OOIG7LU5XlBKi+7+lb5o1vtfJI9yblIzww1G7yeLW8W3axEzvnkrk/Hyyeeg1R2R7B6zE+AEWi93mBE1FP96VA== + dependencies: + "@ceramicnetwork/codecs" "^1.14.0" + "@ceramicnetwork/common" "^2.39.0" + "@ceramicnetwork/streamid" "^2.17.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + ajv "^8.8.2" + ajv-formats "^2.1.1" + codeco "^1.1.0" + fast-json-patch "^3.1.0" + json-schema-typed "^8.0.1" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@ceramicnetwork/stream-model@^2.0.5", "@ceramicnetwork/stream-model@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model/-/stream-model-2.2.0.tgz#cb6182035b2ed4f8bccecd3d2687f4c2d472d7f9" + integrity sha512-O+xmtMJ3dFOqxkoaDVKZAH8Z+4AqYyDdSgoB97JNpXHILM2a13NMJyvVVtZzVedywj6jAkdOxC80JYOscQtiew== + dependencies: + "@ceramicnetwork/codecs" "^2.2.0" + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + ajv "^8.8.2" + ajv-formats "^2.1.1" + codeco "^1.1.0" + fast-json-patch "^3.1.0" + json-schema-typed "^8.0.1" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + "@ceramicnetwork/stream-tile-handler@^2.2.7": version "2.2.7" resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile-handler/-/stream-tile-handler-2.2.7.tgz#4e419a9968c92c30f6b568055f4dc6b03b075491" @@ -1672,18 +2153,23 @@ lodash.clonedeep "^4.5.0" uint8arrays "^3.0.0" -"@ceramicnetwork/stream-tile@^1.5.0": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile/-/stream-tile-1.5.7.tgz#66d481b33f756f27372d9fe3b12f78d72d6538c7" - integrity sha512-2419vN6lh9e4CsGzOzpJTYRWhRQPKhVZP/i34RYUTgdUmdOXgb62RipZG0IvTY5DtXNfnoRcTwOe+BZqvkCDFQ== +"@ceramicnetwork/stream-tile-handler@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile-handler/-/stream-tile-handler-3.2.0.tgz#95c72b912721ad78feed38d7678df0f456c1749d" + integrity sha512-N6nRYRxfUiXN1shueZFZB0SnJA7bLZKLbBU6y6iOxElChj/KoK+o6+tgqjZZRXHTFSJnTMhBbjajchJeMnLpeQ== dependencies: - "@ceramicnetwork/common" "^1.11.0" - "@ceramicnetwork/streamid" "^1.3.9" - "@stablelib/random" "^1.0.0" - fast-json-patch "^2.2.1" - uint8arrays "^2.0.5" + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/stream-handler-common" "^2.2.0" + "@ceramicnetwork/stream-tile" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + least-recent "^1.0.3" + lodash.clonedeep "^4.5.0" + uint8arrays "^4.0.3" -"@ceramicnetwork/stream-tile@^2.0.0", "@ceramicnetwork/stream-tile@^2.2.2", "@ceramicnetwork/stream-tile@^2.3.0", "@ceramicnetwork/stream-tile@^2.4.3": +"@ceramicnetwork/stream-tile@^2.0.0", "@ceramicnetwork/stream-tile@^2.2.2", "@ceramicnetwork/stream-tile@^2.4.3": version "2.4.3" resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile/-/stream-tile-2.4.3.tgz#72dadebc48ed1fe284a80054774fe6629dd3ab68" integrity sha512-9b3NPEeh2sFQTpbpLXMP6pXK5maafDicmTMRwipCsB+JZ+bW/Q6xtXtGHq8bqFawmfRR5JVBJzOkqUmZNUu9Pw== @@ -1696,31 +2182,33 @@ lodash.clonedeep "^4.5.0" uint8arrays "^3.0.0" -"@ceramicnetwork/stream-tile@^2.4.4": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile/-/stream-tile-2.12.0.tgz#7c9e227c9ecdd7a4196c38847b550d35e508f707" - integrity sha512-885QI8TWM0jvCzGDnluubIVLg3NlUAF1kYQCzmZQjT7W8kyD9EIlnBSgA1CU0Xbpa1nEe4EUTGPM+JTxOfa0tA== +"@ceramicnetwork/stream-tile@^2.35.0", "@ceramicnetwork/stream-tile@^2.4.4": + version "2.35.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile/-/stream-tile-2.35.0.tgz#cfb7ae97935b0a09fc90f4fbf9ba44a85a4d901e" + integrity sha512-pkUsgAyEo7cd7Zj+T4OfXxDnaIN3cUiqkWOg2rj7ESXBKCVnTMXexsDNM2I+HvlXCCSuY+ek4TYu6QwVe1yiIA== dependencies: - "@ceramicnetwork/common" "^2.16.0" - "@ceramicnetwork/streamid" "^2.9.0" + "@ceramicnetwork/common" "^2.39.0" + "@ceramicnetwork/streamid" "^2.17.0" "@ipld/dag-cbor" "^7.0.0" "@stablelib/random" "^1.0.1" - dids "^3.4.0" + dids "^4.0.0" fast-json-patch "^3.1.0" lodash.clonedeep "^4.5.0" - uint8arrays "^3.0.0" + uint8arrays "^4.0.3" -"@ceramicnetwork/streamid@^1.3.4", "@ceramicnetwork/streamid@^1.3.9": - version "1.3.9" - resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-1.3.9.tgz#5b83a8f0118e4bc0986d19dc565ab38d8c3ebdbd" - integrity sha512-XmW9QrSLv5pMbjV5GgbF6BFatdH7pZP53U2m8SINtdL9NDKj4B701ZyVVpx+NtE4djx34fOgK/ldbVOjyt8tPQ== +"@ceramicnetwork/stream-tile@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile/-/stream-tile-3.2.0.tgz#c294d02b321088f5c0a3fe46fd2645e36db62194" + integrity sha512-QW0FS2OHmxK/Gs4GcFGgAZY4gtnSBBE2jUWNAMoXne8T0CjbQforUFUXC5KD4ojGMBsqm+w8vBurSk9ihcT2/w== dependencies: - cids "~1.1.6" - ipld-dag-cbor "^0.17.0" - multibase "~4.0.2" - typescript-memoize "^1.0.0-alpha.4" - uint8arrays "^2.0.5" - varint "^6.0.0" + "@ceramicnetwork/common" "^3.2.0" + "@ceramicnetwork/streamid" "^3.2.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + dids "^4.0.0" + fast-json-patch "^3.1.0" + lodash.clonedeep "^4.5.0" + uint8arrays "^4.0.3" "@ceramicnetwork/streamid@^2.0.0", "@ceramicnetwork/streamid@^2.1.0", "@ceramicnetwork/streamid@^2.3.3": version "2.3.3" @@ -1733,15 +2221,30 @@ uint8arrays "^3.0.0" varint "^6.0.0" -"@ceramicnetwork/streamid@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-2.9.0.tgz#54427a0f82ab0656162e6888b0ceede611bb6b4f" - integrity sha512-tof6zTCcbYcT+xmy2AUQlVUlczJhoaGrBhjIiqKt0l0MoG0GWdz9mic4GRKyVueFl1aRZNKp/uSZ46wKxEzsNw== +"@ceramicnetwork/streamid@^2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-2.17.0.tgz#4c4fed37762af52abc04765971dbe07fbfb1656c" + integrity sha512-LC6YL8dcN2XqOdPEDKqWAloyJNXBIyw30JAm4gvWLsUuOaL8hTJWpu2HndFp/Jn4Mab9090/fwVZ2O8CWno58w== dependencies: "@ipld/dag-cbor" "^7.0.0" + "@stablelib/sha256" "^1.0.1" + cborg "^1.10.2" mapmoize "^1.2.1" - multiformats "^9.5.8" - uint8arrays "^3.0.0" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + varint "^6.0.0" + +"@ceramicnetwork/streamid@^3.0.5", "@ceramicnetwork/streamid@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-3.2.0.tgz#d3ce24348b26b3a2b8e7e29f65540dbe6a2558a6" + integrity sha512-o1nlXcSosbl2pcA3vkdZyiwdwDC7J8O+u/mGdBysJ6brQvQcbB9W9QYE6OgB5p+dxXdY9u5zwATURIEw5Ify3w== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/sha256" "^1.0.1" + cborg "^1.10.2" + mapmoize "^1.2.1" + multiformats "^11.0.1" + uint8arrays "^4.0.9" varint "^6.0.0" "@ceramicnetwork/transport-postmessage@^0.6.0": @@ -1759,11 +2262,21 @@ dependencies: rxjs "^7.5.2" +"@ceramicnetwork/wasm-bloom-filter@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/wasm-bloom-filter/-/wasm-bloom-filter-0.1.0.tgz#5d9705ff07a4b1a6a97115a68b1a57f117c804d0" + integrity sha512-vCKJsphSqVFpQISEBK/B59s278xmyab7BYX4yPZGI9aP92jjtGrrkQGaCQF+JOd/0ZSNRbYA3uOUH4BcKaoTCg== + "@chainsafe/as-sha256@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== +"@chainsafe/is-ip@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.0.2.tgz#7311e7403f11d8c5cfa48111f56fcecaac37c9f6" + integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA== + "@chainsafe/libp2p-noise@^5.0.0": version "5.0.3" resolved "https://registry.yarnpkg.com/@chainsafe/libp2p-noise/-/libp2p-noise-5.0.3.tgz#d9fbdef7cb3fada7ba467e3495ca74a0710d6274" @@ -1784,6 +2297,13 @@ protobufjs "^6.11.2" uint8arrays "^3.0.0" +"@chainsafe/netmask@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@chainsafe/netmask/-/netmask-2.0.0.tgz#0d4a75f47919f65011da4327a3845c9661f1038a" + integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/persistent-merkle-tree@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" @@ -2621,6 +3141,11 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz#9b0ecef8f01263ab808ba3bda7b36a0d91b4d5c1" integrity sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ== +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@commitlint/cli@^16.2.3": version "16.3.0" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-16.3.0.tgz#5689f5c2abbb7880d5ff13329251e5648a784b16" @@ -2773,6 +3298,140 @@ dependencies: chalk "^4.0.0" +"@composedb/cli@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@composedb/cli/-/cli-0.6.1.tgz#7d7721e23b7583ad443acd5cb536b6540b8b7fa5" + integrity sha512-Yssv5Tz/0wSCatSCNPPyRZc3q3q4PtyqekXbh0WQqUupdnuVl9pPVsHzBAPu9hPAgs8Xx5RPsJ22WGBuSk3kBA== + dependencies: + "@ceramicnetwork/3id-did-resolver" "^3.0.5" + "@ceramicnetwork/cli" "^3.0.5" + "@ceramicnetwork/http-client" "^3.0.5" + "@ceramicnetwork/stream-model" "^2.0.5" + "@ceramicnetwork/stream-model-instance" "^2.0.5" + "@ceramicnetwork/streamid" "^3.0.5" + "@composedb/client" "^0.6.0" + "@composedb/devtools" "^0.6.1" + "@composedb/devtools-node" "^0.6.1" + "@composedb/runtime" "^0.6.0" + "@oclif/core" "^3.13.2" + "@oclif/plugin-help" "^6.0.7" + "@oclif/plugin-version" "^2.0.8" + cli-table3 "^0.6.3" + did-resolver "^4.1.0" + dids "^4.0.4" + env-paths "^3.0.0" + fs-extra "^11.2.0" + key-did-provider-ed25519 "^3.0.2" + key-did-resolver "^3.0.0" + listr "^0.14.3" + listr-update-renderer "^0.5.0" + ora "^7.0.1" + terminal-size "^4.0.0" + uint8arrays "^4.0.9" + +"@composedb/client@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@composedb/client/-/client-0.6.0.tgz#25f7b2057962d49ab852effdc68ce671e4eda1e1" + integrity sha512-vqA7gMxdUq9UATM4bgvFx5Wk2BFYoc/rmCceM9KqCaY3yHohtOPxlty1L6/Fl1Md98hmgQkY45lvHiD4ajA1Kg== + dependencies: + "@ceramicnetwork/http-client" "^3.0.5" + "@ceramicnetwork/stream-model" "^2.0.5" + "@ceramicnetwork/stream-model-instance" "^2.0.5" + "@composedb/constants" "^0.6.0" + "@composedb/graphql-scalars" "^0.6.0" + "@composedb/runtime" "^0.6.0" + "@graphql-tools/batch-execute" "^9.0.2" + "@graphql-tools/stitch" "^9.0.3" + "@graphql-tools/utils" "^10.0.11" + dataloader "^2.2.2" + graphql "^16.8.1" + graphql-relay "^0.10.0" + +"@composedb/constants@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@composedb/constants/-/constants-0.6.0.tgz#e853265328524b0c103757b8913986565e356417" + integrity sha512-18rysTgKUTgapwaDEJOI063WSWlwbvowEnRZkFrZpciHPHjgfdry9XTht4ygYkGzx9TE+zGsVmgJfF0LlbTFMg== + +"@composedb/devtools-node@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@composedb/devtools-node/-/devtools-node-0.6.1.tgz#ad1972616720f0ced59d0b1675903a1d83738cae" + integrity sha512-31K+9RROT9eoqzF78y0waE9E96DxKkJBITAIm5AjpIsoiCOoXTQYMrD0AVtQoMhYMUPrE5ByrsAOlCRB2zGGHQ== + dependencies: + "@ceramicnetwork/http-client" "^3.0.5" + "@composedb/client" "^0.6.0" + "@composedb/runtime" "^0.6.0" + "@composedb/server" "^0.6.0" + fs-extra "^11.2.0" + +"@composedb/devtools@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@composedb/devtools/-/devtools-0.6.1.tgz#752ffd103abb7600578924cf6e03ed184a8b94f8" + integrity sha512-584a6Zg4AYWhGhyhvq6Ac/YdHpgHTqRf9HgtS5IglJDyVV2DGKvVAXg4bYv7hGa6zrppelHOlNQ99U3ICizPXw== + dependencies: + "@ceramicnetwork/common" "^3.0.5" + "@ceramicnetwork/stream-model" "^2.0.5" + "@ceramicnetwork/streamid" "^3.0.5" + "@composedb/graphql-scalars" "^0.6.0" + "@didtools/cacao" "^2.0.0" + "@graphql-tools/schema" "^10.0.2" + "@graphql-tools/utils" "^10.0.11" + change-case "^5.3.0" + json-ptr "^3.1.1" + lodash-es "^4.17.21" + multiformats "^12.1.3" + object-hash "^3.0.0" + type-fest "^4.8.3" + uint8arrays "^4.0.9" + +"@composedb/graphql-scalars@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@composedb/graphql-scalars/-/graphql-scalars-0.6.0.tgz#54e6437914d3356f2f5286bda9c0dbe8cc7a6adc" + integrity sha512-9GssARG72pXb2SEYK6Zozz92tl37WnI9fCgKiTKBIjisoUGpUnTv2sRNRJV8X9j4CgawvCm4Yb/SH+CtUXuZew== + dependencies: + "@ceramicnetwork/streamid" "^3.0.5" + "@composedb/types" "^0.6.0" + caip "^1.1.0" + graphql "^16.8.1" + graphql-scalars "^1.22.4" + multiformats "^12.1.3" + +"@composedb/runtime@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@composedb/runtime/-/runtime-0.6.0.tgz#a7b0816500e3696cac18dcb6208ac52a48c20f3f" + integrity sha512-HZRFa7KVqEPAQY9umPzpdRoblHIn/QVk/55T5TPLv6VTEDmUmw0W3Nv+vNH7kvq++SdIuikbRPSW7eci9wUTCw== + dependencies: + "@ceramicnetwork/http-client" "^3.0.5" + "@ceramicnetwork/stream-model" "^2.0.5" + "@ceramicnetwork/stream-model-instance" "^2.0.5" + "@ceramicnetwork/streamid" "^3.0.5" + "@composedb/graphql-scalars" "^0.6.0" + dataloader "^2.2.2" + graphql "^16.8.1" + graphql-relay "^0.10.0" + +"@composedb/server@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@composedb/server/-/server-0.6.0.tgz#3bd0312e47ea2ee0800dc3fbc5e9636d46bb2af5" + integrity sha512-1szwoxCn05FIqEy4Tch3RnsA/UCh1RxoKxb1DlqQAWy/+0J6YRpwpCIXV4rRHm/zrhisCqnLqBZx1UhSXHH/3Q== + dependencies: + "@ceramicnetwork/http-client" "^3.0.5" + "@composedb/constants" "^0.6.0" + "@composedb/runtime" "^0.6.0" + get-port "^7.0.0" + graphql "^16.8.1" + graphql-yoga "^5.0.0" + +"@composedb/types@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@composedb/types/-/types-0.6.0.tgz#21eaf27fbc1c877a6a96440cef4056d275d282b5" + integrity sha512-Bpt85C/bIByqFx87OC14DBGfXCV7tj9IsZ5AQ0fv53bGATs+otEj+tnz5UxDRcSSuT9iLOLa8XLLKiEKkwmecQ== + dependencies: + "@ceramicnetwork/common" "^3.0.5" + "@ceramicnetwork/stream-model" "^2.0.5" + "@ceramicnetwork/stream-model-instance" "^2.0.5" + dids "^4.0.4" + json-schema-typed "^8.0.1" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -2833,16 +3492,69 @@ dependencies: "@datastructures-js/heap" "^4.1.2" -"@didtools/cacao@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-1.1.0.tgz#254f38cf4ba686398e895c98573375d3a2f7661d" - integrity sha512-7rTU6iUa5vXzwuNzC+awwnJ/4D15+AHV2ytQohL4t1QA/zNbHdkcPnF1Hq+6vRoMnVFlasSpsxlTatjOBqg1RA== +"@didtools/cacao@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-1.2.0.tgz#a7a142016639cc457c84320c75a72efa455834a2" + integrity sha512-y0nMgV8DL0jgHUq0uhjMqrW9p79PopQnugLWx02tss+iR0ahON2cfal20+eFx2p3kXtvaL8U+iByrjmyuokj+A== + dependencies: + "@ipld/dag-cbor" "^7.0.1" + apg-js "^4.1.1" + caip "^1.1.0" + multiformats "^9.5.1" + uint8arrays "^4.0.2" + +"@didtools/cacao@^2.0.0", "@didtools/cacao@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-2.1.0.tgz#5ce7bbae0abf6cce0631b8e5df657052065b9d40" + integrity sha512-35gopj+mOmAlA3nHoHiYMvNMXJtbJDJnVpIlCf/Wf/+/x+uG9aIQefXfF35D6JuaTCZ0apabjpT2umL5h3EXcw== + dependencies: + "@didtools/codecs" "^1.0.1" + "@didtools/siwx" "1.0.0" + "@ipld/dag-cbor" "^9.0.1" + caip "^1.1.0" + multiformats "^11.0.2" + uint8arrays "^4.0.3" + +"@didtools/cacao@^3.0.0", "@didtools/cacao@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-3.0.1.tgz#4a705b583bde6d3a85bec33622d03ed1acfcb2b9" + integrity sha512-vV1JirxqVsBf2dqdvoS/msNN8fabvMfseZB0kf1FG8TbosrHd81+hgDOlQMZit7zJbTk5g3CGkZg3b7iYKkynw== + dependencies: + "@didtools/codecs" "^3.0.0" + "@didtools/siwx" "2.0.0" + "@ipld/dag-cbor" "^9.0.7" + caip "^1.1.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + viem "^1.21.4" + +"@didtools/codecs@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@didtools/codecs/-/codecs-1.0.1.tgz#2f0372e618ffb563c1b56279f1f5e79f59a2d48b" + integrity sha512-6PYXOCX7mwVWUcudKQ3eW5LtI8v5esozazbf2q2F01PE+LoeEvTytvgU9FEspj4pATpq3hPx1eenX2uLirDJ8w== + dependencies: + codeco "^1.1.0" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@didtools/codecs@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@didtools/codecs/-/codecs-3.0.0.tgz#860e74e7762f8d1cb630d3ceb87a4e728455e797" + integrity sha512-TemoVySZrs1XflMtOkwVTATtZEs42Mh2yk9SoYvBXES6Mz30PBJCm8v7U/2y1N5lrjb2cAPWs48Ryc7paetSxQ== + dependencies: + codeco "^1.2.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@didtools/key-webcrypto@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@didtools/key-webcrypto/-/key-webcrypto-0.2.0.tgz#8435a14087d9b5d02752bd145fb574f8aee50105" + integrity sha512-5WK2Np0Tb6ApDoK71vYmEGiIdwLKzaEjr5KTK6RXFdl5xJnOYOHGkn4Ohco9D0UsoUGyDZE/ztlXmPQIbzHXQA== dependencies: - "@ipld/dag-cbor" "^7.0.1" - apg-js "^4.1.1" - caip "^1.1.0" - multiformats "^9.5.1" - uint8arrays "^4.0.2" + fast-json-stable-stringify "^2.1.0" + rpc-utils "^0.6.2" + uint8arrays "^5.0.1" + varint "^6.0.0" "@didtools/pkh-ethereum@^0.0.1": version "0.0.1" @@ -2854,25 +3566,87 @@ "@stablelib/random" "^1.0.2" caip "^1.1.0" -"@didtools/pkh-ethereum@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.0.3.tgz#ca86ce1fc0770c0043aade2dc5036ea38756e403" - integrity sha512-+hfVzkk6fd0CifgdNzQ+og2B1q8O7Wmx3IZQz1wejQH8HfjRX0tNL41aw5Df6T9Vzps0R45ULnY46SVdmORg3A== +"@didtools/pkh-ethereum@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.1.0.tgz#fc55d341ca043cf959651e603cc2eafde8ebf1fc" + integrity sha512-Abmc6uvWU8zkOrQbPUAsRtTW293vhx+rzd+/bbduTLrRGEqZ3niakQkxMqvQKZ6/9w+n0IjQVXSHE5vzc5cAeg== dependencies: - "@didtools/cacao" "^1.0.0" + "@didtools/cacao" "^2.0.0" "@ethersproject/wallet" "^5.7.0" "@stablelib/random" "^1.0.2" caip "^1.1.0" -"@didtools/pkh-solana@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@didtools/pkh-solana/-/pkh-solana-0.0.1.tgz#019d0bd074e05777bb4144d3b2f5cf015512a541" - integrity sha512-l/rimusjUDl3bEGD+os7YqxyNpY9545e4a+qXeqDxNX2kfndnAa4Oz+GOPSll9Q9sTgnB5DeuOMbmYxzHxNDqw== +"@didtools/pkh-ethereum@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.4.1.tgz#b03472bf0196d2ece6a64d5f01aa96c866cdccb7" + integrity sha512-oE5bbyTauJ/WddaWnDK7bWns2E2LG4Ut33ICEcEQdlMoXM0902/vnGm8+6QE/yuLOyAllgf7DnDKvERF5IY6uQ== dependencies: - "@didtools/cacao" "^1.0.0" - "@stablelib/ed25519" "^1.0.3" + "@didtools/cacao" "^2.1.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + "@stablelib/random" "^1.0.2" caip "^1.1.0" - uint8arrays "^3.1.0" + +"@didtools/pkh-ethereum@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.5.0.tgz#fca9008c546141f257508d4448c58609b975276b" + integrity sha512-2S+TS/I2jVTNnkgyslxQvSjCzzLsCabjXD2UWjJnVkAoxeJgPE9GvY1JhTDgvVLfxLPnYwTIP/O1WR9wJcDkFg== + dependencies: + "@didtools/cacao" "^3.0.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + +"@didtools/pkh-solana@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@didtools/pkh-solana/-/pkh-solana-0.1.1.tgz#e325682b71cada03bb29cf6ecaa921f183c17a7b" + integrity sha512-2Sn4xSg8otqAeXA0tDYUM+3KQtzOr2gBcu0wbJyOn/30Ocj3jxHFQg7NfumEsiQtQ0HtnmsGZUrnCgoxHqLwWg== + dependencies: + "@didtools/cacao" "^2.0.0" + "@noble/curves" "^1.0.0" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + uint8arrays "^4.0.3" + +"@didtools/pkh-stacks@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-stacks/-/pkh-stacks-0.1.0.tgz#91191dee0a5767989d68ffc6a78e7736b44c8f52" + integrity sha512-dEgyHleiIa2afibchNqs07tSqddFS6pX9D5BNxbWH0NAr+FisVCA4nUXajcbd9TUbSuplClfQ4EXjjJAGqlgeg== + dependencies: + "@didtools/cacao" "^2.0.0" + "@stablelib/random" "^1.0.2" + "@stacks/common" "^6.0.0" + "@stacks/encryption" "^6.2.0" + "@stacks/transactions" "^6.2.0" + caip "^1.1.0" + jsontokens "^4.0.1" + +"@didtools/pkh-tezos@^0.2.1": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@didtools/pkh-tezos/-/pkh-tezos-0.2.2.tgz#6e48a33e08a31848482a9e4b965057770237adc4" + integrity sha512-pUzquLujQJQ4tQoGrXjozFZePNt+VLX7Bk32r1DPbkp8FaLoAA5UoaP1qf+fM/J9EsxCfdnpntqqGU+MmvIpHA== + dependencies: + "@didtools/cacao" "^2.0.0" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + uint8arrays "^4.0.3" + +"@didtools/siwx@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@didtools/siwx/-/siwx-1.0.0.tgz#18eacb098a3a1f69253a8216fa5071ad9c2c7ec1" + integrity sha512-b7sPDTNHdySoJ+Rp2p06x3rg1iTxI4yPTTA3PrPh40xcvFJ0K/YhdIb/Rzff13t92arcJ+VYGFhqtJorauV91g== + dependencies: + codeco "^1.1.0" + +"@didtools/siwx@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@didtools/siwx/-/siwx-2.0.0.tgz#95225f57888bff821baa182dee2d7860ee51940a" + integrity sha512-eqBtI5dZrptXTCyadnhvU0di/KvumoByT7F8KB/8BLU7M1lltfEmvf/c5AnsyrWO9338ygCs2u5mKz1p1Zdj5A== + dependencies: + codeco "^1.2.0" "@emotion/babel-plugin@^11.10.0": version "11.10.2" @@ -2994,6 +3768,21 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== +"@envelop/core@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@envelop/core/-/core-5.0.0.tgz#131616ad9685599e501b14fdf1a983cfd3b72020" + integrity sha512-aJdnH/ptv+cvwfvciCBe7TSvccBwo9g0S5f6u35TBVzRVqIGkK03lFlIL+x1cnfZgN9EfR2b1PH2galrT1CdCQ== + dependencies: + "@envelop/types" "5.0.0" + tslib "^2.5.0" + +"@envelop/types@5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@envelop/types/-/types-5.0.0.tgz#3ae59b50ec31d4bdcc7bd0b47e9c8cf2ac44b0ff" + integrity sha512-IPjmgSc4KpQRlO4qbEDnBEixvtb06WDmjKfi/7fkZaryh5HuOmTtixe1EupQI5XfXO8joc3d27uUZ0QdC++euA== + dependencies: + tslib "^2.5.0" + "@esbuild/aix-ppc64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3" @@ -3109,21 +3898,38 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04" integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw== -"@eslint/eslintrc@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" - integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" - globals "^13.15.0" + espree "^9.6.0" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== + "@ethereum-attestation-service/eas-contracts@^0.27.1": version "0.27.1" resolved "https://registry.yarnpkg.com/@ethereum-attestation-service/eas-contracts/-/eas-contracts-0.27.1.tgz#399164fb6841264a8b949cac3b6ef598e9847741" @@ -3926,6 +4732,11 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@fastify/busboy@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" + integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== + "@formatjs/ecma402-abstract@1.11.4": version "1.11.4" resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda" @@ -3970,11 +4781,6 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@glazed/constants@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@glazed/constants/-/constants-0.1.1.tgz#a5aea7bfd48f701c0be11a5f601f2ece7e3138ba" - integrity sha512-lV9FmQ7xVNoAbegLs6dfv0gPOlrS0t6NU6qPD9xggU12Kiaqa4nQ7ufn2mVh1WYmVLDqP5fUs3/kTq6hbFtjzA== - "@glazed/constants@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@glazed/constants/-/constants-0.2.0.tgz#70be7de8ff068d172bf8fd553d3da66f0af6c8a2" @@ -3987,23 +4793,6 @@ dependencies: "@glazed/tile-loader" "^0.2.1" -"@glazed/devtools@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@glazed/devtools/-/devtools-0.1.6.tgz#a7710dc113401e524942cd592bd9b9b7548aa4e9" - integrity sha512-9hiRmsviZbx/iDgkA6kn/rLj7FjZybNY1s5bXXM/vmepThe3gXF++qkKkDTpXyEUN0MlAH34PcHtcyDhHc+f/A== - dependencies: - "@ceramicnetwork/common" "^1.8.0" - "@ceramicnetwork/stream-tile" "^1.5.0" - "@ceramicnetwork/streamid" "^1.3.4" - "@glazed/constants" "^0.1.1" - "@glazed/did-datastore-model" "^0.1.1" - ajv "^8.8.2" - ajv-formats "^2.1.1" - change-case "^4.1.2" - cids "^1.1.9" - fast-deep-equal "^3.1.3" - uint8arrays "^3.0.0" - "@glazed/devtools@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@glazed/devtools/-/devtools-0.2.0.tgz#75de7832ab3d9acd99e0be44ba3215e6224c675c" @@ -4021,11 +4810,6 @@ multiformats "^9.6.3" uint8arrays "^3.0.0" -"@glazed/did-datastore-model@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@glazed/did-datastore-model/-/did-datastore-model-0.1.1.tgz#f5599b3f4d210d52a7d7858d19035e30ba0e8ed0" - integrity sha512-I4DAyQyc0tF/hExQwaF2JMZ/GvYi4CUG2N0D+yFvwKnc2opz6zcuXi1hg3E9uttPi5MBR+ZzW62UmgZ7O+BJDw== - "@glazed/did-datastore-model@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@glazed/did-datastore-model/-/did-datastore-model-0.2.0.tgz#97ad3b590acf4abfe59348700a51b270485de289" @@ -4057,6 +4841,161 @@ ajv "^8.10.0" dids "^3.0.0" +"@graphql-tools/batch-delegate@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-delegate/-/batch-delegate-9.0.0.tgz#dd9e87466f450bae61a20525a2a8d8b0d257df37" + integrity sha512-23NmxcHQeKcfhMQyrRPTZfW4/+bSpAyR/qAhRjx+/hikDIa1Uv2XVgV9jIitSgM0OEk/KGPB4VQv+LCOWvAYiw== + dependencies: + "@graphql-tools/delegate" "^10.0.0" + "@graphql-tools/utils" "^10.0.0" + dataloader "2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/batch-execute@^9.0.1", "@graphql-tools/batch-execute@^9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-9.0.2.tgz#5ac3257501e7941fad40661bb5e1110d6312f58b" + integrity sha512-Y2uwdZI6ZnatopD/SYfZ1eGuQFI7OU2KGZ2/B/7G9ISmgMl5K+ZZWz/PfIEXeiHirIDhyk54s4uka5rj2xwKqQ== + dependencies: + "@graphql-tools/utils" "^10.0.5" + dataloader "^2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/delegate@^10.0.0", "@graphql-tools/delegate@^10.0.1", "@graphql-tools/delegate@^10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-10.0.3.tgz#2d0e133da94ca92c24e0c7360414e5592321cf2d" + integrity sha512-Jor9oazZ07zuWkykD3OOhT/2XD74Zm6Ar0ENZMk75MDD51wB2UWUIMljtHxbJhV5A6UBC2v8x6iY0xdCGiIlyw== + dependencies: + "@graphql-tools/batch-execute" "^9.0.1" + "@graphql-tools/executor" "^1.0.0" + "@graphql-tools/schema" "^10.0.0" + "@graphql-tools/utils" "^10.0.5" + dataloader "^2.2.2" + tslib "^2.5.0" + +"@graphql-tools/executor@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-1.2.0.tgz#6c45f4add765769d9820c4c4405b76957ba39c79" + integrity sha512-SKlIcMA71Dha5JnEWlw4XxcaJ+YupuXg0QCZgl2TOLFz4SkGCwU/geAsJvUJFwK2RbVLpQv/UMq67lOaBuwDtg== + dependencies: + "@graphql-tools/utils" "^10.0.0" + "@graphql-typed-document-node/core" "3.2.0" + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/merge@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.0.tgz#b0a3636c82716454bff88e9bb40108b0471db281" + integrity sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q== + dependencies: + "@graphql-tools/utils" "^10.0.0" + tslib "^2.4.0" + +"@graphql-tools/merge@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.1.tgz#693f15da152339284469b1ce5c6827e3ae350a29" + integrity sha512-hIEExWO9fjA6vzsVjJ3s0cCQ+Q/BEeMVJZtMXd7nbaVefVy0YDyYlEkeoYYNV3NVVvu1G9lr6DM1Qd0DGo9Caw== + dependencies: + "@graphql-tools/utils" "^10.0.10" + tslib "^2.4.0" + +"@graphql-tools/schema@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.0.tgz#7b5f6b6a59f51c927de8c9069bde4ebbfefc64b3" + integrity sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg== + dependencies: + "@graphql-tools/merge" "^9.0.0" + "@graphql-tools/utils" "^10.0.0" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/schema@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.2.tgz#21bc2ee25a65fb4890d2e5f9f22ef1f733aa81da" + integrity sha512-TbPsIZnWyDCLhgPGnDjt4hosiNU2mF/rNtSk5BVaXWnZqvKJ6gzJV4fcHcvhRIwtscDMW2/YTnK6dLVnk8pc4w== + dependencies: + "@graphql-tools/merge" "^9.0.1" + "@graphql-tools/utils" "^10.0.10" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/stitch@^9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/stitch/-/stitch-9.0.3.tgz#6164333ecf3317d9a5e1a7e5567ae37ca936a8ac" + integrity sha512-G03XahiHDu1pnaS8z2GNfsV/5BribMEUATT5dCHBAqj13Te5y1amZNQePrmw8DLtbf5qDbU6CO7kGHPxv0XO9A== + dependencies: + "@graphql-tools/batch-delegate" "^9.0.0" + "@graphql-tools/delegate" "^10.0.1" + "@graphql-tools/executor" "^1.0.0" + "@graphql-tools/merge" "^9.0.0" + "@graphql-tools/schema" "^10.0.0" + "@graphql-tools/utils" "^10.0.0" + "@graphql-tools/wrap" "^10.0.0" + tslib "^2.4.0" + value-or-promise "^1.0.11" + +"@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.0.5": + version "10.0.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.6.tgz#8a809d6bc0df27ffe8964696f182af2383b5974b" + integrity sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + dset "^3.1.2" + tslib "^2.4.0" + +"@graphql-tools/utils@^10.0.10", "@graphql-tools/utils@^10.0.11": + version "10.0.12" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.12.tgz#c90b19bf8e038ea4c9b5c3715deb4553f572d8d4" + integrity sha512-+yS1qlFwXlwU3Gv8ek/h2aJ95quog4yF22haC11M0zReMSTddbGJZ5yXKkE3sXoY2BcL1utilSFjylJ9uXpSNQ== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + cross-inspect "1.0.0" + dset "^3.1.2" + tslib "^2.4.0" + +"@graphql-tools/wrap@^10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-10.0.1.tgz#9e3d27d2723962c26c4377d5d7ab0d3038bf728c" + integrity sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg== + dependencies: + "@graphql-tools/delegate" "^10.0.3" + "@graphql-tools/schema" "^10.0.0" + "@graphql-tools/utils" "^10.0.0" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + +"@graphql-yoga/logger@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@graphql-yoga/logger/-/logger-2.0.0.tgz#51c91cf07fc42b0d100d887315a20a4c9cac342e" + integrity sha512-Mg8psdkAp+YTG1OGmvU+xa6xpsAmSir0hhr3yFYPyLNwzUj95DdIwsMpKadDj9xDpYgJcH3Hp/4JMal9DhQimA== + dependencies: + tslib "^2.5.2" + +"@graphql-yoga/subscription@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@graphql-yoga/subscription/-/subscription-5.0.0.tgz#c0aedd3f7c0c0564a2fe687e9f45c16f70bdffc5" + integrity sha512-Ri7sK8hmxd/kwaEa0YT8uqQUb2wOLsmBMxI90QDyf96lzOMJRgBuNYoEkU1pSgsgmW2glceZ96sRYfaXqwVxUw== + dependencies: + "@graphql-yoga/typed-event-target" "^3.0.0" + "@repeaterjs/repeater" "^3.0.4" + "@whatwg-node/events" "^0.1.0" + tslib "^2.5.2" + +"@graphql-yoga/typed-event-target@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@graphql-yoga/typed-event-target/-/typed-event-target-3.0.0.tgz#57dc42e052d8294555d26ee61854d72a0236fee0" + integrity sha512-w+liuBySifrstuHbFrHoHAEyVnDFVib+073q8AeAJ/qqJfvFvAwUPLLtNohR/WDVRgSasfXtl3dcNuVJWN+rjg== + dependencies: + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.5.2" + "@hapi/accept@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523" @@ -4065,6 +5004,14 @@ "@hapi/boom" "9.x.x" "@hapi/hoek" "9.x.x" +"@hapi/accept@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-6.0.3.tgz#eef0800a4f89cd969da8e5d0311dc877c37279ab" + integrity sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/ammo@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@hapi/ammo/-/ammo-5.0.1.tgz#9d34560f5c214eda563d838c01297387efaab490" @@ -4072,6 +5019,13 @@ dependencies: "@hapi/hoek" "9.x.x" +"@hapi/ammo@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@hapi/ammo/-/ammo-6.0.1.tgz#1bc9f7102724ff288ca03b721854fc5393ad123a" + integrity sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/b64@5.x.x": version "5.0.0" resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-5.0.0.tgz#b8210cbd72f4774985e78569b77e97498d24277d" @@ -4079,6 +5033,13 @@ dependencies: "@hapi/hoek" "9.x.x" +"@hapi/b64@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-6.0.1.tgz#786b47dc070e14465af49e2428c1025bd06ed3df" + integrity sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/boom@9.x.x", "@hapi/boom@^9.1.0": version "9.1.4" resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6" @@ -4086,6 +5047,13 @@ dependencies: "@hapi/hoek" "9.x.x" +"@hapi/boom@^10.0.0", "@hapi/boom@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-10.0.1.tgz#ebb14688275ae150aa6af788dbe482e6a6062685" + integrity sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/bounce@2.x.x", "@hapi/bounce@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@hapi/bounce/-/bounce-2.0.0.tgz#e6ef56991c366b1e2738b2cd83b01354d938cf3d" @@ -4094,11 +5062,24 @@ "@hapi/boom" "9.x.x" "@hapi/hoek" "9.x.x" +"@hapi/bounce@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@hapi/bounce/-/bounce-3.0.1.tgz#25a51bf95733749c557c6bf948048bffa66435e4" + integrity sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/bourne@2.x.x": version "2.1.0" resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.1.0.tgz#66aff77094dc3080bd5df44ec63881f2676eb020" integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== +"@hapi/bourne@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-3.0.0.tgz#f11fdf7dda62fe8e336fa7c6642d9041f30356d7" + integrity sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w== + "@hapi/call@^8.0.0": version "8.0.1" resolved "https://registry.yarnpkg.com/@hapi/call/-/call-8.0.1.tgz#9e64cd8ba6128eb5be6e432caaa572b1ed8cd7c0" @@ -4107,6 +5088,14 @@ "@hapi/boom" "9.x.x" "@hapi/hoek" "9.x.x" +"@hapi/call@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@hapi/call/-/call-9.0.1.tgz#569b87d5b67abf0e58fb82a3894a61aaed3ca92e" + integrity sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/catbox-memory@^5.0.0": version "5.0.1" resolved "https://registry.yarnpkg.com/@hapi/catbox-memory/-/catbox-memory-5.0.1.tgz#cb63fca0ded01d445a2573b38eb2688df67f70ac" @@ -4115,6 +5104,14 @@ "@hapi/boom" "9.x.x" "@hapi/hoek" "9.x.x" +"@hapi/catbox-memory@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz#8f6b04c0cf2ce25da470324df360bd4e8d68b6ec" + integrity sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/catbox@^11.1.1": version "11.1.1" resolved "https://registry.yarnpkg.com/@hapi/catbox/-/catbox-11.1.1.tgz#d277e2d5023fd69cddb33d05b224ea03065fec0c" @@ -4125,6 +5122,16 @@ "@hapi/podium" "4.x.x" "@hapi/validate" "1.x.x" +"@hapi/catbox@^12.1.1": + version "12.1.1" + resolved "https://registry.yarnpkg.com/@hapi/catbox/-/catbox-12.1.1.tgz#9339dca0a5b18b3ca0a825ac5dfc916dbc5bab83" + integrity sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/podium" "^5.0.0" + "@hapi/validate" "^2.0.1" + "@hapi/content@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@hapi/content/-/content-5.0.2.tgz#ae57954761de570392763e64cdd75f074176a804" @@ -4132,6 +5139,13 @@ dependencies: "@hapi/boom" "9.x.x" +"@hapi/content@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@hapi/content/-/content-6.0.0.tgz#2427af3bac8a2f743512fce2a70cbdc365af29df" + integrity sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA== + dependencies: + "@hapi/boom" "^10.0.0" + "@hapi/cryptiles@5.x.x": version "5.1.0" resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-5.1.0.tgz#655de4cbbc052c947f696148c83b187fc2be8f43" @@ -4139,11 +5153,23 @@ dependencies: "@hapi/boom" "9.x.x" +"@hapi/cryptiles@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-6.0.1.tgz#7868a9d4233567ed66f0a9caf85fdcc56e980621" + integrity sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/file@2.x.x": version "2.0.0" resolved "https://registry.yarnpkg.com/@hapi/file/-/file-2.0.0.tgz#2ecda37d1ae9d3078a67c13b7da86e8c3237dfb9" integrity sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ== +"@hapi/file@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@hapi/file/-/file-3.0.0.tgz#f1fd824493ac89a6fceaf89c824afc5ae2121c09" + integrity sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q== + "@hapi/hapi@^20.0.0": version "20.2.2" resolved "https://registry.yarnpkg.com/@hapi/hapi/-/hapi-20.2.2.tgz#5810efbf5c0aad367932e86d4066d82ac817e98c" @@ -4168,6 +5194,30 @@ "@hapi/topo" "^5.0.0" "@hapi/validate" "^1.1.1" +"@hapi/hapi@^21.1.0": + version "21.3.2" + resolved "https://registry.yarnpkg.com/@hapi/hapi/-/hapi-21.3.2.tgz#f9f94c1c28ccad1444c838d04070fa1cd0409b33" + integrity sha512-tbm0zmsdUj8iw4NzFV30FST/W4qzh/Lsw6Q5o5gAhOuoirWvxm8a4G3o60bqBw8nXvRNJ8uLtE0RKLlZINxHcQ== + dependencies: + "@hapi/accept" "^6.0.1" + "@hapi/ammo" "^6.0.1" + "@hapi/boom" "^10.0.1" + "@hapi/bounce" "^3.0.1" + "@hapi/call" "^9.0.1" + "@hapi/catbox" "^12.1.1" + "@hapi/catbox-memory" "^6.0.1" + "@hapi/heavy" "^8.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/mimos" "^7.0.1" + "@hapi/podium" "^5.0.1" + "@hapi/shot" "^6.0.1" + "@hapi/somever" "^4.1.1" + "@hapi/statehood" "^8.1.1" + "@hapi/subtext" "^8.1.0" + "@hapi/teamwork" "^6.0.0" + "@hapi/topo" "^6.0.1" + "@hapi/validate" "^2.0.1" + "@hapi/heavy@^7.0.1": version "7.0.1" resolved "https://registry.yarnpkg.com/@hapi/heavy/-/heavy-7.0.1.tgz#73315ae33b6e7682a0906b7a11e8ca70e3045874" @@ -4177,11 +5227,25 @@ "@hapi/hoek" "9.x.x" "@hapi/validate" "1.x.x" +"@hapi/heavy@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@hapi/heavy/-/heavy-8.0.1.tgz#e2be4a6a249005b5a587f7604aafa8ed02461fb6" + integrity sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/validate" "^2.0.1" + "@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.0.4": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== +"@hapi/hoek@^11.0.2": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-11.0.4.tgz#42a7f244fd3dd777792bfb74b8c6340ae9182f37" + integrity sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ== + "@hapi/iron@6.x.x": version "6.0.0" resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-6.0.0.tgz#ca3f9136cda655bdd6028de0045da0de3d14436f" @@ -4193,6 +5257,17 @@ "@hapi/cryptiles" "5.x.x" "@hapi/hoek" "9.x.x" +"@hapi/iron@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-7.0.1.tgz#f74bace8dad9340c7c012c27c078504f070f14b5" + integrity sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ== + dependencies: + "@hapi/b64" "^6.0.1" + "@hapi/boom" "^10.0.1" + "@hapi/bourne" "^3.0.0" + "@hapi/cryptiles" "^6.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/mimos@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@hapi/mimos/-/mimos-6.0.0.tgz#daa523d9c07222c7e8860cb7c9c5501fd6506484" @@ -4201,6 +5276,14 @@ "@hapi/hoek" "9.x.x" mime-db "1.x.x" +"@hapi/mimos@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@hapi/mimos/-/mimos-7.0.1.tgz#5b65c76bb9da28ba34b0092215891f2c72bc899d" + integrity sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew== + dependencies: + "@hapi/hoek" "^11.0.2" + mime-db "^1.52.0" + "@hapi/nigel@4.x.x": version "4.0.2" resolved "https://registry.yarnpkg.com/@hapi/nigel/-/nigel-4.0.2.tgz#8f84ef4bca4fb03b2376463578f253b0b8e863c4" @@ -4209,6 +5292,14 @@ "@hapi/hoek" "^9.0.4" "@hapi/vise" "^4.0.0" +"@hapi/nigel@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@hapi/nigel/-/nigel-5.0.1.tgz#a6dfe357e9d48d944e2ffc552bd95cb701d79ee9" + integrity sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/vise" "^5.0.1" + "@hapi/pez@^5.0.1": version "5.0.3" resolved "https://registry.yarnpkg.com/@hapi/pez/-/pez-5.0.3.tgz#b75446e6fef8cbb16816573ab7da1b0522e7a2a1" @@ -4220,6 +5311,17 @@ "@hapi/hoek" "9.x.x" "@hapi/nigel" "4.x.x" +"@hapi/pez@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@hapi/pez/-/pez-6.1.0.tgz#64d9f95580fc7d8f1d13437ee4a8676709954fda" + integrity sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg== + dependencies: + "@hapi/b64" "^6.0.1" + "@hapi/boom" "^10.0.1" + "@hapi/content" "^6.0.0" + "@hapi/hoek" "^11.0.2" + "@hapi/nigel" "^5.0.1" + "@hapi/podium@4.x.x", "@hapi/podium@^4.1.1": version "4.1.3" resolved "https://registry.yarnpkg.com/@hapi/podium/-/podium-4.1.3.tgz#91e20838fc2b5437f511d664aabebbb393578a26" @@ -4229,6 +5331,15 @@ "@hapi/teamwork" "5.x.x" "@hapi/validate" "1.x.x" +"@hapi/podium@^5.0.0", "@hapi/podium@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@hapi/podium/-/podium-5.0.1.tgz#f292b4c0ca3118747394a102c6c3340bda96662f" + integrity sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/teamwork" "^6.0.0" + "@hapi/validate" "^2.0.1" + "@hapi/shot@^5.0.5": version "5.0.5" resolved "https://registry.yarnpkg.com/@hapi/shot/-/shot-5.0.5.tgz#a25c23d18973bec93c7969c51bf9579632a5bebd" @@ -4237,6 +5348,14 @@ "@hapi/hoek" "9.x.x" "@hapi/validate" "1.x.x" +"@hapi/shot@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@hapi/shot/-/shot-6.0.1.tgz#ea84d1810b7c8599d5517c23b4ec55a529d7dc16" + integrity sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/validate" "^2.0.1" + "@hapi/somever@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@hapi/somever/-/somever-3.0.1.tgz#9961cd5bdbeb5bb1edc0b2acdd0bb424066aadcc" @@ -4245,6 +5364,14 @@ "@hapi/bounce" "2.x.x" "@hapi/hoek" "9.x.x" +"@hapi/somever@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@hapi/somever/-/somever-4.1.1.tgz#b492c78408303c72cd1a39c5060f35d18a404b27" + integrity sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg== + dependencies: + "@hapi/bounce" "^3.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/statehood@^7.0.4": version "7.0.4" resolved "https://registry.yarnpkg.com/@hapi/statehood/-/statehood-7.0.4.tgz#6acb9d0817b5c657089356f7d9fd60af0bce4f41" @@ -4258,6 +5385,19 @@ "@hapi/iron" "6.x.x" "@hapi/validate" "1.x.x" +"@hapi/statehood@^8.1.1": + version "8.1.1" + resolved "https://registry.yarnpkg.com/@hapi/statehood/-/statehood-8.1.1.tgz#db4bd14c90810a1389763cb0b0b8f221aa4179c1" + integrity sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/bounce" "^3.0.1" + "@hapi/bourne" "^3.0.0" + "@hapi/cryptiles" "^6.0.1" + "@hapi/hoek" "^11.0.2" + "@hapi/iron" "^7.0.1" + "@hapi/validate" "^2.0.1" + "@hapi/subtext@^7.0.3": version "7.0.4" resolved "https://registry.yarnpkg.com/@hapi/subtext/-/subtext-7.0.4.tgz#aa46e4b45aad8115938334d5a3620a17b3b33ee5" @@ -4271,11 +5411,29 @@ "@hapi/pez" "^5.0.1" "@hapi/wreck" "17.x.x" +"@hapi/subtext@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@hapi/subtext/-/subtext-8.1.0.tgz#58733020a6655bc4d978df9e2f75e31696ff3f91" + integrity sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/bourne" "^3.0.0" + "@hapi/content" "^6.0.0" + "@hapi/file" "^3.0.0" + "@hapi/hoek" "^11.0.2" + "@hapi/pez" "^6.1.0" + "@hapi/wreck" "^18.0.1" + "@hapi/teamwork@5.x.x", "@hapi/teamwork@^5.1.1": version "5.1.1" resolved "https://registry.yarnpkg.com/@hapi/teamwork/-/teamwork-5.1.1.tgz#4d2ba3cac19118a36c44bf49a3a47674de52e4e4" integrity sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg== +"@hapi/teamwork@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@hapi/teamwork/-/teamwork-6.0.0.tgz#b3a173cf811ba59fc6ee22318a1b51f4561f06e0" + integrity sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A== + "@hapi/topo@^5.0.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" @@ -4283,6 +5441,13 @@ dependencies: "@hapi/hoek" "^9.0.0" +"@hapi/topo@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-6.0.2.tgz#f219c1c60da8430228af4c1f2e40c32a0d84bbb4" + integrity sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/validate@1.x.x", "@hapi/validate@^1.1.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@hapi/validate/-/validate-1.1.3.tgz#f750a07283929e09b51aa16be34affb44e1931ad" @@ -4291,6 +5456,14 @@ "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" +"@hapi/validate@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@hapi/validate/-/validate-2.0.1.tgz#45cf228c4c8cfc61ba2da7e0a5ba93ff3b9afff1" + integrity sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/topo" "^6.0.1" + "@hapi/vise@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@hapi/vise/-/vise-4.0.0.tgz#c6a94fe121b94a53bf99e7489f7fcc74c104db02" @@ -4298,6 +5471,13 @@ dependencies: "@hapi/hoek" "9.x.x" +"@hapi/vise@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@hapi/vise/-/vise-5.0.1.tgz#5c9f16bcf1c039ddd4b6cad5f32d71eeb6bb7dac" + integrity sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A== + dependencies: + "@hapi/hoek" "^11.0.2" + "@hapi/wreck@17.x.x": version "17.2.0" resolved "https://registry.yarnpkg.com/@hapi/wreck/-/wreck-17.2.0.tgz#a5b69b724fa8fa25550fb02f55c649becfc59f63" @@ -4307,6 +5487,15 @@ "@hapi/bourne" "2.x.x" "@hapi/hoek" "9.x.x" +"@hapi/wreck@^18.0.1": + version "18.0.1" + resolved "https://registry.yarnpkg.com/@hapi/wreck/-/wreck-18.0.1.tgz#6df04532be25fd128c5244e72ccc21438cf8bb65" + integrity sha512-OLHER70+rZxvDl75xq3xXOfd3e8XIvz8fWY0dqg92UvhZ29zo24vQgfqgHSYhB5ZiuFpSLeriOisAlxAo/1jWg== + dependencies: + "@hapi/boom" "^10.0.1" + "@hapi/bourne" "^3.0.0" + "@hapi/hoek" "^11.0.2" + "@headlessui/react@^1.7.13": version "1.7.13" resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.13.tgz#fd150b394954e9f1d86ed2340cffd1217d6e7628" @@ -4324,29 +5513,24 @@ resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.17.tgz#42a8086bc434ceefc03592f20c4e81b11e915cf8" integrity sha512-90GMZktkA53YbNzHp6asVEDevUQCMtxWH+2UK2S8OpnLEu7qckTJPhNxNQG52xIR1WFTwFqtH6bt7a60ZNcLLA== -"@humanwhocodes/config-array@^0.10.4": - version "0.10.4" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" - integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/gitignore-to-minimatch@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" - integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -4375,6 +5559,30 @@ cborg "^1.6.0" multiformats "^9.5.4" +"@ipld/dag-cbor@^9.0.0", "@ipld/dag-cbor@^9.0.1": + version "9.0.5" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-9.0.5.tgz#1fdff37cc9527932bfb8b94bbe01b563d6d43d88" + integrity sha512-TyqgtxEojc98rvxg4NGM+73JzQeM4+tK2VQes/in2mdyhO+1wbGuBijh1tvi9BErQ/dEblxs9v4vEQSX8mFCIw== + dependencies: + cborg "^4.0.0" + multiformats "^12.0.1" + +"@ipld/dag-cbor@^9.0.7": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-9.0.8.tgz#b334258fdf756989872c5765f3a8e7e59d126daa" + integrity sha512-ETWJ7p7lmGw5X+BuI/7rf4/k56xyOvAOVNUVuQmnGYBdJjObLPgS+vyFxRk4odATlkyZqCq2MLNY52bhE6SlRA== + dependencies: + cborg "^4.0.0" + multiformats "^13.0.0" + +"@ipld/dag-json@^10.0.0": + version "10.1.7" + resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-10.1.7.tgz#95d643a8cd36364356c80f0b74b3d75c52b36efa" + integrity sha512-ipraTPMA40sZAtUYwFvjHeQjReDJXWI8V3lrOeyedKxMb9rOOCS0B7eodRoWM3RIS2qMqtnu1oZr8kP+QJEN0Q== + dependencies: + cborg "^4.0.0" + multiformats "^13.0.0" + "@ipld/dag-json@^8.0.1": version "8.0.11" resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" @@ -4390,6 +5598,25 @@ dependencies: multiformats "^9.5.4" +"@ipld/dag-pb@^4.0.0": + version "4.0.8" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.0.8.tgz#d9bfc52aa1d7a7356d2958f8766d85fecc5e4f15" + integrity sha512-693AqMY2jvhe+w4jSwjnDrbhxIu39gm1H4f6/KD5gG+6VFMM6EXV7vq85BvEf8CRsnA0+auWfA29/S8gbWI0Ew== + dependencies: + multiformats "^13.0.0" + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -4911,6 +6138,11 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@kamilkisiela/fast-url-parser@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz#9d68877a489107411b953c54ea65d0658b515809" + integrity sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew== + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -5584,8 +6816,111 @@ resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz#18221a38a6a307d6b0a5844dd592ad53fa27091e" integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== dependencies: - npmlog "^4.1.2" - write-file-atomic "^3.0.3" + npmlog "^4.1.2" + write-file-atomic "^3.0.3" + +"@libp2p/crypto@^1.0.11": + version "1.0.17" + resolved "https://registry.yarnpkg.com/@libp2p/crypto/-/crypto-1.0.17.tgz#e64043328c0c866bf7f4cc8560b4f483e9c745dc" + integrity sha512-Oeg0Eb/EvAho0gVkOgemXEgrVxWaT3x/DpFgkBdZ9qGxwq75w/E/oPc7souqBz+l1swfz37GWnwV7bIb4Xv5Ag== + dependencies: + "@libp2p/interface-keys" "^1.0.2" + "@libp2p/interfaces" "^3.2.0" + "@noble/ed25519" "^1.6.0" + "@noble/secp256k1" "^1.5.4" + multiformats "^11.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^4.0.2" + +"@libp2p/interface-connection@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@libp2p/interface-connection/-/interface-connection-4.0.0.tgz#fcc830ca891820fac89a4c6bd4fcc2df4874f49b" + integrity sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + it-stream-types "^1.0.4" + uint8arraylist "^2.1.2" + +"@libp2p/interface-keychain@^2.0.0": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@libp2p/interface-keychain/-/interface-keychain-2.0.5.tgz#6ce104f38cf07ad72c9dfbe471a689f4ea4b4687" + integrity sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + multiformats "^11.0.0" + +"@libp2p/interface-keys@^1.0.2": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@libp2p/interface-keys/-/interface-keys-1.0.8.tgz#2c6b55136113ae7cf78133d3c459cdf0455b29ae" + integrity sha512-CJ1SlrwuoHMquhEEWS77E+4vv7hwB7XORkqzGQrPQmA9MRdIEZRS64bA4JqCLUDa4ltH0l+U1vp0oZHLT67NEA== + +"@libp2p/interface-peer-id@^2.0.0", "@libp2p/interface-peer-id@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-id/-/interface-peer-id-2.0.2.tgz#6302e70b6fc17c451bc3daa11447d059357bcc32" + integrity sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg== + dependencies: + multiformats "^11.0.0" + +"@libp2p/interface-peer-info@^1.0.2": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-info/-/interface-peer-info-1.0.10.tgz#566026de95a0817b9e853c982b313541b7960c0b" + integrity sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-pubsub@^3.0.0": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@libp2p/interface-pubsub/-/interface-pubsub-3.0.7.tgz#cc1c7c47c883daddd2b84d83d719b3826943be3b" + integrity sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + it-pushable "^3.0.0" + uint8arraylist "^2.1.2" + +"@libp2p/interface@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-1.1.1.tgz#f37ea4930bd74e1299fbcafa49fdab39a28abba9" + integrity sha512-g6xgF+q38ZDTRkjuJfuOByS4N0zGld+VPRiWPXYX8wA/9vS6lqJwKUoC6V33KUhP/zXHCkJaSD6z94fUbNM8vw== + dependencies: + "@multiformats/multiaddr" "^12.1.10" + it-pushable "^3.2.1" + it-stream-types "^2.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/interfaces@^3.0.0", "@libp2p/interfaces@^3.2.0": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@libp2p/interfaces/-/interfaces-3.3.2.tgz#5d8079be845b0960939b5b18880e785a4714465a" + integrity sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g== + +"@libp2p/logger@^2.0.0", "@libp2p/logger@^2.0.5": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-2.1.1.tgz#e12e6c320ea64252af954bcec996895098d1cd36" + integrity sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA== + dependencies: + "@libp2p/interface-peer-id" "^2.0.2" + "@multiformats/multiaddr" "^12.1.3" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^11.0.2" + +"@libp2p/peer-id@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-2.0.4.tgz#d50d2ae4663ef79f6e31ce4eaf25e1f44e1667ab" + integrity sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.2.0" + multiformats "^11.0.0" + uint8arrays "^4.0.2" "@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": version "1.1.2" @@ -5893,6 +7228,38 @@ resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== +"@multiformats/multiaddr-to-uri@^9.0.1": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-9.0.7.tgz#44881352b1d9d98b53451982cd433f0f45ad7e24" + integrity sha512-i3ldtPMN6XJt+MCi34hOl0wGuGEHfWWMw6lmNag5BpckPwPTf9XGOOFMmh7ed/uO3Vjah/g173iOe61HTQVoBA== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr@^11.0.0", "@multiformats/multiaddr@^11.1.5": + version "11.6.1" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-11.6.1.tgz#ec46984a298e715e27a398434c087856db5f3185" + integrity sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + dns-over-http-resolver "^2.1.0" + err-code "^3.0.1" + multiformats "^11.0.0" + uint8arrays "^4.0.2" + varint "^6.0.0" + +"@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.10", "@multiformats/multiaddr@^12.1.3": + version "12.1.12" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.1.12.tgz#d1609933dc5589d53f6b77fb88fe5e5ea787deae" + integrity sha512-hrY4uN/oeYhn410jBSpVXn37eenn4djKOj6Dh20Yh4xzGgqmS6u+/X08zQfHgWNjk7NJejPUcRfHEfs8e/MOcw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@libp2p/interface" "^1.0.0" + dns-over-http-resolver "3.0.0" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + "@multiformats/murmur3@^1.0.1", "@multiformats/murmur3@^1.0.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-1.1.3.tgz#70349166992e5f981f1ddff0200fa775b2bf6606" @@ -5906,7 +7273,14 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-14.0.1.tgz#7d03c9042c205a320aef2ea3f83c2d16b6825563" integrity sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A== -"@next/eslint-plugin-next@12.3.1", "@next/eslint-plugin-next@^12.1.5": +"@next/eslint-plugin-next@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz#29b041233fac7417e22eefa4146432d5cd910820" + integrity sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q== + dependencies: + glob "10.3.10" + +"@next/eslint-plugin-next@^12.1.5": version "12.3.1" resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz#b821f27b0f175954d8d18e5d323fce040ecc79a6" integrity sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw== @@ -5958,6 +7332,16 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.1.tgz#be3dd8b3729ec51c99ff04b51e2b235756d02b6e" integrity sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg== +"@noble/ciphers@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.3.0.tgz#6ba3090afdc7a7051393486f6af210e62e0f04ec" + integrity sha512-ldbrnOjmNRwFdXcTM6uXDcxpMIFrbzAWNnpBPp4oTJTFF0XByGD6vf45WrehZGXRQTRVV+Zm8YP+EgEf+e4cWA== + +"@noble/ciphers@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.4.1.tgz#977fc35f563a4ca315ebbc4cbb1f9b670bd54456" + integrity sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg== + "@noble/curves@1.1.0", "@noble/curves@~1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" @@ -5965,16 +7349,40 @@ dependencies: "@noble/hashes" "1.3.1" +"@noble/curves@1.2.0", "@noble/curves@^1.0.0", "@noble/curves@^1.1.0", "@noble/curves@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@^1.2.0", "@noble/curves@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + "@noble/ed25519@^1.5.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.1.tgz#6899660f6fbb97798a6fbd227227c4589a454724" integrity sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw== +"@noble/ed25519@^1.6.0": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== + "@noble/hashes@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== +"@noble/hashes@1.1.5", "@noble/hashes@~1.1.1": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" + integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== + "@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" @@ -5985,12 +7393,17 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== -"@noble/hashes@^1.2.0", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": +"@noble/hashes@1.3.2", "@noble/hashes@^1.1.2", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.0", "@noble/hashes@^1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": +"@noble/hashes@1.3.3", "@noble/hashes@^1.3.2", "@noble/hashes@~1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.4", "@noble/secp256k1@^1.6.3", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== @@ -6013,7 +7426,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -6302,6 +7715,53 @@ node-gyp "^7.1.0" read-package-json-fast "^2.0.1" +"@oclif/core@^3.13.2", "@oclif/core@^3.15.1", "@oclif/core@^3.16.0": + version "3.18.1" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.18.1.tgz#a8c9ee3848ad663d5694bef6079116c70d32fc55" + integrity sha512-l0LsjzGcqjbUEdeSBX6bdZieVmEv82Q0W3StiyaDMEnPZ9KLH28HrLpcZg6d50mCYW9CUZNzmRo6qrCHWrgLKw== + dependencies: + "@types/cli-progress" "^3.11.5" + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.12.0" + color "^4.2.3" + debug "^4.3.4" + ejs "^3.1.9" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.3" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" + +"@oclif/plugin-help@^6.0.7": + version "6.0.11" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-6.0.11.tgz#f287edbc16ab94e4395d36c827999b1be043cbd2" + integrity sha512-4O96jKw7E3c222jaS/s/zOCNghtw52fVpd/h7CaejmV/99bkLTCrN2haeNcIR5WbwhyhvkO+GQsLMurLGdfB2Q== + dependencies: + "@oclif/core" "^3.16.0" + +"@oclif/plugin-version@^2.0.8": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@oclif/plugin-version/-/plugin-version-2.0.11.tgz#f849c97761e0beb1bc7daf7386ba4211d1bb4104" + integrity sha512-FGwIJDaSf8QqXdzSPfGiXihOG3SL1jPMiWDcIVHtOIUMoB3FS5SUQaNwLhr1oq5ml4HRPp8OjfTGN/wJyL0RHQ== + dependencies: + "@oclif/core" "^3.15.1" + "@octokit/auth-token@^2.4.4": version "2.5.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" @@ -6408,6 +7868,14 @@ dependencies: "@octokit/openapi-types" "^12.11.0" +"@opentelemetry/api-logs@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.41.0.tgz#0626a680bde1c0d0daa320268c8a8dcf58f81b90" + integrity sha512-kopW4ZEKX2mgaPi9jh3lTP+2ixbe0z+tAEOn3v0ZM6jzQl7z+2C1ZZjU1cVYbX+RDGqu7n6BMyv5wmWuqiuKYQ== + dependencies: + "@opentelemetry/api" "^1.0.0" + tslib "^2.3.1" + "@opentelemetry/api-metrics@0.28.0": version "0.28.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api-metrics/-/api-metrics-0.28.0.tgz#698acbb2f570ece49815fca8be6f3070ae41f016" @@ -6415,11 +7883,24 @@ dependencies: "@opentelemetry/api" "^1.0.0" +"@opentelemetry/api@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.3.0.tgz#27c6f776ac3c1c616651e506a89f438a0ed6a055" + integrity sha512-YveTnGNsFFixTKJz09Oi4zYkiLT5af3WpZDu4aIUM7xX+2bHAkOJayFTVQd6zB8kkWPpbua4Ha6Ql00grdLlJQ== + "@opentelemetry/api@^1.0.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.2.0.tgz#89ef99401cde6208cff98760b67663726ef26686" integrity sha512-0nBr+VZNKm9tvNDZFstI3Pq1fCTEDK5OZTnVKNvBNAKgd0yIvmwsP4m61rEv7ZP+tOUjWJhROpxK5MsnlF911g== +"@opentelemetry/core@1.15.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.15.0.tgz#2ba928df0443732825a72a766c2edae9a7f9863f" + integrity sha512-GGTS6BytfaN8OgbCUOnxg/a9WVsVUj0484zXHZuBzvIXx7V4Tmkb0IHnnhS7Q0cBLNLgjNuvrCpQaP8fIvO4bg== + dependencies: + "@opentelemetry/semantic-conventions" "1.15.0" + tslib "^2.3.1" + "@opentelemetry/core@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.2.0.tgz#cc6dabb7bb2f317427135863ba6bebe22b0b475e" @@ -6427,6 +7908,28 @@ dependencies: "@opentelemetry/semantic-conventions" "1.2.0" +"@opentelemetry/exporter-metrics-otlp-http@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.41.0.tgz#92074643937c94fa7508e882c2035111bc92589c" + integrity sha512-YttGW1XEHB9GocXtEY+n0qAT2Ewi/P4l7882kYK4kEl78EAnVvvWvFX1El+TvHA3D2LHDxx9ASu1i+icCqj/Fw== + dependencies: + "@opentelemetry/core" "1.15.0" + "@opentelemetry/otlp-exporter-base" "0.41.0" + "@opentelemetry/otlp-transformer" "0.41.0" + "@opentelemetry/resources" "1.15.0" + "@opentelemetry/sdk-metrics" "1.15.0" + tslib "^2.3.1" + +"@opentelemetry/exporter-prometheus@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.41.0.tgz#cd2266ee2ad9990e4f104aac62bebaab3002da30" + integrity sha512-ydoRgNo8CzMNCosyFchfHOV4KlKhEFPFF9uVQD8K2r4VV/AE7uxd8uVj+1uv64YZMjWuxSnNCxJd0VQpDWQFKw== + dependencies: + "@opentelemetry/core" "1.15.0" + "@opentelemetry/resources" "1.15.0" + "@opentelemetry/sdk-metrics" "1.15.0" + tslib "^2.3.1" + "@opentelemetry/exporter-prometheus@^0.28.0": version "0.28.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.28.0.tgz#760c62a552906b9a4d4886cd05b662ec29c0f594" @@ -6436,6 +7939,48 @@ "@opentelemetry/core" "1.2.0" "@opentelemetry/sdk-metrics-base" "0.28.0" +"@opentelemetry/exporter-trace-otlp-http@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.41.0.tgz#54b412e28018daa3164a3857a7fc05ce61579b0e" + integrity sha512-xG/EJAphB8SFi635vUWJ7rNOwU2nTSIWz1zCu1G6tzQUcej5M1FYtTuUeoJ+HrjHUDOq0SgFbvzfFh6ReggWMQ== + dependencies: + "@opentelemetry/core" "1.15.0" + "@opentelemetry/otlp-exporter-base" "0.41.0" + "@opentelemetry/otlp-transformer" "0.41.0" + "@opentelemetry/resources" "1.15.0" + "@opentelemetry/sdk-trace-base" "1.15.0" + tslib "^2.3.1" + +"@opentelemetry/otlp-exporter-base@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.41.0.tgz#f9d61c66b94b2f7c5b3be8dea919cfc99fca25b9" + integrity sha512-fSHtZznIU6kvCLFQC77nOhHj059G1sc/wNl96YiPdro4A8t8ue//ET0yAtpRCQ9lynn4RNrpsw5iEFJszEbmLg== + dependencies: + "@opentelemetry/core" "1.15.0" + tslib "^2.3.1" + +"@opentelemetry/otlp-transformer@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.0.tgz#5c370e6fb929829d8e13cb4c72e28542456da24d" + integrity sha512-a5GqVSdVIhAoYcQrdWQAeMbrkz0iDwKC6BUsuqPuykh+T4QZzrF6cwneOXKbQI5Dl7ms6ha9dYHf4Ka0kc66ZQ== + dependencies: + "@opentelemetry/api-logs" "0.41.0" + "@opentelemetry/core" "1.15.0" + "@opentelemetry/resources" "1.15.0" + "@opentelemetry/sdk-logs" "0.41.0" + "@opentelemetry/sdk-metrics" "1.15.0" + "@opentelemetry/sdk-trace-base" "1.15.0" + tslib "^2.3.1" + +"@opentelemetry/resources@1.15.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.15.0.tgz#748a6ae9017636b8b30f5dee1fff3e166e51f63d" + integrity sha512-Sb8A6ZXHXDlgHv32UNRE3y8McWE3vkb5dsSttYArYa5ZpwjiF5ge0vnnKUUnG7bY0AgF9VBIOORZE8gsrnD2WA== + dependencies: + "@opentelemetry/core" "1.15.0" + "@opentelemetry/semantic-conventions" "1.15.0" + tslib "^2.3.1" + "@opentelemetry/resources@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.2.0.tgz#5046d104d33839e58cca3184547c5dc26602f228" @@ -6444,6 +7989,15 @@ "@opentelemetry/core" "1.2.0" "@opentelemetry/semantic-conventions" "1.2.0" +"@opentelemetry/sdk-logs@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.41.0.tgz#576a29bc3ca91d92754447250e85fffc3b661013" + integrity sha512-+Qs8uHcd/tYKS1n6lfSPiQXMOuyPN0c3xKeyWjD5mExRvmA1H6SIYfZmB6KeQNXWODK4z4JtWo5g5Efe0gJ1Vg== + dependencies: + "@opentelemetry/core" "1.15.0" + "@opentelemetry/resources" "1.15.0" + tslib "^2.3.1" + "@opentelemetry/sdk-metrics-base@0.28.0", "@opentelemetry/sdk-metrics-base@^0.28.0": version "0.28.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics-base/-/sdk-metrics-base-0.28.0.tgz#8b317bbf45607594e749795ac56512ffd0d306b9" @@ -6454,6 +8008,33 @@ "@opentelemetry/resources" "1.2.0" lodash.merge "4.6.2" +"@opentelemetry/sdk-metrics@1.15.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.0.tgz#e47ad688882fc2daedcbbe3db16a5c110feb23e8" + integrity sha512-fFUnAcPvlXO39nlIduGuaeCuiZyFtSLCn9gW/0djFRO5DFst4m4gcT6+llXvNWuUvtGB49s56NP10B9IZRN0Rw== + dependencies: + "@opentelemetry/core" "1.15.0" + "@opentelemetry/resources" "1.15.0" + lodash.merge "^4.6.2" + tslib "^2.3.1" + +"@opentelemetry/sdk-trace-base@1.15.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.0.tgz#92340ded8f9fec1aaa63afb40c6e7e01769c2852" + integrity sha512-udt1c9VHipbZwvCPIQR1VLg25Z4AMR/g0X8KmcInbFruGWQ/lptVPkz3yvWAsGSta5yHNQ3uoPwcyCygGnQ6Lg== + dependencies: + "@opentelemetry/core" "1.15.0" + "@opentelemetry/resources" "1.15.0" + "@opentelemetry/semantic-conventions" "1.15.0" + tslib "^2.3.1" + +"@opentelemetry/semantic-conventions@1.15.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.0.tgz#e6173daa5fd61f353b02c858001388bf26e9d059" + integrity sha512-f3wwFrFyCpGrFBrFs7lCUJSCSCGyeKG52c+EKeobs3Dd29M75yO6GYkt6PkYPfDawxSlV5p+4yJPPk8tPObzTQ== + dependencies: + tslib "^2.3.1" + "@opentelemetry/semantic-conventions@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.2.0.tgz#1549c1d88dc45d720b8487e39077eacc69636c73" @@ -6464,14 +8045,6 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.7.0.tgz#af80a1ef7cf110ea3a68242acd95648991bcd763" integrity sha512-FGBx/Qd09lMaqQcogCHyYrFEpTx4cAjeS+48lMIR12z7LdH+zofGDVQSubN59nL6IpubfKqTeIDu9rNO28iHVA== -"@overnightjs/logger@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@overnightjs/logger/-/logger-1.2.1.tgz#dde726683f39abf726fde57cff578fca96bc183a" - integrity sha512-ssLUjjj/DXl6m4oydyA6vgVHyJcis4Ui0hS7+EyOxZVMXbiVZeGOficfJfgELTNqTbHLmTb3TBVyJspNDkqbLw== - dependencies: - colors "^1.3.3" - util "^0.11.1" - "@parcel/watcher-android-arm64@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz#d82e74bb564ebd4d8a88791d273a3d2bd61e27ab" @@ -6564,6 +8137,16 @@ "@parcel/watcher-win32-ia32" "2.3.0" "@parcel/watcher-win32-x64" "2.3.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@polkadot/networks@7.9.2": version "7.9.2" resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-7.9.2.tgz#03e3f3ac6bdea177517436537826055df60bcb9a" @@ -6762,16 +8345,43 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.0.tgz#a2189335a5f6428aa904ccc291988567018b6e01" integrity sha512-SCR1cxRSMNKjaVYptCzBApPDqGwa3FGdjVHc+rOToocNPHQdIYLZBfv/3f+KvYuXDkUGVIW9IAzmPNZDRL1I4A== -"@rushstack/eslint-patch@^1.1.3": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" - integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== +"@repeaterjs/repeater@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" + integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== + +"@rushstack/eslint-patch@^1.3.3": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.0.tgz#b5bc1e081428794f6a4d239707b359404be35ce2" + integrity sha512-Jh4t/593gxs0lJZ/z3NnasKlplXT2f+4y/LZYuaKZW5KAaiVFL/fThhs+17EbUd53jUVJ0QudYCBGbN/psvaqg== + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + dependencies: + any-observable "^0.3.0" + +"@scarf/scarf@^1.1.1": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.3.0.tgz#f8c75560d0dace4452dee1e31995e6396e61f3ee" + integrity sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew== + +"@scure/base@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== "@scure/base@~1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== +"@scure/base@~1.1.2": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" + integrity sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ== + "@scure/bip32@1.1.5": version "1.1.5" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" @@ -6790,6 +8400,23 @@ "@noble/hashes" "~1.3.1" "@scure/base" "~1.1.0" +"@scure/bip32@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" + integrity sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA== + dependencies: + "@noble/curves" "~1.2.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.2" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" + "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" @@ -6821,17 +8448,17 @@ did-resolver "^3.2.0" key-did-resolver "^2.0.0" -"@self.id/framework@0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@self.id/framework/-/framework-0.3.3.tgz#744545e5d3786c38bddd34784c7ed20e3fe76540" - integrity sha512-+8Sva81LZS4ueDMkktkeISRE/M2zCfwzu8cglsZgS4nkTx26Sv7AUWeQiTQpt1+7/NWYahz3QfPIFgf/j30ygA== +"@self.id/framework@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@self.id/framework/-/framework-0.4.0.tgz#1bdd5b15b5135a384e982b24e68feb1b68fdb984" + integrity sha512-qk74Du+tzUV6Y908oefG/10JTUPUQoBRx6kvx+aLdVfMZaACg/A+rG5BhMaEHBTWvvRbXob0+jn7V53I9iqeGA== dependencies: "@datamodels/identity-accounts-web" "^0.2.0" "@datamodels/identity-profile-basic" "^0.2.0" "@self.id/core" "^0.4.1" "@self.id/image-utils" "^0.3.0" - "@self.id/react" "^0.3.3" - "@self.id/web" "^0.4.3" + "@self.id/react" "0.4.0" + "@self.id/web" "0.5.0" "@self.id/image-utils@^0.3.0": version "0.3.0" @@ -6840,20 +8467,20 @@ dependencies: pica "^9.0.1" -"@self.id/react@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@self.id/react/-/react-0.3.3.tgz#5ddc0f2a91846565d3a6f2cdf8d8192edf8ddd2f" - integrity sha512-1pNe8envqng13V2PXwYDHmqzYg8vwx+O8w/frEnnKy32XEW4nZvJUr3w1/XU9U3qzyo3ZcokCwS1WwU1n/6Gpg== +"@self.id/react@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@self.id/react/-/react-0.4.0.tgz#3af2f1539f303d1aaf68bb7fb41f182cb1fb7ec1" + integrity sha512-XcvpvJI8RHNmjz/IunUkVqtVa/8YLDSKPncDkE/487Md+YhvG/I3INai7Qm02Nj+pxkWYInwVUQL2KDSiP8jUg== dependencies: "@self.id/core" "^0.4.1" - "@self.id/web" "^0.4.3" + "@self.id/web" "0.5.0" jotai "^1.6.2" react-query "^3.35.0" -"@self.id/web@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@self.id/web/-/web-0.4.3.tgz#108ba028ef52ff1b84a73260844ca5908943567d" - integrity sha512-Qfh26Kvt5Ew7svD6Nl5nQWzAWPvCH2PXdGcYy9BcS45Tz57wB/dMBT417gD6mye2bLRBe2s3zZ5ETRVW/3XtZw== +"@self.id/web@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@self.id/web/-/web-0.5.0.tgz#d876264b2386f2c5726ec749502db8a0fe70d687" + integrity sha512-1jjziw2oUU3WDHPPpe5RTTWIpC5eeHkqm0oSfKaCGbpOyznm0bLCN+iwG5rUJKugEXDu+Ok6wqS45efDFzK0eA== dependencies: "@3id/connect" "^0.4.1" "@self.id/core" "^0.4.1" @@ -7067,7 +8694,7 @@ resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== -"@stablelib/ed25519@^1.0.2", "@stablelib/ed25519@^1.0.3": +"@stablelib/ed25519@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== @@ -7081,6 +8708,11 @@ resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== +"@stablelib/hex@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hex/-/hex-1.0.1.tgz#564bd46d896941c93131d1e1869eabc17cf9bab5" + integrity sha512-PQOEChVBjhYGgAD+ehO2ow1gSj1slre3jW4oMD4kV8VrhYhzmtsQDWDZej3BQO8qkVezdczDvISxVSF24PuYNA== + "@stablelib/hkdf@1.0.1", "@stablelib/hkdf@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" @@ -7119,7 +8751,7 @@ "@stablelib/constant-time" "^1.0.1" "@stablelib/wipe" "^1.0.1" -"@stablelib/random@^1.0.0", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": +"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== @@ -7145,6 +8777,15 @@ "@stablelib/hash" "^1.0.1" "@stablelib/wipe" "^1.0.1" +"@stablelib/uuid@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/uuid/-/uuid-1.0.2.tgz#0b803d954ce598067712f9170c9000b99f072d55" + integrity sha512-hduG+zCobfqjVDps3twWxBPuVYkobKQ+Dc8mQek7KfUAgbW4sJpBbr+Zd8l0KnwiFyesjAO3mZ+f3W4uLJtvNA== + dependencies: + "@stablelib/hex" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + "@stablelib/wipe@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" @@ -7179,6 +8820,49 @@ "@stablelib/wipe" "^1.0.1" "@stablelib/xchacha20" "^1.0.1" +"@stacks/common@^6.0.0", "@stacks/common@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@stacks/common/-/common-6.10.0.tgz#f071ff0c69620f60ec623020df0db9c9fbf016b4" + integrity sha512-6x5Z7AKd9/kj3+DYE9xIDIkFLHihBH614i2wqrZIjN02WxVo063hWSjIlUxlx8P4gl6olVzlOy5LzhLJD9OP0A== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^18.0.4" + +"@stacks/encryption@^6.2.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@stacks/encryption/-/encryption-6.11.0.tgz#de2ecf5a44232424e184f4bbf299bd93f0842d84" + integrity sha512-VfBkrwmCRppCasJo+R/hWfC7vgS6GmfPyoTeDsoYlfRRXz/auFbEdRaaruFPtAda/1nKdDOZ9UZEMOp5AIw0IQ== + dependencies: + "@noble/hashes" "1.1.5" + "@noble/secp256k1" "1.7.1" + "@scure/bip39" "1.1.0" + "@stacks/common" "^6.10.0" + "@types/node" "^18.0.4" + base64-js "^1.5.1" + bs58 "^5.0.0" + ripemd160-min "^0.0.6" + varuint-bitcoin "^1.1.2" + +"@stacks/network@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@stacks/network/-/network-6.10.0.tgz#bedc5c9ad97ee4f1431c59f155a7e6e3f32a49cd" + integrity sha512-mbiZ8nlsyy77ndmBdaqhHXii22IFdK4ThRcOQs9j/O00DkAr04jCM4GV5Q+VLUnZ9OBoJq7yOV7Pf6jglh+0hw== + dependencies: + "@stacks/common" "^6.10.0" + cross-fetch "^3.1.5" + +"@stacks/transactions@^6.2.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@stacks/transactions/-/transactions-6.11.0.tgz#6b135cc77d6c60eeb2bfeef972df9da24caacb2a" + integrity sha512-+zIDqn9j4H/+o1ER8C9rFpig1fyrQcj2hVGNIrp+YbpPyja+cxv3fPk6kI/gePzwggzxRgUkIWhBc+mZAXuXyQ== + dependencies: + "@noble/hashes" "1.1.5" + "@noble/secp256k1" "1.7.1" + "@stacks/common" "^6.10.0" + "@stacks/network" "^6.10.0" + c32check "^2.0.0" + lodash.clonedeep "^4.5.0" + "@swc/helpers@0.5.2": version "0.5.2" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" @@ -7401,6 +9085,13 @@ "@types/node" "*" "@types/responselike" "*" +"@types/cli-progress@^3.11.5": + version "3.11.5" + resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.5.tgz#9518c745e78557efda057e3f96a5990c717268c3" + integrity sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g== + dependencies: + "@types/node" "*" + "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -7483,6 +9174,11 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -7585,6 +9281,18 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@^18.0.0": + version "18.19.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.6.tgz#537beece2c8ad4d9abdaa3b0f428e601eb57dac8" + integrity sha512-X36s5CXMrrJOs2lQCdDF68apW4Rfx9ixYMawlepwmE4Anezv/AV2LSpKD1Ub8DAc+urp5bk0BGZ6NtmBitfnsg== + dependencies: + undici-types "~5.26.4" + +"@types/node@^18.0.4": + version "18.18.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.0.tgz#bd19d5133a6e5e2d0152ec079ac27c120e7f1763" + integrity sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -7674,6 +9382,11 @@ dependencies: "@types/node" "*" +"@types/semver@^7.3.12", "@types/semver@^7.5.0": + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + "@types/serve-static@*": version "1.15.0" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" @@ -7731,28 +9444,32 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.20.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" - integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== +"@typescript-eslint/eslint-plugin@^6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz#db03f3313b57a30fbbdad2e6929e88fc7feaf9ba" + integrity sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg== dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/type-utils" "5.38.0" - "@typescript-eslint/utils" "5.38.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.19.0" + "@typescript-eslint/type-utils" "6.19.0" + "@typescript-eslint/utils" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" debug "^4.3.4" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^5.20.0", "@typescript-eslint/parser@^5.21.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" - integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== +"@typescript-eslint/parser@^5.4.2 || ^6.0.0", "@typescript-eslint/parser@^6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.19.0.tgz#80344086f362181890ade7e94fc35fe0480bfdf5" + integrity sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow== dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/typescript-estree" "5.38.0" + "@typescript-eslint/scope-manager" "6.19.0" + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/typescript-estree" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.38.0": @@ -7763,21 +9480,47 @@ "@typescript-eslint/types" "5.38.0" "@typescript-eslint/visitor-keys" "5.38.0" -"@typescript-eslint/type-utils@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" - integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/typescript-estree" "5.38.0" - "@typescript-eslint/utils" "5.38.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/scope-manager@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz#b6d2abb825b29ab70cb542d220e40c61c1678116" + integrity sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ== + dependencies: + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" + +"@typescript-eslint/type-utils@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz#522a494ef0d3e9fdc5e23a7c22c9331bbade0101" + integrity sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w== + dependencies: + "@typescript-eslint/typescript-estree" "6.19.0" + "@typescript-eslint/utils" "6.19.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.38.0": version "5.38.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/types@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.19.0.tgz#689b0498c436272a6a2059b09f44bcbd90de294a" + integrity sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A== + "@typescript-eslint/typescript-estree@5.38.0": version "5.38.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" @@ -7791,7 +9534,47 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.38.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.13.0": +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz#0813ba364a409afb4d62348aec0202600cb468fa" + integrity sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ== + dependencies: + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.19.0.tgz#557b72c3eeb4f73bef8037c85dae57b21beb1a4b" + integrity sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.19.0" + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/typescript-estree" "6.19.0" + semver "^7.5.4" + +"@typescript-eslint/utils@^5.10.0": version "5.38.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== @@ -7803,6 +9586,20 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" +"@typescript-eslint/utils@^5.58.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + "@typescript-eslint/visitor-keys@5.38.0": version "5.38.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" @@ -7811,6 +9608,27 @@ "@typescript-eslint/types" "5.38.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz#4565e0ecd63ca1f81b96f1dd76e49f746c6b2b49" + integrity sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ== + dependencies: + "@typescript-eslint/types" "6.19.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@vascosantos/moving-average@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@vascosantos/moving-average/-/moving-average-1.1.0.tgz#8d5793b09b2d6021ba5e620c6a0f876c20db7eaa" @@ -8276,6 +10094,38 @@ "@web3-onboard/common" "^2.2.3" walletlink "^2.5.0" +"@whatwg-node/events@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@whatwg-node/events/-/events-0.1.1.tgz#0ca718508249419587e130da26d40e29d99b5356" + integrity sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w== + +"@whatwg-node/fetch@^0.9.10", "@whatwg-node/fetch@^0.9.7": + version "0.9.15" + resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.9.15.tgz#77d300894c9a51400b19e95c74bfbd219a05f40b" + integrity sha512-2wIUcolUthZt0nsPRj+pT7K9h/EO3t/j09IBuq0FtITCsASc2fRCmRw2JHS6hk9fzUQrz2+YYrA1ZDpV7+vLsQ== + dependencies: + "@whatwg-node/node-fetch" "^0.5.0" + urlpattern-polyfill "^9.0.0" + +"@whatwg-node/node-fetch@^0.5.0": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.5.4.tgz#3a5cb57cc2dbec63a268b88ccc0e18322fb31b8e" + integrity sha512-5AXi4B44/6SOlQG+X3cO5lsUdRTWSXqaWLkGKnwWfeJoMgRfA53RnYVnvTV+4CoatNBStPrIoDorjgQv+ouiMQ== + dependencies: + "@kamilkisiela/fast-url-parser" "^1.1.4" + "@whatwg-node/events" "^0.1.0" + busboy "^1.6.0" + fast-querystring "^1.1.1" + tslib "^2.3.1" + +"@whatwg-node/server@^0.9.1": + version "0.9.23" + resolved "https://registry.yarnpkg.com/@whatwg-node/server/-/server-0.9.23.tgz#0f8b90fba6356b33c5a8c0a89b7397121695c416" + integrity sha512-B4SkvwXq0dNFQC/9r6UjMeE1MG0zxxFqSCljasgq/HYtY8Sm/blr7F2vZorIsjtz3nv/RDyrh1sM1MG7PUS6Vg== + dependencies: + "@whatwg-node/fetch" "^0.9.10" + tslib "^2.3.1" + "@zag-js/dom-query@0.16.0": version "0.16.0" resolved "https://registry.yarnpkg.com/@zag-js/dom-query/-/dom-query-0.16.0.tgz#bca46bcd78f78c900064478646d95f9781ed098e" @@ -8327,6 +10177,11 @@ abbrev@1, abbrev@^1.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abitype@0.9.8: + version "0.9.8" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.8.tgz#1f120b6b717459deafd213dfbf3a3dd1bf10ae8c" + integrity sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -8446,11 +10301,16 @@ acorn@^8.10.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.8.0: +acorn@^8.2.4, acorn@^8.4.1: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -8514,7 +10374,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: +ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -8544,7 +10404,12 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -8556,6 +10421,11 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + ansi-regex@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" @@ -8566,6 +10436,16 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -8573,7 +10453,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -8585,6 +10465,21 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -8598,7 +10493,7 @@ any-signal@^2.1.1, any-signal@^2.1.2: abort-controller "^3.0.0" native-abort-controller "^1.0.3" -any-signal@^3.0.0: +any-signal@^3.0.0, any-signal@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== @@ -8699,19 +10594,18 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - aria-query@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.2.tgz#0b8a744295271861e1d933f8feca13f9b70cfdc1" integrity sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q== +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" @@ -8745,7 +10639,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.4, array-includes@^3.1.5: +array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== @@ -8756,6 +10650,17 @@ array-includes@^3.1.4, array-includes@^3.1.5: get-intrinsic "^1.1.1" is-string "^1.0.7" +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + array-shuffle@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/array-shuffle/-/array-shuffle-2.0.0.tgz#fd36437cd7997d557055283c946e46379a7cd343" @@ -8766,24 +10671,35 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.reduce@^1.0.4: @@ -8797,6 +10713,30 @@ array.prototype.reduce@^1.0.4: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -8824,10 +10764,15 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-mutex@^0.2.6: version "0.2.6" @@ -8841,6 +10786,18 @@ async@^3.2.0: resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -8904,10 +10861,10 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@^4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" - integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== axios@^0.21.0: version "0.21.4" @@ -8947,10 +10904,12 @@ axios@^1.2.1: form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" babel-jest@^27.5.1: version "27.5.1" @@ -9198,9 +11157,9 @@ before-after-hook@^2.2.0: integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== big-integer@^1.6.16: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== bigi@1.4.2, bigi@^1.1.0: version "1.4.2" @@ -9328,6 +11287,13 @@ blob-to-it@^1.0.1: dependencies: browser-readablestream-to-it "^1.0.3" +blob-to-it@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.5.tgz#5c7af31b139fde37b7f7d8e82dff8358ae38a63f" + integrity sha512-3VIFla8L4JuB+0WCdf+0POI7E1tTl8mhdGiwwwmnZEu6QjRJciS9fIvz8NgWY9URb0iagXYModGEYTcYeq9BMg== + dependencies: + browser-readablestream-to-it "^2.0.0" + blockstore-core@^1.0.0, blockstore-core@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-1.0.5.tgz#2e34b6a7faae0d4b6c98dc8573c6f998eb457f36" @@ -9408,19 +11374,6 @@ body-parser@1.20.0: type-is "~1.6.18" unpipe "1.0.0" -borc@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" - integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== - dependencies: - bignumber.js "^9.0.0" - buffer "^5.5.0" - commander "^2.15.0" - ieee754 "^1.1.13" - iso-url "~0.4.7" - json-text-sequence "~0.1.0" - readable-stream "^3.6.0" - borsh@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.6.0.tgz#a7c9eeca6a31ca9e0607cb49f329cb659eb791e1" @@ -9512,11 +11465,16 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: +browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== +browser-readablestream-to-it@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.5.tgz#61539778c800930dfee1d4c361a060c99bbaa760" + integrity sha512-obLCT9jnxAeZlbaRWluUiZrcSJEoi2JkM0eoiJqlIP7MFwZwZjcB6giZvD343PXfr96ilD91M/wFqFvyAZq+Gg== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -9735,6 +11693,14 @@ bytes@3.1.2, bytes@^3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +c32check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/c32check/-/c32check-2.0.0.tgz#b9365618b2fb135c0783d03f00605b7b0f90c659" + integrity sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA== + dependencies: + "@noble/hashes" "^1.1.2" + base-x "^4.0.0" + cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" @@ -9811,11 +11777,6 @@ caip@^1.0.0, caip@^1.1.0, caip@~1.1.0: resolved "https://registry.yarnpkg.com/caip/-/caip-1.1.0.tgz#0ccd5bf1bff822459389ccec0a8555712a30c374" integrity sha512-yOO3Fu4ygyKYAdznuoaqschMKIZzcdgyMpBNtrIfrUhnOeaOWG+dh0c13wcOS6B/46IGGbncoyzJlio79jU7rw== -caip@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/caip/-/caip-1.0.0.tgz#29834b862433c35d9243df45ebeb2c6ef63f7dd8" - integrity sha512-+U9P7+9jeVBWoP7BDWHVD/JGp9azT4KmFCpDRKTy0U01bCV0x7bxwf6WTl0/dUnnTE+ZA9M4EavptQdHg7k1vA== - call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -9893,6 +11854,11 @@ canonicalize@^1.0.8: resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.8.tgz#24d1f1a00ed202faafd9bf8e63352cd4450c6df1" integrity sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A== +canonicalize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" + integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== + capability@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/capability/-/capability-0.2.5.tgz#51ad87353f1936ffd77f2f21c74633a4dea88801" @@ -9907,6 +11873,24 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" + integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== + dependencies: + ansicolors "~0.3.2" + redeyed "~2.1.0" + +cartonne@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cartonne/-/cartonne-2.2.0.tgz#29cb4b7a34fe1185172fe815a7bbb79b42bf8477" + integrity sha512-O1rA2AQKnposZJ7oT+GtCQpcv4kfs+gqkCs5rFLBfegP3K0nWNmHj5q4d8NlUxqe3EHvAddCci6WO+ogupl3MA== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + multiformats "^11.0.2" + multihashes-sync "^1.1.1" + varintes "^2.0.4" + case@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" @@ -9922,11 +11906,21 @@ catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== +cborg@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" + integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== + cborg@^1.3.1, cborg@^1.3.3, cborg@^1.3.4, cborg@^1.5.4, cborg@^1.6.0: version "1.9.5" resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.9.5.tgz#1e3b8a8407b3665566001f8841c9d72d7a80b2d5" integrity sha512-fLBv8wmqtlXqy1Yu+pHzevAIkW6k2K0ZtMujNzWphLsA34vzzg9BHn+5GmZqOJkSA9V7EMKsWrf6K976c1QMjQ== +cborg@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.0.3.tgz#6bae46f2552dbce7f10d527e4c4d4a17c23350f2" + integrity sha512-poLvpK30KT5KI8gzDx3J/IuVCbsLqMT2fEbOrOuX0H7Hyj8yg5LezeWhRh9aLa5Z6MfPC5sriW3HVJF328M8LQ== + ceramic-cacao@^1.1.1, ceramic-cacao@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/ceramic-cacao/-/ceramic-cacao-1.4.0.tgz#1c8da40bceb59813474c1b0c81359f27a3c8ceed" @@ -9947,7 +11941,18 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.2: +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -9964,7 +11969,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -9972,6 +11977,11 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.0.0, chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + change-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" @@ -9990,6 +12000,11 @@ change-case@^4.1.2: snake-case "^3.0.4" tslib "^2.0.3" +change-case@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-5.4.1.tgz#edec6c906a8a1db8c5bdefcd4e4f49e7b21eaf9c" + integrity sha512-Agf3w7rZRy4aLy0gQ0M/fhufTIxN17rFfUuQ8OxETDJhB8QdoxgDpd9FbbFOMocR7+3wiSv8KKrFVL6HfM1Ylw== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -10039,16 +12054,6 @@ cid@multiformats/cid: version "0.0.0" resolved "https://codeload.github.com/multiformats/cid/tar.gz/e5b6a3636d05234bc34bef873926c706afc1bd89" -cids@^1.0.0, cids@^1.1.9, cids@~1.1.6: - version "1.1.9" - resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" - integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== - dependencies: - multibase "^4.0.1" - multicodec "^3.0.1" - multihashes "^4.0.1" - uint8arrays "^3.0.0" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -10090,6 +12095,20 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +clean-stack@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" + integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== + dependencies: + escape-string-regexp "4.0.0" + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -10097,6 +12116,42 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + +cli-spinners@^2.9.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-table3@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg== + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -10196,6 +12251,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== +codeco@^1.1.0, codeco@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/codeco/-/codeco-1.2.0.tgz#7f32e3971007593cfa98513d026538d2ecffa3cb" + integrity sha512-SHTBW7QsiDtHGqEyhX10gZesmWlWV00gXteFyU2xLqyZmy658/+HlPyXG5EvY05+csQNWjBIfGg2mZrklR1RtQ== + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -10220,11 +12280,19 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.1.4, color-name@~1.1.4: +color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" @@ -10235,6 +12303,14 @@ color2k@^2.0.2: resolved "https://registry.yarnpkg.com/color2k/-/color2k-2.0.2.tgz#ac2b4aea11c822a6bcb70c768b5a289f4fffcebb" integrity sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w== +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colorette@2.0.19: version "2.0.19" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" @@ -10245,16 +12321,6 @@ colors@1.3.0: resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e" integrity sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw== -colors@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -colors@^1.3.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - columnify@^1.5.4: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" @@ -10300,7 +12366,12 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.12.1, commander@^2.15.0: +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.12.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -10315,6 +12386,11 @@ commander@^9.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -10544,11 +12620,6 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.1" -core-js-pure@^3.25.1: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.2.tgz#44a4fd873bdd4fecf6ca11512bcefedbe87e744a" - integrity sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA== - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -10641,6 +12712,13 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cron-parser@^4.0.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5" + integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== + dependencies: + luxon "^3.2.1" + cross-fetch@^3.1.4: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" @@ -10648,7 +12726,21 @@ cross-fetch@^3.1.4: dependencies: node-fetch "2.6.7" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-inspect@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.0.tgz#5fda1af759a148594d2d58394a9e21364f6849af" + integrity sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ== + dependencies: + tslib "^2.4.0" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -10714,6 +12806,22 @@ dag-jose-utils@^2.0.0: "@ipld/dag-cbor" "^7.0.1" multiformats "^9.5.1" +dag-jose-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dag-jose-utils/-/dag-jose-utils-3.0.0.tgz#38a0fb1e17c0af5ea148fdd50a8b77671fe329fa" + integrity sha512-gu+XutOTy3kD8fDcA1SMjZ2U0mUOb/hxoRVZaMCizXN7Ssbc5dKOzeXQ4GquV4BdQzs3w5Y7irOpn2plFPIJfg== + dependencies: + "@ipld/dag-cbor" "^7.0.1" + multiformats "^11.0.1" + +dag-jose-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dag-jose-utils/-/dag-jose-utils-4.0.0.tgz#0cdecb555e6dbff2f023f36beee5b2a14d93d337" + integrity sha512-bmmXtVdEKp/zYH8El4GGkMREJioUztz8fzOErfy5dTbyKIVOF61C5sfsZLYCB/wiT/I9+SPNrQeo/Cx6Ik3wJQ== + dependencies: + "@ipld/dag-cbor" "^9.0.7" + multiformats "^13.0.0" + dag-jose@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-2.0.1.tgz#802e3fd159af3ba39a042df09ba3a14bbc63306c" @@ -10722,6 +12830,14 @@ dag-jose@^2.0.0: "@ipld/dag-cbor" "^7.0.1" multiformats "^9.6.4" +dag-jose@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-4.0.0.tgz#4e65f62af58dd5203b2b094eb52142ffe0cdec1d" + integrity sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + multiformats "^11.0.0" + damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -10753,6 +12869,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +dataloader@2.2.2, dataloader@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" + integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== + dataloader@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" @@ -10812,6 +12933,11 @@ datastore-pubsub@^1.0.0: interface-datastore "^6.0.2" uint8arrays "^3.0.0" +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + date-fns@^2.29.1: version "2.29.3" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" @@ -10822,7 +12948,7 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@2.6.9, debug@^2.6.9: +debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -10989,7 +13115,7 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -define-properties@^1.2.0: +define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -11008,6 +13134,11 @@ defu@^6.1.2, defu@^6.1.3: resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.3.tgz#6d7f56bc61668e844f9f593ace66fd67ef1205fd" integrity sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ== +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -11018,11 +13149,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== - denque@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" @@ -11048,6 +13174,11 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destr@^2.0.1, destr@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.2.tgz#8d3c0ee4ec0a76df54bc8b819bca215592a8c218" @@ -11146,6 +13277,35 @@ did-jwt@^6.0.0: multiformats "^9.6.5" uint8arrays "^3.0.0" +did-jwt@^7.2.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/did-jwt/-/did-jwt-7.3.0.tgz#0a04b7dede8befe321f663372f78676d4d26c748" + integrity sha512-5uZieA76TsrmWRE67qh1JyaRW6GopZxVTlKNy+rBROH7ca214VkLnFfgoxc9sguZkONvDTbUPfiP1xF0+Lckbw== + dependencies: + "@noble/ciphers" "^0.3.0" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@scure/base" "^1.1.3" + canonicalize "^2.0.0" + did-resolver "^4.1.0" + multiformats "^12.0.0" + uint8arrays "^4.0.3" + +did-jwt@^7.4.7: + version "7.4.7" + resolved "https://registry.yarnpkg.com/did-jwt/-/did-jwt-7.4.7.tgz#44105fb0a0cdfd78c087de52087422075c674700" + integrity sha512-Apz7nIfIHSKWIMaEP5L/K8xkwByvjezjTG0xiqwKdnNj1x8M0+Yasury5Dm/KPltxi2PlGfRPf3IejRKZrT8mQ== + dependencies: + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@scure/base" "^1.1.3" + canonicalize "^2.0.0" + did-resolver "^4.1.0" + multibase "^4.0.6" + multiformats "^9.6.2" + uint8arrays "3.1.1" + did-resolver@^3.1.5, did-resolver@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-3.2.2.tgz#6f4e252a810f785d1b28a10265fad6dffee25158" @@ -11156,29 +13316,38 @@ did-resolver@^4.0.0: resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-4.0.0.tgz#fc8f657b4cd7f44c2921051fb046599fbe7d4b31" integrity sha512-/roxrDr9EnAmLs+s9T+8+gcpilMo+IkeytcsGO7dcxvTmVJ+0Rt60HtV8o0UXHhGBo0Q+paMH/0ffXz1rqGFYg== -did-session@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/did-session/-/did-session-0.1.1.tgz#9dc0acd8879b7f4fd2c802f8889be28c7435a6a2" - integrity sha512-MTkthfSu6/3W7I8lgVB7WRrvDUIFCS9NJ1sJhYgSlJxD4OXEXkp27UCvjN+Gs/N2ZJPC7r4/jmqcIn+C7Lf/zA== - dependencies: - "@ceramicnetwork/blockchain-utils-linking" "^2.0.7" - "@ceramicnetwork/stream-tile" "^2.3.0" - ceramic-cacao "^1.1.1" - dids "^3.2.0" +did-resolver@^4.0.1, did-resolver@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-4.1.0.tgz#740852083c4fd5bf9729d528eca5d105aff45eb6" + integrity sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA== -did-session@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/did-session/-/did-session-1.0.0.tgz#df9be8be3ad56410ee122d4ced9cc565b1cef505" - integrity sha512-hLKlfPGoEp9T6malsuNyF1bCrU0AcECZJ1SP2lvbHiic7ko2PdiZPmmVipVId+ZqmshU4AlLLEozZc9Iu1X1UA== +did-session@^0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/did-session/-/did-session-0.1.4.tgz#f4d8f63de9dd7d972b9ccd9b906ea67afa78b96e" + integrity sha512-2p8weTH4RXBEEMSikQ8CZiHLeJSFZ88spJQjw5iCYDhcsK4+khXrKS3VKSuI3rcSmWQcu0m/ERS89v96n3SJWA== dependencies: + "@ceramicnetwork/blockchain-utils-linking" "^2.0.12" "@ceramicnetwork/stream-tile" "^2.4.4" "@stablelib/random" "^1.0.1" - dids "^3.2.0" + dids "^3.3.1" key-did-provider-ed25519 "^2.0.1" - key-did-resolver "^2.0.6" + key-did-resolver "^2.1.2" uint8arrays "^3.0.0" -dids@^3.0.0, dids@^3.1.0, dids@^3.2.0, dids@^3.4.0: +did-session@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/did-session/-/did-session-3.0.2.tgz#f44934accbd0759d651e7347b46423e3f6c289ad" + integrity sha512-TAvCBJ6FvKtA9MNSJzaC111zIPoUyB2hhtQEd/MzBYjcHnTnF9Arq6xqjSJUiL4Vqfap8Oj7y7vVOqHlgoubig== + dependencies: + "@didtools/key-webcrypto" "^0.2.0" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + dids "^5.0.2" + key-did-provider-ed25519 "^4.0.2" + key-did-resolver "^4.0.0" + uint8arrays "^5.0.1" + +dids@^3.0.0, dids@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/dids/-/dids-3.3.0.tgz#f58e69ca0a16703eeb7d54f7ee04cdfb5532c13c" integrity sha512-YnfyaJd1PtnEjZ5r+kJKnNc5LybHg5GaHTSqfzUydNanoZKMT/45ioI4PmbJzmf3IWqMFf2/nk8mU83AwYiS7g== @@ -11192,6 +13361,55 @@ dids@^3.0.0, dids@^3.1.0, dids@^3.2.0, dids@^3.4.0: rpc-utils "^0.6.1" uint8arrays "^3.0.0" +dids@^3.3.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dids/-/dids-3.4.0.tgz#ac37c914c8d862bb7619515a5deb11ef19c988a3" + integrity sha512-hXHkOTL9E5R4rbQwDVOktiiEq57Y6yWOEYjev1ojOpMr2Rkx9g8bw0v6BQIsbPB94aaYxUCtaejNl2FrublfiA== + dependencies: + "@didtools/cacao" "^1.0.0" + "@didtools/pkh-ethereum" "^0.0.1" + "@stablelib/random" "^1.0.1" + dag-jose-utils "^2.0.0" + did-jwt "^6.0.0" + did-resolver "^3.1.5" + multiformats "^9.4.10" + rpc-utils "^0.6.1" + uint8arrays "^3.0.0" + +dids@^4.0.0, dids@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/dids/-/dids-4.0.4.tgz#b84e10f0d41554c91cfe9f06f731bfc1f70cfe60" + integrity sha512-PKxQP0QFqgeMe0dbL7LCRdPJVhZU2ejj8RWCfJ6vro3a+o5o32cWNM1X6YXpdIWq6G5fTJw9KO2dHj2ZzYDc7w== + dependencies: + "@didtools/cacao" "^2.1.0" + "@didtools/codecs" "^1.0.1" + "@didtools/pkh-ethereum" "^0.4.1" + "@stablelib/random" "^1.0.1" + codeco "^1.1.0" + dag-jose-utils "^3.0.0" + did-jwt "^7.2.0" + did-resolver "^4.1.0" + multiformats "^11.0.2" + rpc-utils "^0.6.1" + uint8arrays "^4.0.3" + +dids@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/dids/-/dids-5.0.2.tgz#5a87b101814a46cdc2ecc0d32fa5c0e6d78e8ccb" + integrity sha512-sxTgrvJtatqdm7dukGbquk23BVvbiaxf3nTKywWaY9AUqwC2IYEo6FG0En2cMl3J1fqMMQXrGg9luh2xDmYOmw== + dependencies: + "@didtools/cacao" "^3.0.1" + "@didtools/codecs" "^3.0.0" + "@didtools/pkh-ethereum" "^0.5.0" + "@stablelib/random" "^1.0.2" + codeco "^1.2.0" + dag-jose-utils "^4.0.0" + did-jwt "^7.4.7" + did-resolver "^4.1.0" + multiformats "^13.0.0" + rpc-utils "^0.6.2" + uint8arrays "^5.0.1" + didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -11234,6 +13452,14 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== +dns-over-http-resolver@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-3.0.0.tgz#2a8edcfb1c830cc3fff0cd37f01b824a55fa209a" + integrity sha512-5+BI+B7n8LKhNaEZBYErr+CBd9t5nYtjunByLhrLGtZ+i3TRgiU8yE87pCjEBu2KOwNsD9ljpSXEbZ4S8xih5g== + dependencies: + debug "^4.3.4" + receptacle "^1.3.2" + dns-over-http-resolver@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" @@ -11243,6 +13469,16 @@ dns-over-http-resolver@^1.2.3: native-fetch "^3.0.0" receptacle "^1.3.2" +dns-over-http-resolver@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-2.1.3.tgz#bb7f2e10cc18d960339a6e30e21b8c1d99be7b38" + integrity sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA== + dependencies: + debug "^4.3.1" + native-fetch "^4.0.2" + receptacle "^1.3.2" + undici "^5.12.0" + dns-packet@^5.2.2: version "5.4.0" resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" @@ -11303,6 +13539,16 @@ dotenv@^16.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.2.tgz#0b0f8652c016a3858ef795024508cddc4bffc5bf" integrity sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA== +dset@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.3.tgz#c194147f159841148e8e34ca41f638556d9542d2" + integrity sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== + +dset@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" + integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== + duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -11328,6 +13574,11 @@ duplexify@^4.1.2: readable-stream "^3.1.1" stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -11362,6 +13613,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +ejs@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + electron-fetch@^1.7.2: version "1.7.4" resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.7.4.tgz#af975ab92a14798bfaa025f88dcd2e54a7b0b769" @@ -11379,6 +13637,11 @@ electron-to-chromium@^1.4.535: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz#d553f3c008e73488fb181fdf2601fdb0b1ffbb78" integrity sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w== +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== + elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -11402,6 +13665,11 @@ emittery@^0.8.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emoji-regex@^10.2.1: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -11477,6 +13745,14 @@ engine.io-parser@~5.0.3: resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== +enhanced-resolve@^5.12.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.0: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -11489,6 +13765,11 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +env-paths@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-3.0.0.tgz#2f1e89c2f6dbd3408e1b1711dd82d62e317f58da" + integrity sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A== + envinfo@^7.7.4: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -11547,7 +13828,7 @@ errors-utils@^0.2.0: resolved "https://registry.yarnpkg.com/errors-utils/-/errors-utils-0.2.1.tgz#7f011c68d8f43bcb19deaff2177df30fe86c67e1" integrity sha512-O4Hpn2rA34Y9+Ss+Wrs4fxFEGhmP0Qfjddd04eAqw59M83dY45VQbKi0pTKAYzd5k+sLbkyVTOxH3Sg9EBmh7A== -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: +es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: version "1.20.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3" integrity sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ== @@ -11576,6 +13857,51 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + 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" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -11596,6 +13922,35 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -11661,7 +14016,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== @@ -11683,25 +14038,25 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@^12.1.5: - version "12.3.1" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.3.1.tgz#5d4eb0b7903cea81fd0d5106601d3afb0a453ff4" - integrity sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg== +eslint-config-next@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.1.0.tgz#7e309d426b8afacaba3b32fdbb02ba220b6d0a97" + integrity sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg== dependencies: - "@next/eslint-plugin-next" "12.3.1" - "@rushstack/eslint-patch" "^1.1.3" - "@typescript-eslint/parser" "^5.21.0" + "@next/eslint-plugin-next" "14.1.0" + "@rushstack/eslint-patch" "^1.3.3" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" eslint-import-resolver-node "^0.3.6" - eslint-import-resolver-typescript "^2.7.1" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.31.7" - eslint-plugin-react-hooks "^4.5.0" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== eslint-import-resolver-node@^0.3.6: version "0.3.6" @@ -11709,109 +14064,130 @@ eslint-import-resolver-node@^0.3.6: integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: debug "^3.2.7" - resolve "^1.20.0" + resolve "^1.20.0" + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-import-resolver-typescript@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" - integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== +eslint-import-resolver-typescript@^3.5.2: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== dependencies: debug "^4.3.4" - glob "^7.2.0" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" is-glob "^4.0.3" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" -eslint-module-utils@^2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== +eslint-plugin-import@^2.28.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" -eslint-plugin-jest@^26.1.4: - version "26.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz#7931c31000b1c19e57dbfb71bbf71b817d1bf949" - integrity sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng== +eslint-plugin-jest@^27.6.3: + version "27.6.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.3.tgz#8acb8b1e45597fe1f4d4cf25163d90119efc12be" + integrity sha512-+YsJFVH6R+tOiO3gCJon5oqn4KWc+mDq2leudk8mrp8RFubLOo9CVyi3cib4L7XMpxExmkmBZQTPDYVBzgpgOA== dependencies: "@typescript-eslint/utils" "^5.10.0" -eslint-plugin-jsx-a11y@^6.5.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" - integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== - dependencies: - "@babel/runtime" "^7.18.9" - aria-query "^4.2.2" - array-includes "^3.1.5" - ast-types-flow "^0.0.7" - axe-core "^4.4.3" - axobject-query "^2.2.0" +eslint-plugin-jsx-a11y@^6.7.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.2" - language-tags "^1.0.5" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" minimatch "^3.1.2" - semver "^6.3.0" + object.entries "^1.1.7" + object.fromentries "^2.0.7" -eslint-plugin-prettier@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" -eslint-plugin-react-hooks@^4.5.0: +"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.31.7: - version "7.31.8" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" - integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" -eslint-plugin-testing-library@^5.3.1: - version "5.6.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.6.4.tgz#9dffd9feafbb08a36240f88156357685b56f0b8a" - integrity sha512-0oW3tC5NNT2WexmJ3848a/utawOymw4ibl3/NkwywndVAz2hT9+ab70imA7ccg3RaScQgMvJT60OL00hpmJvrg== +eslint-plugin-testing-library@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.0.tgz#af3340b783c881eb19ec5ac6b3a4bfe8ab4a1f74" + integrity sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw== dependencies: - "@typescript-eslint/utils" "^5.13.0" + "@typescript-eslint/utils" "^5.58.0" eslint-scope@^5.1.1: version "5.1.1" @@ -11821,10 +14197,10 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -11846,49 +14222,53 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.13.0: - version "8.23.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.1.tgz#cfd7b3f7fdd07db8d16b4ac0516a29c8d8dca5dc" - integrity sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg== - dependencies: - "@eslint/eslintrc" "^1.3.2" - "@humanwhocodes/config-array" "^0.10.4" - "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" - ajv "^6.10.0" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" find-up "^5.0.0" - glob-parent "^6.0.1" - globals "^13.15.0" - globby "^11.1.0" - grapheme-splitter "^1.0.4" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-sdsl "^4.1.4" + is-path-inside "^3.0.3" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" esm@^3.2.25: @@ -11896,24 +14276,24 @@ esm@^3.2.25: resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -12335,6 +14715,11 @@ eventemitter3@^4.0.4, eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + events@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -12368,6 +14753,21 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" + integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^3.0.1" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -12460,10 +14860,10 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" + integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -12491,12 +14891,16 @@ fast-glob@^3.2.11, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-patch@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-2.2.1.tgz#18150d36c9ab65c7209e7d4eb113f4f8eaabe6d9" - integrity sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig== +fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: - fast-deep-equal "^2.0.1" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" fast-json-patch@^3.1.0: version "3.1.1" @@ -12513,6 +14917,13 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-querystring@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" + integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== + dependencies: + fast-decode-uri-component "^1.0.1" + fast-redact@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" @@ -12578,6 +14989,21 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: node-domexception "^1.0.0" web-streams-polyfill "^3.0.3" +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -12597,6 +15023,13 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -12706,6 +15139,14 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -12833,6 +15274,15 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -12894,6 +15344,16 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -13045,6 +15505,11 @@ get-port@^6.0.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-6.1.2.tgz#c1228abb67ba0e17fb346da33b15187833b9c08a" integrity sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw== +get-port@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-7.0.0.tgz#ffcd83da826146529e307a341d7801cae351daff" + integrity sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw== + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -13052,7 +15517,7 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -13065,7 +15530,7 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-tsconfig@^4.7.2: +get-tsconfig@^4.5.0, get-tsconfig@^4.7.2: version "4.7.2" resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== @@ -13140,7 +15605,7 @@ glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1, glob-parent@^6.0.2: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -13152,6 +15617,17 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -13176,7 +15652,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -13211,13 +15687,20 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globalyzer@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" @@ -13258,6 +15741,19 @@ go-ipfs@^0.12.0: tar-fs "^2.1.0" unzip-stream "^0.3.0" +go-ipfs@^0.18.1: + version "0.18.1" + resolved "https://registry.yarnpkg.com/go-ipfs/-/go-ipfs-0.18.1.tgz#081ecb15a5a847c3184f8529cc398ba67b45b6c1" + integrity sha512-hXfjQRqet/H8mTSQVKiuTSMrvjv8cAGQMHbr12DHAHGsSMS9IuGCOntkVEhnNOnmP/WXcrxRVxLu6xz/mPLlZg== + dependencies: + cachedir "^2.3.0" + got "^11.7.0" + gunzip-maybe "^1.4.2" + hasha "^5.2.2" + pkg-conf "^3.1.0" + tar-fs "^2.1.0" + unzip-stream "^0.3.0" + google-auth-library@^7.14.1: version "7.14.1" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c" @@ -13314,10 +15810,44 @@ graceful-fs@^4.1.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphql-relay@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/graphql-relay/-/graphql-relay-0.10.0.tgz#3b661432edf1cb414cd4a132cf595350e524db2b" + integrity sha512-44yBuw2/DLNEiMypbNZBt1yMDbBmyVPVesPywnteGGALiBmdyy1JP8jSg8ClLePg8ZZxk0O4BLhd1a6U/1jDOQ== + +graphql-scalars@^1.22.4: + version "1.22.4" + resolved "https://registry.yarnpkg.com/graphql-scalars/-/graphql-scalars-1.22.4.tgz#af092b142bcfd5c1f8c53cb70ee1955ecd4ddb03" + integrity sha512-ILnv7jq5VKHLUyoaTFX7lgYrjCd6vTee9i8/B+D4zJKJT5TguOl0KkpPEbXHjmeor8AZYrVsrYUHdqRBMX1pjA== + dependencies: + tslib "^2.5.0" + +graphql-yoga@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/graphql-yoga/-/graphql-yoga-5.1.1.tgz#e47f48217a4c7907290fdf164d9a4c7edb50e30b" + integrity sha512-oak5nVKTHpqJgpA1aT3cJPOlCidrW7l6nbc5L6w07VdFul16ielGI2ZnQDAXO+qQih09/4WspD5x0SsSZH+hkg== + dependencies: + "@envelop/core" "^5.0.0" + "@graphql-tools/executor" "^1.0.0" + "@graphql-tools/schema" "^10.0.0" + "@graphql-tools/utils" "^10.0.0" + "@graphql-yoga/logger" "^2.0.0" + "@graphql-yoga/subscription" "^5.0.0" + "@whatwg-node/fetch" "^0.9.7" + "@whatwg-node/server" "^0.9.1" + dset "^3.1.1" + lru-cache "^10.0.0" + tslib "^2.5.2" + +graphql@^16.8.1: + version "16.8.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" + integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== gtoken@^5.0.4: version "5.3.2" @@ -13453,6 +15983,13 @@ harmony-reflect@^1.4.6: resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -13663,6 +16200,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http-status-codes@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.3.0.tgz#987fefb28c69f92a43aecc77feec2866349a8bfc" + integrity sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA== + http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -13684,6 +16226,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" + integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -13696,6 +16243,11 @@ husky@^7.0.0: resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== +hyperlinker@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" + integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -13744,6 +16296,11 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + immediate@^3.2.3: version "3.3.0" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" @@ -13780,6 +16337,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -13803,11 +16365,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - ini@^1.3.2, ini@^1.3.4: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -13862,11 +16419,38 @@ interface-datastore@^6.0.2: nanoid "^3.0.2" uint8arrays "^3.0.0" +interface-datastore@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-7.0.4.tgz#f09ae4e2896f57f876d5d742a59e982fb3f42891" + integrity sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw== + dependencies: + interface-store "^3.0.0" + nanoid "^4.0.0" + uint8arrays "^4.0.2" + +interface-datastore@^8.2.0: + version "8.2.10" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.2.10.tgz#2d7fc026c8185378c4d3433fe942d9d6838f95cb" + integrity sha512-D8RuxMdjOPB+j6WMDJ+I2aXTDzUT6DIVjgzo1E+ODL7w8WrSFl9FXD2SYmgj6vVzdb7Kb5qmAI9pEnDZJz7ifg== + dependencies: + interface-store "^5.0.0" + uint8arrays "^5.0.0" + interface-store@^2.0.1, interface-store@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== +interface-store@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" + integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== + +interface-store@^5.0.0: + version "5.1.7" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-5.1.7.tgz#955d9263cec8da244d5f631a4acc3ea701df457c" + integrity sha512-DVMTgZ43NAdDtXL3QsEq8N0vuUYVBxiGbxN0uI0lrNasuX/CGSrU7bjOO2DaGTMNut4Pt3ae+VQYFvNtH4Oyeg== + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -13876,7 +16460,7 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -internal-slot@^1.0.4: +internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== @@ -14012,6 +16596,22 @@ ipfs-core-config@^0.2.0: p-queue "^6.6.1" uint8arrays "^3.0.0" +ipfs-core-types@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.14.1.tgz#c69f4dd873324e975ef43c391c0692b96863b13c" + integrity sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw== + dependencies: + "@ipld/dag-pb" "^4.0.0" + "@libp2p/interface-keychain" "^2.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.2" + "@libp2p/interface-pubsub" "^3.0.0" + "@multiformats/multiaddr" "^11.1.5" + "@types/node" "^18.0.0" + interface-datastore "^7.0.0" + ipfs-unixfs "^9.0.0" + multiformats "^11.0.0" + ipfs-core-types@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.9.0.tgz#cb201ff7a9470651ba14c4e7fae56661a55bf37e" @@ -14047,6 +16647,32 @@ ipfs-core-utils@^0.13.0: timeout-abort-controller "^2.0.0" uint8arrays "^3.0.0" +ipfs-core-utils@^0.18.0, ipfs-core-utils@^0.18.1: + version "0.18.1" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.18.1.tgz#d5fae11bfdb511749c6f905b0d0da3174eb50909" + integrity sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q== + dependencies: + "@libp2p/logger" "^2.0.5" + "@multiformats/multiaddr" "^11.1.5" + "@multiformats/multiaddr-to-uri" "^9.0.1" + any-signal "^3.0.0" + blob-to-it "^2.0.0" + browser-readablestream-to-it "^2.0.0" + err-code "^3.0.1" + ipfs-core-types "^0.14.1" + ipfs-unixfs "^9.0.0" + ipfs-utils "^9.0.13" + it-all "^2.0.0" + it-map "^2.0.0" + it-peekable "^2.0.0" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + nanoid "^4.0.0" + parse-duration "^1.0.0" + timeout-abort-controller "^3.0.0" + uint8arrays "^4.0.2" + ipfs-core@~0.13.0: version "0.13.0" resolved "https://registry.yarnpkg.com/ipfs-core/-/ipfs-core-0.13.0.tgz#48ae8b48c92ce8ca79f34fdd1a78851d5de5aa0b" @@ -14142,6 +16768,31 @@ ipfs-http-client@^55.0.0: stream-to-it "^0.2.2" uint8arrays "^3.0.0" +ipfs-http-client@^60.0.0: + version "60.0.1" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-60.0.1.tgz#d2e9ab430aad43a92a6e44008e534afba4fd22b9" + integrity sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.0" + "@multiformats/multiaddr" "^11.1.5" + any-signal "^3.0.0" + dag-jose "^4.0.0" + err-code "^3.0.1" + ipfs-core-types "^0.14.1" + ipfs-core-utils "^0.18.1" + ipfs-utils "^9.0.13" + it-first "^2.0.0" + it-last "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^4.0.2" + ipfs-repo-migrations@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/ipfs-repo-migrations/-/ipfs-repo-migrations-11.0.2.tgz#11b6048c0e2fde7ec55263d05160353fd199b4eb" @@ -14237,6 +16888,14 @@ ipfs-unixfs@^6.0.0, ipfs-unixfs@^6.0.3: err-code "^3.0.1" protobufjs "^6.10.2" +ipfs-unixfs@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" + integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== + dependencies: + err-code "^3.0.1" + protobufjs "^7.0.0" + ipfs-utils@^9.0.1, ipfs-utils@^9.0.2: version "9.0.7" resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.7.tgz#b8644b9d053e4dd258f69773b146ac243921aa1f" @@ -14257,6 +16916,28 @@ ipfs-utils@^9.0.1, ipfs-utils@^9.0.2: react-native-fetch-api "^2.0.0" stream-to-it "^0.2.2" +ipfs-utils@^9.0.13, ipfs-utils@^9.0.7: + version "9.0.14" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" + integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== + dependencies: + any-signal "^3.0.0" + browser-readablestream-to-it "^1.0.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.1.5" + it-all "^1.0.4" + it-glob "^1.0.1" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-fetch "^3.0.0" + node-fetch "^2.6.8" + react-native-fetch-api "^3.0.0" + stream-to-it "^0.2.2" + ipfsd-ctl@^10.0.5: version "10.0.6" resolved "https://registry.yarnpkg.com/ipfsd-ctl/-/ipfsd-ctl-10.0.6.tgz#05f16946c9d47a7bbeb21c68452dc029c2959af4" @@ -14274,17 +16955,24 @@ ipfsd-ctl@^10.0.5: p-wait-for "^3.1.0" temp-write "^4.0.0" -ipld-dag-cbor@^0.17.0: - version "0.17.1" - resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.17.1.tgz#842e6c250603e5791049168831a425ec03471fb1" - integrity sha512-Bakj/cnxQBdscORyf4LRHxQJQfoaY8KWc7PWROQgX+aw5FCzBt8ga0VM/59K+ABOznsqNvyLR/wz/oYImOpXJw== - dependencies: - borc "^2.1.2" - cids "^1.0.0" - is-circular "^1.0.2" - multicodec "^3.0.1" - multihashing-async "^2.0.0" - uint8arrays "^2.1.3" +ipfsd-ctl@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/ipfsd-ctl/-/ipfsd-ctl-13.0.0.tgz#fd2dcbed3d7ebab9fb0a0d277d10355eece327d4" + integrity sha512-wT+2nWCT3njaMdcVeLOu5ABCZ9QasdQaiXXBuGdxaXriu7T7KXYjJ+nTsc+glyYgCtvpLwatT7CJMCg/XcXMxw== + dependencies: + "@hapi/boom" "^10.0.0" + "@hapi/hapi" "^21.1.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/logger" "^2.0.0" + "@multiformats/multiaddr" "^11.0.0" + execa "^6.1.0" + ipfs-utils "^9.0.1" + joi "^17.2.1" + merge-options "^3.0.1" + nanoid "^4.0.0" + p-wait-for "^5.0.0" + temp-write "^5.0.0" + wherearewe "^2.0.1" ipns@^0.16.0: version "0.16.0" @@ -14330,6 +17018,18 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -14362,6 +17062,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.6.tgz#fd6170b0b8c7e2cc73de342ef8284a2202023c44" integrity sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q== +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -14369,12 +17074,14 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-circular@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" - integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" -is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: +is-core-module@^2.5.0, is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== @@ -14413,6 +17120,13 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -14435,7 +17149,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.7: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== @@ -14459,6 +17173,11 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== +is-interactive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" + integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== + is-ip@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" @@ -14514,6 +17233,18 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -14541,6 +17272,11 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -14568,11 +17304,21 @@ is-ssh@^1.3.0: dependencies: protocols "^2.0.1" +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -14594,7 +17340,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.10: +is-typed-array@^1.1.10, is-typed-array@^1.1.12: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -14622,6 +17368,11 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-unicode-supported@^1.1.0, is-unicode-supported@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" + integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== + is-weakmap@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" @@ -14682,16 +17433,16 @@ iso-url@^1.1.2, iso-url@^1.1.3, iso-url@^1.1.5: resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== -iso-url@~0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" - integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== - isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isows@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" + integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -14755,11 +17506,26 @@ it-all@^1.0.4, it-all@^1.0.5, it-all@^1.0.6: resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== +it-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" + integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== + +it-all@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-3.0.4.tgz#08f2e3eb3df04fa4525a343dcacfbdf91ffee162" + integrity sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ== + it-batch@^1.0.8, it-batch@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-1.0.9.tgz#7e95aaacb3f9b1b8ca6c8b8367892171d6a5b37f" integrity sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA== +it-batch@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-3.0.4.tgz#98fd1fb69fc9d99e4a2cc0b46f9ed5976d8289b2" + integrity sha512-WRu2mqOYIs+T9k7+yxSK9VJdk0UE4R0jKQsWQcti5c6vhb1FhjC2+yCB5XBrctQ9edNfCMU/wVzdDj8qSwimbA== + it-buffer@^0.1.2, it-buffer@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/it-buffer/-/it-buffer-0.1.3.tgz#efebef1cc35a6133cb9558e759345d4f17b3e1d0" @@ -14790,6 +17556,16 @@ it-first@^1.0.2, it-first@^1.0.4, it-first@^1.0.6, it-first@^1.0.7: resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== +it-first@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" + integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== + +it-first@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.4.tgz#d68c8ae646ea402cd5e650c352da69988a310342" + integrity sha512-FtQl84iTNxN5EItP/JgL28V2rzNMkCzTUlNoj41eVdfix2z1DBuLnBqZ0hzYhGGa1rMpbQf0M7CQSA2adlrLJg== + it-glob@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" @@ -14812,6 +17588,11 @@ it-last@^1.0.4, it-last@^1.0.5: resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== +it-last@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-2.0.1.tgz#a6f3253459cb77e917aeada3b2c4ae9f3e66c64b" + integrity sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg== + it-length-prefixed@^5.0.0, it-length-prefixed@^5.0.2, it-length-prefixed@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/it-length-prefixed/-/it-length-prefixed-5.0.3.tgz#77fbd99b89aa6cdd79fad62c962423b413db7045" @@ -14831,6 +17612,11 @@ it-map@^1.0.4, it-map@^1.0.5: resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== +it-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-2.0.1.tgz#d5251fd6b222d6ee39293d406a3f8fce54fb9220" + integrity sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ== + it-merge@^1.0.0, it-merge@^1.0.1, it-merge@^1.0.2, it-merge@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/it-merge/-/it-merge-1.0.4.tgz#81c8d427b389b1cd039c25015edb804cd1a60545" @@ -14872,6 +17658,11 @@ it-peekable@^1.0.2: resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== +it-peekable@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-2.0.1.tgz#1e118610473aa511efc70f3bb7a7066178728dd3" + integrity sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA== + it-pipe@^1.0.1, it-pipe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/it-pipe/-/it-pipe-1.1.0.tgz#f5964c6bb785dd776f11a62d1e75964787ab95ce" @@ -14884,6 +17675,13 @@ it-pushable@^1.4.0, it-pushable@^1.4.1, it-pushable@^1.4.2: dependencies: fast-fifo "^1.0.0" +it-pushable@^3.0.0, it-pushable@^3.2.1: + version "3.2.3" + resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.2.3.tgz#e2b80aed90cfbcd54b620c0a0785e546d4e5f334" + integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== + dependencies: + p-defer "^4.0.0" + it-reader@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-3.0.0.tgz#56596c7742ec7c63b7f7998f6bfa3f712e333d0e" @@ -14898,6 +17696,16 @@ it-sort@^1.0.0: dependencies: it-all "^1.0.6" +it-stream-types@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-1.0.5.tgz#9c72e6adefdea9dac69d0a28fbea783deebd508d" + integrity sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA== + +it-stream-types@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.1.tgz#69cb4d7e79e707b8257a8997e02751ccb6c3af32" + integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== + it-take@^1.0.0, it-take@^1.0.1, it-take@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/it-take/-/it-take-1.0.2.tgz#b5f1570014db7c3454897898b69bb7ac9c3bffc1" @@ -14934,15 +17742,45 @@ it-to-stream@^1.0.0: p-fifo "^1.0.0" readable-stream "^3.6.0" -it-ws@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/it-ws/-/it-ws-4.0.0.tgz#2e5ef0bcd857c1a898cc32c176ab6cac8f8306ea" - integrity sha512-XmTzpMkevc6rUboy73r0CCNhciMmL/Yxir9O6FujRwdrjysztqLBQ1Xkr4CpY2m7BVSCObKotaCWJeZ29lOXRA== +it-ws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/it-ws/-/it-ws-4.0.0.tgz#2e5ef0bcd857c1a898cc32c176ab6cac8f8306ea" + integrity sha512-XmTzpMkevc6rUboy73r0CCNhciMmL/Yxir9O6FujRwdrjysztqLBQ1Xkr4CpY2m7BVSCObKotaCWJeZ29lOXRA== + dependencies: + buffer "^6.0.3" + event-iterator "^2.0.0" + iso-url "^1.1.2" + ws "^7.3.1" + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: - buffer "^6.0.3" - event-iterator "^2.0.0" - iso-url "^1.1.2" - ws "^7.3.1" + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" jest-changed-files@^27.5.1: version "27.5.1" @@ -15858,9 +18696,9 @@ jotai-zustand@^0.3.0: integrity sha512-hwu49XzES51tzKe9qqHS7LTlqesWbmzqhL+m7zEEW6hTOOGfnYiMYMmPb8ueMKCmMe122L3thwMeeblsFtlzPg== jotai@^1.6.2: - version "1.8.4" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.8.4.tgz#e188bff3cc790c758d25646f6f5daf9854c98eef" - integrity sha512-bkHDHNxm7bU4+bJL4z96fTlJYN34UDRTu3ghEajJrDepayON9YEaxPrXr7xhLnIRntoFC6eDYYhMNA/ilbj2RQ== + version "1.13.1" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.13.1.tgz#20cc46454cbb39096b12fddfa635b873b3668236" + integrity sha512-RUmH1S4vLsG3V6fbGlKzGJnLrDcC/HNb5gH2AeA9DzuJknoVxSGvvg8OBB7lke+gDc4oXmdVsaKn/xDUhWZ0vw== jotai@^2.5.0: version "2.5.0" @@ -15899,7 +18737,7 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.13.1: +js-yaml@^3.13.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -15982,6 +18820,11 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-ptr@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-3.1.1.tgz#184c3d48db659fa9bbc1519f7db6f390ddffb659" + integrity sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg== + json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" @@ -16043,13 +18886,6 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json-text-sequence@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== - dependencies: - delimit-stream "0.1.0" - json-to-graphql-query@^2.1.0, json-to-graphql-query@^2.2.0: version "2.2.4" resolved "https://registry.yarnpkg.com/json-to-graphql-query/-/json-to-graphql-query-2.2.4.tgz#ada9cfdbb9bf38589fd2661e1588d1edd0a882cc" @@ -16060,10 +18896,10 @@ json5@2.x, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -16110,6 +18946,15 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsontokens@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsontokens/-/jsontokens-4.0.1.tgz#c3edf74a01160b2ca6d62b021b288edd59d1184a" + integrity sha512-+MO415LEN6M+3FGsRz4wU20g7N2JA+2j9d9+pGaNJHviG4L8N0qzavGyENw6fJqsq9CcrHOIL6iWX5yeTZ86+Q== + dependencies: + "@noble/hashes" "^1.1.2" + "@noble/secp256k1" "^1.6.3" + base64-js "^1.5.1" + jsprim@^1.2.2: version "1.4.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" @@ -16120,7 +18965,7 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: +"jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== @@ -16128,6 +18973,16 @@ jsprim@^1.2.2: array-includes "^3.1.5" object.assign "^4.1.3" +jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + just-debounce-it@^1.1.0: version "1.5.0" resolved "https://registry.yarnpkg.com/just-debounce-it/-/just-debounce-it-1.5.0.tgz#2276448332dd5925e825ba3c524a71da707bf628" @@ -16205,6 +19060,30 @@ key-did-provider-ed25519@^2.0.0, key-did-provider-ed25519@^2.0.1: rpc-utils "^0.6.2" uint8arrays "^3.0.0" +key-did-provider-ed25519@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/key-did-provider-ed25519/-/key-did-provider-ed25519-3.0.2.tgz#5c336954680db2ae03e9d4a25cdbde30b72062b5" + integrity sha512-4Yw0CeO1hKRaUsh9NIz4tn4Ysr09CdoJItyT0vHjd5iedJ+FvVt7pTbNr7IY0/+8mWvYslutAK5LFrwu5agpsA== + dependencies: + "@noble/curves" "^1.1.0" + did-jwt "^7.2.0" + dids "^4.0.4" + fast-json-stable-stringify "^2.1.0" + rpc-utils "^0.6.2" + uint8arrays "^4.0.3" + +key-did-provider-ed25519@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/key-did-provider-ed25519/-/key-did-provider-ed25519-4.0.2.tgz#f1ae847257e5aefff7ac6899630231034e62da05" + integrity sha512-bnnRGuuUtylKGMVmgXVSoGccBg87roFi6xy5dQmTgNqnCmrxBBUatYoVimcnA+SGCFqi2qk6B9dD10Ed4rTZPg== + dependencies: + "@noble/curves" "^1.3.0" + did-jwt "^7.4.7" + dids "^5.0.2" + fast-json-stable-stringify "^2.1.0" + rpc-utils "^0.6.2" + uint8arrays "^5.0.1" + key-did-resolver@^2.0.0, key-did-resolver@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/key-did-resolver/-/key-did-resolver-2.1.1.tgz#c5a4f040ef5df2d358f2ef40c4c7a30a44f7a9dc" @@ -16216,7 +19095,7 @@ key-did-resolver@^2.0.0, key-did-resolver@^2.1.1: uint8arrays "^3.0.0" varint "^6.0.0" -key-did-resolver@^2.0.6: +key-did-resolver@^2.1.2: version "2.3.0" resolved "https://registry.yarnpkg.com/key-did-resolver/-/key-did-resolver-2.3.0.tgz#38c636be72d769cdf8a4ebdfb1e35f36fb5550c1" integrity sha512-q3ChQILPe+u8qkpWP196fEoxsygEyjM3K25qrGaMSolVaUdfgj7qwMz2DE/GRIlfNK2HgKW6KXA8RZMy8aL4MA== @@ -16228,6 +19107,28 @@ key-did-resolver@^2.0.6: uint8arrays "^3.0.0" varint "^6.0.0" +key-did-resolver@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/key-did-resolver/-/key-did-resolver-3.0.0.tgz#c1cc4ebeb41e7959db5d4f3d90fd96bf89507315" + integrity sha512-IyEq64AdS6lUwtn3YSvGpu7KAGA2x5+fjRCUIa8+ccSLmWrODV/ICM5aa6hHV/19EPWef8/e322r9sQJJ6/3qA== + dependencies: + "@stablelib/ed25519" "^1.0.2" + bigint-mod-arith "^3.1.0" + multiformats "^11.0.1" + nist-weierstrauss "^1.6.1" + uint8arrays "^4.0.3" + varint "^6.0.0" + +key-did-resolver@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/key-did-resolver/-/key-did-resolver-4.0.0.tgz#011910ef2db7db82977466ac6850b4976f8cd761" + integrity sha512-+U2nd/0rjO4Yqe2hnHBD7ygcLRfT43Oje9IIjv1BlBi0lopwxZpIFQ7GekguOHK02r+JGdl8mpJVNHs5lvXVOA== + dependencies: + "@noble/curves" "^1.2.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + keyv@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" @@ -16277,17 +19178,69 @@ knex@^2.1.0: tarn "^3.0.2" tildify "2.0.0" -language-subtag-registry@~0.3.2: +knex@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/knex/-/knex-2.5.1.tgz#a6c6b449866cf4229f070c17411f23871ba52ef9" + integrity sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA== + dependencies: + colorette "2.0.19" + commander "^10.0.0" + debug "4.3.4" + escalade "^3.1.1" + esm "^3.2.25" + get-package-type "^0.1.0" + getopts "2.3.0" + interpret "^2.2.0" + lodash "^4.17.21" + pg-connection-string "2.6.1" + rechoir "^0.8.0" + resolve-from "^5.0.0" + tarn "^3.0.2" + tildify "2.0.0" + +kubo-rpc-client@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-3.0.2.tgz#c63f5e3faf14cf095d1f4cbead559c75202335ab" + integrity sha512-VXCyQ8M5z922rUEqaTjtuXUepuIxAaijKVgxoPSiB9eU+B3rVEIkUhNsjKzK6QM3lnW/hQwwrKF5uJcGUitokw== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/crypto" "^1.0.11" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.0" + "@multiformats/multiaddr" "^12.1.10" + any-signal "^3.0.1" + dag-jose "^4.0.0" + err-code "^3.0.1" + ipfs-core-utils "^0.18.0" + ipfs-utils "^9.0.7" + it-first "^2.0.0" + it-last "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + parse-duration "^1.0.2" + stream-to-it "^0.2.4" + uint8arrays "^4.0.3" + +language-subtag-registry@^0.3.20: version "0.3.22" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +least-recent@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/least-recent/-/least-recent-1.0.3.tgz#8c11b57c3874dac051f65e265b690e10a35390c6" + integrity sha512-PH9ZuFAKFf5fY7j0wizus6f/Ni2wSaby4eQYEUmR+sK6lY7OEbVz/iEh/tTgEmgOivWJhay89wVyUe5VnXoUSQ== dependencies: - language-subtag-registry "~0.3.2" + nanoevents "^8.0.0" leb128@0.0.5: version "0.0.5" @@ -16901,6 +19854,50 @@ listhen@^1.5.5: untun "^0.1.2" uqr "^0.1.2" +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA== + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + lit-element@^3.3.0: version "3.3.3" resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.3.tgz#10bc19702b96ef5416cf7a70177255bfb17b3209" @@ -16987,6 +19984,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -17090,6 +20092,30 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ== + dependencies: + chalk "^1.0.0" + +log-symbols@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" + integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== + dependencies: + chalk "^5.0.0" + is-unicode-supported "^1.1.0" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + logfmt@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/logfmt/-/logfmt-1.3.2.tgz#be34020b7390b8201212a12f533e3cb4c92d70c2" @@ -17103,6 +20129,11 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" @@ -17127,7 +20158,7 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^10.0.2: +lru-cache@^10.0.0, lru-cache@^10.0.2, "lru-cache@^9.1.1 || ^10.0.0": version "10.1.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== @@ -17171,6 +20202,11 @@ luxon@^2.4.0: resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.5.0.tgz#098090f67d690b247e83c090267a60b1aa8ea96c" integrity sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A== +luxon@^3.2.1: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -17291,12 +20327,12 @@ mapmoize@^1.2.1: integrity sha512-LK8ArSM1wbfRPTnl+LpdxW1pwkfY6GxtM9p+STr6aDtM7ImR8jLuf4ekei43/AN0f7XDSrohzwwK57eGHSDAuA== match-sorter@^6.0.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda" - integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== + version "6.3.3" + resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.3.tgz#95bd788b9d33e1a7f0b8d78434895e2e8ecf40da" + integrity sha512-sgiXxrRijEe0SzHKGX4HouCpfHRPnqteH42UdMEW7BlWy990ZkzcvonJGv4Uu9WE7Y1f8Yocm91+4qFPCbmNww== dependencies: - "@babel/runtime" "^7.12.5" - remove-accents "0.4.2" + "@babel/runtime" "^7.23.8" + remove-accents "0.5.0" mcl-wasm@^0.7.1: version "0.7.9" @@ -17398,7 +20434,7 @@ microseconds@0.2.0: resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== -mime-db@1.52.0, mime-db@1.x.x: +mime-db@1.52.0, mime-db@1.x.x, mime-db@^1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -17425,11 +20461,21 @@ mime@^3.0.0: resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -17462,7 +20508,14 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@9.0.3, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -17562,6 +20615,11 @@ minipass@^3.1.6: dependencies: yallist "^4.0.0" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -17741,7 +20799,7 @@ multiaddr@^10.0.0: uint8arrays "^3.0.0" varint "^6.0.0" -multibase@^4.0.1, multibase@~4.0.2: +multibase@^4.0.1, multibase@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== @@ -17756,15 +20814,7 @@ multicast-dns@^7.2.0: dns-packet "^5.2.2" thunky "^1.0.2" -multicodec@^3.0.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" - integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== - dependencies: - uint8arrays "^3.0.0" - varint "^6.0.0" - -multiformats@9, multiformats@9.9.0, multiformats@^9.0.0, multiformats@^9.0.2, multiformats@^9.0.4, multiformats@^9.1.0, multiformats@^9.1.2, multiformats@^9.4.10, multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.4.7, multiformats@^9.5.1, multiformats@^9.5.2, multiformats@^9.5.4, multiformats@^9.5.8, multiformats@^9.6.3, multiformats@^9.6.4, multiformats@^9.6.5: +multiformats@9, multiformats@9.9.0, multiformats@^9.0.0, multiformats@^9.0.2, multiformats@^9.0.4, multiformats@^9.1.0, multiformats@^9.1.2, multiformats@^9.4.10, multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.4.7, multiformats@^9.5.1, multiformats@^9.5.2, multiformats@^9.5.4, multiformats@^9.5.8, multiformats@^9.6.2, multiformats@^9.6.3, multiformats@^9.6.4, multiformats@^9.6.5: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== @@ -17774,7 +20824,35 @@ multiformats@^11.0.0: resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.0.tgz#728dd8adfe4b169cd5b4b22d9dc1054d48bbe2d0" integrity sha512-vqF8bmMtbxw9Zn3eTpk0OZQdBVmAT/+bTGwXb3C2qCNkp45aJMmkCDds3lrtObECWPf+KFjFtTOHkvCaT/c/xQ== -multihashes@^4.0.1, multihashes@^4.0.3: +multiformats@^11.0.1, multiformats@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" + integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== + +multiformats@^12.0.0, multiformats@^12.0.1, multiformats@^12.1.0: + version "12.1.1" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.1.tgz#bebd4e121ccdb7e9b2f2db407f839fc9e963a3b7" + integrity sha512-GBSToTmri2vJYs8wqcZQ8kB21dCaeTOzHTIAlr8J06C1eL6UbzqURXFZ5Fl0EYm9GAFz1IlYY8SxGOs9G9NJRg== + +multiformats@^12.1.3: + version "12.1.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0: + version "13.0.1" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.0.1.tgz#c0622affa5171189eacd57c06f977195ca7acb08" + integrity sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA== + +multihashes-sync@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/multihashes-sync/-/multihashes-sync-1.1.3.tgz#8d764f8065c9ec28ca608dffb6366567b7f17e4a" + integrity sha512-996qBYdXxol6Pjjw++lsdgrEMI/6S6Su4bt0D/vb5TGpJsqicVxkramwIbuRaJU4WYUTytYPGRru2s626Qkzlw== + dependencies: + "@noble/hashes" "^1.3.0" + multiformats "^11.0.0" + +multihashes@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== @@ -17783,18 +20861,6 @@ multihashes@^4.0.1, multihashes@^4.0.3: uint8arrays "^3.0.0" varint "^5.0.2" -multihashing-async@^2.0.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" - integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== - dependencies: - blakejs "^1.1.0" - err-code "^3.0.0" - js-sha3 "^0.8.0" - multihashes "^4.0.1" - murmurhash3js-revisited "^3.0.0" - uint8arrays "^3.0.0" - multimatch@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" @@ -17862,6 +20928,11 @@ nano-time@1.0.0: dependencies: big-integer "^1.6.16" +nanoevents@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/nanoevents/-/nanoevents-8.0.0.tgz#d58d5cf69b172d794707b2468bdaccc415ad23b6" + integrity sha512-bYYwNCdNc5ea6/Lwh1uioU1/7aaKa3EPmNQ2weTm8PWSpbWrsaWHePe0Zq4SF+D3F3JX3cn+QdktOPCf1meOqw== + nanoid@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" @@ -17919,11 +20990,21 @@ native-fetch@^3.0.0: resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== +native-fetch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-4.0.2.tgz#75c8a44c5f3bb021713e5e24f2846750883e49af" + integrity sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +natural-orderby@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" + integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== + near-api-js@^0.44.2: version "0.44.2" resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-0.44.2.tgz#e451f68f2c56bd885c7b918db5818a3e6e9423d0" @@ -17994,10 +21075,10 @@ nft-did-resolver@^2.0.0: tslib "^2.3.0" uint8arrays "^3.0.0" -nist-weierstrauss@^1.3.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/nist-weierstrauss/-/nist-weierstrauss-1.5.1.tgz#029599fca780584349881039c67a5c1f88166d58" - integrity sha512-TtfkjxfCPYWljG4zSQgHVnzpwNj5pTlIKSxyPlXpsRpA9B8PJchKoIDe7ZIvfzPwZTzawhhGAqngFrM+7Elf0g== +nist-weierstrauss@^1.3.0, nist-weierstrauss@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/nist-weierstrauss/-/nist-weierstrauss-1.6.1.tgz#ce1acd81d09f83289bc5113f14c9790920935176" + integrity sha512-FpjCOnPV/s3ZVIkeldCVSml2K4lruabPbBgoEitpCK1JL0KTVoWb56CFTU6rZn5i6VqAjdwcOp0FDwJACPmeFA== dependencies: multiformats "^9.6.5" uint8arrays "^2.1.4" @@ -18042,6 +21123,13 @@ node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.12, node-fetch@^2.6.8: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^3.2.4: version "3.2.10" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.10.tgz#e8347f94b54ae18b57c9c049ef641cef398a85c8" @@ -18060,7 +21148,7 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-forge@^1.2.1, node-forge@^1.3.1: +node-forge@^1.1.0, node-forge@^1.2.1, node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== @@ -18246,6 +21334,13 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npm-run-path@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.2.0.tgz#224cdd22c755560253dd71b83a1ef2f758b2e955" + integrity sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg== + dependencies: + path-key "^4.0.0" + npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -18321,6 +21416,11 @@ object-inspect@^1.12.2, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -18334,6 +21434,18 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-sizeof@^2.6.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/object-sizeof/-/object-sizeof-2.6.3.tgz#3e106c15d90b13664cb8f387c66eb162fcbef1d8" + integrity sha512-GNkVRrLh11Qr5BGr73dwwPE200/78QG2rbx30cnXPnMvt7UuttH4Dup5t+LtcQhARkg8Hbr0c8Kiz52+CFxYmw== + dependencies: + buffer "^6.0.3" + +object-treeify@^1.1.33: + version "1.1.33" + resolved "https://registry.yarnpkg.com/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40" + integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== + object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" @@ -18344,23 +21456,23 @@ object.assign@^4.1.3, object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== +object.entries@^1.1.6, object.entries@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== +object.fromentries@^2.0.6, object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.getownpropertydescriptors@^2.0.3: version "2.1.4" @@ -18372,22 +21484,32 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.4" es-abstract "^1.20.1" -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.values@^1.1.6, object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" obliterator@^2.0.0: version "2.0.4" @@ -18449,6 +21571,13 @@ once@1.4.0, once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -18456,6 +21585,13 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + opencollective-postinstall@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" @@ -18473,17 +21609,32 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" + +ora@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-7.0.1.tgz#cdd530ecd865fe39e451a0e7697865669cb11930" + integrity sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw== + dependencies: + chalk "^5.3.0" + cli-cursor "^4.0.0" + cli-spinners "^2.9.0" + is-interactive "^2.0.0" + is-unicode-supported "^1.3.0" + log-symbols "^5.1.0" + stdin-discarder "^0.1.0" + string-width "^6.1.0" + strip-ansi "^7.1.0" os-tmpdir@~1.0.2: version "1.0.2" @@ -18508,6 +21659,11 @@ p-defer@^3.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== +p-defer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-4.0.0.tgz#8082770aeeb10eb6b408abe91866738741ddd5d2" + integrity sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ== + p-fifo@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" @@ -18575,6 +21731,11 @@ p-map-series@^2.1.0: resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -18595,7 +21756,7 @@ p-queue@6.6.2, p-queue@^6.0.0, p-queue@^6.2.1, p-queue@^6.3.0, p-queue@^6.6.1, p eventemitter3 "^4.0.4" p-timeout "^3.2.0" -p-queue@^7.2.0: +p-queue@7.3.0, p-queue@^7.2.0: version "7.3.0" resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.3.0.tgz#90dfa104894b286dc2f3638961380fb6dc262e55" integrity sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ== @@ -18603,6 +21764,14 @@ p-queue@^7.2.0: eventemitter3 "^4.0.7" p-timeout "^5.0.2" +p-queue@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.4.1.tgz#7f86f853048beca8272abdbb7cec1ed2afc0f265" + integrity sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^5.0.2" + p-reduce@^2.0.0, p-reduce@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" @@ -18654,6 +21823,11 @@ p-timeout@^5.0.2: resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== +p-timeout@^6.0.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.2.tgz#22b8d8a78abf5e103030211c5fc6dee1166a6aa5" + integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -18671,6 +21845,13 @@ p-wait-for@^3.1.0: dependencies: p-timeout "^3.0.0" +p-wait-for@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/p-wait-for/-/p-wait-for-5.0.2.tgz#1546a15e64accf1897377cb1507fa4c756fffe96" + integrity sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA== + dependencies: + p-timeout "^6.0.0" + p-waterfall@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" @@ -18743,6 +21924,11 @@ parse-duration@^1.0.0: resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.0.2.tgz#b9aa7d3a1363cc7e8845bea8fd3baf8a11df5805" integrity sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg== +parse-duration@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -18799,6 +21985,14 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" +password-prompt@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.3.tgz#05e539f4e7ca4d6c865d479313f10eb9db63ee5f" + integrity sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw== + dependencies: + ansi-escapes "^4.3.2" + cross-spawn "^7.0.3" + path-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" @@ -18827,11 +22021,24 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -18890,11 +22097,39 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +pg-boss@^8.2.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/pg-boss/-/pg-boss-8.4.2.tgz#4c300e3683e6acd7c157481544a49b8f565fe5e5" + integrity sha512-xcl/G8C7qlCyrcvlQvgLVBIe68zO0XfZc6K86/G9fq/mL+YQMEo1spW6lHqsPpNi2KGlpXwBEL/XZxkMa19eRA== + dependencies: + cron-parser "^4.0.0" + delay "^5.0.0" + lodash.debounce "^4.0.8" + p-map "^4.0.0" + pg "^8.5.1" + serialize-error "^8.1.0" + uuid "^9.0.0" + +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + pg-connection-string@2.5.0, pg-connection-string@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== +pg-connection-string@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.1.tgz#78c23c21a35dd116f48e12e23c0965e8d9e2cbfb" + integrity sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg== + +pg-connection-string@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" + integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== + pg-int8@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" @@ -18905,11 +22140,21 @@ pg-pool@^3.5.2: resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.5.2.tgz#ed1bed1fb8d79f1c6fd5fb1c99e990fbf9ddf178" integrity sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w== +pg-pool@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.1.tgz#5a902eda79a8d7e3c928b77abf776b3cb7d351f7" + integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== + pg-protocol@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.5.0.tgz#b5dd452257314565e2d54ab3c132adc46565a6a0" integrity sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ== +pg-protocol@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== + pg-types@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" @@ -18921,6 +22166,21 @@ pg-types@^2.1.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" +pg@^8.11.3, pg@^8.5.1: + version "8.11.3" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.3.tgz#d7db6e3fe268fcedd65b8e4599cda0b8b4bf76cb" + integrity sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== + dependencies: + buffer-writer "2.0.0" + packet-reader "1.0.0" + pg-connection-string "^2.6.2" + pg-pool "^3.6.1" + pg-protocol "^1.6.0" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" + pg@^8.7.3: version "8.8.0" resolved "https://registry.yarnpkg.com/pg/-/pg-8.8.0.tgz#a77f41f9d9ede7009abfca54667c775a240da686" @@ -19047,6 +22307,13 @@ pkh-did-resolver@^1.0.8: dependencies: caip "~1.1.0" +pkh-did-resolver@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pkh-did-resolver/-/pkh-did-resolver-1.2.0.tgz#823a1045261f97bba1f0d49bb1e5f40eb51f91dc" + integrity sha512-pl4kEGEifOiQL9lJjeJO0PD0dyuWsRihoCMlTPUxWxhrbBHP44+MJSwYF+nRaCQnYvm/C9xRKN6vfye3s0frzw== + dependencies: + caip "~1.1.0" + pngjs@^3.3.0: version "3.4.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" @@ -19178,12 +22445,12 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier-plugin-tailwindcss@^0.1.1: - version "0.1.13" - resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.13.tgz#ca1071361dc7e2ed5d95a2ee36825ce45f814942" - integrity sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw== +prettier-plugin-tailwindcss@^0.5.11: + version "0.5.11" + resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.11.tgz#1aa9308c3285b3cb7942aaeaec8d0e0775ac54d0" + integrity sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w== -prettier@^2.2.1, prettier@^2.6.2: +prettier@^2.2.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== @@ -19193,6 +22460,11 @@ prettier@^2.3.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" + integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== + pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" @@ -19231,6 +22503,11 @@ process-warning@^1.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +progress-events@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.0.tgz#34f5e8fdb5dae3561837b22672d1e02277bb2109" + integrity sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -19306,6 +22583,24 @@ protobufjs@^6.10.2, protobufjs@^6.11.2: "@types/node" ">=13.7.0" long "^4.0.0" +protobufjs@^7.0.0: + version "7.2.5" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.5.tgz#45d5c57387a6d29a17aab6846dcc283f9b8e7f2d" + integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + protocols@^1.4.0: version "1.4.8" resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" @@ -19316,6 +22611,14 @@ protocols@^2.0.1: resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== +protons-runtime@^5.0.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-5.2.2.tgz#0b36918ebcbecb8b7eb90d11bb367342f480b2e8" + integrity sha512-o97rNPN9pE3cxOxjs/waZNRKlbY/DR11oc20rUvarWZgFzQLLLzJU0RFh5JPi6GJCN67VGVn9/FDIEtFblfB3A== + dependencies: + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -19653,6 +22956,13 @@ react-native-fetch-api@^2.0.0: dependencies: p-defer "^3.0.0" +react-native-fetch-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" + integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== + dependencies: + p-defer "^3.0.0" + react-popper@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" @@ -19670,9 +22980,9 @@ react-qr-code@^2.0.7: qr.js "0.0.0" react-query@^3.35.0: - version "3.39.2" - resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.39.2.tgz#9224140f0296f01e9664b78ed6e4f69a0cc9216f" - integrity sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA== + version "3.39.3" + resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.39.3.tgz#4cea7127c6c26bdea2de5fb63e51044330b03f35" + integrity sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g== dependencies: "@babel/runtime" "^7.5.5" broadcast-channel "^3.4.1" @@ -19904,6 +23214,13 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" + integrity sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ== + dependencies: + esprima "~4.0.0" + redis-errors@^1.0.0, redis-errors@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" @@ -19938,6 +23255,18 @@ reflect-metadata@^0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + regenerate-unicode-properties@^10.1.0: version "10.1.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" @@ -19967,7 +23296,7 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -19976,7 +23305,7 @@ regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexp.prototype.flags@^1.5.0: +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== @@ -19985,11 +23314,6 @@ regexp.prototype.flags@^1.5.0: define-properties "^1.2.0" set-function-name "^2.0.0" -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - regexpu-core@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" @@ -20009,10 +23333,10 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" -remove-accents@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" - integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== +remove-accents@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.5.0.tgz#77991f37ba212afba162e375b627631315bed687" + integrity sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A== request@^2.88.2: version "2.88.2" @@ -20111,7 +23435,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.2: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.3.2: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -20120,12 +23444,21 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -20136,6 +23469,14 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -20144,6 +23485,14 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retimer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" @@ -20178,6 +23527,11 @@ rimraf@^2.2.8: dependencies: glob "^7.1.3" +ripemd160-min@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -20229,7 +23583,7 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.6.0, rxjs@^6.6.3: +rxjs@^6.3.3, rxjs@^6.6.0, rxjs@^6.6.3: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -20243,7 +23597,7 @@ rxjs@^7.0.0, rxjs@^7.5.2: dependencies: tslib "^2.1.0" -rxjs@^7.5.5: +rxjs@^7.5.5, rxjs@^7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== @@ -20268,6 +23622,16 @@ sade@^1.7.4: dependencies: mri "^1.1.0" +safe-array-concat@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -20296,6 +23660,15 @@ safe-event-emitter@^1.0.1: dependencies: events "^3.0.0" +safe-regex-test@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" + integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + is-regex "^1.1.4" + safe-stable-stringify@^2.1.0: version "2.4.3" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" @@ -20422,6 +23795,13 @@ sentence-case@^3.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" +serialize-error@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" + integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== + dependencies: + type-fest "^0.20.2" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -20459,7 +23839,7 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" -set-function-name@^2.0.0: +set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== @@ -20524,6 +23904,18 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -20534,6 +23926,20 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -20833,6 +24239,13 @@ std-env@^3.4.3: resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.6.0.tgz#94807562bddc68fa90f2e02c5fd5b6865bb4e98e" integrity sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg== +stdin-discarder@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21" + integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ== + dependencies: + bl "^5.0.0" + steed@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/steed/-/steed-1.1.3.tgz#f1525dd5adb12eb21bf74749537668d625b9abc5" @@ -20871,7 +24284,7 @@ stream-to-array@^2.3.0: dependencies: any-promise "^1.1.0" -stream-to-it@^0.2.2: +stream-to-it@^0.2.2, stream-to-it@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== @@ -20906,6 +24319,15 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -20915,14 +24337,13 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" @@ -20933,20 +24354,48 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string-width@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-6.1.0.tgz#96488d6ed23f9ad5d82d13522af9e4c4c3fd7518" + integrity sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^10.2.1" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" side-channel "^1.0.4" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -20956,6 +24405,15 @@ string.prototype.trimend@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimstart@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" @@ -20965,6 +24423,15 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -20979,6 +24446,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -20986,6 +24460,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -20993,12 +24474,12 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" @@ -21015,6 +24496,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -21029,7 +24515,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -21095,13 +24581,18 @@ supertest@^6.2.2: methods "^1.1.2" superagent "^8.0.0" -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0: +supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -21116,7 +24607,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: +supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== @@ -21145,11 +24636,24 @@ svelte@^3.49.0: resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.50.1.tgz#b35fbc5e79ddd71e8bb27c3149ee6ff903841239" integrity sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA== +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + table-layout@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -21193,6 +24697,11 @@ tailwindcss@^3.0.7: quick-lru "^5.1.1" resolve "^1.22.1" +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar-fs@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -21236,6 +24745,11 @@ temp-dir@^1.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + temp-write@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" @@ -21247,6 +24761,16 @@ temp-write@^4.0.0: temp-dir "^1.0.0" uuid "^3.3.2" +temp-write@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-5.0.0.tgz#dd9aafebc93ce2067e962a1665f3873e20efb498" + integrity sha512-cJhnzBW7DjNox7VcZDXeNlQSkIh3mX/h+M0n0Fh+zgT7YAHwI9c+OngKx4MCiQCVx9iXxV104xYlJgDBCCtawA== + dependencies: + graceful-fs "^4.2.6" + is-stream "^2.0.0" + temp-dir "^2.0.0" + uuid "^8.3.2" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -21255,6 +24779,11 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" +terminal-size@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/terminal-size/-/terminal-size-4.0.0.tgz#a0b7530518afe5f49952c58251ec6e2e3a740570" + integrity sha512-rcdty1xZ2/BkWa4ANjWRp4JGpda2quksXIHgn5TMjNBPZfwzJIgR68DKfSYiTL+CZWowDX/sbOo5ME/FRURvYQ== + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -21337,6 +24866,13 @@ timeout-abort-controller@^2.0.0: native-abort-controller "^1.0.4" retimer "^3.0.0" +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + timestamp-nano@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/timestamp-nano/-/timestamp-nano-1.0.0.tgz#03bf0b43c2bdcb913a6a02fbaae6f97d68650f3a" @@ -21471,6 +25007,11 @@ truncate-utf8-bytes@^1.0.0: dependencies: utf8-byte-length "^1.0.1" +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + ts-command-line-args@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz#7eeed3a6937b2612ea08a0794cf9d43fbbea89c4" @@ -21539,13 +25080,13 @@ ts-node@^10.8.0, ts-node@^10.8.1, ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" + json5 "^1.0.2" minimist "^1.2.6" strip-bom "^3.0.0" @@ -21559,6 +25100,11 @@ tslib@2.4.0, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3. resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.5.0, tslib@^2.5.2, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslint@^6.1.3: version "6.1.3" resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" @@ -21693,6 +25239,11 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^4.8.3: + version "4.9.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.9.0.tgz#d29c8efe5b1e703feeb29cef23d887b2f479844d" + integrity sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -21717,6 +25268,45 @@ typechain@^8.1.1: ts-command-line-args "^2.2.0" ts-essentials "^7.0.1" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5, typedarray-to-buffer@~3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -21746,25 +25336,20 @@ typeforce@^1.11.5: resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== -typescript-memoize@^1.0.0-alpha.4, typescript-memoize@^1.1.0: +typescript-memoize@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.1.1.tgz#02737495d5df6ebf72c07ba0d002e8f4cf5ccfa0" integrity sha512-GQ90TcKpIH4XxYTI2F98yEQYZgjNMOGPpOgdjIBhaLaWji5HPWlRnZ4AeA1hfBxtY7bCGDJsqDDHk/KaHOl5bA== -typescript@4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" - integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== - typescript@^4.4.3: version "4.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== -typescript@~4.6.3: - version "4.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" - integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== +typescript@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== typical@^4.0.0: version "4.0.0" @@ -21796,7 +25381,29 @@ uid-number@0.0.6: resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w== -uint8arrays@^2.0.5, uint8arrays@^2.1.3, uint8arrays@^2.1.4: +uint8-varint@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.3.tgz#049fceb3e870757dec26b29633770900f3132233" + integrity sha512-seXTM8ba4uuAMDgi3UHXPdDxCBKjWWZigW+F+1ESPhOZv9ekT1qmbdzYHLSNA+u+wHj10P55dQ41y2Qh7NOqiA== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.1.2, uint8arraylist@^2.4.3: + version "2.4.8" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + +uint8arrays@3.1.1, uint8arrays@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^2.1.4: version "2.1.10" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== @@ -21810,19 +25417,26 @@ uint8arrays@^3.0.0: dependencies: multiformats "^9.4.2" -uint8arrays@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" - integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== +uint8arrays@^4.0.2, uint8arrays@^4.0.6, uint8arrays@^4.0.9: + version "4.0.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== dependencies: - multiformats "^9.4.2" + multiformats "^12.0.1" -uint8arrays@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.3.tgz#43109c03c4c10d312e7f2e9f4d53e5cd2398c7fd" - integrity sha512-b+aKlI2oTnxnfeSQWV1sMacqSNxqhtXySaH6bflvONGxF8V/fT3ZlYH7z2qgGfydsvpVo4JUgM/Ylyfl2YouCg== +uint8arrays@^4.0.3: + version "4.0.6" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.6.tgz#bae68b536c2e87147045b95d73d29e503e45ecab" + integrity sha512-4ZesjQhqOU2Ip6GPReIwN60wRxIupavL8T0Iy36BBHr2qyMrNxsPJvr7vpS4eFt8F8kSguWUPad6ZM9izs/vyw== dependencies: - multiformats "^11.0.0" + multiformats "^12.0.1" + +uint8arrays@^5.0.0, uint8arrays@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.0.1.tgz#6016ef944379eabb6de605934ead4d7a698c9f07" + integrity sha512-ND5RpJAnPgHmZT7hWD/2T4BwRp04j8NLKvMKC/7bhiEwEjUMkQ4kvBKiH6hOqbljd6qJ2xS8reL3vl1e33grOQ== + dependencies: + multiformats "^13.0.0" umask@^1.1.0: version "1.1.0" @@ -21844,6 +25458,18 @@ uncrypto@^0.1.3: resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici@^5.12.0: + version "5.28.2" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" + integrity sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w== + dependencies: + "@fastify/busboy" "^2.0.0" + undici@^5.14.0: version "5.22.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.0.tgz#5e205d82a5aecc003fc4388ccd3d2c6e8674a0ad" @@ -22056,6 +25682,11 @@ url@0.10.3: punycode "1.3.2" querystring "0.2.0" +urlpattern-polyfill@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz#bc7e386bb12fd7898b58d1509df21d3c29ab3460" + integrity sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g== + use-callback-ref@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" @@ -22110,13 +25741,6 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -util@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - util@^0.12.4: version "0.12.4" resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" @@ -22154,6 +25778,11 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -22200,6 +25829,11 @@ valtio@1.11.2: proxy-compare "2.5.1" use-sync-external-store "1.2.0" +value-or-promise@^1.0.11, value-or-promise@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" + integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== + varint-decoder@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/varint-decoder/-/varint-decoder-1.0.0.tgz#289dab7887ee58d0c7be3a3353abeab4ca60aa77" @@ -22217,6 +25851,18 @@ varint@^6.0.0: resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== +varintes@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/varintes/-/varintes-2.0.5.tgz#e5e2e53b10300ca4d5c0bacae2a826f7b3b2cab5" + integrity sha512-iF3jlHLko9NrYjaUZvT3VwypP3V20KNNhT1tzqblyIyrVjNiW7HseGOhuP+apgZBp9X/8+5pxa7kNikhJeZlIw== + +varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -22231,6 +25877,20 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +viem@^1.21.4: + version "1.21.4" + resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" + integrity sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "0.9.8" + isows "1.0.3" + ws "8.13.0" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -22376,6 +26036,13 @@ wherearewe@^1.0.0: dependencies: is-electron "^2.2.0" +wherearewe@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-2.0.1.tgz#37c97a7bf112dca8db34bfefb2f6c997af312bb8" + integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== + dependencies: + is-electron "^2.2.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -22387,6 +26054,24 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + which-collection@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" @@ -22402,7 +26087,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: version "1.1.13" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== @@ -22446,6 +26131,13 @@ wide-align@^1.1.0, wide-align@^1.1.2, wide-align@^1.1.5: dependencies: string-width "^1.0.2 || 2 || 3 || 4" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + wif@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" @@ -22453,7 +26145,7 @@ wif@^2.0.6: dependencies: bs58check "<3.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -22476,6 +26168,24 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + name wrap-ansi-cjs + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -22494,15 +26204,14 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - name wrap-ansi-cjs - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" @@ -22579,6 +26288,11 @@ ws@7.5.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== +ws@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + ws@8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" @@ -22771,6 +26485,11 @@ yargs@^17.0.0, yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.0.0" +yarn@^1.22.21: + version "1.22.21" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.21.tgz#1959a18351b811cdeedbd484a8f86c3cc3bbaf72" + integrity sha512-ynXaJsADJ9JiZ84zU25XkPGOvVMmZ5b7tmTSpKURYwgELdjucAOydqIOrOfTxVYcNXe91xvLZwcRh68SR3liCg== + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"