@sentio/cli 2.4.0-rc.1 → 2.5.0-rc.1

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/abi.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare function getABI(chain: string, address: string, name: string | undefined): Promise<{
2
+ name?: string;
3
+ abi: object | string;
4
+ }>;
5
+ export declare function getABIFilePath(chain: string, name: string): string;
6
+ export declare function writeABIFile(obj: string | object, output: string): void;
package/lib/abi.js ADDED
@@ -0,0 +1,138 @@
1
+ import { AptosClient } from 'aptos-sdk';
2
+ import { JsonRpcProvider } from '@mysten/sui.js';
3
+ import { CHAIN_IDS } from './chain.js';
4
+ import chalk from 'chalk';
5
+ import process from 'process';
6
+ import path from 'path';
7
+ import fs from 'fs-extra';
8
+ // @ts-ignore no types
9
+ import { init } from 'etherscan-api';
10
+ export async function getABI(chain, address, name) {
11
+ let ethApi;
12
+ let aptosClient;
13
+ let suiClient;
14
+ switch (chain) {
15
+ case CHAIN_IDS.APTOS_MAINNET:
16
+ aptosClient = new AptosClient('https://mainnet.aptoslabs.com/');
17
+ break;
18
+ case CHAIN_IDS.APTOS_TESTNET:
19
+ aptosClient = new AptosClient('https://testnet.aptoslabs.com/');
20
+ break;
21
+ case CHAIN_IDS.SUI_MAINNET:
22
+ throw Error('SUI mainnet is not support yet, try sui/testnet');
23
+ // suiClient = new JsonRpcProvider('https://fullnode.mainnet.sui.io/')
24
+ // break
25
+ case CHAIN_IDS.SUI_TESTNET:
26
+ suiClient = new JsonRpcProvider('https://fullnode.testnet.sui.io/');
27
+ break;
28
+ case CHAIN_IDS.ETHEREUM:
29
+ ethApi = init();
30
+ break;
31
+ // case CHAIN_IDS.ROPSTEN:
32
+ // ethApi = init(undefined, "ropsten")
33
+ // break
34
+ // case CHAIN_IDS.RINKEBY:
35
+ // ethApi = init(undefined, "rinkeby")
36
+ // break
37
+ case CHAIN_IDS.GOERLI:
38
+ ethApi = init(undefined, 'goerli');
39
+ break;
40
+ // case CHAIN_IDS.SEPOLIA:
41
+ // ethApi = init(undefined, "sepolia")
42
+ // break
43
+ case CHAIN_IDS.ARBITRUM:
44
+ ethApi = init(undefined, 'arbitrum');
45
+ break;
46
+ case CHAIN_IDS.ARBITRUM_GOERLI:
47
+ ethApi = init(undefined, 'arbitrum_rinkeby');
48
+ break;
49
+ case CHAIN_IDS.AVALANCHE:
50
+ ethApi = init(undefined, 'avalanche');
51
+ break;
52
+ // case CHAIN_IDS.KOVAN:
53
+ // ethApi = init(undefined, "kovan")
54
+ // break
55
+ default:
56
+ console.error(chalk.red(`chain ${chain} not supported for direct add, please download the ABI manually`));
57
+ process.exit(1);
58
+ }
59
+ const baseErrMsg = chalk.red(`Failed to automatic download contract ${address} from ${chain}, please manually download abi and put it into abis/eth directory`);
60
+ if (aptosClient) {
61
+ try {
62
+ return {
63
+ abi: await aptosClient.getAccountModules(address),
64
+ };
65
+ }
66
+ catch (e) {
67
+ console.error(baseErrMsg, e);
68
+ process.exit(1);
69
+ }
70
+ }
71
+ if (suiClient) {
72
+ try {
73
+ return {
74
+ abi: await suiClient.getNormalizedMoveModulesByPackage(address),
75
+ };
76
+ }
77
+ catch (e) {
78
+ console.error(baseErrMsg, e);
79
+ process.exit(1);
80
+ }
81
+ }
82
+ try {
83
+ let resp = await ethApi.contract.getabi(address);
84
+ if (resp.status !== '1') {
85
+ throw Error(resp.message);
86
+ }
87
+ const abi = resp.result;
88
+ if (!name) {
89
+ await new Promise((resolve) => setTimeout(resolve, 1000));
90
+ resp = await ethApi.contract.getsourcecode(address);
91
+ if (resp.status !== '1') {
92
+ throw Error(resp.message);
93
+ }
94
+ const contractName = resp.result[0].ContractName;
95
+ if (contractName) {
96
+ name = contractName;
97
+ }
98
+ }
99
+ return {
100
+ name,
101
+ abi,
102
+ };
103
+ }
104
+ catch (e) {
105
+ console.error(baseErrMsg, e);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ export function getABIFilePath(chain, name) {
110
+ let subpath;
111
+ switch (chain) {
112
+ case CHAIN_IDS.APTOS_MAINNET:
113
+ subpath = 'aptos';
114
+ break;
115
+ case CHAIN_IDS.APTOS_TESTNET:
116
+ subpath = 'aptos/test';
117
+ break;
118
+ case CHAIN_IDS.SUI_MAINNET:
119
+ subpath = 'sui';
120
+ break;
121
+ case CHAIN_IDS.SUI_TESTNET:
122
+ subpath = 'sui/test';
123
+ break;
124
+ default:
125
+ subpath = 'eth';
126
+ }
127
+ return path.join('abis', subpath, name + '.json');
128
+ }
129
+ export function writeABIFile(obj, output) {
130
+ if (typeof obj === 'string') {
131
+ obj = JSON.parse(obj);
132
+ }
133
+ const data = JSON.stringify(obj, null, 2);
134
+ fs.mkdirSync(path.dirname(output), { recursive: true });
135
+ fs.writeFileSync(output, data);
136
+ console.log(chalk.green('ABI has been downloaded to', output));
137
+ }
138
+ //# sourceMappingURL=abi.js.map
package/lib/abi.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"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","sourcesContent":["import { AptosClient } from 'aptos-sdk'\nimport { JsonRpcProvider } from '@mysten/sui.js'\nimport { CHAIN_IDS } from './chain.js'\nimport chalk from 'chalk'\nimport process from 'process'\nimport path from 'path'\nimport fs from 'fs-extra'\n// @ts-ignore no types\nimport { init } from 'etherscan-api'\n\nexport async function getABI(\n chain: string,\n address: string,\n name: string | undefined\n): Promise<{ name?: string; abi: object | string }> {\n let ethApi\n let aptosClient: AptosClient | undefined\n let suiClient: JsonRpcProvider | undefined\n\n switch (chain) {\n case CHAIN_IDS.APTOS_MAINNET:\n aptosClient = new AptosClient('https://mainnet.aptoslabs.com/')\n break\n case CHAIN_IDS.APTOS_TESTNET:\n aptosClient = new AptosClient('https://testnet.aptoslabs.com/')\n break\n case CHAIN_IDS.SUI_MAINNET:\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 CHAIN_IDS.SUI_TESTNET:\n suiClient = new JsonRpcProvider('https://fullnode.testnet.sui.io/')\n break\n case CHAIN_IDS.ETHEREUM:\n ethApi = init()\n break\n // case CHAIN_IDS.ROPSTEN:\n // ethApi = init(undefined, \"ropsten\")\n // break\n // case CHAIN_IDS.RINKEBY:\n // ethApi = init(undefined, \"rinkeby\")\n // break\n case CHAIN_IDS.GOERLI:\n ethApi = init(undefined, 'goerli')\n break\n // case CHAIN_IDS.SEPOLIA:\n // ethApi = init(undefined, \"sepolia\")\n // break\n\n case CHAIN_IDS.ARBITRUM:\n ethApi = init(undefined, 'arbitrum')\n break\n case CHAIN_IDS.ARBITRUM_GOERLI:\n ethApi = init(undefined, 'arbitrum_rinkeby')\n break\n case CHAIN_IDS.AVALANCHE:\n ethApi = init(undefined, 'avalanche')\n break\n // case CHAIN_IDS.KOVAN:\n // ethApi = init(undefined, \"kovan\")\n // break\n default:\n console.error(chalk.red(`chain ${chain} not supported for direct add, please download the ABI manually`))\n process.exit(1)\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 if (aptosClient) {\n try {\n return {\n abi: await aptosClient.getAccountModules(address),\n }\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n }\n if (suiClient) {\n try {\n return {\n abi: await suiClient.getNormalizedMoveModulesByPackage(address),\n }\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n }\n\n try {\n let resp = await ethApi.contract.getabi(address)\n if (resp.status !== '1') {\n throw Error(resp.message)\n }\n const abi = resp.result\n\n if (!name) {\n await new Promise((resolve) => setTimeout(resolve, 1000))\n resp = await ethApi.contract.getsourcecode(address)\n if (resp.status !== '1') {\n throw Error(resp.message)\n }\n const contractName = resp.result[0].ContractName\n if (contractName) {\n name = contractName\n }\n }\n return {\n name,\n abi,\n }\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n}\n\nexport function getABIFilePath(chain: string, name: string): string {\n let subpath\n switch (chain) {\n case CHAIN_IDS.APTOS_MAINNET:\n subpath = 'aptos'\n break\n case CHAIN_IDS.APTOS_TESTNET:\n subpath = 'aptos/test'\n break\n case CHAIN_IDS.SUI_MAINNET:\n subpath = 'sui'\n break\n case CHAIN_IDS.SUI_TESTNET:\n subpath = 'sui/test'\n break\n default:\n subpath = 'eth'\n }\n\n return path.join('abis', subpath, name + '.json')\n}\n\nexport function writeABIFile(obj: string | object, output: string) {\n if (typeof obj === 'string') {\n obj = JSON.parse(obj)\n }\n const data = JSON.stringify(obj, null, 2)\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/lib/chain.d.ts ADDED
@@ -0,0 +1,98 @@
1
+ export declare const CHAIN_IDS: {
2
+ KARDIA: string;
3
+ ETHEREUM: string;
4
+ EXPANSE: string;
5
+ ROPSTEN: string;
6
+ RINKEBY: string;
7
+ GOERLI: string;
8
+ KOTTI: string;
9
+ UBIQ: string;
10
+ OPTIMISM: string;
11
+ SONGBIRD: string;
12
+ ELASTOS: string;
13
+ CRONOS: string;
14
+ RSK: string;
15
+ TELOS: string;
16
+ XDC: string;
17
+ CSC: string;
18
+ ZYX: string;
19
+ BINANCE: string;
20
+ SYSCOIN: string;
21
+ GOCHAIN: string;
22
+ ETHCLASSIC: string;
23
+ MORDOR: string;
24
+ OKEXCHAIN: string;
25
+ HOO: string;
26
+ METER: string;
27
+ TOMOCHAIN: string;
28
+ BINANCE_TEST: string;
29
+ XDAI: string;
30
+ VELAS: string;
31
+ THUNDERCORE: string;
32
+ FUSE: string;
33
+ HECO: string;
34
+ POLYGON: string;
35
+ XDAIARB: string;
36
+ ASTOR: string;
37
+ ENERGYWEB: string;
38
+ FANTOM: string;
39
+ HPB: string;
40
+ BOBA: string;
41
+ KUCOIN: string;
42
+ ZKSYNC_ERA: string;
43
+ SHIDEN: string;
44
+ THETA: string;
45
+ SX: string;
46
+ CANDLE: string;
47
+ ASTAR: string;
48
+ CALLISTO: string;
49
+ WANCHAIN: string;
50
+ POLYGON_ZKEVM: string;
51
+ METIS: string;
52
+ OMCHAIN: string;
53
+ MOONBEAM: string;
54
+ MOONRIVER: string;
55
+ MOONBASE: string;
56
+ DEV: string;
57
+ RONIN: string;
58
+ KAVA: string;
59
+ EZCHAIN: string;
60
+ PHI: string;
61
+ IOTEX: string;
62
+ XLC: string;
63
+ NAHMII: string;
64
+ NMACTEST: string;
65
+ KLAYTN: string;
66
+ EVMOS: string;
67
+ BASE_GOERLI: string;
68
+ SMARTBCH: string;
69
+ CRYSTALEUM: string;
70
+ FUSION: string;
71
+ ARBITRUM: string;
72
+ CELO: string;
73
+ OASIS: string;
74
+ AVALANCHE: string;
75
+ GODWOKEN: string;
76
+ AKROMA: string;
77
+ POLIS: string;
78
+ ARBITRUM_GOERLI: string;
79
+ SEPOLIA: string;
80
+ AURORA: string;
81
+ HARMONY: string;
82
+ PALM: string;
83
+ CURIO: string;
84
+ SOLANA_MAINNET: string;
85
+ SOLANA_DEVNET: string;
86
+ SOLANA_TESTNET: string;
87
+ SOLANA_PYTH: string;
88
+ SUI_MAINNET: string;
89
+ SUI_TESTNET: string;
90
+ SUI_DEVNET: string;
91
+ APTOS_MAINNET: string;
92
+ APTOS_TESTNET: string;
93
+ APTOS_DEVNET: string;
94
+ };
95
+ export declare const CHAIN_MAP: Record<string, string>;
96
+ export declare function getChainName(chainId: string | number | null | undefined): string;
97
+ export declare function getChainType(chainId?: string | number): string;
98
+ export declare function getChainScanUrl(chainId?: string | number, hash?: string, subtype?: 'block' | 'address' | 'transaction'): string | undefined;
package/lib/chain.js ADDED
@@ -0,0 +1,198 @@
1
+ // copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js
2
+ // and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/
3
+ export const CHAIN_IDS = {
4
+ KARDIA: '0',
5
+ ETHEREUM: '1',
6
+ EXPANSE: '2',
7
+ ROPSTEN: '3',
8
+ RINKEBY: '4',
9
+ GOERLI: '5',
10
+ KOTTI: '6',
11
+ UBIQ: '8',
12
+ OPTIMISM: '10',
13
+ SONGBIRD: '19',
14
+ ELASTOS: '20',
15
+ CRONOS: '25',
16
+ RSK: '30',
17
+ TELOS: '40',
18
+ XDC: '50',
19
+ CSC: '52',
20
+ ZYX: '55',
21
+ BINANCE: '56',
22
+ SYSCOIN: '57',
23
+ GOCHAIN: '60',
24
+ ETHCLASSIC: '61',
25
+ MORDOR: '63',
26
+ OKEXCHAIN: '66',
27
+ HOO: '70',
28
+ METER: '82',
29
+ TOMOCHAIN: '88',
30
+ BINANCE_TEST: '97',
31
+ XDAI: '100',
32
+ VELAS: '106',
33
+ THUNDERCORE: '108',
34
+ FUSE: '122',
35
+ HECO: '128',
36
+ POLYGON: '137',
37
+ XDAIARB: '200',
38
+ ASTOR: '212',
39
+ ENERGYWEB: '246',
40
+ FANTOM: '250',
41
+ HPB: '269',
42
+ BOBA: '288',
43
+ KUCOIN: '321',
44
+ ZKSYNC_ERA: '324',
45
+ SHIDEN: '336',
46
+ THETA: '361',
47
+ SX: '416',
48
+ CANDLE: '534',
49
+ ASTAR: '592',
50
+ CALLISTO: '820',
51
+ WANCHAIN: '888',
52
+ POLYGON_ZKEVM: '1101',
53
+ METIS: '1088',
54
+ OMCHAIN: '1246',
55
+ MOONBEAM: '1284',
56
+ MOONRIVER: '1285',
57
+ MOONBASE: '1287',
58
+ DEV: '2018',
59
+ RONIN: '2020',
60
+ KAVA: '2222',
61
+ EZCHAIN: '2612',
62
+ PHI: '4181',
63
+ IOTEX: '4689',
64
+ XLC: '5050',
65
+ NAHMII: '5551',
66
+ NMACTEST: '7777',
67
+ KLAYTN: '8217',
68
+ EVMOS: '9001',
69
+ BASE_GOERLI: '84531',
70
+ SMARTBCH: '10000',
71
+ CRYSTALEUM: '103090',
72
+ FUSION: '32659',
73
+ ARBITRUM: '42161',
74
+ CELO: '42220',
75
+ OASIS: '42262',
76
+ AVALANCHE: '43114',
77
+ GODWOKEN: '71402',
78
+ AKROMA: '200625',
79
+ POLIS: '333999',
80
+ ARBITRUM_GOERLI: '421613',
81
+ SEPOLIA: '11155111',
82
+ AURORA: '1313161554',
83
+ HARMONY: '1666600000',
84
+ PALM: '11297108109',
85
+ CURIO: '836542336838601',
86
+ SOLANA_MAINNET: 'sol_mainnet',
87
+ SOLANA_DEVNET: 'sol_devnet',
88
+ SOLANA_TESTNET: 'sol_testnet',
89
+ SOLANA_PYTH: 'sol_pyth',
90
+ SUI_MAINNET: 'sui_mainnet',
91
+ SUI_TESTNET: 'sui_testnet',
92
+ SUI_DEVNET: 'sui_devnet',
93
+ APTOS_MAINNET: 'aptos_mainnet',
94
+ APTOS_TESTNET: 'aptos_testnet',
95
+ APTOS_DEVNET: 'aptos_devnet',
96
+ };
97
+ export const CHAIN_MAP = {};
98
+ for (const [key, value] of Object.entries(CHAIN_IDS)) {
99
+ if (value === CHAIN_IDS.POLYGON_ZKEVM) {
100
+ CHAIN_MAP[value] = 'Polygon zkEVM';
101
+ }
102
+ else if (value === CHAIN_IDS.ZKSYNC_ERA) {
103
+ CHAIN_MAP[value] = 'zkSync Era';
104
+ }
105
+ else {
106
+ const parts = key.split('_');
107
+ CHAIN_MAP[value] = parts
108
+ .map((part, index) => {
109
+ return part[0] + part.slice(1).toLowerCase();
110
+ })
111
+ .join(' ');
112
+ }
113
+ }
114
+ export function getChainName(chainId) {
115
+ if (typeof chainId === 'number') {
116
+ chainId = chainId.toString();
117
+ }
118
+ if (chainId) {
119
+ const name = CHAIN_MAP[chainId];
120
+ if (name) {
121
+ return name;
122
+ }
123
+ }
124
+ return chainId || '';
125
+ }
126
+ export function getChainType(chainId) {
127
+ const id = String(chainId).toLowerCase();
128
+ if (id.startsWith('sol')) {
129
+ return 'solana';
130
+ }
131
+ if (id.startsWith('sui')) {
132
+ return 'sui';
133
+ }
134
+ if (id.startsWith('apt')) {
135
+ return 'aptos';
136
+ }
137
+ return 'EVM';
138
+ }
139
+ export function getChainScanUrl(chainId, hash, subtype) {
140
+ const chainName = getChainName(chainId);
141
+ if (chainName === 'Ethereum') {
142
+ if (subtype === 'block') {
143
+ return `https://etherscan.io/block/${hash}`;
144
+ }
145
+ else if (subtype === 'address') {
146
+ return `https://etherscan.io/address/${hash}`;
147
+ }
148
+ else {
149
+ return `https://etherscan.io/tx/${hash}`;
150
+ }
151
+ }
152
+ if (chainName === 'Polygon') {
153
+ if (subtype === 'block') {
154
+ return `https://polygonscan.com/block/${hash}`;
155
+ }
156
+ else if (subtype === 'address') {
157
+ return `https://polygonscan.com/address/${hash}`;
158
+ }
159
+ else {
160
+ return `https://polygonscan.com/tx/${hash}`;
161
+ }
162
+ }
163
+ if (chainName.startsWith('Aptos ')) {
164
+ if (subtype === 'block') {
165
+ return `https://explorer.aptos.io/block/${hash}`;
166
+ }
167
+ else if (subtype === 'address') {
168
+ return `https://explorer.aptos.io/account/${hash}`;
169
+ }
170
+ else {
171
+ return `https://explorer.aptos.io/txn/${hash}`;
172
+ }
173
+ }
174
+ if (chainName.startsWith('Solana ')) {
175
+ if (subtype === 'block') {
176
+ return `https://explorer.solana.com/block/${hash}`;
177
+ }
178
+ else if (subtype === 'address') {
179
+ return `https://explorer.solana.com/address/${hash}`;
180
+ }
181
+ else {
182
+ return `https://explorer.solana.io/tx/${hash}`;
183
+ }
184
+ }
185
+ if (chainName.startsWith('Sui ')) {
186
+ if (subtype === 'block') {
187
+ return `https://explorer.sui.io/block/${hash}`;
188
+ }
189
+ else if (subtype === 'address') {
190
+ return `https://explorer.sui.io/address/${hash}`;
191
+ }
192
+ else {
193
+ return `https://explorer.sui.io/transaction/${hash}`;
194
+ }
195
+ }
196
+ return undefined;
197
+ }
198
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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","sourcesContent":["// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js\n// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/\n\nexport const CHAIN_IDS = {\n KARDIA: '0',\n ETHEREUM: '1',\n EXPANSE: '2',\n ROPSTEN: '3',\n RINKEBY: '4',\n GOERLI: '5',\n KOTTI: '6',\n UBIQ: '8',\n OPTIMISM: '10',\n SONGBIRD: '19',\n ELASTOS: '20',\n CRONOS: '25',\n RSK: '30',\n TELOS: '40',\n XDC: '50',\n CSC: '52',\n ZYX: '55',\n BINANCE: '56',\n SYSCOIN: '57',\n GOCHAIN: '60',\n ETHCLASSIC: '61',\n MORDOR: '63',\n OKEXCHAIN: '66',\n HOO: '70',\n METER: '82',\n TOMOCHAIN: '88',\n BINANCE_TEST: '97',\n XDAI: '100',\n VELAS: '106',\n THUNDERCORE: '108',\n FUSE: '122',\n HECO: '128',\n POLYGON: '137',\n XDAIARB: '200',\n ASTOR: '212',\n ENERGYWEB: '246',\n FANTOM: '250',\n HPB: '269',\n BOBA: '288',\n KUCOIN: '321',\n ZKSYNC_ERA: '324',\n SHIDEN: '336',\n THETA: '361',\n SX: '416',\n CANDLE: '534',\n ASTAR: '592',\n CALLISTO: '820',\n WANCHAIN: '888',\n POLYGON_ZKEVM: '1101',\n METIS: '1088',\n OMCHAIN: '1246',\n MOONBEAM: '1284',\n MOONRIVER: '1285',\n MOONBASE: '1287',\n DEV: '2018',\n RONIN: '2020',\n KAVA: '2222',\n EZCHAIN: '2612',\n PHI: '4181',\n IOTEX: '4689',\n XLC: '5050',\n NAHMII: '5551',\n NMACTEST: '7777',\n KLAYTN: '8217',\n EVMOS: '9001',\n BASE_GOERLI: '84531',\n SMARTBCH: '10000',\n CRYSTALEUM: '103090',\n FUSION: '32659',\n ARBITRUM: '42161',\n CELO: '42220',\n OASIS: '42262',\n AVALANCHE: '43114',\n GODWOKEN: '71402',\n AKROMA: '200625',\n POLIS: '333999',\n ARBITRUM_GOERLI: '421613',\n SEPOLIA: '11155111',\n AURORA: '1313161554',\n HARMONY: '1666600000',\n PALM: '11297108109',\n CURIO: '836542336838601',\n SOLANA_MAINNET: 'sol_mainnet',\n SOLANA_DEVNET: 'sol_devnet',\n SOLANA_TESTNET: 'sol_testnet',\n SOLANA_PYTH: 'sol_pyth',\n SUI_MAINNET: 'sui_mainnet',\n SUI_TESTNET: 'sui_testnet',\n SUI_DEVNET: 'sui_devnet',\n APTOS_MAINNET: 'aptos_mainnet',\n APTOS_TESTNET: 'aptos_testnet',\n APTOS_DEVNET: 'aptos_devnet',\n}\n\nexport const CHAIN_MAP: Record<string, string> = {}\n\nfor (const [key, value] of Object.entries(CHAIN_IDS)) {\n if (value === CHAIN_IDS.POLYGON_ZKEVM) {\n CHAIN_MAP[value] = 'Polygon zkEVM'\n } else if (value === CHAIN_IDS.ZKSYNC_ERA) {\n CHAIN_MAP[value] = 'zkSync Era'\n } else {\n const parts = key.split('_')\n CHAIN_MAP[value] = parts\n .map((part, index) => {\n return part[0] + part.slice(1).toLowerCase()\n })\n .join(' ')\n }\n}\n\nexport function getChainName(chainId: string | number | null | undefined): string {\n if (typeof chainId === 'number') {\n chainId = chainId.toString()\n }\n if (chainId) {\n const name = CHAIN_MAP[chainId]\n if (name) {\n return name\n }\n }\n return chainId || ''\n}\n\nexport function getChainType(chainId?: string | number): string {\n const id = String(chainId).toLowerCase()\n if (id.startsWith('sol')) {\n return 'solana'\n }\n if (id.startsWith('sui')) {\n return 'sui'\n }\n if (id.startsWith('apt')) {\n return 'aptos'\n }\n return 'EVM'\n}\n\nexport function getChainScanUrl(\n chainId?: string | number,\n hash?: string,\n subtype?: 'block' | 'address' | 'transaction'\n): string | undefined {\n const chainName = getChainName(chainId)\n if (chainName === 'Ethereum') {\n if (subtype === 'block') {\n return `https://etherscan.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://etherscan.io/address/${hash}`\n } else {\n return `https://etherscan.io/tx/${hash}`\n }\n }\n if (chainName === 'Polygon') {\n if (subtype === 'block') {\n return `https://polygonscan.com/block/${hash}`\n } else if (subtype === 'address') {\n return `https://polygonscan.com/address/${hash}`\n } else {\n return `https://polygonscan.com/tx/${hash}`\n }\n }\n if (chainName.startsWith('Aptos ')) {\n if (subtype === 'block') {\n return `https://explorer.aptos.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.aptos.io/account/${hash}`\n } else {\n return `https://explorer.aptos.io/txn/${hash}`\n }\n }\n if (chainName.startsWith('Solana ')) {\n if (subtype === 'block') {\n return `https://explorer.solana.com/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.solana.com/address/${hash}`\n } else {\n return `https://explorer.solana.io/tx/${hash}`\n }\n }\n if (chainName.startsWith('Sui ')) {\n if (subtype === 'block') {\n return `https://explorer.sui.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.sui.io/address/${hash}`\n } else {\n return `https://explorer.sui.io/transaction/${hash}`\n }\n }\n return undefined\n}\n"]}
package/lib/cli.js CHANGED
@@ -3,7 +3,7 @@ import commandLineArgs from 'command-line-args';
3
3
  import commandLineUsage from 'command-line-usage';
4
4
  import fs from 'fs';
5
5
  import path from 'path';
6
- import yaml from 'js-yaml';
6
+ import yaml from 'yaml';
7
7
  import chalk from 'chalk';
8
8
  import { buildProcessor, buildProcessorWithArgs } from './commands/build.js';
9
9
  import { runCreate } from './commands/run-create.js';
@@ -39,7 +39,7 @@ else {
39
39
  // For all the commands that need read project configs
40
40
  // TODO move them to their own modules
41
41
  // Process configs
42
- let processorConfig = { host: '', project: '', build: true, debug: false };
42
+ let processorConfig = { host: '', project: '', build: true, debug: false, contracts: [] };
43
43
  // Fist step, read from project yaml file
44
44
  try {
45
45
  console.log(chalk.blue('Loading Process config'));
@@ -55,7 +55,7 @@ else {
55
55
  console.error('sentio.yaml not found, please create one according to: TODO docs');
56
56
  process.exit(1);
57
57
  }
58
- processorConfig = yaml.load(fs.readFileSync('sentio.yaml', 'utf8'));
58
+ processorConfig = yaml.parse(fs.readFileSync('sentio.yaml', 'utf8'));
59
59
  if (!processorConfig.project === undefined) {
60
60
  console.error('Config yaml must have contain a valid project identifier');
61
61
  process.exit(1);
package/lib/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport fs from 'fs'\nimport path from 'path'\n\nimport yaml from 'js-yaml'\nimport { SentioProjectConfig } from './config.js'\nimport chalk from 'chalk'\nimport { buildProcessor, buildProcessorWithArgs } from './commands/build.js'\nimport { runCreate } from './commands/run-create.js'\nimport { runVersion } from './commands/run-version.js'\nimport { runLogin } from './commands/run-login.js'\nimport { runUpload } from './commands/run-upload.js'\nimport { runTest } from './commands/run-test.js'\nimport { runAdd } from './commands/run-add.js'\n\nconst mainDefinitions = [{ name: 'command', defaultOption: true }]\nconst mainOptions = commandLineArgs(mainDefinitions, {\n stopAtFirstUnknown: true,\n})\nconst argv = mainOptions._unknown || []\n\nif (!mainOptions.command) {\n usage()\n}\n\nif (mainOptions.command === 'login') {\n runLogin(argv)\n} else if (mainOptions.command === 'create') {\n await runCreate(argv)\n} else if (mainOptions.command === 'version') {\n runVersion(argv)\n} else if (mainOptions.command === 'test') {\n runTest(argv)\n} else if (mainOptions.command === 'add') {\n await runAdd(argv)\n} else {\n // For all the commands that need read project configs\n // TODO move them to their own modules\n\n // Process configs\n let processorConfig: SentioProjectConfig = { host: '', project: '', build: true, debug: false }\n // Fist step, read from project yaml file\n try {\n console.log(chalk.blue('Loading Process config'))\n // TODO correctly located sentio.yaml\n const pwd = process.cwd()\n const packageJson = path.join(pwd, 'package.json')\n if (!fs.existsSync(packageJson)) {\n console.error('package.json not found, please run this command in the root of your project')\n process.exit(1)\n }\n\n const yamlPath = path.join(pwd, 'sentio.yaml')\n if (!fs.existsSync(yamlPath)) {\n console.error('sentio.yaml not found, please create one according to: TODO docs')\n process.exit(1)\n }\n\n processorConfig = yaml.load(fs.readFileSync('sentio.yaml', 'utf8')) as SentioProjectConfig\n if (!processorConfig.project === undefined) {\n console.error('Config yaml must have contain a valid project identifier')\n process.exit(1)\n }\n if (processorConfig.build === undefined) {\n processorConfig.build = true\n }\n if (!processorConfig.host) {\n processorConfig.host = 'prod'\n }\n if (processorConfig.debug === undefined) {\n processorConfig.debug = false\n }\n\n // if (!processorConfig.source) {\n // processorConfig.source = 'src/processor.ts'\n // }\n // if (!processorConfig.targets) {\n // console.warn('targets is not defined, use EVM as the default target')\n // processorConfig.targets = []\n // }\n // if (processorConfig.targets.length === 0) {\n // // By default evm\n // processorConfig.targets.push({ chain: EVM })\n // }\n } catch (e) {\n console.error(e)\n process.exit(1)\n }\n\n if (mainOptions.command === 'upload') {\n await runUpload(processorConfig, argv)\n } else if (mainOptions.command === 'build') {\n await buildProcessorWithArgs(argv)\n } else if (mainOptions.command === 'gen') {\n await buildProcessor(true, [])\n } else {\n usage()\n }\n}\n\nfunction usage() {\n const usage = commandLineUsage([\n {\n header: 'Sentio',\n content: 'Login & Manage your project files to Sentio.',\n },\n {\n header: 'Usage',\n content: [\n 'sentio <command> --help\\t\\tshow detail usage of specific command',\n 'sentio login\\t\\t\\t\\tlogin to sentio',\n 'sentio create\\t\\t\\t\\tcreate a template project',\n 'sentio add\\t\\t\\t\\tadd contract ABI to the project',\n 'sentio upload\\t\\t\\t\\tbuild and upload processor to sentio',\n 'sentio gen\\t\\t\\t\\tgenerate abi',\n 'sentio build\\t\\t\\t\\tgenerate abi and build',\n 'sentio test\\t\\t\\t\\trun tests',\n 'sentio version\\t\\t\\tcurrent cli version',\n ],\n },\n ])\n console.log(usage)\n process.exit(1)\n}\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport fs from 'fs'\nimport path from 'path'\n\nimport yaml from 'yaml'\nimport { SentioProjectConfig } from './config.js'\nimport chalk from 'chalk'\nimport { buildProcessor, buildProcessorWithArgs } from './commands/build.js'\nimport { runCreate } from './commands/run-create.js'\nimport { runVersion } from './commands/run-version.js'\nimport { runLogin } from './commands/run-login.js'\nimport { runUpload } from './commands/run-upload.js'\nimport { runTest } from './commands/run-test.js'\nimport { runAdd } from './commands/run-add.js'\n\nconst mainDefinitions = [{ name: 'command', defaultOption: true }]\nconst mainOptions = commandLineArgs(mainDefinitions, {\n stopAtFirstUnknown: true,\n})\nconst argv = mainOptions._unknown || []\n\nif (!mainOptions.command) {\n usage()\n}\n\nif (mainOptions.command === 'login') {\n runLogin(argv)\n} else if (mainOptions.command === 'create') {\n await runCreate(argv)\n} else if (mainOptions.command === 'version') {\n runVersion(argv)\n} else if (mainOptions.command === 'test') {\n runTest(argv)\n} else if (mainOptions.command === 'add') {\n await runAdd(argv)\n} else {\n // For all the commands that need read project configs\n // TODO move them to their own modules\n\n // Process configs\n let processorConfig: SentioProjectConfig = { host: '', project: '', build: true, debug: false, contracts: [] }\n // Fist step, read from project yaml file\n try {\n console.log(chalk.blue('Loading Process config'))\n // TODO correctly located sentio.yaml\n const pwd = process.cwd()\n const packageJson = path.join(pwd, 'package.json')\n if (!fs.existsSync(packageJson)) {\n console.error('package.json not found, please run this command in the root of your project')\n process.exit(1)\n }\n\n const yamlPath = path.join(pwd, 'sentio.yaml')\n if (!fs.existsSync(yamlPath)) {\n console.error('sentio.yaml not found, please create one according to: TODO docs')\n process.exit(1)\n }\n\n processorConfig = yaml.parse(fs.readFileSync('sentio.yaml', 'utf8')) as SentioProjectConfig\n if (!processorConfig.project === undefined) {\n console.error('Config yaml must have contain a valid project identifier')\n process.exit(1)\n }\n if (processorConfig.build === undefined) {\n processorConfig.build = true\n }\n if (!processorConfig.host) {\n processorConfig.host = 'prod'\n }\n if (processorConfig.debug === undefined) {\n processorConfig.debug = false\n }\n\n // if (!processorConfig.source) {\n // processorConfig.source = 'src/processor.ts'\n // }\n // if (!processorConfig.targets) {\n // console.warn('targets is not defined, use EVM as the default target')\n // processorConfig.targets = []\n // }\n // if (processorConfig.targets.length === 0) {\n // // By default evm\n // processorConfig.targets.push({ chain: EVM })\n // }\n } catch (e) {\n console.error(e)\n process.exit(1)\n }\n\n if (mainOptions.command === 'upload') {\n await runUpload(processorConfig, argv)\n } else if (mainOptions.command === 'build') {\n await buildProcessorWithArgs(argv)\n } else if (mainOptions.command === 'gen') {\n await buildProcessor(true, [])\n } else {\n usage()\n }\n}\n\nfunction usage() {\n const usage = commandLineUsage([\n {\n header: 'Sentio',\n content: 'Login & Manage your project files to Sentio.',\n },\n {\n header: 'Usage',\n content: [\n 'sentio <command> --help\\t\\tshow detail usage of specific command',\n 'sentio login\\t\\t\\t\\tlogin to sentio',\n 'sentio create\\t\\t\\t\\tcreate a template project',\n 'sentio add\\t\\t\\t\\tadd contract ABI to the project',\n 'sentio upload\\t\\t\\t\\tbuild and upload processor to sentio',\n 'sentio gen\\t\\t\\t\\tgenerate abi',\n 'sentio build\\t\\t\\t\\tgenerate abi and build',\n 'sentio test\\t\\t\\t\\trun tests',\n 'sentio version\\t\\t\\tcurrent cli version',\n ],\n },\n ])\n console.log(usage)\n process.exit(1)\n}\n"]}
@@ -12,4 +12,4 @@ export declare const buildOptionDefinitions: ({
12
12
  })[];
13
13
  export declare function buildProcessorWithArgs(argv: string[]): Promise<void>;
14
14
  export declare function buildProcessor(onlyGen: boolean, options: commandLineArgs.CommandLineOptions): Promise<void>;
15
- export declare function codegen(): Promise<void>;
15
+ export declare function codegen(genExample?: boolean): Promise<void>;
@@ -6,6 +6,8 @@ import * as process from 'process';
6
6
  import { getPackageRoot } from '../utils.js';
7
7
  import commandLineArgs from 'command-line-args';
8
8
  import commandLineUsage from 'command-line-usage';
9
+ import yaml from 'yaml';
10
+ import { getABIFilePath, getABI, writeABIFile } from '../abi.js';
9
11
  export const buildOptionDefinitions = [
10
12
  {
11
13
  name: 'help',
@@ -23,6 +25,11 @@ export const buildOptionDefinitions = [
23
25
  type: Boolean,
24
26
  description: 'Skip dependency enforce.',
25
27
  },
28
+ {
29
+ name: 'example',
30
+ type: Boolean,
31
+ description: 'Generate example usage of the processor.',
32
+ },
26
33
  ];
27
34
  export async function buildProcessorWithArgs(argv) {
28
35
  const options = commandLineArgs(buildOptionDefinitions, { argv });
@@ -47,7 +54,7 @@ export async function buildProcessor(onlyGen, options) {
47
54
  await installDeps();
48
55
  }
49
56
  if (!options['skip-gen']) {
50
- await codegen();
57
+ await codegen(options.example || false);
51
58
  }
52
59
  if (!onlyGen) {
53
60
  let tsupConfig;
@@ -76,7 +83,8 @@ import 'mine.js'
76
83
  }
77
84
  }
78
85
  }
79
- export async function codegen() {
86
+ export async function codegen(genExample = false) {
87
+ await prepareABI();
80
88
  const outputBase = path.resolve('src', 'types');
81
89
  try {
82
90
  // @ts-ignore dynamic import
@@ -89,7 +97,7 @@ export async function codegen() {
89
97
  }
90
98
  fs.emptyDirSync(output);
91
99
  // @ts-ignore dynamic import
92
- await codegen.codegen(input, output);
100
+ await codegen.codegen(input, output, genExample);
93
101
  }
94
102
  catch (e) {
95
103
  console.error('code gen error', e);
@@ -100,7 +108,7 @@ export async function codegen() {
100
108
  const output = path.resolve(outputBase, 'solana');
101
109
  fs.emptyDirSync(output);
102
110
  // @ts-ignore dynamic import
103
- await codegen.codegen(path.resolve('abis', 'solana'), output);
111
+ await codegen.codegen(path.resolve('abis', 'solana'), output, genExample);
104
112
  }
105
113
  catch (e) {
106
114
  console.error('code gen error', e);
@@ -111,7 +119,7 @@ export async function codegen() {
111
119
  const output = path.resolve(outputBase, 'aptos');
112
120
  fs.emptyDirSync(output);
113
121
  // @ts-ignore dynamic import
114
- await codegen.codegen(path.resolve('abis', 'aptos'), output);
122
+ await codegen.codegen(path.resolve('abis', 'aptos'), output, genExample);
115
123
  }
116
124
  catch (e) {
117
125
  console.error('code gen error', e);
@@ -122,7 +130,7 @@ export async function codegen() {
122
130
  const output = path.resolve(outputBase, 'sui');
123
131
  fs.emptyDirSync(output);
124
132
  // @ts-ignore dynamic import
125
- await codegen.codegen(path.resolve('abis', 'sui'), output);
133
+ await codegen.codegen(path.resolve('abis', 'sui'), output, genExample);
126
134
  }
127
135
  catch (e) {
128
136
  console.error('code gen error', e);
@@ -150,4 +158,19 @@ async function execStep(cmd, stepName) {
150
158
  console.log(chalk.blue(stepName + ' success'));
151
159
  console.log();
152
160
  }
161
+ async function prepareABI() {
162
+ const processorConfig = yaml.parse(fs.readFileSync('sentio.yaml', 'utf8'));
163
+ if (!processorConfig.contracts) {
164
+ return;
165
+ }
166
+ for (const contract of processorConfig.contracts) {
167
+ const outputPath = getABIFilePath(contract.chain, contract.name || contract.address);
168
+ if (fs.existsSync(outputPath)) {
169
+ continue;
170
+ }
171
+ console.log('Download Missing ABI specified in sentio.yaml');
172
+ const res = await getABI(contract.chain, contract.address, contract.name);
173
+ writeABIFile(res.abi, outputPath);
174
+ }
175
+ }
153
176
  //# sourceMappingURL=build.js.map