diff --git a/.changeset/sweet-lions-hope.md b/.changeset/sweet-lions-hope.md new file mode 100644 index 0000000000..ec50797b28 --- /dev/null +++ b/.changeset/sweet-lions-hope.md @@ -0,0 +1,6 @@ +--- +"@latticexyz/store-indexer": patch +"@latticexyz/store-sync": patch +--- + +Removed tRPC code paths and dependencies that were deprecated before 2.0 stable release. diff --git a/e2e/packages/sync-test/indexerSync.test.ts b/e2e/packages/sync-test/indexerSync.test.ts index 3585c6e4a2..7369c8f240 100644 --- a/e2e/packages/sync-test/indexerSync.test.ts +++ b/e2e/packages/sync-test/indexerSync.test.ts @@ -54,7 +54,7 @@ describe("Sync from indexer", async () => { }); it("should log error if indexer is offline", async () => { - await openClientWithRootAccount(page, { indexerUrl: `http://127.0.0.1:9999/trpc` }); + await openClientWithRootAccount(page, { indexerUrl: `http://127.0.0.1:9999` }); await waitForInitialSync(page); const errors = asyncErrorHandler.getErrors(); diff --git a/e2e/packages/sync-test/setup/startIndexer.ts b/e2e/packages/sync-test/setup/startIndexer.ts index ac0d3f9a55..cfe88b6fc6 100644 --- a/e2e/packages/sync-test/setup/startIndexer.ts +++ b/e2e/packages/sync-test/setup/startIndexer.ts @@ -101,7 +101,7 @@ export async function startIndexer(opts: StartIndexerOptions) { }); return { - url: `http://127.0.0.1:${opts.port}/trpc`, + url: `http://127.0.0.1:${opts.port}`, doneSyncing, process: proc, kill: () => diff --git a/examples/indexer-client/index.ts b/examples/indexer-client/index.ts deleted file mode 100644 index 11b9727c1a..0000000000 --- a/examples/indexer-client/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createIndexerClient } from "@latticexyz/store-sync/trpc-indexer"; -const indexer = createIndexerClient({ - url: "http://127.0.0.1:3001/trpc", -}); - -const result = await indexer.findAll.query({ - chainId: 31337, - address: "0x5FbDB2315678afecb367f032d93F642f64180aa3", -}); - -console.log(`Block number: ${result.blockNumber}`); - -console.log(`Tables: ${result.tables.map((t) => t.name)}`); - -const counterTable = result.tables.filter((t) => t.name == "Counter")[0]; -console.log("Information about Counter"); -console.log(counterTable); - -console.log(`The actual value: ${counterTable.records[0].value.value}`); diff --git a/examples/indexer-client/package.json b/examples/indexer-client/package.json deleted file mode 100644 index 86413b85fe..0000000000 --- a/examples/indexer-client/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "mud-example-indexer-client", - "version": "0.0.0", - "private": true, - "license": "MIT", - "type": "module", - "scripts": { - "read-indexer": "tsx index.ts" - }, - "dependencies": { - "@latticexyz/store-sync": "link:../../packages/store-sync", - "tsx": "4.19.0" - } -} diff --git a/examples/indexer-client/pnpm-workspace.yaml b/examples/indexer-client/pnpm-workspace.yaml deleted file mode 100644 index 8a14b6e24f..0000000000 --- a/examples/indexer-client/pnpm-workspace.yaml +++ /dev/null @@ -1 +0,0 @@ -# this file forces pnpm to treat this separately from the monorepo root workspace diff --git a/examples/indexer-client/tsconfig.json b/examples/indexer-client/tsconfig.json deleted file mode 100644 index b4e69ae1f9..0000000000 --- a/examples/indexer-client/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist" - } -} diff --git a/packages/store-indexer/package.json b/packages/store-indexer/package.json index 9e3cc2c4a2..c6c53867bc 100644 --- a/packages/store-indexer/package.json +++ b/packages/store-indexer/package.json @@ -59,8 +59,6 @@ "@sentry/node": "^7.86.0", "@sentry/profiling-node": "^1.2.6", "@sentry/utils": "^7.86.0", - "@trpc/client": "10.34.0", - "@trpc/server": "10.34.0", "@types/koa-bodyparser": "^4.3.12", "accepts": "^1.3.8", "better-sqlite3": "^8.6.0", @@ -75,7 +73,6 @@ "prom-client": "^15.1.2", "rxjs": "7.5.5", "superjson": "^1.12.4", - "trpc-koa-adapter": "^1.1.3", "zod": "3.23.8" }, "devDependencies": { diff --git a/packages/store-indexer/src/bin/postgres-frontend.ts b/packages/store-indexer/src/bin/postgres-frontend.ts index bd6c868864..91887b10ae 100644 --- a/packages/store-indexer/src/bin/postgres-frontend.ts +++ b/packages/store-indexer/src/bin/postgres-frontend.ts @@ -3,12 +3,8 @@ import "dotenv/config"; import { z } from "zod"; import Koa from "koa"; import cors from "@koa/cors"; -import { createKoaMiddleware } from "trpc-koa-adapter"; -import { createAppRouter } from "@latticexyz/store-sync/trpc-indexer"; -import { drizzle } from "drizzle-orm/postgres-js"; import postgres from "postgres"; import { frontendEnvSchema, parseEnv } from "./parseEnv"; -import { createQueryAdapter } from "../postgres/deprecated/createQueryAdapter"; import { apiRoutes } from "../postgres/apiRoutes"; import { sentry } from "../koa-middleware/sentry"; import { healthcheck } from "../koa-middleware/healthcheck"; @@ -44,15 +40,5 @@ server.use( server.use(helloWorld()); server.use(apiRoutes(database)); -server.use( - createKoaMiddleware({ - prefix: "/trpc", - router: createAppRouter(), - createContext: async () => ({ - queryAdapter: await createQueryAdapter(drizzle(database)), - }), - }), -); - server.listen({ host: env.HOST, port: env.PORT }); console.log(`postgres indexer frontend listening on http://${env.HOST}:${env.PORT}`); diff --git a/packages/store-indexer/src/bin/sqlite-indexer.ts b/packages/store-indexer/src/bin/sqlite-indexer.ts index 1518f35800..5adddc19d1 100644 --- a/packages/store-indexer/src/bin/sqlite-indexer.ts +++ b/packages/store-indexer/src/bin/sqlite-indexer.ts @@ -8,10 +8,7 @@ import Database from "better-sqlite3"; import Koa from "koa"; import cors from "@koa/cors"; import bodyParser from "koa-bodyparser"; -import { createKoaMiddleware } from "trpc-koa-adapter"; -import { createAppRouter } from "@latticexyz/store-sync/trpc-indexer"; import { chainState, schemaVersion, syncToSqlite } from "@latticexyz/store-sync/sqlite"; -import { createQueryAdapter } from "../sqlite/createQueryAdapter"; import { combineLatest, filter, first } from "rxjs"; import { frontendEnvSchema, indexerEnvSchema, parseEnv } from "./parseEnv"; import { healthcheck } from "../koa-middleware/healthcheck"; @@ -145,16 +142,6 @@ server.use( server.use(helloWorld()); server.use(apiRoutes({ database, enableUnsafeQueryApi: env.ENABLE_UNSAFE_QUERY_API })); -server.use( - createKoaMiddleware({ - prefix: "/trpc", - router: createAppRouter(), - createContext: async () => ({ - queryAdapter: await createQueryAdapter(database), - }), - }), -); - server.listen({ host: env.HOST, port: env.PORT }); console.log(`sqlite indexer frontend listening on http://${env.HOST}:${env.PORT}`); diff --git a/packages/store-indexer/src/postgres/deprecated/createQueryAdapter.ts b/packages/store-indexer/src/postgres/deprecated/createQueryAdapter.ts deleted file mode 100644 index a3f5f76587..0000000000 --- a/packages/store-indexer/src/postgres/deprecated/createQueryAdapter.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { getAddress } from "viem"; -import { PgDatabase } from "drizzle-orm/pg-core"; -import { TableWithRecords, isTableRegistrationLog, logToTable, schemasTable } from "@latticexyz/store-sync"; -import { KeySchema, decodeKey, decodeValueArgs } from "@latticexyz/protocol-parser/internal"; -import { QueryAdapter } from "@latticexyz/store-sync/trpc-indexer"; -import { debug } from "../../debug"; -import { getLogs } from "./getLogs"; -import { groupBy } from "@latticexyz/common/utils"; - -/** - * Creates a query adapter for the tRPC server/client to query data from Postgres. - * - * @param {PgDatabase} database Postgres database object from Drizzle - * @returns {Promise} A set of methods used by tRPC endpoints. - * @deprecated - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export async function createQueryAdapter(database: PgDatabase): Promise { - const adapter: QueryAdapter = { - async getLogs(opts) { - return getLogs(database, opts); - }, - async findAll(opts) { - const filters = opts.filters ?? []; - const { blockNumber, logs } = await getLogs(database, { - ...opts, - // make sure we're always retrieving `store.Tables` table, so we can decode table values - filters: filters.length > 0 ? [...filters, { tableId: schemasTable.tableId }] : [], - }); - - const tables = logs.filter(isTableRegistrationLog).map(logToTable); - - const logsByTable = groupBy(logs, (log) => `${getAddress(log.address)}:${log.args.tableId}`); - - const tablesWithRecords: readonly TableWithRecords[] = tables.map((table) => { - const tableLogs = logsByTable.get(`${getAddress(table.address)}:${table.tableId}`) ?? []; - const records = tableLogs.map((log) => { - const key = decodeKey(table.keySchema as KeySchema, log.args.keyTuple); - const value = decodeValueArgs(table.valueSchema, log.args); - return { key, value, fields: { ...key, ...value } }; - }); - - return { - ...table, - records, - }; - }); - - debug("findAll: decoded %d logs across %d tables", logs.length, tables.length); - - return { - blockNumber, - tables: tablesWithRecords, - }; - }, - }; - return adapter; -} diff --git a/packages/store-indexer/src/postgres/deprecated/getLogs.ts b/packages/store-indexer/src/postgres/deprecated/getLogs.ts deleted file mode 100644 index 5ada0908fb..0000000000 --- a/packages/store-indexer/src/postgres/deprecated/getLogs.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { PgDatabase } from "drizzle-orm/pg-core"; -import { Hex } from "viem"; -import { StorageAdapterLog, SyncFilter } from "@latticexyz/store-sync"; -import { tables } from "@latticexyz/store-sync/postgres"; -import { and, asc, eq, or } from "drizzle-orm"; -import { bigIntMax } from "@latticexyz/common/utils"; -import { recordToLog } from "../recordToLog"; -import { createBenchmark } from "@latticexyz/common"; - -/** - * @deprecated - */ -export async function getLogs( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - database: PgDatabase, - { - chainId, - address, - filters = [], - }: { - readonly chainId: number; - readonly address?: Hex; - readonly filters?: readonly SyncFilter[]; - }, -): Promise<{ blockNumber: bigint; logs: Extract[] }> { - const benchmark = createBenchmark("drizzleGetLogs"); - - const conditions = filters.length - ? filters.map((filter) => - and( - address != null ? eq(tables.recordsTable.address, address) : undefined, - eq(tables.recordsTable.tableId, filter.tableId), - filter.key0 != null ? eq(tables.recordsTable.key0, filter.key0) : undefined, - filter.key1 != null ? eq(tables.recordsTable.key1, filter.key1) : undefined, - ), - ) - : address != null - ? [eq(tables.recordsTable.address, address)] - : []; - benchmark("parse config"); - - // Query for the block number that the indexer (i.e. chain) is at, in case the - // indexer is further along in the chain than a given store/table's last updated - // block number. We'll then take the highest block number between the indexer's - // chain state and all the records in the query (in case the records updated - // between these queries). Using just the highest block number from the queries - // could potentially signal to the client an older-than-necessary block number, - // for stores/tables that haven't seen recent activity. - // TODO: move the block number query into the records query for atomicity so we don't have to merge them here - const chainState = await database - .select() - .from(tables.configTable) - .where(eq(tables.configTable.chainId, chainId)) - .limit(1) - .execute() - // Get the first record in a way that returns a possible `undefined` - // TODO: move this to `.findFirst` after upgrading drizzle or `rows[0]` after enabling `noUncheckedIndexedAccess: true` - .then((rows) => rows.find(() => true)); - const indexerBlockNumber = chainState?.blockNumber ?? 0n; - benchmark("query chainState"); - - const records = await database - .select() - .from(tables.recordsTable) - .where(or(...conditions)) - .orderBy( - asc(tables.recordsTable.blockNumber), - // TODO: add logIndex (https://github.com/latticexyz/mud/issues/1979) - ); - benchmark("query records"); - - const blockNumber = records.reduce((max, record) => bigIntMax(max, record.blockNumber ?? 0n), indexerBlockNumber); - benchmark("find block number"); - - const logs = records - // TODO: add this to the query, assuming we can optimize with an index - .filter((record) => !record.isDeleted) - .map(recordToLog); - benchmark("map records to logs"); - - return { blockNumber, logs }; -} diff --git a/packages/store-indexer/src/sqlite/createQueryAdapter.ts b/packages/store-indexer/src/sqlite/createQueryAdapter.ts deleted file mode 100644 index a80c945296..0000000000 --- a/packages/store-indexer/src/sqlite/createQueryAdapter.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core"; -import { QueryAdapter } from "@latticexyz/store-sync/trpc-indexer"; -import { getTablesWithRecords } from "./getTablesWithRecords"; -import { tablesWithRecordsToLogs } from "@latticexyz/store-sync"; - -/** - * Creates a storage adapter for the tRPC server/client to query data from SQLite. - * - * @param {BaseSQLiteDatabase<"sync", any>} database SQLite database object from Drizzle - * @returns {Promise} A set of methods used by tRPC endpoints. - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export async function createQueryAdapter(database: BaseSQLiteDatabase<"sync", any>): Promise { - const adapter: QueryAdapter = { - async getLogs(opts) { - const { blockNumber, tables } = getTablesWithRecords(database, opts); - const logs = tablesWithRecordsToLogs(tables); - return { blockNumber: blockNumber ?? 0n, logs }; - }, - async findAll(opts) { - return getTablesWithRecords(database, opts); - }, - }; - return adapter; -} diff --git a/packages/store-sync/package.json b/packages/store-sync/package.json index 5efc7bc827..50c0cf283c 100644 --- a/packages/store-sync/package.json +++ b/packages/store-sync/package.json @@ -18,7 +18,6 @@ "./postgres-decoded": "./dist/postgres-decoded/index.js", "./recs": "./dist/recs/index.js", "./sqlite": "./dist/sqlite/index.js", - "./trpc-indexer": "./dist/trpc-indexer/index.js", "./world": "./dist/exports/world.js", "./zustand": "./dist/zustand/index.js" }, @@ -48,9 +47,6 @@ "sqlite": [ "./dist/sqlite/index.d.ts" ], - "trpc-indexer": [ - "./dist/trpc-indexer/index.d.ts" - ], "world": [ "./dist/exports/world.d.ts" ], @@ -85,8 +81,6 @@ "@latticexyz/store": "workspace:*", "@latticexyz/world": "workspace:*", "@latticexyz/world-module-metadata": "workspace:*", - "@trpc/client": "10.34.0", - "@trpc/server": "10.34.0", "change-case": "^5.2.0", "debug": "^4.3.4", "drizzle-orm": "^0.28.5", diff --git a/packages/store-sync/src/getSnapshot.ts b/packages/store-sync/src/getSnapshot.ts index f78d6e8cf0..df15b65604 100644 --- a/packages/store-sync/src/getSnapshot.ts +++ b/packages/store-sync/src/getSnapshot.ts @@ -1,10 +1,8 @@ import { StorageAdapterBlock, SyncOptions } from "./common"; import { debug as parentDebug } from "./debug"; -import { TRPCClientError } from "@trpc/client"; import { tablesWithRecordsToLogs } from "./tablesWithRecordsToLogs"; -import { createIndexerClient as createTrpcIndexerClient } from "./trpc-indexer"; import { createIndexerClient } from "./indexer-client"; -import { isOk } from "@latticexyz/common"; +import { unwrap } from "@latticexyz/common"; const debug = parentDebug.extend("getSnapshot"); @@ -43,38 +41,7 @@ export async function getSnapshot({ const indexerOrigin = new URL(indexerUrl).origin; const indexer = createIndexerClient({ url: indexerOrigin }); - const trpcIndexer = createTrpcIndexerClient({ url: `${indexerOrigin}/trpc` }); debug("fetching logs from indexer via get", indexerUrl); - const result = await indexer.getLogs({ chainId, address, filters }); - if (isOk(result)) return result.ok; - console.warn(result.error); - - try { - // Backwards compatibility with older indexers - // TODO: remove in the future - debug("fetching logs from indexer via trpc", indexerUrl); - return await trpcIndexer.getLogs.query({ chainId, address, filters }); - } catch (error) { - if (error instanceof TRPCClientError) { - // Backwards compatibility with older indexers - // TODO: remove in the future - debug("failed to fetch logs, fetching table records instead", indexerUrl); - const result = await trpcIndexer.findAll.query({ chainId, address, filters }); - // warn after we fetch from old endpoint so we know that the indexer is accessible - console.warn( - `The indexer at ${indexerUrl} appears to be outdated. Consider upgrading to a recent version for better performance.`, - ); - - // if the indexer returns no block number, it hasn't indexed this chain - if (result.blockNumber == null) { - return; - } - return { - blockNumber: result.blockNumber, - logs: tablesWithRecordsToLogs(result.tables), - }; - } - throw error; - } + return unwrap(await indexer.getLogs({ chainId, address, filters })); } diff --git a/packages/store-sync/src/trpc-indexer/common.ts b/packages/store-sync/src/trpc-indexer/common.ts deleted file mode 100644 index 7e5334aead..0000000000 --- a/packages/store-sync/src/trpc-indexer/common.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Hex } from "viem"; -import { StorageAdapterBlock, SyncFilter, TableWithRecords } from "../common"; - -export type QueryAdapter = { - /** - * @deprecated - */ - findAll: (opts: { chainId: number; address?: Hex; filters?: readonly SyncFilter[] }) => Promise<{ - readonly blockNumber: bigint | null; - readonly tables: readonly TableWithRecords[]; - }>; - getLogs: (opts: { - readonly chainId: number; - readonly address?: Hex; - readonly filters?: readonly SyncFilter[]; - }) => Promise; -}; diff --git a/packages/store-sync/src/trpc-indexer/createAppRouter.ts b/packages/store-sync/src/trpc-indexer/createAppRouter.ts deleted file mode 100644 index af2acf89fe..0000000000 --- a/packages/store-sync/src/trpc-indexer/createAppRouter.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { QueryAdapter } from "./common"; -import { initTRPC } from "@trpc/server"; -import superjson from "superjson"; -import { input } from "../indexer-client/input"; - -/** - * @deprecated - */ -export function createAppRouter() { - const t = initTRPC.context<{ queryAdapter: QueryAdapter }>().create({ - transformer: superjson, - }); - - return t.router({ - getLogs: t.procedure.input(input).query(async (opts): ReturnType => { - const { queryAdapter } = opts.ctx; - const { chainId, address, filters } = opts.input; - return queryAdapter.getLogs({ chainId, address, filters }); - }), - - findAll: t.procedure.input(input).query(async (opts): ReturnType => { - const { queryAdapter } = opts.ctx; - const { chainId, address, filters } = opts.input; - return queryAdapter.findAll({ chainId, address, filters }); - }), - }); -} - -export type AppRouter = ReturnType; diff --git a/packages/store-sync/src/trpc-indexer/createIndexerClient.ts b/packages/store-sync/src/trpc-indexer/createIndexerClient.ts deleted file mode 100644 index 4d8dffcaa0..0000000000 --- a/packages/store-sync/src/trpc-indexer/createIndexerClient.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { createTRPCProxyClient, httpBatchLink, CreateTRPCProxyClient } from "@trpc/client"; -import superjson from "superjson"; -import type { AppRouter } from "./createAppRouter"; - -type CreateIndexerClientOptions = { - /** - * tRPC endpoint URL like `https://indexer.dev.linfra.xyz/trpc`. - */ - url: string; -}; - -/** - * Creates a tRPC client to talk to a MUD indexer. - * - * @param {CreateIndexerClientOptions} options See `CreateIndexerClientOptions`. - * @returns {CreateTRPCProxyClient} A typed tRPC client. - * @deprecated Use the `createIndexerClient` export from `@latticexyz/store-sync/indexer-client - */ -export function createIndexerClient({ url }: CreateIndexerClientOptions): CreateTRPCProxyClient { - return createTRPCProxyClient({ - transformer: superjson, - links: [httpBatchLink({ url })], - }); -} diff --git a/packages/store-sync/src/trpc-indexer/index.ts b/packages/store-sync/src/trpc-indexer/index.ts deleted file mode 100644 index c4131b5a37..0000000000 --- a/packages/store-sync/src/trpc-indexer/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./common"; -export * from "./createAppRouter"; -export * from "./createIndexerClient"; diff --git a/packages/store-sync/tsup.config.ts b/packages/store-sync/tsup.config.ts index 886ea4dcfd..1536873774 100644 --- a/packages/store-sync/tsup.config.ts +++ b/packages/store-sync/tsup.config.ts @@ -9,7 +9,6 @@ export default defineConfig((opts) => ({ "src/postgres/index.ts", "src/postgres-decoded/index.ts", "src/recs/index.ts", - "src/trpc-indexer/index.ts", "src/indexer-client/index.ts", "src/zustand/index.ts", "src/exports/internal.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 649514c4a4..a6426ce15d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -603,7 +603,7 @@ importers: version: 3.1.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@rainbow-me/rainbowkit': specifier: ^2.2.6 - version: 2.2.6(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(@upstash/redis@1.34.9)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) + version: 2.2.6(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)) '@tanstack/react-query': specifier: ^5.51.3 version: 5.52.0(react@18.2.0) @@ -669,7 +669,7 @@ importers: version: 1.12.0 wagmi: specifier: 2.15.5 - version: 2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(@upstash/redis@1.34.9)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + version: 2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) yargs: specifier: ^17.7.1 version: 17.7.2 @@ -1071,12 +1071,6 @@ importers: '@sentry/utils': specifier: ^7.86.0 version: 7.86.0 - '@trpc/client': - specifier: 10.34.0 - version: 10.34.0(@trpc/server@10.34.0) - '@trpc/server': - specifier: 10.34.0 - version: 10.34.0 '@types/koa-bodyparser': specifier: ^4.3.12 version: 4.3.12 @@ -1119,9 +1113,6 @@ importers: superjson: specifier: ^1.12.4 version: 1.12.4 - trpc-koa-adapter: - specifier: ^1.1.3 - version: 1.1.3(@trpc/server@10.34.0)(koa@2.15.4) zod: specifier: 3.23.8 version: 3.23.8 @@ -1189,12 +1180,6 @@ importers: '@latticexyz/world-module-metadata': specifier: workspace:* version: link:../world-module-metadata - '@trpc/client': - specifier: 10.34.0 - version: 10.34.0(@trpc/server@10.34.0) - '@trpc/server': - specifier: 10.34.0 - version: 10.34.0 change-case: specifier: ^5.2.0 version: 5.2.0 @@ -10831,12 +10816,6 @@ packages: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} engines: {node: '>=0.6'} - trpc-koa-adapter@1.1.3: - resolution: {integrity: sha512-2rdmVuuFGLMyrUtW6ktroAzBsp2fc8oFuOEhNAcroJBei3DPF/UISr9qAeQX4MUEi9FCT2+bi4pBPcm8HKj8PA==} - peerDependencies: - '@trpc/server': ^10.0.0-rc.4 - koa: '>=2.13.0' - ts-api-utils@1.2.1: resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} engines: {node: '>=16'} @@ -15288,7 +15267,7 @@ snapshots: '@types/react': 18.2.22 '@types/react-dom': 18.2.7 - '@rainbow-me/rainbowkit@2.2.6(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(@upstash/redis@1.34.9)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': + '@rainbow-me/rainbowkit@2.2.6(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))': dependencies: '@tanstack/react-query': 5.52.0(react@18.2.0) '@vanilla-extract/css': 1.15.5 @@ -15301,7 +15280,7 @@ snapshots: react-remove-scroll: 2.6.2(@types/react@18.2.22)(react@18.2.0) ua-parser-js: 1.0.38 viem: 2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8) - wagmi: 2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(@upstash/redis@1.34.9)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + wagmi: 2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) transitivePeerDependencies: - '@types/react' - babel-plugin-macros @@ -19355,7 +19334,7 @@ snapshots: debug: 4.4.0 enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 @@ -19367,7 +19346,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: @@ -19388,7 +19367,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -23643,11 +23622,6 @@ snapshots: treeify@1.1.0: {} - trpc-koa-adapter@1.1.3(@trpc/server@10.34.0)(koa@2.15.4): - dependencies: - '@trpc/server': 10.34.0 - koa: 2.15.4 - ts-api-utils@1.2.1(typescript@5.4.2): dependencies: typescript: 5.4.2 @@ -24202,7 +24176,7 @@ snapshots: dependencies: xml-name-validator: 4.0.0 - wagmi@2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(@upstash/redis@1.34.9)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): + wagmi@2.15.5(@tanstack/query-core@5.56.2)(@tanstack/react-query@5.52.0(react@18.2.0))(@types/react@18.2.22)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): dependencies: '@tanstack/react-query': 5.52.0(react@18.2.0) '@wagmi/connectors': 5.8.4(@types/react@18.2.22)(@upstash/redis@1.34.9)(@wagmi/core@2.17.2(@tanstack/query-core@5.56.2)(@types/react@18.2.22)(react@18.2.0)(typescript@5.4.2)(use-sync-external-store@1.4.0(react@18.2.0))(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)