@sentio/cli 2.2.0 → 2.3.0-rc.2
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/lib/commands/build.js +11 -0
- package/lib/commands/build.js.map +1 -1
- package/lib/commands/run-add.js +48 -9
- package/lib/commands/run-add.js.map +1 -1
- package/package.json +2 -1
- package/src/commands/build.ts +13 -0
- package/src/commands/run-add.ts +51 -9
package/lib/commands/build.js
CHANGED
|
@@ -116,6 +116,17 @@ export async function codegen() {
|
|
|
116
116
|
catch (e) {
|
|
117
117
|
console.error('code gen error', e);
|
|
118
118
|
}
|
|
119
|
+
try {
|
|
120
|
+
// @ts-ignore dynamic import
|
|
121
|
+
const codegen = await import('@sentio/sdk/sui/codegen');
|
|
122
|
+
const output = path.resolve(outputBase, 'sui');
|
|
123
|
+
fs.emptyDirSync(output);
|
|
124
|
+
// @ts-ignore dynamic import
|
|
125
|
+
await codegen.codegen(path.resolve('abis', 'sui'), output);
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
console.error('code gen error', e);
|
|
129
|
+
}
|
|
119
130
|
}
|
|
120
131
|
async function installDeps() {
|
|
121
132
|
await execStep('yarn install --ignore-scripts', 'Yarn Install');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk'\nimport path from 'path'\nimport fs from 'fs-extra'\nimport { exec } from 'child_process'\nimport * as process from 'process'\nimport { getPackageRoot } from '../utils.js'\nimport commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\n\nexport const buildOptionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'skip-gen',\n type: Boolean,\n description: 'Skip code generation.',\n },\n {\n name: 'skip-deps',\n type: Boolean,\n description: 'Skip dependency enforce.',\n },\n]\n\nexport async function buildProcessorWithArgs(argv: string[]) {\n const options = commandLineArgs(buildOptionDefinitions, { argv })\n const usage = commandLineUsage([\n {\n header: 'Create a template project',\n content: 'sentio create <name>',\n },\n {\n header: 'Options',\n optionList: buildOptionDefinitions,\n },\n ])\n\n if (options.help) {\n console.log(usage)\n process.exit(0)\n }\n await buildProcessor(false, options)\n}\n\nexport async function buildProcessor(onlyGen: boolean, options: commandLineArgs.CommandLineOptions) {\n if (!options['skip-deps'] && !onlyGen) {\n await installDeps()\n }\n\n if (!options['skip-gen']) {\n await codegen()\n }\n\n if (!onlyGen) {\n let tsupConfig: string\n try {\n tsupConfig = path.resolve(getPackageRoot('@sentio/sdk'), 'lib/tsup.config.ts')\n } catch (e) {\n console.error(chalk.red(\"Wrong CLI version for sdk, can't find tsup.config.ts\"))\n process.exit(1)\n }\n\n const tsup = path.resolve(getPackageRoot('tsup'), 'dist', 'cli-default.js')\n // await execStep('yarn tsc -p .', 'Compile')\n await execStep(`node ${tsup} --config=${tsupConfig}`, 'Packaging')\n\n const dir = fs.readdirSync(path.join(process.cwd(), 'dist'))\n const generated = dir.filter((d) => d.endsWith('.js')).length\n if (generated < 0) {\n console.error(chalk.red('No filed generated, please check if your processor.ts file'))\n process.exit(1)\n }\n if (generated > 1) {\n console.error(\n chalk.red('Packing failed: '),\n `Multiple entry point is not allowed. If your processor.ts have multiple file imported, please change:\nimport('mine.js')\nto\nimport 'mine.js'\n`\n )\n }\n }\n}\n\nexport async function codegen() {\n const outputBase = path.resolve('src', 'types')\n try {\n // @ts-ignore dynamic import\n const codegen = await import('@sentio/sdk/eth/codegen')\n let input = path.resolve('abis', 'eth')\n let output = path.resolve(outputBase, 'eth')\n if (!fs.existsSync(input)) {\n input = path.resolve('abis', 'evm')\n output = path.resolve(outputBase, 'eth')\n }\n fs.emptyDirSync(output)\n // @ts-ignore dynamic import\n await codegen.codegen(input, output)\n } catch (e) {\n console.error('code gen error', e)\n }\n\n try {\n // @ts-ignore dynamic import\n const codegen = await import('@sentio/sdk/solana/codegen')\n\n const output = path.resolve(outputBase, 'solana')\n fs.emptyDirSync(output)\n\n // @ts-ignore dynamic import\n await codegen.codegen(path.resolve('abis', 'solana'), output)\n } catch (e) {\n console.error('code gen error', e)\n }\n\n try {\n // @ts-ignore dynamic import\n const codegen = await import('@sentio/sdk/aptos/codegen')\n\n const output = path.resolve(outputBase, 'aptos')\n fs.emptyDirSync(output)\n\n // @ts-ignore dynamic import\n await codegen.codegen(path.resolve('abis', 'aptos'), output)\n } catch (e) {\n console.error('code gen error', e)\n }\n}\n\nasync function installDeps() {\n await execStep('yarn install --ignore-scripts', 'Yarn Install')\n}\n\nasync function execStep(cmd: string, stepName: string) {\n const child = exec(cmd)\n console.log(chalk.blue(stepName + ' begin'))\n\n if (!child.stdout || !child.stderr) {\n console.error(chalk.red(stepName + ' failed'))\n process.exit(1)\n }\n\n child.stdout.pipe(process.stdout)\n child.stderr.pipe(process.stderr)\n\n await new Promise((resolve) => {\n child.on('close', resolve)\n })\n\n if (child.exitCode) {\n console.error(chalk.red(stepName + ' failed'))\n process.exit(child.exitCode)\n }\n console.log(chalk.blue(stepName + ' success'))\n console.log()\n}\n"]}
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk'\nimport path from 'path'\nimport fs from 'fs-extra'\nimport { exec } from 'child_process'\nimport * as process from 'process'\nimport { getPackageRoot } from '../utils.js'\nimport commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\n\nexport const buildOptionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'skip-gen',\n type: Boolean,\n description: 'Skip code generation.',\n },\n {\n name: 'skip-deps',\n type: Boolean,\n description: 'Skip dependency enforce.',\n },\n]\n\nexport async function buildProcessorWithArgs(argv: string[]) {\n const options = commandLineArgs(buildOptionDefinitions, { argv })\n const usage = commandLineUsage([\n {\n header: 'Create a template project',\n content: 'sentio create <name>',\n },\n {\n header: 'Options',\n optionList: buildOptionDefinitions,\n },\n ])\n\n if (options.help) {\n console.log(usage)\n process.exit(0)\n }\n await buildProcessor(false, options)\n}\n\nexport async function buildProcessor(onlyGen: boolean, options: commandLineArgs.CommandLineOptions) {\n if (!options['skip-deps'] && !onlyGen) {\n await installDeps()\n }\n\n if (!options['skip-gen']) {\n await codegen()\n }\n\n if (!onlyGen) {\n let tsupConfig: string\n try {\n tsupConfig = path.resolve(getPackageRoot('@sentio/sdk'), 'lib/tsup.config.ts')\n } catch (e) {\n console.error(chalk.red(\"Wrong CLI version for sdk, can't find tsup.config.ts\"))\n process.exit(1)\n }\n\n const tsup = path.resolve(getPackageRoot('tsup'), 'dist', 'cli-default.js')\n // await execStep('yarn tsc -p .', 'Compile')\n await execStep(`node ${tsup} --config=${tsupConfig}`, 'Packaging')\n\n const dir = fs.readdirSync(path.join(process.cwd(), 'dist'))\n const generated = dir.filter((d) => d.endsWith('.js')).length\n if (generated < 0) {\n console.error(chalk.red('No filed generated, please check if your processor.ts file'))\n process.exit(1)\n }\n if (generated > 1) {\n console.error(\n chalk.red('Packing failed: '),\n `Multiple entry point is not allowed. If your processor.ts have multiple file imported, please change:\nimport('mine.js')\nto\nimport 'mine.js'\n`\n )\n }\n }\n}\n\nexport async function codegen() {\n const outputBase = path.resolve('src', 'types')\n try {\n // @ts-ignore dynamic import\n const codegen = await import('@sentio/sdk/eth/codegen')\n let input = path.resolve('abis', 'eth')\n let output = path.resolve(outputBase, 'eth')\n if (!fs.existsSync(input)) {\n input = path.resolve('abis', 'evm')\n output = path.resolve(outputBase, 'eth')\n }\n fs.emptyDirSync(output)\n // @ts-ignore dynamic import\n await codegen.codegen(input, output)\n } catch (e) {\n console.error('code gen error', e)\n }\n\n try {\n // @ts-ignore dynamic import\n const codegen = await import('@sentio/sdk/solana/codegen')\n\n const output = path.resolve(outputBase, 'solana')\n fs.emptyDirSync(output)\n\n // @ts-ignore dynamic import\n await codegen.codegen(path.resolve('abis', 'solana'), output)\n } catch (e) {\n console.error('code gen error', e)\n }\n\n try {\n // @ts-ignore dynamic import\n const codegen = await import('@sentio/sdk/aptos/codegen')\n\n const output = path.resolve(outputBase, 'aptos')\n fs.emptyDirSync(output)\n\n // @ts-ignore dynamic import\n await codegen.codegen(path.resolve('abis', 'aptos'), output)\n } catch (e) {\n console.error('code gen error', e)\n }\n\n try {\n // @ts-ignore dynamic import\n const codegen = await import('@sentio/sdk/sui/codegen')\n\n const output = path.resolve(outputBase, 'sui')\n fs.emptyDirSync(output)\n\n // @ts-ignore dynamic import\n await codegen.codegen(path.resolve('abis', 'sui'), output)\n } catch (e) {\n console.error('code gen error', e)\n }\n}\n\nasync function installDeps() {\n await execStep('yarn install --ignore-scripts', 'Yarn Install')\n}\n\nasync function execStep(cmd: string, stepName: string) {\n const child = exec(cmd)\n console.log(chalk.blue(stepName + ' begin'))\n\n if (!child.stdout || !child.stderr) {\n console.error(chalk.red(stepName + ' failed'))\n process.exit(1)\n }\n\n child.stdout.pipe(process.stdout)\n child.stderr.pipe(process.stderr)\n\n await new Promise((resolve) => {\n child.on('close', resolve)\n })\n\n if (child.exitCode) {\n console.error(chalk.red(stepName + ' failed'))\n process.exit(child.exitCode)\n }\n console.log(chalk.blue(stepName + ' success'))\n console.log()\n}\n"]}
|
package/lib/commands/run-add.js
CHANGED
|
@@ -7,8 +7,7 @@ import { codegen } from './build.js';
|
|
|
7
7
|
// @ts-ignore no types
|
|
8
8
|
import { init } from 'etherscan-api';
|
|
9
9
|
import { AptosClient } from 'aptos-sdk';
|
|
10
|
-
import
|
|
11
|
-
import * as process from 'process';
|
|
10
|
+
import { JsonRpcProvider } from '@mysten/sui.js';
|
|
12
11
|
export async function runAdd(argv) {
|
|
13
12
|
const optionDefinitions = [
|
|
14
13
|
{
|
|
@@ -22,7 +21,7 @@ export async function runAdd(argv) {
|
|
|
22
21
|
alias: 'c',
|
|
23
22
|
type: String,
|
|
24
23
|
defaultValue: 'homestead',
|
|
25
|
-
description: 'Chain identifier, can be: homestead/mainnet,goerli,arbitrum,avalanche,
|
|
24
|
+
description: 'Chain identifier, can be: homestead/mainnet,goerli,arbitrum,avalanche, apots, aptos/testnet and sui, sui/testnet',
|
|
26
25
|
},
|
|
27
26
|
{
|
|
28
27
|
name: 'address',
|
|
@@ -30,12 +29,18 @@ export async function runAdd(argv) {
|
|
|
30
29
|
description: 'Address of the contract',
|
|
31
30
|
type: String,
|
|
32
31
|
},
|
|
32
|
+
{
|
|
33
|
+
name: 'name',
|
|
34
|
+
alias: 'n',
|
|
35
|
+
description: 'File name for the downloaded contract, if empty, use address as file name',
|
|
36
|
+
type: String,
|
|
37
|
+
},
|
|
33
38
|
];
|
|
34
|
-
const options = commandLineArgs(optionDefinitions, { argv });
|
|
39
|
+
const options = commandLineArgs(optionDefinitions, { argv, partial: true });
|
|
35
40
|
const usage = commandLineUsage([
|
|
36
41
|
{
|
|
37
42
|
header: "Add contract's ABI to the project",
|
|
38
|
-
content: 'sentio add [--chain <chain>] <address>',
|
|
43
|
+
content: 'sentio add [--chain <chain> --name <name>] <address>',
|
|
39
44
|
},
|
|
40
45
|
{
|
|
41
46
|
header: 'Options',
|
|
@@ -50,10 +55,12 @@ export async function runAdd(argv) {
|
|
|
50
55
|
const address = options.address;
|
|
51
56
|
if (!address.startsWith('0x')) {
|
|
52
57
|
console.error(chalk.red('Address must start with 0x'));
|
|
58
|
+
console.log(usage);
|
|
53
59
|
process.exit(1);
|
|
54
60
|
}
|
|
55
61
|
let ethApi;
|
|
56
62
|
let aptosClient;
|
|
63
|
+
let suiClient;
|
|
57
64
|
switch (chain) {
|
|
58
65
|
case 'aptos':
|
|
59
66
|
aptosClient = new AptosClient('https://mainnet.aptoslabs.com/');
|
|
@@ -61,6 +68,13 @@ export async function runAdd(argv) {
|
|
|
61
68
|
case 'aptos/testnet':
|
|
62
69
|
aptosClient = new AptosClient('https://testnet.aptoslabs.com/');
|
|
63
70
|
break;
|
|
71
|
+
case 'sui':
|
|
72
|
+
throw Error('SUI mainnet is not support yet, try sui/testnet');
|
|
73
|
+
// suiClient = new JsonRpcProvider('https://fullnode.mainnet.sui.io/')
|
|
74
|
+
// break
|
|
75
|
+
case 'sui/testnet':
|
|
76
|
+
suiClient = new JsonRpcProvider('https://fullnode.testnet.sui.io/');
|
|
77
|
+
break;
|
|
64
78
|
case 'mainnet':
|
|
65
79
|
case 'homestead':
|
|
66
80
|
ethApi = init();
|
|
@@ -69,10 +83,21 @@ export async function runAdd(argv) {
|
|
|
69
83
|
ethApi = init(undefined, chain);
|
|
70
84
|
}
|
|
71
85
|
const baseErrMsg = chalk.red(`Failed to automatic download contract ${address} from ${chain}, please manually download abi and put it into abis/eth directory`);
|
|
86
|
+
const filename = options.name ? options.name : address;
|
|
72
87
|
if (aptosClient) {
|
|
73
88
|
try {
|
|
74
89
|
const module = await aptosClient.getAccountModules(address);
|
|
75
|
-
writeToDirectory(
|
|
90
|
+
writeToDirectory(module, chain, filename);
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
console.error(baseErrMsg, e);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (suiClient) {
|
|
98
|
+
try {
|
|
99
|
+
const module = await suiClient.getNormalizedMoveModulesByPackage(address);
|
|
100
|
+
writeToDirectory(module, chain, filename);
|
|
76
101
|
}
|
|
77
102
|
catch (e) {
|
|
78
103
|
console.error(baseErrMsg, e);
|
|
@@ -85,7 +110,7 @@ export async function runAdd(argv) {
|
|
|
85
110
|
if (resp.status !== '1') {
|
|
86
111
|
throw Error(resp.message);
|
|
87
112
|
}
|
|
88
|
-
writeToDirectory(resp.result, chain,
|
|
113
|
+
writeToDirectory(resp.result, chain, filename);
|
|
89
114
|
}
|
|
90
115
|
catch (e) {
|
|
91
116
|
console.error(baseErrMsg, e);
|
|
@@ -96,8 +121,22 @@ export async function runAdd(argv) {
|
|
|
96
121
|
await codegen();
|
|
97
122
|
}
|
|
98
123
|
}
|
|
99
|
-
function writeToDirectory(
|
|
100
|
-
|
|
124
|
+
function writeToDirectory(obj, chain, name) {
|
|
125
|
+
if (typeof obj === 'string') {
|
|
126
|
+
obj = JSON.parse(obj);
|
|
127
|
+
}
|
|
128
|
+
const data = JSON.stringify(obj, null, 2);
|
|
129
|
+
let subpath = chain;
|
|
130
|
+
switch (chain) {
|
|
131
|
+
case 'aptos':
|
|
132
|
+
case 'aptos/testnet':
|
|
133
|
+
case 'sui':
|
|
134
|
+
case 'sui/testnet':
|
|
135
|
+
break;
|
|
136
|
+
default:
|
|
137
|
+
subpath = 'eth';
|
|
138
|
+
}
|
|
139
|
+
const output = path.join('abis', subpath, name + '.json');
|
|
101
140
|
fs.mkdirSync(path.dirname(output), { recursive: true });
|
|
102
141
|
fs.writeFileSync(output, data);
|
|
103
142
|
console.log(chalk.green('ABI has been downloaded to', output));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-add.js","sourceRoot":"","sources":["../../src/commands/run-add.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,sBAAsB;AACtB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"run-add.js","sourceRoot":"","sources":["../../src/commands/run-add.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport path from 'path'\nimport fs from 'fs-extra'\nimport chalk from 'chalk'\n\nimport { codegen } from './build.js'\n\n// @ts-ignore no types\nimport { init } from 'etherscan-api'\nimport { AptosClient } from 'aptos-sdk'\nimport { JsonRpcProvider } from '@mysten/sui.js'\n\nexport async function runAdd(argv: string[]) {\n const optionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'chain',\n alias: 'c',\n type: String,\n defaultValue: 'homestead',\n description:\n 'Chain identifier, can be: homestead/mainnet,goerli,arbitrum,avalanche, apots, aptos/testnet and sui, sui/testnet',\n },\n {\n name: 'address',\n defaultOption: true,\n description: 'Address of the contract',\n type: String,\n },\n {\n name: 'name',\n alias: 'n',\n description: 'File name for the downloaded contract, if empty, use address as file name',\n type: String,\n },\n ]\n\n const options = commandLineArgs(optionDefinitions, { argv, partial: true })\n const usage = commandLineUsage([\n {\n header: \"Add contract's ABI to the project\",\n content: 'sentio add [--chain <chain> --name <name>] <address>',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n\n if (options.help || !options.address) {\n console.log(usage)\n } else {\n const chain: string = options['chain'].toLowerCase()\n const address: string = options.address\n if (!address.startsWith('0x')) {\n console.error(chalk.red('Address must start with 0x'))\n console.log(usage)\n process.exit(1)\n }\n\n let ethApi\n let aptosClient: AptosClient | undefined\n let suiClient: JsonRpcProvider | undefined\n switch (chain) {\n case 'aptos':\n aptosClient = new AptosClient('https://mainnet.aptoslabs.com/')\n break\n case 'aptos/testnet':\n aptosClient = new AptosClient('https://testnet.aptoslabs.com/')\n break\n case 'sui':\n throw Error('SUI mainnet is not support yet, try sui/testnet')\n // suiClient = new JsonRpcProvider('https://fullnode.mainnet.sui.io/')\n // break\n case 'sui/testnet':\n suiClient = new JsonRpcProvider('https://fullnode.testnet.sui.io/')\n break\n case 'mainnet':\n case 'homestead':\n ethApi = init()\n break\n default:\n ethApi = init(undefined, chain)\n }\n\n const baseErrMsg = chalk.red(\n `Failed to automatic download contract ${address} from ${chain}, please manually download abi and put it into abis/eth directory`\n )\n\n const filename = options.name ? options.name : address\n\n if (aptosClient) {\n try {\n const module = await aptosClient.getAccountModules(address)\n writeToDirectory(module, chain, filename)\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n }\n if (suiClient) {\n try {\n const module = await suiClient.getNormalizedMoveModulesByPackage(address)\n writeToDirectory(module, chain, filename)\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n }\n\n if (ethApi) {\n try {\n const resp = await ethApi.contract.getabi(address)\n if (resp.status !== '1') {\n throw Error(resp.message)\n }\n writeToDirectory(resp.result, chain, filename)\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n }\n // Run gen\n await codegen()\n }\n}\n\nfunction writeToDirectory(obj: object | string, chain: string, name: string) {\n if (typeof obj === 'string') {\n obj = JSON.parse(obj)\n }\n const data = JSON.stringify(obj, null, 2)\n let subpath = chain\n switch (chain) {\n case 'aptos':\n case 'aptos/testnet':\n case 'sui':\n case 'sui/testnet':\n break\n default:\n subpath = 'eth'\n }\n\n const output = path.join('abis', subpath, name + '.json')\n fs.mkdirSync(path.dirname(output), { recursive: true })\n fs.writeFileSync(output, data)\n console.log(chalk.green('ABI has been downloaded to', output))\n}\n"]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.3.0-rc.2",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"compile": "tsc",
|
|
9
9
|
"build": "yarn compile",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@jest/types": "^29.4.1",
|
|
17
|
+
"@mysten/sui.js": "npm:@sentio/sui.js@0.17.0",
|
|
17
18
|
"@types/jest": "^29.0.0",
|
|
18
19
|
"@types/node": "^18.11.18",
|
|
19
20
|
"aptos-sdk": "npm:@sentio/aptos@^1.6.0",
|
package/src/commands/build.ts
CHANGED
|
@@ -130,6 +130,19 @@ export async function codegen() {
|
|
|
130
130
|
} catch (e) {
|
|
131
131
|
console.error('code gen error', e)
|
|
132
132
|
}
|
|
133
|
+
|
|
134
|
+
try {
|
|
135
|
+
// @ts-ignore dynamic import
|
|
136
|
+
const codegen = await import('@sentio/sdk/sui/codegen')
|
|
137
|
+
|
|
138
|
+
const output = path.resolve(outputBase, 'sui')
|
|
139
|
+
fs.emptyDirSync(output)
|
|
140
|
+
|
|
141
|
+
// @ts-ignore dynamic import
|
|
142
|
+
await codegen.codegen(path.resolve('abis', 'sui'), output)
|
|
143
|
+
} catch (e) {
|
|
144
|
+
console.error('code gen error', e)
|
|
145
|
+
}
|
|
133
146
|
}
|
|
134
147
|
|
|
135
148
|
async function installDeps() {
|
package/src/commands/run-add.ts
CHANGED
|
@@ -9,8 +9,7 @@ import { codegen } from './build.js'
|
|
|
9
9
|
// @ts-ignore no types
|
|
10
10
|
import { init } from 'etherscan-api'
|
|
11
11
|
import { AptosClient } from 'aptos-sdk'
|
|
12
|
-
import
|
|
13
|
-
import * as process from 'process'
|
|
12
|
+
import { JsonRpcProvider } from '@mysten/sui.js'
|
|
14
13
|
|
|
15
14
|
export async function runAdd(argv: string[]) {
|
|
16
15
|
const optionDefinitions = [
|
|
@@ -25,7 +24,8 @@ export async function runAdd(argv: string[]) {
|
|
|
25
24
|
alias: 'c',
|
|
26
25
|
type: String,
|
|
27
26
|
defaultValue: 'homestead',
|
|
28
|
-
description:
|
|
27
|
+
description:
|
|
28
|
+
'Chain identifier, can be: homestead/mainnet,goerli,arbitrum,avalanche, apots, aptos/testnet and sui, sui/testnet',
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
name: 'address',
|
|
@@ -33,13 +33,19 @@ export async function runAdd(argv: string[]) {
|
|
|
33
33
|
description: 'Address of the contract',
|
|
34
34
|
type: String,
|
|
35
35
|
},
|
|
36
|
+
{
|
|
37
|
+
name: 'name',
|
|
38
|
+
alias: 'n',
|
|
39
|
+
description: 'File name for the downloaded contract, if empty, use address as file name',
|
|
40
|
+
type: String,
|
|
41
|
+
},
|
|
36
42
|
]
|
|
37
43
|
|
|
38
|
-
const options = commandLineArgs(optionDefinitions, { argv })
|
|
44
|
+
const options = commandLineArgs(optionDefinitions, { argv, partial: true })
|
|
39
45
|
const usage = commandLineUsage([
|
|
40
46
|
{
|
|
41
47
|
header: "Add contract's ABI to the project",
|
|
42
|
-
content: 'sentio add [--chain <chain>] <address>',
|
|
48
|
+
content: 'sentio add [--chain <chain> --name <name>] <address>',
|
|
43
49
|
},
|
|
44
50
|
{
|
|
45
51
|
header: 'Options',
|
|
@@ -54,11 +60,13 @@ export async function runAdd(argv: string[]) {
|
|
|
54
60
|
const address: string = options.address
|
|
55
61
|
if (!address.startsWith('0x')) {
|
|
56
62
|
console.error(chalk.red('Address must start with 0x'))
|
|
63
|
+
console.log(usage)
|
|
57
64
|
process.exit(1)
|
|
58
65
|
}
|
|
59
66
|
|
|
60
67
|
let ethApi
|
|
61
68
|
let aptosClient: AptosClient | undefined
|
|
69
|
+
let suiClient: JsonRpcProvider | undefined
|
|
62
70
|
switch (chain) {
|
|
63
71
|
case 'aptos':
|
|
64
72
|
aptosClient = new AptosClient('https://mainnet.aptoslabs.com/')
|
|
@@ -66,6 +74,13 @@ export async function runAdd(argv: string[]) {
|
|
|
66
74
|
case 'aptos/testnet':
|
|
67
75
|
aptosClient = new AptosClient('https://testnet.aptoslabs.com/')
|
|
68
76
|
break
|
|
77
|
+
case 'sui':
|
|
78
|
+
throw Error('SUI mainnet is not support yet, try sui/testnet')
|
|
79
|
+
// suiClient = new JsonRpcProvider('https://fullnode.mainnet.sui.io/')
|
|
80
|
+
// break
|
|
81
|
+
case 'sui/testnet':
|
|
82
|
+
suiClient = new JsonRpcProvider('https://fullnode.testnet.sui.io/')
|
|
83
|
+
break
|
|
69
84
|
case 'mainnet':
|
|
70
85
|
case 'homestead':
|
|
71
86
|
ethApi = init()
|
|
@@ -77,10 +92,22 @@ export async function runAdd(argv: string[]) {
|
|
|
77
92
|
const baseErrMsg = chalk.red(
|
|
78
93
|
`Failed to automatic download contract ${address} from ${chain}, please manually download abi and put it into abis/eth directory`
|
|
79
94
|
)
|
|
95
|
+
|
|
96
|
+
const filename = options.name ? options.name : address
|
|
97
|
+
|
|
80
98
|
if (aptosClient) {
|
|
81
99
|
try {
|
|
82
100
|
const module = await aptosClient.getAccountModules(address)
|
|
83
|
-
writeToDirectory(
|
|
101
|
+
writeToDirectory(module, chain, filename)
|
|
102
|
+
} catch (e) {
|
|
103
|
+
console.error(baseErrMsg, e)
|
|
104
|
+
process.exit(1)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (suiClient) {
|
|
108
|
+
try {
|
|
109
|
+
const module = await suiClient.getNormalizedMoveModulesByPackage(address)
|
|
110
|
+
writeToDirectory(module, chain, filename)
|
|
84
111
|
} catch (e) {
|
|
85
112
|
console.error(baseErrMsg, e)
|
|
86
113
|
process.exit(1)
|
|
@@ -93,7 +120,7 @@ export async function runAdd(argv: string[]) {
|
|
|
93
120
|
if (resp.status !== '1') {
|
|
94
121
|
throw Error(resp.message)
|
|
95
122
|
}
|
|
96
|
-
writeToDirectory(resp.result, chain,
|
|
123
|
+
writeToDirectory(resp.result, chain, filename)
|
|
97
124
|
} catch (e) {
|
|
98
125
|
console.error(baseErrMsg, e)
|
|
99
126
|
process.exit(1)
|
|
@@ -104,8 +131,23 @@ export async function runAdd(argv: string[]) {
|
|
|
104
131
|
}
|
|
105
132
|
}
|
|
106
133
|
|
|
107
|
-
function writeToDirectory(
|
|
108
|
-
|
|
134
|
+
function writeToDirectory(obj: object | string, chain: string, name: string) {
|
|
135
|
+
if (typeof obj === 'string') {
|
|
136
|
+
obj = JSON.parse(obj)
|
|
137
|
+
}
|
|
138
|
+
const data = JSON.stringify(obj, null, 2)
|
|
139
|
+
let subpath = chain
|
|
140
|
+
switch (chain) {
|
|
141
|
+
case 'aptos':
|
|
142
|
+
case 'aptos/testnet':
|
|
143
|
+
case 'sui':
|
|
144
|
+
case 'sui/testnet':
|
|
145
|
+
break
|
|
146
|
+
default:
|
|
147
|
+
subpath = 'eth'
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const output = path.join('abis', subpath, name + '.json')
|
|
109
151
|
fs.mkdirSync(path.dirname(output), { recursive: true })
|
|
110
152
|
fs.writeFileSync(output, data)
|
|
111
153
|
console.log(chalk.green('ABI has been downloaded to', output))
|