diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ca684d92..86abbd8c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,6 +13,16 @@ jobs: - uses: actions/checkout@v2 - uses: oven-sh/setup-bun@v1 + - name: Update Submodules + run: git submodule update --init --recursive + + - run: curl -L https://install.dojoengine.org | bash + - run: /home/runner/.config/.dojo/bin/dojoup -v v0.4.4 + - run: | + cd examples/dojo-starter + /home/runner/.config/.dojo/bin/sozo build + /home/runner/.config/.dojo/bin/sozo test + - name: Install Protobuf Compiler run: sudo apt-get install -y protobuf-compiler @@ -26,9 +36,9 @@ jobs: run: bun x prettier --check . - name: Build dependencies - run: bun run build + run: bun run build && bun run build-examples - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + # - name: Upload coverage reports to Codecov + # uses: codecov/codecov-action@v3 + # env: + # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..70db5ef4 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +bun run prettier diff --git a/examples/react/react-app/package.json b/examples/react/react-app/package.json index c8eb21ed..d6318425 100644 --- a/examples/react/react-app/package.json +++ b/examples/react/react-app/package.json @@ -9,7 +9,7 @@ "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "codegen": "graphql-codegen", - "create-components": "npx @dojoengine/core ../../dojo-starter/target/dev/manifest.json src/dojo/contractComponents.ts http://localhost:5050 0x33ac2f528bb97cc7b79148fd1756dc368be0e95d391d8c6d6473ecb60b4560e" + "create-components": "npx @dojoengine/core ../../dojo-starter/target/dev/manifest.json src/dojo/generated/contractComponents.ts http://localhost:5050 0x33ac2f528bb97cc7b79148fd1756dc368be0e95d391d8c6d6473ecb60b4560e" }, "dependencies": { "@dojoengine/core": "^0.3.0", diff --git a/examples/react/react-app/src/dojo/generated/setup.ts b/examples/react/react-app/src/dojo/generated/setup.ts index fe7361b9..38b23c37 100644 --- a/examples/react/react-app/src/dojo/generated/setup.ts +++ b/examples/react/react-app/src/dojo/generated/setup.ts @@ -1,13 +1,12 @@ import { getSyncEntities } from "@dojoengine/state"; +import { DojoProvider } from "@dojoengine/core"; import * as torii from "@dojoengine/torii-client"; import { createClientComponents } from "../createClientComponents"; import { createSystemCalls } from "../createSystemCalls"; - import { defineContractComponents } from "./contractComponents"; import { world } from "./world"; import { Config } from "../../../dojoConfig"; import { setupWorld } from "./generated"; -import { DojoProvider } from "@dojoengine/core"; export type SetupResult = Awaited>; @@ -16,7 +15,7 @@ export async function setup({ ...config }: Config) { const toriiClient = await torii.createClient([], { rpcUrl: config.rpcUrl, toriiUrl: config.toriiUrl, - worldAddress: config.manifest.world.address, + worldAddress: config.manifest.world.address || "", }); // create contract components diff --git a/examples/react/react-phaser-example/package.json b/examples/react/react-phaser-example/package.json index a1c03358..026629c1 100644 --- a/examples/react/react-phaser-example/package.json +++ b/examples/react/react-phaser-example/package.json @@ -9,7 +9,7 @@ "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "codegen": "graphql-codegen", - "components": "npx @dojoengine/core ../../dojo-starter/target/dev/manifest.json src/dojo/contractComponents.ts http://localhost:5050 0x33ac2f528bb97cc7b79148fd1756dc368be0e95d391d8c6d6473ecb60b4560e" + "components": "npx @dojoengine/core ../../dojo-starter/target/dev/manifest.json src/dojo/generated/contractComponents.ts http://localhost:5050 0x33ac2f528bb97cc7b79148fd1756dc368be0e95d391d8c6d6473ecb60b4560e" }, "dependencies": { "@dojoengine/core": "^0.3.0", @@ -28,8 +28,6 @@ "clsx": "^2.0.0", "ethers": "^5.7.2", "events": "^3.3.0", - "graphql": "^16.7.1", - "graphql-request": "^6.1.0", "lucide-react": "^0.292.0", "mobx": "^6.9.0", "phaser": "3.60.0-beta.14", @@ -47,10 +45,6 @@ "zustand": "^4.4.1" }, "devDependencies": { - "@graphql-codegen/cli": "^5.0.0", - "@graphql-codegen/typescript": "^4.0.1", - "@graphql-codegen/typescript-graphql-request": "^5.0.0", - "@graphql-codegen/typescript-operations": "^4.0.1", "@types/node": "^20.9.0", "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", diff --git a/examples/react/react-phaser-example/src/dojo/generated/setup.ts b/examples/react/react-phaser-example/src/dojo/generated/setup.ts index dd04ed72..573decbd 100644 --- a/examples/react/react-phaser-example/src/dojo/generated/setup.ts +++ b/examples/react/react-phaser-example/src/dojo/generated/setup.ts @@ -15,7 +15,7 @@ export async function setup({ ...config }: Config) { const toriiClient = await torii.createClient([], { rpcUrl: config.rpcUrl, toriiUrl: config.toriiUrl, - worldAddress: config.manifest.world.address, + worldAddress: config.manifest.world.address || "", }); // create contract components diff --git a/examples/react/react-phaser-example/src/ui/hooks/useNetworkLayer.tsx b/examples/react/react-phaser-example/src/ui/hooks/useNetworkLayer.tsx index fa4a7219..220d7ffa 100644 --- a/examples/react/react-phaser-example/src/ui/hooks/useNetworkLayer.tsx +++ b/examples/react/react-phaser-example/src/ui/hooks/useNetworkLayer.tsx @@ -10,7 +10,7 @@ export const useNetworkLayer = () => { useEffect(() => { return () => { networkLayerPromise.then((networkLayer) => - networkLayer.world.dispose() + networkLayer.recsWorld.dispose() ); }; }, [networkLayerPromise]); diff --git a/package.json b/package.json index fc75c165..b86ef1c4 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "tsup": "^8.0.1", "typedoc": "^0.25.4", "typedoc-material-theme": "^1.0.1", - "typedoc-plugin-coverage": "^2.2.0" + "typedoc-plugin-coverage": "^2.2.0", + "husky": "^8.0.0" }, "scripts": { "build-core": "bun run --cwd packages/core build", @@ -30,12 +31,15 @@ "build-react": "bun run --cwd packages/react build", "build-state": "bun run --cwd packages/state build", "build-phaser": "bun run --cwd examples/react/react-phaser-example build", + "build-react-app": "bun run --cwd examples/react/react-app build", "build-watch": "bun run build-core --watch & bun run build-create-burner --watch & bun run build-create-dojo --watch & bun run build-utils --watch & bun run build-react --watch & bun run build-torii-wasm --watch & bun run build-torii-client --watch & bun run build-state --watch", "build": "bun run build-torii-wasm && bun run build-torii-client && bun run build-state && bun run build-core && bun run build-create-burner && bun run build-create-dojo && bun run build-utils && bun run build-react", + "build-examples": "bun run build-phaser && bun run build-react-app", "clean": "rm -rf node_modules packages/create-burner/node_modules node_modules packages/create-dojo/node_modules packages/core/node_modules packages/utils/node_modules packages/torii-client/node_modules packages/torii-wasm/node_modules packages/react/node_modules bun.lockb packages/create-burner/bun.lockb packages/core/bun.lockb packages/utils/bun.lockb packages/torii-client/bun.lockb packages/torii-wasm/bun.lockb packages/react/bun.lockb && rm -rf examples/react/react-app/node_modules examples/react/react-app/bun.lockb examples/react/react-phaser-example/node_modules examples/react/react-phaser-example/bun.lockb", "prettier-check": "bun x prettier --check .", "prettier": "bun x prettier --write .", "release": "bun run build && bun run prettier && npx lerna publish --no-private --force-publish", - "docs": "npx typedoc --out docs" + "docs": "npx typedoc --out docs", + "prepare": "husky install" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4514595b..c6968a69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,9 @@ settings: importers: .: devDependencies: + husky: + specifier: ^8.0.0 + version: 8.0.3 lerna: specifier: ^8.0.0 version: 8.0.0 @@ -29,14 +32,14 @@ importers: examples/react/react-app: dependencies: "@dojoengine/core": - specifier: ^0.2.10 - version: 0.2.10(starknet@5.24.3) + specifier: ^0.3.0 + version: link:../../../packages/core "@dojoengine/create-burner": - specifier: ^0.2.10 - version: 0.2.10(react-dom@18.2.0)(react@18.2.0)(starknet@5.24.3) + specifier: ^0.3.0 + version: link:../../../packages/create-burner "@dojoengine/react": - specifier: ^0.2.10 - version: 0.2.10(react@18.2.0)(starknet@5.24.3)(type-fest@2.19.0)(typescript@5.3.3)(zod@3.22.4) + specifier: ^0.3.0 + version: link:../../../packages/react "@dojoengine/recs": specifier: 0.1.35 version: 0.1.35(typescript@5.3.3)(zod@3.22.4) @@ -44,11 +47,11 @@ importers: specifier: ^0.3.0 version: link:../../../packages/state "@dojoengine/torii-client": - specifier: ^0.2.10 - version: 0.2.10 + specifier: ^0.3.0 + version: link:../../../packages/torii-client "@dojoengine/utils": - specifier: ^0.2.10 - version: 0.2.10(starknet@5.24.3)(typescript@5.3.3)(zod@3.22.4) + specifier: ^0.3.0 + version: link:../../../packages/utils "@latticexyz/react": specifier: ^2.0.0-next.11 version: 2.0.0-snapshot-test-32d38619(typescript@5.3.3)(zod@3.22.4) @@ -138,14 +141,14 @@ importers: examples/react/react-phaser-example: dependencies: "@dojoengine/core": - specifier: ^0.2.10 - version: 0.2.10(starknet@5.24.3) + specifier: ^0.3.0 + version: link:../../../packages/core "@dojoengine/create-burner": - specifier: ^0.2.10 - version: 0.2.10(react-dom@18.2.0)(react@18.2.0)(starknet@5.24.3) + specifier: ^0.3.0 + version: link:../../../packages/create-burner "@dojoengine/react": - specifier: ^0.2.10 - version: 0.2.10(react@18.2.0)(starknet@5.24.3)(type-fest@2.19.0)(typescript@5.3.3)(zod@3.22.4) + specifier: ^0.3.0 + version: link:../../../packages/react "@dojoengine/recs": specifier: 0.1.35 version: 0.1.35(typescript@5.3.3)(zod@3.22.4) @@ -153,14 +156,14 @@ importers: specifier: ^0.3.0 version: link:../../../packages/state "@dojoengine/torii-client": - specifier: ^0.2.10 - version: 0.2.10 + specifier: ^0.3.0 + version: link:../../../packages/torii-client "@dojoengine/torii-wasm": - specifier: ^0.2.10 - version: 0.2.10 + specifier: ^0.3.0 + version: link:../../../packages/torii-wasm "@dojoengine/utils": - specifier: ^0.2.10 - version: 0.2.10(starknet@5.24.3)(typescript@5.3.3)(zod@3.22.4) + specifier: ^0.3.0 + version: link:../../../packages/utils "@latticexyz/phaserx": specifier: ^2.0.0-next.14 version: 2.0.0-snapshot-test-32d38619 @@ -185,12 +188,6 @@ importers: events: specifier: ^3.3.0 version: 3.3.0 - graphql: - specifier: ^16.7.1 - version: 16.8.1 - graphql-request: - specifier: ^6.1.0 - version: 6.1.0(graphql@16.8.1) lucide-react: specifier: ^0.292.0 version: 0.292.0(react@18.2.0) @@ -237,18 +234,6 @@ importers: specifier: ^4.4.1 version: 4.4.7(@types/react@18.2.43)(react@18.2.0) devDependencies: - "@graphql-codegen/cli": - specifier: ^5.0.0 - version: 5.0.0(@types/node@20.10.4)(graphql@16.8.1)(typescript@5.3.3) - "@graphql-codegen/typescript": - specifier: ^4.0.1 - version: 4.0.1(graphql@16.8.1) - "@graphql-codegen/typescript-graphql-request": - specifier: ^5.0.0 - version: 5.0.0(graphql-request@6.1.0)(graphql-tag@2.12.6)(graphql@16.8.1) - "@graphql-codegen/typescript-operations": - specifier: ^4.0.1 - version: 4.0.1(graphql@16.8.1) "@types/node": specifier: ^20.9.0 version: 20.10.4 @@ -321,7 +306,7 @@ importers: dependencies: "@starknet-react/core": specifier: ^1.0.3 - version: 1.0.4(get-starknet-core@3.2.0)(react-dom@18.2.0)(react@18.2.0)(starknet@5.24.3) + version: 1.0.4(get-starknet-core@3.2.0)(react@18.2.0)(starknet@5.24.3) encoding: specifier: ^0.1.13 version: 0.1.13 @@ -2251,67 +2236,6 @@ packages: to-fast-properties: 2.0.0 dev: true - /@dojoengine/core@0.2.10(starknet@5.24.3): - resolution: - { - integrity: sha512-QlzMX1jvE1fwXZylfDtCIgJk3AeujjMjwjlV5sQq/9nbTlfU/+jlZCsABBMgx7G3G1LWzte/4o99c5q5Y7nmtg==, - } - hasBin: true - peerDependencies: - starknet: 5.24.3 - dependencies: - starknet: 5.24.3(encoding@0.1.13) - dev: false - - /@dojoengine/create-burner@0.2.10(react-dom@18.2.0)(react@18.2.0)(starknet@5.24.3): - resolution: - { - integrity: sha512-7KVT714xJU6do+uEaL0DvuGqJP/dOfwr9YaswfGvXj0PtWfkeERUvYfngqXTMLXnDOgkKkpX40BPxwNkbQHn3w==, - } - peerDependencies: - react: ^18.2.0 - starknet: 5.24.3 - dependencies: - "@starknet-react/core": 1.0.4(get-starknet-core@3.2.0)(react-dom@18.2.0)(react@18.2.0)(starknet@5.24.3) - encoding: 0.1.13 - get-starknet-core: 3.2.0(starknet@5.24.3) - js-cookie: 3.0.5 - react: 18.2.0 - starknet: 5.24.3(encoding@0.1.13) - transitivePeerDependencies: - - react-dom - - react-native - dev: false - - /@dojoengine/react@0.2.10(react@18.2.0)(starknet@5.24.3)(type-fest@2.19.0)(typescript@5.3.3)(zod@3.22.4): - resolution: - { - integrity: sha512-ymdqS/ifUVnajELDL2aMxhaGuOL78V1GHilY1/9Y9ZdFSh4VJh2dllNaPSLfAqu6VdCetjWPCPwXnDcSPZxneQ==, - } - peerDependencies: - react: ^18.2.0 - starknet: ^5.24.3 - type-fest: ^2.14.0 - dependencies: - "@dojoengine/recs": 0.1.35(typescript@5.3.3)(zod@3.22.4) - "@dojoengine/torii-client": 0.2.10 - "@dojoengine/utils": 0.2.10(starknet@5.24.3)(typescript@5.3.3)(zod@3.22.4) - "@latticexyz/utils": 2.0.0-snapshot-test-32d38619 - encoding: 0.1.13 - fast-deep-equal: 3.1.3 - get-starknet-core: 3.2.0(starknet@5.24.3) - js-cookie: 3.0.5 - react: 18.2.0 - rxjs: 7.5.5 - starknet: 5.24.3(encoding@0.1.13) - type-fest: 2.19.0 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - dev: false - /@dojoengine/recs@0.1.35(typescript@5.3.3)(zod@3.22.4): resolution: { @@ -2329,43 +2253,6 @@ packages: - zod dev: false - /@dojoengine/torii-client@0.2.10: - resolution: - { - integrity: sha512-BZuYzxV/Y1dGoPmgU9ue+wzxGwW+wIXk2zHDp7M7/fWpsUsGivsr5vA3jAabB6GzcKBFDKJf/4hY/2iewwfOlA==, - } - dependencies: - "@dojoengine/torii-wasm": 0.2.10 - typescript: 5.3.3 - dev: false - - /@dojoengine/torii-wasm@0.2.10: - resolution: - { - integrity: sha512-YPLsddXBie+RK1f/EJlV5a9SR4oo4+7irtc2hmlUf7vHorh6JToQKRbbVhieJhhiNtzdntxeL0hIbABS06vjmw==, - } - dev: false - - /@dojoengine/utils@0.2.10(starknet@5.24.3)(typescript@5.3.3)(zod@3.22.4): - resolution: - { - integrity: sha512-8jo5BgzAz9gi1fwCv+uSgQnzpxTDP81iFOazIr5fHX9qTbtsHN2lNFGbkRpDqJYaOEQCmTlbouLIXOUCayiksg==, - } - peerDependencies: - starknet: ^5.24.3 - dependencies: - "@dojoengine/recs": 0.1.35(typescript@5.3.3)(zod@3.22.4) - "@latticexyz/utils": 2.0.0-snapshot-test-32d38619 - mathjs: 12.2.0 - micro-starknet: 0.2.3 - starknet: 5.24.3(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - dev: false - /@emotion/is-prop-valid@1.2.1: resolution: { @@ -5785,7 +5672,7 @@ packages: } dev: false - /@starknet-react/core@1.0.4(get-starknet-core@3.2.0)(react-dom@18.2.0)(react@18.2.0)(starknet@5.24.3): + /@starknet-react/core@1.0.4(get-starknet-core@3.2.0)(react@18.2.0)(starknet@5.24.3): resolution: { integrity: sha512-TQiRnb0moqim6+HqioGGzd3FgjPVJFMdMH8Q5AQlJ7oEUNprKkFyHlVGJJlcwvdRaCPD5BQuD2WUL2rQfgMRuw==, @@ -5795,7 +5682,7 @@ packages: react: ^17.0 || ^18.0 starknet: ^5.0.0 dependencies: - "@tanstack/react-query": 4.36.1(react-dom@18.2.0)(react@18.2.0) + "@tanstack/react-query": 4.36.1(react@18.2.0) get-starknet-core: 3.2.0(starknet@5.24.3) immutable: 4.3.4 react: 18.2.0 @@ -5975,7 +5862,7 @@ packages: } dev: false - /@tanstack/react-query@4.36.1(react-dom@18.2.0)(react@18.2.0): + /@tanstack/react-query@4.36.1(react@18.2.0): resolution: { integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==, @@ -5992,7 +5879,6 @@ packages: dependencies: "@tanstack/query-core": 4.36.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) dev: false @@ -9914,6 +9800,15 @@ packages: ms: 2.1.2 dev: true + /husky@8.0.3: + resolution: + { + integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, + } + engines: { node: ">=14" } + hasBin: true + dev: true + /iconv-lite@0.4.24: resolution: {