@0xobelisk/sui-cli 0.5.9 → 0.5.11
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/obelisk.js +8 -8
- package/dist/obelisk.js.map +1 -1
- package/package.json +4 -4
- package/src/commands/faucet.ts +2 -2
- package/src/utils/publishHandler.ts +9 -11
- package/src/utils/upgradeHandler.ts +13 -13
- package/src/utils/utils.ts +2 -5
package/dist/obelisk.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import Le from"yargs";import{hideBin as Ze}from"yargs/helpers";import{execa as me}from"execa";var ge={command:"localnode",describe:"Start a local Sui node for development",builder(e){return e},async handler(){console.log("Clearing localnode history"),console.log("Running: sui-test-validator");let e=me("sui-test-validator");process.on("SIGINT",()=>{console.log(`
|
|
3
|
-
gracefully shutting down from SIGINT (Crtl-C)`),e.kill(),process.exit()}),await e}},
|
|
3
|
+
gracefully shutting down from SIGINT (Crtl-C)`),e.kill(),process.exit()}),await e}},H=ge;import{Obelisk as Se}from"@0xobelisk/sui-client";import{requestSuiFromFaucetV0 as Re,getFaucetHost as Ae}from"@mysten/sui/faucet";import{SuiClient as Me,getFullnodeUrl as Ke}from"@mysten/sui/client";import{Obelisk as ke}from"@0xobelisk/sui-client";import{Transaction as z}from"@mysten/sui/transactions";import{getFullnodeUrl as xe,SuiClient as ve}from"@mysten/sui/client";import{execSync as Ce}from"child_process";import i from"chalk";import S from"chalk";import{ZodError as ue}from"zod";import{fromZodError as fe,ValidationError as _e}from"zod-validation-error";var D=class extends Error{name="NotInsideProjectError";message="You are not inside a Obelisk project"},a=class extends Error{name="ObeliskCliError"},V=class extends Error{name="UpgradeError"},R=class extends Error{name="FsIibError"};function E(e){if(e instanceof _e)console.log(S.redBright(e.message));else if(e instanceof ue){let t=fe(e,{prefixSeparator:`
|
|
4
4
|
- `,issueSeparator:`
|
|
5
|
-
- `});console.log(S.redBright(t.message))}else e instanceof D?(console.log(S.red(e.message)),console.log(""),console.log(S.blue("To learn more about Obelisk's configuration, please go to https://github.com/0xobelisk"))):e instanceof
|
|
5
|
+
- `});console.log(S.redBright(t.message))}else e instanceof D?(console.log(S.red(e.message)),console.log(""),console.log(S.blue("To learn more about Obelisk's configuration, please go to https://github.com/0xobelisk"))):e instanceof a?console.log(S.red(e)):console.log(e)}import*as Y from"fs/promises";import{mkdirSync as ye,writeFileSync as he}from"fs";import{dirname as be}from"path";import{SUI_PRIVATE_KEY_PREFIX as we}from"@mysten/sui/cryptography";function P(e){if(e.startsWith(we))return e.length===70?e:!1;if(e.startsWith("0x")){let t=e.slice(2);return t.length===64?t:!1}else return e.length===64?e:!1}async function N(e,t){try{let o=`${e}/sources/script/migrate.move`,n=(await Y.readFile(o,"utf8")).replace(/const VERSION: u64 = \d+;/,`const VERSION: u64 = ${t};`);Z(n,o,"Update package version")}catch{throw new R("Fs update version failed.")}}async function A(e,t){try{let o=await Y.readFile(`${e}/.history/sui_${t}/latest.json`,"utf8");return JSON.parse(o)}catch{throw new R("Fs read deployment file failed.")}}async function B(e,t){return(await A(e,t)).version}async function J(e,t){return(await A(e,t)).packageId}async function q(e,t){return(await A(e,t)).worldId}async function G(e,t){return(await A(e,t)).upgradeCap}async function L(e,t){return(await A(e,t)).adminCap}function M(e,t,o,l,n,d,f){let _={projectName:e,network:t,packageId:o,worldId:l,upgradeCap:n,adminCap:d,version:f},m=process.cwd(),y=JSON.stringify(_,null,2);Z(y,`${m}/contracts/${e}/.history/sui_${t}/latest.json`,"Update deploy log")}async function Z(e,t,o){ye(be(t),{recursive:!0}),he(t,e),o!==void 0&&console.log(`${o}: ${t}`)}async function X(e,t){let l=`${process.cwd()}/contracts/${e}`,n=process.env.PRIVATE_KEY;if(!n)throw new a(`Missing PRIVATE_KEY environment variable.
|
|
6
6
|
Run 'echo "PRIVATE_KEY=YOUR_PRIVATE_KEY" > .env'
|
|
7
|
-
in your contracts directory to use the default sui private key.`);let d=
|
|
7
|
+
in your contracts directory to use the default sui private key.`);let d=P(n);if(d===!1)throw new a("Please check your privateKey.");let _=new ke({secretKey:d}).getKeypair(),m=new ve({url:xe(t)}),y,k;try{let{modules:r,dependencies:u}=JSON.parse(Ce(`sui move build --dump-bytecode-as-base64 --path ${l}`,{encoding:"utf-8"}));y=r,k=u}catch(r){console.error(i.red("Error executing sui move build:")),console.error(r.stdout),process.exit(1)}console.log(i.blue(`Account: ${_.toSuiAddress()}`));let x=new z,[h]=x.publish({modules:y,dependencies:k});x.transferObjects([h],_.toSuiAddress());let p;try{p=await m.signAndExecuteTransaction({signer:_,transaction:x,options:{showObjectChanges:!0}})}catch(r){console.error(i.red("Failed to execute publish, please republish")),console.error(r.message),process.exit(1)}p.effects?.status.status==="failure"&&(console.log(i.red("Failed to execute publish, please republish")),process.exit(1));let C=1,g="",b="",$="",I="";p.objectChanges.map(r=>{r.type==="published"&&(console.log(i.blue(`${e} PackageId: ${r.packageId}`)),g=r.packageId),r.type==="created"&&r.objectType.endsWith("::world::World")&&(console.log(i.blue(`${e} WorldId: ${r.objectId}`)),b=r.objectId),r.type==="created"&&r.objectType==="0x2::package::UpgradeCap"&&(console.log(i.blue(`${e} UpgradeCap: ${r.objectId}`)),$=r.objectId),r.type==="created"&&r.objectType.endsWith("::world::AdminCap")&&(console.log(i.blue(`${e} AdminCapId: ${r.objectId}`)),I=r.objectId)}),console.log(i.green(`Publish transaction digest: ${p.digest}`)),M(e,t,g,b,$,I,C),console.log("Executing the deployHook: "),await(r=>new Promise(u=>setTimeout(u,r)))(5e3);let O=new z;O.moveCall({target:`${g}::deploy_hook::run`,arguments:[O.object(b),O.object(I)]});let T;try{T=await m.signAndExecuteTransaction({signer:_,transaction:O,options:{showEffects:!0}})}catch(r){console.error(i.red("Failed to execute deployHook, please republish or manually call deploy_hook::run")),console.error(r.message),process.exit(1)}T.effects?.status.status==="success"?console.log(i.green(`Successful auto-execution of deployHook, please check the transaction digest: ${T.digest}`)):console.log(i.yellow("Failed to execute deployHook, please republish or manually call deploy_hook::run"))}import{Obelisk as Ie}from"@0xobelisk/sui-client";import{Transaction as Q,UpgradePolicy as Oe}from"@mysten/sui/transactions";import{getFullnodeUrl as Ee,SuiClient as Pe}from"@mysten/sui/client";import{execSync as $e}from"child_process";import w from"chalk";async function ee(e,t,o){let l=process.cwd(),n=`${l}/contracts/${e}`,d=process.env.PRIVATE_KEY;if(!d)throw new a(`Missing PRIVATE_KEY environment variable.
|
|
8
8
|
Run 'echo "PRIVATE_KEY=YOUR_PRIVATE_KEY" > .env'
|
|
9
|
-
in your contracts directory to use the default sui private key.`);let f=
|
|
10
|
-
Executing the migrate: `),await(s=>new Promise(
|
|
11
|
-
${e} world schemas is ${
|
|
9
|
+
in your contracts directory to use the default sui private key.`);let f=P(d);if(f===!1)throw new a("Please check your privateKey.");let m=new Ie({secretKey:f}).getKeypair(),y=new Pe({url:Ee(t)}),k=Number(await B(n,t)),x=await J(n,t),h=await q(n,t),p=await G(n,t),C=await L(n,t),g=k+1;await N(n,g.toString());try{let b,$,I;try{let{modules:s,dependencies:j,digest:pe}=JSON.parse($e(`sui move build --dump-bytecode-as-base64 --path ${l}/contracts/${e}`,{encoding:"utf-8"}));b=s,$=j,I=pe}catch(s){throw new V(s.stdout)}let c=new Q,O=c.moveCall({target:"0x2::package::authorize_upgrade",arguments:[c.object(p),c.pure.u8(Oe.COMPATIBLE),c.pure.vector("u8",I)]}),T=c.upgrade({modules:b,dependencies:$,package:x,ticket:O});c.moveCall({target:"0x2::package::commit_upgrade",arguments:[c.object(p),T]}),c.transferObjects([c.object(p)],m.toSuiAddress());let r=await y.signAndExecuteTransaction({signer:m,transaction:c,options:{showObjectChanges:!0}});console.log(""),console.log(`${e} WorldId: ${h}`);let u="",F="";r.objectChanges.map(s=>{s.type==="published"&&(console.log(w.blue(`${e} PackageId: ${s.packageId}`)),u=s.packageId),s.type==="mutated"&&s.objectType==="0x2::package::UpgradeCap"&&(console.log(w.blue(`${e} UpgradeCap: ${s.objectId}`)),F=s.objectId)}),console.log(w.green(`Upgrade Transaction Digest: ${r.digest}`)),M(e,t,u,h,F,C,g),x=u,p=F,k=g,console.log(`
|
|
10
|
+
Executing the migrate: `),await(s=>new Promise(j=>setTimeout(j,s)))(5e3);let v=new Q;v.moveCall({target:`${u}::migrate::run`,arguments:[v.object(h),v.object(C)]});let K=(await y.getObject({id:h,options:{showContent:!0,showDisplay:!0,showType:!0,showOwner:!0}})).data.content,W=o.filter(s=>!K.fields.schema_names.includes(s));console.log("new schema:",W);let U=[];for(let s of W)v.moveCall({target:`${u}::${s}_schema::register`,arguments:[v.object(h),v.object(C)]}),U.push(`${s}_schema`);(await y.signAndExecuteTransaction({signer:m,transaction:v,options:{showEffects:!0}})).effects?.status.status==="success"?(console.log(w.green(`${e} migrate world success, new world version is: ${K.fields.version}, package version is ${g}`)),U.length!==0&&console.log(w.green(`new schema: ${U.toString()} register success.`)),console.log(w.blue(`
|
|
11
|
+
${e} world schemas is ${K.fields.schema_names}`))):console.log(w.red(`${e} migrate world failed, world version is: ${K.fields.version}, package version is ${g}`))}catch(b){console.log(w.red("Upgrade failed!")),console.error(b.message),M(e,t,x,h,p,C,k),await N(n,k.toString())}}import Te from"chalk";function te(){console.log(Te.yellow(`
|
|
12
12
|
Welcome to obelisk world
|
|
13
13
|
--from team@obelisk
|
|
14
14
|
________ ________ _______ ___ ___ ________ ___ __
|
|
@@ -21,7 +21,7 @@ Welcome to obelisk world
|
|
|
21
21
|
\\|_________|
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
`))}var Ve={command:"faucet",describe:"Interact with a Obelisk faucet",builder(e){return e.options({network:{type:"string",desc:"URL of the Obelisk faucet",choices:["testnet","devnet","localnet"],default:"localnet"},recipient:{type:"string",desc:"Sui address to fund"}})},async handler({network:e,recipient:t}){let o="";if(t===void 0){let d=process.env.PRIVATE_KEY;if(!d)throw new
|
|
24
|
+
`))}var Ve={command:"faucet",describe:"Interact with a Obelisk faucet",builder(e){return e.options({network:{type:"string",desc:"URL of the Obelisk faucet",choices:["testnet","devnet","localnet"],default:"localnet"},recipient:{type:"string",desc:"Sui address to fund"}})},async handler({network:e,recipient:t}){let o="";if(t===void 0){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
|
-
in your contracts directory to use the default sui private key.`);let f=
|
|
26
|
+
in your contracts directory to use the default sui private key.`);let f=P(d);if(f===!1)throw new a("Please check your privateKey.");o=new Se({secretKey:f}).getKeypair().toSuiAddress()}else o=t;await Re({host:Ae(e),recipient:o});let l=new Me({url:Ke(e)}),n={owner:o};console.log(`Account: ${o}`),console.log(await l.getBalance(n)),process.exit(0)}},oe=Ve;import{worldgen as Fe,loadConfig as Ue}from"@0xobelisk/sui-common";import je from"chalk";var De={command:"schemagen <configPath>",describe:"Autogenerate Obelisk schemas based on the config file",builder(e){return e.options({configPath:{type:"string",desc:"Path to the config file"}})},async handler({configPath:e}){try{let t=await Ue(e);Fe(t),process.exit(0)}catch(t){console.log(je.red("Schemagen failed!")),console.error(t.message)}}},re=De;import{loadConfig as Ye}from"@0xobelisk/sui-common";var Ne={command:"publish",describe:"Publish obelisk move contracts",builder(e){return e.options({network:{type:"string",choices:["mainnet","testnet","devnet","localnet"],desc:"Network of the node (mainnet/testnet/devnet/localnet)"},configPath:{type:"string",default:"obelisk.config.ts",decs:"Path to the config file"}})},async handler({network:e,configPath:t}){try{let o=await Ye(t);await X(o.name,e)}catch(o){E(o),process.exit(1)}process.exit(0)}},ne=Ne;import{loadConfig as We}from"@0xobelisk/sui-common";var He={command:"upgrade",describe:"Upgrade your move contracts",builder(e){return e.options({network:{type:"string",choices:["mainnet","testnet","devnet","localnet"],desc:"Network of the node (mainnet/testnet/devnet/localnet)"},configPath:{type:"string",default:"obelisk.config.ts",decs:"Path to the config file"}})},async handler({network:e,configPath:t}){try{let o=await We(t),l=Object.keys(o.schemas).filter(n=>!(typeof o.schemas=="object"&&"ephemeral"in o.schemas&&o.schemas[n].ephemeral));await ee(o.name,e,l)}catch(o){E(o),process.exit(1)}process.exit(0)}},se=He;import{execSync as Be}from"child_process";import Je from"chalk";var qe={command:"test",describe:"Run tests in Obelisk contracts",builder(e){return e.options({packagePath:{type:"string",default:".",description:"Options to pass to forge test"}})},async handler({packagePath:e}){try{Be(`sui move test --path ${e}`,{encoding:"utf-8"})}catch(t){console.error(Je.red("Error executing sui move test:")),console.log(t.stdout),process.exit(0)}}},ae=qe;var Ge={command:"hello",describe:"hello, obelisk",builder(e){return e},async handler(){te()}},ie=Ge;var le=[ne,H,oe,re,se,ae,ie];import*as de from"dotenv";import ce from"chalk";de.config();Le(Ze(process.argv)).scriptName("obelisk").command(le).strict().fail((e,t)=>{console.error(ce.red(e)),e.includes("Missing required argument")&&console.log(ce.yellow(`Run 'pnpm obelisk ${process.argv[2]} --help' for a list of available and required arguments.`)),console.log(""),E(t),console.log(""),process.exit(1)}).alias({h:"help"}).argv;
|
|
27
27
|
//# sourceMappingURL=obelisk.js.map
|
package/dist/obelisk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/obelisk.ts","../src/commands/localnode.ts","../src/commands/faucet.ts","../src/utils/publishHandler.ts","../src/utils/errors.ts","../src/utils/utils.ts","../src/utils/upgradeHandler.ts","../src/utils/printObelisk.ts","../src/commands/schemagen.ts","../src/commands/publish.ts","../src/commands/upgrade.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 \"obelisk\" for e.g. ts-node)\n .scriptName(\"obelisk\")\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 obelisk ${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 type { CommandModule } from \"yargs\";\nimport { execa } from \"execa\";\n\nconst commandModule: CommandModule = {\n command: \"localnode\",\n\n describe: \"Start a local Sui node for development\",\n\n builder(yargs) {\n return yargs;\n },\n\n async handler() {\n console.log(\"Clearing localnode history\");\n\n console.log(`Running: sui-test-validator`);\n const child = execa(\"sui-test-validator\");\n\n process.on(\"SIGINT\", () => {\n console.log(\"\\ngracefully shutting down from SIGINT (Crtl-C)\");\n child.kill();\n process.exit();\n });\n await child;\n },\n};\n\nexport default commandModule;\n","import { Obelisk } from '@0xobelisk/sui-client';\nimport type { CommandModule } from 'yargs';\nimport { requestSuiFromFaucetV0, getFaucetHost } from '@mysten/sui.js/faucet';\nimport {\n\tSuiClient,\n\tgetFullnodeUrl,\n\tGetBalanceParams,\n} from '@mysten/sui.js/client';\nimport { validatePrivateKey, ObeliskCliError } 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 Obelisk 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 Obelisk 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 ObeliskCliError(\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 ObeliskCliError(`Please check your privateKey.`);\n\t\t\t}\n\t\t\tconst obelisk = new Obelisk({\n\t\t\t\tsecretKey: privateKeyFormat,\n\t\t\t});\n\t\t\tconst keypair = obelisk.getKeypair();\n\t\t\tfaucet_address = keypair.toSuiAddress();\n\t\t} else {\n\t\t\tfaucet_address = recipient;\n\t\t}\n\t\tawait requestSuiFromFaucetV0({\n\t\t\thost: getFaucetHost(network),\n\t\t\trecipient: faucet_address,\n\t\t});\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\t\tconsole.log(`Account: ${faucet_address}`);\n\t\tconsole.log(await client.getBalance(params));\n\t\tprocess.exit(0);\n\t},\n};\n\nexport default commandModule;\n","import { Obelisk } from '@0xobelisk/sui-client';\nimport { TransactionBlock } from '@mysten/sui.js/transactions';\nimport {\n\tgetFullnodeUrl,\n\tSuiClient,\n\tSuiTransactionBlockResponse,\n} from '@mysten/sui.js/client';\nimport { execSync } from 'child_process';\nimport chalk from 'chalk';\nimport { ObeliskCliError } from './errors';\nimport {\n\tupdateVersionInFile,\n\tsaveContractData,\n\tvalidatePrivateKey,\n} from './utils';\n\nexport async function publishHandler(\n\tname: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n\tconst path = process.cwd();\n\tconst projectPath = `${path}/contracts/${name}`;\n\n\tconst privateKey = process.env.PRIVATE_KEY;\n\tif (!privateKey)\n\t\tthrow new ObeliskCliError(\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\n\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\tif (privateKeyFormat === false) {\n\t\tthrow new ObeliskCliError(`Please check your privateKey.`);\n\t}\n\tconst obelisk = new Obelisk({\n\t\tsecretKey: privateKeyFormat,\n\t});\n\tconst keypair = obelisk.getKeypair();\n\n\tconst client = new SuiClient({\n\t\turl: getFullnodeUrl(network),\n\t});\n\n\t// Set version 1\n\tawait updateVersionInFile(projectPath, '1');\n\tlet modules: any, dependencies: any;\n\ttry {\n\t\tconst {\n\t\t\tmodules: extractedModules,\n\t\t\tdependencies: extractedDependencies,\n\t\t} = 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 = extractedModules;\n\t\tdependencies = extractedDependencies;\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red('Error executing sui move build:'));\n\t\tconsole.error(error.stdout);\n\t\tprocess.exit(1); // You might want to exit with a non-zero status code to indicate an error\n\t}\n\n\tconsole.log(chalk.blue(`Account: ${keypair.toSuiAddress()}`));\n\n\tconst tx = new TransactionBlock();\n\tconst [upgradeCap] = tx.publish({\n\t\tmodules,\n\t\tdependencies,\n\t});\n\ttx.transferObjects(\n\t\t[upgradeCap],\n\t\ttx.pure(keypair.getPublicKey().toSuiAddress())\n\t);\n\n\tlet result: SuiTransactionBlockResponse;\n\ttry {\n\t\tresult = await client.signAndExecuteTransactionBlock({\n\t\t\tsigner: keypair,\n\t\t\ttransactionBlock: tx,\n\t\t\toptions: {\n\t\t\t\tshowObjectChanges: true,\n\t\t\t},\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(`Failed to execute publish, please republish`));\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(`Failed to execute publish, please republish`));\n\t\tprocess.exit(1);\n\t}\n\n\tlet version = 1;\n\tlet packageId = '';\n\tlet worldId = '';\n\tlet upgradeCapId = '';\n\tlet adminCapId = '';\n\tresult.objectChanges!.map(object => {\n\t\tif (object.type === 'published') {\n\t\t\tconsole.log(chalk.blue(`${name} PackageId: ${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.endsWith('::world::World')\n\t\t) {\n\t\t\tconsole.log(chalk.blue(`${name} WorldId: ${object.objectId}`));\n\t\t\tworldId = object.objectId;\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(chalk.blue(`${name} UpgradeCap: ${object.objectId}`));\n\t\t\tupgradeCapId = object.objectId;\n\t\t}\n\t\tif (\n\t\t\tobject.type === 'created' &&\n\t\t\tobject.objectType.endsWith('::world::AdminCap')\n\t\t) {\n\t\t\tconsole.log(chalk.blue(`${name} AdminCapId: ${object.objectId}`));\n\t\t\tadminCapId = object.objectId;\n\t\t}\n\t});\n\n\tconsole.log(chalk.green(`Publish transaction digest: ${result.digest}`));\n\n\tsaveContractData(\n\t\tname,\n\t\tnetwork,\n\t\tpackageId,\n\t\tworldId,\n\t\tupgradeCapId,\n\t\tadminCapId,\n\t\tversion\n\t);\n\n\tconsole.log('Executing the deployHook: ');\n\tconst delay = (ms: number) =>\n\t\tnew Promise(resolve => setTimeout(resolve, ms));\n\tawait delay(5000);\n\n\tconst deployHookTx = new TransactionBlock();\n\n\tdeployHookTx.moveCall({\n\t\ttarget: `${packageId}::deploy_hook::run`,\n\t\targuments: [\n\t\t\tdeployHookTx.object(worldId),\n\t\t\tdeployHookTx.object(adminCapId),\n\t\t],\n\t});\n\n\tlet deployHookResult: SuiTransactionBlockResponse;\n\ttry {\n\t\tdeployHookResult = await client.signAndExecuteTransactionBlock({\n\t\t\tsigner: keypair,\n\t\t\ttransactionBlock: deployHookTx,\n\t\t\toptions: {\n\t\t\t\tshowEffects: true,\n\t\t\t},\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\t`Failed to execute deployHook, please republish or manually call deploy_hook::run`\n\t\t\t)\n\t\t);\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(\n\t\t\tchalk.green(\n\t\t\t\t`Successful auto-execution of deployHook, please check the transaction digest: ${deployHookResult.digest}`\n\t\t\t)\n\t\t);\n\t} else {\n\t\tconsole.log(\n\t\t\tchalk.yellow(\n\t\t\t\t`Failed to execute deployHook, 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 Obelisk project\";\n}\n\nexport class ObeliskCliError extends Error {\n name = \"ObeliskCliError\";\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 Obelisk's configuration, please go to https://github.com/0xobelisk`\n )\n );\n } else if (error instanceof ObeliskCliError) {\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 {\n\tSUI_PRIVATE_KEY_PREFIX,\n\tdecodeSuiPrivateKey,\n} from '@mysten/sui.js/cryptography';\nimport { FsIibError } from './errors';\n\nexport type DeploymentJsonType = {\n\tprojectName: string;\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\tpackageId: string;\n\tworldId: string;\n\tupgradeCap: string;\n\tadminCap: 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/codegen/eps/world.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 getWorldId(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.worldId;\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 getAdminCap(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.adminCap;\n}\n\nexport function saveContractData(\n\tprojectName: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tpackageId: string,\n\tworldId: string,\n\tupgradeCap: string,\n\tadminCap: string,\n\tversion: number\n) {\n\tconst DeploymentData: DeploymentJsonType = {\n\t\tprojectName,\n\t\tnetwork,\n\t\tpackageId,\n\t\tworldId,\n\t\tupgradeCap,\n\t\tadminCap,\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 { Obelisk } from '@0xobelisk/sui-client';\nimport { TransactionBlock, UpgradePolicy } from '@mysten/sui.js/transactions';\nimport { getFullnodeUrl, SuiClient } from '@mysten/sui.js/client';\nimport { execSync } from 'child_process';\nimport chalk from 'chalk';\nimport { ObeliskCliError, UpgradeError } from './errors';\nimport {\n\tupdateVersionInFile,\n\tgetOldPackageId,\n\tgetVersion,\n\tgetWorldId,\n\tgetUpgradeCap,\n\tsaveContractData,\n\tvalidatePrivateKey,\n\tgetAdminCap,\n} from './utils';\n\ntype ObjectContent = {\n\ttype: string;\n\tfields: Record<string, any>;\n\thasPublicTransfer: boolean;\n\tdataType: string;\n};\n\nexport async function upgradeHandler(\n\tname: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tschemaNames: string[]\n) {\n\tconst path = process.cwd();\n\tconst projectPath = `${path}/contracts/${name}`;\n\tconst privateKey = process.env.PRIVATE_KEY;\n\tif (!privateKey)\n\t\tthrow new ObeliskCliError(\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\n\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\tif (privateKeyFormat === false) {\n\t\tthrow new ObeliskCliError(`Please check your privateKey.`);\n\t}\n\tconst obelisk = new Obelisk({\n\t\tsecretKey: privateKeyFormat,\n\t});\n\tconst keypair = obelisk.getKeypair();\n\n\tconst client = new SuiClient({\n\t\turl: getFullnodeUrl(network),\n\t});\n\n\tlet oldVersion = Number(await getVersion(projectPath, network));\n\tlet oldPackageId = await getOldPackageId(projectPath, network);\n\tlet worldId = await getWorldId(projectPath, network);\n\tlet upgradeCap = await getUpgradeCap(projectPath, network);\n\tlet adminCap = await getAdminCap(projectPath, network);\n\n\tconst newVersion = oldVersion + 1;\n\tawait updateVersionInFile(projectPath, newVersion.toString());\n\n\ttry {\n\t\tlet modules: any, dependencies: any, digest: any;\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tmodules: extractedModules,\n\t\t\t\tdependencies: extractedDependencies,\n\t\t\t\tdigest: extractedDigest,\n\t\t\t} = JSON.parse(\n\t\t\t\texecSync(\n\t\t\t\t\t`sui move build --dump-bytecode-as-base64 --path ${path}/contracts/${name}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tencoding: 'utf-8',\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tmodules = extractedModules;\n\t\t\tdependencies = extractedDependencies;\n\t\t\tdigest = extractedDigest;\n\t\t} catch (error: any) {\n\t\t\tthrow new UpgradeError(error.stdout);\n\t\t}\n\n\t\tconst tx = new TransactionBlock();\n\t\tconst ticket = tx.moveCall({\n\t\t\ttarget: '0x2::package::authorize_upgrade',\n\t\t\targuments: [\n\t\t\t\ttx.object(upgradeCap),\n\t\t\t\ttx.pure(UpgradePolicy.COMPATIBLE),\n\t\t\t\ttx.pure(digest),\n\t\t\t],\n\t\t});\n\n\t\tconst receipt = tx.upgrade({\n\t\t\tmodules,\n\t\t\tdependencies,\n\t\t\tpackageId: oldPackageId,\n\t\t\tticket,\n\t\t});\n\n\t\ttx.moveCall({\n\t\t\ttarget: '0x2::package::commit_upgrade',\n\t\t\targuments: [tx.object(upgradeCap), receipt],\n\t\t});\n\n\t\ttx.transferObjects(\n\t\t\t[tx.object(upgradeCap)],\n\t\t\ttx.pure(keypair.getPublicKey().toSuiAddress())\n\t\t);\n\n\t\tconst result = await client.signAndExecuteTransactionBlock({\n\t\t\tsigner: keypair,\n\t\t\ttransactionBlock: tx,\n\t\t\toptions: {\n\t\t\t\tshowObjectChanges: true,\n\t\t\t},\n\t\t});\n\n\t\tconsole.log('');\n\t\tconsole.log(`${name} WorldId: ${worldId}`);\n\n\t\tlet newPackageId = '';\n\t\tlet newUpgradeCap = '';\n\t\tresult.objectChanges!.map(object => {\n\t\t\tif (object.type === 'published') {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.blue(`${name} PackageId: ${object.packageId}`)\n\t\t\t\t);\n\t\t\t\tnewPackageId = object.packageId;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tobject.type === 'mutated' &&\n\t\t\t\tobject.objectType === '0x2::package::UpgradeCap'\n\t\t\t) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.blue(`${name} UpgradeCap: ${object.objectId}`)\n\t\t\t\t);\n\t\t\t\tnewUpgradeCap = object.objectId;\n\t\t\t}\n\t\t});\n\n\t\tconsole.log(\n\t\t\tchalk.green(`Upgrade Transaction Digest: ${result.digest}`)\n\t\t);\n\n\t\tsaveContractData(\n\t\t\tname,\n\t\t\tnetwork,\n\t\t\tnewPackageId,\n\t\t\tworldId,\n\t\t\tnewUpgradeCap,\n\t\t\tadminCap,\n\t\t\tnewVersion\n\t\t);\n\n\t\toldPackageId = newPackageId;\n\t\tupgradeCap = newUpgradeCap;\n\t\toldVersion = newVersion;\n\n\t\tconsole.log('\\nExecuting the migrate: ');\n\t\tconst delay = (ms: number) =>\n\t\t\tnew Promise(resolve => setTimeout(resolve, ms));\n\t\tawait delay(5000);\n\n\t\tconst migrateTx = new TransactionBlock();\n\t\tmigrateTx.moveCall({\n\t\t\ttarget: `${newPackageId}::world::migrate`,\n\t\t\targuments: [migrateTx.object(worldId), migrateTx.object(adminCap)],\n\t\t});\n\n\t\tlet newWorldObject = await client.getObject({\n\t\t\tid: worldId,\n\t\t\toptions: {\n\t\t\t\tshowContent: true,\n\t\t\t\tshowDisplay: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowOwner: true,\n\t\t\t},\n\t\t});\n\t\tlet newObjectContent = newWorldObject.data!.content as ObjectContent;\n\n\t\tconst uniqueSchema: string[] = schemaNames.filter(\n\t\t\titem => !newObjectContent.fields['schema_names'].includes(item)\n\t\t);\n\n\t\tconsole.log('new schema:', uniqueSchema);\n\t\tlet needRegisterSchema = [];\n\t\tfor (const newSchema of uniqueSchema) {\n\t\t\tmigrateTx.moveCall({\n\t\t\t\ttarget: `${newPackageId}::${newSchema}_schema::register`,\n\t\t\t\targuments: [\n\t\t\t\t\tmigrateTx.object(worldId),\n\t\t\t\t\tmigrateTx.object(adminCap),\n\t\t\t\t],\n\t\t\t});\n\t\t\tneedRegisterSchema.push(`${newSchema}_schema`);\n\t\t}\n\t\tconst migrateResult = await client.signAndExecuteTransactionBlock({\n\t\t\tsigner: keypair,\n\t\t\ttransactionBlock: migrateTx,\n\t\t\toptions: {\n\t\t\t\tshowEffects: true,\n\t\t\t},\n\t\t});\n\n\t\tif (migrateResult.effects?.status.status === 'success') {\n\t\t\tconsole.log(\n\t\t\t\tchalk.green(\n\t\t\t\t\t`${name} migrate world success, new world version is: ${newObjectContent.fields['version']}, package version is ${newVersion}`\n\t\t\t\t)\n\t\t\t);\n\t\t\tif (needRegisterSchema.length !== 0) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.green(\n\t\t\t\t\t\t`new schema: ${needRegisterSchema.toString()} register success.`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconsole.log(\n\t\t\t\tchalk.blue(\n\t\t\t\t\t`\\n${name} world schemas is ${newObjectContent.fields['schema_names']}`\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tconsole.log(\n\t\t\t\tchalk.red(\n\t\t\t\t\t`${name} migrate world failed, world version is: ${newObjectContent.fields['version']}, package version is ${newVersion}`\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t} catch (error: any) {\n\t\tconsole.log(chalk.red('Upgrade failed!'));\n\t\tconsole.error(error.message);\n\n\t\tsaveContractData(\n\t\t\tname,\n\t\t\tnetwork,\n\t\t\toldPackageId,\n\t\t\tworldId,\n\t\t\tupgradeCap,\n\t\t\tadminCap,\n\t\t\toldVersion\n\t\t);\n\t\tawait updateVersionInFile(projectPath, oldVersion.toString());\n\t}\n}\n","import chalk from \"chalk\";\n\nexport function printObelisk() {\n console.log(\n chalk.yellow(`\nWelcome to obelisk world\n\\t\\t\\t --from team@obelisk\n ________ ________ _______ ___ ___ ________ ___ __ \n|\\\\ __ \\\\|\\\\ __ \\\\|\\\\ ___ \\\\ |\\\\ \\\\ |\\\\ \\\\|\\\\ ____\\\\|\\\\ \\\\|\\\\ \\\\ \n\\\\ \\\\ \\\\|\\\\ \\\\ \\\\ \\\\|\\\\ /\\\\ \\\\ __/|\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\___|\\\\ \\\\ \\\\/ /|_ \n \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ __ \\\\ \\\\ \\\\_|/_\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\_____ \\\\ \\\\ ___ \\\\ \n \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ \\\\|\\\\ \\\\ \\\\ \\\\_|\\\\ \\\\ \\\\ \\\\____\\\\ \\\\ \\\\|____|\\\\ \\\\ \\\\ \\\\\\\\ \\\\ \\\\ \n \\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\__\\\\____\\\\_\\\\ \\\\ \\\\__\\\\\\\\ \\\\__\\\\\n \\\\|_______|\\\\|_______|\\\\|_______|\\\\|_______|\\\\|__|\\\\_________\\\\|__| \\\\|__|\n \\\\|_________| \n \n \n`)\n );\n}\n","import type { CommandModule } from \"yargs\";\nimport { worldgen, loadConfig, ObeliskConfig } from \"@0xobelisk/sui-common\";\nimport chalk from \"chalk\";\n\ntype Options = {\n configPath?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"schemagen <configPath>\",\n\n describe: \"Autogenerate Obelisk schemas based on the config file\",\n\n builder(yargs) {\n return yargs.options({\n configPath: { type: \"string\", desc: \"Path to the config file\" },\n });\n },\n\n async handler({ configPath }) {\n try {\n const obeliskConfig = (await loadConfig(configPath)) as ObeliskConfig;\n worldgen(obeliskConfig);\n process.exit(0);\n } catch (error: any) {\n console.log(chalk.red(\"Schemagen failed!\"));\n console.error(error.message);\n }\n },\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { logError } from \"../utils/errors\";\nimport { publishHandler } from \"../utils\";\nimport { loadConfig, ObeliskConfig } from \"@0xobelisk/sui-common\";\n\ntype Options = {\n network: any;\n configPath: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"publish\",\n\n describe: \"Publish obelisk move contracts\",\n\n builder(yargs) {\n return yargs.options({\n network: {\n type: \"string\",\n choices: [\"mainnet\", \"testnet\", \"devnet\", \"localnet\"],\n desc: \"Network of the node (mainnet/testnet/devnet/localnet)\",\n },\n configPath: {\n type: \"string\",\n default: \"obelisk.config.ts\",\n decs: \"Path to the config file\",\n },\n });\n },\n\n async handler({ network, configPath }) {\n try {\n const obeliskConfig = (await loadConfig(configPath)) as ObeliskConfig;\n await publishHandler(obeliskConfig.name, network);\n } catch (error: any) {\n logError(error);\n process.exit(1);\n }\n process.exit(0);\n },\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { logError } from \"../utils/errors\";\nimport { upgradeHandler } from \"../utils\";\nimport { ObeliskConfig, loadConfig, ValueType } from \"@0xobelisk/sui-common\";\n\ntype Options = {\n network: any;\n configPath: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"upgrade\",\n\n describe: \"Upgrade your move contracts\",\n\n builder(yargs) {\n return yargs.options({\n network: {\n type: \"string\",\n choices: [\"mainnet\", \"testnet\", \"devnet\", \"localnet\"],\n desc: \"Network of the node (mainnet/testnet/devnet/localnet)\",\n },\n configPath: {\n type: \"string\",\n default: \"obelisk.config.ts\",\n decs: \"Path to the config file\",\n },\n });\n },\n\n async handler({ network, configPath }) {\n try {\n const obeliskConfig = (await loadConfig(configPath)) as ObeliskConfig;\n\n let schemaNames = Object.keys(obeliskConfig.schemas).filter(\n (key) =>\n !(\n typeof obeliskConfig.schemas === \"object\" &&\n \"ephemeral\" in obeliskConfig.schemas &&\n (obeliskConfig.schemas[key] as ValueType).ephemeral\n )\n );\n\n await upgradeHandler(obeliskConfig.name, network, schemaNames);\n } catch (error: any) {\n logError(error);\n process.exit(1);\n }\n process.exit(0);\n },\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 Obelisk 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 { printObelisk } from \"../utils\";\n\nconst commandModule: CommandModule = {\n command: \"hello\",\n\n describe: \"hello, obelisk\",\n\n builder(yargs) {\n return yargs;\n },\n\n async handler() {\n printObelisk();\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\";\nimport 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 publish,\n localnode,\n faucet,\n schemagen,\n upgrade,\n test,\n hello,\n];\n"],"mappings":"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","names":["yargs","hideBin","execa","commandModule","yargs","child","localnode_default","Obelisk","requestSuiFromFaucetV0","getFaucetHost","SuiClient","getFullnodeUrl","Obelisk","TransactionBlock","getFullnodeUrl","SuiClient","execSync","chalk","chalk","ZodError","fromZodError","ValidationError","NotInsideProjectError","ObeliskCliError","UpgradeError","FsIibError","logError","error","validationError","fsAsync","mkdirSync","writeFileSync","dirname","SUI_PRIVATE_KEY_PREFIX","validatePrivateKey","privateKey","SUI_PRIVATE_KEY_PREFIX","strippedPrivateKey","updateVersionInFile","projectPath","newVersion","filePath","updatedData","writeOutput","FsIibError","getDeploymentJson","network","data","getVersion","getOldPackageId","projectPath","network","getDeploymentJson","getWorldId","getUpgradeCap","getAdminCap","saveContractData","projectName","packageId","worldId","upgradeCap","adminCap","version","DeploymentData","path","storeDeploymentData","writeOutput","output","fullOutputPath","logPrefix","mkdirSync","dirname","writeFileSync","publishHandler","name","network","projectPath","privateKey","ObeliskCliError","privateKeyFormat","validatePrivateKey","keypair","Obelisk","client","SuiClient","getFullnodeUrl","updateVersionInFile","modules","dependencies","extractedModules","extractedDependencies","execSync","error","chalk","tx","TransactionBlock","upgradeCap","result","version","packageId","worldId","upgradeCapId","adminCapId","object","saveContractData","ms","resolve","deployHookTx","deployHookResult","Obelisk","TransactionBlock","UpgradePolicy","getFullnodeUrl","SuiClient","execSync","chalk","upgradeHandler","name","network","schemaNames","path","projectPath","privateKey","ObeliskCliError","privateKeyFormat","validatePrivateKey","keypair","Obelisk","client","SuiClient","getFullnodeUrl","oldVersion","getVersion","oldPackageId","getOldPackageId","worldId","getWorldId","upgradeCap","getUpgradeCap","adminCap","getAdminCap","newVersion","updateVersionInFile","modules","dependencies","digest","extractedModules","extractedDependencies","extractedDigest","execSync","error","UpgradeError","tx","TransactionBlock","ticket","UpgradePolicy","receipt","result","newPackageId","newUpgradeCap","object","chalk","saveContractData","ms","resolve","migrateTx","newObjectContent","uniqueSchema","item","needRegisterSchema","newSchema","chalk","printObelisk","commandModule","yargs","network","recipient","faucet_address","privateKey","ObeliskCliError","privateKeyFormat","validatePrivateKey","Obelisk","requestSuiFromFaucetV0","getFaucetHost","client","SuiClient","getFullnodeUrl","params","faucet_default","worldgen","loadConfig","chalk","commandModule","yargs","configPath","obeliskConfig","error","schemagen_default","loadConfig","commandModule","yargs","network","configPath","obeliskConfig","publishHandler","error","logError","publish_default","loadConfig","commandModule","yargs","network","configPath","obeliskConfig","schemaNames","key","upgradeHandler","error","logError","upgrade_default","execSync","chalk","commandModule","yargs","packagePath","error","test_default","commandModule","yargs","printObelisk","hello_default","commands","publish_default","localnode_default","faucet_default","schemagen_default","upgrade_default","test_default","hello_default","dotenv","chalk","yargs","hideBin","commands","msg","err","logError"]}
|
|
1
|
+
{"version":3,"sources":["../src/obelisk.ts","../src/commands/localnode.ts","../src/commands/faucet.ts","../src/utils/publishHandler.ts","../src/utils/errors.ts","../src/utils/utils.ts","../src/utils/upgradeHandler.ts","../src/utils/printObelisk.ts","../src/commands/schemagen.ts","../src/commands/publish.ts","../src/commands/upgrade.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 \"obelisk\" for e.g. ts-node)\n .scriptName(\"obelisk\")\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 obelisk ${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 type { CommandModule } from \"yargs\";\nimport { execa } from \"execa\";\n\nconst commandModule: CommandModule = {\n command: \"localnode\",\n\n describe: \"Start a local Sui node for development\",\n\n builder(yargs) {\n return yargs;\n },\n\n async handler() {\n console.log(\"Clearing localnode history\");\n\n console.log(`Running: sui-test-validator`);\n const child = execa(\"sui-test-validator\");\n\n process.on(\"SIGINT\", () => {\n console.log(\"\\ngracefully shutting down from SIGINT (Crtl-C)\");\n child.kill();\n process.exit();\n });\n await child;\n },\n};\n\nexport default commandModule;\n","import { Obelisk } 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, ObeliskCliError } 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 Obelisk 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 Obelisk 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 ObeliskCliError(\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 ObeliskCliError(`Please check your privateKey.`);\n\t\t\t}\n\t\t\tconst obelisk = new Obelisk({\n\t\t\t\tsecretKey: privateKeyFormat,\n\t\t\t});\n\t\t\tconst keypair = obelisk.getKeypair();\n\t\t\tfaucet_address = keypair.toSuiAddress();\n\t\t} else {\n\t\t\tfaucet_address = recipient;\n\t\t}\n\t\tawait requestSuiFromFaucetV0({\n\t\t\thost: getFaucetHost(network),\n\t\t\trecipient: faucet_address,\n\t\t});\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\t\tconsole.log(`Account: ${faucet_address}`);\n\t\tconsole.log(await client.getBalance(params));\n\t\tprocess.exit(0);\n\t},\n};\n\nexport default commandModule;\n","import { Obelisk } 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 { ObeliskCliError } from './errors';\nimport {\n\tupdateVersionInFile,\n\tsaveContractData,\n\tvalidatePrivateKey,\n} from './utils';\n\nexport async function publishHandler(\n\tname: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n\tconst path = process.cwd();\n\tconst projectPath = `${path}/contracts/${name}`;\n\n\tconst privateKey = process.env.PRIVATE_KEY;\n\tif (!privateKey)\n\t\tthrow new ObeliskCliError(\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\n\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\tif (privateKeyFormat === false) {\n\t\tthrow new ObeliskCliError(`Please check your privateKey.`);\n\t}\n\tconst obelisk = new Obelisk({\n\t\tsecretKey: privateKeyFormat,\n\t});\n\tconst keypair = obelisk.getKeypair();\n\n\tconst client = new SuiClient({\n\t\turl: getFullnodeUrl(network),\n\t});\n\n\tlet modules: any, dependencies: any;\n\ttry {\n\t\tconst {\n\t\t\tmodules: extractedModules,\n\t\t\tdependencies: extractedDependencies,\n\t\t} = 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 = extractedModules;\n\t\tdependencies = extractedDependencies;\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red('Error executing sui move build:'));\n\t\tconsole.error(error.stdout);\n\t\tprocess.exit(1); // You might want to exit with a non-zero status code to indicate an error\n\t}\n\n\tconsole.log(chalk.blue(`Account: ${keypair.toSuiAddress()}`));\n\n\tconst tx = new Transaction();\n\tconst [upgradeCap] = tx.publish({\n\t\tmodules,\n\t\tdependencies,\n\t});\n\ttx.transferObjects(\n\t\t[upgradeCap],\n\t\tkeypair.toSuiAddress()\n\t);\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: {\n\t\t\t\tshowObjectChanges: true,\n\t\t\t},\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(chalk.red(`Failed to execute publish, please republish`));\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(`Failed to execute publish, please republish`));\n\t\tprocess.exit(1);\n\t}\n\n\tlet version = 1;\n\tlet packageId = '';\n\tlet worldId = '';\n\tlet upgradeCapId = '';\n\tlet adminCapId = '';\n\tresult.objectChanges!.map(object => {\n\t\tif (object.type === 'published') {\n\t\t\tconsole.log(chalk.blue(`${name} PackageId: ${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.endsWith('::world::World')\n\t\t) {\n\t\t\tconsole.log(chalk.blue(`${name} WorldId: ${object.objectId}`));\n\t\t\tworldId = object.objectId;\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(chalk.blue(`${name} UpgradeCap: ${object.objectId}`));\n\t\t\tupgradeCapId = object.objectId;\n\t\t}\n\t\tif (\n\t\t\tobject.type === 'created' &&\n\t\t\tobject.objectType.endsWith('::world::AdminCap')\n\t\t) {\n\t\t\tconsole.log(chalk.blue(`${name} AdminCapId: ${object.objectId}`));\n\t\t\tadminCapId = object.objectId;\n\t\t}\n\t});\n\n\tconsole.log(chalk.green(`Publish transaction digest: ${result.digest}`));\n\n\tsaveContractData(\n\t\tname,\n\t\tnetwork,\n\t\tpackageId,\n\t\tworldId,\n\t\tupgradeCapId,\n\t\tadminCapId,\n\t\tversion\n\t);\n\n\tconsole.log('Executing the deployHook: ');\n\tconst delay = (ms: number) =>\n\t\tnew Promise(resolve => setTimeout(resolve, ms));\n\tawait delay(5000);\n\n\tconst deployHookTx = new Transaction();\n\n\tdeployHookTx.moveCall({\n\t\ttarget: `${packageId}::deploy_hook::run`,\n\t\targuments: [\n\t\t\tdeployHookTx.object(worldId),\n\t\t\tdeployHookTx.object(adminCapId),\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: {\n\t\t\t\tshowEffects: true,\n\t\t\t},\n\t\t});\n\t} catch (error: any) {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\t`Failed to execute deployHook, please republish or manually call deploy_hook::run`\n\t\t\t)\n\t\t);\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(\n\t\t\tchalk.green(\n\t\t\t\t`Successful auto-execution of deployHook, please check the transaction digest: ${deployHookResult.digest}`\n\t\t\t)\n\t\t);\n\t} else {\n\t\tconsole.log(\n\t\t\tchalk.yellow(\n\t\t\t\t`Failed to execute deployHook, 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 Obelisk project\";\n}\n\nexport class ObeliskCliError extends Error {\n name = \"ObeliskCliError\";\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 Obelisk's configuration, please go to https://github.com/0xobelisk`\n )\n );\n } else if (error instanceof ObeliskCliError) {\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';\n\nexport type DeploymentJsonType = {\n\tprojectName: string;\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\tpackageId: string;\n\tworldId: string;\n\tupgradeCap: string;\n\tadminCap: 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 getWorldId(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.worldId;\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 getAdminCap(\n\tprojectPath: string,\n\tnetwork: string\n): Promise<string> {\n\tconst deployment = await getDeploymentJson(projectPath, network);\n\treturn deployment.adminCap;\n}\n\nexport function saveContractData(\n\tprojectName: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tpackageId: string,\n\tworldId: string,\n\tupgradeCap: string,\n\tadminCap: string,\n\tversion: number\n) {\n\tconst DeploymentData: DeploymentJsonType = {\n\t\tprojectName,\n\t\tnetwork,\n\t\tpackageId,\n\t\tworldId,\n\t\tupgradeCap,\n\t\tadminCap,\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 { Obelisk } from '@0xobelisk/sui-client';\nimport { Transaction, UpgradePolicy } from '@mysten/sui/transactions';\nimport { getFullnodeUrl, SuiClient } from '@mysten/sui/client';\nimport { execSync } from 'child_process';\nimport chalk from 'chalk';\nimport { ObeliskCliError, UpgradeError } from './errors';\nimport {\n\tupdateVersionInFile,\n\tgetOldPackageId,\n\tgetVersion,\n\tgetWorldId,\n\tgetUpgradeCap,\n\tsaveContractData,\n\tvalidatePrivateKey,\n\tgetAdminCap,\n} from './utils';\n\ntype ObjectContent = {\n\ttype: string;\n\tfields: Record<string, any>;\n\thasPublicTransfer: boolean;\n\tdataType: string;\n};\n\nexport async function upgradeHandler(\n\tname: string,\n\tnetwork: 'mainnet' | 'testnet' | 'devnet' | 'localnet',\n\tschemaNames: string[]\n) {\n\tconst path = process.cwd();\n\tconst projectPath = `${path}/contracts/${name}`;\n\tconst privateKey = process.env.PRIVATE_KEY;\n\tif (!privateKey)\n\t\tthrow new ObeliskCliError(\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\n\tconst privateKeyFormat = validatePrivateKey(privateKey);\n\tif (privateKeyFormat === false) {\n\t\tthrow new ObeliskCliError(`Please check your privateKey.`);\n\t}\n\tconst obelisk = new Obelisk({\n\t\tsecretKey: privateKeyFormat,\n\t});\n\tconst keypair = obelisk.getKeypair();\n\n\tconst client = new SuiClient({\n\t\turl: getFullnodeUrl(network),\n\t});\n\n\tlet oldVersion = Number(await getVersion(projectPath, network));\n\tlet oldPackageId = await getOldPackageId(projectPath, network);\n\tlet worldId = await getWorldId(projectPath, network);\n\tlet upgradeCap = await getUpgradeCap(projectPath, network);\n\tlet adminCap = await getAdminCap(projectPath, network);\n\n\tconst newVersion = oldVersion + 1;\n\tawait updateVersionInFile(projectPath, newVersion.toString());\n\n\ttry {\n\t\tlet modules: any, dependencies: any, digest: any;\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tmodules: extractedModules,\n\t\t\t\tdependencies: extractedDependencies,\n\t\t\t\tdigest: extractedDigest,\n\t\t\t} = JSON.parse(\n\t\t\t\texecSync(\n\t\t\t\t\t`sui move build --dump-bytecode-as-base64 --path ${path}/contracts/${name}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tencoding: 'utf-8',\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tmodules = extractedModules;\n\t\t\tdependencies = extractedDependencies;\n\t\t\tdigest = extractedDigest;\n\t\t} catch (error: any) {\n\t\t\tthrow new UpgradeError(error.stdout);\n\t\t}\n\n\t\tconst tx = new Transaction();\n\t\tconst ticket = tx.moveCall({\n\t\t\ttarget: '0x2::package::authorize_upgrade',\n\t\t\targuments: [\n\t\t\t\ttx.object(upgradeCap),\n\t\t\t\ttx.pure.u8(UpgradePolicy.COMPATIBLE),\n\t\t\t\ttx.pure.vector('u8', digest),\n\t\t\t],\n\t\t});\n\n\t\tconst receipt = tx.upgrade({\n\t\t\tmodules,\n\t\t\tdependencies,\n\t\t\tpackage: oldPackageId,\n\t\t\tticket,\n\t\t});\n\n\t\ttx.moveCall({\n\t\t\ttarget: '0x2::package::commit_upgrade',\n\t\t\targuments: [tx.object(upgradeCap), receipt],\n\t\t});\n\n\t\ttx.transferObjects(\n\t\t\t[tx.object(upgradeCap)],\n\t\t\tkeypair.toSuiAddress()\n\t\t);\n\n\t\tconst result = await client.signAndExecuteTransaction({\n\t\t\tsigner: keypair,\n\t\t\ttransaction: tx,\n\t\t\toptions: {\n\t\t\t\tshowObjectChanges: true,\n\t\t\t},\n\t\t});\n\n\t\tconsole.log('');\n\t\tconsole.log(`${name} WorldId: ${worldId}`);\n\n\t\tlet newPackageId = '';\n\t\tlet newUpgradeCap = '';\n\t\tresult.objectChanges!.map(object => {\n\t\t\tif (object.type === 'published') {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.blue(`${name} PackageId: ${object.packageId}`)\n\t\t\t\t);\n\t\t\t\tnewPackageId = object.packageId;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tobject.type === 'mutated' &&\n\t\t\t\tobject.objectType === '0x2::package::UpgradeCap'\n\t\t\t) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.blue(`${name} UpgradeCap: ${object.objectId}`)\n\t\t\t\t);\n\t\t\t\tnewUpgradeCap = object.objectId;\n\t\t\t}\n\t\t});\n\n\t\tconsole.log(\n\t\t\tchalk.green(`Upgrade Transaction Digest: ${result.digest}`)\n\t\t);\n\n\t\tsaveContractData(\n\t\t\tname,\n\t\t\tnetwork,\n\t\t\tnewPackageId,\n\t\t\tworldId,\n\t\t\tnewUpgradeCap,\n\t\t\tadminCap,\n\t\t\tnewVersion\n\t\t);\n\n\t\toldPackageId = newPackageId;\n\t\tupgradeCap = newUpgradeCap;\n\t\toldVersion = newVersion;\n\n\t\tconsole.log('\\nExecuting the migrate: ');\n\t\tconst delay = (ms: number) =>\n\t\t\tnew Promise(resolve => setTimeout(resolve, ms));\n\t\tawait delay(5000);\n\n\t\tconst migrateTx = new Transaction();\n\t\tmigrateTx.moveCall({\n\t\t\ttarget: `${newPackageId}::migrate::run`,\n\t\t\targuments: [migrateTx.object(worldId), migrateTx.object(adminCap)],\n\t\t});\n\n\t\tlet newWorldObject = await client.getObject({\n\t\t\tid: worldId,\n\t\t\toptions: {\n\t\t\t\tshowContent: true,\n\t\t\t\tshowDisplay: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowOwner: true,\n\t\t\t},\n\t\t});\n\t\tlet newObjectContent = newWorldObject.data!.content as ObjectContent;\n\n\t\tconst uniqueSchema: string[] = schemaNames.filter(\n\t\t\titem => !newObjectContent.fields['schema_names'].includes(item)\n\t\t);\n\n\t\tconsole.log('new schema:', uniqueSchema);\n\t\tlet needRegisterSchema = [];\n\t\tfor (const newSchema of uniqueSchema) {\n\t\t\tmigrateTx.moveCall({\n\t\t\t\ttarget: `${newPackageId}::${newSchema}_schema::register`,\n\t\t\t\targuments: [\n\t\t\t\t\tmigrateTx.object(worldId),\n\t\t\t\t\tmigrateTx.object(adminCap),\n\t\t\t\t],\n\t\t\t});\n\t\t\tneedRegisterSchema.push(`${newSchema}_schema`);\n\t\t}\n\t\tconst migrateResult = await client.signAndExecuteTransaction({\n\t\t\tsigner: keypair,\n\t\t\ttransaction: migrateTx,\n\t\t\toptions: {\n\t\t\t\tshowEffects: true,\n\t\t\t},\n\t\t});\n\n\t\tif (migrateResult.effects?.status.status === 'success') {\n\t\t\tconsole.log(\n\t\t\t\tchalk.green(\n\t\t\t\t\t`${name} migrate world success, new world version is: ${newObjectContent.fields['version']}, package version is ${newVersion}`\n\t\t\t\t)\n\t\t\t);\n\t\t\tif (needRegisterSchema.length !== 0) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.green(\n\t\t\t\t\t\t`new schema: ${needRegisterSchema.toString()} register success.`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconsole.log(\n\t\t\t\tchalk.blue(\n\t\t\t\t\t`\\n${name} world schemas is ${newObjectContent.fields['schema_names']}`\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tconsole.log(\n\t\t\t\tchalk.red(\n\t\t\t\t\t`${name} migrate world failed, world version is: ${newObjectContent.fields['version']}, package version is ${newVersion}`\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t} catch (error: any) {\n\t\tconsole.log(chalk.red('Upgrade failed!'));\n\t\tconsole.error(error.message);\n\n\t\tsaveContractData(\n\t\t\tname,\n\t\t\tnetwork,\n\t\t\toldPackageId,\n\t\t\tworldId,\n\t\t\tupgradeCap,\n\t\t\tadminCap,\n\t\t\toldVersion\n\t\t);\n\t\tawait updateVersionInFile(projectPath, oldVersion.toString());\n\t}\n}\n","import chalk from \"chalk\";\n\nexport function printObelisk() {\n console.log(\n chalk.yellow(`\nWelcome to obelisk world\n\\t\\t\\t --from team@obelisk\n ________ ________ _______ ___ ___ ________ ___ __ \n|\\\\ __ \\\\|\\\\ __ \\\\|\\\\ ___ \\\\ |\\\\ \\\\ |\\\\ \\\\|\\\\ ____\\\\|\\\\ \\\\|\\\\ \\\\ \n\\\\ \\\\ \\\\|\\\\ \\\\ \\\\ \\\\|\\\\ /\\\\ \\\\ __/|\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\___|\\\\ \\\\ \\\\/ /|_ \n \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ __ \\\\ \\\\ \\\\_|/_\\\\ \\\\ \\\\ \\\\ \\\\ \\\\ \\\\_____ \\\\ \\\\ ___ \\\\ \n \\\\ \\\\ \\\\\\\\\\\\ \\\\ \\\\ \\\\|\\\\ \\\\ \\\\ \\\\_|\\\\ \\\\ \\\\ \\\\____\\\\ \\\\ \\\\|____|\\\\ \\\\ \\\\ \\\\\\\\ \\\\ \\\\ \n \\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\_______\\\\ \\\\__\\\\____\\\\_\\\\ \\\\ \\\\__\\\\\\\\ \\\\__\\\\\n \\\\|_______|\\\\|_______|\\\\|_______|\\\\|_______|\\\\|__|\\\\_________\\\\|__| \\\\|__|\n \\\\|_________| \n \n \n`)\n );\n}\n","import type { CommandModule } from \"yargs\";\nimport { worldgen, loadConfig, ObeliskConfig } from \"@0xobelisk/sui-common\";\nimport chalk from \"chalk\";\n\ntype Options = {\n configPath?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"schemagen <configPath>\",\n\n describe: \"Autogenerate Obelisk schemas based on the config file\",\n\n builder(yargs) {\n return yargs.options({\n configPath: { type: \"string\", desc: \"Path to the config file\" },\n });\n },\n\n async handler({ configPath }) {\n try {\n const obeliskConfig = (await loadConfig(configPath)) as ObeliskConfig;\n worldgen(obeliskConfig);\n process.exit(0);\n } catch (error: any) {\n console.log(chalk.red(\"Schemagen failed!\"));\n console.error(error.message);\n }\n },\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { logError } from \"../utils/errors\";\nimport { publishHandler } from \"../utils\";\nimport { loadConfig, ObeliskConfig } from \"@0xobelisk/sui-common\";\n\ntype Options = {\n network: any;\n configPath: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"publish\",\n\n describe: \"Publish obelisk move contracts\",\n\n builder(yargs) {\n return yargs.options({\n network: {\n type: \"string\",\n choices: [\"mainnet\", \"testnet\", \"devnet\", \"localnet\"],\n desc: \"Network of the node (mainnet/testnet/devnet/localnet)\",\n },\n configPath: {\n type: \"string\",\n default: \"obelisk.config.ts\",\n decs: \"Path to the config file\",\n },\n });\n },\n\n async handler({ network, configPath }) {\n try {\n const obeliskConfig = (await loadConfig(configPath)) as ObeliskConfig;\n await publishHandler(obeliskConfig.name, network);\n } catch (error: any) {\n logError(error);\n process.exit(1);\n }\n process.exit(0);\n },\n};\n\nexport default commandModule;\n","import type { CommandModule } from \"yargs\";\nimport { logError } from \"../utils/errors\";\nimport { upgradeHandler } from \"../utils\";\nimport { ObeliskConfig, loadConfig, ValueType } from \"@0xobelisk/sui-common\";\n\ntype Options = {\n network: any;\n configPath: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"upgrade\",\n\n describe: \"Upgrade your move contracts\",\n\n builder(yargs) {\n return yargs.options({\n network: {\n type: \"string\",\n choices: [\"mainnet\", \"testnet\", \"devnet\", \"localnet\"],\n desc: \"Network of the node (mainnet/testnet/devnet/localnet)\",\n },\n configPath: {\n type: \"string\",\n default: \"obelisk.config.ts\",\n decs: \"Path to the config file\",\n },\n });\n },\n\n async handler({ network, configPath }) {\n try {\n const obeliskConfig = (await loadConfig(configPath)) as ObeliskConfig;\n\n let schemaNames = Object.keys(obeliskConfig.schemas).filter(\n (key) =>\n !(\n typeof obeliskConfig.schemas === \"object\" &&\n \"ephemeral\" in obeliskConfig.schemas &&\n (obeliskConfig.schemas[key] as ValueType).ephemeral\n )\n );\n\n await upgradeHandler(obeliskConfig.name, network, schemaNames);\n } catch (error: any) {\n logError(error);\n process.exit(1);\n }\n process.exit(0);\n },\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 Obelisk 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 { printObelisk } from \"../utils\";\n\nconst commandModule: CommandModule = {\n command: \"hello\",\n\n describe: \"hello, obelisk\",\n\n builder(yargs) {\n return yargs;\n },\n\n async handler() {\n printObelisk();\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\";\nimport 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 publish,\n localnode,\n faucet,\n schemagen,\n upgrade,\n test,\n hello,\n];\n"],"mappings":"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","names":["yargs","hideBin","execa","commandModule","yargs","child","localnode_default","Obelisk","requestSuiFromFaucetV0","getFaucetHost","SuiClient","getFullnodeUrl","Obelisk","Transaction","getFullnodeUrl","SuiClient","execSync","chalk","chalk","ZodError","fromZodError","ValidationError","NotInsideProjectError","ObeliskCliError","UpgradeError","FsIibError","logError","error","validationError","fsAsync","mkdirSync","writeFileSync","dirname","SUI_PRIVATE_KEY_PREFIX","validatePrivateKey","privateKey","SUI_PRIVATE_KEY_PREFIX","strippedPrivateKey","updateVersionInFile","projectPath","newVersion","filePath","updatedData","writeOutput","FsIibError","getDeploymentJson","network","data","getVersion","getOldPackageId","projectPath","network","getDeploymentJson","getWorldId","getUpgradeCap","getAdminCap","saveContractData","projectName","packageId","worldId","upgradeCap","adminCap","version","DeploymentData","path","storeDeploymentData","writeOutput","output","fullOutputPath","logPrefix","mkdirSync","dirname","writeFileSync","publishHandler","name","network","projectPath","privateKey","ObeliskCliError","privateKeyFormat","validatePrivateKey","keypair","Obelisk","client","SuiClient","getFullnodeUrl","modules","dependencies","extractedModules","extractedDependencies","execSync","error","chalk","tx","Transaction","upgradeCap","result","version","packageId","worldId","upgradeCapId","adminCapId","object","saveContractData","ms","resolve","deployHookTx","deployHookResult","Obelisk","Transaction","UpgradePolicy","getFullnodeUrl","SuiClient","execSync","chalk","upgradeHandler","name","network","schemaNames","path","projectPath","privateKey","ObeliskCliError","privateKeyFormat","validatePrivateKey","keypair","Obelisk","client","SuiClient","getFullnodeUrl","oldVersion","getVersion","oldPackageId","getOldPackageId","worldId","getWorldId","upgradeCap","getUpgradeCap","adminCap","getAdminCap","newVersion","updateVersionInFile","modules","dependencies","digest","extractedModules","extractedDependencies","extractedDigest","execSync","error","UpgradeError","tx","Transaction","ticket","UpgradePolicy","receipt","result","newPackageId","newUpgradeCap","object","chalk","saveContractData","ms","resolve","migrateTx","newObjectContent","uniqueSchema","item","needRegisterSchema","newSchema","chalk","printObelisk","commandModule","yargs","network","recipient","faucet_address","privateKey","ObeliskCliError","privateKeyFormat","validatePrivateKey","Obelisk","requestSuiFromFaucetV0","getFaucetHost","client","SuiClient","getFullnodeUrl","params","faucet_default","worldgen","loadConfig","chalk","commandModule","yargs","configPath","obeliskConfig","error","schemagen_default","loadConfig","commandModule","yargs","network","configPath","obeliskConfig","publishHandler","error","logError","publish_default","loadConfig","commandModule","yargs","network","configPath","obeliskConfig","schemaNames","key","upgradeHandler","error","logError","upgrade_default","execSync","chalk","commandModule","yargs","packagePath","error","test_default","commandModule","yargs","printObelisk","hello_default","commands","publish_default","localnode_default","faucet_default","schemagen_default","upgrade_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.
|
|
3
|
+
"version": "0.5.11",
|
|
4
4
|
"description": "Tookit for interacting with move eps framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sui",
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"obelisk": "./dist/obelisk.js"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@0xobelisk/sui-client": "^0.5.
|
|
35
|
-
"@0xobelisk/sui-common": "^0.5.
|
|
36
|
-
"@mysten/sui
|
|
34
|
+
"@0xobelisk/sui-client": "^0.5.21",
|
|
35
|
+
"@0xobelisk/sui-common": "^0.5.8",
|
|
36
|
+
"@mysten/sui": "^1.1.2",
|
|
37
37
|
"chalk": "^5.0.1",
|
|
38
38
|
"child_process": "^1.0.2",
|
|
39
39
|
"dotenv": "^16.0.3",
|
package/src/commands/faucet.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Obelisk } from '@0xobelisk/sui-client';
|
|
2
2
|
import type { CommandModule } from 'yargs';
|
|
3
|
-
import { requestSuiFromFaucetV0, getFaucetHost } from '@mysten/sui
|
|
3
|
+
import { requestSuiFromFaucetV0, getFaucetHost } from '@mysten/sui/faucet';
|
|
4
4
|
import {
|
|
5
5
|
SuiClient,
|
|
6
6
|
getFullnodeUrl,
|
|
7
7
|
GetBalanceParams,
|
|
8
|
-
} from '@mysten/sui
|
|
8
|
+
} from '@mysten/sui/client';
|
|
9
9
|
import { validatePrivateKey, ObeliskCliError } from '../utils';
|
|
10
10
|
|
|
11
11
|
type Options = {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Obelisk } from '@0xobelisk/sui-client';
|
|
2
|
-
import {
|
|
2
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
3
3
|
import {
|
|
4
4
|
getFullnodeUrl,
|
|
5
5
|
SuiClient,
|
|
6
6
|
SuiTransactionBlockResponse,
|
|
7
|
-
} from '@mysten/sui
|
|
7
|
+
} from '@mysten/sui/client';
|
|
8
8
|
import { execSync } from 'child_process';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
import { ObeliskCliError } from './errors';
|
|
@@ -42,8 +42,6 @@ in your contracts directory to use the default sui private key.`
|
|
|
42
42
|
url: getFullnodeUrl(network),
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
// Set version 1
|
|
46
|
-
await updateVersionInFile(projectPath, '1');
|
|
47
45
|
let modules: any, dependencies: any;
|
|
48
46
|
try {
|
|
49
47
|
const {
|
|
@@ -67,21 +65,21 @@ in your contracts directory to use the default sui private key.`
|
|
|
67
65
|
|
|
68
66
|
console.log(chalk.blue(`Account: ${keypair.toSuiAddress()}`));
|
|
69
67
|
|
|
70
|
-
const tx = new
|
|
68
|
+
const tx = new Transaction();
|
|
71
69
|
const [upgradeCap] = tx.publish({
|
|
72
70
|
modules,
|
|
73
71
|
dependencies,
|
|
74
72
|
});
|
|
75
73
|
tx.transferObjects(
|
|
76
74
|
[upgradeCap],
|
|
77
|
-
|
|
75
|
+
keypair.toSuiAddress()
|
|
78
76
|
);
|
|
79
77
|
|
|
80
78
|
let result: SuiTransactionBlockResponse;
|
|
81
79
|
try {
|
|
82
|
-
result = await client.
|
|
80
|
+
result = await client.signAndExecuteTransaction({
|
|
83
81
|
signer: keypair,
|
|
84
|
-
|
|
82
|
+
transaction: tx,
|
|
85
83
|
options: {
|
|
86
84
|
showObjectChanges: true,
|
|
87
85
|
},
|
|
@@ -147,7 +145,7 @@ in your contracts directory to use the default sui private key.`
|
|
|
147
145
|
new Promise(resolve => setTimeout(resolve, ms));
|
|
148
146
|
await delay(5000);
|
|
149
147
|
|
|
150
|
-
const deployHookTx = new
|
|
148
|
+
const deployHookTx = new Transaction();
|
|
151
149
|
|
|
152
150
|
deployHookTx.moveCall({
|
|
153
151
|
target: `${packageId}::deploy_hook::run`,
|
|
@@ -159,9 +157,9 @@ in your contracts directory to use the default sui private key.`
|
|
|
159
157
|
|
|
160
158
|
let deployHookResult: SuiTransactionBlockResponse;
|
|
161
159
|
try {
|
|
162
|
-
deployHookResult = await client.
|
|
160
|
+
deployHookResult = await client.signAndExecuteTransaction({
|
|
163
161
|
signer: keypair,
|
|
164
|
-
|
|
162
|
+
transaction: deployHookTx,
|
|
165
163
|
options: {
|
|
166
164
|
showEffects: true,
|
|
167
165
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Obelisk } from '@0xobelisk/sui-client';
|
|
2
|
-
import {
|
|
3
|
-
import { getFullnodeUrl, SuiClient } from '@mysten/sui
|
|
2
|
+
import { Transaction, UpgradePolicy } from '@mysten/sui/transactions';
|
|
3
|
+
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import { ObeliskCliError, UpgradeError } from './errors';
|
|
@@ -82,20 +82,20 @@ in your contracts directory to use the default sui private key.`
|
|
|
82
82
|
throw new UpgradeError(error.stdout);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
const tx = new
|
|
85
|
+
const tx = new Transaction();
|
|
86
86
|
const ticket = tx.moveCall({
|
|
87
87
|
target: '0x2::package::authorize_upgrade',
|
|
88
88
|
arguments: [
|
|
89
89
|
tx.object(upgradeCap),
|
|
90
|
-
tx.pure(UpgradePolicy.COMPATIBLE),
|
|
91
|
-
tx.pure(digest),
|
|
90
|
+
tx.pure.u8(UpgradePolicy.COMPATIBLE),
|
|
91
|
+
tx.pure.vector('u8', digest),
|
|
92
92
|
],
|
|
93
93
|
});
|
|
94
94
|
|
|
95
95
|
const receipt = tx.upgrade({
|
|
96
96
|
modules,
|
|
97
97
|
dependencies,
|
|
98
|
-
|
|
98
|
+
package: oldPackageId,
|
|
99
99
|
ticket,
|
|
100
100
|
});
|
|
101
101
|
|
|
@@ -106,12 +106,12 @@ in your contracts directory to use the default sui private key.`
|
|
|
106
106
|
|
|
107
107
|
tx.transferObjects(
|
|
108
108
|
[tx.object(upgradeCap)],
|
|
109
|
-
|
|
109
|
+
keypair.toSuiAddress()
|
|
110
110
|
);
|
|
111
111
|
|
|
112
|
-
const result = await client.
|
|
112
|
+
const result = await client.signAndExecuteTransaction({
|
|
113
113
|
signer: keypair,
|
|
114
|
-
|
|
114
|
+
transaction: tx,
|
|
115
115
|
options: {
|
|
116
116
|
showObjectChanges: true,
|
|
117
117
|
},
|
|
@@ -163,9 +163,9 @@ in your contracts directory to use the default sui private key.`
|
|
|
163
163
|
new Promise(resolve => setTimeout(resolve, ms));
|
|
164
164
|
await delay(5000);
|
|
165
165
|
|
|
166
|
-
const migrateTx = new
|
|
166
|
+
const migrateTx = new Transaction();
|
|
167
167
|
migrateTx.moveCall({
|
|
168
|
-
target: `${newPackageId}::
|
|
168
|
+
target: `${newPackageId}::migrate::run`,
|
|
169
169
|
arguments: [migrateTx.object(worldId), migrateTx.object(adminCap)],
|
|
170
170
|
});
|
|
171
171
|
|
|
@@ -196,9 +196,9 @@ in your contracts directory to use the default sui private key.`
|
|
|
196
196
|
});
|
|
197
197
|
needRegisterSchema.push(`${newSchema}_schema`);
|
|
198
198
|
}
|
|
199
|
-
const migrateResult = await client.
|
|
199
|
+
const migrateResult = await client.signAndExecuteTransaction({
|
|
200
200
|
signer: keypair,
|
|
201
|
-
|
|
201
|
+
transaction: migrateTx,
|
|
202
202
|
options: {
|
|
203
203
|
showEffects: true,
|
|
204
204
|
},
|
package/src/utils/utils.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import * as fsAsync from 'fs/promises';
|
|
2
2
|
import { mkdirSync, writeFileSync } from 'fs';
|
|
3
3
|
import { dirname } from 'path';
|
|
4
|
-
import {
|
|
5
|
-
SUI_PRIVATE_KEY_PREFIX,
|
|
6
|
-
decodeSuiPrivateKey,
|
|
7
|
-
} from '@mysten/sui.js/cryptography';
|
|
4
|
+
import { SUI_PRIVATE_KEY_PREFIX } from '@mysten/sui/cryptography';
|
|
8
5
|
import { FsIibError } from './errors';
|
|
9
6
|
|
|
10
7
|
export type DeploymentJsonType = {
|
|
@@ -45,7 +42,7 @@ export async function updateVersionInFile(
|
|
|
45
42
|
newVersion: string
|
|
46
43
|
) {
|
|
47
44
|
try {
|
|
48
|
-
const filePath = `${projectPath}/sources/
|
|
45
|
+
const filePath = `${projectPath}/sources/script/migrate.move`;
|
|
49
46
|
const data = await fsAsync.readFile(filePath, 'utf8');
|
|
50
47
|
|
|
51
48
|
// update version data
|