diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 00000000..23c314c1 Binary files /dev/null and b/bun.lockb differ diff --git a/examples/react-app/package.json b/examples/react-app/package.json index 034e9119..a7a43a26 100644 --- a/examples/react-app/package.json +++ b/examples/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 0x534692277764b04cfc469858891b825c799d1da550d2509fdd5be2f32abdaa0" + "create-components": "npx @dojoengine/core ../dojo-starter/target/dev/manifest.json src/dojo/contractComponents.ts http://localhost:5050 0x33ac2f528bb97cc7b79148fd1756dc368be0e95d391d8c6d6473ecb60b4560e" }, "dependencies": { "@dojoengine/core": "link:dojo-packages/packages/core", diff --git a/examples/react-app/src/dojo/contractComponents.ts b/examples/react-app/src/dojo/contractComponents.ts index 12430e19..2e42c59f 100644 --- a/examples/react-app/src/dojo/contractComponents.ts +++ b/examples/react-app/src/dojo/contractComponents.ts @@ -3,39 +3,32 @@ import { defineComponent, Type as RecsType, World } from "@dojoengine/recs"; export function defineContractComponents(world: World) { - return { - Moves: (() => { - return defineComponent( - world, - { - player: RecsType.BigInt, - remaining: RecsType.Number, - last_direction: RecsType.Number, - }, - { - metadata: { - name: "Moves", - types: ["contractaddress", "u8", "enum"], - customTypes: ["Direction"], - }, - } - ); - })(), - Position: (() => { - return defineComponent( - world, - { - player: RecsType.BigInt, - vec: { x: RecsType.Number, y: RecsType.Number }, - }, - { - metadata: { - name: "Position", - types: ["contractaddress", "u32", "u32"], - customTypes: ["Vec2"], - }, - } - ); - })(), - }; + return { + Moves: (() => { + return defineComponent( + world, + { player: RecsType.BigInt, remaining: RecsType.Number, last_direction: RecsType.Number }, + { + metadata: { + name: "Moves", + types: ["contractaddress","u8","enum"], + customTypes: ["Direction"], + }, + } + ); + })(), + Position: (() => { + return defineComponent( + world, + { player: RecsType.BigInt, vec: { x: RecsType.Number, y: RecsType.Number } }, + { + metadata: { + name: "Position", + types: ["contractaddress","u32","u32"], + customTypes: ["Vec2"], + }, + } + ); + })(), + }; } diff --git a/packages/core/bin/generateComponents.cjs b/packages/core/bin/generateComponents.cjs index 03e246a7..06b4084a 100755 --- a/packages/core/bin/generateComponents.cjs +++ b/packages/core/bin/generateComponents.cjs @@ -51,7 +51,9 @@ fileContent += `export function defineContractComponents(world: World) {\n retu manifest.models.forEach((model) => { const types = []; const customTypes = []; - const modelName = model.name; + + let result = model.name.split('::').pop(); + let modelName = result.charAt(0).toUpperCase() + result.slice(1); try { const output = execSync( diff --git a/packages/create-dojo/bin/index.js b/packages/create-dojo/bin/index.js index faf94696..65a91b46 100755 --- a/packages/create-dojo/bin/index.js +++ b/packages/create-dojo/bin/index.js @@ -7,87 +7,83 @@ import path from "path"; import * as fs from "fs"; import { input, select } from "@inquirer/prompts"; var templates = [ - { - value: "react-app", - description: "React app using Dojo", - }, - { - value: "react-phaser-example", - description: "React/Phaser app using Dojo", - }, + { + value: "react-app", + description: "React app using Dojo" + }, + { + value: "react-phaser-example", + description: "React/Phaser app using Dojo" + } ]; run(); async function run() { - try { - const { template, projectName } = await prompt(); - console.log(`Downloading ${template}...`); - spawn.sync("npx", [ - "degit", - `dojoengine/dojo.js/examples/${template}`, - `${projectName}`, - ]); - await rewritePackageJson(projectName); - console.log(`Downloading dojo-starter...`); - spawn.sync("npx", ["degit", `dojoengine/dojo-starter`, `dojo-starter`]); - } catch (e) { - console.log(e); - } + try { + const { template, projectName } = await prompt(); + console.log(`Downloading ${template}...`); + spawn.sync("npx", [ + "degit", + `dojoengine/dojo.js/examples/${template}`, + `${projectName}` + ]); + await rewritePackageJson(projectName); + console.log(`Downloading dojo-starter...`); + spawn.sync("npx", ["degit", `dojoengine/dojo-starter`, `dojo-starter`]); + } catch (e) { + console.log(e); + } } async function rewritePackageJson(projectName) { - const packageJsonPath = path.join( - process.cwd(), - projectName, - "package.json" - ); - const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); - const latestVersion = await getLatestVersion(); - packageJson.name = projectName; - for (let dep of Object.keys(packageJson.dependencies)) { - if ( - dep.startsWith("@dojoengine") && - packageJson.dependencies[dep].startsWith("link:") - ) { - packageJson.dependencies[dep] = latestVersion; - } + const packageJsonPath = path.join( + process.cwd(), + projectName, + "package.json" + ); + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); + const latestVersion = await getLatestVersion(); + packageJson.name = projectName; + for (let dep of Object.keys(packageJson.dependencies)) { + if (dep.startsWith("@dojoengine") && packageJson.dependencies[dep].startsWith("link:")) { + packageJson.dependencies[dep] = latestVersion; } - fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)); + } + fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)); } async function prompt() { - const template = await select({ - message: "Select a template", - choices: templates, - }); - const projectName = await input({ - message: "Project name ", - validate: (input2) => { - if (/^([A-Za-z\-\_\d])+$/.test(input2)) return true; - else - return "Project name may only include letters, numbers, underscores and hashes."; - }, - default: template, - }); - return { template, projectName }; + const template = await select({ + message: "Select a template", + choices: templates + }); + const projectName = await input({ + message: "Project name ", + validate: (input2) => { + if (/^([A-Za-z\-\_\d])+$/.test(input2)) + return true; + else + return "Project name may only include letters, numbers, underscores and hashes."; + }, + default: template + }); + return { template, projectName }; } async function getLatestVersion() { - return new Promise((resolve, reject) => { - https - .get( - "https://registry.npmjs.org/-/package/@dojoengine/core/dist-tags", - (res) => { - if (res.statusCode === 200) { - let body = ""; - res.on("data", (data) => (body += data)); - res.on("end", () => { - resolve(JSON.parse(body).latest); - }); - } else { - reject(); - } - } - ) - .on("error", () => { - reject(); - }); + return new Promise((resolve, reject) => { + https.get( + "https://registry.npmjs.org/-/package/@dojoengine/core/dist-tags", + (res) => { + if (res.statusCode === 200) { + let body = ""; + res.on("data", (data) => body += data); + res.on("end", () => { + resolve(JSON.parse(body).latest); + }); + } else { + reject(); + } + } + ).on("error", () => { + reject(); }); + }); } -//# sourceMappingURL=index.js.map +//# sourceMappingURL=index.js.map \ No newline at end of file