@sentio/sdk 0.0.27 → 0.1.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.
@@ -0,0 +1 @@
1
+ export declare function buildProcessor(onlyGen: boolean): Promise<void>;
@@ -0,0 +1,32 @@
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.buildProcessor = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const child_process_1 = require("child_process");
10
+ async function buildProcessor(onlyGen) {
11
+ const ETHERS_TARGET = path_1.default.join(__dirname, '../target-ethers-sentio');
12
+ console.log(chalk_1.default.blue('Generate type definitions'));
13
+ console.log((0, child_process_1.execSync)("yarn typechain --target " + ETHERS_TARGET + " --out-dir src/types 'abis/*.json'").toString());
14
+ if (onlyGen) {
15
+ return;
16
+ }
17
+ console.log(chalk_1.default.blue('Building & Packing Processor file'));
18
+ const WEBPACK_CONFIG = path_1.default.join(__dirname, 'webpack.config.js');
19
+ let child = (0, child_process_1.exec)('yarn webpack --config=' + WEBPACK_CONFIG);
20
+ if (!child.stdout || !child.stderr) {
21
+ process.exit(1);
22
+ }
23
+ // use flag to guard
24
+ child.stdout.pipe(process.stdout);
25
+ child.stderr.pipe(process.stderr);
26
+ await new Promise((resolve) => {
27
+ child.on('close', resolve);
28
+ });
29
+ console.log('Finish build');
30
+ }
31
+ exports.buildProcessor = buildProcessor;
32
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,gDAAwB;AACxB,iDAA+C;AAExC,KAAK,UAAU,cAAc,CAAC,OAAgB;IACnD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAA;IAErE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,IAAA,wBAAQ,EAAC,0BAA0B,GAAG,aAAa,GAAG,oCAAoC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEnH,IAAI,OAAO,EAAE;QACX,OAAM;KACP;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAA;IAE5D,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;IAEhE,IAAI,KAAK,GAAG,IAAA,oBAAI,EAAC,wBAAwB,GAAG,cAAc,CAAC,CAAA;IAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;IAED,oBAAoB;IACpB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEjC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC5B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAC7B,CAAC;AA3BD,wCA2BC"}
File without changes
@@ -0,0 +1,204 @@
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 };
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
+ }
56
+ catch (e) {
57
+ console.error(e);
58
+ process.exit(1);
59
+ }
60
+ if (mainOptions.command === 'upload') {
61
+ const optionDefinitions = [
62
+ {
63
+ name: 'help',
64
+ alias: 'h',
65
+ type: Boolean,
66
+ description: 'Display this usage guide.',
67
+ },
68
+ {
69
+ name: 'api-key',
70
+ type: String,
71
+ description: '(Optional) Manually provide API key rather than use saved credential',
72
+ },
73
+ {
74
+ name: 'host',
75
+ description: '(Optional) Override Sentio Host name',
76
+ type: String,
77
+ },
78
+ {
79
+ name: 'nobuild',
80
+ description: '(Optional) Skip build & pack file before uploading, default false',
81
+ type: Boolean,
82
+ },
83
+ ];
84
+ const options = (0, command_line_args_1.default)(optionDefinitions, { argv });
85
+ if (options.help) {
86
+ const usage = (0, command_line_usage_1.default)([
87
+ {
88
+ header: 'Sentio upload',
89
+ content: 'Upload your project files to Sentio.',
90
+ },
91
+ {
92
+ header: 'Options',
93
+ optionList: optionDefinitions,
94
+ },
95
+ ]);
96
+ console.log(usage);
97
+ }
98
+ else {
99
+ if (options.host) {
100
+ processorConfig.host = options.host;
101
+ }
102
+ if (options.nobuild) {
103
+ processorConfig.build = false;
104
+ }
105
+ (0, config_1.FinalizeHost)(processorConfig);
106
+ console.log(processorConfig);
107
+ let apiOverride = undefined;
108
+ if (options['api-key']) {
109
+ apiOverride = options['api-key'];
110
+ }
111
+ (0, upload_1.uploadFile)(processorConfig, apiOverride);
112
+ }
113
+ }
114
+ else if (mainOptions.command === 'login') {
115
+ const optionDefinitions = [
116
+ {
117
+ name: 'help',
118
+ alias: 'h',
119
+ type: Boolean,
120
+ description: 'Display this usage guide.',
121
+ },
122
+ {
123
+ name: 'api-key',
124
+ type: String,
125
+ description: '(Required) Your API key',
126
+ },
127
+ {
128
+ name: 'host',
129
+ description: '(Optional) Override Sentio Host name',
130
+ type: String,
131
+ },
132
+ ];
133
+ const options = (0, command_line_args_1.default)(optionDefinitions, { argv });
134
+ if (options.help || !options['api-key']) {
135
+ const usage = (0, command_line_usage_1.default)([
136
+ {
137
+ header: 'Sentio login',
138
+ content: 'Try login to Sentio with your apikey.',
139
+ },
140
+ {
141
+ header: 'Options',
142
+ optionList: optionDefinitions,
143
+ },
144
+ ]);
145
+ console.log(usage);
146
+ }
147
+ else {
148
+ if (options.host) {
149
+ processorConfig.host = options.host;
150
+ }
151
+ (0, config_1.FinalizeHost)(processorConfig);
152
+ console.log(processorConfig);
153
+ const url = new URL(processorConfig.host);
154
+ const reqOptions = {
155
+ hostname: url.hostname,
156
+ port: url.port,
157
+ path: '/api/v1/processors/check_key',
158
+ method: 'HEAD',
159
+ headers: {
160
+ 'api-key': options['api-key'],
161
+ },
162
+ };
163
+ const h = url.protocol == 'https:' ? https_1.default : http_1.default;
164
+ const req = h.request(reqOptions, (res) => {
165
+ if (res.statusCode == 200) {
166
+ (0, key_1.WriteKey)(processorConfig.host, options['api-key']);
167
+ console.log(chalk_1.default.green('login success'));
168
+ }
169
+ else {
170
+ console.error(chalk_1.default.red('login failed, code:', res.statusCode, res.statusMessage));
171
+ }
172
+ });
173
+ req.on('error', (error) => {
174
+ console.error(error);
175
+ });
176
+ req.end();
177
+ }
178
+ }
179
+ else if (mainOptions.command === 'build') {
180
+ (0, build_1.buildProcessor)(false);
181
+ }
182
+ else if (mainOptions.command === 'gen') {
183
+ (0, build_1.buildProcessor)(true);
184
+ }
185
+ else {
186
+ const usage = (0, command_line_usage_1.default)([
187
+ {
188
+ header: 'Sentio',
189
+ content: 'Login & Upload your project files to Sentio.',
190
+ },
191
+ {
192
+ header: 'Usage',
193
+ content: [
194
+ 'sentio $command --help\t\tshow detail usage of specific command',
195
+ 'sentio login --api-key=xx\t\tsave credential to local',
196
+ 'sentio upload\t\t\t\tbuild and upload processor to sentio',
197
+ 'sentio gen\t\t\t\tgenerate abi',
198
+ 'sentio build\t\t\t\tgenerate abi and build',
199
+ ]
200
+ },
201
+ ]);
202
+ console.log(usage);
203
+ }
204
+ //# 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,7 @@
1
+ export interface SentioProjectConfig {
2
+ project: string;
3
+ host: string;
4
+ source: string;
5
+ build: boolean;
6
+ }
7
+ export declare function FinalizeHost(config: SentioProjectConfig): void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ 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
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;AAOA,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"}
@@ -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;AAGnB,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
+ import { SentioProjectConfig } from './config';
2
+ export declare function uploadFile(options: SentioProjectConfig, apiKeyOverride: string): Promise<void>;
@@ -0,0 +1,48 @@
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 form_data_1 = __importDefault(require("form-data"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const key_1 = require("./key");
10
+ const path_1 = __importDefault(require("path"));
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const build_1 = require("./build");
13
+ const fetch = require('node-fetch');
14
+ const packageJson = require('../../package.json');
15
+ async function uploadFile(options, apiKeyOverride) {
16
+ if (options.build) {
17
+ await (0, build_1.buildProcessor)(false);
18
+ }
19
+ console.log(chalk_1.default.blue('Uploading'));
20
+ const PROCESSOR_FILE = path_1.default.join(process.cwd(), 'dist/lib.js');
21
+ const url = new URL(options.host);
22
+ const apiKey = apiKeyOverride || (0, key_1.ReadKey)(options.host);
23
+ if (!apiKey) {
24
+ console.error(chalk_1.default.red('No API key specified. Please run `sentio login`.'));
25
+ process.exit(1);
26
+ }
27
+ const data = new form_data_1.default();
28
+ data.append('attachment', fs_1.default.createReadStream(PROCESSOR_FILE));
29
+ url.pathname = '/api/v1/processors';
30
+ const res = await fetch(url, {
31
+ method: 'POST',
32
+ headers: {
33
+ 'api-key': apiKey,
34
+ project: options.project,
35
+ version: packageJson.version,
36
+ },
37
+ body: data,
38
+ });
39
+ if (res.ok) {
40
+ console.log(chalk_1.default.green('Upload success'));
41
+ }
42
+ else {
43
+ console.error(chalk_1.default.red('Upload Failed'));
44
+ console.error(chalk_1.default.red(await res.text()));
45
+ }
46
+ }
47
+ exports.uploadFile = uploadFile;
48
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/cli/upload.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAgC;AAChC,4CAAmB;AAEnB,+BAA+B;AAC/B,gDAAuB;AACvB,kDAAyB;AACzB,mCAAyC;AAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AACnC,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAE1C,KAAK,UAAU,UAAU,CAAC,OAA4B,EAAE,cAAsB;IACnF,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,MAAM,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;KAC5B;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAEpC,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAA;IAE9D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,cAAc,IAAI,IAAA,aAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtD,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;IAED,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,YAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAA;IAE9D,GAAG,CAAC,QAAQ,GAAG,oBAAoB,CAAA;IACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B;QACD,IAAI,EAAE,IAAI;KACX,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,EAAE,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;KAC3C;SAAM;QACL,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;QACzC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;KAC3C;AACH,CAAC;AArCD,gCAqCC"}
@@ -0,0 +1,31 @@
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(__dirname, 'dist'),
24
+ },
25
+ target: 'node',
26
+ mode: 'production',
27
+ externals: {
28
+ ethers: 'commonjs2 ethers',
29
+ '@sentio/sdk': 'root sentio_sdk',
30
+ },
31
+ }
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
+ "license": "Apache-2.0",
3
4
  "scripts": {
4
- "compile": "tsc --build tsconfig.json",
5
+ "compile": "tsc --build tsconfig.json && cp src/cli/webpack.config.js dist/cli",
5
6
  "build": "yarn compile && yarn gen_test_abi",
6
7
  "pub": "yarn publish --no-git-tag-version --access public",
7
8
  "start_ts": "ts-node --files src/processor_server.ts ../examples/x2y2/src/processor.ts",
8
9
  "start": "ts-node --files src/processor_server.ts ../examples/x2y2/dist/lib.js",
9
10
  "start_js": "node dist/processor_server.js ../examples/x2y2/dist/lib.js",
10
11
  "ts-start": "ts-node --files src/processor_server.ts ./src/test_case/erc20.ts",
11
- "cli": "yarn build && node dist/cli.js",
12
+ "cli": "yarn build && node dist/cli/cli.js",
12
13
  "test": "ts-mocha --paths src/**/*.test.ts src/*.test.ts",
13
14
  "gen_test_abi": "typechain --target dist/target-ethers-sentio --out-dir src/test_case/types 'src/test_case/abis/*.json'"
14
15
  },
15
16
  "bin": {
16
17
  "processor_server": "./dist/processor_server.js",
17
- "sentio_cli": "./dist/cli.js"
18
+ "sentio": "./dist/cli/cli.js"
18
19
  },
19
- "version": "0.0.27",
20
+ "version": "0.1.2",
20
21
  "dependencies": {
21
22
  "@ethersproject/providers": "^5.6.7",
22
23
  "@typechain/ethers-v5": "^10.0.0",
@@ -26,9 +27,14 @@
26
27
  "form-data": "^4.0.0",
27
28
  "fs-extra": "^10.1.0",
28
29
  "google-protobuf": "^3.15.8",
30
+ "js-yaml": "^4.1.0",
29
31
  "log-timestamp": "^0.3.0",
30
32
  "nice-grpc": "^1.2.0",
31
- "typechain": "^8.0.0"
33
+ "node-fetch": "2",
34
+ "typechain": "^8.0.0",
35
+ "webpack-cli": "^4.9.2",
36
+ "webpack": "^5.72.1",
37
+ "ts-loader": "^9.3.0"
32
38
  },
33
39
  "devDependencies": {
34
40
  "@bazel/typescript": "^5.4.2",
@@ -38,12 +44,12 @@
38
44
  "@types/expect": "^24.3.0",
39
45
  "@types/fs-extra": "^9.0.13",
40
46
  "@types/google-protobuf": "^3.15.6",
47
+ "@types/js-yaml": "^4.0.5",
41
48
  "@types/mkdirp": "^1.0.2",
42
49
  "@types/mocha": "^9.1.1",
43
50
  "@types/node": "^18.0.4",
44
51
  "chai": "^4.3.6",
45
52
  "mocha": "^10.0.0",
46
- "ts-loader": "^9.3.0",
47
53
  "ts-mocha": "^10.0.0",
48
54
  "ts-node": "^10.8.0",
49
55
  "tsconfig-paths": "^4.0.0",
package/dist/cli.js DELETED
@@ -1,196 +0,0 @@
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 form_data_1 = __importDefault(require("form-data"));
11
- const https_1 = __importDefault(require("https"));
12
- const http_1 = __importDefault(require("http"));
13
- const os_1 = __importDefault(require("os"));
14
- const path_1 = __importDefault(require("path"));
15
- const mainDefinitions = [{ name: 'command', defaultOption: true }];
16
- const mainOptions = (0, command_line_args_1.default)(mainDefinitions, {
17
- stopAtFirstUnknown: true,
18
- });
19
- const argv = mainOptions._unknown || [];
20
- const DEFAULT_HOST = 'http://localhost:10020';
21
- const homeDir = os_1.default.homedir();
22
- const sentioDir = path_1.default.join(homeDir, '.sentio');
23
- const configFile = path_1.default.join(sentioDir, 'config.json');
24
- function WriteKey(host, api_key) {
25
- const sentioDir = path_1.default.join(homeDir, '.sentio');
26
- if (!fs_1.default.existsSync(sentioDir)) {
27
- fs_1.default.mkdirSync(sentioDir, { recursive: true });
28
- }
29
- let config = {};
30
- if (fs_1.default.existsSync(configFile)) {
31
- const content = fs_1.default.readFileSync(configFile, 'utf8');
32
- config = JSON.parse(content);
33
- }
34
- const hostConfig = config[host] || { api_keys: {} };
35
- hostConfig.api_keys[process.cwd()] = api_key;
36
- config[host] = hostConfig;
37
- fs_1.default.writeFileSync(configFile, JSON.stringify(config, null, 2));
38
- }
39
- function ReadKey(host) {
40
- if (!fs_1.default.existsSync(sentioDir)) {
41
- return undefined;
42
- }
43
- const configFile = path_1.default.join(sentioDir, 'config.json');
44
- if (fs_1.default.existsSync(configFile)) {
45
- const content = fs_1.default.readFileSync(configFile, 'utf8');
46
- const config = JSON.parse(content);
47
- return config[host]?.api_keys[process.cwd()];
48
- }
49
- else {
50
- return undefined;
51
- }
52
- }
53
- if (mainOptions.command === 'upload') {
54
- const optionDefinitions = [
55
- {
56
- name: 'help',
57
- alias: 'h',
58
- type: Boolean,
59
- description: 'Display this usage guide.',
60
- },
61
- {
62
- name: 'api_key',
63
- type: String,
64
- description: 'Your API key',
65
- },
66
- {
67
- name: 'host',
68
- alias: 'e',
69
- type: String,
70
- // TODO: change this back to 10000
71
- defaultValue: DEFAULT_HOST,
72
- },
73
- {
74
- name: 'src',
75
- description: 'The input files to upload.',
76
- type: String,
77
- defaultOption: true,
78
- typeLabel: '<file>',
79
- },
80
- ];
81
- const options = (0, command_line_args_1.default)(optionDefinitions, { argv });
82
- if (options.help) {
83
- const usage = (0, command_line_usage_1.default)([
84
- {
85
- header: 'Sentio upload',
86
- content: 'Upload your project files to Sentio.',
87
- },
88
- {
89
- header: 'Options',
90
- optionList: optionDefinitions,
91
- },
92
- ]);
93
- console.log(usage);
94
- }
95
- else {
96
- console.log(options);
97
- const uploadFile = () => {
98
- const form = new form_data_1.default();
99
- form.append('attachment', fs_1.default.createReadStream(options.src));
100
- const url = new URL(options.host);
101
- const api_key = options.api_key || ReadKey(options.host);
102
- if (!api_key) {
103
- console.error('No API key specified. Please run `sentio login`.');
104
- process.exit(1);
105
- }
106
- form.submit({
107
- protocol: url.protocol == 'https:' ? 'https:' : 'http:',
108
- host: url.hostname,
109
- path: '/api/v1/processors',
110
- method: 'POST',
111
- port: url.port,
112
- headers: { 'api-key': api_key },
113
- }, function (err, res) {
114
- if (err) {
115
- console.log(res.statusCode, res.statusMessage);
116
- console.error(err);
117
- }
118
- else {
119
- console.log(res.statusCode, res.statusMessage);
120
- // TODO check if status is ok
121
- console.log('uploaded');
122
- }
123
- });
124
- };
125
- uploadFile();
126
- }
127
- }
128
- else if (mainOptions.command === 'login') {
129
- const optionDefinitions = [
130
- {
131
- name: 'help',
132
- alias: 'h',
133
- type: Boolean,
134
- description: 'Display this usage guide.',
135
- },
136
- {
137
- name: 'api_key',
138
- type: String,
139
- description: 'Your API key',
140
- },
141
- {
142
- name: 'host',
143
- alias: 'e',
144
- type: String,
145
- defaultValue: DEFAULT_HOST,
146
- },
147
- ];
148
- const options = (0, command_line_args_1.default)(optionDefinitions, { argv });
149
- if (options.help) {
150
- const usage = (0, command_line_usage_1.default)([
151
- {
152
- header: 'Sentio login',
153
- content: 'Try login to Sentio with your apikey.',
154
- },
155
- {
156
- header: 'Options',
157
- optionList: optionDefinitions,
158
- },
159
- ]);
160
- console.log(usage);
161
- }
162
- else {
163
- console.log(options);
164
- const pwd = process.cwd();
165
- const packageJson = path_1.default.join(pwd, 'package.json');
166
- if (!fs_1.default.existsSync(packageJson)) {
167
- console.error('package.json not found, please run this command in the root of your project');
168
- process.exit(1);
169
- }
170
- const url = new URL(options.host);
171
- const reqOptions = {
172
- hostname: url.hostname,
173
- port: url.port,
174
- path: '/api/v1/processors/check_key',
175
- method: 'HEAD',
176
- headers: {
177
- 'api-key': options.api_key,
178
- },
179
- };
180
- const h = url.protocol == 'https:' ? https_1.default : http_1.default;
181
- const req = h.request(reqOptions, (res) => {
182
- if (res.statusCode == 200) {
183
- WriteKey(options.host, options.api_key);
184
- console.log('login success');
185
- }
186
- else {
187
- console.error('login failed, code:', res.statusCode);
188
- }
189
- });
190
- req.on('error', (error) => {
191
- console.error(error);
192
- });
193
- req.end();
194
- }
195
- }
196
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}