@0xobelisk/sui-cli 0.5.21 → 0.5.22

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.
package/dist/dubhe.js CHANGED
@@ -20,7 +20,7 @@ import Ne from"yargs";import{hideBin as Re}from"yargs/helpers";import{Dubhe as r
20
20
  \u274C Node Status: Not Running`)),console.log(c.yellow(`
21
21
  \u{1F4A1} Quick Start:`)),console.log(c.yellow(" \u2514\u2500 Run `dubhe localnode start`")))}catch{console.log(c.red(`
22
22
  \u274C Node Status: Not Running`)),console.log(c.yellow(`
23
- \u{1F4A1} Quick Start:`)),console.log(c.yellow(" \u2514\u2500 Run `obelisk localnode start`"))}}import{execSync as D}from"child_process";async function w(){console.log("Stopping local node...");try{let e=process.platform==="win32"?'tasklist /FI "IMAGENAME eq sui.exe" /FO CSV /NH':"ps aux | grep '[s]ui start --with-faucet --force-regenesis'",o=D(e,{encoding:"utf8"});if(!o){console.log("No running local node process found");return}let t;if(process.platform==="win32"){let s=o.match(/"sui\.exe",["']?(\d+)/i);t=s?s[1]:null}else t=o.toString().split(/\s+/)[1];if(!t){console.log("No running local node process found");return}process.platform==="win32"?D(`taskkill /PID ${t} /F`):process.kill(Number(t)),console.log("\u2705 Local node stopped successfully")}catch(e){e.code==="ESRCH"||e.message.includes("no running tasks")?console.log("No running local node process found"):console.error("\u274C Error stopping local node:",e.message)}}function x(e){if(e.startsWith(ne))return e.length===70?e:!1;if(e.startsWith("0x")){let o=e.slice(2);return o.length===64?o:!1}else return e.length===64?e:!1}function O(e,o,t,s,u,d){let i={projectName:e,network:o,packageId:t,schemas:s,upgradeCap:u,version:d},m=process.cwd(),l=JSON.stringify(i,null,2);se(l,`${m}/contracts/${e}/.history/sui_${o}/latest.json`,"Update deploy log")}async function se(e,o,t){ee(te(o),{recursive:!0}),oe(o,e),t!==void 0&&console.log(`${t}: ${o}`)}async function le(e){switch(e){case"testnet":return"0xa66942c08d9fc318a70ab9d0cfd7e75f1a2dd1ac31aff12fde008d25bfa9604b";default:return"0xa66942c08d9fc318a70ab9d0cfd7e75f1a2dd1ac31aff12fde008d25bfa9604b"}}async function F(e,o,t){console.log(`
23
+ \u{1F4A1} Quick Start:`)),console.log(c.yellow(" \u2514\u2500 Run `obelisk localnode start`"))}}import{execSync as D}from"child_process";async function w(){console.log("Stopping local node...");try{let e=process.platform==="win32"?'tasklist /FI "IMAGENAME eq sui.exe" /FO CSV /NH':"ps aux | grep '[s]ui start --with-faucet --force-regenesis'",o=D(e,{encoding:"utf8"});if(!o){console.log("No running local node process found");return}let t;if(process.platform==="win32"){let s=o.match(/"sui\.exe",["']?(\d+)/i);t=s?s[1]:null}else t=o.toString().split(/\s+/)[1];if(!t){console.log("No running local node process found");return}process.platform==="win32"?D(`taskkill /PID ${t} /F`):process.kill(Number(t)),console.log("\u2705 Local node stopped successfully")}catch(e){e.code==="ESRCH"||e.message.includes("no running tasks")?console.log("No running local node process found"):console.error("\u274C Error stopping local node:",e.message)}}function x(e){if(e.startsWith(ne))return e.length===70?e:!1;if(e.startsWith("0x")){let o=e.slice(2);return o.length===64?o:!1}else return e.length===64?e:!1}function O(e,o,t,s,u,d){let i={projectName:e,network:o,packageId:t,schemas:s,upgradeCap:u,version:d},m=process.cwd(),l=JSON.stringify(i,null,2);se(l,`${m}/contracts/${e}/.history/sui_${o}/latest.json`,"Update deploy log")}async function se(e,o,t){ee(te(o),{recursive:!0}),oe(o,e),t!==void 0&&console.log(`${t}: ${o}`)}async function le(e){switch(e){case"testnet":return"0x92c78ef688a5cb7f6a9f18e76d1da927e26281c367564ffbe5f886ec06434f08";default:return"0x92c78ef688a5cb7f6a9f18e76d1da927e26281c367564ffbe5f886ec06434f08"}}async function F(e,o,t){console.log(`
24
24
  \u{1F680} Starting Contract Publication...`),console.log(` \u251C\u2500 Project: ${e}`),console.log(` \u251C\u2500 Network: ${o}`);let u=`${process.cwd()}/contracts/${e}`;t=t||await le(o),console.log(" \u251C\u2500 Validating Environment...");let d=process.env.PRIVATE_KEY;if(!d)throw new a(`Missing PRIVATE_KEY environment variable.
25
25
  Run 'echo "PRIVATE_KEY=YOUR_PRIVATE_KEY" > .env'
26
26
  in your contracts directory to use the default sui private key.`);let i=x(d);if(i===!1)throw new a("Please check your privateKey.");let l=new re({secretKey:i}).getKeypair();console.log(` \u2514\u2500 Account: ${l.toSuiAddress()}`);let k=new ce({url:ae(o)});console.log(`
package/dist/dubhe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dubhe.ts","../src/utils/publishHandler.ts","../src/utils/errors.ts","../src/utils/utils.ts","../src/utils/localnode/start.ts","../src/utils/localnode/status.ts","../src/utils/localnode/stop.ts","../src/utils/printDubhe.ts","../src/commands/localnode.ts","../src/commands/faucet.ts","../src/commands/schemagen.ts","../src/commands/publish.ts","../src/commands/test.ts","../src/commands/hello.ts","../src/commands/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { commands } from \"./commands\";\nimport { logError } from \"./utils/errors\";\n\n// Load .env file into process.env\nimport * as dotenv from \"dotenv\";\nimport chalk from \"chalk\";\ndotenv.config();\n\nyargs(hideBin(process.argv))\n // Explicit name to display in help (by default it's the entry file, which may not be \"dubhe\" for e.g. ts-node)\n .scriptName(\"dubhe\")\n // Use the commands directory to scaffold\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- command array overload isn't typed, see https://github.com/yargs/yargs/blob/main/docs/advanced.md#esm-hierarchy\n .command(commands as any)\n // Enable strict mode.\n .strict()\n // Custom error handler\n .fail((msg, err) => {\n console.error(chalk.red(msg));\n if (msg.includes(\"Missing required argument\")) {\n console.log(\n chalk.yellow(`Run 'pnpm dubhe ${process.argv[2]} --help' for a list of available and required arguments.`)\n );\n }\n console.log(\"\");\n logError(err);\n console.log(\"\");\n\n process.exit(1);\n })\n // Useful aliases.\n .alias({ h: \"help\" }).argv;\n","import { Dubhe } from '@0xobelisk/sui-client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport {\n\tgetFullnodeUrl,\n\tSuiClient,\n\tSuiTransactionBlockResponse,\n} from '@mysten/sui/client';\nimport { execSync } from 'child_process';\nimport chalk from 'chalk';\nimport { DubheCliError } from './errors';\nimport {\n\tupdateVersionInFile,\n\tsaveContractData,\n\tvalidatePrivateKey,\n\tschema,\n} from './utils';\n\nasync function getDappsObjectId(\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n\tswitch (network) {\n\t\tcase 'testnet':\n\t\t\treturn '0xa66942c08d9fc318a70ab9d0cfd7e75f1a2dd1ac31aff12fde008d25bfa9604b';\n\t\tdefault:\n\t\t\treturn '0xa66942c08d9fc318a70ab9d0cfd7e75f1a2dd1ac31aff12fde008d25bfa9604b';\n\t}\n}\n\nexport async function publishHandler(\n\tname: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tdappsObjectId?: string\n) {\n\tconsole.log('\\nšŸš€ Starting Contract Publication...');\n\tconsole.log(` ā”œā”€ Project: ${name}`);\n\tconsole.log(` ā”œā”€ Network: ${network}`);\n\n\tconst path = process.cwd();\n\tconst projectPath = `${path}/contracts/${name}`;\n\tdappsObjectId = dappsObjectId || (await getDappsObjectId(network));\n\n\tconsole.log(' ā”œā”€ Validating Environment...');\n\tconst privateKey = process.env.PRIVATE_KEY;\n\tif (!privateKey) {\n\t\tthrow new DubheCliError(\n\t\t\t`Missing PRIVATE_KEY environment variable.\nRun 'echo \"PRIVATE_KEY=YOUR_PRIVATE_KEY\" > .env'\nin your contracts directory to use the default sui private key.`\n\t\t);\n\t}\n\n\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\tif (privateKeyFormat === false) {\n\t\tthrow new DubheCliError(`Please check your privateKey.`);\n\t}\n\n\tconst dubhe = new Dubhe({ secretKey: privateKeyFormat });\n\tconst keypair = dubhe.getKeypair();\n\tconsole.log(` └─ Account: ${keypair.toSuiAddress()}`);\n\n\tconst client = new SuiClient({ url: getFullnodeUrl(network) });\n\n\tconsole.log('\\nšŸ“¦ Building Contract...');\n\tlet modules: any, dependencies: any;\n\ttry {\n\t\tconst buildResult = JSON.parse(\n\t\t\texecSync(\n\t\t\t\t`sui move build --dump-bytecode-as-base64 --path ${projectPath}`,\n\t\t\t\t{\n\t\t\t\t\tencoding: 'utf-8',\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tmodules = buildResult.modules;\n\t\tdependencies = buildResult.dependencies;\n\t\tconsole.log(' └─ Build successful');\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(' └─ Build failed'));\n\t\tconsole.error(error.stdout);\n\t\tprocess.exit(1);\n\t}\n\n\tconsole.log('\\nšŸ”„ Publishing Contract...');\n\tconst tx = new Transaction();\n\tconst [upgradeCap] = tx.publish({ modules, dependencies });\n\ttx.transferObjects([upgradeCap], keypair.toSuiAddress());\n\n\tlet result: SuiTransactionBlockResponse;\n\ttry {\n\t\tresult = await client.signAndExecuteTransaction({\n\t\t\tsigner: keypair,\n\t\t\ttransaction: tx,\n\t\t\toptions: { showObjectChanges: true },\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(' └─ Publication failed'));\n\t\tconsole.error(error.message);\n\t\tprocess.exit(1);\n\t}\n\n\tif (result.effects?.status.status === 'failure') {\n\t\tconsole.log(chalk.red(' └─ Publication failed'));\n\t\tprocess.exit(1);\n\t}\n\n\tconsole.log(' ā”œā”€ Processing publication results...');\n\tlet version = 1;\n\tlet packageId = '';\n\tlet schemas: schema[] = [];\n\tlet upgradeCapId = '';\n\n\tresult.objectChanges!.map(object => {\n\t\tif (object.type === 'published') {\n\t\t\tconsole.log(` ā”œā”€ Package ID: ${object.packageId}`);\n\t\t\tpackageId = object.packageId;\n\t\t}\n\t\tif (\n\t\t\tobject.type === 'created' &&\n\t\t\tobject.objectType === '0x2::package::UpgradeCap'\n\t\t) {\n\t\t\tconsole.log(` ā”œā”€ Upgrade Cap: ${object.objectId}`);\n\t\t\tupgradeCapId = object.objectId;\n\t\t}\n\t});\n\n\tconsole.log(` └─ Transaction: ${result.digest}`);\n\n\tconsole.log('\\n⚔ Executing Deploy Hook...');\n\tawait new Promise(resolve => setTimeout(resolve, 5000));\n\n\tconst deployHookTx = new Transaction();\n\tdeployHookTx.moveCall({\n\t\ttarget: `${packageId}::deploy_hook::run`,\n\t\targuments: [\n\t\t\tdeployHookTx.object(dappsObjectId),\n\t\t\tdeployHookTx.object('0x6'),\n\t\t],\n\t});\n\n\tlet deployHookResult: SuiTransactionBlockResponse;\n\ttry {\n\t\tdeployHookResult = await client.signAndExecuteTransaction({\n\t\t\tsigner: keypair,\n\t\t\ttransaction: deployHookTx,\n\t\t\toptions: { showEffects: true, showObjectChanges: true },\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(' └─ Deploy hook execution failed'));\n\t\tconsole.error(error.message);\n\t\tprocess.exit(1);\n\t}\n\n\tif (deployHookResult.effects?.status.status === 'success') {\n\t\tconsole.log(' ā”œā”€ Hook execution successful');\n\t\tconsole.log(` ā”œā”€ Transaction: ${deployHookResult.digest}`);\n\n\t\tconsole.log('\\nšŸ“‹ Created Schemas:');\n\t\tdeployHookResult.objectChanges?.map(object => {\n\t\t\tif (\n\t\t\t\tobject.type === 'created' &&\n\t\t\t\tobject.objectType.includes('schema')\n\t\t\t) {\n\t\t\t\tconsole.log(` ā”œā”€ ${object.objectType}`);\n\t\t\t\tconsole.log(` └─ ID: ${object.objectId}`);\n\t\t\t\tschemas.push({\n\t\t\t\t\tname: object.objectType,\n\t\t\t\t\tobjectId: object.objectId,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tsaveContractData(\n\t\t\tname,\n\t\t\tnetwork,\n\t\t\tpackageId,\n\t\t\tschemas,\n\t\t\tupgradeCapId,\n\t\t\tversion\n\t\t);\n\t\tconsole.log('\\nāœ… Contract Publication Complete\\n');\n\t} else {\n\t\tconsole.log(chalk.yellow(' └─ Deploy hook execution failed'));\n\t\tconsole.log(\n\t\t\tchalk.yellow(\n\t\t\t\t' Please republish or manually call deploy_hook::run'\n\t\t\t)\n\t\t);\n\t}\n}\n","import chalk from \"chalk\";\nimport { ZodError } from \"zod\";\nimport { fromZodError, ValidationError } from \"zod-validation-error\";\n\nexport class NotInsideProjectError extends Error {\n name = \"NotInsideProjectError\";\n message = \"You are not inside a Dubhe project\";\n}\n\nexport class DubheCliError extends Error {\n name = \"DubheCliError\";\n}\n\nexport class UpgradeError extends Error {\n name = \"UpgradeError\";\n}\n\nexport class FsIibError extends Error {\n name = \"FsIibError\";\n}\n\nexport function logError(error: unknown) {\n if (error instanceof ValidationError) {\n console.log(chalk.redBright(error.message));\n } else if (error instanceof ZodError) {\n // TODO currently this error shouldn't happen, use `fromZodErrorCustom`\n const validationError = fromZodError(error, {\n prefixSeparator: \"\\n- \",\n issueSeparator: \"\\n- \",\n });\n console.log(chalk.redBright(validationError.message));\n } else if (error instanceof NotInsideProjectError) {\n console.log(chalk.red(error.message));\n console.log(\"\");\n // TODO add docs to the website and update the link to the specific page\n console.log(\n chalk.blue(\n `To learn more about Dubhe's configuration, please go to https://github.com/0xobelisk`\n )\n );\n } else if (error instanceof DubheCliError) {\n console.log(chalk.red(error));\n } else {\n console.log(error);\n }\n}\n","import * as fsAsync from 'fs/promises';\nimport { mkdirSync, writeFileSync } from 'fs';\nimport { dirname } from 'path';\nimport { SUI_PRIVATE_KEY_PREFIX } from '@mysten/sui/cryptography';\nimport { FsIibError } from './errors';\nexport * from './localnode';\n\nexport type schema = {\n\tname: string;\n\tobjectId: string;\n};\n\nexport type DeploymentJsonType = {\n\tprojectName: string;\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\tpackageId: string;\n\tschemas: schema[];\n\tupgradeCap: string;\n\tversion: number;\n};\n\nexport function validatePrivateKey(privateKey: string): false | string {\n\tif (privateKey.startsWith(SUI_PRIVATE_KEY_PREFIX)) {\n\t\tif (privateKey.length === 70) {\n\t\t\treturn privateKey;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else if (privateKey.startsWith('0x')) {\n\t\tconst strippedPrivateKey = privateKey.slice(2);\n\t\tif (strippedPrivateKey.length === 64) {\n\t\t\treturn strippedPrivateKey;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tif (privateKey.length === 64) {\n\t\t\treturn privateKey;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nexport async function updateVersionInFile(\n\tprojectPath: string,\n\tnewVersion: string\n) {\n\ttry {\n\t\tconst filePath = `${projectPath}/sources/script/migrate.move`;\n\t\tconst data = await fsAsync.readFile(filePath, 'utf8');\n\n\t\t// update version data\n\t\tconst updatedData = data.replace(\n\t\t\t/const VERSION: u64 = \\d+;/,\n\t\t\t`const VERSION: u64 = ${newVersion};`\n\t\t);\n\n\t\t// write new version\n\t\twriteOutput(updatedData, filePath, 'Update package version');\n\t} catch {\n\t\tthrow new FsIibError('Fs update version failed.');\n\t}\n}\n\nasync function getDeploymentJson(projectPath: string, network: string) {\n\ttry {\n\t\tconst data = await fsAsync.readFile(\n\t\t\t`${projectPath}/.history/sui_${network}/latest.json`,\n\t\t\t'utf8'\n\t\t);\n\t\treturn JSON.parse(data) as DeploymentJsonType;\n\t} catch {\n\t\tthrow new FsIibError('Fs read deployment file failed.');\n\t}\n}\n\nexport async function getVersion(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<number> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.version;\n}\n\nexport async function getNetwork(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<'mainnet' | 'testnet' | 'devnet' | 'localnet'> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.network;\n}\n\nexport async function getOldPackageId(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.packageId;\n}\n\nexport async function getUpgradeCap(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.upgradeCap;\n}\n\nexport async function getObjectIdBySchemaName(\n\tprojectPath: string,\n\tnetwork: string,\n\tschemaName: string\n): Promise<string | undefined> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.schemas.find(schema => schema.name.includes(schemaName))\n\t\t?.objectId;\n}\n\nexport function saveContractData(\n\tprojectName: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tpackageId: string,\n\tschemas: schema[],\n\tupgradeCap: string,\n\tversion: number\n) {\n\tconst DeploymentData: DeploymentJsonType = {\n\t\tprojectName,\n\t\tnetwork,\n\t\tpackageId,\n\t\tschemas,\n\t\tupgradeCap,\n\t\tversion,\n\t};\n\n\tconst path = process.cwd();\n\tconst storeDeploymentData = JSON.stringify(DeploymentData, null, 2);\n\twriteOutput(\n\t\tstoreDeploymentData,\n\t\t`${path}/contracts/${projectName}/.history/sui_${network}/latest.json`,\n\t\t'Update deploy log'\n\t);\n}\n\nexport async function writeOutput(\n\toutput: string,\n\tfullOutputPath: string,\n\tlogPrefix?: string\n): Promise<void> {\n\tmkdirSync(dirname(fullOutputPath), { recursive: true });\n\n\twriteFileSync(fullOutputPath, output);\n\tif (logPrefix !== undefined) {\n\t\tconsole.log(`${logPrefix}: ${fullOutputPath}`);\n\t}\n}\n","import { execSync, spawn } from 'child_process';\nimport chalk from 'chalk';\n\nfunction isSuiStartRunning(): boolean {\n\ttry {\n\t\tconst cmd =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? `tasklist /FI \"IMAGENAME eq sui.exe\" /FO CSV /NH`\n\t\t\t\t: 'pgrep -f \"sui start\"';\n\n\t\tconst result = execSync(cmd).toString().trim();\n\t\treturn process.platform === 'win32'\n\t\t\t? result.toLowerCase().includes('sui.exe')\n\t\t\t: result.length > 0;\n\t} catch (error) {\n\t\treturn false;\n\t}\n}\n\nexport async function startLocalnode(background: boolean = false) {\n\tconsole.log('\\nšŸ” Checking Local Node Status...');\n\tconsole.log(' ā”œā”€ Scanning running processes');\n\n\tif (isSuiStartRunning()) {\n\t\tconsole.log(chalk.yellow('\\nāš ļø Warning: Local Node Already Running'));\n\t\tconsole.log(chalk.yellow(' ā”œā”€ Cannot start a new instance'));\n\t\tconsole.log(\n\t\t\tchalk.yellow(' └─ Please stop the existing process first')\n\t\t);\n\t\treturn;\n\t}\n\n\tconsole.log('\\nšŸš€ Starting Local Node...');\n\tconsole.log(' ā”œā”€ Mode: ' + (background ? 'Background' : 'Foreground'));\n\tconsole.log(' ā”œā”€ Faucet: Enabled');\n\tconsole.log(' └─ Force Regenesis: Yes');\n\n\ttry {\n\t\tconst suiProcess = spawn(\n\t\t\t'sui',\n\t\t\t['start', '--with-faucet', '--force-regenesis'],\n\t\t\t{\n\t\t\t\tenv: { ...process.env, RUST_LOG: 'off,sui_node=info' },\n\t\t\t\tstdio: background ? 'ignore' : 'inherit',\n\t\t\t\tdetached: background,\n\t\t\t}\n\t\t);\n\n\t\tsuiProcess.on('error', error => {\n\t\t\tconsole.error(chalk.red('\\nāŒ Failed to Start Local Node'));\n\t\t\tconsole.error(chalk.red(` └─ Error: ${error.message}`));\n\t\t});\n\n\t\tif (!background) {\n\t\t\tsuiProcess.on('exit', code => {\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tconsole.log(chalk.green('\\nāœ… Local Node Stopped'));\n\t\t\t\t\tconsole.log(chalk.green(' └─ Exit Status: Normal'));\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(chalk.red('\\nāŒ Local Node Crashed'));\n\t\t\t\t\tconsole.error(chalk.red(` └─ Exit Code: ${code}`));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconsole.log(chalk.cyan('\\nšŸ“” Local Node Running'));\n\t\t\tconsole.log(chalk.cyan(' └─ Press Ctrl+C to stop'));\n\n\t\t\tawait new Promise(() => {});\n\t\t} else {\n\t\t\tsuiProcess.unref();\n\t\t\tconsole.log(chalk.green('\\nāœ… Local Node Started in Background'));\n\n\t\t\tif (process.platform === 'win32') {\n\t\t\t\tconsole.log('\\nšŸ’” Helpful Commands:');\n\t\t\t\tconsole.log(' ā”œā”€ Check Process: tasklist | findstr sui.exe');\n\t\t\t\tconsole.log(' └─ Stop Node: taskkill /PID <process_id> /F');\n\t\t\t} else {\n\t\t\t\tconsole.log('\\nšŸ’” Helpful Commands:');\n\t\t\t\tconsole.log(\" ā”œā”€ Check Process: pgrep -f 'sui start'\");\n\t\t\t\tconsole.log(' └─ Stop Node: kill <process_id>');\n\t\t\t}\n\t\t}\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red('\\nāŒ Failed to Start Local Node'));\n\t\tconsole.error(chalk.red(` └─ Error: ${error.message}`));\n\t}\n}\n","import { execSync } from 'child_process';\nimport chalk from 'chalk';\n\nexport async function checkLocalNodeStatus() {\n\tconsole.log('\\nšŸ” Checking Local Node Status...');\n\n\ttry {\n\t\tconst cmd =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? `tasklist /FI \"IMAGENAME eq sui.exe\" /FO CSV /NH`\n\t\t\t\t: \"ps aux | grep '[s]ui start --with-faucet --force-regenesis'\";\n\n\t\tconst output = execSync(cmd, {\n\t\t\tencoding: 'utf8',\n\t\t});\n\n\t\tconst isRunning =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? output.toLowerCase().includes('sui.exe')\n\t\t\t\t: output.split('\\n').filter(Boolean).length > 0;\n\n\t\tif (isRunning) {\n\t\t\tconsole.log(chalk.green('\\nāœ… Node Status: Running'));\n\t\t\tconsole.log(chalk.gray('\\nšŸ“Š Process Details:'));\n\t\t\tconsole.log(chalk.gray(` └─ ${output.trim()}`));\n\t\t} else {\n\t\t\tconsole.log(chalk.red('\\nāŒ Node Status: Not Running'));\n\t\t\tconsole.log(chalk.yellow('\\nšŸ’” Quick Start:'));\n\t\t\tconsole.log(chalk.yellow(' └─ Run `dubhe localnode start`'));\n\t\t}\n\t} catch (error) {\n\t\tconsole.log(chalk.red('\\nāŒ Node Status: Not Running'));\n\t\tconsole.log(chalk.yellow('\\nšŸ’” Quick Start:'));\n\t\tconsole.log(chalk.yellow(' └─ Run `obelisk localnode start`'));\n\t}\n}\n\n// checkLocalNodeStatus();\n","import { execSync } from 'child_process';\n\nexport async function stopLocalnode() {\n\tconsole.log('Stopping local node...');\n\n\ttry {\n\t\t// Choose different commands based on the operating system\n\t\tconst cmd =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? `tasklist /FI \"IMAGENAME eq sui.exe\" /FO CSV /NH`\n\t\t\t\t: \"ps aux | grep '[s]ui start --with-faucet --force-regenesis'\";\n\n\t\tconst output = execSync(cmd, {\n\t\t\tencoding: 'utf8',\n\t\t});\n\n\t\tif (!output) {\n\t\t\tconsole.log('No running local node process found');\n\t\t\treturn;\n\t\t}\n\n\t\t// Parse process ID based on the operating system\n\t\tlet pid;\n\t\tif (process.platform === 'win32') {\n\t\t\t// Windows output format: \"sui.exe\",\"1234\",... (CSV format)\n\t\t\tconst match = output.match(/\"sui\\.exe\",[\"']?(\\d+)/i);\n\t\t\tpid = match ? match[1] : null;\n\t\t} else {\n\t\t\t// Unix system output format: user pid %cpu ...\n\t\t\tpid = output.toString().split(/\\s+/)[1];\n\t\t}\n\n\t\tif (!pid) {\n\t\t\tconsole.log('No running local node process found');\n\t\t\treturn;\n\t\t}\n\n\t\t// Choose the command to terminate the process based on the operating system\n\t\tif (process.platform === 'win32') {\n\t\t\texecSync(`taskkill /PID ${pid} /F`);\n\t\t} else {\n\t\t\tprocess.kill(Number(pid));\n\t\t}\n\n\t\tconsole.log('āœ… Local node stopped successfully');\n\t} catch (error: any) {\n\t\tif (\n\t\t\terror.code === 'ESRCH' ||\n\t\t\terror.message.includes('no running tasks')\n\t\t) {\n\t\t\tconsole.log('No running local node process found');\n\t\t} else {\n\t\t\tconsole.error('āŒ Error stopping local node:', error.message);\n\t\t}\n\t}\n}\n\n// stopLocalnode();\n","import chalk from \"chalk\";\n\nexport function printDubhe() {\n console.log(\n chalk.yellow(`\nWelcome to Dubhe\n\\t\\t\\t --from team@obelisk\n ________ ___ ___ ________ ___ ___ _______ \n |\\\\ ___ \\\\|\\\\ \\\\|\\\\ \\\\|\\\\ __ \\\\|\\\\ \\\\|\\\\ \\\\|\\\\ ___ \\\\ \n \\\\ \\\\ \\\\_|\\\\ \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ \\\\|\\\\ /\\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ __/| \n \\\\ \\\\ \\\\ \\\\\\\\ \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ __ \\\\ \\\\ __ \\\\ \\\\ \\\\_|/__ \n \\\\ \\\\ \\\\_\\\\\\\\ \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ \\\\|\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\_|\\\\ \\\\ \n \\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\__\\\\ \\\\__\\\\ \\\\_______\\\\\n \\\\|_______|\\\\|_______|\\\\|_______|\\\\|__|\\\\|__|\\\\|_______| \n \n`)\n );\n}\n","import type { CommandModule } from 'yargs';\nimport { startLocalnode, stopLocalnode, checkLocalNodeStatus } from '../utils';\n\nconst commandModule: CommandModule = {\n\tcommand: 'localnode <action>',\n\n\tdescribe: 'Manage local Sui node',\n\n\tbuilder(yargs) {\n\t\treturn yargs\n\t\t\t.positional('action', {\n\t\t\t\tdescribe: 'Action to perform',\n\t\t\t\tchoices: ['start', 'stop', 'status', 'restart'],\n\t\t\t\ttype: 'string',\n\t\t\t\tdemandOption: true,\n\t\t\t})\n\t\t\t.option('background', {\n\t\t\t\talias: 'b',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdescription: 'Run node in background',\n\t\t\t\tdefault: false,\n\t\t\t});\n\t},\n\n\tasync handler(argv) {\n\t\tconst { action, background } = argv;\n\n\t\ttry {\n\t\t\tswitch (action) {\n\t\t\t\tcase 'start':\n\t\t\t\t\tawait startLocalnode(background as boolean);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'stop':\n\t\t\t\t\tawait stopLocalnode();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'status':\n\t\t\t\t\tawait checkLocalNodeStatus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'restart':\n\t\t\t\t\tawait restartNode(background as boolean);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Error executing command:', error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t},\n};\n\nasync function restartNode(background: boolean) {\n\tconsole.log('Restarting local Sui node...');\n\tawait stopLocalnode();\n\tawait startLocalnode(background);\n\tconsole.log('Local node has been restarted');\n}\n\nexport default commandModule;\n","import { Dubhe } from '@0xobelisk/sui-client';\nimport type { CommandModule } from 'yargs';\nimport { requestSuiFromFaucetV0, getFaucetHost } from '@mysten/sui/faucet';\nimport {\n\tSuiClient,\n\tgetFullnodeUrl,\n\tGetBalanceParams,\n} from '@mysten/sui/client';\nimport { validatePrivateKey, DubheCliError } from '../utils';\n\ntype Options = {\n\tnetwork: any;\n\trecipient?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n\tcommand: 'faucet',\n\n\tdescribe: 'Interact with a Dubhe faucet',\n\n\tbuilder(yargs) {\n\t\treturn yargs.options({\n\t\t\tnetwork: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdesc: 'URL of the Dubhe faucet',\n\t\t\t\tchoices: ['testnet', 'devnet', 'localnet'],\n\t\t\t\tdefault: 'localnet',\n\t\t\t},\n\t\t\trecipient: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdesc: 'Sui address to fund',\n\t\t\t},\n\t\t});\n\t},\n\n\tasync handler({ network, recipient }) {\n\t\tlet faucet_address = '';\n\t\tif (recipient === undefined) {\n\t\t\tconst privateKey = process.env.PRIVATE_KEY;\n\t\t\tif (!privateKey)\n\t\t\t\tthrow new DubheCliError(\n\t\t\t\t\t`Missing PRIVATE_KEY environment variable.\n Run 'echo \"PRIVATE_KEY=YOUR_PRIVATE_KEY\" > .env'\n in your contracts directory to use the default sui private key.`\n\t\t\t\t);\n\n\t\t\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\t\t\tif (privateKeyFormat === false) {\n\t\t\t\tthrow new DubheCliError(`Please check your PRIVATE_KEY.`);\n\t\t\t}\n\t\t\tconst dubhe = new Dubhe({\n\t\t\t\tsecretKey: privateKeyFormat,\n\t\t\t});\n\t\t\tconst keypair = dubhe.getKeypair();\n\t\t\tfaucet_address = keypair.toSuiAddress();\n\t\t} else {\n\t\t\tfaucet_address = recipient;\n\t\t}\n\n\t\tconsole.log('\\n🌊 Starting Faucet Operation...');\n\t\tconsole.log(` ā”œā”€ Network: ${network}`);\n\n\t\tif (recipient === undefined) {\n\t\t\tconsole.log(' ā”œā”€ Using Environment PrivateKey');\n\t\t\tconsole.log(` ā”œā”€ Generated Address: ${faucet_address}`);\n\t\t} else {\n\t\t\tconsole.log(` ā”œā”€ Using Provided Address: ${faucet_address}`);\n\t\t}\n\n\t\tconsole.log(' ā”œā”€ Requesting funds from faucet...');\n\t\tawait requestSuiFromFaucetV0({\n\t\t\thost: getFaucetHost(network),\n\t\t\trecipient: faucet_address,\n\t\t});\n\n\t\tconsole.log(' └─ Checking balance...');\n\t\tconst client = new SuiClient({ url: getFullnodeUrl(network) });\n\t\tlet params = {\n\t\t\towner: faucet_address,\n\t\t} as GetBalanceParams;\n\n\t\tconst balance = await client.getBalance(params);\n\n\t\tconsole.log('\\nšŸ’° Account Summary');\n\t\tconsole.log(` ā”œā”€ Address: ${faucet_address}`);\n\t\tconsole.log(\n\t\t\t` └─ Balance: ${(\n\t\t\t\tNumber(balance.totalBalance) / 1_000_000_000\n\t\t\t).toFixed(4)} SUI`\n\t\t);\n\n\t\tconsole.log('\\nāœ… Faucet Operation Complete\\n');\n\t\tprocess.exit(0);\n\t},\n};\n\nexport default commandModule;\n","import type { CommandModule } from 'yargs';\nimport { schemaGen, loadConfig, DubheConfig } from '@0xobelisk/sui-common';\nimport chalk from 'chalk';\n\ntype Options = {\n\tconfigPath?: string;\n\tnetwork?: 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\tframeworkId?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n\tcommand: 'schemagen',\n\n\tdescribe: 'Autogenerate Dubhe schemas based on the config file',\n\n\tbuilder: {\n\t\tconfigPath: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'dubhe.config.ts',\n\t\t\tdesc: 'Path to the config file',\n\t\t},\n\t\tnetwork: {\n\t\t\ttype: 'string',\n\t\t\tchoices: ['mainnet', 'testnet', 'devnet', 'localnet'] as const,\n\t\t\tdesc: 'Node network (mainnet/testnet/devnet/localnet)',\n\t\t},\n\t\tframeworkId: {\n\t\t\ttype: 'string',\n\t\t\tdesc: 'Framework Package ID',\n\t\t},\n\t},\n\n\tasync handler({ configPath, network, frameworkId }) {\n\t\ttry {\n\t\t\tconst dubheConfig = (await loadConfig(\n\t\t\t\tconfigPath\n\t\t\t)) as DubheConfig;\n\t\t\tawait schemaGen(dubheConfig, undefined, network, frameworkId);\n\t\t\tprocess.exit(0);\n\t\t} catch (error: any) {\n\t\t\tconsole.log(chalk.red('Schemagen failed!'));\n\t\t\tconsole.error(error.message);\n\t\t}\n\t},\n};\n\nexport default commandModule;\n","import type { CommandModule } from 'yargs';\nimport { logError } from '../utils/errors';\nimport { publishHandler } from '../utils';\nimport { loadConfig, DubheConfig } from '@0xobelisk/sui-common';\n\ntype Options = {\n\tnetwork: any;\n\tconfigPath: string;\n\tdappsObjectId?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n\tcommand: 'publish',\n\n\tdescribe: 'Publish dubhe move contract',\n\n\tbuilder(yargs) {\n\t\treturn yargs.options({\n\t\t\tnetwork: {\n\t\t\t\ttype: 'string',\n\t\t\t\tchoices: ['mainnet', 'testnet', 'devnet', 'localnet'],\n\t\t\t\tdesc: 'Node network (mainnet/testnet/devnet/localnet)',\n\t\t\t},\n\t\t\tconfigPath: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'dubhe.config.ts',\n\t\t\t\tdesc: 'Configuration file path',\n\t\t\t},\n\t\t\tdappsObjectId: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdesc: 'Optional dappsObjectId',\n\t\t\t},\n\t\t});\n\t},\n\n\tasync handler({ network, configPath, dappsObjectId }) {\n\t\ttry {\n\t\t\tconst dubheConfig = (await loadConfig(\n\t\t\t\tconfigPath\n\t\t\t)) as DubheConfig;\n\t\t\tawait publishHandler(dubheConfig.name, network, dappsObjectId);\n\t\t} catch (error: any) {\n\t\t\tlogError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t},\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { execSync } from \"child_process\";\nimport chalk from \"chalk\";\n\ntype Options = {\n packagePath: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"test\",\n\n describe: \"Run tests in Dubhe contracts\",\n\n builder(yargs) {\n return yargs.options({\n packagePath: {\n type: \"string\",\n default: \".\",\n description: \"Options to pass to forge test\",\n },\n });\n },\n\n async handler({ packagePath }) {\n // Start an internal anvil process if no world address is provided\n try {\n execSync(`sui move test --path ${packagePath}`, {\n encoding: \"utf-8\",\n });\n } catch (error: any) {\n console.error(chalk.red(\"Error executing sui move test:\"));\n console.log(error.stdout);\n process.exit(0);\n }\n },\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { printDubhe } from \"../utils\";\n\nconst commandModule: CommandModule = {\n command: \"hello\",\n\n describe: \"hello, dubhe\",\n\n builder(yargs) {\n return yargs;\n },\n\n async handler() {\n printDubhe();\n },\n};\n\nexport default commandModule;\n","import { CommandModule } from 'yargs';\n\nimport localnode from './localnode';\nimport faucet from './faucet';\nimport schemagen from './schemagen';\nimport publish from './publish';\n// import upgrade from \"./upgrade\";\nimport test from './test';\nimport hello from './hello';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Each command has different options\nexport const commands: CommandModule<any, any>[] = [\n\tpublish,\n\tlocalnode,\n\tfaucet,\n\tschemagen,\n\t// upgrade,\n\ttest,\n\thello,\n];\n"],"mappings":"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","names":["yargs","hideBin","Dubhe","Transaction","getFullnodeUrl","SuiClient","execSync","chalk","chalk","ZodError","fromZodError","ValidationError","NotInsideProjectError","DubheCliError","logError","error","ValidationError","chalk","ZodError","validationError","fromZodError","NotInsideProjectError","DubheCliError","mkdirSync","writeFileSync","dirname","SUI_PRIVATE_KEY_PREFIX","execSync","spawn","chalk","isSuiStartRunning","cmd","result","startLocalnode","background","suiProcess","error","code","execSync","chalk","checkLocalNodeStatus","cmd","output","execSync","stopLocalnode","cmd","output","pid","match","error","validatePrivateKey","privateKey","SUI_PRIVATE_KEY_PREFIX","strippedPrivateKey","saveContractData","projectName","network","packageId","schemas","upgradeCap","version","DeploymentData","path","storeDeploymentData","writeOutput","output","fullOutputPath","logPrefix","mkdirSync","dirname","writeFileSync","getDappsObjectId","network","publishHandler","name","dappsObjectId","projectPath","privateKey","DubheCliError","privateKeyFormat","validatePrivateKey","keypair","Dubhe","client","SuiClient","getFullnodeUrl","modules","dependencies","buildResult","execSync","error","chalk","tx","Transaction","upgradeCap","result","version","packageId","schemas","upgradeCapId","object","resolve","deployHookTx","deployHookResult","saveContractData","chalk","printDubhe","commandModule","yargs","argv","action","background","startLocalnode","stopLocalnode","checkLocalNodeStatus","restartNode","error","localnode_default","Dubhe","requestSuiFromFaucetV0","getFaucetHost","SuiClient","getFullnodeUrl","commandModule","yargs","network","recipient","faucet_address","privateKey","DubheCliError","privateKeyFormat","validatePrivateKey","Dubhe","requestSuiFromFaucetV0","getFaucetHost","client","SuiClient","getFullnodeUrl","params","balance","faucet_default","schemaGen","loadConfig","chalk","commandModule","configPath","network","frameworkId","dubheConfig","error","schemagen_default","loadConfig","commandModule","yargs","network","configPath","dappsObjectId","dubheConfig","publishHandler","error","logError","publish_default","execSync","chalk","commandModule","yargs","packagePath","error","test_default","commandModule","yargs","printDubhe","hello_default","commands","publish_default","localnode_default","faucet_default","schemagen_default","test_default","hello_default","dotenv","chalk","yargs","hideBin","commands","msg","err","logError"]}
1
+ {"version":3,"sources":["../src/dubhe.ts","../src/utils/publishHandler.ts","../src/utils/errors.ts","../src/utils/utils.ts","../src/utils/localnode/start.ts","../src/utils/localnode/status.ts","../src/utils/localnode/stop.ts","../src/utils/printDubhe.ts","../src/commands/localnode.ts","../src/commands/faucet.ts","../src/commands/schemagen.ts","../src/commands/publish.ts","../src/commands/test.ts","../src/commands/hello.ts","../src/commands/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { commands } from \"./commands\";\nimport { logError } from \"./utils/errors\";\n\n// Load .env file into process.env\nimport * as dotenv from \"dotenv\";\nimport chalk from \"chalk\";\ndotenv.config();\n\nyargs(hideBin(process.argv))\n // Explicit name to display in help (by default it's the entry file, which may not be \"dubhe\" for e.g. ts-node)\n .scriptName(\"dubhe\")\n // Use the commands directory to scaffold\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- command array overload isn't typed, see https://github.com/yargs/yargs/blob/main/docs/advanced.md#esm-hierarchy\n .command(commands as any)\n // Enable strict mode.\n .strict()\n // Custom error handler\n .fail((msg, err) => {\n console.error(chalk.red(msg));\n if (msg.includes(\"Missing required argument\")) {\n console.log(\n chalk.yellow(`Run 'pnpm dubhe ${process.argv[2]} --help' for a list of available and required arguments.`)\n );\n }\n console.log(\"\");\n logError(err);\n console.log(\"\");\n\n process.exit(1);\n })\n // Useful aliases.\n .alias({ h: \"help\" }).argv;\n","import { Dubhe } from '@0xobelisk/sui-client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport {\n\tgetFullnodeUrl,\n\tSuiClient,\n\tSuiTransactionBlockResponse,\n} from '@mysten/sui/client';\nimport { execSync } from 'child_process';\nimport chalk from 'chalk';\nimport { DubheCliError } from './errors';\nimport {\n\tupdateVersionInFile,\n\tsaveContractData,\n\tvalidatePrivateKey,\n\tschema,\n} from './utils';\n\nasync function getDappsObjectId(\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n\tswitch (network) {\n\t\tcase 'testnet':\n\t\t\treturn '0x92c78ef688a5cb7f6a9f18e76d1da927e26281c367564ffbe5f886ec06434f08';\n\t\tdefault:\n\t\t\treturn '0x92c78ef688a5cb7f6a9f18e76d1da927e26281c367564ffbe5f886ec06434f08';\n\t}\n}\n\nexport async function publishHandler(\n\tname: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tdappsObjectId?: string\n) {\n\tconsole.log('\\nšŸš€ Starting Contract Publication...');\n\tconsole.log(` ā”œā”€ Project: ${name}`);\n\tconsole.log(` ā”œā”€ Network: ${network}`);\n\n\tconst path = process.cwd();\n\tconst projectPath = `${path}/contracts/${name}`;\n\tdappsObjectId = dappsObjectId || (await getDappsObjectId(network));\n\n\tconsole.log(' ā”œā”€ Validating Environment...');\n\tconst privateKey = process.env.PRIVATE_KEY;\n\tif (!privateKey) {\n\t\tthrow new DubheCliError(\n\t\t\t`Missing PRIVATE_KEY environment variable.\nRun 'echo \"PRIVATE_KEY=YOUR_PRIVATE_KEY\" > .env'\nin your contracts directory to use the default sui private key.`\n\t\t);\n\t}\n\n\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\tif (privateKeyFormat === false) {\n\t\tthrow new DubheCliError(`Please check your privateKey.`);\n\t}\n\n\tconst dubhe = new Dubhe({ secretKey: privateKeyFormat });\n\tconst keypair = dubhe.getKeypair();\n\tconsole.log(` └─ Account: ${keypair.toSuiAddress()}`);\n\n\tconst client = new SuiClient({ url: getFullnodeUrl(network) });\n\n\tconsole.log('\\nšŸ“¦ Building Contract...');\n\tlet modules: any, dependencies: any;\n\ttry {\n\t\tconst buildResult = JSON.parse(\n\t\t\texecSync(\n\t\t\t\t`sui move build --dump-bytecode-as-base64 --path ${projectPath}`,\n\t\t\t\t{\n\t\t\t\t\tencoding: 'utf-8',\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tmodules = buildResult.modules;\n\t\tdependencies = buildResult.dependencies;\n\t\tconsole.log(' └─ Build successful');\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(' └─ Build failed'));\n\t\tconsole.error(error.stdout);\n\t\tprocess.exit(1);\n\t}\n\n\tconsole.log('\\nšŸ”„ Publishing Contract...');\n\tconst tx = new Transaction();\n\tconst [upgradeCap] = tx.publish({ modules, dependencies });\n\ttx.transferObjects([upgradeCap], keypair.toSuiAddress());\n\n\tlet result: SuiTransactionBlockResponse;\n\ttry {\n\t\tresult = await client.signAndExecuteTransaction({\n\t\t\tsigner: keypair,\n\t\t\ttransaction: tx,\n\t\t\toptions: { showObjectChanges: true },\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(' └─ Publication failed'));\n\t\tconsole.error(error.message);\n\t\tprocess.exit(1);\n\t}\n\n\tif (result.effects?.status.status === 'failure') {\n\t\tconsole.log(chalk.red(' └─ Publication failed'));\n\t\tprocess.exit(1);\n\t}\n\n\tconsole.log(' ā”œā”€ Processing publication results...');\n\tlet version = 1;\n\tlet packageId = '';\n\tlet schemas: schema[] = [];\n\tlet upgradeCapId = '';\n\n\tresult.objectChanges!.map(object => {\n\t\tif (object.type === 'published') {\n\t\t\tconsole.log(` ā”œā”€ Package ID: ${object.packageId}`);\n\t\t\tpackageId = object.packageId;\n\t\t}\n\t\tif (\n\t\t\tobject.type === 'created' &&\n\t\t\tobject.objectType === '0x2::package::UpgradeCap'\n\t\t) {\n\t\t\tconsole.log(` ā”œā”€ Upgrade Cap: ${object.objectId}`);\n\t\t\tupgradeCapId = object.objectId;\n\t\t}\n\t});\n\n\tconsole.log(` └─ Transaction: ${result.digest}`);\n\n\tconsole.log('\\n⚔ Executing Deploy Hook...');\n\tawait new Promise(resolve => setTimeout(resolve, 5000));\n\n\tconst deployHookTx = new Transaction();\n\tdeployHookTx.moveCall({\n\t\ttarget: `${packageId}::deploy_hook::run`,\n\t\targuments: [\n\t\t\tdeployHookTx.object(dappsObjectId),\n\t\t\tdeployHookTx.object('0x6'),\n\t\t],\n\t});\n\n\tlet deployHookResult: SuiTransactionBlockResponse;\n\ttry {\n\t\tdeployHookResult = await client.signAndExecuteTransaction({\n\t\t\tsigner: keypair,\n\t\t\ttransaction: deployHookTx,\n\t\t\toptions: { showEffects: true, showObjectChanges: true },\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(' └─ Deploy hook execution failed'));\n\t\tconsole.error(error.message);\n\t\tprocess.exit(1);\n\t}\n\n\tif (deployHookResult.effects?.status.status === 'success') {\n\t\tconsole.log(' ā”œā”€ Hook execution successful');\n\t\tconsole.log(` ā”œā”€ Transaction: ${deployHookResult.digest}`);\n\n\t\tconsole.log('\\nšŸ“‹ Created Schemas:');\n\t\tdeployHookResult.objectChanges?.map(object => {\n\t\t\tif (\n\t\t\t\tobject.type === 'created' &&\n\t\t\t\tobject.objectType.includes('schema')\n\t\t\t) {\n\t\t\t\tconsole.log(` ā”œā”€ ${object.objectType}`);\n\t\t\t\tconsole.log(` └─ ID: ${object.objectId}`);\n\t\t\t\tschemas.push({\n\t\t\t\t\tname: object.objectType,\n\t\t\t\t\tobjectId: object.objectId,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tsaveContractData(\n\t\t\tname,\n\t\t\tnetwork,\n\t\t\tpackageId,\n\t\t\tschemas,\n\t\t\tupgradeCapId,\n\t\t\tversion\n\t\t);\n\t\tconsole.log('\\nāœ… Contract Publication Complete\\n');\n\t} else {\n\t\tconsole.log(chalk.yellow(' └─ Deploy hook execution failed'));\n\t\tconsole.log(\n\t\t\tchalk.yellow(\n\t\t\t\t' Please republish or manually call deploy_hook::run'\n\t\t\t)\n\t\t);\n\t}\n}\n","import chalk from \"chalk\";\nimport { ZodError } from \"zod\";\nimport { fromZodError, ValidationError } from \"zod-validation-error\";\n\nexport class NotInsideProjectError extends Error {\n name = \"NotInsideProjectError\";\n message = \"You are not inside a Dubhe project\";\n}\n\nexport class DubheCliError extends Error {\n name = \"DubheCliError\";\n}\n\nexport class UpgradeError extends Error {\n name = \"UpgradeError\";\n}\n\nexport class FsIibError extends Error {\n name = \"FsIibError\";\n}\n\nexport function logError(error: unknown) {\n if (error instanceof ValidationError) {\n console.log(chalk.redBright(error.message));\n } else if (error instanceof ZodError) {\n // TODO currently this error shouldn't happen, use `fromZodErrorCustom`\n const validationError = fromZodError(error, {\n prefixSeparator: \"\\n- \",\n issueSeparator: \"\\n- \",\n });\n console.log(chalk.redBright(validationError.message));\n } else if (error instanceof NotInsideProjectError) {\n console.log(chalk.red(error.message));\n console.log(\"\");\n // TODO add docs to the website and update the link to the specific page\n console.log(\n chalk.blue(\n `To learn more about Dubhe's configuration, please go to https://github.com/0xobelisk`\n )\n );\n } else if (error instanceof DubheCliError) {\n console.log(chalk.red(error));\n } else {\n console.log(error);\n }\n}\n","import * as fsAsync from 'fs/promises';\nimport { mkdirSync, writeFileSync } from 'fs';\nimport { dirname } from 'path';\nimport { SUI_PRIVATE_KEY_PREFIX } from '@mysten/sui/cryptography';\nimport { FsIibError } from './errors';\nexport * from './localnode';\n\nexport type schema = {\n\tname: string;\n\tobjectId: string;\n};\n\nexport type DeploymentJsonType = {\n\tprojectName: string;\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\tpackageId: string;\n\tschemas: schema[];\n\tupgradeCap: string;\n\tversion: number;\n};\n\nexport function validatePrivateKey(privateKey: string): false | string {\n\tif (privateKey.startsWith(SUI_PRIVATE_KEY_PREFIX)) {\n\t\tif (privateKey.length === 70) {\n\t\t\treturn privateKey;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else if (privateKey.startsWith('0x')) {\n\t\tconst strippedPrivateKey = privateKey.slice(2);\n\t\tif (strippedPrivateKey.length === 64) {\n\t\t\treturn strippedPrivateKey;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tif (privateKey.length === 64) {\n\t\t\treturn privateKey;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nexport async function updateVersionInFile(\n\tprojectPath: string,\n\tnewVersion: string\n) {\n\ttry {\n\t\tconst filePath = `${projectPath}/sources/script/migrate.move`;\n\t\tconst data = await fsAsync.readFile(filePath, 'utf8');\n\n\t\t// update version data\n\t\tconst updatedData = data.replace(\n\t\t\t/const VERSION: u64 = \\d+;/,\n\t\t\t`const VERSION: u64 = ${newVersion};`\n\t\t);\n\n\t\t// write new version\n\t\twriteOutput(updatedData, filePath, 'Update package version');\n\t} catch {\n\t\tthrow new FsIibError('Fs update version failed.');\n\t}\n}\n\nasync function getDeploymentJson(projectPath: string, network: string) {\n\ttry {\n\t\tconst data = await fsAsync.readFile(\n\t\t\t`${projectPath}/.history/sui_${network}/latest.json`,\n\t\t\t'utf8'\n\t\t);\n\t\treturn JSON.parse(data) as DeploymentJsonType;\n\t} catch {\n\t\tthrow new FsIibError('Fs read deployment file failed.');\n\t}\n}\n\nexport async function getVersion(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<number> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.version;\n}\n\nexport async function getNetwork(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<'mainnet' | 'testnet' | 'devnet' | 'localnet'> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.network;\n}\n\nexport async function getOldPackageId(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.packageId;\n}\n\nexport async function getUpgradeCap(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.upgradeCap;\n}\n\nexport async function getObjectIdBySchemaName(\n\tprojectPath: string,\n\tnetwork: string,\n\tschemaName: string\n): Promise<string | undefined> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.schemas.find(schema => schema.name.includes(schemaName))\n\t\t?.objectId;\n}\n\nexport function saveContractData(\n\tprojectName: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tpackageId: string,\n\tschemas: schema[],\n\tupgradeCap: string,\n\tversion: number\n) {\n\tconst DeploymentData: DeploymentJsonType = {\n\t\tprojectName,\n\t\tnetwork,\n\t\tpackageId,\n\t\tschemas,\n\t\tupgradeCap,\n\t\tversion,\n\t};\n\n\tconst path = process.cwd();\n\tconst storeDeploymentData = JSON.stringify(DeploymentData, null, 2);\n\twriteOutput(\n\t\tstoreDeploymentData,\n\t\t`${path}/contracts/${projectName}/.history/sui_${network}/latest.json`,\n\t\t'Update deploy log'\n\t);\n}\n\nexport async function writeOutput(\n\toutput: string,\n\tfullOutputPath: string,\n\tlogPrefix?: string\n): Promise<void> {\n\tmkdirSync(dirname(fullOutputPath), { recursive: true });\n\n\twriteFileSync(fullOutputPath, output);\n\tif (logPrefix !== undefined) {\n\t\tconsole.log(`${logPrefix}: ${fullOutputPath}`);\n\t}\n}\n","import { execSync, spawn } from 'child_process';\nimport chalk from 'chalk';\n\nfunction isSuiStartRunning(): boolean {\n\ttry {\n\t\tconst cmd =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? `tasklist /FI \"IMAGENAME eq sui.exe\" /FO CSV /NH`\n\t\t\t\t: 'pgrep -f \"sui start\"';\n\n\t\tconst result = execSync(cmd).toString().trim();\n\t\treturn process.platform === 'win32'\n\t\t\t? result.toLowerCase().includes('sui.exe')\n\t\t\t: result.length > 0;\n\t} catch (error) {\n\t\treturn false;\n\t}\n}\n\nexport async function startLocalnode(background: boolean = false) {\n\tconsole.log('\\nšŸ” Checking Local Node Status...');\n\tconsole.log(' ā”œā”€ Scanning running processes');\n\n\tif (isSuiStartRunning()) {\n\t\tconsole.log(chalk.yellow('\\nāš ļø Warning: Local Node Already Running'));\n\t\tconsole.log(chalk.yellow(' ā”œā”€ Cannot start a new instance'));\n\t\tconsole.log(\n\t\t\tchalk.yellow(' └─ Please stop the existing process first')\n\t\t);\n\t\treturn;\n\t}\n\n\tconsole.log('\\nšŸš€ Starting Local Node...');\n\tconsole.log(' ā”œā”€ Mode: ' + (background ? 'Background' : 'Foreground'));\n\tconsole.log(' ā”œā”€ Faucet: Enabled');\n\tconsole.log(' └─ Force Regenesis: Yes');\n\n\ttry {\n\t\tconst suiProcess = spawn(\n\t\t\t'sui',\n\t\t\t['start', '--with-faucet', '--force-regenesis'],\n\t\t\t{\n\t\t\t\tenv: { ...process.env, RUST_LOG: 'off,sui_node=info' },\n\t\t\t\tstdio: background ? 'ignore' : 'inherit',\n\t\t\t\tdetached: background,\n\t\t\t}\n\t\t);\n\n\t\tsuiProcess.on('error', error => {\n\t\t\tconsole.error(chalk.red('\\nāŒ Failed to Start Local Node'));\n\t\t\tconsole.error(chalk.red(` └─ Error: ${error.message}`));\n\t\t});\n\n\t\tif (!background) {\n\t\t\tsuiProcess.on('exit', code => {\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tconsole.log(chalk.green('\\nāœ… Local Node Stopped'));\n\t\t\t\t\tconsole.log(chalk.green(' └─ Exit Status: Normal'));\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(chalk.red('\\nāŒ Local Node Crashed'));\n\t\t\t\t\tconsole.error(chalk.red(` └─ Exit Code: ${code}`));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconsole.log(chalk.cyan('\\nšŸ“” Local Node Running'));\n\t\t\tconsole.log(chalk.cyan(' └─ Press Ctrl+C to stop'));\n\n\t\t\tawait new Promise(() => {});\n\t\t} else {\n\t\t\tsuiProcess.unref();\n\t\t\tconsole.log(chalk.green('\\nāœ… Local Node Started in Background'));\n\n\t\t\tif (process.platform === 'win32') {\n\t\t\t\tconsole.log('\\nšŸ’” Helpful Commands:');\n\t\t\t\tconsole.log(' ā”œā”€ Check Process: tasklist | findstr sui.exe');\n\t\t\t\tconsole.log(' └─ Stop Node: taskkill /PID <process_id> /F');\n\t\t\t} else {\n\t\t\t\tconsole.log('\\nšŸ’” Helpful Commands:');\n\t\t\t\tconsole.log(\" ā”œā”€ Check Process: pgrep -f 'sui start'\");\n\t\t\t\tconsole.log(' └─ Stop Node: kill <process_id>');\n\t\t\t}\n\t\t}\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red('\\nāŒ Failed to Start Local Node'));\n\t\tconsole.error(chalk.red(` └─ Error: ${error.message}`));\n\t}\n}\n","import { execSync } from 'child_process';\nimport chalk from 'chalk';\n\nexport async function checkLocalNodeStatus() {\n\tconsole.log('\\nšŸ” Checking Local Node Status...');\n\n\ttry {\n\t\tconst cmd =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? `tasklist /FI \"IMAGENAME eq sui.exe\" /FO CSV /NH`\n\t\t\t\t: \"ps aux | grep '[s]ui start --with-faucet --force-regenesis'\";\n\n\t\tconst output = execSync(cmd, {\n\t\t\tencoding: 'utf8',\n\t\t});\n\n\t\tconst isRunning =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? output.toLowerCase().includes('sui.exe')\n\t\t\t\t: output.split('\\n').filter(Boolean).length > 0;\n\n\t\tif (isRunning) {\n\t\t\tconsole.log(chalk.green('\\nāœ… Node Status: Running'));\n\t\t\tconsole.log(chalk.gray('\\nšŸ“Š Process Details:'));\n\t\t\tconsole.log(chalk.gray(` └─ ${output.trim()}`));\n\t\t} else {\n\t\t\tconsole.log(chalk.red('\\nāŒ Node Status: Not Running'));\n\t\t\tconsole.log(chalk.yellow('\\nšŸ’” Quick Start:'));\n\t\t\tconsole.log(chalk.yellow(' └─ Run `dubhe localnode start`'));\n\t\t}\n\t} catch (error) {\n\t\tconsole.log(chalk.red('\\nāŒ Node Status: Not Running'));\n\t\tconsole.log(chalk.yellow('\\nšŸ’” Quick Start:'));\n\t\tconsole.log(chalk.yellow(' └─ Run `obelisk localnode start`'));\n\t}\n}\n\n// checkLocalNodeStatus();\n","import { execSync } from 'child_process';\n\nexport async function stopLocalnode() {\n\tconsole.log('Stopping local node...');\n\n\ttry {\n\t\t// Choose different commands based on the operating system\n\t\tconst cmd =\n\t\t\tprocess.platform === 'win32'\n\t\t\t\t? `tasklist /FI \"IMAGENAME eq sui.exe\" /FO CSV /NH`\n\t\t\t\t: \"ps aux | grep '[s]ui start --with-faucet --force-regenesis'\";\n\n\t\tconst output = execSync(cmd, {\n\t\t\tencoding: 'utf8',\n\t\t});\n\n\t\tif (!output) {\n\t\t\tconsole.log('No running local node process found');\n\t\t\treturn;\n\t\t}\n\n\t\t// Parse process ID based on the operating system\n\t\tlet pid;\n\t\tif (process.platform === 'win32') {\n\t\t\t// Windows output format: \"sui.exe\",\"1234\",... (CSV format)\n\t\t\tconst match = output.match(/\"sui\\.exe\",[\"']?(\\d+)/i);\n\t\t\tpid = match ? match[1] : null;\n\t\t} else {\n\t\t\t// Unix system output format: user pid %cpu ...\n\t\t\tpid = output.toString().split(/\\s+/)[1];\n\t\t}\n\n\t\tif (!pid) {\n\t\t\tconsole.log('No running local node process found');\n\t\t\treturn;\n\t\t}\n\n\t\t// Choose the command to terminate the process based on the operating system\n\t\tif (process.platform === 'win32') {\n\t\t\texecSync(`taskkill /PID ${pid} /F`);\n\t\t} else {\n\t\t\tprocess.kill(Number(pid));\n\t\t}\n\n\t\tconsole.log('āœ… Local node stopped successfully');\n\t} catch (error: any) {\n\t\tif (\n\t\t\terror.code === 'ESRCH' ||\n\t\t\terror.message.includes('no running tasks')\n\t\t) {\n\t\t\tconsole.log('No running local node process found');\n\t\t} else {\n\t\t\tconsole.error('āŒ Error stopping local node:', error.message);\n\t\t}\n\t}\n}\n\n// stopLocalnode();\n","import chalk from \"chalk\";\n\nexport function printDubhe() {\n console.log(\n chalk.yellow(`\nWelcome to Dubhe\n\\t\\t\\t --from team@obelisk\n ________ ___ ___ ________ ___ ___ _______ \n |\\\\ ___ \\\\|\\\\ \\\\|\\\\ \\\\|\\\\ __ \\\\|\\\\ \\\\|\\\\ \\\\|\\\\ ___ \\\\ \n \\\\ \\\\ \\\\_|\\\\ \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ \\\\|\\\\ /\\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ __/| \n \\\\ \\\\ \\\\ \\\\\\\\ \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ __ \\\\ \\\\ __ \\\\ \\\\ \\\\_|/__ \n \\\\ \\\\ \\\\_\\\\\\\\ \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ \\\\|\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\_|\\\\ \\\\ \n \\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\__\\\\ \\\\__\\\\ \\\\_______\\\\\n \\\\|_______|\\\\|_______|\\\\|_______|\\\\|__|\\\\|__|\\\\|_______| \n \n`)\n );\n}\n","import type { CommandModule } from 'yargs';\nimport { startLocalnode, stopLocalnode, checkLocalNodeStatus } from '../utils';\n\nconst commandModule: CommandModule = {\n\tcommand: 'localnode <action>',\n\n\tdescribe: 'Manage local Sui node',\n\n\tbuilder(yargs) {\n\t\treturn yargs\n\t\t\t.positional('action', {\n\t\t\t\tdescribe: 'Action to perform',\n\t\t\t\tchoices: ['start', 'stop', 'status', 'restart'],\n\t\t\t\ttype: 'string',\n\t\t\t\tdemandOption: true,\n\t\t\t})\n\t\t\t.option('background', {\n\t\t\t\talias: 'b',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdescription: 'Run node in background',\n\t\t\t\tdefault: false,\n\t\t\t});\n\t},\n\n\tasync handler(argv) {\n\t\tconst { action, background } = argv;\n\n\t\ttry {\n\t\t\tswitch (action) {\n\t\t\t\tcase 'start':\n\t\t\t\t\tawait startLocalnode(background as boolean);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'stop':\n\t\t\t\t\tawait stopLocalnode();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'status':\n\t\t\t\t\tawait checkLocalNodeStatus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'restart':\n\t\t\t\t\tawait restartNode(background as boolean);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Error executing command:', error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t},\n};\n\nasync function restartNode(background: boolean) {\n\tconsole.log('Restarting local Sui node...');\n\tawait stopLocalnode();\n\tawait startLocalnode(background);\n\tconsole.log('Local node has been restarted');\n}\n\nexport default commandModule;\n","import { Dubhe } from '@0xobelisk/sui-client';\nimport type { CommandModule } from 'yargs';\nimport { requestSuiFromFaucetV0, getFaucetHost } from '@mysten/sui/faucet';\nimport {\n\tSuiClient,\n\tgetFullnodeUrl,\n\tGetBalanceParams,\n} from '@mysten/sui/client';\nimport { validatePrivateKey, DubheCliError } from '../utils';\n\ntype Options = {\n\tnetwork: any;\n\trecipient?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n\tcommand: 'faucet',\n\n\tdescribe: 'Interact with a Dubhe faucet',\n\n\tbuilder(yargs) {\n\t\treturn yargs.options({\n\t\t\tnetwork: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdesc: 'URL of the Dubhe faucet',\n\t\t\t\tchoices: ['testnet', 'devnet', 'localnet'],\n\t\t\t\tdefault: 'localnet',\n\t\t\t},\n\t\t\trecipient: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdesc: 'Sui address to fund',\n\t\t\t},\n\t\t});\n\t},\n\n\tasync handler({ network, recipient }) {\n\t\tlet faucet_address = '';\n\t\tif (recipient === undefined) {\n\t\t\tconst privateKey = process.env.PRIVATE_KEY;\n\t\t\tif (!privateKey)\n\t\t\t\tthrow new DubheCliError(\n\t\t\t\t\t`Missing PRIVATE_KEY environment variable.\n Run 'echo \"PRIVATE_KEY=YOUR_PRIVATE_KEY\" > .env'\n in your contracts directory to use the default sui private key.`\n\t\t\t\t);\n\n\t\t\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\t\t\tif (privateKeyFormat === false) {\n\t\t\t\tthrow new DubheCliError(`Please check your PRIVATE_KEY.`);\n\t\t\t}\n\t\t\tconst dubhe = new Dubhe({\n\t\t\t\tsecretKey: privateKeyFormat,\n\t\t\t});\n\t\t\tconst keypair = dubhe.getKeypair();\n\t\t\tfaucet_address = keypair.toSuiAddress();\n\t\t} else {\n\t\t\tfaucet_address = recipient;\n\t\t}\n\n\t\tconsole.log('\\n🌊 Starting Faucet Operation...');\n\t\tconsole.log(` ā”œā”€ Network: ${network}`);\n\n\t\tif (recipient === undefined) {\n\t\t\tconsole.log(' ā”œā”€ Using Environment PrivateKey');\n\t\t\tconsole.log(` ā”œā”€ Generated Address: ${faucet_address}`);\n\t\t} else {\n\t\t\tconsole.log(` ā”œā”€ Using Provided Address: ${faucet_address}`);\n\t\t}\n\n\t\tconsole.log(' ā”œā”€ Requesting funds from faucet...');\n\t\tawait requestSuiFromFaucetV0({\n\t\t\thost: getFaucetHost(network),\n\t\t\trecipient: faucet_address,\n\t\t});\n\n\t\tconsole.log(' └─ Checking balance...');\n\t\tconst client = new SuiClient({ url: getFullnodeUrl(network) });\n\t\tlet params = {\n\t\t\towner: faucet_address,\n\t\t} as GetBalanceParams;\n\n\t\tconst balance = await client.getBalance(params);\n\n\t\tconsole.log('\\nšŸ’° Account Summary');\n\t\tconsole.log(` ā”œā”€ Address: ${faucet_address}`);\n\t\tconsole.log(\n\t\t\t` └─ Balance: ${(\n\t\t\t\tNumber(balance.totalBalance) / 1_000_000_000\n\t\t\t).toFixed(4)} SUI`\n\t\t);\n\n\t\tconsole.log('\\nāœ… Faucet Operation Complete\\n');\n\t\tprocess.exit(0);\n\t},\n};\n\nexport default commandModule;\n","import type { CommandModule } from 'yargs';\nimport { schemaGen, loadConfig, DubheConfig } from '@0xobelisk/sui-common';\nimport chalk from 'chalk';\n\ntype Options = {\n\tconfigPath?: string;\n\tnetwork?: 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\tframeworkId?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n\tcommand: 'schemagen',\n\n\tdescribe: 'Autogenerate Dubhe schemas based on the config file',\n\n\tbuilder: {\n\t\tconfigPath: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'dubhe.config.ts',\n\t\t\tdesc: 'Path to the config file',\n\t\t},\n\t\tnetwork: {\n\t\t\ttype: 'string',\n\t\t\tchoices: ['mainnet', 'testnet', 'devnet', 'localnet'] as const,\n\t\t\tdesc: 'Node network (mainnet/testnet/devnet/localnet)',\n\t\t},\n\t\tframeworkId: {\n\t\t\ttype: 'string',\n\t\t\tdesc: 'Framework Package ID',\n\t\t},\n\t},\n\n\tasync handler({ configPath, network, frameworkId }) {\n\t\ttry {\n\t\t\tconst dubheConfig = (await loadConfig(\n\t\t\t\tconfigPath\n\t\t\t)) as DubheConfig;\n\t\t\tawait schemaGen(dubheConfig, undefined, network, frameworkId);\n\t\t\tprocess.exit(0);\n\t\t} catch (error: any) {\n\t\t\tconsole.log(chalk.red('Schemagen failed!'));\n\t\t\tconsole.error(error.message);\n\t\t}\n\t},\n};\n\nexport default commandModule;\n","import type { CommandModule } from 'yargs';\nimport { logError } from '../utils/errors';\nimport { publishHandler } from '../utils';\nimport { loadConfig, DubheConfig } from '@0xobelisk/sui-common';\n\ntype Options = {\n\tnetwork: any;\n\tconfigPath: string;\n\tdappsObjectId?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n\tcommand: 'publish',\n\n\tdescribe: 'Publish dubhe move contract',\n\n\tbuilder(yargs) {\n\t\treturn yargs.options({\n\t\t\tnetwork: {\n\t\t\t\ttype: 'string',\n\t\t\t\tchoices: ['mainnet', 'testnet', 'devnet', 'localnet'],\n\t\t\t\tdesc: 'Node network (mainnet/testnet/devnet/localnet)',\n\t\t\t},\n\t\t\tconfigPath: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'dubhe.config.ts',\n\t\t\t\tdesc: 'Configuration file path',\n\t\t\t},\n\t\t\tdappsObjectId: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdesc: 'Optional dappsObjectId',\n\t\t\t},\n\t\t});\n\t},\n\n\tasync handler({ network, configPath, dappsObjectId }) {\n\t\ttry {\n\t\t\tconst dubheConfig = (await loadConfig(\n\t\t\t\tconfigPath\n\t\t\t)) as DubheConfig;\n\t\t\tawait publishHandler(dubheConfig.name, network, dappsObjectId);\n\t\t} catch (error: any) {\n\t\t\tlogError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t},\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { execSync } from \"child_process\";\nimport chalk from \"chalk\";\n\ntype Options = {\n packagePath: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"test\",\n\n describe: \"Run tests in Dubhe contracts\",\n\n builder(yargs) {\n return yargs.options({\n packagePath: {\n type: \"string\",\n default: \".\",\n description: \"Options to pass to forge test\",\n },\n });\n },\n\n async handler({ packagePath }) {\n // Start an internal anvil process if no world address is provided\n try {\n execSync(`sui move test --path ${packagePath}`, {\n encoding: \"utf-8\",\n });\n } catch (error: any) {\n console.error(chalk.red(\"Error executing sui move test:\"));\n console.log(error.stdout);\n process.exit(0);\n }\n },\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { printDubhe } from \"../utils\";\n\nconst commandModule: CommandModule = {\n command: \"hello\",\n\n describe: \"hello, dubhe\",\n\n builder(yargs) {\n return yargs;\n },\n\n async handler() {\n printDubhe();\n },\n};\n\nexport default commandModule;\n","import { CommandModule } from 'yargs';\n\nimport localnode from './localnode';\nimport faucet from './faucet';\nimport schemagen from './schemagen';\nimport publish from './publish';\n// import upgrade from \"./upgrade\";\nimport test from './test';\nimport hello from './hello';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Each command has different options\nexport const commands: CommandModule<any, any>[] = [\n\tpublish,\n\tlocalnode,\n\tfaucet,\n\tschemagen,\n\t// upgrade,\n\ttest,\n\thello,\n];\n"],"mappings":"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","names":["yargs","hideBin","Dubhe","Transaction","getFullnodeUrl","SuiClient","execSync","chalk","chalk","ZodError","fromZodError","ValidationError","NotInsideProjectError","DubheCliError","logError","error","ValidationError","chalk","ZodError","validationError","fromZodError","NotInsideProjectError","DubheCliError","mkdirSync","writeFileSync","dirname","SUI_PRIVATE_KEY_PREFIX","execSync","spawn","chalk","isSuiStartRunning","cmd","result","startLocalnode","background","suiProcess","error","code","execSync","chalk","checkLocalNodeStatus","cmd","output","execSync","stopLocalnode","cmd","output","pid","match","error","validatePrivateKey","privateKey","SUI_PRIVATE_KEY_PREFIX","strippedPrivateKey","saveContractData","projectName","network","packageId","schemas","upgradeCap","version","DeploymentData","path","storeDeploymentData","writeOutput","output","fullOutputPath","logPrefix","mkdirSync","dirname","writeFileSync","getDappsObjectId","network","publishHandler","name","dappsObjectId","projectPath","privateKey","DubheCliError","privateKeyFormat","validatePrivateKey","keypair","Dubhe","client","SuiClient","getFullnodeUrl","modules","dependencies","buildResult","execSync","error","chalk","tx","Transaction","upgradeCap","result","version","packageId","schemas","upgradeCapId","object","resolve","deployHookTx","deployHookResult","saveContractData","chalk","printDubhe","commandModule","yargs","argv","action","background","startLocalnode","stopLocalnode","checkLocalNodeStatus","restartNode","error","localnode_default","Dubhe","requestSuiFromFaucetV0","getFaucetHost","SuiClient","getFullnodeUrl","commandModule","yargs","network","recipient","faucet_address","privateKey","DubheCliError","privateKeyFormat","validatePrivateKey","Dubhe","requestSuiFromFaucetV0","getFaucetHost","client","SuiClient","getFullnodeUrl","params","balance","faucet_default","schemaGen","loadConfig","chalk","commandModule","configPath","network","frameworkId","dubheConfig","error","schemagen_default","loadConfig","commandModule","yargs","network","configPath","dappsObjectId","dubheConfig","publishHandler","error","logError","publish_default","execSync","chalk","commandModule","yargs","packagePath","error","test_default","commandModule","yargs","printDubhe","hello_default","commands","publish_default","localnode_default","faucet_default","schemagen_default","test_default","hello_default","dotenv","chalk","yargs","hideBin","commands","msg","err","logError"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xobelisk/sui-cli",
3
- "version": "0.5.21",
3
+ "version": "0.5.22",
4
4
  "description": "Tookit for interacting with move eps framework",
5
5
  "keywords": [
6
6
  "sui",
@@ -20,9 +20,9 @@ async function getDappsObjectId(
20
20
  ) {
21
21
  switch (network) {
22
22
  case 'testnet':
23
- return '0xa66942c08d9fc318a70ab9d0cfd7e75f1a2dd1ac31aff12fde008d25bfa9604b';
23
+ return '0x92c78ef688a5cb7f6a9f18e76d1da927e26281c367564ffbe5f886ec06434f08';
24
24
  default:
25
- return '0xa66942c08d9fc318a70ab9d0cfd7e75f1a2dd1ac31aff12fde008d25bfa9604b';
25
+ return '0x92c78ef688a5cb7f6a9f18e76d1da927e26281c367564ffbe5f886ec06434f08';
26
26
  }
27
27
  }
28
28