diff --git a/packages/core/package.json b/packages/core/package.json index 2cdc7772..6faad8b4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@dojoengine/core", - "version": "0.1.54", + "version": "0.1.55", "description": "Dojo engine core providers and types", "type": "module", "scripts": { diff --git a/packages/create-burner/package.json b/packages/create-burner/package.json index 45f573b1..5ef37850 100644 --- a/packages/create-burner/package.json +++ b/packages/create-burner/package.json @@ -1,6 +1,6 @@ { "name": "@dojoengine/create-burner", - "version": "0.1.54", + "version": "0.1.55", "description": "Useful hooks and functions to create a Starknet burner wallet", "source": "src/index.ts", "main": "dist/index.js", diff --git a/packages/create-dojo/bin/index.js b/packages/create-dojo/bin/index.js index 7ed36f94..cd7afa80 100755 --- a/packages/create-dojo/bin/index.js +++ b/packages/create-dojo/bin/index.js @@ -20,8 +20,11 @@ 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); } diff --git a/packages/create-dojo/bin/index.js.map b/packages/create-dojo/bin/index.js.map index 8c8ddbae..e371ce8e 100644 --- a/packages/create-dojo/bin/index.js.map +++ b/packages/create-dojo/bin/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport https from 'https';\nimport spawn from 'cross-spawn';\nimport path from \"path\";\nimport * as fs from \"fs\";\n\nimport { input, select } from '@inquirer/prompts';\n\nconst templates = [\n {\n value: 'react-app',\n description: 'React app using Dojo',\n },\n {\n value: 'react-phaser-example',\n description: 'React/Phaser app using Dojo',\n },\n]\n\nrun();\n\nasync function run() {\n\n try {\n const { template, projectName } = await prompt();\n\n // clone template using degit into projectName directory\n spawn.sync(\"npx\", [\"degit\", `dojoengine/dojo.js/examples/${template}`, `${projectName}`])\n\n // rewrite package.json\n await rewritePackageJson(projectName);\n\n } catch (e: any) {\n console.log(e)\n }\n\n}\n\n\nasync function rewritePackageJson(projectName: string) {\n\n const packageJsonPath = path.join(process.cwd(), projectName, 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n const latestVersion = await getLatestVersion();\n\n // rename using projectName\n packageJson.name = projectName;\n\n // rewrite all link:dojo-packages/packages/... with latest version\n for (let dep of Object.keys(packageJson.dependencies)) {\n if (dep.startsWith(\"@dojoengine\") && packageJson.dependencies[dep].startsWith(\"link:\")) {\n packageJson.dependencies[dep] = latestVersion\n }\n }\n\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n}\n\nasync function prompt(): Promise<{ template: string, projectName: string }> {\n\n const template = await select({\n message: 'Select a template',\n choices: templates\n });\n\n const projectName = await input({\n message: \"Project name \", validate: (input: string) => {\n if (/^([A-Za-z\\-\\_\\d])+$/.test(input)) return true;\n else return 'Project name may only include letters, numbers, underscores and hashes.';\n },\n default: template\n })\n\n return { template, projectName }\n\n}\n\nasync function getLatestVersion(): Promise {\n return new Promise((resolve, reject) => {\n https\n .get(\n 'https://registry.npmjs.org/-/package/@dojoengine/core/dist-tags',\n res => {\n if (res.statusCode === 200) {\n let body = '';\n res.on('data', data => (body += data));\n res.on('end', () => {\n resolve(JSON.parse(body).latest);\n });\n } else {\n reject();\n }\n }\n )\n .on('error', () => {\n reject();\n });\n });\n}"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,OAAO,WAAW;AAClB,OAAO,UAAU;AACjB,YAAY,QAAQ;AAEpB,SAAS,OAAO,cAAc;AAE9B,IAAM,YAAY;AAAA,EACd;AAAA,IACI,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,IACI,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AACJ;AAEA,IAAI;AAEJ,eAAe,MAAM;AAEjB,MAAI;AACA,UAAM,EAAE,UAAU,YAAY,IAAI,MAAM,OAAO;AAG/C,UAAM,KAAK,OAAO,CAAC,SAAS,+BAA+B,QAAQ,IAAI,GAAG,WAAW,EAAE,CAAC;AAGxF,UAAM,mBAAmB,WAAW;AAAA,EAExC,SAAS,GAAQ;AACb,YAAQ,IAAI,CAAC;AAAA,EACjB;AAEJ;AAGA,eAAe,mBAAmB,aAAqB;AAEnD,QAAM,kBAAkB,KAAK,KAAK,QAAQ,IAAI,GAAG,aAAa,cAAc;AAC5E,QAAM,cAAc,KAAK,MAAS,gBAAa,iBAAiB,OAAO,CAAC;AACxE,QAAM,gBAAgB,MAAM,iBAAiB;AAG7C,cAAY,OAAO;AAGnB,WAAS,OAAO,OAAO,KAAK,YAAY,YAAY,GAAG;AACnD,QAAI,IAAI,WAAW,aAAa,KAAK,YAAY,aAAa,GAAG,EAAE,WAAW,OAAO,GAAG;AACpF,kBAAY,aAAa,GAAG,IAAI;AAAA,IACpC;AAAA,EACJ;AAEA,EAAG,iBAAc,iBAAiB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAE1E;AAEA,eAAe,SAA6D;AAExE,QAAM,WAAW,MAAM,OAAO;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,EACb,CAAC;AAED,QAAM,cAAc,MAAM,MAAM;AAAA,IAC5B,SAAS;AAAA,IAAiB,UAAU,CAACA,WAAkB;AACnD,UAAI,sBAAsB,KAAKA,MAAK;AAAG,eAAO;AAAA;AACzC,eAAO;AAAA,IAChB;AAAA,IACA,SAAS;AAAA,EACb,CAAC;AAED,SAAO,EAAE,UAAU,YAAY;AAEnC;AAEA,eAAe,mBAAoC;AAC/C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,UACK;AAAA,MACG;AAAA,MACA,SAAO;AACH,YAAI,IAAI,eAAe,KAAK;AACxB,cAAI,OAAO;AACX,cAAI,GAAG,QAAQ,UAAS,QAAQ,IAAK;AACrC,cAAI,GAAG,OAAO,MAAM;AAChB,oBAAQ,KAAK,MAAM,IAAI,EAAE,MAAM;AAAA,UACnC,CAAC;AAAA,QACL,OAAO;AACH,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ,EACC,GAAG,SAAS,MAAM;AACf,aAAO;AAAA,IACX,CAAC;AAAA,EACT,CAAC;AACL;","names":["input"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport https from 'https';\nimport spawn from 'cross-spawn';\nimport path from \"path\";\nimport * as fs from \"fs\";\n\nimport { input, select } from '@inquirer/prompts';\n\nconst templates = [\n {\n value: 'react-app',\n description: 'React app using Dojo',\n },\n {\n value: 'react-phaser-example',\n description: 'React/Phaser app using Dojo',\n },\n]\n\nrun();\n\nasync function run() {\n\n try {\n const { template, projectName } = await prompt();\n\n // clone template using degit into projectName directory\n console.log(`Downloading ${template}...`)\n spawn.sync(\"npx\", [\"degit\", `dojoengine/dojo.js/examples/${template}`, `${projectName}`])\n\n // rewrite package.json\n await rewritePackageJson(projectName);\n\n // clone dojo-starter\n console.log(`Downloading dojo-starter...`)\n spawn.sync(\"npx\", [\"degit\", `dojoengine/dojo-starter`, `dojo-starter`])\n\n } catch (e: any) {\n console.log(e)\n }\n\n}\n\n\nasync function rewritePackageJson(projectName: string) {\n\n const packageJsonPath = path.join(process.cwd(), projectName, 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n const latestVersion = await getLatestVersion();\n\n // rename using projectName\n packageJson.name = projectName;\n\n // rewrite all link:dojo-packages/packages/... with latest version\n for (let dep of Object.keys(packageJson.dependencies)) {\n if (dep.startsWith(\"@dojoengine\") && packageJson.dependencies[dep].startsWith(\"link:\")) {\n packageJson.dependencies[dep] = latestVersion\n }\n }\n\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n}\n\nasync function prompt(): Promise<{ template: string, projectName: string }> {\n\n const template = await select({\n message: 'Select a template',\n choices: templates\n });\n\n const projectName = await input({\n message: \"Project name \", validate: (input: string) => {\n if (/^([A-Za-z\\-\\_\\d])+$/.test(input)) return true;\n else return 'Project name may only include letters, numbers, underscores and hashes.';\n },\n default: template\n })\n\n return { template, projectName }\n\n}\n\nasync function getLatestVersion(): Promise {\n return new Promise((resolve, reject) => {\n https\n .get(\n 'https://registry.npmjs.org/-/package/@dojoengine/core/dist-tags',\n res => {\n if (res.statusCode === 200) {\n let body = '';\n res.on('data', data => (body += data));\n res.on('end', () => {\n resolve(JSON.parse(body).latest);\n });\n } else {\n reject();\n }\n }\n )\n .on('error', () => {\n reject();\n });\n });\n}"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,OAAO,WAAW;AAClB,OAAO,UAAU;AACjB,YAAY,QAAQ;AAEpB,SAAS,OAAO,cAAc;AAE9B,IAAM,YAAY;AAAA,EACd;AAAA,IACI,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,IACI,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AACJ;AAEA,IAAI;AAEJ,eAAe,MAAM;AAEjB,MAAI;AACA,UAAM,EAAE,UAAU,YAAY,IAAI,MAAM,OAAO;AAG/C,YAAQ,IAAI,eAAe,QAAQ,KAAK;AACxC,UAAM,KAAK,OAAO,CAAC,SAAS,+BAA+B,QAAQ,IAAI,GAAG,WAAW,EAAE,CAAC;AAGxF,UAAM,mBAAmB,WAAW;AAGpC,YAAQ,IAAI,6BAA6B;AACzC,UAAM,KAAK,OAAO,CAAC,SAAS,2BAA2B,cAAc,CAAC;AAAA,EAE1E,SAAS,GAAQ;AACb,YAAQ,IAAI,CAAC;AAAA,EACjB;AAEJ;AAGA,eAAe,mBAAmB,aAAqB;AAEnD,QAAM,kBAAkB,KAAK,KAAK,QAAQ,IAAI,GAAG,aAAa,cAAc;AAC5E,QAAM,cAAc,KAAK,MAAS,gBAAa,iBAAiB,OAAO,CAAC;AACxE,QAAM,gBAAgB,MAAM,iBAAiB;AAG7C,cAAY,OAAO;AAGnB,WAAS,OAAO,OAAO,KAAK,YAAY,YAAY,GAAG;AACnD,QAAI,IAAI,WAAW,aAAa,KAAK,YAAY,aAAa,GAAG,EAAE,WAAW,OAAO,GAAG;AACpF,kBAAY,aAAa,GAAG,IAAI;AAAA,IACpC;AAAA,EACJ;AAEA,EAAG,iBAAc,iBAAiB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAE1E;AAEA,eAAe,SAA6D;AAExE,QAAM,WAAW,MAAM,OAAO;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,EACb,CAAC;AAED,QAAM,cAAc,MAAM,MAAM;AAAA,IAC5B,SAAS;AAAA,IAAiB,UAAU,CAACA,WAAkB;AACnD,UAAI,sBAAsB,KAAKA,MAAK;AAAG,eAAO;AAAA;AACzC,eAAO;AAAA,IAChB;AAAA,IACA,SAAS;AAAA,EACb,CAAC;AAED,SAAO,EAAE,UAAU,YAAY;AAEnC;AAEA,eAAe,mBAAoC;AAC/C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,UACK;AAAA,MACG;AAAA,MACA,SAAO;AACH,YAAI,IAAI,eAAe,KAAK;AACxB,cAAI,OAAO;AACX,cAAI,GAAG,QAAQ,UAAS,QAAQ,IAAK;AACrC,cAAI,GAAG,OAAO,MAAM;AAChB,oBAAQ,KAAK,MAAM,IAAI,EAAE,MAAM;AAAA,UACnC,CAAC;AAAA,QACL,OAAO;AACH,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ,EACC,GAAG,SAAS,MAAM;AACf,aAAO;AAAA,IACX,CAAC;AAAA,EACT,CAAC;AACL;","names":["input"]} \ No newline at end of file diff --git a/packages/create-dojo/package.json b/packages/create-dojo/package.json index 2e08487c..62657d48 100644 --- a/packages/create-dojo/package.json +++ b/packages/create-dojo/package.json @@ -1,6 +1,6 @@ { "name": "@dojoengine/create-dojo", - "version": "0.1.54", + "version": "0.1.55", "description": "Scaffold Dojo project from examples", "module": "index.ts", "main" : "./bin/index.js", diff --git a/packages/create-dojo/src/index.ts b/packages/create-dojo/src/index.ts index c77a6d92..02997f37 100644 --- a/packages/create-dojo/src/index.ts +++ b/packages/create-dojo/src/index.ts @@ -26,11 +26,16 @@ async function run() { const { template, projectName } = await prompt(); // clone template using degit into projectName directory + console.log(`Downloading ${template}...`) spawn.sync("npx", ["degit", `dojoengine/dojo.js/examples/${template}`, `${projectName}`]) // rewrite package.json await rewritePackageJson(projectName); + // clone dojo-starter + console.log(`Downloading dojo-starter...`) + spawn.sync("npx", ["degit", `dojoengine/dojo-starter`, `dojo-starter`]) + } catch (e: any) { console.log(e) } diff --git a/packages/react/package.json b/packages/react/package.json index d318f2db..cc7a5084 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@dojoengine/react", - "version": "0.1.54", + "version": "0.1.55", "description": "Useful React hooks for Starknet", "source": "src/index.ts", "main": "dist/index.js", diff --git a/packages/torii-client/package.json b/packages/torii-client/package.json index 164972a8..b6200362 100644 --- a/packages/torii-client/package.json +++ b/packages/torii-client/package.json @@ -1,6 +1,6 @@ { "name": "@dojoengine/torii-client", - "version": "0.1.54", + "version": "0.1.55", "description": "", "main": "dist/index.js", "type": "module", diff --git a/packages/torii-wasm/package.json b/packages/torii-wasm/package.json index 23992d1f..e9c19848 100644 --- a/packages/torii-wasm/package.json +++ b/packages/torii-wasm/package.json @@ -1,6 +1,6 @@ { "name": "@dojoengine/torii-wasm", - "version": "0.1.54", + "version": "0.1.55", "description": "", "main": "./pkg/torii_client_wasm.js", "type": "module", diff --git a/packages/utils/package.json b/packages/utils/package.json index 89c81260..6211d745 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@dojoengine/utils", - "version": "0.1.54", + "version": "0.1.55", "description": "Helpful Dojo Utils", "type": "module", "scripts": { diff --git a/readme.md b/readme.md index fd7b1b1f..70f85055 100644 --- a/readme.md +++ b/readme.md @@ -99,6 +99,13 @@ To scaffold a new project from an example: npx @dojoengine/create-dojo ``` +If you have issues on WSL, install package first then run command : + +```console +npm i @dojoengine/create-dojo -g +npx @dojoengine/create-dojo +``` + To run the examples that have the linked packages, follow the steps below: **Terminal 1**: Start the React app.