@sentio/sdk 0.6.3 → 1.0.0-development

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.
Files changed (146) hide show
  1. package/dist/base-processor-template.d.ts +20 -0
  2. package/dist/base-processor-template.js +75 -0
  3. package/dist/base-processor-template.js.map +1 -0
  4. package/dist/base-processor.d.ts +22 -0
  5. package/dist/base-processor.js +103 -0
  6. package/dist/base-processor.js.map +1 -0
  7. package/dist/bind-options.d.ts +17 -0
  8. package/dist/bind-options.js +38 -0
  9. package/dist/bind-options.js.map +1 -0
  10. package/dist/binds.d.ts +10 -0
  11. package/dist/binds.js +58 -0
  12. package/dist/binds.js.map +1 -0
  13. package/dist/builtin/erc20/index.d.ts +2 -0
  14. package/dist/builtin/erc20/index.js +22 -0
  15. package/dist/builtin/erc20/index.js.map +1 -0
  16. package/dist/builtin/internal/Erc20.d.ts +150 -0
  17. package/dist/builtin/internal/Erc20.js +3 -0
  18. package/dist/builtin/internal/Erc20.js.map +1 -0
  19. package/dist/builtin/internal/common.d.ts +22 -0
  20. package/dist/builtin/internal/common.js +3 -0
  21. package/dist/builtin/internal/common.js.map +1 -0
  22. package/dist/builtin/internal/erc20_processor.d.ts +38 -0
  23. package/dist/builtin/internal/erc20_processor.js +209 -0
  24. package/dist/builtin/internal/erc20_processor.js.map +1 -0
  25. package/dist/builtin/internal/factories/Erc20__factory.d.ts +35 -0
  26. package/dist/builtin/internal/factories/Erc20__factory.js +216 -0
  27. package/dist/builtin/internal/factories/Erc20__factory.js.map +1 -0
  28. package/dist/builtin/internal/factories/index.d.ts +1 -0
  29. package/dist/builtin/internal/factories/index.js +9 -0
  30. package/dist/builtin/internal/factories/index.js.map +1 -0
  31. package/dist/builtin/internal/index.d.ts +3 -0
  32. package/dist/builtin/internal/index.js +30 -0
  33. package/dist/builtin/internal/index.js.map +1 -0
  34. package/dist/cli/build.d.ts +3 -0
  35. package/dist/cli/build.js +161 -0
  36. package/dist/cli/build.js.map +1 -0
  37. package/dist/cli/cli.d.ts +2 -0
  38. package/dist/cli/cli.js +212 -0
  39. package/dist/cli/cli.js.map +1 -0
  40. package/dist/cli/config.d.ts +14 -0
  41. package/dist/cli/config.js +24 -0
  42. package/dist/cli/config.js.map +1 -0
  43. package/dist/cli/key.d.ts +2 -0
  44. package/dist/cli/key.js +44 -0
  45. package/dist/cli/key.js.map +1 -0
  46. package/dist/cli/solana-code-gen.d.ts +2 -0
  47. package/dist/cli/solana-code-gen.js +19 -0
  48. package/dist/cli/solana-code-gen.js.map +1 -0
  49. package/dist/cli/upload.d.ts +2 -0
  50. package/dist/cli/upload.js +76 -0
  51. package/dist/cli/upload.js.map +1 -0
  52. package/dist/cli/webpack.config.js +41 -0
  53. package/dist/context.d.ts +39 -0
  54. package/dist/context.js +75 -0
  55. package/dist/context.js.map +1 -0
  56. package/dist/contract-namer.d.ts +6 -0
  57. package/dist/contract-namer.js +20 -0
  58. package/dist/contract-namer.js.map +1 -0
  59. package/dist/error.d.ts +2 -0
  60. package/dist/error.js +39 -0
  61. package/dist/error.js.map +1 -0
  62. package/dist/gen/builtin.d.ts +6 -0
  63. package/dist/gen/builtin.js +3 -0
  64. package/dist/gen/builtin.js.map +1 -0
  65. package/dist/gen/google/protobuf/empty.d.ts +16 -0
  66. package/dist/gen/google/protobuf/empty.js +47 -0
  67. package/dist/gen/google/protobuf/empty.js.map +1 -0
  68. package/dist/gen/processor/protos/processor.d.ts +598 -0
  69. package/dist/gen/processor/protos/processor.js +2424 -0
  70. package/dist/gen/processor/protos/processor.js.map +1 -0
  71. package/dist/index.d.ts +13 -0
  72. package/dist/index.js +54 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/meter.d.ts +25 -0
  75. package/dist/meter.js +114 -0
  76. package/dist/meter.js.map +1 -0
  77. package/dist/numberish.d.ts +7 -0
  78. package/dist/numberish.js +74 -0
  79. package/dist/numberish.js.map +1 -0
  80. package/dist/numberish.test.d.ts +1 -0
  81. package/dist/numberish.test.js +54 -0
  82. package/dist/numberish.test.js.map +1 -0
  83. package/dist/processor-runner.d.ts +2 -0
  84. package/dist/processor-runner.js +66 -0
  85. package/dist/processor-runner.js.map +1 -0
  86. package/dist/processor-state.d.ts +16 -0
  87. package/dist/processor-state.js +20 -0
  88. package/dist/processor-state.js.map +1 -0
  89. package/dist/provider.d.ts +5 -0
  90. package/dist/provider.js +56 -0
  91. package/dist/provider.js.map +1 -0
  92. package/dist/service.d.ts +22 -0
  93. package/dist/service.js +361 -0
  94. package/dist/service.js.map +1 -0
  95. package/dist/solana/builtin/spl-token-processor.d.ts +25 -0
  96. package/dist/solana/builtin/spl-token-processor.js +152 -0
  97. package/dist/solana/builtin/spl-token-processor.js.map +1 -0
  98. package/dist/solana-processor.d.ts +28 -0
  99. package/dist/solana-processor.js +79 -0
  100. package/dist/solana-processor.js.map +1 -0
  101. package/dist/target-ethers-sentio/codegen.d.ts +3 -0
  102. package/dist/target-ethers-sentio/codegen.js +201 -0
  103. package/dist/target-ethers-sentio/codegen.js.map +1 -0
  104. package/dist/target-ethers-sentio/index.d.ts +6 -0
  105. package/dist/target-ethers-sentio/index.js +47 -0
  106. package/dist/target-ethers-sentio/index.js.map +1 -0
  107. package/dist/test-case/clean-test.d.ts +1 -0
  108. package/dist/test-case/clean-test.js +9 -0
  109. package/dist/test-case/clean-test.js.map +1 -0
  110. package/dist/test-case/erc20-template.d.ts +1 -0
  111. package/dist/test-case/erc20-template.js +23 -0
  112. package/dist/test-case/erc20-template.js.map +1 -0
  113. package/dist/test-case/erc20-template.test.d.ts +1 -0
  114. package/dist/test-case/erc20-template.test.js +69 -0
  115. package/dist/test-case/erc20-template.test.js.map +1 -0
  116. package/dist/test-case/erc20.d.ts +1 -0
  117. package/dist/test-case/erc20.js +42 -0
  118. package/dist/test-case/erc20.js.map +1 -0
  119. package/dist/test-case/erc20.test.d.ts +1 -0
  120. package/dist/test-case/erc20.test.js +154 -0
  121. package/dist/test-case/erc20.test.js.map +1 -0
  122. package/dist/test-case/mirrorworld.d.ts +1 -0
  123. package/dist/test-case/mirrorworld.js +42 -0
  124. package/dist/test-case/mirrorworld.js.map +1 -0
  125. package/dist/test-case/solana.test.d.ts +1 -0
  126. package/dist/test-case/solana.test.js +58 -0
  127. package/dist/test-case/solana.test.js.map +1 -0
  128. package/dist/test-case/types/game_wallet.d.ts +45 -0
  129. package/dist/test-case/types/game_wallet.js +1396 -0
  130. package/dist/test-case/types/game_wallet.js.map +1 -0
  131. package/dist/test-case/types/game_wallet_processor.d.ts +107 -0
  132. package/dist/test-case/types/game_wallet_processor.js +102 -0
  133. package/dist/test-case/types/game_wallet_processor.js.map +1 -0
  134. package/dist/test-case/types/wormhole_processor.d.ts +16 -0
  135. package/dist/test-case/types/wormhole_processor.js +192 -0
  136. package/dist/test-case/types/wormhole_processor.js.map +1 -0
  137. package/dist/test-case/wormhole-token-bridge.d.ts +1 -0
  138. package/dist/test-case/wormhole-token-bridge.js +7 -0
  139. package/dist/test-case/wormhole-token-bridge.js.map +1 -0
  140. package/dist/utils/chainmap.d.ts +4 -0
  141. package/dist/utils/chainmap.js +95 -0
  142. package/dist/utils/chainmap.js.map +1 -0
  143. package/dist/utils/index.d.ts +1 -0
  144. package/dist/utils/index.js +6 -0
  145. package/dist/utils/index.js.map +1 -0
  146. package/package.json +2 -1
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.codeGenSolanaProcessor = exports.buildProcessor = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const child_process_1 = require("child_process");
11
+ const config_1 = require("./config");
12
+ async function buildProcessor(onlyGen, targets) {
13
+ if (!onlyGen) {
14
+ await installDeps();
15
+ }
16
+ // targets.forEach(async (target) => await buildProcessorForTarget(onlyGen, target))
17
+ for (const target of targets) {
18
+ await buildProcessorForTarget(onlyGen, target);
19
+ }
20
+ if (!onlyGen) {
21
+ const WEBPACK_CONFIG = path_1.default.join(__dirname, 'webpack.config.js');
22
+ await execStep('yarn tsc -p .', 'Compile');
23
+ await execStep('yarn webpack --config=' + WEBPACK_CONFIG, 'Packaging');
24
+ }
25
+ }
26
+ exports.buildProcessor = buildProcessor;
27
+ async function buildProcessorForTarget(onlyGen, target) {
28
+ if (target.chain === config_1.EVM) {
29
+ await codeGenEthersProcessor(target.abisDir ?? path_1.default.join('abis', 'evm'));
30
+ }
31
+ else if (target.chain === config_1.SOLANA) {
32
+ codeGenSolanaProcessor(target.abisDir ?? path_1.default.join('abis', 'solana'));
33
+ }
34
+ if (onlyGen) {
35
+ return;
36
+ }
37
+ }
38
+ async function installDeps() {
39
+ await execStep('yarn install --ignore-scripts', 'Yarn Install');
40
+ }
41
+ async function codeGenEthersProcessor(abisDir) {
42
+ const ETHERS_TARGET = path_1.default.join(__dirname, '../target-ethers-sentio');
43
+ // TODO this will fail during postinstall, need to locate real typechain path
44
+ await execStep('yarn typechain --target ' + ETHERS_TARGET + ` --out-dir src/types/internal ${path_1.default.join(abisDir, '*.json')}`, 'Type definitions gen');
45
+ }
46
+ function codeGenSolanaProcessor(abisDir, root = '', targetPath = path_1.default.join('src', 'types')) {
47
+ const abisFolder = path_1.default.join(root, abisDir);
48
+ const abisFiles = fs_1.default.readdirSync(abisFolder);
49
+ const typeFolder = path_1.default.join(root, targetPath);
50
+ for (const file of abisFiles) {
51
+ if (path_1.default.extname(file) === '.json') {
52
+ if (!fs_1.default.existsSync(typeFolder)) {
53
+ fs_1.default.mkdirSync(typeFolder);
54
+ }
55
+ const idlContent = fs_1.default.readFileSync(path_1.default.join(abisFolder, file), 'utf-8');
56
+ const idlObj = JSON.parse(idlContent);
57
+ const idlName = idlObj.name;
58
+ const idlFile = path_1.default.join(typeFolder, idlName + '.ts');
59
+ fs_1.default.writeFileSync(idlFile, `export const ${idlName}_idl = ${idlContent}`);
60
+ fs_1.default.writeFileSync(path_1.default.join(typeFolder, `${idlName}_processor.ts`), codeGenSolanaIdlProcessor(idlObj));
61
+ }
62
+ }
63
+ }
64
+ exports.codeGenSolanaProcessor = codeGenSolanaProcessor;
65
+ function codeGenSolanaIdlProcessor(idlObj) {
66
+ const idlName = idlObj.name;
67
+ const idlNamePascalCase = toPascalCase(idlName);
68
+ const instructions = idlObj.instructions;
69
+ return `import { BorshInstructionCoder, Instruction, Idl, BN } from '@project-serum/anchor'
70
+ import { SolanaBaseProcessor, SolanaContext } from "@sentio/sdk"
71
+ import { ${idlName}_idl } from "./${idlName}"
72
+ import bs58 from 'bs58'
73
+ import { PublicKey } from '@solana/web3.js'
74
+
75
+ export class ${idlNamePascalCase}Processor extends SolanaBaseProcessor {
76
+ static bind(address: string, endpoint: string, name = '${idlNamePascalCase}'): ${idlNamePascalCase}Processor {
77
+ return new ${idlNamePascalCase}Processor(name, address, endpoint)
78
+ }
79
+
80
+ decodeInstruction: (rawInstruction: string) => Instruction | null = (rawInstruction) => {
81
+ const instructionCoder = new BorshInstructionCoder(${idlName}_idl as Idl)
82
+ const decodedIns = instructionCoder.decode(Buffer.from(bs58.decode(rawInstruction)))
83
+ return decodedIns
84
+ }
85
+
86
+ ${instructions.map((ins) => codeGenSolanaInstruction(idlNamePascalCase, ins)).join('')}
87
+ }
88
+ `;
89
+ }
90
+ function codeGenSolanaInstruction(idlName, ins) {
91
+ const instructionName = ins.name;
92
+ const argsTypeString = codeGenInstructionArgs(ins.args);
93
+ return `
94
+ on${instructionName.charAt(0).toUpperCase() + instructionName.slice(1)}(handler: (args: ${argsTypeString}, ctx: SolanaContext) => void): ${idlName}Processor {
95
+ this.onInstruction('${instructionName}', (ins: Instruction, ctx) => {
96
+ if (ins) {
97
+ handler(ins.data as ${argsTypeString}, ctx)
98
+ }
99
+ })
100
+ return this
101
+ }
102
+ `;
103
+ }
104
+ function codeGenInstructionArgs(args) {
105
+ return `{ ${args.map((arg) => arg.name + ': ' + mapType(arg.type)).join(', ')} }`;
106
+ }
107
+ // Reference: https://github.com/coral-xyz/anchor/blob/93332766f13e86efbe77c9986722731742317ede/ts/src/program/namespace/types.ts#L104
108
+ function mapType(tpe) {
109
+ switch (tpe) {
110
+ case 'publicKey':
111
+ return 'PublicKey';
112
+ case 'bool':
113
+ return 'boolean';
114
+ case 'string':
115
+ return 'string';
116
+ case 'u8':
117
+ case 'i8':
118
+ case 'u16':
119
+ case 'i16':
120
+ case 'u32':
121
+ case 'i32':
122
+ case 'f32':
123
+ case 'f64':
124
+ return 'number';
125
+ case 'u64':
126
+ case 'i64':
127
+ case 'u128':
128
+ case 'i128':
129
+ return 'BN';
130
+ default:
131
+ return 'any';
132
+ }
133
+ }
134
+ function toPascalCase(str) {
135
+ return `${str}`
136
+ .toLowerCase()
137
+ .replace(new RegExp(/[-_]+/, 'g'), ' ')
138
+ .replace(new RegExp(/[^\w\s]/, 'g'), '')
139
+ .replace(new RegExp(/\s+(.)(\w*)/, 'g'), ($1, $2, $3) => `${$2.toUpperCase() + $3}`)
140
+ .replace(new RegExp(/\w/), (s) => s.toUpperCase());
141
+ }
142
+ async function execStep(cmd, stepName) {
143
+ const child = (0, child_process_1.exec)(cmd);
144
+ console.log(chalk_1.default.blue(stepName + ' begin'));
145
+ if (!child.stdout || !child.stderr) {
146
+ console.error(chalk_1.default.red(stepName + ' failed'));
147
+ process.exit(1);
148
+ }
149
+ child.stdout.pipe(process.stdout);
150
+ child.stderr.pipe(process.stderr);
151
+ await new Promise((resolve) => {
152
+ child.on('close', resolve);
153
+ });
154
+ if (child.exitCode) {
155
+ console.error(chalk_1.default.red(stepName + ' failed'));
156
+ process.exit(child.exitCode);
157
+ }
158
+ console.log(chalk_1.default.blue(stepName + ' success'));
159
+ console.log();
160
+ }
161
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const command_line_args_1 = __importDefault(require("command-line-args"));
8
+ const command_line_usage_1 = __importDefault(require("command-line-usage"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const https_1 = __importDefault(require("https"));
11
+ const http_1 = __importDefault(require("http"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const js_yaml_1 = __importDefault(require("js-yaml"));
14
+ const config_1 = require("./config");
15
+ const key_1 = require("./key");
16
+ const upload_1 = require("./upload");
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const build_1 = require("./build");
19
+ const mainDefinitions = [{ name: 'command', defaultOption: true }];
20
+ const mainOptions = (0, command_line_args_1.default)(mainDefinitions, {
21
+ stopAtFirstUnknown: true,
22
+ });
23
+ const argv = mainOptions._unknown || [];
24
+ // Process configs
25
+ let processorConfig = { host: '', project: '', source: '', build: true, targets: [] };
26
+ // Fist step, read from project yaml file
27
+ try {
28
+ console.log(chalk_1.default.blue('Loading Process config'));
29
+ // TODO correctly located sentio.yaml
30
+ const pwd = process.cwd();
31
+ const packageJson = path_1.default.join(pwd, 'package.json');
32
+ if (!fs_1.default.existsSync(packageJson)) {
33
+ console.error('package.json not found, please run this command in the root of your project');
34
+ process.exit(1);
35
+ }
36
+ const yamlPath = path_1.default.join(pwd, 'sentio.yaml');
37
+ if (!fs_1.default.existsSync(yamlPath)) {
38
+ console.error('sentio.yaml not found, please create one according to: TODO docs');
39
+ process.exit(1);
40
+ }
41
+ processorConfig = js_yaml_1.default.load(fs_1.default.readFileSync('sentio.yaml', 'utf8'));
42
+ if (!processorConfig.project === undefined) {
43
+ console.error('Config yaml must have contain a valid project identifier');
44
+ process.exit(1);
45
+ }
46
+ if (processorConfig.build === undefined) {
47
+ processorConfig.build = true;
48
+ }
49
+ if (!processorConfig.host) {
50
+ processorConfig.host = 'prod';
51
+ }
52
+ if (!processorConfig.source) {
53
+ processorConfig.source = 'src/processor.ts';
54
+ }
55
+ if (!processorConfig.targets) {
56
+ console.warn('targets is not defined, use EVM as the default target');
57
+ processorConfig.targets = [];
58
+ }
59
+ if (processorConfig.targets.length === 0) {
60
+ // By default evm
61
+ processorConfig.targets.push({ chain: config_1.EVM });
62
+ }
63
+ }
64
+ catch (e) {
65
+ console.error(e);
66
+ process.exit(1);
67
+ }
68
+ if (mainOptions.command === 'upload') {
69
+ const optionDefinitions = [
70
+ {
71
+ name: 'help',
72
+ alias: 'h',
73
+ type: Boolean,
74
+ description: 'Display this usage guide.',
75
+ },
76
+ {
77
+ name: 'api-key',
78
+ type: String,
79
+ description: '(Optional) Manually provide API key rather than use saved credential',
80
+ },
81
+ {
82
+ name: 'host',
83
+ description: '(Optional) Override Sentio Host name',
84
+ type: String,
85
+ },
86
+ {
87
+ name: 'nobuild',
88
+ description: '(Optional) Skip build & pack file before uploading, default false',
89
+ type: Boolean,
90
+ },
91
+ ];
92
+ const options = (0, command_line_args_1.default)(optionDefinitions, { argv });
93
+ if (options.help) {
94
+ const usage = (0, command_line_usage_1.default)([
95
+ {
96
+ header: 'Sentio upload',
97
+ content: 'Upload your project files to Sentio.',
98
+ },
99
+ {
100
+ header: 'Options',
101
+ optionList: optionDefinitions,
102
+ },
103
+ ]);
104
+ console.log(usage);
105
+ }
106
+ else {
107
+ if (options.host) {
108
+ processorConfig.host = options.host;
109
+ }
110
+ if (options.nobuild) {
111
+ processorConfig.build = false;
112
+ }
113
+ (0, config_1.FinalizeHost)(processorConfig);
114
+ console.log(processorConfig);
115
+ let apiOverride = undefined;
116
+ if (options['api-key']) {
117
+ apiOverride = options['api-key'];
118
+ }
119
+ (0, upload_1.uploadFile)(processorConfig, apiOverride);
120
+ }
121
+ }
122
+ else if (mainOptions.command === 'login') {
123
+ const optionDefinitions = [
124
+ {
125
+ name: 'help',
126
+ alias: 'h',
127
+ type: Boolean,
128
+ description: 'Display this usage guide.',
129
+ },
130
+ {
131
+ name: 'api-key',
132
+ type: String,
133
+ description: '(Required) Your API key',
134
+ },
135
+ {
136
+ name: 'host',
137
+ description: '(Optional) Override Sentio Host name',
138
+ type: String,
139
+ },
140
+ ];
141
+ const options = (0, command_line_args_1.default)(optionDefinitions, { argv });
142
+ if (options.help || !options['api-key']) {
143
+ const usage = (0, command_line_usage_1.default)([
144
+ {
145
+ header: 'Sentio login',
146
+ content: 'Try login to Sentio with your apikey.',
147
+ },
148
+ {
149
+ header: 'Options',
150
+ optionList: optionDefinitions,
151
+ },
152
+ ]);
153
+ console.log(usage);
154
+ }
155
+ else {
156
+ if (options.host) {
157
+ processorConfig.host = options.host;
158
+ }
159
+ (0, config_1.FinalizeHost)(processorConfig);
160
+ console.log(processorConfig);
161
+ const url = new URL(processorConfig.host);
162
+ const reqOptions = {
163
+ hostname: url.hostname,
164
+ port: url.port,
165
+ path: '/api/v1/processors/check_key',
166
+ method: 'HEAD',
167
+ headers: {
168
+ 'api-key': options['api-key'],
169
+ },
170
+ };
171
+ const h = url.protocol == 'https:' ? https_1.default : http_1.default;
172
+ const req = h.request(reqOptions, (res) => {
173
+ if (res.statusCode == 200) {
174
+ (0, key_1.WriteKey)(processorConfig.host, options['api-key']);
175
+ console.log(chalk_1.default.green('login success'));
176
+ }
177
+ else {
178
+ console.error(chalk_1.default.red('login failed, code:', res.statusCode, res.statusMessage));
179
+ }
180
+ });
181
+ req.on('error', (error) => {
182
+ console.error(error);
183
+ });
184
+ req.end();
185
+ }
186
+ }
187
+ else if (mainOptions.command === 'build') {
188
+ (0, build_1.buildProcessor)(false, processorConfig.targets);
189
+ }
190
+ else if (mainOptions.command === 'gen') {
191
+ (0, build_1.buildProcessor)(true, processorConfig.targets);
192
+ }
193
+ else {
194
+ const usage = (0, command_line_usage_1.default)([
195
+ {
196
+ header: 'Sentio',
197
+ content: 'Login & Upload your project files to Sentio.',
198
+ },
199
+ {
200
+ header: 'Usage',
201
+ content: [
202
+ 'sentio $command --help\t\tshow detail usage of specific command',
203
+ 'sentio login --api-key=xx\t\tsave credential to local',
204
+ 'sentio upload\t\t\t\tbuild and upload processor to sentio',
205
+ 'sentio gen\t\t\t\tgenerate abi',
206
+ 'sentio build\t\t\t\tgenerate abi and build',
207
+ ],
208
+ },
209
+ ]);
210
+ console.log(usage);
211
+ }
212
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface SentioProjectConfig {
2
+ project: string;
3
+ host: string;
4
+ source: string;
5
+ build: boolean;
6
+ targets: Target[];
7
+ }
8
+ export declare function FinalizeHost(config: SentioProjectConfig): void;
9
+ export interface Target {
10
+ chain: string;
11
+ abisDir?: string;
12
+ }
13
+ export declare const EVM = "evm";
14
+ export declare const SOLANA = "solana";
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SOLANA = exports.EVM = exports.FinalizeHost = void 0;
4
+ function FinalizeHost(config) {
5
+ switch (config.host) {
6
+ case '':
7
+ case 'prod':
8
+ config.host = 'https://app.sentio.xyz';
9
+ break;
10
+ case 'test':
11
+ config.host = 'https://test.sentio.xyz';
12
+ break;
13
+ case 'staging':
14
+ config.host = 'https://staging.sentio.xyz';
15
+ break;
16
+ case 'local':
17
+ config.host = 'http://localhost:10000';
18
+ }
19
+ }
20
+ exports.FinalizeHost = FinalizeHost;
21
+ // Supported target chain, lower case
22
+ exports.EVM = 'evm';
23
+ exports.SOLANA = 'solana';
24
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;AAQA,SAAgB,YAAY,CAAC,MAA2B;IACtD,QAAQ,MAAM,CAAC,IAAI,EAAE;QACnB,KAAK,EAAE,CAAC;QACR,KAAK,MAAM;YACT,MAAM,CAAC,IAAI,GAAG,wBAAwB,CAAA;YACtC,MAAK;QACP,KAAK,MAAM;YACT,MAAM,CAAC,IAAI,GAAG,yBAAyB,CAAA;YACvC,MAAK;QACP,KAAK,SAAS;YACZ,MAAM,CAAC,IAAI,GAAG,4BAA4B,CAAA;YAC1C,MAAK;QACP,KAAK,OAAO;YACV,MAAM,CAAC,IAAI,GAAG,wBAAwB,CAAA;KACzC;AACH,CAAC;AAfD,oCAeC;AAOD,qCAAqC;AACxB,QAAA,GAAG,GAAG,KAAK,CAAA;AACX,QAAA,MAAM,GAAG,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function WriteKey(host: string, api_key: string): void;
2
+ export declare function ReadKey(host: string): string | undefined;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ReadKey = exports.WriteKey = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const homeDir = os_1.default.homedir();
11
+ const sentioDir = path_1.default.join(homeDir, '.sentio');
12
+ const configFile = path_1.default.join(sentioDir, 'config.json');
13
+ function WriteKey(host, api_key) {
14
+ const sentioDir = path_1.default.join(homeDir, '.sentio');
15
+ if (!fs_1.default.existsSync(sentioDir)) {
16
+ fs_1.default.mkdirSync(sentioDir, { recursive: true });
17
+ }
18
+ let config = {};
19
+ if (fs_1.default.existsSync(configFile)) {
20
+ const content = fs_1.default.readFileSync(configFile, 'utf8');
21
+ config = JSON.parse(content);
22
+ }
23
+ const hostConfig = config[host] || { api_keys: {} };
24
+ hostConfig.api_keys = api_key;
25
+ config[host] = hostConfig;
26
+ fs_1.default.writeFileSync(configFile, JSON.stringify(config, null, 2));
27
+ }
28
+ exports.WriteKey = WriteKey;
29
+ function ReadKey(host) {
30
+ if (!fs_1.default.existsSync(sentioDir)) {
31
+ return undefined;
32
+ }
33
+ const configFile = path_1.default.join(sentioDir, 'config.json');
34
+ if (fs_1.default.existsSync(configFile)) {
35
+ const content = fs_1.default.readFileSync(configFile, 'utf8');
36
+ const config = JSON.parse(content);
37
+ return config[host]?.api_keys;
38
+ }
39
+ else {
40
+ return undefined;
41
+ }
42
+ }
43
+ exports.ReadKey = ReadKey;
44
+ //# sourceMappingURL=key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/cli/key.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,4CAAmB;AACnB,4CAAmB;AAEnB,MAAM,OAAO,GAAG,YAAE,CAAC,OAAO,EAAE,CAAA;AAC5B,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAC/C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;AAQtD,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAe;IACpD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC/C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC7B,YAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;KAC7C;IACD,IAAI,MAAM,GAAoB,EAAE,CAAA;IAChC,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC7B,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACnD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;KAC7B;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IACnD,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAA;IAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA;IACzB,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC;AAdD,4BAcC;AAED,SAAgB,OAAO,CAAC,IAAY;IAClC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC7B,OAAO,SAAS,CAAA;KACjB;IACD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IACtD,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC7B,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAC9B;SAAM;QACL,OAAO,SAAS,CAAA;KACjB;AACH,CAAC;AAZD,0BAYC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const build_1 = require("./build");
5
+ const abisDir = 'abis/solana';
6
+ if (process.argv.length > 2) {
7
+ const rootPath = process.argv[2];
8
+ if (process.argv.length > 3) {
9
+ const targetPath = process.argv[3];
10
+ (0, build_1.codeGenSolanaProcessor)(abisDir, rootPath, targetPath);
11
+ }
12
+ else {
13
+ (0, build_1.codeGenSolanaProcessor)(abisDir, rootPath);
14
+ }
15
+ }
16
+ else {
17
+ (0, build_1.codeGenSolanaProcessor)(abisDir);
18
+ }
19
+ //# sourceMappingURL=solana-code-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-code-gen.js","sourceRoot":"","sources":["../../src/cli/solana-code-gen.ts"],"names":[],"mappings":";;;AAEA,mCAAgD;AAEhD,MAAM,OAAO,GAAG,aAAa,CAAA;AAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClC,IAAA,8BAAsB,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;KACtD;SAAM;QACL,IAAA,8BAAsB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;KAC1C;CACF;KAAM;IACL,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAA;CAChC"}
@@ -0,0 +1,2 @@
1
+ import { SentioProjectConfig } from './config';
2
+ export declare function uploadFile(options: SentioProjectConfig, apiKeyOverride: string): Promise<void>;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.uploadFile = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const crypto_1 = require("crypto");
9
+ const form_data_1 = __importDefault(require("form-data"));
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const key_1 = require("./key");
12
+ const path_1 = __importDefault(require("path"));
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const build_1 = require("./build");
15
+ const node_fetch_1 = __importDefault(require("node-fetch"));
16
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
17
+ const packageJson = require('../../package.json');
18
+ async function uploadFile(options, apiKeyOverride) {
19
+ if (options.build) {
20
+ await (0, build_1.buildProcessor)(false, options.targets);
21
+ }
22
+ console.log(chalk_1.default.blue('Uploading'));
23
+ const PROCESSOR_FILE = path_1.default.join(process.cwd(), 'dist/lib.js');
24
+ const url = new URL(options.host);
25
+ const apiKey = apiKeyOverride || (0, key_1.ReadKey)(options.host);
26
+ const isProd = options.host === 'https://app.sentio.xyz';
27
+ if (!apiKey) {
28
+ const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host;
29
+ console.error(chalk_1.default.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'));
30
+ process.exit(1);
31
+ }
32
+ if (!fs_1.default.existsSync(PROCESSOR_FILE)) {
33
+ console.error(chalk_1.default.red('File not existed ', PROCESSOR_FILE, "don't use --nobuild"));
34
+ process.exit(1);
35
+ }
36
+ const stat = fs_1.default.statSync(PROCESSOR_FILE);
37
+ console.log('Packed processor file size', Math.floor(stat.size / 1024) + 'K, last modified', stat.mtime);
38
+ const content = fs_1.default.readFileSync(PROCESSOR_FILE);
39
+ const hash = (0, crypto_1.createHash)('sha256');
40
+ hash.update(content);
41
+ const digest = hash.digest('hex');
42
+ const data = new form_data_1.default();
43
+ data.append('attachment', fs_1.default.createReadStream(PROCESSOR_FILE));
44
+ data.append('sha256', digest);
45
+ let commitSha;
46
+ try {
47
+ commitSha = (0, child_process_1.execSync)('git rev-parse HEAD').toString().trim();
48
+ data.append('commitSha', commitSha);
49
+ }
50
+ catch (e) {
51
+ chalk_1.default.yellow(e);
52
+ }
53
+ url.pathname = '/api/v1/processors';
54
+ const res = await (0, node_fetch_1.default)(url, {
55
+ method: 'POST',
56
+ headers: {
57
+ 'api-key': apiKey,
58
+ project: options.project,
59
+ version: packageJson.version,
60
+ },
61
+ body: data,
62
+ });
63
+ if (res.ok) {
64
+ console.log(chalk_1.default.green('Upload success: '));
65
+ console.log("\t", chalk_1.default.blue('sha256:'), digest);
66
+ if (commitSha) {
67
+ console.log("\t", chalk_1.default.blue('Git commit SHA:'), commitSha);
68
+ }
69
+ }
70
+ else {
71
+ console.error(chalk_1.default.red('Upload Failed'));
72
+ console.error(chalk_1.default.red(await res.text()));
73
+ }
74
+ }
75
+ exports.uploadFile = uploadFile;
76
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/cli/upload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /* eslint-disable */
2
+ const path = require('path')
3
+
4
+ module.exports = {
5
+ entry: {
6
+ lib: './src/processor.ts',
7
+ },
8
+ devtool: 'inline-source-map',
9
+ module: {
10
+ rules: [
11
+ {
12
+ test: /\.tsx?$/,
13
+ use: 'ts-loader',
14
+ exclude: /node_modules/,
15
+ },
16
+ ],
17
+ },
18
+ resolve: {
19
+ extensions: ['.ts', '.js'],
20
+ },
21
+ output: {
22
+ filename: '[name].js',
23
+ path: path.resolve(process.cwd(), 'dist'),
24
+ },
25
+ target: 'node',
26
+ mode: 'production',
27
+ externals: [
28
+ {
29
+ ethers: 'commonjs2 ethers',
30
+ '@sentio/sdk': 'root sentio_sdk',
31
+ bs58: 'commonjs2 bs58',
32
+ 'bn.js': 'commonjs2 bnjs',
33
+ },
34
+ function ({ context, request }, callback) {
35
+ if (/^@(ethersproject|solana|project-serum).*$/.test(request)) {
36
+ return callback(null, 'commonjs ' + request)
37
+ }
38
+ callback()
39
+ },
40
+ ],
41
+ }