@truebit/cli 1.120.0-beta.309 → 1.120.0-beta.311
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/build/index.mjs +1 -1
- package/package.json +2 -2
package/build/index.mjs
CHANGED
|
@@ -515,7 +515,7 @@ Opening Truebit Web UI...`)),console.log(Jy.white("URL: ")+Jy.yellow(d)),await F
|
|
|
515
515
|
Browser opened successfully.`)):(console.log(Jy.yellow(`
|
|
516
516
|
Could not open browser automatically.`)),console.log(Jy.white("Copy and paste the URL above into your browser."))),console.log(Jy.gray(`
|
|
517
517
|
This login expires in 30 days.
|
|
518
|
-
`))}function jpa(e){switch(e){case"local":case"testnet":return"http://localhost:5173";case"staging":return"https://dashboard-staging.truebit.network";default:return"https://dashboard.truebit.network"}}function Fpa(e){return new Promise(t=>{let r;switch(Bpa()){case"darwin":r=`open "${e}"`;break;case"win32":r=`start "" "${e}"`;break;default:r=`xdg-open "${e}"`;break}Lpa(r,n=>{t(!n)})})}To();async function Fjt(e){try{console.log("Fetching execution status...");let r=await(await pd()).get(`api/execution/${e}`).catch(H0);if(r.data.message)throw r.data.message;console.log("Task execution status: ",r.data.status),r.data.output&&console.log("Task execution output: ",r.data.output)}catch(t){console.error(`Couldn't fetch execution status for executionId ${e}: ${t}`)}}import Hjt from"chalk";import{ethers as zpa}from"ethers";To();import*as jee from"crypto";import Upa from"axios";import gAe from"chalk";function Ujt(e){if(Upa.isAxiosError(e)&&e.response?.data){let t=e.response.data;return console.log(gAe.red(t.message)),typeof t=="string"?t:t.message||JSON.stringify(t)}return e instanceof Error?e.message:String(e)}async function Vpa(e,t){try{let r=z0({namespace:t});return(await e.post("getkey",r)).data}catch(r){return Ujt(r),console.error(gAe.red("Failed to retrieve encryption key from Hub-TEE-KMS. Please try again")),null}}function Hpa(e,t){try{let r=Buffer.from(t,"base64"),n=jee.randomBytes(16),a=jee.createCipheriv("aes-256-cbc",r,n),i=Buffer.concat([a.update(e,"utf8"),a.final()]);return r.fill(0),{encrypted_authString:i.toString("base64"),iv:n.toString("base64")}}catch{return null}}async function Vjt(e,t,r){try{let n=await Vpa(e,r);if(!n)return null;let a=Hpa(t,n.plaintext_key);return a?{encrypted_authString:a.encrypted_authString,encrypted_data_key:n.encryption_key,iv:a.iv}:null}catch(n){return Ujt(n),console.error(gAe.red("Failed to encrypt credentials. Please try again.")),null}}async function zjt(e,t,r,n,a,i,s){console.log("Deploying the API Authentication Credentials");try{if(!Ejt(i))throw"Invalid private key provided";if(!zpa.isAddress(s))throw"Invalid address provided";if(vie(n,a),!T4(e))throw"Invalid taskId";let o=await kJe();console.log("Encrypting credentials...");let l=await Vjt(o,a,t);if(!l)return;let u=z0({taskId:e,namespace:t,taskName:r,method:n,encrypted_authString:l.encrypted_authString,encrypted_data_key:l.encrypted_data_key,iv:l.iv});await o.post("credentials",u).catch(H0),console.log("The encrypted credentials were deployed "+Hjt.green("Successfully"))}catch(o){let l=o instanceof Error?o.message:String(o);console.error(Hjt.red(l));return}}import{inspect as k6a}from"util";import Ms from"ora";import{v4 as N6a}from"uuid";import{ethers as ete}from"ethers";var Wjt={name:"@truebit/cli",version:"1.120.0-beta.309",private:!1,description:"truebit-cli is a basic command line that allows interaction between users and truebit nextgen node.",author:{name:"Truebit Co.",url:"https://truebit.io/"},license:"https://truebit.io/terms/",repository:{type:"git",url:"https://github.com/TruebitProtocol"},homepage:"https://truebit.io/",main:"build/index.mjs",module:"build/index.mjs",types:"build/types/index.d.ts",type:"module",scripts:{prebuild:"rimraf build logs","prebuild:dev":"rimraf build logs","build:dev":"tsc && chmod +x build/index.mjs",build:"NODE_ENV=production node esbuild.config.mjs && chmod +x build/index.mjs",dev:"export NODE_ENV=development && npx nodemon",test:"vitest run --passWithNoTests tests/"},dependencies:{axios:"1.15.2",chalk:"5.6.2",colors:"1.4.0",commander:"14.0.3",ethers:"6.16.0",figlet:"1.11.0","form-data":"4.0.5","openapi-enforcer":"1.23.0",ora:"9.4.0","public-ip":"8.0.0","ts-retry":"6.0.0",uuid:"14.0.0"},bin:{truebit:"build/index.mjs"},files:["build"],devDependencies:{"@types/figlet":"1.7.0","@vitest/coverage-v8":"4.1.5",esbuild:"0.28.0",typescript:"5.9.3",vitest:"4.1.5"},engines:{node:">=22.13.0"}};Wi();To();N0();Wi();import{createInterface as Xpa}from"node:readline/promises";import bm from"chalk";To();import OA from"axios";import{ethers as A4}from"ethers";import{randomBytes as Gpa}from"crypto";import{v4 as Kpa}from"uuid";Wi();import{ethers as Fee}from"ethers";async function Gjt(e){Yy(e);let t=xn(ps(),Tt.AVAX),r=Fee.keccak256(Fee.toUtf8Bytes(e));return await t.authorization.registerAuthorization(r),r}async function _Ae(e,t,r=lr("address")){Yy(e);let n=xn(ps(),Tt.AVAX),a=await n.authorization.getEIP712Domain(),i=await n.authorization.nonces(r),s=Math.floor(Date.now()/1e3)+3600,o={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},l=Fee.keccak256(Fee.toUtf8Bytes(e)),u={user:r,apiKeyHash:l,nonce:Number(i),deadline:s};if(!n.utils)throw new Error("Private key is required for signing operations");let d=await n.utils.signMeta(a,o,u);return(await wjt(r,l,s,d,t)).status==201?l:null}Wi();N0();import{isTooManyTries as Kjt,retryAsync as Yjt}from"ts-retry";var Jjt="0x0000000000000000000000000000000000000000";async function Zjt(e){let t=!0;return e===""?(t=!1,console.log("An email address is required. Please provide your email address to proceed.")):new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/).test(e)?await Ypa(e)&&(t=!1,console.log("The provided email address is already in use. Please enter a different email address.")):(t=!1,console.log("The email address provided is not valid. Please try again.")),t}function Zy(e){return e==="Y"||e==="N"}function Xjt(e){return!A4.isAddress(e)||e.length!==42||!e.startsWith("0x")}async function Qjt(){let e=ps(),t=xn(e,Tt.AVAX),r=lr("address"),n=await Zpa(),a=await Jpa();Yy(a);let i=A4.keccak256(A4.toUtf8Bytes(a)),s=Math.floor(Date.now()/1e3)+3600,o=await t.taskRegistry.getEIP712Domain(),l=await t.authorization.getEIP712Domain(),u={RegisterTaskNamespaceMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},d={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},p=BigInt(await t.taskRegistry.nonces(r)),v=await t.authorization.nonces(r),c={user:A4.getAddress(r),namespace:n,nonce:p,deadline:s},m={user:r,apiKeyHash:i,nonce:Number(v),deadline:s};if(!t.utils)throw new Error("Private key is required for signing operations");let y=await t.utils.signMeta(o,u,c),b=await t.utils.signMeta(l,d,m),_={user:r,namespace:n,apiKeyHash:i,namespaceSignature:y,apiKeySignature:b,namespaceDeadline:s,apiKeyDeadline:s};try{let S=await Tjt(_);if(S.status!==201)throw new Error("Registration failed with unexpected status");if(!S.data.namespaceRegistration.success)throw new Error("Namespace registration failed");if(!S.data.apiKeyRegistration.success)throw new Error("API key registration failed");return{namespace:n,apiKey:a,hashedApiKey:i}}catch(S){let w=S.message;throw new Error(`Combined registration failed: ${w}`)}}async function Ypa(e){let t=await Ws();try{return(await t.get(`userexistence/${e}`)).data===!0}catch(r){if(OA.isAxiosError(r)&&r.response?.status===404&&typeof r.response?.data?.message=="string"&&r.response.data.message.includes("User not found"))return!1;throw r}}async function Uee(e,t){try{let r={message:"I am a Truebit User"};if(!t)throw Error("Secret.json does not exists");let n=t.privateKey,a=t.address,i=Ha.createSignedBody(r,n,a);return(await(await Ws()).get(`user/${e}`,{headers:{"truebit-auth":JSON.stringify(i)}})).data}catch(r){if(OA.isAxiosError(r)&&r.response?.status===401&&r.response?.data.message.includes("Entitlement Validation Error")||OA.isAxiosError(r)&&r.response?.status==404&&r.response?.data.message&&r.response?.data.message.includes("User not found"))return null;throw OA.isAxiosError(r)?r.response?Error(`The server responding with an error -> ${r.response.data.message||r.response.status+" - "+r.response.statusText}`):r.request?Error(`The server is not responding -> ${r.message}`):Error(`There was an error in the communication with the server -> ${r.message}`):Error(typeof r=="string"?`There was an error in the communication with the server -> ${r}`:"There was an error in the communication with the server.")}}async function eFt(e){try{return await(await Ws()).post("user/register",e)}catch(t){throw OA.isAxiosError(t)?t.response?Error(`The server responding with an error -> ${t.response.data.message||t.response.status+" - "+t.response.statusText}`):t.request?Error(`The server is not responding -> ${t.message}`):Error(`There was an error in the communication with the server -> ${t.message}`):Error(typeof t=="string"?`There was an error in the communication with the server -> ${t}`:"There was an error in the communication with the server.")}}async function Jpa(){let e=ps(),t=xn(e,Tt.AVAX),r="";try{await Yjt(async()=>{r=Kpa();let n=A4.keccak256(A4.toUtf8Bytes(r));return await t.authorization.getPayerAddress(n)===Jjt},{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw Kjt(n)?Error("Attempts to generate unique Api Key for the user exhausted."):n}return r}async function Zpa(){let e=ps(),t=xn(e,Tt.AVAX),r="";try{await Yjt(async()=>(r=Gpa(4).toString("hex"),await t.taskRegistry.getNamespaceOwner(r)===Jjt),{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw Kjt(n)?Error("Attempts to generate unique namespace for the user exhausted."):n}return r}function tFt(e){e.fullNameAnswer="",e.emailAddressAnswer="",e.companyNameAnswer="",e.jobPositionAnswer="",e.eulaAnswer="",e.confirmRegistration=""}N0();s6();import Qpa from"ora";import*as Vee from"os";async function rFt(e,t,r){let n=Gs(),a=n!==null,i=0,s,o=Xpa({input:process.stdin,output:process.stdout,terminal:!0});switch(a&&(Xjt(n.address)?i=1:(s=await Uee(n.address,n),s?i=2:i=3)),i){case 1:console.log("The wallet set in the configuration must be a valid ethereum address. (ENS not supported yet)");break;case 2:console.log(Rn.SETUP_STEP1_SCENARIO1_P2(s));break;case 3:{console.log(Rn.SETUP_STEP2_SCENARIO3_P1),console.log();let l={user_ip:e,date_time:qa(),os_version:Vee.type+"_"+Vee.release,node_version:process.version,cli_version:t};await r.sendEventToMixpanel("user_registration_begin",l);let u={confirmRegistration:"",fullNameAnswer:"",emailAddressAnswer:"",companyNameAnswer:"",jobPositionAnswer:"",eulaAnswer:""};try{for(;u.confirmRegistration!="Y";){for(u.fullNameAnswer=(await o.question(bm.bold(" 1. Full Name: "))).trim();u.fullNameAnswer==="";)console.log("Your full name is required. Please provide your first and last name to proceed."),u.fullNameAnswer=(await o.question(bm.bold(" 1. Full Name: "))).trim();for(u.emailAddressAnswer=(await o.question(bm.bold(" 2. Email Address: "))).trim();!await Zjt(u.emailAddressAnswer);)u.emailAddressAnswer=(await o.question(bm.bold(" 2. Email Address: "))).trim();for(u.companyNameAnswer=(await o.question(bm.bold(" 3. Company Name: "))).trim(),u.jobPositionAnswer=(await o.question(bm.bold(" 4. Job Position: "))).trim();!Zy(u.eulaAnswer);)u.eulaAnswer=(await o.question(bm.bold(` 5. Accept EULA? [Y|N] (${Rn.EULA_TERMS_LINK}): `))).toUpperCase();if(u.eulaAnswer=="N"){console.log(Rn.EULA_REGISTRATION_NO_ACCEPTED);break}for(;!Zy(u.confirmRegistration);)console.log(`
|
|
518
|
+
`))}function jpa(e){switch(e){case"local":case"testnet":return"http://localhost:5173";case"staging":return"https://dashboard-staging.truebit.network";default:return"https://dashboard.truebit.network"}}function Fpa(e){return new Promise(t=>{let r;switch(Bpa()){case"darwin":r=`open "${e}"`;break;case"win32":r=`start "" "${e}"`;break;default:r=`xdg-open "${e}"`;break}Lpa(r,n=>{t(!n)})})}To();async function Fjt(e){try{console.log("Fetching execution status...");let r=await(await pd()).get(`api/execution/${e}`).catch(H0);if(r.data.message)throw r.data.message;console.log("Task execution status: ",r.data.status),r.data.output&&console.log("Task execution output: ",r.data.output)}catch(t){console.error(`Couldn't fetch execution status for executionId ${e}: ${t}`)}}import Hjt from"chalk";import{ethers as zpa}from"ethers";To();import*as jee from"crypto";import Upa from"axios";import gAe from"chalk";function Ujt(e){if(Upa.isAxiosError(e)&&e.response?.data){let t=e.response.data;return console.log(gAe.red(t.message)),typeof t=="string"?t:t.message||JSON.stringify(t)}return e instanceof Error?e.message:String(e)}async function Vpa(e,t){try{let r=z0({namespace:t});return(await e.post("getkey",r)).data}catch(r){return Ujt(r),console.error(gAe.red("Failed to retrieve encryption key from Hub-TEE-KMS. Please try again")),null}}function Hpa(e,t){try{let r=Buffer.from(t,"base64"),n=jee.randomBytes(16),a=jee.createCipheriv("aes-256-cbc",r,n),i=Buffer.concat([a.update(e,"utf8"),a.final()]);return r.fill(0),{encrypted_authString:i.toString("base64"),iv:n.toString("base64")}}catch{return null}}async function Vjt(e,t,r){try{let n=await Vpa(e,r);if(!n)return null;let a=Hpa(t,n.plaintext_key);return a?{encrypted_authString:a.encrypted_authString,encrypted_data_key:n.encryption_key,iv:a.iv}:null}catch(n){return Ujt(n),console.error(gAe.red("Failed to encrypt credentials. Please try again.")),null}}async function zjt(e,t,r,n,a,i,s){console.log("Deploying the API Authentication Credentials");try{if(!Ejt(i))throw"Invalid private key provided";if(!zpa.isAddress(s))throw"Invalid address provided";if(vie(n,a),!T4(e))throw"Invalid taskId";let o=await kJe();console.log("Encrypting credentials...");let l=await Vjt(o,a,t);if(!l)return;let u=z0({taskId:e,namespace:t,taskName:r,method:n,encrypted_authString:l.encrypted_authString,encrypted_data_key:l.encrypted_data_key,iv:l.iv});await o.post("credentials",u).catch(H0),console.log("The encrypted credentials were deployed "+Hjt.green("Successfully"))}catch(o){let l=o instanceof Error?o.message:String(o);console.error(Hjt.red(l));return}}import{inspect as k6a}from"util";import Ms from"ora";import{v4 as N6a}from"uuid";import{ethers as ete}from"ethers";var Wjt={name:"@truebit/cli",version:"1.120.0-beta.311",private:!1,description:"truebit-cli is a basic command line that allows interaction between users and truebit nextgen node.",author:{name:"Truebit Co.",url:"https://truebit.io/"},license:"https://truebit.io/terms/",repository:{type:"git",url:"https://github.com/TruebitProtocol"},homepage:"https://truebit.io/",main:"build/index.mjs",module:"build/index.mjs",types:"build/types/index.d.ts",type:"module",scripts:{prebuild:"rimraf build logs","prebuild:dev":"rimraf build logs","build:dev":"tsc && chmod +x build/index.mjs",build:"NODE_ENV=production node esbuild.config.mjs && chmod +x build/index.mjs",dev:"export NODE_ENV=development && npx nodemon",test:"vitest run --passWithNoTests tests/"},dependencies:{axios:"1.15.2",chalk:"5.6.2",colors:"1.4.0",commander:"14.0.3",ethers:"6.16.0",figlet:"1.11.0","form-data":"4.0.5","openapi-enforcer":"1.23.0",ora:"9.4.0","public-ip":"8.0.0","ts-retry":"6.0.0",uuid:"14.0.0"},bin:{truebit:"build/index.mjs"},files:["build"],devDependencies:{"@types/figlet":"1.7.0","@vitest/coverage-v8":"4.1.5",esbuild:"0.28.0",typescript:"5.9.3",vitest:"4.1.5"},engines:{node:">=22.13.0"}};Wi();To();N0();Wi();import{createInterface as Xpa}from"node:readline/promises";import bm from"chalk";To();import OA from"axios";import{ethers as A4}from"ethers";import{randomBytes as Gpa}from"crypto";import{v4 as Kpa}from"uuid";Wi();import{ethers as Fee}from"ethers";async function Gjt(e){Yy(e);let t=xn(ps(),Tt.AVAX),r=Fee.keccak256(Fee.toUtf8Bytes(e));return await t.authorization.registerAuthorization(r),r}async function _Ae(e,t,r=lr("address")){Yy(e);let n=xn(ps(),Tt.AVAX),a=await n.authorization.getEIP712Domain(),i=await n.authorization.nonces(r),s=Math.floor(Date.now()/1e3)+3600,o={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},l=Fee.keccak256(Fee.toUtf8Bytes(e)),u={user:r,apiKeyHash:l,nonce:Number(i),deadline:s};if(!n.utils)throw new Error("Private key is required for signing operations");let d=await n.utils.signMeta(a,o,u);return(await wjt(r,l,s,d,t)).status==201?l:null}Wi();N0();import{isTooManyTries as Kjt,retryAsync as Yjt}from"ts-retry";var Jjt="0x0000000000000000000000000000000000000000";async function Zjt(e){let t=!0;return e===""?(t=!1,console.log("An email address is required. Please provide your email address to proceed.")):new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/).test(e)?await Ypa(e)&&(t=!1,console.log("The provided email address is already in use. Please enter a different email address.")):(t=!1,console.log("The email address provided is not valid. Please try again.")),t}function Zy(e){return e==="Y"||e==="N"}function Xjt(e){return!A4.isAddress(e)||e.length!==42||!e.startsWith("0x")}async function Qjt(){let e=ps(),t=xn(e,Tt.AVAX),r=lr("address"),n=await Zpa(),a=await Jpa();Yy(a);let i=A4.keccak256(A4.toUtf8Bytes(a)),s=Math.floor(Date.now()/1e3)+3600,o=await t.taskRegistry.getEIP712Domain(),l=await t.authorization.getEIP712Domain(),u={RegisterTaskNamespaceMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},d={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},p=BigInt(await t.taskRegistry.nonces(r)),v=await t.authorization.nonces(r),c={user:A4.getAddress(r),namespace:n,nonce:p,deadline:s},m={user:r,apiKeyHash:i,nonce:Number(v),deadline:s};if(!t.utils)throw new Error("Private key is required for signing operations");let y=await t.utils.signMeta(o,u,c),b=await t.utils.signMeta(l,d,m),_={user:r,namespace:n,apiKeyHash:i,namespaceSignature:y,apiKeySignature:b,namespaceDeadline:s,apiKeyDeadline:s};try{let S=await Tjt(_);if(S.status!==201)throw new Error("Registration failed with unexpected status");if(!S.data.namespaceRegistration.success)throw new Error("Namespace registration failed");if(!S.data.apiKeyRegistration.success)throw new Error("API key registration failed");return{namespace:n,apiKey:a,hashedApiKey:i}}catch(S){let w=S.message;throw new Error(`Combined registration failed: ${w}`)}}async function Ypa(e){let t=await Ws();try{return(await t.get(`userexistence/${e}`)).data===!0}catch(r){if(OA.isAxiosError(r)&&r.response?.status===404&&typeof r.response?.data?.message=="string"&&r.response.data.message.includes("User not found"))return!1;throw r}}async function Uee(e,t){try{let r={message:"I am a Truebit User"};if(!t)throw Error("Secret.json does not exists");let n=t.privateKey,a=t.address,i=Ha.createSignedBody(r,n,a);return(await(await Ws()).get(`user/${e}`,{headers:{"truebit-auth":JSON.stringify(i)}})).data}catch(r){if(OA.isAxiosError(r)&&r.response?.status===401&&r.response?.data.message.includes("Entitlement Validation Error")||OA.isAxiosError(r)&&r.response?.status==404&&r.response?.data.message&&r.response?.data.message.includes("User not found"))return null;throw OA.isAxiosError(r)?r.response?Error(`The server responding with an error -> ${r.response.data.message||r.response.status+" - "+r.response.statusText}`):r.request?Error(`The server is not responding -> ${r.message}`):Error(`There was an error in the communication with the server -> ${r.message}`):Error(typeof r=="string"?`There was an error in the communication with the server -> ${r}`:"There was an error in the communication with the server.")}}async function eFt(e){try{return await(await Ws()).post("user/register",e)}catch(t){throw OA.isAxiosError(t)?t.response?Error(`The server responding with an error -> ${t.response.data.message||t.response.status+" - "+t.response.statusText}`):t.request?Error(`The server is not responding -> ${t.message}`):Error(`There was an error in the communication with the server -> ${t.message}`):Error(typeof t=="string"?`There was an error in the communication with the server -> ${t}`:"There was an error in the communication with the server.")}}async function Jpa(){let e=ps(),t=xn(e,Tt.AVAX),r="";try{await Yjt(async()=>{r=Kpa();let n=A4.keccak256(A4.toUtf8Bytes(r));return await t.authorization.getPayerAddress(n)===Jjt},{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw Kjt(n)?Error("Attempts to generate unique Api Key for the user exhausted."):n}return r}async function Zpa(){let e=ps(),t=xn(e,Tt.AVAX),r="";try{await Yjt(async()=>(r=Gpa(4).toString("hex"),await t.taskRegistry.getNamespaceOwner(r)===Jjt),{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw Kjt(n)?Error("Attempts to generate unique namespace for the user exhausted."):n}return r}function tFt(e){e.fullNameAnswer="",e.emailAddressAnswer="",e.companyNameAnswer="",e.jobPositionAnswer="",e.eulaAnswer="",e.confirmRegistration=""}N0();s6();import Qpa from"ora";import*as Vee from"os";async function rFt(e,t,r){let n=Gs(),a=n!==null,i=0,s,o=Xpa({input:process.stdin,output:process.stdout,terminal:!0});switch(a&&(Xjt(n.address)?i=1:(s=await Uee(n.address,n),s?i=2:i=3)),i){case 1:console.log("The wallet set in the configuration must be a valid ethereum address. (ENS not supported yet)");break;case 2:console.log(Rn.SETUP_STEP1_SCENARIO1_P2(s));break;case 3:{console.log(Rn.SETUP_STEP2_SCENARIO3_P1),console.log();let l={user_ip:e,date_time:qa(),os_version:Vee.type+"_"+Vee.release,node_version:process.version,cli_version:t};await r.sendEventToMixpanel("user_registration_begin",l);let u={confirmRegistration:"",fullNameAnswer:"",emailAddressAnswer:"",companyNameAnswer:"",jobPositionAnswer:"",eulaAnswer:""};try{for(;u.confirmRegistration!="Y";){for(u.fullNameAnswer=(await o.question(bm.bold(" 1. Full Name: "))).trim();u.fullNameAnswer==="";)console.log("Your full name is required. Please provide your first and last name to proceed."),u.fullNameAnswer=(await o.question(bm.bold(" 1. Full Name: "))).trim();for(u.emailAddressAnswer=(await o.question(bm.bold(" 2. Email Address: "))).trim();!await Zjt(u.emailAddressAnswer);)u.emailAddressAnswer=(await o.question(bm.bold(" 2. Email Address: "))).trim();for(u.companyNameAnswer=(await o.question(bm.bold(" 3. Company Name: "))).trim(),u.jobPositionAnswer=(await o.question(bm.bold(" 4. Job Position: "))).trim();!Zy(u.eulaAnswer);)u.eulaAnswer=(await o.question(bm.bold(` 5. Accept EULA? [Y|N] (${Rn.EULA_TERMS_LINK}): `))).toUpperCase();if(u.eulaAnswer=="N"){console.log(Rn.EULA_REGISTRATION_NO_ACCEPTED);break}for(;!Zy(u.confirmRegistration);)console.log(`
|
|
519
519
|
Is the information provided above correct?`),u.confirmRegistration=(await o.question(bm.bold("Press [Y] to confirm or [N] to edit: "))).toUpperCase();u.confirmRegistration=="N"&&(console.log(`
|
|
520
520
|
Please provide the following information:`),tFt(u))}}catch(v){if(v.name==="AbortError"||v.message.includes("Ctrl+C")){let c=v.message,m=l;m.error_details=c,m.date_time=qa();let y={fullname:u.fullNameAnswer,email:u.emailAddressAnswer,company:u.companyNameAnswer,role:u.jobPositionAnswer};m.user_info=JSON.stringify(y),await r.sendEventToMixpanel("user_registration_failed",m),process.exit(0)}}if(u.eulaAnswer=="N")break;let d=l;console.log(),console.log("By completing registration, you'll be automatically subscribed to our newsletter."),console.log("To opt-out, please follow the steps described in our documentation portal."),console.log();let p=Qpa({text:bm.bold("... registering your account."),stream:process.stdout}).start();try{let{namespace:v,apiKey:c}=await Qjt(),m={name:u.fullNameAnswer,email:u.emailAddressAnswer,walletAddress:n?.address,company:u.companyNameAnswer,jobDescription:u.jobPositionAnswer,EULA:Ha.createSignedBody({ip:await GC(),date:new Date().toISOString()},n.privateKey),defaultNamespace:v,defaultApiKey:c};await eFt(m),p.stop(),console.log(Rn.SETUP_STEP2_SCENARIO3_P2(u,n.address,v,c)),d.distinct_id=m.walletAddress,d.date_time=qa(),d.fullname=m.name,d.email=m.email,d.company=m.company,d.role=m.jobDescription,d.namespace=m.defaultNamespace,d.api_key=c,d.wallet_address=m.walletAddress,await r.sendEventToMixpanel("user_registration_success",d),await r.registerUserMixpanel(d.wallet_address,ema(d))}catch(v){p.stop();let c=v.message,m=l;m.error_details=c,m.date_time=qa();let y={fullname:u.fullNameAnswer,email:u.emailAddressAnswer,company:u.companyNameAnswer,role:u.jobPositionAnswer};m.user_info=JSON.stringify(y),await r.sendEventToMixpanel("user_registration_failed",m);let b=c?c.match(/CreateUserValidation - (.*?.*)/)?.[1]:null;if(b)throw Error(b);if(c.includes("Sender doesn't have enough funds to send tx"))throw Error("We are currently experiencing technical difficulties. Please try again later.");console.error(Rn.SETUP_STEP2_UNHANDLED_ERROR),process.exit(1)}finally{p.clear()}break}default:throw Error("An unexpected error occurred.")}o.close()}function ema(e){return{apiKey:e.api_key,name:e.fullname,email:e.email,ip:e.user_ip,company:e.company,role:e.role,namespace:e.namespace,walletAddress:e.wallet_address}}import{setDefaultAutoSelectFamily as D6a}from"node:net";import tma from"chalk";Wi();s6();import{createInterface as rma}from"node:readline/promises";import*as Hee from"os";async function nFt(e,t,r){let n=Gs(),a=n!==null,i;switch(a?a&&!n.eula?i=2:i=3:i=1,i){case 1:case 2:{let s=rma({input:process.stdin,output:process.stdout,terminal:!0}),o="",l={user_ip:e,date_time:qa(),os_version:Hee.type+"_"+Hee.release,node_version:process.version,cli_version:t};for(console.log(Rn.EULA_INSTALLATION);!Zy(o);)o=(await s.question(tma.bold(`
|
|
521
521
|
Have you read, and do you accept the Terms of Use? [Y|N]: `))).toUpperCase(),await r.sendEventToMixpanel("TOS_shown",l);if(o=="N")throw l.date_time=qa(),await r.sendEventToMixpanel("TOS_rejected",l),Rn.EULA_INSTALLATION_NO_ACCEPTED;l.date_time=qa(),await r.sendEventToMixpanel("TOS_accepted",l);let u=Math.round(new Date().getTime()).toString();if(i===1){let d={...Hue(),eula:u};LJe(d)}else i===2&&QE({eula:u});s.close()}break;default:break}}Wi();s6();async function Ps(e=!1){let t=Gs(),r=t!==null,n=null,a;switch(r?r&&(!t.privateKey||!t.address)?a=2:(n=await Uee(t.address,t),n?a=4:a=3):a=1,a){case 1:case 2:case 3:console.log(Rn.USER_NO_REGISTERED),process.exit(1);break;case 4:e&&console.log(`You are logged in as: ${n?.name} - ${n?.email}`);break}}import{createInterface as nma}from"node:readline/promises";s6();Wi();import ama from"chalk";async function aFt(){console.log(ama.bold(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truebit/cli",
|
|
3
|
-
"version": "1.120.0-beta.
|
|
3
|
+
"version": "1.120.0-beta.311",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "truebit-cli is a basic command line that allows interaction between users and truebit nextgen node.",
|
|
6
6
|
"author": {
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=22.13.0"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "bdfd0c05e41983ea9def2c5200e5627ca474d122"
|
|
59
59
|
}
|