diff --git a/.changeset/bright-baths-itch.md b/.changeset/bright-baths-itch.md new file mode 100644 index 00000000..ff08d392 --- /dev/null +++ b/.changeset/bright-baths-itch.md @@ -0,0 +1,6 @@ +--- +"@dojoengine/grpc": patch +"@dojoengine/sdk": patch +--- + +fix(grpc): addAddressPadding on worldAddress diff --git a/bun.lock b/bun.lock index b4237dfa..f24c1ef6 100644 --- a/bun.lock +++ b/bun.lock @@ -41,7 +41,7 @@ }, "examples/example-nodejs-bot": { "name": "example-nodejs-bot", - "version": "0.0.1", + "version": "0.0.2", "dependencies": { "@dojoengine/core": "workspace:*", "@pinecone-database/pinecone": "^1.1.3", @@ -650,7 +650,7 @@ }, "packages/core": { "name": "@dojoengine/core", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "bin": { "compile-abi": "./dist/cli/compile-abi.js", }, @@ -670,7 +670,7 @@ }, "packages/create-burner": { "name": "@dojoengine/create-burner", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "dependencies": { "@dojoengine/core": "workspace:*", "@scure/bip32": "^1.5.0", @@ -705,7 +705,7 @@ }, "packages/create-dojo": { "name": "@dojoengine/create-dojo", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "bin": "./dist/index.cjs", "dependencies": { "@inquirer/prompts": "^3.3.2", @@ -729,7 +729,7 @@ }, "packages/grpc": { "name": "@dojoengine/grpc", - "version": "0.1.0-1.7-rc.4", + "version": "1.8.1", "dependencies": { "@grpc/grpc-js": "^1.13.4", "@protobuf-ts/grpcweb-transport": "^2.11.1", @@ -739,6 +739,7 @@ "effect": "^3.12.6", "google-protobuf": "^3.21.4", "grpc-web": "^1.5.0", + "starknet": "catalog:", }, "devDependencies": { "@biomejs/biome": "^2.1.3", @@ -755,7 +756,7 @@ }, "packages/internal": { "name": "@dojoengine/internal", - "version": "1.6.6", + "version": "1.7.1", "dependencies": { "@dojoengine/core": "workspace:*", "@dojoengine/torii-client": "workspace:*", @@ -775,7 +776,7 @@ }, "packages/predeployed-connector": { "name": "@dojoengine/predeployed-connector", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "dependencies": { "@starknet-io/types-js": "catalog:", }, @@ -801,7 +802,7 @@ }, "packages/react": { "name": "@dojoengine/react", - "version": "1.7.0-1.7-rc.5", + "version": "1.8.1", "dependencies": { "@dojoengine/recs": "2.0.13", "@dojoengine/state": "workspace:*", @@ -836,7 +837,7 @@ }, "packages/sdk": { "name": "@dojoengine/sdk", - "version": "1.7.0-1.7-rc.5", + "version": "1.8.1", "dependencies": { "@dojoengine/core": "workspace:*", "@dojoengine/grpc": "workspace:*", @@ -880,7 +881,7 @@ }, "packages/state": { "name": "@dojoengine/state", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "dependencies": { "@dojoengine/recs": "2.0.13", "@dojoengine/torii-client": "workspace:*", @@ -899,7 +900,7 @@ }, "packages/torii-client": { "name": "@dojoengine/torii-client", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "dependencies": { "@dojoengine/torii-wasm": "workspace:*", }, @@ -912,7 +913,7 @@ }, "packages/torii-wasm": { "name": "@dojoengine/torii-wasm", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "devDependencies": { "@biomejs/biome": "^2.1.3", "tsup": "^8.3.0", @@ -922,7 +923,7 @@ }, "packages/utils": { "name": "@dojoengine/utils", - "version": "1.7.0-1.7-rc.5", + "version": "1.8.1", "dependencies": { "@dojoengine/recs": "2.0.13", "@latticexyz/utils": "^2.2.8", @@ -943,7 +944,7 @@ }, "packages/utils-wasm": { "name": "@dojoengine/utils-wasm", - "version": "1.7.0-1.7-rc.4", + "version": "1.8.1", "devDependencies": { "@biomejs/biome": "^2.1.3", "tsup": "^8.3.0", diff --git a/packages/grpc/package.json b/packages/grpc/package.json index 4e060c3e..4de13d58 100644 --- a/packages/grpc/package.json +++ b/packages/grpc/package.json @@ -36,7 +36,8 @@ "@protobuf-ts/runtime-rpc": "^2.11.1", "effect": "^3.12.6", "google-protobuf": "^3.21.4", - "grpc-web": "^1.5.0" + "grpc-web": "^1.5.0", + "starknet": "catalog:" }, "devDependencies": { "@biomejs/biome": "^2.1.3", diff --git a/packages/grpc/src/mappings/query.ts b/packages/grpc/src/mappings/query.ts index 9e537da2..295a8983 100644 --- a/packages/grpc/src/mappings/query.ts +++ b/packages/grpc/src/mappings/query.ts @@ -76,6 +76,7 @@ import type { SubscribeAchievementProgressionsRequest, UpdateAchievementProgressionsSubscriptionRequest, } from "../generated/world"; +import { addAddressPadding } from "starknet"; interface AchievementProgressionFilters { worldAddresses?: string[]; @@ -321,7 +322,7 @@ function mapWorldAddresses( if (!addresses || addresses.length === 0) { return []; } - return addresses.map((address) => hexToBuffer(address)); + return addresses.map((address) => hexToBuffer(addAddressPadding(address))); } export function mapQuery(query: ToriiQuery): GrpcQuery { diff --git a/packages/grpc/src/torii-client.test.ts b/packages/grpc/src/torii-client.test.ts index 2cf589f1..5313aafa 100644 --- a/packages/grpc/src/torii-client.test.ts +++ b/packages/grpc/src/torii-client.test.ts @@ -4,6 +4,7 @@ import { ToriiGrpcClient, ToriiGrpcClientConfig } from "./torii-client"; describe("ToriiGrpcClient", () => { const mockConfig: ToriiGrpcClientConfig = { toriiUrl: "http://localhost:8080", + worldAddress: "0x0", }; it("should create client with default (standard) mapper", () => { @@ -50,6 +51,7 @@ describe("ToriiGrpcClient", () => { // This should work without the useEffectSchema property const client = new ToriiGrpcClient({ toriiUrl: "http://localhost:8080", + worldAddress: "0x0", }); expect(client).toBeDefined(); // @ts-ignore - accessing private property for testing diff --git a/packages/grpc/src/torii-client.ts b/packages/grpc/src/torii-client.ts index 9612ce68..c1a1f586 100644 --- a/packages/grpc/src/torii-client.ts +++ b/packages/grpc/src/torii-client.ts @@ -127,6 +127,7 @@ import { } from "./mappings/effect-schema/transformers"; import { Schema } from "effect"; +import { addAddressPadding } from "starknet"; import { BufferToHex } from "./mappings/effect-schema/base-schemas"; import { DojoGrpcClient } from "./client"; @@ -249,7 +250,7 @@ export class ToriiGrpcClient { this.client = new DojoGrpcClient({ url: config.toriiUrl, }); - this.worldAddress = config.worldAddress ?? undefined; + this.worldAddress = addAddressPadding(config.worldAddress) ?? undefined; this.worldAddressBytes = this.worldAddress ? hexToBuffer(this.worldAddress) : undefined; @@ -1038,7 +1039,9 @@ export class ToriiGrpcClient { async getWorlds(worldAddresses?: string[]): Promise { const response = await this.client.worldClient.worlds({ world_addresses: worldAddresses - ? worldAddresses.map((address) => hexToBuffer(address)) + ? worldAddresses.map((address) => + hexToBuffer(addAddressPadding(address)) + ) : [], }).response; diff --git a/packages/sdk/src/createSDK.ts b/packages/sdk/src/createSDK.ts index 8a70ef00..a7587e14 100644 --- a/packages/sdk/src/createSDK.ts +++ b/packages/sdk/src/createSDK.ts @@ -1,6 +1,6 @@ import type * as torii from "@dojoengine/torii-wasm/types"; import { ok, type Result } from "neverthrow"; -import type { Account, TypedData } from "starknet"; +import { addAddressPadding, type Account, type TypedData } from "starknet"; import { subscribeQueryModelCallback, generateTypedData, @@ -234,7 +234,7 @@ export function createSDK({ grpcClient ?? new ToriiGrpcClient({ toriiUrl: config.client.toriiUrl ?? "http://localhost:8080", - worldAddress: config.client.worldAddress, + worldAddress: addAddressPadding(config.client.worldAddress), }); return { client: client!,