create-dubhe 1.2.0-pre.62 → 1.2.0-pre.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/cli.js.map +1 -1
  3. package/package.json +1 -1
  4. package/templates/101/sui-template/mprocs.yaml +4 -1
  5. package/templates/101/sui-template/packages/client/package.json +1 -0
  6. package/templates/101/sui-template/packages/client/src/app/layout.tsx +2 -3
  7. package/templates/101/sui-template/packages/client/src/app/page.tsx +5 -4
  8. package/templates/101/sui-template/packages/client/src/app/providers.tsx +40 -0
  9. package/templates/101/sui-template/packages/client/tsconfig.json +2 -1
  10. package/templates/101/sui-template/packages/contracts/deployment.ts +2 -2
  11. package/templates/101/sui-template/packages/contracts/dubhe.config.json +33 -2
  12. package/templates/101/sui-template/packages/contracts/metadata.json +166 -58
  13. package/templates/101/sui-template/packages/contracts/package.json +1 -1
  14. package/templates/101/sui-template/packages/contracts/src/counter/Move.lock +14 -3
  15. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/components/counter0.move +30 -17
  16. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/components/counter1.move +33 -16
  17. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/dapp_key.move +4 -0
  18. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move +8 -4
  19. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move +5 -2
  20. package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2.move +31 -18
  21. package/templates/101/sui-template/packages/contracts/src/dubhe/Move.lock +3 -2
  22. package/templates/101/sui-template/packages/contracts/src/dubhe/Move.toml +1 -1
  23. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/genesis.move +3 -0
  24. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/sui_asset_id.move +98 -0
  25. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +1 -7
  26. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/scripts/deploy_hook.move +25 -17
  27. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/assets/assets.move +1 -1
  28. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/assets/functions.move +3 -3
  29. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/bridge.move +12 -13
  30. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/dapp_system.move +16 -5
  31. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/dex/dex.move +1 -1
  32. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/dex/functions.move +1 -1
  33. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/gov.move +32 -1
  34. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/utils.move +22 -0
  35. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/wrapper.move +1 -1
  36. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/assets.move +1 -1
  37. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/bridge.move +65 -55
  38. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/dex.move +427 -423
  39. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/wrapper.move +62 -49
  40. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/utils/bcs.move +0 -1
  41. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/utils/entity_id.move +43 -0
  42. package/templates/contract/sui-template/src/dubhe/Move.lock +3 -2
  43. package/templates/contract/sui-template/src/dubhe/Move.toml +1 -1
  44. package/templates/contract/sui-template/src/dubhe/sources/codegen/genesis.move +3 -0
  45. package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/sui_asset_id.move +98 -0
  46. package/templates/contract/sui-template/src/dubhe/sources/core/dapp_store.move +1 -7
  47. package/templates/contract/sui-template/src/dubhe/sources/scripts/deploy_hook.move +25 -17
  48. package/templates/contract/sui-template/src/dubhe/sources/systems/assets/assets.move +1 -1
  49. package/templates/contract/sui-template/src/dubhe/sources/systems/assets/functions.move +3 -3
  50. package/templates/contract/sui-template/src/dubhe/sources/systems/bridge.move +12 -13
  51. package/templates/contract/sui-template/src/dubhe/sources/systems/dapp_system.move +16 -5
  52. package/templates/contract/sui-template/src/dubhe/sources/systems/dex/dex.move +1 -1
  53. package/templates/contract/sui-template/src/dubhe/sources/systems/dex/functions.move +1 -1
  54. package/templates/contract/sui-template/src/dubhe/sources/systems/gov.move +32 -1
  55. package/templates/contract/sui-template/src/dubhe/sources/systems/utils.move +22 -0
  56. package/templates/contract/sui-template/src/dubhe/sources/systems/wrapper.move +1 -1
  57. package/templates/contract/sui-template/src/dubhe/sources/tests/assets.move +1 -1
  58. package/templates/contract/sui-template/src/dubhe/sources/tests/bridge.move +65 -55
  59. package/templates/contract/sui-template/src/dubhe/sources/tests/dex.move +427 -423
  60. package/templates/contract/sui-template/src/dubhe/sources/tests/wrapper.move +62 -49
  61. package/templates/contract/sui-template/src/dubhe/sources/utils/bcs.move +0 -1
  62. package/templates/contract/sui-template/src/dubhe/sources/utils/entity_id.move +43 -0
  63. package/templates/nextjs/sui-template/mprocs.yaml +4 -1
  64. package/templates/nextjs/sui-template/packages/client/package.json +1 -0
  65. package/templates/nextjs/sui-template/packages/client/src/app/page.tsx +5 -4
  66. package/templates/nextjs/sui-template/packages/client/src/app/providers.tsx +36 -9
  67. package/templates/nextjs/sui-template/packages/client/tsconfig.json +2 -1
  68. package/templates/nextjs/sui-template/packages/contracts/deployment.ts +2 -2
  69. package/templates/nextjs/sui-template/packages/contracts/dubhe.config.json +33 -2
  70. package/templates/nextjs/sui-template/packages/contracts/metadata.json +166 -58
  71. package/templates/nextjs/sui-template/packages/contracts/package.json +2 -2
  72. package/templates/nextjs/sui-template/packages/contracts/src/counter/Move.lock +19 -3
  73. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/components/counter0.move +30 -17
  74. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/components/counter1.move +33 -16
  75. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/dapp_key.move +4 -0
  76. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move +8 -4
  77. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move +5 -2
  78. package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2.move +31 -18
  79. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.lock +3 -2
  80. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.toml +1 -1
  81. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/genesis.move +3 -0
  82. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/sui_asset_id.move +98 -0
  83. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +1 -7
  84. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/scripts/deploy_hook.move +25 -17
  85. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/assets/assets.move +1 -1
  86. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/assets/functions.move +3 -3
  87. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/bridge.move +12 -13
  88. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/dapp_system.move +16 -5
  89. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/dex/dex.move +1 -1
  90. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/dex/functions.move +1 -1
  91. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/gov.move +32 -1
  92. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/utils.move +22 -0
  93. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/wrapper.move +1 -1
  94. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/assets.move +1 -1
  95. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/bridge.move +65 -55
  96. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/dex.move +427 -423
  97. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/wrapper.move +62 -49
  98. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/bcs.move +0 -1
  99. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/entity_id.move +43 -0
  100. package/templates/101/sui-template/packages/client/src/app/dubhe/useContract.ts +0 -68
  101. package/templates/101/sui-template/packages/contracts/docker-compose.yml +0 -34
  102. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/dubhe.move +0 -52
  103. package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/entity_id.move +0 -54
  104. package/templates/contract/sui-template/src/dubhe/sources/systems/dubhe.move +0 -52
  105. package/templates/contract/sui-template/src/dubhe/sources/systems/entity_id.move +0 -54
  106. package/templates/nextjs/sui-template/packages/client/src/app/dubhe/useContract.ts +0 -62
  107. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/dubhe.move +0 -52
  108. package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/entity_id.move +0 -54
package/dist/cli.js CHANGED
@@ -62,7 +62,7 @@ var CHAINS = [
62
62
  // package.json
63
63
  var package_default = {
64
64
  name: "create-dubhe",
65
- version: "1.2.0-pre.62",
65
+ version: "1.2.0-pre.64",
66
66
  type: "module",
67
67
  license: "MIT",
68
68
  author: "team@obelisk.build",
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bin/cli.ts","../src/config/chains.ts","../package.json","../src/exists.ts"],"sourcesContent":["import { fileURLToPath } from 'node:url';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport glob from 'fast-glob';\nimport yargsInteractive from 'yargs-interactive';\nimport { CHAINS } from '../config/chains';\nimport packageJson from '../../package.json';\nimport { exists } from '../exists';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst cwd = process.cwd();\n\nconst defaultTargetDir = 'dubhe-template-project';\n\nconst init = async () => {\n // Prepare chain options\n const chainChoices = CHAINS.map(({ title, description, value }) => ({\n name: `${title} - ${description}`,\n value\n }));\n\n // Step 1: Choose project name and chain\n const firstStep = await yargsInteractive()\n .usage('$0 [args]')\n .interactive({\n interactive: { default: true },\n projectName: {\n describe: 'Name your project',\n type: 'input'\n },\n chain: {\n describe: 'Pick your chain',\n type: 'list',\n choices: chainChoices.map((c) => c.value)\n },\n dubheVersion: {\n describe: 'The version of Dubhe packages to use, defaults to latest',\n type: 'input',\n default: packageJson.version\n }\n });\n\n const { projectName, chain, dubheVersion } = firstStep;\n if (!projectName) throw new Error('No project name provided.');\n\n // Get available templates based on the selected chain\n const selectedChain = CHAINS.find((c) => c.value === chain);\n if (!selectedChain) {\n throw new Error('Invalid chain selection');\n }\n\n // Prepare platform options\n const platformChoices = selectedChain.supportedTemplates.map(({ title, description, value }) => ({\n name: `${title} - ${description}`,\n value\n }));\n\n // Step 2: Choose platform\n const secondStep = await yargsInteractive()\n .usage('$0 [args]')\n .interactive({\n interactive: { default: true },\n platform: {\n describe: 'Pick your platform',\n type: 'list',\n choices: platformChoices.map((c) => c.value)\n }\n });\n\n const { platform } = secondStep;\n\n const selectedTemplate = selectedChain.supportedTemplates.find((t) => t.value === platform);\n if (!selectedTemplate) {\n throw new Error('Invalid platform selection');\n }\n\n const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);\n const pkgManager = pkgInfo ? pkgInfo.name : 'npm';\n\n const sourceDir = path.join(\n __dirname,\n '..',\n 'templates',\n selectedTemplate.path.replace('{chain}', chain)\n );\n\n if (!(await exists(sourceDir))) {\n throw new Error(`Template directory not found: ${sourceDir}`);\n }\n\n const destDir = path.join(process.cwd(), projectName);\n if (await exists(destDir)) {\n throw new Error(`Target directory \"${destDir}\" already exists.`);\n }\n\n const files = await glob('**/*', { cwd: sourceDir, dot: true });\n\n for (const filename of files) {\n const sourceFile = path.join(sourceDir, filename);\n const destFile = path.join(destDir, filename);\n\n await fs.mkdir(path.dirname(destFile), { recursive: true });\n\n if (/package\\.json$/.test(sourceFile)) {\n const source = await fs.readFile(sourceFile, 'utf-8');\n await fs.writeFile(destFile, source.replaceAll(/{{dubhe-version}}/g, dubheVersion), 'utf-8');\n } else if (/\\.gitignore_$/.test(sourceFile)) {\n await fs.copyFile(sourceFile, destFile.replace(/_$/, ''));\n } else {\n await fs.copyFile(sourceFile, destFile);\n }\n }\n\n const cdProjectName = path.relative(cwd, destDir);\n\n const styles = {\n success: '\\x1b[32m%s\\x1b[0m',\n info: '\\x1b[36m%s\\x1b[0m',\n command: '\\x1b[33m%s\\x1b[0m',\n separator: '\\x1b[90m%s\\x1b[0m'\n };\n\n console.log('\\n' + '='.repeat(60));\n console.log(styles.success, '🎉 Project creation successful!');\n console.log(styles.info, `📁 Project location: ${destDir}`);\n console.log(styles.separator, '-'.repeat(60));\n console.log(styles.info, 'Next steps:\\n');\n\n if (destDir !== cwd) {\n console.log(\n styles.command,\n ` cd ${cdProjectName.includes(' ') ? `\"${cdProjectName}\"` : cdProjectName}`\n );\n }\n\n const actualTemplate = selectedTemplate.value;\n\n switch (actualTemplate) {\n case '101':\n case 'web':\n console.log(styles.command, ` ${pkgManager} install`);\n console.log(styles.command, ` ${pkgManager} dubhe doctor`);\n console.log(styles.command, ` ${pkgManager} run dev`);\n break;\n case 'contract':\n console.log(styles.command, ` ${pkgManager} install`);\n console.log(styles.command, ` ${pkgManager} dubhe doctor`);\n break;\n }\n\n console.log(styles.separator, '\\n' + '='.repeat(60) + '\\n');\n};\n\nfunction pkgFromUserAgent(userAgent: string | undefined) {\n if (!userAgent) return undefined;\n const pkgSpec = userAgent.split(' ')[0];\n const pkgSpecArr = pkgSpec.split('/');\n return {\n name: pkgSpecArr[0],\n version: pkgSpecArr[1]\n };\n}\n\ninit().catch((e) => {\n console.error(e);\n});\n","interface Template {\n title: string;\n description: string;\n value: string;\n path: string;\n}\n\ninterface Chain {\n title: string;\n description: string;\n value: string;\n supportedTemplates: Template[];\n}\n\nconst TEMPLATES = {\n QUICK_START: {\n title: '101',\n description: 'Quick start',\n value: '101',\n path: '101/{chain}-template'\n },\n WEB: {\n title: 'Web',\n description: 'Web template',\n value: 'web',\n path: 'nextjs/{chain}-template'\n },\n CONTRACT: {\n title: 'Contract',\n description: 'Contract template',\n value: 'contract',\n path: 'contract/{chain}-template'\n }\n} as const;\n\nexport const CHAINS: Chain[] = [\n {\n title: 'sui',\n description: 'Sui',\n value: 'sui',\n supportedTemplates: [TEMPLATES.QUICK_START, TEMPLATES.WEB, TEMPLATES.CONTRACT]\n },\n {\n title: 'aptos',\n description: 'Aptos',\n value: 'aptos',\n supportedTemplates: [TEMPLATES.QUICK_START, TEMPLATES.WEB, TEMPLATES.CONTRACT]\n },\n {\n title: 'rooch',\n description: 'Rooch',\n value: 'rooch',\n supportedTemplates: [TEMPLATES.QUICK_START]\n },\n {\n title: 'initia',\n description: 'Initia',\n value: 'initia',\n supportedTemplates: [TEMPLATES.QUICK_START]\n },\n {\n title: 'movement',\n description: 'Movement',\n value: 'movement',\n supportedTemplates: [TEMPLATES.QUICK_START]\n }\n];\n","{\n \"name\": \"create-dubhe\",\n \"version\": \"1.2.0-pre.62\",\n \"type\": \"module\",\n \"license\": \"MIT\",\n \"author\": \"team@obelisk.build\",\n \"bin\": \"bin/cli.js\",\n \"files\": [\n \"bin\",\n \"dist\",\n \"templates\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"pnpm run build:js\",\n \"build:js\": \"tsup && pnpm run copy-templates\",\n \"clean\": \"pnpm run clean:js\",\n \"clean:js\": \"shx rm -rf dist\",\n \"copy-templates\": \"tsx ./scripts/copy-templates.ts\",\n \"cocos-js-build\": \"cd cocos-lib-builder && npm i && browserify aptos.js -p esmify > ../templates/cocos/aptos-template/assets/lib/dubhe.js && browserify sui.js -p esmify > ../templates/cocos/sui-template/assets/lib/dubhe.js\",\n \"format\": \"prettier --write .\",\n \"format:check\": \"prettier --check .\",\n \"type-check\": \"tsc --noEmit\",\n \"validate\": \"pnpm format:check && pnpm type-check\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/0xobelisk/dubhe.git\"\n },\n \"dependencies\": {\n \"browser-resolve\": \"^2.0.0\",\n \"browser-sync\": \"^2.29.3\",\n \"fast-glob\": \"^3.3.3\",\n \"yargs-interactive\": \"^3.0.1\"\n },\n \"devDependencies\": {\n \"@types/yargs-interactive\": \"^2.1.6\",\n \"@types/cross-spawn\": \"^6.0.2\",\n \"@types/minimist\": \"^1.2.2\",\n \"@types/prompts\": \"^2.4.3\",\n \"cross-spawn\": \"^7.0.3\",\n \"kolorist\": \"^1.7.0\",\n \"prompts\": \"^2.4.2\",\n \"tsc\": \"^2.0.4\",\n \"esmify\": \"^2.1.1\",\n \"browserify\": \"^17.0.0\",\n \"eslint\": \"^8.56.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"prettier\": \"3.3.3\"\n }\n}\n","import fs from \"node:fs/promises\";\n\nexport async function exists(path: string) {\n try {\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n}\n"],"mappings":"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","names":["fs","path","fs"]}
1
+ {"version":3,"sources":["../src/bin/cli.ts","../src/config/chains.ts","../package.json","../src/exists.ts"],"sourcesContent":["import { fileURLToPath } from 'node:url';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport glob from 'fast-glob';\nimport yargsInteractive from 'yargs-interactive';\nimport { CHAINS } from '../config/chains';\nimport packageJson from '../../package.json';\nimport { exists } from '../exists';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst cwd = process.cwd();\n\nconst defaultTargetDir = 'dubhe-template-project';\n\nconst init = async () => {\n // Prepare chain options\n const chainChoices = CHAINS.map(({ title, description, value }) => ({\n name: `${title} - ${description}`,\n value\n }));\n\n // Step 1: Choose project name and chain\n const firstStep = await yargsInteractive()\n .usage('$0 [args]')\n .interactive({\n interactive: { default: true },\n projectName: {\n describe: 'Name your project',\n type: 'input'\n },\n chain: {\n describe: 'Pick your chain',\n type: 'list',\n choices: chainChoices.map((c) => c.value)\n },\n dubheVersion: {\n describe: 'The version of Dubhe packages to use, defaults to latest',\n type: 'input',\n default: packageJson.version\n }\n });\n\n const { projectName, chain, dubheVersion } = firstStep;\n if (!projectName) throw new Error('No project name provided.');\n\n // Get available templates based on the selected chain\n const selectedChain = CHAINS.find((c) => c.value === chain);\n if (!selectedChain) {\n throw new Error('Invalid chain selection');\n }\n\n // Prepare platform options\n const platformChoices = selectedChain.supportedTemplates.map(({ title, description, value }) => ({\n name: `${title} - ${description}`,\n value\n }));\n\n // Step 2: Choose platform\n const secondStep = await yargsInteractive()\n .usage('$0 [args]')\n .interactive({\n interactive: { default: true },\n platform: {\n describe: 'Pick your platform',\n type: 'list',\n choices: platformChoices.map((c) => c.value)\n }\n });\n\n const { platform } = secondStep;\n\n const selectedTemplate = selectedChain.supportedTemplates.find((t) => t.value === platform);\n if (!selectedTemplate) {\n throw new Error('Invalid platform selection');\n }\n\n const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);\n const pkgManager = pkgInfo ? pkgInfo.name : 'npm';\n\n const sourceDir = path.join(\n __dirname,\n '..',\n 'templates',\n selectedTemplate.path.replace('{chain}', chain)\n );\n\n if (!(await exists(sourceDir))) {\n throw new Error(`Template directory not found: ${sourceDir}`);\n }\n\n const destDir = path.join(process.cwd(), projectName);\n if (await exists(destDir)) {\n throw new Error(`Target directory \"${destDir}\" already exists.`);\n }\n\n const files = await glob('**/*', { cwd: sourceDir, dot: true });\n\n for (const filename of files) {\n const sourceFile = path.join(sourceDir, filename);\n const destFile = path.join(destDir, filename);\n\n await fs.mkdir(path.dirname(destFile), { recursive: true });\n\n if (/package\\.json$/.test(sourceFile)) {\n const source = await fs.readFile(sourceFile, 'utf-8');\n await fs.writeFile(destFile, source.replaceAll(/{{dubhe-version}}/g, dubheVersion), 'utf-8');\n } else if (/\\.gitignore_$/.test(sourceFile)) {\n await fs.copyFile(sourceFile, destFile.replace(/_$/, ''));\n } else {\n await fs.copyFile(sourceFile, destFile);\n }\n }\n\n const cdProjectName = path.relative(cwd, destDir);\n\n const styles = {\n success: '\\x1b[32m%s\\x1b[0m',\n info: '\\x1b[36m%s\\x1b[0m',\n command: '\\x1b[33m%s\\x1b[0m',\n separator: '\\x1b[90m%s\\x1b[0m'\n };\n\n console.log('\\n' + '='.repeat(60));\n console.log(styles.success, '🎉 Project creation successful!');\n console.log(styles.info, `📁 Project location: ${destDir}`);\n console.log(styles.separator, '-'.repeat(60));\n console.log(styles.info, 'Next steps:\\n');\n\n if (destDir !== cwd) {\n console.log(\n styles.command,\n ` cd ${cdProjectName.includes(' ') ? `\"${cdProjectName}\"` : cdProjectName}`\n );\n }\n\n const actualTemplate = selectedTemplate.value;\n\n switch (actualTemplate) {\n case '101':\n case 'web':\n console.log(styles.command, ` ${pkgManager} install`);\n console.log(styles.command, ` ${pkgManager} dubhe doctor`);\n console.log(styles.command, ` ${pkgManager} run dev`);\n break;\n case 'contract':\n console.log(styles.command, ` ${pkgManager} install`);\n console.log(styles.command, ` ${pkgManager} dubhe doctor`);\n break;\n }\n\n console.log(styles.separator, '\\n' + '='.repeat(60) + '\\n');\n};\n\nfunction pkgFromUserAgent(userAgent: string | undefined) {\n if (!userAgent) return undefined;\n const pkgSpec = userAgent.split(' ')[0];\n const pkgSpecArr = pkgSpec.split('/');\n return {\n name: pkgSpecArr[0],\n version: pkgSpecArr[1]\n };\n}\n\ninit().catch((e) => {\n console.error(e);\n});\n","interface Template {\n title: string;\n description: string;\n value: string;\n path: string;\n}\n\ninterface Chain {\n title: string;\n description: string;\n value: string;\n supportedTemplates: Template[];\n}\n\nconst TEMPLATES = {\n QUICK_START: {\n title: '101',\n description: 'Quick start',\n value: '101',\n path: '101/{chain}-template'\n },\n WEB: {\n title: 'Web',\n description: 'Web template',\n value: 'web',\n path: 'nextjs/{chain}-template'\n },\n CONTRACT: {\n title: 'Contract',\n description: 'Contract template',\n value: 'contract',\n path: 'contract/{chain}-template'\n }\n} as const;\n\nexport const CHAINS: Chain[] = [\n {\n title: 'sui',\n description: 'Sui',\n value: 'sui',\n supportedTemplates: [TEMPLATES.QUICK_START, TEMPLATES.WEB, TEMPLATES.CONTRACT]\n },\n {\n title: 'aptos',\n description: 'Aptos',\n value: 'aptos',\n supportedTemplates: [TEMPLATES.QUICK_START, TEMPLATES.WEB, TEMPLATES.CONTRACT]\n },\n {\n title: 'rooch',\n description: 'Rooch',\n value: 'rooch',\n supportedTemplates: [TEMPLATES.QUICK_START]\n },\n {\n title: 'initia',\n description: 'Initia',\n value: 'initia',\n supportedTemplates: [TEMPLATES.QUICK_START]\n },\n {\n title: 'movement',\n description: 'Movement',\n value: 'movement',\n supportedTemplates: [TEMPLATES.QUICK_START]\n }\n];\n","{\n \"name\": \"create-dubhe\",\n \"version\": \"1.2.0-pre.64\",\n \"type\": \"module\",\n \"license\": \"MIT\",\n \"author\": \"team@obelisk.build\",\n \"bin\": \"bin/cli.js\",\n \"files\": [\n \"bin\",\n \"dist\",\n \"templates\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"pnpm run build:js\",\n \"build:js\": \"tsup && pnpm run copy-templates\",\n \"clean\": \"pnpm run clean:js\",\n \"clean:js\": \"shx rm -rf dist\",\n \"copy-templates\": \"tsx ./scripts/copy-templates.ts\",\n \"cocos-js-build\": \"cd cocos-lib-builder && npm i && browserify aptos.js -p esmify > ../templates/cocos/aptos-template/assets/lib/dubhe.js && browserify sui.js -p esmify > ../templates/cocos/sui-template/assets/lib/dubhe.js\",\n \"format\": \"prettier --write .\",\n \"format:check\": \"prettier --check .\",\n \"type-check\": \"tsc --noEmit\",\n \"validate\": \"pnpm format:check && pnpm type-check\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/0xobelisk/dubhe.git\"\n },\n \"dependencies\": {\n \"browser-resolve\": \"^2.0.0\",\n \"browser-sync\": \"^2.29.3\",\n \"fast-glob\": \"^3.3.3\",\n \"yargs-interactive\": \"^3.0.1\"\n },\n \"devDependencies\": {\n \"@types/yargs-interactive\": \"^2.1.6\",\n \"@types/cross-spawn\": \"^6.0.2\",\n \"@types/minimist\": \"^1.2.2\",\n \"@types/prompts\": \"^2.4.3\",\n \"cross-spawn\": \"^7.0.3\",\n \"kolorist\": \"^1.7.0\",\n \"prompts\": \"^2.4.2\",\n \"tsc\": \"^2.0.4\",\n \"esmify\": \"^2.1.1\",\n \"browserify\": \"^17.0.0\",\n \"eslint\": \"^8.56.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"prettier\": \"3.3.3\"\n }\n}\n","import fs from \"node:fs/promises\";\n\nexport async function exists(path: string) {\n try {\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n}\n"],"mappings":"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","names":["fs","path","fs"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-dubhe",
3
- "version": "1.2.0-pre.62",
3
+ "version": "1.2.0-pre.64",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "team@obelisk.build",
@@ -2,7 +2,7 @@ scrollback: 10000
2
2
  procs:
3
3
  client:
4
4
  cwd: packages/client
5
- shell: pnpm dubhe wait --localnet && pnpm prod:localnet && pnpm dev
5
+ shell: pnpm dubhe wait --local-indexer && pnpm prod:localnet && pnpm dev
6
6
  graphql:
7
7
  cwd: .
8
8
  shell: docker-compose down && rm -rf .data/postgres && docker-compose up --remove-orphans
@@ -12,3 +12,6 @@ procs:
12
12
  node:
13
13
  cwd: packages/contracts
14
14
  shell: pnpm dubhe node --force
15
+ shell:
16
+ cwd: packages/contracts
17
+ shell: pnpm dubhe wait --local-indexer && pnpm dubhe shell
@@ -26,6 +26,7 @@
26
26
  "@0xobelisk/sui-common": "{{dubhe-version}}",
27
27
  "@0xobelisk/graphql-client": "{{dubhe-version}}",
28
28
  "@0xobelisk/ecs": "{{dubhe-version}}",
29
+ "@0xobelisk/react": "{{dubhe-version}}",
29
30
  "contracts": "workspace:*",
30
31
  "dotenv": "^16.4.5",
31
32
  "jotai": "^1.7.2",
@@ -1,7 +1,7 @@
1
1
  import type { Metadata } from 'next';
2
2
  import { Geist, Geist_Mono } from 'next/font/google';
3
- import { Toaster } from 'sonner';
4
3
  import './globals.css';
4
+ import { Providers } from './providers';
5
5
 
6
6
  const geistSans = Geist({
7
7
  variable: '--font-geist-sans',
@@ -29,8 +29,7 @@ export default function RootLayout({
29
29
  className={`${geistSans.variable} ${geistMono.variable} antialiased`}
30
30
  suppressHydrationWarning
31
31
  >
32
- <Toaster />
33
- {children}
32
+ <Providers>{children}</Providers>
34
33
  </body>
35
34
  </html>
36
35
  );
@@ -5,7 +5,8 @@ import { useEffect, useState } from 'react';
5
5
  import { useAtom } from 'jotai';
6
6
  import { Value } from '@/app/state';
7
7
  import { toast } from 'sonner';
8
- import { useContract } from './dubhe/useContract';
8
+
9
+ import { useDubhe } from '@0xobelisk/react/sui';
9
10
 
10
11
  export default function Home() {
11
12
  const [value, setValue] = useAtom(Value);
@@ -34,7 +35,7 @@ export default function Home() {
34
35
  const [resourceQueryLoading, setResourceQueryLoading] = useState(false);
35
36
  const [tableQueryLoading, setTableQueryLoading] = useState(false);
36
37
 
37
- const { contract, graphqlClient, ecsWorld, network, address, dubheSchemaId } = useContract();
38
+ const { contract, graphqlClient, ecsWorld, network, address, dubheSchemaId } = useDubhe();
38
39
 
39
40
  /**
40
41
  * Discover available tables and components
@@ -137,7 +138,7 @@ export default function Home() {
137
138
 
138
139
  const result = await ecsWorld.getResources(resourceType, {
139
140
  limit: 10,
140
- orderBy: [{ field: 'createdAt', direction: 'DESC' }]
141
+ orderBy: [{ field: 'createdAtTimestampMs', direction: 'DESC' }]
141
142
  });
142
143
  setResourceData(result.items || []);
143
144
  setResourceTotalCount(result.totalCount || 0);
@@ -162,7 +163,7 @@ export default function Home() {
162
163
 
163
164
  const result = await graphqlClient.getAllTables(tableName, {
164
165
  first: 10,
165
- orderBy: [{ field: 'createdAt', direction: 'DESC' }]
166
+ orderBy: [{ field: 'createdAtTimestampMs', direction: 'DESC' }]
166
167
  });
167
168
  console.log('result', result);
168
169
 
@@ -0,0 +1,40 @@
1
+ 'use client';
2
+
3
+ import contractMetadata from 'contracts/metadata.json';
4
+ import dubheMetadata from 'contracts/dubhe.config.json';
5
+ import { DUBHE_SCHEMA_ID, PACKAGE_ID, NETWORK } from 'contracts/deployment';
6
+
7
+ import { SuiMoveNormalizedModules } from '@0xobelisk/sui-client';
8
+ import { DubheProvider, DubheConfig } from '@0xobelisk/react/sui';
9
+
10
+ import { Toaster } from 'sonner';
11
+
12
+ const DUBHE_CONFIG: DubheConfig = {
13
+ network: NETWORK,
14
+ packageId: PACKAGE_ID,
15
+ dubheSchemaId: DUBHE_SCHEMA_ID,
16
+ credentials: {
17
+ secretKey: process.env.NEXT_PUBLIC_PRIVATE_KEY
18
+ },
19
+ metadata: contractMetadata as SuiMoveNormalizedModules,
20
+ dubheMetadata,
21
+ endpoints: {
22
+ graphql: 'http://localhost:4000/graphql',
23
+ websocket: 'ws://localhost:4000/graphql'
24
+ },
25
+ options: {
26
+ enableBatchOptimization: true,
27
+ cacheTimeout: 3000,
28
+ debounceMs: 100,
29
+ reconnectOnError: true
30
+ }
31
+ };
32
+
33
+ export function Providers({ children }: { children: React.ReactNode }) {
34
+ return (
35
+ <DubheProvider config={DUBHE_CONFIG}>
36
+ {children}
37
+ <Toaster />
38
+ </DubheProvider>
39
+ );
40
+ }
@@ -9,7 +9,8 @@
9
9
  "noEmit": true,
10
10
  "esModuleInterop": true,
11
11
  "module": "esnext",
12
- "moduleResolution": "node",
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
13
14
  "resolveJsonModule": true,
14
15
  "isolatedModules": true,
15
16
  "jsx": "preserve",
@@ -1,5 +1,5 @@
1
1
  type NetworkType = 'testnet' | 'mainnet' | 'devnet' | 'localnet';
2
2
 
3
3
  export const NETWORK: NetworkType = 'localnet';
4
- export const PACKAGE_ID = '0x0ca6c2ae2524851fa389c3213435a0c835d08e21c4ecd9c08decfd3d5635f45c';
5
- export const DUBHE_SCHEMA_ID = '0xf6ba619c2f5aab287194c6c57c82b20686333b5422d350943972a1cedb1e0f40';
4
+ export const PACKAGE_ID = '0xe1dff4828d09c09ae8ec227055a16dbcd3ea3dc09a3dc5e462652abca8996fa1';
5
+ export const DUBHE_SCHEMA_ID = '0x07044fd6649fffe9d4299cf586c704ee0e7d91b1843bb4003d6cd39f32134a79';
@@ -41,9 +41,40 @@
41
41
  "keys": [],
42
42
  "offchain": false
43
43
  }
44
+ },
45
+ {
46
+ "dapp_fee_state": {
47
+ "fields": [
48
+ {
49
+ "dapp_key": "String"
50
+ },
51
+ {
52
+ "base_fee": "u256"
53
+ },
54
+ {
55
+ "byte_fee": "u256"
56
+ },
57
+ {
58
+ "free_credit": "u256"
59
+ },
60
+ {
61
+ "total_bytes_size": "u256"
62
+ },
63
+ {
64
+ "total_recharged": "u256"
65
+ },
66
+ {
67
+ "total_paid": "u256"
68
+ }
69
+ ],
70
+ "keys": [
71
+ "dapp_key"
72
+ ],
73
+ "offchain": false
74
+ }
44
75
  }
45
76
  ],
46
77
  "enums": [],
47
- "package_id": "0x0ca6c2ae2524851fa389c3213435a0c835d08e21c4ecd9c08decfd3d5635f45c",
48
- "start_checkpoint": "141"
78
+ "package_id": "0xe1dff4828d09c09ae8ec227055a16dbcd3ea3dc09a3dc5e462652abca8996fa1",
79
+ "start_checkpoint": "139"
49
80
  }