@0xobelisk/sui-cli 0.5.8 → 0.5.10

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 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}},W=ge;import{requestSuiFromFaucetV0 as Se,getFaucetHost as Re}from"@mysten/sui.js/faucet";import{Ed25519Keypair as Ke}from"@mysten/sui.js/keypairs/ed25519";import{SuiClient as Ae,getFullnodeUrl as Me}from"@mysten/sui.js/client";import{TransactionBlock as z}from"@mysten/sui.js/transactions";import{Ed25519Keypair as ke}from"@mysten/sui.js/keypairs/ed25519";import{getFullnodeUrl as xe,SuiClient as ve}from"@mysten/sui.js/client";import{execSync as Ce}from"child_process";import c 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"},l=class extends Error{name="ObeliskCliError"},B=class extends Error{name="UpgradeError"},R=class extends Error{name="FsIibError"};function P(e){if(e instanceof _e)console.log(S.redBright(e.message));else if(e instanceof ue){let t=fe(e,{prefixSeparator:`
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 c from"chalk";import S from"chalk";import{ZodError as ue}from"zod";import{fromZodError as fe,ValidationError as _e}from"zod-validation-error";var Y=class extends Error{name="NotInsideProjectError";message="You are not inside a Obelisk project"},l=class extends Error{name="ObeliskCliError"},F=class extends Error{name="UpgradeError"},R=class extends Error{name="FsIibError"};function P(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 l?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.js/cryptography";function O(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 K(e,t){try{let o=`${e}/sources/codegen/eps/world.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 H(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,a,n,d,g){let p={projectName:e,network:t,packageId:o,worldId:a,upgradeCap:n,adminCap:d,version:g},u=process.cwd(),y=JSON.stringify(p,null,2);Z(y,`${u}/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 a=`${process.cwd()}/contracts/${e}`,n=process.env.PRIVATE_KEY;if(!n)throw new l(`Missing PRIVATE_KEY environment variable.
5
+ - `});console.log(S.redBright(t.message))}else e instanceof Y?(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 l?console.log(S.red(e)):console.log(e)}import*as N 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 E(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 A(e,t){try{let o=`${e}/sources/codegen/eps/world.move`,n=(await N.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 M(e,t){try{let o=await N.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 M(e,t)).version}async function J(e,t){return(await M(e,t)).packageId}async function q(e,t){return(await M(e,t)).worldId}async function G(e,t){return(await M(e,t)).upgradeCap}async function L(e,t){return(await M(e,t)).adminCap}function K(e,t,o,a,n,d,f){let _={projectName:e,network:t,packageId:o,worldId:a,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 a=`${process.cwd()}/contracts/${e}`,n=process.env.PRIVATE_KEY;if(!n)throw new l(`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=O(n);if(d===!1)throw new l("Please check your privateKey.");let g=Buffer.from(d,"hex"),p=ke.fromSecretKey(g),u=new ve({url:xe(t)});await K(a,"1");let y,x;try{let{modules:r,dependencies:_}=JSON.parse(Ce(`sui move build --dump-bytecode-as-base64 --path ${a}`,{encoding:"utf-8"}));y=r,x=_}catch(r){console.error(c.red("Error executing sui move build:")),console.error(r.stdout),process.exit(1)}console.log(c.blue(`Account: ${p.toSuiAddress()}`));let h=new z,[b]=h.publish({modules:y,dependencies:x});h.transferObjects([b],h.pure(p.getPublicKey().toSuiAddress()));let m;try{m=await u.signAndExecuteTransactionBlock({signer:p,transactionBlock:h,options:{showObjectChanges:!0}})}catch(r){console.error(c.red("Failed to execute publish, please republish")),console.error(r.message),process.exit(1)}m.effects?.status.status==="failure"&&(console.log(c.red("Failed to execute publish, please republish")),process.exit(1));let C=1,f="",w="",$="",E="";m.objectChanges.map(r=>{r.type==="published"&&(console.log(c.blue(`${e} PackageId: ${r.packageId}`)),f=r.packageId),r.type==="created"&&r.objectType.endsWith("::world::World")&&(console.log(c.blue(`${e} WorldId: ${r.objectId}`)),w=r.objectId),r.type==="created"&&r.objectType==="0x2::package::UpgradeCap"&&(console.log(c.blue(`${e} UpgradeCap: ${r.objectId}`)),$=r.objectId),r.type==="created"&&r.objectType.endsWith("::world::AdminCap")&&(console.log(c.blue(`${e} AdminCapId: ${r.objectId}`)),E=r.objectId)}),console.log(c.green(`Publish transaction digest: ${m.digest}`)),M(e,t,f,w,$,E,C),console.log("Executing the deployHook: "),await(r=>new Promise(_=>setTimeout(_,r)))(5e3);let I=new z;I.moveCall({target:`${f}::deploy_hook::run`,arguments:[I.object(w),I.object(E)]});let T;try{T=await u.signAndExecuteTransactionBlock({signer:p,transactionBlock:I,options:{showEffects:!0}})}catch(r){console.error(c.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(c.green(`Successful auto-execution of deployHook, please check the transaction digest: ${T.digest}`)):console.log(c.yellow("Failed to execute deployHook, please republish or manually call deploy_hook::run"))}import{TransactionBlock as Q,UpgradePolicy as Ee}from"@mysten/sui.js/transactions";import{Ed25519Keypair as Ie}from"@mysten/sui.js/keypairs/ed25519";import{getFullnodeUrl as Pe,SuiClient as Oe}from"@mysten/sui.js/client";import{execSync as $e}from"child_process";import k from"chalk";async function ee(e,t,o){let a=process.cwd(),n=`${a}/contracts/${e}`,d=process.env.PRIVATE_KEY;if(!d)throw new l(`Missing PRIVATE_KEY environment variable.
7
+ in your contracts directory to use the default sui private key.`);let d=E(n);if(d===!1)throw new l("Please check your privateKey.");let _=new ke({secretKey:d}).getKeypair(),m=new ve({url:xe(t)});await A(a,"1");let y,x;try{let{modules:r,dependencies:u}=JSON.parse(Ce(`sui move build --dump-bytecode-as-base64 --path ${a}`,{encoding:"utf-8"}));y=r,x=u}catch(r){console.error(c.red("Error executing sui move build:")),console.error(r.stdout),process.exit(1)}console.log(c.blue(`Account: ${_.toSuiAddress()}`));let h=new z,[b]=h.publish({modules:y,dependencies:x});h.transferObjects([b],h.pure(_.getPublicKey().toSuiAddress()));let p;try{p=await m.signAndExecuteTransaction({signer:_,transaction:h,options:{showObjectChanges:!0}})}catch(r){console.error(c.red("Failed to execute publish, please republish")),console.error(r.message),process.exit(1)}p.effects?.status.status==="failure"&&(console.log(c.red("Failed to execute publish, please republish")),process.exit(1));let C=1,g="",w="",$="",I="";p.objectChanges.map(r=>{r.type==="published"&&(console.log(c.blue(`${e} PackageId: ${r.packageId}`)),g=r.packageId),r.type==="created"&&r.objectType.endsWith("::world::World")&&(console.log(c.blue(`${e} WorldId: ${r.objectId}`)),w=r.objectId),r.type==="created"&&r.objectType==="0x2::package::UpgradeCap"&&(console.log(c.blue(`${e} UpgradeCap: ${r.objectId}`)),$=r.objectId),r.type==="created"&&r.objectType.endsWith("::world::AdminCap")&&(console.log(c.blue(`${e} AdminCapId: ${r.objectId}`)),I=r.objectId)}),console.log(c.green(`Publish transaction digest: ${p.digest}`)),K(e,t,g,w,$,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(w),O.object(I)]});let T;try{T=await m.signAndExecuteTransaction({signer:_,transaction:O,options:{showEffects:!0}})}catch(r){console.error(c.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(c.green(`Successful auto-execution of deployHook, please check the transaction digest: ${T.digest}`)):console.log(c.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 Pe,SuiClient as Ee}from"@mysten/sui/client";import{execSync as $e}from"child_process";import k from"chalk";async function ee(e,t,o){let a=process.cwd(),n=`${a}/contracts/${e}`,d=process.env.PRIVATE_KEY;if(!d)throw new l(`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 g=O(d);if(g===!1)throw new l("Please check your privateKey.");let p=Buffer.from(g,"hex"),u=Ie.fromSecretKey(p),y=new Oe({url:Pe(t)}),x=Number(await H(n,t)),h=await J(n,t),b=await q(n,t),m=await G(n,t),C=await L(n,t),f=x+1;await K(n,f.toString());try{let w,$,E;try{let{modules:s,dependencies:j,digest:pe}=JSON.parse($e(`sui move build --dump-bytecode-as-base64 --path ${a}/contracts/${e}`,{encoding:"utf-8"}));w=s,$=j,E=pe}catch(s){throw new B(s.stdout)}let i=new Q,I=i.moveCall({target:"0x2::package::authorize_upgrade",arguments:[i.object(m),i.pure(Ee.COMPATIBLE),i.pure(E)]}),T=i.upgrade({modules:w,dependencies:$,packageId:h,ticket:I});i.moveCall({target:"0x2::package::commit_upgrade",arguments:[i.object(m),T]}),i.transferObjects([i.object(m)],i.pure(u.getPublicKey().toSuiAddress()));let r=await y.signAndExecuteTransactionBlock({signer:u,transactionBlock:i,options:{showObjectChanges:!0}});console.log(""),console.log(`${e} WorldId: ${b}`);let _="",F="";r.objectChanges.map(s=>{s.type==="published"&&(console.log(k.blue(`${e} PackageId: ${s.packageId}`)),_=s.packageId),s.type==="mutated"&&s.objectType==="0x2::package::UpgradeCap"&&(console.log(k.blue(`${e} UpgradeCap: ${s.objectId}`)),F=s.objectId)}),console.log(k.green(`Upgrade Transaction Digest: ${r.digest}`)),M(e,t,_,b,F,C,f),h=_,m=F,x=f,console.log(`
10
- Executing the migrate: `),await(s=>new Promise(j=>setTimeout(j,s)))(5e3);let v=new Q;v.moveCall({target:`${_}::world::migrate`,arguments:[v.object(b),v.object(C)]});let V=(await y.getObject({id:b,options:{showContent:!0,showDisplay:!0,showType:!0,showOwner:!0}})).data.content,N=o.filter(s=>!V.fields.schema_names.includes(s));console.log("new schema:",N);let U=[];for(let s of N)v.moveCall({target:`${_}::${s}_schema::register`,arguments:[v.object(b),v.object(C)]}),U.push(`${s}_schema`);(await y.signAndExecuteTransactionBlock({signer:u,transactionBlock:v,options:{showEffects:!0}})).effects?.status.status==="success"?(console.log(k.green(`${e} migrate world success, new world version is: ${V.fields.version}, package version is ${f}`)),U.length!==0&&console.log(k.green(`new schema: ${U.toString()} register success.`)),console.log(k.blue(`
11
- ${e} world schemas is ${V.fields.schema_names}`))):console.log(k.red(`${e} migrate world failed, world version is: ${V.fields.version}, package version is ${f}`))}catch(w){console.log(k.red("Upgrade failed!")),console.error(w.message),M(e,t,h,b,m,C,x),await K(n,x.toString())}}import Te from"chalk";function te(){console.log(Te.yellow(`
9
+ in your contracts directory to use the default sui private key.`);let f=E(d);if(f===!1)throw new l("Please check your privateKey.");let m=new Ie({secretKey:f}).getKeypair(),y=new Ee({url:Pe(t)}),x=Number(await B(n,t)),h=await J(n,t),b=await q(n,t),p=await G(n,t),C=await L(n,t),g=x+1;await A(n,g.toString());try{let w,$,I;try{let{modules:s,dependencies:D,digest:pe}=JSON.parse($e(`sui move build --dump-bytecode-as-base64 --path ${a}/contracts/${e}`,{encoding:"utf-8"}));w=s,$=D,I=pe}catch(s){throw new F(s.stdout)}let i=new Q,O=i.moveCall({target:"0x2::package::authorize_upgrade",arguments:[i.object(p),i.pure.u8(Oe.COMPATIBLE),i.object(I)]}),T=i.upgrade({modules:w,dependencies:$,package:h,ticket:O});i.moveCall({target:"0x2::package::commit_upgrade",arguments:[i.object(p),T]}),i.transferObjects([i.object(p)],i.pure(m.getPublicKey().toSuiAddress()));let r=await y.signAndExecuteTransaction({signer:m,transaction:i,options:{showObjectChanges:!0}});console.log(""),console.log(`${e} WorldId: ${b}`);let u="",U="";r.objectChanges.map(s=>{s.type==="published"&&(console.log(k.blue(`${e} PackageId: ${s.packageId}`)),u=s.packageId),s.type==="mutated"&&s.objectType==="0x2::package::UpgradeCap"&&(console.log(k.blue(`${e} UpgradeCap: ${s.objectId}`)),U=s.objectId)}),console.log(k.green(`Upgrade Transaction Digest: ${r.digest}`)),K(e,t,u,b,U,C,g),h=u,p=U,x=g,console.log(`
10
+ Executing the migrate: `),await(s=>new Promise(D=>setTimeout(D,s)))(5e3);let v=new Q;v.moveCall({target:`${u}::world::migrate`,arguments:[v.object(b),v.object(C)]});let V=(await y.getObject({id:b,options:{showContent:!0,showDisplay:!0,showType:!0,showOwner:!0}})).data.content,W=o.filter(s=>!V.fields.schema_names.includes(s));console.log("new schema:",W);let j=[];for(let s of W)v.moveCall({target:`${u}::${s}_schema::register`,arguments:[v.object(b),v.object(C)]}),j.push(`${s}_schema`);(await y.signAndExecuteTransaction({signer:m,transaction:v,options:{showEffects:!0}})).effects?.status.status==="success"?(console.log(k.green(`${e} migrate world success, new world version is: ${V.fields.version}, package version is ${g}`)),j.length!==0&&console.log(k.green(`new schema: ${j.toString()} register success.`)),console.log(k.blue(`
11
+ ${e} world schemas is ${V.fields.schema_names}`))):console.log(k.red(`${e} migrate world failed, world version is: ${V.fields.version}, package version is ${g}`))}catch(w){console.log(k.red("Upgrade failed!")),console.error(w.message),K(e,t,h,b,p,C,x),await A(n,x.toString())}}import Te from"chalk";function te(){console.log(Te.yellow(`
12
12
  Welcome to obelisk world
13
13
  --from team@obelisk
14
14
  ________ ________ _______ ___ ___ ________ ___ __
@@ -23,5 +23,5 @@ Welcome to obelisk world
23
23
 
24
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 l(`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 g=O(d);if(g===!1)throw new l("Please check your privateKey.");let p=Buffer.from(g,"hex");o=Ke.fromSecretKey(p).toSuiAddress()}else o=t;await Se({host:Re(e),recipient:o});let a=new Ae({url:Me(e)}),n={owner:o};console.log(`Account: ${o}`),console.log(await a.getBalance(n)),process.exit(0)}},oe=Ve;import{worldgen as Be,loadConfig as Fe}from"@0xobelisk/sui-common";import Ue from"chalk";var je={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 Fe(e);Be(t),process.exit(0)}catch(t){console.log(Ue.red("Schemagen failed!")),console.error(t.message)}}},re=je;import{loadConfig as De}from"@0xobelisk/sui-common";var Ye={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 De(t);await X(o.name,e)}catch(o){P(o),process.exit(1)}process.exit(0)}},ne=Ye;import{loadConfig as Ne}from"@0xobelisk/sui-common";var We={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 Ne(t),a=Object.keys(o.schemas).filter(n=>!(typeof o.schemas=="object"&&"ephemeral"in o.schemas&&o.schemas[n].ephemeral));await ee(o.name,e,a)}catch(o){P(o),process.exit(1)}process.exit(0)}},se=We;import{execSync as He}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{He(`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,W,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(""),P(t),console.log(""),process.exit(1)}).alias({h:"help"}).argv;
26
+ in your contracts directory to use the default sui private key.`);let f=E(d);if(f===!1)throw new l("Please check your privateKey.");o=new Se({secretKey:f}).getKeypair().toSuiAddress()}else o=t;await Re({host:Ae(e),recipient:o});let a=new Me({url:Ke(e)}),n={owner:o};console.log(`Account: ${o}`),console.log(await a.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){P(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),a=Object.keys(o.schemas).filter(n=>!(typeof o.schemas=="object"&&"ephemeral"in o.schemas&&o.schemas[n].ephemeral));await ee(o.name,e,a)}catch(o){P(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(""),P(t),console.log(""),process.exit(1)}).alias({h:"help"}).argv;
27
27
  //# sourceMappingURL=obelisk.js.map
@@ -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 type { CommandModule } from \"yargs\";\nimport { requestSuiFromFaucetV0, getFaucetHost } from \"@mysten/sui.js/faucet\";\n\nimport { Ed25519Keypair } from \"@mysten/sui.js/keypairs/ed25519\";\n\nimport {\n SuiClient,\n getFullnodeUrl,\n GetBalanceParams,\n} from \"@mysten/sui.js/client\";\nimport { validatePrivateKey, ObeliskCliError } from \"../utils\";\n\ntype Options = {\n network: any;\n recipient?: string;\n};\n\nconst commandModule: CommandModule<Options, Options> = {\n command: \"faucet\",\n\n describe: \"Interact with a Obelisk faucet\",\n\n builder(yargs) {\n return yargs.options({\n network: {\n type: \"string\",\n desc: \"URL of the Obelisk faucet\",\n choices: [\"testnet\", \"devnet\", \"localnet\"],\n default: \"localnet\",\n },\n recipient: {\n type: \"string\",\n desc: \"Sui address to fund\",\n },\n });\n },\n\n async handler({ network, recipient }) {\n let faucet_address = \"\";\n if (recipient === undefined) {\n const privateKey = process.env.PRIVATE_KEY;\n if (!privateKey)\n throw new ObeliskCliError(\n `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 );\n\n const privateKeyFormat = validatePrivateKey(privateKey);\n if (privateKeyFormat === false) {\n throw new ObeliskCliError(`Please check your privateKey.`);\n }\n const privateKeyRaw = Buffer.from(privateKeyFormat as string, \"hex\");\n const keypair = Ed25519Keypair.fromSecretKey(privateKeyRaw);\n faucet_address = keypair.toSuiAddress();\n } else {\n faucet_address = recipient;\n }\n await requestSuiFromFaucetV0({\n host: getFaucetHost(network),\n recipient: faucet_address,\n });\n const client = new SuiClient({ url: getFullnodeUrl(network) });\n let params = {\n owner: faucet_address,\n } as GetBalanceParams;\n console.log(`Account: ${faucet_address}`);\n console.log(await client.getBalance(params));\n process.exit(0);\n },\n};\n\nexport default commandModule;\n","import { TransactionBlock } from \"@mysten/sui.js/transactions\";\nimport { Ed25519Keypair } from \"@mysten/sui.js/keypairs/ed25519\";\nimport {\n getFullnodeUrl,\n SuiClient,\n SuiTransactionBlockResponse,\n} from \"@mysten/sui.js/client\";\nimport { execSync } from \"child_process\";\nimport chalk from \"chalk\";\nimport { ObeliskCliError } from \"./errors\";\nimport {\n updateVersionInFile,\n saveContractData,\n validatePrivateKey,\n} from \"./utils\";\n\nexport async function publishHandler(\n name: string,\n network: \"mainnet\" | \"testnet\" | \"devnet\" | \"localnet\"\n) {\n const path = process.cwd();\n const projectPath = `${path}/contracts/${name}`;\n\n const privateKey = process.env.PRIVATE_KEY;\n if (!privateKey)\n throw new ObeliskCliError(\n `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 );\n\n const privateKeyFormat = validatePrivateKey(privateKey);\n if (privateKeyFormat === false) {\n throw new ObeliskCliError(`Please check your privateKey.`);\n }\n const privateKeyRaw = Buffer.from(privateKeyFormat as string, \"hex\");\n const keypair = Ed25519Keypair.fromSecretKey(privateKeyRaw);\n const client = new SuiClient({\n url: getFullnodeUrl(network),\n });\n\n // Set version 1\n await updateVersionInFile(projectPath, \"1\");\n let modules: any, dependencies: any;\n try {\n const { modules: extractedModules, dependencies: extractedDependencies } =\n JSON.parse(\n execSync(\n `sui move build --dump-bytecode-as-base64 --path ${projectPath}`,\n {\n encoding: \"utf-8\",\n }\n )\n );\n modules = extractedModules;\n dependencies = extractedDependencies;\n } catch (error: any) {\n console.error(chalk.red(\"Error executing sui move build:\"));\n console.error(error.stdout);\n process.exit(1); // You might want to exit with a non-zero status code to indicate an error\n }\n\n console.log(chalk.blue(`Account: ${keypair.toSuiAddress()}`));\n\n const tx = new TransactionBlock();\n const [upgradeCap] = tx.publish({\n modules,\n dependencies,\n });\n tx.transferObjects(\n [upgradeCap],\n tx.pure(keypair.getPublicKey().toSuiAddress())\n );\n\n let result: SuiTransactionBlockResponse;\n try {\n result = await client.signAndExecuteTransactionBlock({\n signer: keypair,\n transactionBlock: tx,\n options: {\n showObjectChanges: true,\n },\n });\n } catch (error: any) {\n console.error(chalk.red(`Failed to execute publish, please republish`));\n console.error(error.message);\n process.exit(1);\n }\n\n if (result.effects?.status.status === \"failure\") {\n console.log(chalk.red(`Failed to execute publish, please republish`));\n process.exit(1);\n }\n\n let version = 1;\n let packageId = \"\";\n let worldId = \"\";\n let upgradeCapId = \"\";\n let adminCapId = \"\";\n result.objectChanges!.map((object) => {\n if (object.type === \"published\") {\n console.log(chalk.blue(`${name} PackageId: ${object.packageId}`));\n packageId = object.packageId;\n }\n if (\n object.type === \"created\" &&\n object.objectType.endsWith(\"::world::World\")\n ) {\n console.log(chalk.blue(`${name} WorldId: ${object.objectId}`));\n worldId = object.objectId;\n }\n if (\n object.type === \"created\" &&\n object.objectType === \"0x2::package::UpgradeCap\"\n ) {\n console.log(chalk.blue(`${name} UpgradeCap: ${object.objectId}`));\n upgradeCapId = object.objectId;\n }\n if (\n object.type === \"created\" &&\n object.objectType.endsWith(\"::world::AdminCap\")\n ) {\n console.log(chalk.blue(`${name} AdminCapId: ${object.objectId}`));\n adminCapId = object.objectId;\n }\n });\n\n console.log(chalk.green(`Publish transaction digest: ${result.digest}`));\n\n saveContractData(\n name,\n network,\n packageId,\n worldId,\n upgradeCapId,\n adminCapId,\n version\n );\n\n console.log(\"Executing the deployHook: \");\n const delay = (ms: number) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n await delay(5000);\n\n const deployHookTx = new TransactionBlock();\n\n deployHookTx.moveCall({\n target: `${packageId}::deploy_hook::run`,\n arguments: [deployHookTx.object(worldId), deployHookTx.object(adminCapId)],\n });\n\n let deployHookResult: SuiTransactionBlockResponse;\n try {\n deployHookResult = await client.signAndExecuteTransactionBlock({\n signer: keypair,\n transactionBlock: deployHookTx,\n options: {\n showEffects: true,\n },\n });\n } catch (error: any) {\n console.error(\n chalk.red(\n `Failed to execute deployHook, please republish or manually call deploy_hook::run`\n )\n );\n console.error(error.message);\n process.exit(1);\n }\n\n if (deployHookResult.effects?.status.status === \"success\") {\n console.log(\n chalk.green(\n `Successful auto-execution of deployHook, please check the transaction digest: ${deployHookResult.digest}`\n )\n );\n } else {\n console.log(\n chalk.yellow(\n `Failed to execute deployHook, please republish or manually call deploy_hook::run`\n )\n );\n }\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): boolean | 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 { TransactionBlock, UpgradePolicy } from \"@mysten/sui.js/transactions\";\nimport { Ed25519Keypair } from \"@mysten/sui.js/keypairs/ed25519\";\nimport { getFullnodeUrl, SuiClient } from \"@mysten/sui.js/client\";\nimport { execSync } from \"child_process\";\nimport chalk from \"chalk\";\nimport { ObeliskCliError, UpgradeError } from \"./errors\";\nimport {\n updateVersionInFile,\n getOldPackageId,\n getVersion,\n getWorldId,\n getUpgradeCap,\n saveContractData,\n validatePrivateKey,\n getAdminCap,\n} from \"./utils\";\n\ntype ObjectContent = {\n type: string;\n fields: Record<string, any>;\n hasPublicTransfer: boolean;\n dataType: string;\n};\n\nexport async function upgradeHandler(\n name: string,\n network: \"mainnet\" | \"testnet\" | \"devnet\" | \"localnet\",\n schemaNames: string[]\n) {\n const path = process.cwd();\n const projectPath = `${path}/contracts/${name}`;\n const privateKey = process.env.PRIVATE_KEY;\n if (!privateKey)\n throw new ObeliskCliError(\n `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 );\n\n const privateKeyFormat = validatePrivateKey(privateKey);\n if (privateKeyFormat === false) {\n throw new ObeliskCliError(`Please check your privateKey.`);\n }\n const privateKeyRaw = Buffer.from(privateKeyFormat as string, \"hex\");\n const keypair = Ed25519Keypair.fromSecretKey(privateKeyRaw);\n\n const client = new SuiClient({\n url: getFullnodeUrl(network),\n });\n\n let oldVersion = Number(await getVersion(projectPath, network));\n let oldPackageId = await getOldPackageId(projectPath, network);\n let worldId = await getWorldId(projectPath, network);\n let upgradeCap = await getUpgradeCap(projectPath, network);\n let adminCap = await getAdminCap(projectPath, network);\n\n const newVersion = oldVersion + 1;\n await updateVersionInFile(projectPath, newVersion.toString());\n\n try {\n let modules: any, dependencies: any, digest: any;\n try {\n const {\n modules: extractedModules,\n dependencies: extractedDependencies,\n digest: extractedDigest,\n } = JSON.parse(\n execSync(\n `sui move build --dump-bytecode-as-base64 --path ${path}/contracts/${name}`,\n {\n encoding: \"utf-8\",\n }\n )\n );\n\n modules = extractedModules;\n dependencies = extractedDependencies;\n digest = extractedDigest;\n } catch (error: any) {\n throw new UpgradeError(error.stdout);\n }\n\n const tx = new TransactionBlock();\n const ticket = tx.moveCall({\n target: \"0x2::package::authorize_upgrade\",\n arguments: [\n tx.object(upgradeCap),\n tx.pure(UpgradePolicy.COMPATIBLE),\n tx.pure(digest),\n ],\n });\n\n const receipt = tx.upgrade({\n modules,\n dependencies,\n packageId: oldPackageId,\n ticket,\n });\n\n tx.moveCall({\n target: \"0x2::package::commit_upgrade\",\n arguments: [tx.object(upgradeCap), receipt],\n });\n\n tx.transferObjects(\n [tx.object(upgradeCap)],\n tx.pure(keypair.getPublicKey().toSuiAddress())\n );\n\n const result = await client.signAndExecuteTransactionBlock({\n signer: keypair,\n transactionBlock: tx,\n options: {\n showObjectChanges: true,\n },\n });\n\n console.log(\"\");\n console.log(`${name} WorldId: ${worldId}`);\n\n let newPackageId = \"\";\n let newUpgradeCap = \"\";\n result.objectChanges!.map((object) => {\n if (object.type === \"published\") {\n console.log(chalk.blue(`${name} PackageId: ${object.packageId}`));\n newPackageId = object.packageId;\n }\n if (\n object.type === \"mutated\" &&\n object.objectType === \"0x2::package::UpgradeCap\"\n ) {\n console.log(chalk.blue(`${name} UpgradeCap: ${object.objectId}`));\n newUpgradeCap = object.objectId;\n }\n });\n\n console.log(chalk.green(`Upgrade Transaction Digest: ${result.digest}`));\n\n saveContractData(\n name,\n network,\n newPackageId,\n worldId,\n newUpgradeCap,\n adminCap,\n newVersion\n );\n\n oldPackageId = newPackageId;\n upgradeCap = newUpgradeCap;\n oldVersion = newVersion;\n\n console.log(\"\\nExecuting the migrate: \");\n const delay = (ms: number) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n await delay(5000);\n\n const migrateTx = new TransactionBlock();\n migrateTx.moveCall({\n target: `${newPackageId}::world::migrate`,\n arguments: [migrateTx.object(worldId), migrateTx.object(adminCap)],\n });\n\n let newWorldObject = await client.getObject({\n id: worldId,\n options: {\n showContent: true,\n showDisplay: true,\n showType: true,\n showOwner: true,\n },\n });\n let newObjectContent = newWorldObject.data!.content as ObjectContent;\n\n const uniqueSchema: string[] = schemaNames.filter(\n (item) => !newObjectContent.fields[\"schema_names\"].includes(item)\n );\n\n console.log(\"new schema:\", uniqueSchema);\n let needRegisterSchema = [];\n for (const newSchema of uniqueSchema) {\n migrateTx.moveCall({\n target: `${newPackageId}::${newSchema}_schema::register`,\n arguments: [migrateTx.object(worldId), migrateTx.object(adminCap)],\n });\n needRegisterSchema.push(`${newSchema}_schema`);\n }\n const migrateResult = await client.signAndExecuteTransactionBlock({\n signer: keypair,\n transactionBlock: migrateTx,\n options: {\n showEffects: true,\n },\n });\n\n if (migrateResult.effects?.status.status === \"success\") {\n console.log(\n chalk.green(\n `${name} migrate world success, new world version is: ${newObjectContent.fields[\"version\"]}, package version is ${newVersion}`\n )\n );\n if (needRegisterSchema.length !== 0) {\n console.log(\n chalk.green(\n `new schema: ${needRegisterSchema.toString()} register success.`\n )\n );\n }\n\n console.log(\n chalk.blue(\n `\\n${name} world schemas is ${newObjectContent.fields[\"schema_names\"]}`\n )\n );\n } else {\n console.log(\n chalk.red(\n `${name} migrate world failed, world version is: ${newObjectContent.fields[\"version\"]}, package version is ${newVersion}`\n )\n );\n }\n } catch (error: any) {\n console.log(chalk.red(\"Upgrade failed!\"));\n console.error(error.message);\n\n saveContractData(\n name,\n network,\n oldPackageId,\n worldId,\n upgradeCap,\n adminCap,\n oldVersion\n );\n await updateVersionInFile(projectPath, oldVersion.toString());\n }\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","requestSuiFromFaucetV0","getFaucetHost","Ed25519Keypair","SuiClient","getFullnodeUrl","TransactionBlock","Ed25519Keypair","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","privateKeyRaw","keypair","Ed25519Keypair","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","TransactionBlock","UpgradePolicy","Ed25519Keypair","getFullnodeUrl","SuiClient","execSync","chalk","upgradeHandler","name","network","schemaNames","path","projectPath","privateKey","ObeliskCliError","privateKeyFormat","validatePrivateKey","privateKeyRaw","keypair","Ed25519Keypair","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","privateKeyRaw","Ed25519Keypair","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\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 Transaction();\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.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/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 { 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.object(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\ttx.pure(keypair.getPublicKey().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}::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.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","updateVersionInFile","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.8",
3
+ "version": "0.5.10",
4
4
  "description": "Tookit for interacting with move eps framework",
5
5
  "keywords": [
6
6
  "sui",
@@ -31,8 +31,9 @@
31
31
  "obelisk": "./dist/obelisk.js"
32
32
  },
33
33
  "dependencies": {
34
+ "@0xobelisk/sui-client": "^0.5.21",
34
35
  "@0xobelisk/sui-common": "^0.5.7",
35
- "@mysten/sui.js": "^0.51.2",
36
+ "@mysten/sui": "^1.1.2",
36
37
  "chalk": "^5.0.1",
37
38
  "child_process": "^1.0.2",
38
39
  "dotenv": "^16.0.3",
@@ -1,73 +1,73 @@
1
- import type { CommandModule } from "yargs";
2
- import { requestSuiFromFaucetV0, getFaucetHost } from "@mysten/sui.js/faucet";
3
-
4
- import { Ed25519Keypair } from "@mysten/sui.js/keypairs/ed25519";
5
-
1
+ import { Obelisk } from '@0xobelisk/sui-client';
2
+ import type { CommandModule } from 'yargs';
3
+ import { requestSuiFromFaucetV0, getFaucetHost } from '@mysten/sui/faucet';
6
4
  import {
7
- SuiClient,
8
- getFullnodeUrl,
9
- GetBalanceParams,
10
- } from "@mysten/sui.js/client";
11
- import { validatePrivateKey, ObeliskCliError } from "../utils";
5
+ SuiClient,
6
+ getFullnodeUrl,
7
+ GetBalanceParams,
8
+ } from '@mysten/sui/client';
9
+ import { validatePrivateKey, ObeliskCliError } from '../utils';
12
10
 
13
11
  type Options = {
14
- network: any;
15
- recipient?: string;
12
+ network: any;
13
+ recipient?: string;
16
14
  };
17
15
 
18
16
  const commandModule: CommandModule<Options, Options> = {
19
- command: "faucet",
17
+ command: 'faucet',
20
18
 
21
- describe: "Interact with a Obelisk faucet",
19
+ describe: 'Interact with a Obelisk faucet',
22
20
 
23
- builder(yargs) {
24
- return yargs.options({
25
- network: {
26
- type: "string",
27
- desc: "URL of the Obelisk faucet",
28
- choices: ["testnet", "devnet", "localnet"],
29
- default: "localnet",
30
- },
31
- recipient: {
32
- type: "string",
33
- desc: "Sui address to fund",
34
- },
35
- });
36
- },
21
+ builder(yargs) {
22
+ return yargs.options({
23
+ network: {
24
+ type: 'string',
25
+ desc: 'URL of the Obelisk faucet',
26
+ choices: ['testnet', 'devnet', 'localnet'],
27
+ default: 'localnet',
28
+ },
29
+ recipient: {
30
+ type: 'string',
31
+ desc: 'Sui address to fund',
32
+ },
33
+ });
34
+ },
37
35
 
38
- async handler({ network, recipient }) {
39
- let faucet_address = "";
40
- if (recipient === undefined) {
41
- const privateKey = process.env.PRIVATE_KEY;
42
- if (!privateKey)
43
- throw new ObeliskCliError(
44
- `Missing PRIVATE_KEY environment variable.
36
+ async handler({ network, recipient }) {
37
+ let faucet_address = '';
38
+ if (recipient === undefined) {
39
+ const privateKey = process.env.PRIVATE_KEY;
40
+ if (!privateKey)
41
+ throw new ObeliskCliError(
42
+ `Missing PRIVATE_KEY environment variable.
45
43
  Run 'echo "PRIVATE_KEY=YOUR_PRIVATE_KEY" > .env'
46
44
  in your contracts directory to use the default sui private key.`
47
- );
45
+ );
48
46
 
49
- const privateKeyFormat = validatePrivateKey(privateKey);
50
- if (privateKeyFormat === false) {
51
- throw new ObeliskCliError(`Please check your privateKey.`);
52
- }
53
- const privateKeyRaw = Buffer.from(privateKeyFormat as string, "hex");
54
- const keypair = Ed25519Keypair.fromSecretKey(privateKeyRaw);
55
- faucet_address = keypair.toSuiAddress();
56
- } else {
57
- faucet_address = recipient;
58
- }
59
- await requestSuiFromFaucetV0({
60
- host: getFaucetHost(network),
61
- recipient: faucet_address,
62
- });
63
- const client = new SuiClient({ url: getFullnodeUrl(network) });
64
- let params = {
65
- owner: faucet_address,
66
- } as GetBalanceParams;
67
- console.log(`Account: ${faucet_address}`);
68
- console.log(await client.getBalance(params));
69
- process.exit(0);
70
- },
47
+ const privateKeyFormat = validatePrivateKey(privateKey);
48
+ if (privateKeyFormat === false) {
49
+ throw new ObeliskCliError(`Please check your privateKey.`);
50
+ }
51
+ const obelisk = new Obelisk({
52
+ secretKey: privateKeyFormat,
53
+ });
54
+ const keypair = obelisk.getKeypair();
55
+ faucet_address = keypair.toSuiAddress();
56
+ } else {
57
+ faucet_address = recipient;
58
+ }
59
+ await requestSuiFromFaucetV0({
60
+ host: getFaucetHost(network),
61
+ recipient: faucet_address,
62
+ });
63
+ const client = new SuiClient({ url: getFullnodeUrl(network) });
64
+ let params = {
65
+ owner: faucet_address,
66
+ } as GetBalanceParams;
67
+ console.log(`Account: ${faucet_address}`);
68
+ console.log(await client.getBalance(params));
69
+ process.exit(0);
70
+ },
71
71
  };
72
72
 
73
73
  export default commandModule;