-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c842833
commit 8347522
Showing
8 changed files
with
386 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
pnpm-debug.log* | ||
lerna-debug.log* | ||
|
||
node_modules | ||
dist | ||
dist-ssr | ||
*.local | ||
|
||
# Editor directories and files | ||
.vscode/* | ||
!.vscode/extensions.json | ||
.idea | ||
.DS_Store | ||
*.suo | ||
*.ntvs* | ||
*.njsproj | ||
*.sln | ||
*.sw? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{ | ||
"name": "example-vite-vanilla-ts", | ||
"private": true, | ||
"version": "0.0.0", | ||
"type": "module", | ||
"scripts": { | ||
"dev": "node --experimental-transform-types --experimental-modules src/main.ts", | ||
"build": "tsc" | ||
}, | ||
"dependencies": { | ||
"@dojoengine/core": "workspace:", | ||
"@dojoengine/sdk": "workspace:", | ||
"@dojoengine/torii-client": "workspace:", | ||
"starknet": "catalog:" | ||
}, | ||
"devDependencies": { | ||
"typescript": "~5.6.2" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import { createDojoConfig } from "@dojoengine/core"; | ||
|
||
import manifest from "../../../worlds/dojo-starter/manifest_dev.json" with { type: "json" }; | ||
|
||
export const dojoConfig = createDojoConfig({ | ||
manifest, | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
// Step 1. Import dojoConfig. This pulls data out of manifest and makes it reusable throughout your entire application. | ||
import { dojoConfig } from "./dojoConfig.ts"; | ||
|
||
import { init } from "@dojoengine/sdk/experimental"; | ||
import { schema, SchemaType } from "./typescript/models.gen.ts"; | ||
import { ClauseBuilder, ToriiQueryBuilder } from "@dojoengine/sdk"; | ||
|
||
async function main() { | ||
// Step 2. Instanciate sdk. It's considered a good practice to instanciate it once and then use this handle. | ||
const sdk = await init<SchemaType>({ | ||
client: { | ||
rpcUrl: dojoConfig.rpcUrl, | ||
toriiUrl: dojoConfig.toriiUrl, | ||
relayUrl: dojoConfig.relayUrl, | ||
worldAddress: dojoConfig.manifest.world.address, | ||
}, | ||
domain: { | ||
name: "WORLD_NAME", | ||
version: "1.0", | ||
chainId: "KATANA", | ||
revision: "1", | ||
}, | ||
}); | ||
|
||
const events = await sdk.getEvents( | ||
new ToriiQueryBuilder() | ||
.withClause(new ClauseBuilder().keys([], [undefined]).build()) | ||
.build() | ||
); | ||
console.log(events); | ||
} | ||
|
||
main().catch(console.error); |
68 changes: 68 additions & 0 deletions
68
examples/example-vite-vanilla-ts/src/typescript/contracts.gen.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
import { DojoProvider, DojoCall } from "@dojoengine/core"; | ||
import { | ||
Account, | ||
AccountInterface, | ||
BigNumberish, | ||
CairoOption, | ||
CairoCustomEnum, | ||
ByteArray, | ||
} from "starknet"; | ||
import * as models from "./models.gen"; | ||
|
||
export function setupWorld(provider: DojoProvider) { | ||
const build_actions_move_calldata = ( | ||
direction: CairoCustomEnum | ||
): DojoCall => { | ||
return { | ||
contractName: "actions", | ||
entrypoint: "move", | ||
calldata: [direction], | ||
}; | ||
}; | ||
|
||
const actions_move = async ( | ||
snAccount: Account | AccountInterface, | ||
direction: CairoCustomEnum | ||
) => { | ||
try { | ||
return await provider.execute( | ||
snAccount, | ||
build_actions_move_calldata(direction), | ||
"dojo_starter" | ||
); | ||
} catch (error) { | ||
console.error(error); | ||
throw error; | ||
} | ||
}; | ||
|
||
const build_actions_spawn_calldata = (): DojoCall => { | ||
return { | ||
contractName: "actions", | ||
entrypoint: "spawn", | ||
calldata: [], | ||
}; | ||
}; | ||
|
||
const actions_spawn = async (snAccount: Account | AccountInterface) => { | ||
try { | ||
return await provider.execute( | ||
snAccount, | ||
build_actions_spawn_calldata(), | ||
"dojo_starter" | ||
); | ||
} catch (error) { | ||
console.error(error); | ||
throw error; | ||
} | ||
}; | ||
|
||
return { | ||
actions: { | ||
move: actions_move, | ||
buildMoveCalldata: build_actions_move_calldata, | ||
spawn: actions_spawn, | ||
buildSpawnCalldata: build_actions_spawn_calldata, | ||
}, | ||
}; | ||
} |
172 changes: 172 additions & 0 deletions
172
examples/example-vite-vanilla-ts/src/typescript/models.gen.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
import type { SchemaType as ISchemaType } from "@dojoengine/sdk"; | ||
|
||
import { | ||
CairoCustomEnum, | ||
CairoOption, | ||
CairoOptionVariant, | ||
BigNumberish, | ||
} from "starknet"; | ||
|
||
type WithFieldOrder<T> = T & { fieldOrder: string[] }; | ||
|
||
// Type definition for `dojo_starter::models::DirectionsAvailable` struct | ||
export interface DirectionsAvailable { | ||
player: string; | ||
directions: Array<DirectionEnum>; | ||
} | ||
|
||
// Type definition for `dojo_starter::models::DirectionsAvailableValue` struct | ||
export interface DirectionsAvailableValue { | ||
directions: Array<DirectionEnum>; | ||
} | ||
|
||
// Type definition for `dojo_starter::models::Moves` struct | ||
export interface Moves { | ||
player: string; | ||
remaining: BigNumberish; | ||
last_direction: CairoOption<DirectionEnum>; | ||
can_move: boolean; | ||
} | ||
|
||
// Type definition for `dojo_starter::models::MovesValue` struct | ||
export interface MovesValue { | ||
remaining: BigNumberish; | ||
last_direction: CairoOption<DirectionEnum>; | ||
can_move: boolean; | ||
} | ||
|
||
// Type definition for `dojo_starter::models::Position` struct | ||
export interface Position { | ||
player: string; | ||
vec: Vec2; | ||
} | ||
|
||
// Type definition for `dojo_starter::models::PositionValue` struct | ||
export interface PositionValue { | ||
vec: Vec2; | ||
} | ||
|
||
// Type definition for `dojo_starter::models::Vec2` struct | ||
export interface Vec2 { | ||
x: BigNumberish; | ||
y: BigNumberish; | ||
} | ||
|
||
// Type definition for `dojo_starter::systems::actions::actions::Moved` struct | ||
export interface Moved { | ||
player: string; | ||
direction: DirectionEnum; | ||
} | ||
|
||
// Type definition for `dojo_starter::systems::actions::actions::MovedValue` struct | ||
export interface MovedValue { | ||
direction: DirectionEnum; | ||
} | ||
|
||
// Type definition for `dojo_starter::models::Direction` enum | ||
export type Direction = { | ||
Left: string; | ||
Right: string; | ||
Up: string; | ||
Down: string; | ||
}; | ||
export type DirectionEnum = CairoCustomEnum; | ||
|
||
export interface SchemaType extends ISchemaType { | ||
dojo_starter: { | ||
DirectionsAvailable: WithFieldOrder<DirectionsAvailable>; | ||
DirectionsAvailableValue: WithFieldOrder<DirectionsAvailableValue>; | ||
Moves: WithFieldOrder<Moves>; | ||
MovesValue: WithFieldOrder<MovesValue>; | ||
Position: WithFieldOrder<Position>; | ||
PositionValue: WithFieldOrder<PositionValue>; | ||
Vec2: WithFieldOrder<Vec2>; | ||
Moved: WithFieldOrder<Moved>; | ||
MovedValue: WithFieldOrder<MovedValue>; | ||
}; | ||
} | ||
export const schema: SchemaType = { | ||
dojo_starter: { | ||
DirectionsAvailable: { | ||
fieldOrder: ["player", "directions"], | ||
player: "", | ||
directions: [ | ||
new CairoCustomEnum({ | ||
Left: "", | ||
Right: undefined, | ||
Up: undefined, | ||
Down: undefined, | ||
}), | ||
], | ||
}, | ||
DirectionsAvailableValue: { | ||
fieldOrder: ["directions"], | ||
directions: [ | ||
new CairoCustomEnum({ | ||
Left: "", | ||
Right: undefined, | ||
Up: undefined, | ||
Down: undefined, | ||
}), | ||
], | ||
}, | ||
Moves: { | ||
fieldOrder: ["player", "remaining", "last_direction", "can_move"], | ||
player: "", | ||
remaining: 0, | ||
last_direction: new CairoOption(CairoOptionVariant.None), | ||
can_move: false, | ||
}, | ||
MovesValue: { | ||
fieldOrder: ["remaining", "last_direction", "can_move"], | ||
remaining: 0, | ||
last_direction: new CairoOption(CairoOptionVariant.None), | ||
can_move: false, | ||
}, | ||
Position: { | ||
fieldOrder: ["player", "vec"], | ||
player: "", | ||
vec: { x: 0, y: 0 }, | ||
}, | ||
PositionValue: { | ||
fieldOrder: ["vec"], | ||
vec: { x: 0, y: 0 }, | ||
}, | ||
Vec2: { | ||
fieldOrder: ["x", "y"], | ||
x: 0, | ||
y: 0, | ||
}, | ||
Moved: { | ||
fieldOrder: ["player", "direction"], | ||
player: "", | ||
direction: new CairoCustomEnum({ | ||
Left: "", | ||
Right: undefined, | ||
Up: undefined, | ||
Down: undefined, | ||
}), | ||
}, | ||
MovedValue: { | ||
fieldOrder: ["direction"], | ||
direction: new CairoCustomEnum({ | ||
Left: "", | ||
Right: undefined, | ||
Up: undefined, | ||
Down: undefined, | ||
}), | ||
}, | ||
}, | ||
}; | ||
export enum ModelsMapping { | ||
Direction = "dojo_starter-Direction", | ||
DirectionsAvailable = "dojo_starter-DirectionsAvailable", | ||
DirectionsAvailableValue = "dojo_starter-DirectionsAvailableValue", | ||
Moves = "dojo_starter-Moves", | ||
MovesValue = "dojo_starter-MovesValue", | ||
Position = "dojo_starter-Position", | ||
PositionValue = "dojo_starter-PositionValue", | ||
Vec2 = "dojo_starter-Vec2", | ||
Moved = "dojo_starter-Moved", | ||
MovedValue = "dojo_starter-MovedValue", | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
{ | ||
"compilerOptions": { | ||
"target": "ES2020", | ||
"useDefineForClassFields": true, | ||
"module": "ESNext", | ||
"lib": ["ES2020", "DOM", "DOM.Iterable"], | ||
"skipLibCheck": true, | ||
|
||
/* Bundler mode */ | ||
"moduleResolution": "bundler", | ||
"allowImportingTsExtensions": true, | ||
"isolatedModules": true, | ||
"moduleDetection": "force", | ||
"noEmit": true, | ||
|
||
/* Linting */ | ||
"strict": true, | ||
"noUnusedLocals": true, | ||
"noUnusedParameters": true, | ||
"noFallthroughCasesInSwitch": true, | ||
"noUncheckedSideEffectImports": true | ||
}, | ||
"include": ["src"] | ||
} |
Oops, something went wrong.