Skip to content

Commit d20a13e

Browse files
authored
Merge pull request #432 from dojoengine/feat/update-dojo.c
chore: update dojo.c version
2 parents 59f06fc + a4ed667 commit d20a13e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1241
-377
lines changed

.changeset/smart-panthers-attend.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
"@dojoengine/torii-wasm": patch
3+
"@dojoengine/sdk": patch
4+
"@dojoengine/core": patch
5+
"@dojoengine/create-burner": patch
6+
"@dojoengine/create-dojo": patch
7+
"@dojoengine/predeployed-connector": patch
8+
"@dojoengine/react": patch
9+
"@dojoengine/state": patch
10+
"@dojoengine/torii-client": patch
11+
"@dojoengine/utils": patch
12+
"@dojoengine/utils-wasm": patch
13+
---
14+
15+
feat: torii-wasm nodejs support

examples/example-node-worker/.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
v23.11.0
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { createDojoConfig } from "@dojoengine/core";
2+
3+
import manifest from "../../worlds/dojo-starter/manifest_dev.json";
4+
5+
export const dojoConfig = createDojoConfig({
6+
manifest,
7+
});

examples/example-node-worker/main.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { init, KeysClause, ToriiQueryBuilder } from "@dojoengine/sdk/node";
2+
import { dojoConfig } from "./dojoConfig";
3+
4+
const sdk = await init({
5+
client: {
6+
toriiUrl: dojoConfig.toriiUrl,
7+
relayUrl: dojoConfig.relayUrl,
8+
worldAddress: dojoConfig.manifest.world.address,
9+
},
10+
domain: {},
11+
});
12+
13+
const query = new ToriiQueryBuilder()
14+
.withClause(
15+
KeysClause(
16+
["dojo_starter-Position", "dojo_starter-Moves"],
17+
[undefined]
18+
).build()
19+
)
20+
.includeHashedKeys();
21+
22+
function onEntityUpdated({ data, error }) {
23+
if (error) {
24+
console.error(error);
25+
return;
26+
}
27+
28+
const entity = data.pop();
29+
if (entity && entity.entityId !== "0x0") {
30+
// do whatever you need here
31+
console.log(entity.models.dojo_starter);
32+
}
33+
}
34+
35+
const [entities, sub] = await sdk.subscribeEntityQuery({
36+
query,
37+
callback: onEntityUpdated,
38+
historical: false,
39+
});
40+
41+
console.log(entities);
42+
43+
process.on("SIGTERM", () => {
44+
// NOTE: do not forget to free sub here;
45+
sub.free();
46+
process.exit(0);
47+
});
48+
49+
process.on("SIGINT", () => {
50+
// NOTE: do not forget to free sub here;
51+
sub.free();
52+
process.exit(0);
53+
});
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"name": "example-node-worker",
3+
"version": "0.0.1",
4+
"private": true,
5+
"type": "module",
6+
"dependencies": {
7+
"@dojoengine/core": "workspace:*",
8+
"@dojoengine/sdk": "workspace:*"
9+
},
10+
"devDependencies": {
11+
"@types/node": "^22.14.1"
12+
}
13+
}

packages/sdk/package.json

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,46 @@
66
"license": "MIT",
77
"main": "dist/index.js",
88
"types": "dist/index.d.ts",
9+
"type": "module",
910
"exports": {
1011
".": {
11-
"types": "./dist/index.d.ts",
12-
"import": "./dist/index.js",
13-
"require": "./dist/index.cjs"
12+
"types": "./dist/web/index.d.ts",
13+
"import": "./dist/web/index.js",
14+
"require": "./dist/web/index.cjs"
1415
},
1516
"./state": {
16-
"types": "./dist/src/state.d.ts",
17-
"import": "./dist/src/state.js",
18-
"require": "./dist/src/state.cjs"
17+
"types": "./dist/web/state.d.ts",
18+
"import": "./dist/web/state.js",
19+
"require": "./dist/web/state.cjs"
1920
},
2021
"./react": {
21-
"types": "./dist/src/react.d.ts",
22-
"import": "./dist/src/react.js",
23-
"require": "./dist/src/react.cjs"
22+
"types": "./dist/web/react.d.ts",
23+
"import": "./dist/web/react.js",
24+
"require": "./dist/web/react.cjs"
2425
},
2526
"./sql": {
26-
"types": "./dist/src/sql.d.ts",
27-
"import": "./dist/src/sql.js",
28-
"require": "./dist/src/sql.cjs"
27+
"types": "./dist/web/sql.d.ts",
28+
"import": "./dist/web/sql.js",
29+
"require": "./dist/web/sql.cjs"
2930
},
3031
"./experimental": {
31-
"types": "./dist/src/experimental.d.ts",
32-
"import": "./dist/src/experimental.js",
33-
"require": "./dist/src/experimental.cjs"
32+
"types": "./dist/web/experimental.d.ts",
33+
"import": "./dist/web/experimental.js",
34+
"require": "./dist/web/experimental.cjs"
3435
},
3536
"./types": {
36-
"types": "./dist/index.d.ts",
37-
"import": "./dist/index.d.ts",
38-
"require": "./dist/index.d.ts"
37+
"types": "./dist/web/index.d.ts",
38+
"import": "./dist/web/index.d.ts",
39+
"require": "./dist/web/index.d.ts"
40+
},
41+
"./node": {
42+
"types": "./dist/node/index.d.ts",
43+
"import": "./dist/node/index.js",
44+
"require": "./dist/node/index.js"
3945
}
4046
},
41-
"type": "module",
4247
"scripts": {
43-
"build:deps": "tsup --dts-resolve",
48+
"build:deps": "tsup --config tsup.node.ts && tsup --config tsup.web.ts",
4449
"build": "pnpm build:deps",
4550
"test": "vitest run --config ./vitest.config.ts",
4651
"coverage": "vitest run --coverage",
@@ -50,9 +55,11 @@
5055
},
5156
"./package.json": "./package.json",
5257
"devDependencies": {
58+
"@anymud/bun-plugin-dts": "^1.0.2",
5359
"@rollup/plugin-commonjs": "^28.0.2",
5460
"@vitest/coverage-v8": "^1.6.1",
5561
"benchmark": "^2.1.4",
62+
"bun-plugin-dts": "^0.3.0",
5663
"eslint": "^8.57.1",
5764
"lodash": "^4.17.21",
5865
"prettier": "^2.8.8",
@@ -73,6 +80,7 @@
7380
"dependencies": {
7481
"@dojoengine/core": "workspace:*",
7582
"@dojoengine/torii-client": "workspace:*",
83+
"@dojoengine/torii-wasm": "workspace:*",
7684
"@dojoengine/utils": "workspace:*",
7785
"@starknet-react/chains": "catalog:",
7886
"@starknet-react/core": "catalog:",

packages/sdk/src/__example__/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// @ts-nocheck
2-
import * as torii from "@dojoengine/torii-client";
2+
import * as torii from "@dojoengine/torii-wasm";
33
import { AndComposeClause, init, MemberClause, ToriiQueryBuilder } from "..";
44
import { SchemaType } from "../types";
55

packages/sdk/src/__tests__/clauseBuilder.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import {
44
ClauseBuilder,
55
MemberClause,
66
OrComposeClause,
7-
} from "../clauseBuilder";
7+
} from "../web/clauseBuilder";
88
import {
99
ComparisonOperator,
1010
LogicalOperator,
1111
PatternMatching,
12-
} from "@dojoengine/torii-client";
13-
import { SchemaType } from "../types";
12+
} from "@dojoengine/torii-wasm";
13+
import { SchemaType } from "../internal/types";
1414

1515
// Test models interface
1616
interface TestModels extends SchemaType {

packages/sdk/src/__tests__/convertClauseToEntityKeysClause.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, expect, it } from "vitest";
2-
import { intoEntityKeysClause } from "../convertClauseToEntityKeysClause";
3-
import { ClauseBuilder } from "../clauseBuilder";
2+
import { intoEntityKeysClause } from "../internal/convertClauseToEntityKeysClause";
3+
import { ClauseBuilder } from "../web/clauseBuilder";
44

55
describe("convertClauseToEntityKeysClause", () => {
66
it("return empty array", () => {

packages/sdk/src/__tests__/generateTypedData.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { describe, expect, it, Test } from "vitest";
2-
import { init } from "../index";
1+
import { describe, expect, it } from "vitest";
32
import type { StarknetDomain } from "starknet";
4-
import { generateTypedData } from "../generateTypedData";
3+
import { generateTypedData } from "../internal/generateTypedData";
54

65
// Mock schema type for testing
76
type TestSchema = {

packages/sdk/src/__tests__/models.gen.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type { SchemaType as ISchemaType } from "../types";
1+
import type { SchemaType as ISchemaType } from "../internal/types";
22

33
import {
44
CairoCustomEnum,
55
CairoOption,
66
CairoOptionVariant,
7-
BigNumberish,
7+
type BigNumberish,
88
} from "starknet";
99

1010
export type TypedCairoEnum<T> = CairoCustomEnum & {

packages/sdk/src/__tests__/parseEntities.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import * as torii from "@dojoengine/torii-client";
1+
import * as torii from "@dojoengine/torii-wasm";
22
import { describe, expect, it } from "vitest";
33

4-
import { parseEntities } from "../parseEntities";
4+
import { parseEntities } from "../internal/parseEntities";
55
import { CairoCustomEnum, CairoOption, CairoOptionVariant } from "starknet";
66
import { SchemaType } from "./models.gen.ts";
77

packages/sdk/src/__tests__/parseHistoricalEvents.test.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
import * as torii from "@dojoengine/torii-client";
1+
import * as torii from "@dojoengine/torii-wasm";
22
import { describe, expect, it } from "vitest";
33

4-
import { parseHistoricalEvents, orderKeys } from "../parseHistoricalEvents";
4+
import {
5+
parseHistoricalEvents,
6+
orderKeys,
7+
} from "../internal/parseHistoricalEvents";
58

69
describe("parseHistoricalEvents", () => {
710
it("should preserve order", () => {

packages/sdk/src/__tests__/queryBuilder.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { describe, expect, it } from "vitest";
2-
import { QueryBuilder } from "../queryBuilder";
2+
import { QueryBuilder } from "../web/queryBuilder";
33
import { MockSchemaType } from "../__example__/index";
44

55
/**

packages/sdk/src/__tests__/state.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { createDojoStore } from "../state";
2-
import { ParsedEntity } from "../types";
1+
import { createDojoStore } from "../web/state";
2+
import { ParsedEntity } from "../internal/types";
33
import { describe, expect, beforeEach, test, vi } from "vitest";
44
import {
55
MockSchemaType,

packages/sdk/src/__tests__/toriiQueryBuilder.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { describe, expect, it } from "vitest";
2-
import { ToriiQueryBuilder } from "../toriiQueryBuilder";
3-
import { Clause, OrderBy } from "@dojoengine/torii-client";
4-
import { SchemaType } from "../types";
5-
import { ClauseBuilder } from "../clauseBuilder";
2+
import { ToriiQueryBuilder } from "../internal/toriiQueryBuilder";
3+
import { Clause, OrderBy } from "@dojoengine/torii-wasm";
4+
import { SchemaType } from "../internal/types";
5+
import { ClauseBuilder } from "../web/clauseBuilder";
66

77
interface TestModels extends SchemaType {
88
dojo_starter: {

packages/sdk/src/__tests__/zustand.perf.test.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { createDojoStore } from "../state";
2-
import { ParsedEntity } from "../types";
1+
import { createDojoStore } from "../web/state";
2+
import type { ParsedEntity } from "../internal/types";
33
import { describe, it, beforeEach } from "vitest";
44
import Benchmark from "benchmark";
55
import {
@@ -128,9 +128,8 @@ describe("Zustand Store Performance Tests", () => {
128128
useStore
129129
.getState()
130130
.applyOptimisticUpdate("txn_perf", (draft) => {
131-
draft.entities[
132-
"entity500"
133-
].models.world!.item!.durability = 75;
131+
draft.entities["entity500"].models.world!
132+
.item!.durability = 75;
134133
});
135134
})
136135
.on("cycle", (event: any) => {

packages/sdk/src/convertClauseToEntityKeysClause.ts renamed to packages/sdk/src/internal/convertClauseToEntityKeysClause.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { EntityKeysClause, Clause } from "@dojoengine/torii-client";
2-
import { SchemaType, ToriiResponse } from "./types";
1+
import type { EntityKeysClause, Clause } from "@dojoengine/torii-wasm/types";
2+
import type { SchemaType, ToriiResponse } from "../internal/types";
33

44
export function intoEntityKeysClause<T extends SchemaType>(
55
clause: Clause | undefined,

packages/sdk/src/convertToMemberValue.ts renamed to packages/sdk/src/internal/convertToMemberValue.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as torii from "@dojoengine/torii-client";
1+
import type * as torii from "@dojoengine/torii-wasm/types";
22

33
type ToUnion<T> = T extends infer U ? U : never;
44
type ExtractPrimitiveKeys<T> = T extends Record<infer K, any> ? K : never;
@@ -13,7 +13,10 @@ export type MemberValueParam = { type: PrimitiveTypeKeys; value: any } | any;
1313
* @returns {torii.MemberValue} - The converted primitive value.
1414
* @throws {Error} - If the value type is unsupported.
1515
*/
16-
export function convertToPrimitive(value: MemberValueParam): torii.MemberValue {
16+
export function convertToPrimitive(
17+
value: MemberValueParam,
18+
shortStringToFelt: typeof torii.cairoShortStringToFelt
19+
): torii.MemberValue {
1720
// if you want to have more control over type passed to torii
1821
if (Object.hasOwn(value, "type") && Object.hasOwn(value, "value")) {
1922
return { Primitive: { [value.type]: value.value } as torii.Primitive };
@@ -30,7 +33,7 @@ export function convertToPrimitive(value: MemberValueParam): torii.MemberValue {
3033
if (typeof value === "bigint") {
3134
return {
3235
Primitive: {
33-
Felt252: torii.cairoShortStringToFelt(value.toString()),
36+
Felt252: shortStringToFelt(value.toString()),
3437
},
3538
};
3639
}
@@ -40,7 +43,11 @@ export function convertToPrimitive(value: MemberValueParam): torii.MemberValue {
4043
}
4144

4245
if (Array.isArray(value)) {
43-
return { List: value.map((item) => convertToPrimitive(item)) };
46+
return {
47+
List: value.map((item) =>
48+
convertToPrimitive(item, shortStringToFelt)
49+
),
50+
};
4451
}
4552

4653
// Add more type conversions as needed

packages/sdk/src/generateTypedData.ts renamed to packages/sdk/src/internal/generateTypedData.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { StarknetDomain, TypedData } from "starknet";
2-
import type { SchemaType, UnionOfModelData } from "./types";
2+
import type { SchemaType, UnionOfModelData } from "../internal/types";
33

44
/**
55
* Generates typed data for any user-defined message.

packages/sdk/src/parseEntities.ts renamed to packages/sdk/src/internal/parseEntities.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
import * as torii from "@dojoengine/torii-client";
1+
import type * as torii from "@dojoengine/torii-wasm/types";
22

3-
import { ParsedEntity, SchemaType, StandardizedQueryResult } from "./types";
3+
import type {
4+
ParsedEntity,
5+
SchemaType,
6+
StandardizedQueryResult,
7+
} from "./types.ts";
48
import { CairoCustomEnum, CairoOption, CairoOptionVariant } from "starknet";
59

610
export function parseEntities<T extends SchemaType>(

packages/sdk/src/parseHistoricalEvents.ts renamed to packages/sdk/src/internal/parseHistoricalEvents.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import * as torii from "@dojoengine/torii-client";
1+
import type * as torii from "@dojoengine/torii-wasm/types";
2+
import type { SchemaType, StandardizedQueryResult } from "./types.ts";
23

3-
import { SchemaType, StandardizedQueryResult } from "./types";
4-
import { parseEntities } from "./parseEntities";
4+
import { parseEntities } from "./parseEntities.ts";
55

66
/**
77
* Parses historical events returned by torii

0 commit comments

Comments
 (0)