@sentio/cli 1.37.5-rc.6 → 2.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 (68) hide show
  1. package/lib/index.js +125 -0
  2. package/package.json +42 -41
  3. package/lib/build.d.ts +0 -2
  4. package/lib/build.js +0 -86
  5. package/lib/build.js.map +0 -1
  6. package/lib/cli.d.ts +0 -2
  7. package/lib/cli.js +0 -186
  8. package/lib/cli.js.map +0 -1
  9. package/lib/commands/login-server.d.ts +0 -7
  10. package/lib/commands/login-server.js +0 -133
  11. package/lib/commands/login-server.js.map +0 -1
  12. package/lib/commands/run-create.d.ts +0 -1
  13. package/lib/commands/run-create.js +0 -121
  14. package/lib/commands/run-create.js.map +0 -1
  15. package/lib/commands/run-login.d.ts +0 -1
  16. package/lib/commands/run-login.js +0 -136
  17. package/lib/commands/run-login.js.map +0 -1
  18. package/lib/commands/run-version.d.ts +0 -1
  19. package/lib/commands/run-version.js +0 -69
  20. package/lib/commands/run-version.js.map +0 -1
  21. package/lib/config.d.ts +0 -14
  22. package/lib/config.js +0 -64
  23. package/lib/config.js.map +0 -1
  24. package/lib/key.d.ts +0 -2
  25. package/lib/key.js +0 -44
  26. package/lib/key.js.map +0 -1
  27. package/lib/upload.d.ts +0 -2
  28. package/lib/upload.js +0 -189
  29. package/lib/upload.js.map +0 -1
  30. package/lib/utils.d.ts +0 -2
  31. package/lib/utils.js +0 -28
  32. package/lib/utils.js.map +0 -1
  33. package/lib/webpack.config.js +0 -50
  34. package/src/build.ts +0 -99
  35. package/src/cli.ts +0 -184
  36. package/src/commands/login-server.ts +0 -119
  37. package/src/commands/run-create.ts +0 -126
  38. package/src/commands/run-login.ts +0 -111
  39. package/src/commands/run-version.ts +0 -38
  40. package/src/config.ts +0 -72
  41. package/src/key.ts +0 -43
  42. package/src/upload.ts +0 -214
  43. package/src/utils.ts +0 -21
  44. package/src/webpack.config.js +0 -50
  45. package/templates/aptos/abis/aptos/souffle.json +0 -389
  46. package/templates/aptos/jest.config.js +0 -7
  47. package/templates/aptos/package.json +0 -21
  48. package/templates/aptos/sentio.yaml +0 -1
  49. package/templates/aptos/src/processor.ts +0 -13
  50. package/templates/aptos/tsconfig.json +0 -20
  51. package/templates/evm/abis/evm/x2y2.json +0 -296
  52. package/templates/evm/jest.config.js +0 -7
  53. package/templates/evm/package.json +0 -20
  54. package/templates/evm/sentio.yaml +0 -3
  55. package/templates/evm/src/processor.ts +0 -29
  56. package/templates/evm/tsconfig.json +0 -20
  57. package/templates/raw/jest.config.js +0 -7
  58. package/templates/raw/package.json +0 -20
  59. package/templates/raw/sentio.yaml +0 -3
  60. package/templates/raw/src/processor.ts +0 -0
  61. package/templates/raw/tsconfig.json +0 -20
  62. package/templates/raw/yarn.lock +0 -4095
  63. package/templates/solana/jest.config.js +0 -7
  64. package/templates/solana/package.json +0 -21
  65. package/templates/solana/sentio.yaml +0 -3
  66. package/templates/solana/src/processor.ts +0 -16
  67. package/templates/solana/tsconfig.json +0 -20
  68. package/templates/solana/yarn.lock +0 -4918
package/lib/key.js DELETED
@@ -1,44 +0,0 @@
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
package/lib/key.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"key.js","sourceRoot":"","sources":["../src/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","sourcesContent":["import path from 'path'\nimport fs from 'fs'\nimport os from 'os'\n\nconst homeDir = os.homedir()\nconst sentioDir = path.join(homeDir, '.sentio')\nconst configFile = path.join(sentioDir, 'config.json')\n\ninterface SentioKeyConfig {\n [key: string]: {\n api_keys: string\n }\n}\n\nexport function WriteKey(host: string, api_key: string) {\n const sentioDir = path.join(homeDir, '.sentio')\n if (!fs.existsSync(sentioDir)) {\n fs.mkdirSync(sentioDir, { recursive: true })\n }\n let config: SentioKeyConfig = {}\n if (fs.existsSync(configFile)) {\n const content = fs.readFileSync(configFile, 'utf8')\n config = JSON.parse(content)\n }\n const hostConfig = config[host] || { api_keys: {} }\n hostConfig.api_keys = api_key\n config[host] = hostConfig\n fs.writeFileSync(configFile, JSON.stringify(config, null, 2))\n}\n\nexport function ReadKey(host: string): string | undefined {\n if (!fs.existsSync(sentioDir)) {\n return undefined\n }\n const configFile = path.join(sentioDir, 'config.json')\n if (fs.existsSync(configFile)) {\n const content = fs.readFileSync(configFile, 'utf8')\n const config = JSON.parse(content)\n return config[host]?.api_keys\n } else {\n return undefined\n }\n}\n"]}
package/lib/upload.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { SentioProjectConfig } from './config';
2
- export declare function uploadFile(options: SentioProjectConfig, apiKeyOverride: string): Promise<void>;
package/lib/upload.js DELETED
@@ -1,189 +0,0 @@
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 fs_1 = __importDefault(require("fs"));
10
- const readline_1 = __importDefault(require("readline"));
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
- const utils_1 = require("./utils");
17
- const url_1 = require("url");
18
- async function createProject(options, apiKey) {
19
- const url = new url_1.URL('/api/v1/projects', options.host);
20
- const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project];
21
- return (0, node_fetch_1.default)(url, {
22
- method: 'POST',
23
- headers: {
24
- 'api-key': apiKey,
25
- },
26
- body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),
27
- });
28
- }
29
- async function uploadFile(options, apiKeyOverride) {
30
- if (options.build) {
31
- await (0, build_1.buildProcessor)(false);
32
- }
33
- console.log(chalk_1.default.blue('Prepare to upload'));
34
- const PROCESSOR_FILE = path_1.default.join(process.cwd(), 'dist/lib.js');
35
- const apiKey = apiKeyOverride || (0, key_1.ReadKey)(options.host);
36
- const isProd = options.host === 'https://app.sentio.xyz';
37
- if (!apiKey) {
38
- const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host;
39
- console.error(chalk_1.default.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'));
40
- process.exit(1);
41
- }
42
- if (!fs_1.default.existsSync(PROCESSOR_FILE)) {
43
- console.error(chalk_1.default.red('File not existed ', PROCESSOR_FILE, "don't use --nobuild"));
44
- process.exit(1);
45
- }
46
- const stat = fs_1.default.statSync(PROCESSOR_FILE);
47
- console.log('Packed processor file size', Math.floor(stat.size / 1024) + 'K, last modified', stat.mtime);
48
- const content = fs_1.default.readFileSync(PROCESSOR_FILE);
49
- const hash = (0, crypto_1.createHash)('sha256');
50
- hash.update(content);
51
- const digest = hash.digest('hex');
52
- let triedCount = 0;
53
- const upload = async () => {
54
- let commitSha = '';
55
- let gitUrl = '';
56
- const sha256 = digest;
57
- try {
58
- commitSha = (0, child_process_1.execSync)('git rev-parse HEAD').toString().trim();
59
- }
60
- catch (e) {
61
- chalk_1.default.yellow(e);
62
- }
63
- try {
64
- gitUrl = (0, child_process_1.execSync)('git remote get-url origin').toString().trim();
65
- }
66
- catch (e) {
67
- // skip errors
68
- }
69
- console.log(chalk_1.default.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'));
70
- // get gcs upload url
71
- const initUploadResRaw = await initUpload(options.host, apiKey, options.project, (0, utils_1.getSdkVersion)());
72
- if (!initUploadResRaw.ok) {
73
- console.error(chalk_1.default.red('Failed to get upload url'));
74
- console.error(chalk_1.default.red((await initUploadResRaw.json()).message));
75
- if (initUploadResRaw.status === 404) {
76
- // create project if not exist
77
- const rl = readline_1.default.createInterface({
78
- input: process.stdin,
79
- output: process.stdout,
80
- });
81
- const prompt = async () => {
82
- const answer = await new Promise((resolve) => rl.question(`Do you want to create it and continue the uploading process? (yes/no) `, resolve));
83
- if (['y', 'yes'].includes(answer.toLowerCase())) {
84
- rl.close();
85
- const res = await createProject(options, apiKey);
86
- if (!res.ok) {
87
- console.error(chalk_1.default.red('Create Project Failed'));
88
- console.error(chalk_1.default.red((await res.json()).message));
89
- return;
90
- }
91
- console.log(chalk_1.default.green('Project created'));
92
- await upload();
93
- }
94
- else if (['n', 'no'].includes(answer.toLowerCase())) {
95
- rl.close();
96
- }
97
- else {
98
- await prompt();
99
- }
100
- };
101
- await prompt();
102
- }
103
- return;
104
- }
105
- const initUploadRes = await initUploadResRaw.json();
106
- const uploadUrl = initUploadRes['url'];
107
- // do actual uploading
108
- const file = fs_1.default.createReadStream(PROCESSOR_FILE);
109
- const uploadResRaw = await (0, node_fetch_1.default)(uploadUrl, {
110
- method: 'PUT',
111
- headers: {
112
- 'Content-Type': 'application/octet-stream',
113
- },
114
- body: file,
115
- });
116
- if (!uploadResRaw.ok) {
117
- console.error(chalk_1.default.red('Failed to upload'));
118
- console.error(chalk_1.default.red(await uploadResRaw.text()));
119
- return;
120
- }
121
- // finish uploading
122
- const finishUploadResRaw = await finishUpload(options.host, apiKey, options.project, (0, utils_1.getSdkVersion)(), sha256, commitSha, gitUrl, options.debug);
123
- if (!finishUploadResRaw.ok) {
124
- console.error(chalk_1.default.red('Failed to finish uploading'));
125
- console.error(chalk_1.default.red(await finishUploadResRaw.text()));
126
- return;
127
- }
128
- console.log(chalk_1.default.green('Upload success: '));
129
- console.log('\t', chalk_1.default.blue('sha256:'), digest);
130
- if (commitSha) {
131
- console.log('\t', chalk_1.default.blue('Git commit SHA:'), commitSha);
132
- }
133
- const { projectFullSlug } = await finishUploadResRaw.json();
134
- console.log('\t', chalk_1.default.blue('Check status:'), `${options.host}/${projectFullSlug}/datasource`);
135
- };
136
- let error;
137
- const tryUploading = async () => {
138
- if (triedCount++ >= 5) {
139
- console.error(error);
140
- return;
141
- }
142
- try {
143
- await upload();
144
- }
145
- catch (e) {
146
- if (e.constructor.name === 'FetchError' && e.type === 'system' && e.code === 'EPIPE') {
147
- error = e;
148
- await new Promise((resolve) => setTimeout(resolve, 1000));
149
- await tryUploading();
150
- }
151
- else {
152
- console.error(e);
153
- }
154
- }
155
- };
156
- await tryUploading();
157
- }
158
- exports.uploadFile = uploadFile;
159
- async function initUpload(host, apiKey, projectSlug, sdkVersion) {
160
- const initUploadUrl = new url_1.URL(`/api/v1/processors/init_upload`, host);
161
- return (0, node_fetch_1.default)(initUploadUrl, {
162
- method: 'POST',
163
- headers: {
164
- 'api-key': apiKey,
165
- },
166
- body: JSON.stringify({
167
- project_slug: projectSlug,
168
- sdk_version: sdkVersion,
169
- }),
170
- });
171
- }
172
- async function finishUpload(host, apiKey, projectSlug, sdkVersion, sha256, commitSha, gitUrl, debug) {
173
- const finishUploadUrl = new url_1.URL(`/api/v1/processors/finish_upload`, host);
174
- return (0, node_fetch_1.default)(finishUploadUrl, {
175
- method: 'POST',
176
- headers: {
177
- 'api-key': apiKey,
178
- },
179
- body: JSON.stringify({
180
- project_slug: projectSlug,
181
- sdk_version: sdkVersion,
182
- sha256: sha256,
183
- commit_sha: commitSha,
184
- git_url: gitUrl,
185
- debug: debug,
186
- }),
187
- });
188
- }
189
- //# sourceMappingURL=upload.js.map
package/lib/upload.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"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","sourcesContent":["import { execSync } from 'child_process'\nimport { createHash } from 'crypto'\nimport fs from 'fs'\nimport readline from 'readline'\nimport { SentioProjectConfig } from './config'\nimport { ReadKey } from './key'\nimport path from 'path'\nimport chalk from 'chalk'\nimport { buildProcessor } from './build'\nimport fetch from 'node-fetch'\nimport { getSdkVersion } from './utils'\nimport { URL } from 'url'\n\nasync function createProject(options: SentioProjectConfig, apiKey: string) {\n const url = new URL('/api/v1/projects', options.host)\n const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project]\n return fetch(url, {\n method: 'POST',\n headers: {\n 'api-key': apiKey,\n },\n body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),\n })\n}\n\nexport async function uploadFile(options: SentioProjectConfig, apiKeyOverride: string) {\n if (options.build) {\n await buildProcessor(false)\n }\n\n console.log(chalk.blue('Prepare to upload'))\n\n const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js')\n\n const apiKey = apiKeyOverride || ReadKey(options.host)\n\n const isProd = options.host === 'https://app.sentio.xyz'\n if (!apiKey) {\n const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host\n console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'))\n process.exit(1)\n }\n\n if (!fs.existsSync(PROCESSOR_FILE)) {\n console.error(chalk.red('File not existed ', PROCESSOR_FILE, \"don't use --nobuild\"))\n process.exit(1)\n }\n\n const stat = fs.statSync(PROCESSOR_FILE)\n console.log('Packed processor file size', Math.floor(stat.size / 1024) + 'K, last modified', stat.mtime)\n const content = fs.readFileSync(PROCESSOR_FILE)\n const hash = createHash('sha256')\n hash.update(content)\n const digest = hash.digest('hex')\n\n let triedCount = 0\n const upload = async () => {\n let commitSha = ''\n let gitUrl = ''\n const sha256 = digest\n try {\n commitSha = execSync('git rev-parse HEAD').toString().trim()\n } catch (e) {\n chalk.yellow(e)\n }\n try {\n gitUrl = execSync('git remote get-url origin').toString().trim()\n } catch (e) {\n // skip errors\n }\n console.log(chalk.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'))\n\n // get gcs upload url\n const initUploadResRaw = await initUpload(options.host, apiKey, options.project, getSdkVersion())\n if (!initUploadResRaw.ok) {\n console.error(chalk.red('Failed to get upload url'))\n console.error(chalk.red((await initUploadResRaw.json()).message))\n\n if (initUploadResRaw.status === 404) {\n // create project if not exist\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n const prompt = async () => {\n const answer: string = await new Promise((resolve) =>\n rl.question(`Do you want to create it and continue the uploading process? (yes/no) `, resolve)\n )\n if (['y', 'yes'].includes(answer.toLowerCase())) {\n rl.close()\n const res = await createProject(options, apiKey)\n if (!res.ok) {\n console.error(chalk.red('Create Project Failed'))\n console.error(chalk.red((await res.json()).message))\n return\n }\n console.log(chalk.green('Project created'))\n await upload()\n } else if (['n', 'no'].includes(answer.toLowerCase())) {\n rl.close()\n } else {\n await prompt()\n }\n }\n await prompt()\n }\n return\n }\n const initUploadRes = await initUploadResRaw.json()\n const uploadUrl = initUploadRes['url'] as string\n\n // do actual uploading\n const file = fs.createReadStream(PROCESSOR_FILE)\n const uploadResRaw = await fetch(uploadUrl, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/octet-stream',\n },\n body: file,\n })\n if (!uploadResRaw.ok) {\n console.error(chalk.red('Failed to upload'))\n console.error(chalk.red(await uploadResRaw.text()))\n return\n }\n\n // finish uploading\n const finishUploadResRaw = await finishUpload(\n options.host,\n apiKey,\n options.project,\n getSdkVersion(),\n sha256,\n commitSha,\n gitUrl,\n options.debug\n )\n if (!finishUploadResRaw.ok) {\n console.error(chalk.red('Failed to finish uploading'))\n console.error(chalk.red(await finishUploadResRaw.text()))\n return\n }\n\n console.log(chalk.green('Upload success: '))\n console.log('\\t', chalk.blue('sha256:'), digest)\n if (commitSha) {\n console.log('\\t', chalk.blue('Git commit SHA:'), commitSha)\n }\n const { projectFullSlug } = await finishUploadResRaw.json()\n console.log('\\t', chalk.blue('Check status:'), `${options.host}/${projectFullSlug}/datasource`)\n }\n\n let error: Error\n const tryUploading = async () => {\n if (triedCount++ >= 5) {\n console.error(error)\n return\n }\n try {\n await upload()\n } catch (e) {\n if (e.constructor.name === 'FetchError' && e.type === 'system' && e.code === 'EPIPE') {\n error = e\n await new Promise((resolve) => setTimeout(resolve, 1000))\n await tryUploading()\n } else {\n console.error(e)\n }\n }\n }\n\n await tryUploading()\n}\n\nasync function initUpload(host: string, apiKey: string, projectSlug: string, sdkVersion: string) {\n const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host)\n return fetch(initUploadUrl, {\n method: 'POST',\n headers: {\n 'api-key': apiKey,\n },\n body: JSON.stringify({\n project_slug: projectSlug,\n sdk_version: sdkVersion,\n }),\n })\n}\n\nasync function finishUpload(\n host: string,\n apiKey: string,\n projectSlug: string,\n sdkVersion: string,\n sha256: string,\n commitSha: string,\n gitUrl: string,\n debug: boolean\n) {\n const finishUploadUrl = new URL(`/api/v1/processors/finish_upload`, host)\n return fetch(finishUploadUrl, {\n method: 'POST',\n headers: {\n 'api-key': apiKey,\n },\n body: JSON.stringify({\n project_slug: projectSlug,\n sdk_version: sdkVersion,\n sha256: sha256,\n commit_sha: commitSha,\n git_url: gitUrl,\n debug: debug,\n }),\n })\n}\n"]}
package/lib/utils.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function getCliVersion(): any;
2
- export declare function getSdkVersion(): any;
package/lib/utils.js DELETED
@@ -1,28 +0,0 @@
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.getSdkVersion = exports.getCliVersion = void 0;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
8
- const path_1 = __importDefault(require("path"));
9
- function getCliVersion() {
10
- const packageJsonPath = path_1.default.resolve(__dirname, '../package.json');
11
- const packageJsonContent = fs_extra_1.default.readFileSync(packageJsonPath, 'utf-8');
12
- const packageJson = JSON.parse(packageJsonContent);
13
- return packageJson.version;
14
- }
15
- exports.getCliVersion = getCliVersion;
16
- function getSdkVersion() {
17
- try {
18
- const packageJsonPath = require.resolve('@sentio/sdk/package.json');
19
- const packageJsonContent = fs_extra_1.default.readFileSync(packageJsonPath, 'utf-8');
20
- const packageJson = JSON.parse(packageJsonContent);
21
- return packageJson.version;
22
- }
23
- catch (e) {
24
- return undefined;
25
- }
26
- }
27
- exports.getSdkVersion = getSdkVersion;
28
- //# sourceMappingURL=utils.js.map
package/lib/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAyB;AACzB,gDAAuB;AAEvB,SAAgB,aAAa;IAC3B,MAAM,eAAe,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAClE,MAAM,kBAAkB,GAAG,kBAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAElD,OAAO,WAAW,CAAC,OAAO,CAAA;AAC5B,CAAC;AAND,sCAMC;AAED,SAAgB,aAAa;IAC3B,IAAI;QACF,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAA;QACnE,MAAM,kBAAkB,GAAG,kBAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAClD,OAAO,WAAW,CAAC,OAAO,CAAA;KAC3B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,SAAS,CAAA;KACjB;AACH,CAAC;AATD,sCASC","sourcesContent":["import fs from 'fs-extra'\nimport path from 'path'\n\nexport function getCliVersion() {\n const packageJsonPath = path.resolve(__dirname, '../package.json')\n const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8')\n const packageJson = JSON.parse(packageJsonContent)\n\n return packageJson.version\n}\n\nexport function getSdkVersion() {\n try {\n const packageJsonPath = require.resolve('@sentio/sdk/package.json')\n const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8')\n const packageJson = JSON.parse(packageJsonContent)\n return packageJson.version\n } catch (e) {\n return undefined\n }\n}\n"]}
@@ -1,50 +0,0 @@
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
- protobufjs: 'commonjs2 protobufjs',
30
- aptos: 'commonjs2 aptos-sdk',
31
- ethers: 'commonjs2 ethers',
32
- bs58: 'commonjs2 bs58',
33
- "bignumber.js": 'commonjs2 bignumber.js',
34
- 'bn.js': 'commonjs2 bn.js',
35
- 'csv-parse': 'commonjs2 csv-parse',
36
- },
37
- function ({ context, request }, callback) {
38
- if (/^@(ethersproject|solana|project-serum|nice-grpc).*$/.test(request)) {
39
- return callback(null, 'commonjs ' + request)
40
- }
41
- if (/^nice-grpc.*$/.test(request)) {
42
- return callback(null, 'commonjs ' + request)
43
- }
44
- if (/^@sentio\/(sdk|runtime|base|protos).*$/.test(request)) {
45
- return callback(null, 'commonjs ' + request)
46
- }
47
- callback()
48
- },
49
- ],
50
- }
package/src/build.ts DELETED
@@ -1,99 +0,0 @@
1
- import chalk from 'chalk'
2
- import path from 'path'
3
- import fs from 'fs'
4
- import { exec } from 'child_process'
5
-
6
- export async function buildProcessor(onlyGen: boolean) {
7
- if (!onlyGen) {
8
- await installDeps()
9
- }
10
-
11
- // targets.forEach(async (target) => await buildProcessorForTarget(onlyGen, target))
12
- // for (const target) {
13
- await buildProcessorForTarget(onlyGen)
14
- // }
15
-
16
- if (!onlyGen) {
17
- const WEBPACK_CONFIG = path.join(__dirname, 'webpack.config.js')
18
- await execStep('yarn tsc -p .', 'Compile')
19
- await execStep('yarn webpack --config=' + WEBPACK_CONFIG, 'Packaging')
20
- }
21
- }
22
-
23
- async function buildProcessorForTarget(onlyGen: boolean) {
24
- await codeGenEthersProcessor(path.join('abis', 'evm'))
25
-
26
- try {
27
- // eslint-disable-next-line @typescript-eslint/no-var-requires
28
- const solanaModule = require('@sentio/sdk-solana/lib/codegen/codegen')
29
- solanaModule.codeGenSolanaProcessor(path.join('abis', 'solana'))
30
- } catch (e) {}
31
-
32
- try {
33
- // eslint-disable-next-line @typescript-eslint/no-var-requires
34
- const aptosModuole = require('@sentio/sdk-aptos/lib/codegen/codegen')
35
- aptosModuole.codeGenAptosProcessor(path.join('abis', 'aptos'))
36
- } catch (e) {}
37
-
38
- if (onlyGen) {
39
- return
40
- }
41
- }
42
-
43
- async function installDeps() {
44
- await execStep('yarn install --ignore-scripts', 'Yarn Install')
45
- }
46
-
47
- export async function codeGenEthersProcessor(
48
- abisDir: string,
49
- ETHERS_TARGET = path.dirname(require.resolve('@sentio/sdk/lib/target-ethers-sentio')),
50
- outDir = 'src/types/internal'
51
- ) {
52
- if (!fs.existsSync(abisDir)) {
53
- return
54
- }
55
-
56
- let haveJson = false
57
- const files = fs.readdirSync(abisDir)
58
- for (const file of files) {
59
- if (file.toLowerCase().endsWith('.json')) {
60
- haveJson = true
61
- break
62
- }
63
- }
64
- if (!haveJson) {
65
- return
66
- }
67
-
68
- console.log(chalk.green('Generated Types for EVM'))
69
-
70
- // TODO this will fail during postinstall, need to locate real typechain path
71
- await execStep(
72
- 'yarn typechain --target ' + ETHERS_TARGET + ` --out-dir ${outDir} ${path.join(abisDir, '*.json')}`,
73
- 'Type definitions gen'
74
- )
75
- }
76
-
77
- async function execStep(cmd: string, stepName: string) {
78
- const child = exec(cmd)
79
- console.log(chalk.blue(stepName + ' begin'))
80
-
81
- if (!child.stdout || !child.stderr) {
82
- console.error(chalk.red(stepName + ' failed'))
83
- process.exit(1)
84
- }
85
-
86
- child.stdout.pipe(process.stdout)
87
- child.stderr.pipe(process.stderr)
88
-
89
- await new Promise((resolve) => {
90
- child.on('close', resolve)
91
- })
92
-
93
- if (child.exitCode) {
94
- console.error(chalk.red(stepName + ' failed'))
95
- process.exit(child.exitCode)
96
- }
97
- console.log(chalk.blue(stepName + ' success'))
98
- console.log()
99
- }
package/src/cli.ts DELETED
@@ -1,184 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import commandLineArgs from 'command-line-args'
4
- import commandLineUsage from 'command-line-usage'
5
- import fs from 'fs'
6
- import path from 'path'
7
-
8
- import yaml from 'js-yaml'
9
- import { finalizeHost, FinalizeProjectName, SentioProjectConfig } from './config'
10
- import { uploadFile } from './upload'
11
- import chalk from 'chalk'
12
- import { buildProcessor } from './build'
13
- import { runCreate } from './commands/run-create'
14
- import { runVersion } from './commands/run-version'
15
- import { runLogin } from './commands/run-login'
16
-
17
- const mainDefinitions = [{ name: 'command', defaultOption: true }]
18
- const mainOptions = commandLineArgs(mainDefinitions, {
19
- stopAtFirstUnknown: true,
20
- })
21
- const argv = mainOptions._unknown || []
22
-
23
- if (!mainOptions.command) {
24
- usage()
25
- }
26
-
27
- if (mainOptions.command === 'login') {
28
- runLogin(argv)
29
- } else if (mainOptions.command === 'create') {
30
- runCreate(argv)
31
- } else if (mainOptions.command === 'version') {
32
- runVersion(argv)
33
- } else {
34
- // For all the commands that need read project configs
35
- // TODO move them to their own modules
36
-
37
- // Process configs
38
- let processorConfig: SentioProjectConfig = { host: '', project: '', build: true, debug: false }
39
- // Fist step, read from project yaml file
40
- try {
41
- console.log(chalk.blue('Loading Process config'))
42
- // TODO correctly located sentio.yaml
43
- const pwd = process.cwd()
44
- const packageJson = path.join(pwd, 'package.json')
45
- if (!fs.existsSync(packageJson)) {
46
- console.error('package.json not found, please run this command in the root of your project')
47
- process.exit(1)
48
- }
49
-
50
- const yamlPath = path.join(pwd, 'sentio.yaml')
51
- if (!fs.existsSync(yamlPath)) {
52
- console.error('sentio.yaml not found, please create one according to: TODO docs')
53
- process.exit(1)
54
- }
55
-
56
- processorConfig = yaml.load(fs.readFileSync('sentio.yaml', 'utf8')) as SentioProjectConfig
57
- if (!processorConfig.project === undefined) {
58
- console.error('Config yaml must have contain a valid project identifier')
59
- process.exit(1)
60
- }
61
- if (processorConfig.build === undefined) {
62
- processorConfig.build = true
63
- }
64
- if (!processorConfig.host) {
65
- processorConfig.host = 'prod'
66
- }
67
- if (processorConfig.debug === undefined) {
68
- processorConfig.debug = false
69
- }
70
-
71
- // if (!processorConfig.source) {
72
- // processorConfig.source = 'src/processor.ts'
73
- // }
74
- // if (!processorConfig.targets) {
75
- // console.warn('targets is not defined, use EVM as the default target')
76
- // processorConfig.targets = []
77
- // }
78
- // if (processorConfig.targets.length === 0) {
79
- // // By default evm
80
- // processorConfig.targets.push({ chain: EVM })
81
- // }
82
- } catch (e) {
83
- console.error(e)
84
- process.exit(1)
85
- }
86
-
87
- if (mainOptions.command === 'upload') {
88
- const optionDefinitions = [
89
- {
90
- name: 'help',
91
- alias: 'h',
92
- type: Boolean,
93
- description: 'Display this usage guide.',
94
- },
95
- {
96
- name: 'api-key',
97
- type: String,
98
- description: '(Optional) Manually provide API key rather than use saved credential',
99
- },
100
- {
101
- name: 'host',
102
- description: '(Optional) Override Sentio Host name',
103
- type: String,
104
- },
105
- {
106
- name: 'owner',
107
- description: '(Optional) Override Project owner',
108
- type: String,
109
- },
110
- {
111
- name: 'nobuild',
112
- description: '(Optional) Skip build & pack file before uploading, default false',
113
- type: Boolean,
114
- },
115
- {
116
- name: 'debug',
117
- description: '(Optional) Set driver logging level to debug',
118
- type: Boolean,
119
- },
120
- ]
121
- const options = commandLineArgs(optionDefinitions, { argv })
122
- if (options.help) {
123
- const usage = commandLineUsage([
124
- {
125
- header: 'Sentio upload',
126
- content: 'sentio upload',
127
- },
128
- {
129
- header: 'Options',
130
- optionList: optionDefinitions,
131
- },
132
- ])
133
- console.log(usage)
134
- } else {
135
- if (options.host) {
136
- processorConfig.host = options.host
137
- }
138
- if (options.nobuild) {
139
- processorConfig.build = false
140
- }
141
- if (options.debug) {
142
- processorConfig.debug = true
143
- }
144
- finalizeHost(processorConfig)
145
- FinalizeProjectName(processorConfig, options.owner)
146
- console.log(processorConfig)
147
-
148
- let apiOverride = undefined
149
- if (options['api-key']) {
150
- apiOverride = options['api-key']
151
- }
152
- uploadFile(processorConfig, apiOverride)
153
- }
154
- } else if (mainOptions.command === 'build') {
155
- buildProcessor(false)
156
- } else if (mainOptions.command === 'gen') {
157
- buildProcessor(true)
158
- } else {
159
- usage()
160
- }
161
- }
162
-
163
- function usage() {
164
- const usage = commandLineUsage([
165
- {
166
- header: 'Sentio',
167
- content: 'Login & Manage your project files to Sentio.',
168
- },
169
- {
170
- header: 'Usage',
171
- content: [
172
- 'sentio <command> --help\t\tshow detail usage of specific command',
173
- 'sentio login\t\t\t\tlogin to sentio',
174
- 'sentio create\t\t\t\tcreate a template project',
175
- 'sentio upload\t\t\t\tbuild and upload processor to sentio',
176
- 'sentio gen\t\t\t\tgenerate abi',
177
- 'sentio build\t\t\t\tgenerate abi and build',
178
- 'sentio version\t\t\tcurrent cli version',
179
- ],
180
- },
181
- ])
182
- console.log(usage)
183
- process.exit(1)
184
- }