@sentio/sdk 1.26.4 → 1.27.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.startServer = void 0;
30
+ const express_1 = __importDefault(require("express"));
31
+ const config_1 = require("../config");
32
+ const url_1 = __importStar(require("url"));
33
+ const node_fetch_1 = __importDefault(require("node-fetch"));
34
+ const utils_1 = require("../utils");
35
+ const key_1 = require("../key");
36
+ const chalk_1 = __importDefault(require("chalk"));
37
+ const os_1 = __importDefault(require("os"));
38
+ const crypto = __importStar(require("crypto"));
39
+ const app = (0, express_1.default)();
40
+ let server;
41
+ let authParams;
42
+ function startServer(params) {
43
+ authParams = params;
44
+ server = app.listen(params.serverPort);
45
+ }
46
+ exports.startServer = startServer;
47
+ app.get('/callback', async (req, res) => {
48
+ res.end('login success, please go back to CLI to continue');
49
+ const host = authParams.sentioHost;
50
+ const code = req.query.code;
51
+ if (!code || code.length == 0) {
52
+ return;
53
+ }
54
+ // exchange token
55
+ const tokenResRaw = await getToken(host, code);
56
+ if (!tokenResRaw.ok) {
57
+ console.error(chalk_1.default.red('request token error, code:', tokenResRaw.status, tokenResRaw.statusText));
58
+ return;
59
+ }
60
+ const tokenRes = await tokenResRaw.json();
61
+ const accessToken = tokenRes['access_token'];
62
+ // check if the account is ready
63
+ const realHost = (0, config_1.getFinalizedHost)(host);
64
+ const userResRaw = await getUser(realHost, accessToken);
65
+ if (!userResRaw.ok) {
66
+ if (userResRaw.status == 401) {
67
+ console.error(chalk_1.default.red('please sign up on sentio first'));
68
+ }
69
+ else {
70
+ console.error(chalk_1.default.red('get user error, code:', userResRaw.status, userResRaw.statusText));
71
+ }
72
+ return;
73
+ }
74
+ const userRes = await userResRaw.json();
75
+ if (!userRes.emailVerified) {
76
+ console.error(chalk_1.default.red('please verify your email first'));
77
+ return;
78
+ }
79
+ // create API key
80
+ const apiKeyName = `${os_1.default.hostname()}-${crypto.randomBytes(4).toString('hex')}`;
81
+ const createApiKeyResRaw = await createApiKey(realHost, apiKeyName, 'sdk_generated', accessToken);
82
+ if (!createApiKeyResRaw.ok) {
83
+ console.error(chalk_1.default.red('create api key error, code:', createApiKeyResRaw.status, createApiKeyResRaw.statusText));
84
+ return;
85
+ }
86
+ const createApiKeyRes = await createApiKeyResRaw.json();
87
+ const apiKey = createApiKeyRes['key'];
88
+ (0, key_1.WriteKey)(realHost, apiKey);
89
+ console.log(chalk_1.default.green('login success, new API key: ' + apiKey));
90
+ server.close();
91
+ });
92
+ async function getToken(host, code) {
93
+ const authConf = (0, config_1.getAuthConfig)(host);
94
+ const params = new url_1.default.URLSearchParams({
95
+ grant_type: 'authorization_code',
96
+ client_id: authConf.clientId,
97
+ code_verifier: authParams.codeVerifier,
98
+ code: code,
99
+ redirect_uri: `http://localhost:${authParams.serverPort}/callback`,
100
+ });
101
+ return (0, node_fetch_1.default)(`${authConf.domain}/oauth/token`, {
102
+ method: 'POST',
103
+ headers: {
104
+ 'Content-Type': 'application/x-www-form-urlencoded',
105
+ },
106
+ body: params.toString(),
107
+ });
108
+ }
109
+ async function createApiKey(host, name, source, accessToken) {
110
+ const createApiKeyUrl = new url_1.URL('/api/v1/keys', host);
111
+ return (0, node_fetch_1.default)(createApiKeyUrl, {
112
+ method: 'POST',
113
+ headers: {
114
+ Authorization: 'Bearer ' + accessToken,
115
+ version: (0, utils_1.getCliVersion)(),
116
+ },
117
+ body: JSON.stringify({
118
+ name: name,
119
+ scopes: ['write:project'],
120
+ source: source,
121
+ }),
122
+ });
123
+ }
124
+ async function getUser(host, accessToken) {
125
+ const getUserUrl = new url_1.URL('/api/v1/users', host);
126
+ return (0, node_fetch_1.default)(getUserUrl, {
127
+ method: 'GET',
128
+ headers: {
129
+ Authorization: 'Bearer ' + accessToken,
130
+ version: (0, utils_1.getCliVersion)(),
131
+ },
132
+ });
133
+ }
134
+ //# sourceMappingURL=login-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-server.js","sourceRoot":"","sources":["../../../src/cli/commands/login-server.ts"],"names":[],"mappings":"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","sourcesContent":["import express from 'express'\nimport { getAuthConfig, getFinalizedHost } from '../config'\nimport url, { URL } from 'url'\nimport fetch from 'node-fetch'\nimport { getCliVersion } from '../utils'\nimport { WriteKey } from '../key'\nimport chalk from 'chalk'\nimport http from 'http'\nimport os from 'os'\nimport * as crypto from 'crypto'\n\ninterface AuthParams {\n serverPort: number\n sentioHost: string\n codeVerifier: string\n}\n\nconst app = express()\n\nlet server: http.Server\nlet authParams: AuthParams\n\nexport function startServer(params: AuthParams) {\n authParams = params\n server = app.listen(params.serverPort)\n}\n\napp.get('/callback', async (req, res) => {\n res.end('login success, please go back to CLI to continue')\n const host = authParams.sentioHost\n const code = req.query.code\n if (!code || (code as string).length == 0) {\n return\n }\n\n // exchange token\n const tokenResRaw = await getToken(host, code as string)\n if (!tokenResRaw.ok) {\n console.error(chalk.red('request token error, code:', tokenResRaw.status, tokenResRaw.statusText))\n return\n }\n const tokenRes = await tokenResRaw.json()\n const accessToken = tokenRes['access_token']\n\n // check if the account is ready\n const realHost = getFinalizedHost(host)\n const userResRaw = await getUser(realHost, accessToken)\n if (!userResRaw.ok) {\n if (userResRaw.status == 401) {\n console.error(chalk.red('please sign up on sentio first'))\n } else {\n console.error(chalk.red('get user error, code:', userResRaw.status, userResRaw.statusText))\n }\n return\n }\n const userRes = await userResRaw.json()\n if (!userRes.emailVerified) {\n console.error(chalk.red('please verify your email first'))\n return\n }\n\n // create API key\n const apiKeyName = `${os.hostname()}-${crypto.randomBytes(4).toString('hex')}`\n const createApiKeyResRaw = await createApiKey(realHost, apiKeyName, 'sdk_generated', accessToken)\n if (!createApiKeyResRaw.ok) {\n console.error(chalk.red('create api key error, code:', createApiKeyResRaw.status, createApiKeyResRaw.statusText))\n return\n }\n const createApiKeyRes = await createApiKeyResRaw.json()\n const apiKey = createApiKeyRes['key']\n WriteKey(realHost, apiKey)\n console.log(chalk.green('login success, new API key: ' + apiKey))\n\n server.close()\n})\n\nasync function getToken(host: string, code: string) {\n const authConf = getAuthConfig(host)\n const params = new url.URLSearchParams({\n grant_type: 'authorization_code',\n client_id: authConf.clientId,\n code_verifier: authParams.codeVerifier,\n code: code,\n redirect_uri: `http://localhost:${authParams.serverPort}/callback`,\n })\n return fetch(`${authConf.domain}/oauth/token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n })\n}\n\nasync function createApiKey(host: string, name: string, source: string, accessToken: string) {\n const createApiKeyUrl = new URL('/api/v1/keys', host)\n return fetch(createApiKeyUrl, {\n method: 'POST',\n headers: {\n Authorization: 'Bearer ' + accessToken,\n version: getCliVersion(),\n },\n body: JSON.stringify({\n name: name,\n scopes: ['write:project'],\n source: source,\n }),\n })\n}\n\nasync function getUser(host: string, accessToken: string) {\n const getUserUrl = new URL('/api/v1/users', host)\n return fetch(getUserUrl, {\n method: 'GET',\n headers: {\n Authorization: 'Bearer ' + accessToken,\n version: getCliVersion(),\n },\n })\n}\n"]}
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -7,10 +30,13 @@ exports.runLogin = void 0;
7
30
  const command_line_args_1 = __importDefault(require("command-line-args"));
8
31
  const command_line_usage_1 = __importDefault(require("command-line-usage"));
9
32
  const config_1 = require("../config");
33
+ const login_server_1 = require("./login-server");
34
+ const url_1 = __importStar(require("url"));
35
+ const crypto = __importStar(require("crypto"));
10
36
  const chalk_1 = __importDefault(require("chalk"));
11
- const https_1 = __importDefault(require("https"));
12
- const http_1 = __importDefault(require("http"));
13
37
  const key_1 = require("../key");
38
+ const node_fetch_1 = __importDefault(require("node-fetch"));
39
+ const port = 20000;
14
40
  function runLogin(argv) {
15
41
  const optionDefinitions = [
16
42
  {
@@ -20,22 +46,22 @@ function runLogin(argv) {
20
46
  description: 'Display this usage guide.',
21
47
  },
22
48
  {
23
- name: 'api-key',
49
+ name: 'host',
50
+ description: '(Optional) Override Sentio Host name',
24
51
  type: String,
25
- description: '(Required) Your API key',
26
52
  },
27
53
  {
28
- name: 'host',
29
- description: '(Optional) Override Sentio Host name',
54
+ name: 'api-key',
30
55
  type: String,
56
+ description: '(Optional) Your API key',
31
57
  },
32
58
  ];
33
59
  const options = (0, command_line_args_1.default)(optionDefinitions, { argv });
34
- if (options.help || !options['api-key']) {
60
+ if (options.help) {
35
61
  const usage = (0, command_line_usage_1.default)([
36
62
  {
37
63
  header: 'Login to Sentio',
38
- content: 'sentio login --api-key=<key>',
64
+ content: 'sentio login',
39
65
  },
40
66
  {
41
67
  header: 'Options',
@@ -44,34 +70,58 @@ function runLogin(argv) {
44
70
  ]);
45
71
  console.log(usage);
46
72
  }
47
- else {
73
+ else if (options['api-key']) {
48
74
  const host = (0, config_1.getFinalizedHost)(options.host);
49
75
  console.log(chalk_1.default.blue('login to ' + host));
50
- const url = new URL(host);
51
- const reqOptions = {
52
- hostname: url.hostname,
53
- port: url.port,
54
- path: '/api/v1/processors/check_key',
55
- method: 'HEAD',
56
- headers: {
57
- 'api-key': options['api-key'],
58
- },
59
- };
60
- const h = url.protocol == 'https:' ? https_1.default : http_1.default;
61
- const req = h.request(reqOptions, (res) => {
62
- if (res.statusCode == 200) {
63
- (0, key_1.WriteKey)(host, options['api-key']);
76
+ const apiKey = options['api-key'];
77
+ checkKey(host, apiKey).then((res) => {
78
+ if (res.status == 200) {
79
+ (0, key_1.WriteKey)(host, apiKey);
64
80
  console.log(chalk_1.default.green('login success'));
65
81
  }
66
82
  else {
67
- console.error(chalk_1.default.red('login failed, code:', res.statusCode, res.statusMessage));
83
+ console.error(chalk_1.default.red('login failed, code:', res.status, res.statusText));
68
84
  }
69
85
  });
70
- req.on('error', (error) => {
71
- console.error(error);
86
+ }
87
+ else {
88
+ // https://auth0.com/docs/get-started/authentication-and-authorization-flow/call-your-api-using-the-authorization-code-flow-with-pkce
89
+ const verifier = base64URLEncode(crypto.randomBytes(32));
90
+ const challenge = base64URLEncode(sha256(verifier));
91
+ const conf = (0, config_1.getAuthConfig)(options.host);
92
+ const authURL = new url_1.URL(conf.domain + `/authorize?`);
93
+ const params = new url_1.default.URLSearchParams({
94
+ response_type: 'code',
95
+ code_challenge: challenge,
96
+ code_challenge_method: 'S256',
97
+ client_id: conf.clientId,
98
+ redirect_uri: `http://localhost:${port}/callback`,
99
+ audience: conf.audience,
100
+ prompt: 'login',
101
+ });
102
+ authURL.search = params.toString();
103
+ console.log('Continue your authorization here: ' + authURL.toString());
104
+ (0, login_server_1.startServer)({
105
+ serverPort: port,
106
+ sentioHost: options.host,
107
+ codeVerifier: verifier,
72
108
  });
73
- req.end();
74
109
  }
75
110
  }
76
111
  exports.runLogin = runLogin;
112
+ function base64URLEncode(str) {
113
+ return str.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
114
+ }
115
+ function sha256(str) {
116
+ return crypto.createHash('sha256').update(str).digest();
117
+ }
118
+ async function checkKey(host, apiKey) {
119
+ const checkApiKeyUrl = new url_1.URL('/api/v1/processors/check_key', host);
120
+ return (0, node_fetch_1.default)(checkApiKeyUrl, {
121
+ method: 'HEAD',
122
+ headers: {
123
+ 'api-key': apiKey,
124
+ },
125
+ });
126
+ }
77
127
  //# sourceMappingURL=run-login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-login.js","sourceRoot":"","sources":["../../../src/cli/commands/run-login.ts"],"names":[],"mappings":";;;;;;AAAA,0EAA+C;AAC/C,4EAAiD;AACjD,sCAA4C;AAC5C,kDAAyB;AACzB,kDAAyB;AACzB,gDAAuB;AACvB,gCAAiC;AAEjC,SAAgB,QAAQ,CAAC,IAAc;IACrC,MAAM,iBAAiB,GAAG;QACxB;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,2BAA2B;SACzC;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,yBAAyB;SACvC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,sCAAsC;YACnD,IAAI,EAAE,MAAM;SACb;KACF,CAAA;IACD,MAAM,OAAO,GAAG,IAAA,2BAAe,EAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAE5D,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACvC,MAAM,KAAK,GAAG,IAAA,4BAAgB,EAAC;YAC7B;gBACE,MAAM,EAAE,iBAAiB;gBACzB,OAAO,EAAE,8BAA8B;aACxC;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,iBAAiB;aAC9B;SACF,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KACnB;SAAM;QACL,MAAM,IAAI,GAAG,IAAA,yBAAgB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;aAC9B;SACF,CAAA;QACD,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,cAAI,CAAA;QACjD,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE;gBACzB,IAAA,cAAQ,EAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;aAC1C;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;aACnF;QACH,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,GAAG,EAAE,CAAA;KACV;AACH,CAAC;AA7DD,4BA6DC","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport { getFinalizedHost } from '../config'\nimport chalk from 'chalk'\nimport https from 'https'\nimport http from 'http'\nimport { WriteKey } from '../key'\n\nexport function runLogin(argv: string[]) {\n const optionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'api-key',\n type: String,\n description: '(Required) Your API key',\n },\n {\n name: 'host',\n description: '(Optional) Override Sentio Host name',\n type: String,\n },\n ]\n const options = commandLineArgs(optionDefinitions, { argv })\n\n if (options.help || !options['api-key']) {\n const usage = commandLineUsage([\n {\n header: 'Login to Sentio',\n content: 'sentio login --api-key=<key>',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n console.log(usage)\n } else {\n const host = getFinalizedHost(options.host)\n console.log(chalk.blue('login to ' + host))\n const url = new URL(host)\n const reqOptions = {\n hostname: url.hostname,\n port: url.port,\n path: '/api/v1/processors/check_key',\n method: 'HEAD',\n headers: {\n 'api-key': options['api-key'],\n },\n }\n const h = url.protocol == 'https:' ? https : http\n const req = h.request(reqOptions, (res) => {\n if (res.statusCode == 200) {\n WriteKey(host, options['api-key'])\n console.log(chalk.green('login success'))\n } else {\n console.error(chalk.red('login failed, code:', res.statusCode, res.statusMessage))\n }\n })\n\n req.on('error', (error) => {\n console.error(error)\n })\n req.end()\n }\n}\n"]}
1
+ {"version":3,"file":"run-login.js","sourceRoot":"","sources":["../../../src/cli/commands/run-login.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport { getAuthConfig, getFinalizedHost } from '../config'\nimport { startServer } from './login-server'\nimport url, { URL } from 'url'\nimport * as crypto from 'crypto'\nimport chalk from 'chalk'\nimport { WriteKey } from '../key'\nimport fetch from 'node-fetch'\n\nconst port = 20000\n\nexport function runLogin(argv: string[]) {\n const optionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'host',\n description: '(Optional) Override Sentio Host name',\n type: String,\n },\n {\n name: 'api-key',\n type: String,\n description: '(Optional) Your API key',\n },\n ]\n const options = commandLineArgs(optionDefinitions, { argv })\n\n if (options.help) {\n const usage = commandLineUsage([\n {\n header: 'Login to Sentio',\n content: 'sentio login',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n console.log(usage)\n } else if (options['api-key']) {\n const host = getFinalizedHost(options.host)\n console.log(chalk.blue('login to ' + host))\n const apiKey = options['api-key']\n checkKey(host, apiKey).then((res) => {\n if (res.status == 200) {\n WriteKey(host, apiKey)\n console.log(chalk.green('login success'))\n } else {\n console.error(chalk.red('login failed, code:', res.status, res.statusText))\n }\n })\n } else {\n // https://auth0.com/docs/get-started/authentication-and-authorization-flow/call-your-api-using-the-authorization-code-flow-with-pkce\n const verifier = base64URLEncode(crypto.randomBytes(32))\n const challenge = base64URLEncode(sha256(verifier))\n\n const conf = getAuthConfig(options.host)\n const authURL = new URL(conf.domain + `/authorize?`)\n const params = new url.URLSearchParams({\n response_type: 'code',\n code_challenge: challenge,\n code_challenge_method: 'S256',\n client_id: conf.clientId,\n redirect_uri: `http://localhost:${port}/callback`,\n audience: conf.audience,\n prompt: 'login',\n })\n authURL.search = params.toString()\n console.log('Continue your authorization here: ' + authURL.toString())\n\n startServer({\n serverPort: port,\n sentioHost: options.host,\n codeVerifier: verifier,\n })\n }\n}\n\nfunction base64URLEncode(str: Buffer) {\n return str.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n}\n\nfunction sha256(str: string) {\n return crypto.createHash('sha256').update(str).digest()\n}\n\nasync function checkKey(host: string, apiKey: string) {\n const checkApiKeyUrl = new URL('/api/v1/processors/check_key', host)\n return fetch(checkApiKeyUrl, {\n method: 'HEAD',\n headers: {\n 'api-key': apiKey,\n },\n })\n}\n"]}
@@ -4,5 +4,10 @@ export interface SentioProjectConfig {
4
4
  build: boolean;
5
5
  }
6
6
  export declare function getFinalizedHost(host: string): string;
7
+ export declare function getAuthConfig(host: string): {
8
+ domain: string;
9
+ clientId: string;
10
+ audience: string;
11
+ };
7
12
  export declare function finalizeHost(config: SentioProjectConfig): void;
8
13
  export declare function FinalizeProjectName(config: SentioProjectConfig, owner: string | undefined): void;
package/lib/cli/config.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FinalizeProjectName = exports.finalizeHost = exports.getFinalizedHost = void 0;
3
+ exports.FinalizeProjectName = exports.finalizeHost = exports.getAuthConfig = exports.getFinalizedHost = void 0;
4
4
  function getFinalizedHost(host) {
5
5
  switch (host) {
6
6
  case undefined:
@@ -17,6 +17,33 @@ function getFinalizedHost(host) {
17
17
  return host;
18
18
  }
19
19
  exports.getFinalizedHost = getFinalizedHost;
20
+ function getAuthConfig(host) {
21
+ let domain = '', clientId = '', audience = '';
22
+ switch (host) {
23
+ case 'local':
24
+ domain = 'https://sentio-dev.us.auth0.com';
25
+ clientId = 'qGDisObqQbcPeRA8k02POPZ2Df4KVCna';
26
+ audience = 'http://localhost:8080/v1';
27
+ break;
28
+ case '':
29
+ case undefined:
30
+ case 'prod':
31
+ domain = 'https://auth.sentio.xyz';
32
+ clientId = 'xd80PeuvuZVHpBFh7yEdlSZdtE5mTpGe';
33
+ audience = 'https://app.sentio.xyz/api/v1';
34
+ break;
35
+ case 'test':
36
+ case 'staging':
37
+ domain = 'https://auth.test.sentio.xyz';
38
+ clientId = 'qXVvovHaOE37SndxTZJxCKgZjw1axPax';
39
+ audience = 'https://test.sentio.xyz/api/v1';
40
+ break;
41
+ default:
42
+ break;
43
+ }
44
+ return { domain, clientId, audience };
45
+ }
46
+ exports.getAuthConfig = getAuthConfig;
20
47
  function finalizeHost(config) {
21
48
  config.host = getFinalizedHost(config.host);
22
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;AAQA,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,EAAE,CAAC;QACR,KAAK,MAAM;YACT,OAAO,wBAAwB,CAAA;QACjC,KAAK,MAAM;YACT,OAAO,yBAAyB,CAAA;QAClC,KAAK,SAAS;YACZ,OAAO,4BAA4B,CAAA;QACrC,KAAK,OAAO;YACV,OAAO,wBAAwB,CAAA;KAClC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAdD,4CAcC;AAED,SAAgB,YAAY,CAAC,MAA2B;IACtD,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAFD,oCAEC;AAED,SAAgB,mBAAmB,CAAC,MAA2B,EAAE,KAAyB;IACxF,IAAI,KAAK,EAAE;QACT,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;SACpC;QACD,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACzC;AACH,CAAC;AARD,kDAQC;AAED,4BAA4B;AAC5B,kBAAkB;AAClB,qBAAqB;AACrB,IAAI;AACJ,EAAE;AACF,wCAAwC;AACxC,2BAA2B;AAC3B,iCAAiC","sourcesContent":["export interface SentioProjectConfig {\n project: string\n host: string\n // source: string\n build: boolean\n // targets: Target[]\n}\n\nexport function getFinalizedHost(host: string): string {\n switch (host) {\n case undefined:\n case '':\n case 'prod':\n return 'https://app.sentio.xyz'\n case 'test':\n return 'https://test.sentio.xyz'\n case 'staging':\n return 'https://staging.sentio.xyz'\n case 'local':\n return 'http://localhost:10000'\n }\n return host\n}\n\nexport function finalizeHost(config: SentioProjectConfig) {\n config.host = getFinalizedHost(config.host)\n}\n\nexport function FinalizeProjectName(config: SentioProjectConfig, owner: string | undefined) {\n if (owner) {\n let name = config.project\n if (name.includes('/')) {\n name = config.project.split('/')[1]\n }\n config.project = [owner, name].join('/')\n }\n}\n\n// export interface Target {\n// chain: string\n// abisDir?: string\n// }\n//\n// // Supported target chain, lower case\n// export const EVM = 'evm'\n// export const SOLANA = 'solana'\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;AAQA,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,EAAE,CAAC;QACR,KAAK,MAAM;YACT,OAAO,wBAAwB,CAAA;QACjC,KAAK,MAAM;YACT,OAAO,yBAAyB,CAAA;QAClC,KAAK,SAAS;YACZ,OAAO,4BAA4B,CAAA;QACrC,KAAK,OAAO;YACV,OAAO,wBAAwB,CAAA;KAClC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAdD,4CAcC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,IAAI,MAAM,GAAG,EAAE,EACb,QAAQ,GAAG,EAAE,EACb,QAAQ,GAAG,EAAE,CAAA;IACf,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,MAAM,GAAG,iCAAiC,CAAA;YAC1C,QAAQ,GAAG,kCAAkC,CAAA;YAC7C,QAAQ,GAAG,0BAA0B,CAAA;YACrC,MAAK;QACP,KAAK,EAAE,CAAC;QACR,KAAK,SAAS,CAAC;QACf,KAAK,MAAM;YACT,MAAM,GAAG,yBAAyB,CAAA;YAClC,QAAQ,GAAG,kCAAkC,CAAA;YAC7C,QAAQ,GAAG,+BAA+B,CAAA;YAC1C,MAAK;QACP,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,MAAM,GAAG,8BAA8B,CAAA;YACvC,QAAQ,GAAG,kCAAkC,CAAA;YAC7C,QAAQ,GAAG,gCAAgC,CAAA;YAC3C,MAAK;QACP;YACE,MAAK;KACR;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AACvC,CAAC;AA3BD,sCA2BC;AAED,SAAgB,YAAY,CAAC,MAA2B;IACtD,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAFD,oCAEC;AAED,SAAgB,mBAAmB,CAAC,MAA2B,EAAE,KAAyB;IACxF,IAAI,KAAK,EAAE;QACT,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;SACpC;QACD,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACzC;AACH,CAAC;AARD,kDAQC;AAED,4BAA4B;AAC5B,kBAAkB;AAClB,qBAAqB;AACrB,IAAI;AACJ,EAAE;AACF,wCAAwC;AACxC,2BAA2B;AAC3B,iCAAiC","sourcesContent":["export interface SentioProjectConfig {\n project: string\n host: string\n // source: string\n build: boolean\n // targets: Target[]\n}\n\nexport function getFinalizedHost(host: string): string {\n switch (host) {\n case undefined:\n case '':\n case 'prod':\n return 'https://app.sentio.xyz'\n case 'test':\n return 'https://test.sentio.xyz'\n case 'staging':\n return 'https://staging.sentio.xyz'\n case 'local':\n return 'http://localhost:10000'\n }\n return host\n}\n\nexport function getAuthConfig(host: string): { domain: string; clientId: string; audience: string } {\n let domain = '',\n clientId = '',\n audience = ''\n switch (host) {\n case 'local':\n domain = 'https://sentio-dev.us.auth0.com'\n clientId = 'qGDisObqQbcPeRA8k02POPZ2Df4KVCna'\n audience = 'http://localhost:8080/v1'\n break\n case '':\n case undefined:\n case 'prod':\n domain = 'https://auth.sentio.xyz'\n clientId = 'xd80PeuvuZVHpBFh7yEdlSZdtE5mTpGe'\n audience = 'https://app.sentio.xyz/api/v1'\n break\n case 'test':\n case 'staging':\n domain = 'https://auth.test.sentio.xyz'\n clientId = 'qXVvovHaOE37SndxTZJxCKgZjw1axPax'\n audience = 'https://test.sentio.xyz/api/v1'\n break\n default:\n break\n }\n return { domain, clientId, audience }\n}\n\nexport function finalizeHost(config: SentioProjectConfig) {\n config.host = getFinalizedHost(config.host)\n}\n\nexport function FinalizeProjectName(config: SentioProjectConfig, owner: string | undefined) {\n if (owner) {\n let name = config.project\n if (name.includes('/')) {\n name = config.project.split('/')[1]\n }\n config.project = [owner, name].join('/')\n }\n}\n\n// export interface Target {\n// chain: string\n// abisDir?: string\n// }\n//\n// // Supported target chain, lower case\n// export const EVM = 'evm'\n// export const SOLANA = 'solana'\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
3
  "license": "Apache-2.0",
4
- "version": "1.26.4",
4
+ "version": "1.27.1",
5
5
  "scripts": {
6
6
  "compile_target": "yarn tsc -b src/target-ethers-sentio/tsconfig.json",
7
7
  "compile": "tsc -p . && cp src/cli/webpack.config.js lib/cli && cp src/utils/*.csv lib/utils",
@@ -25,6 +25,7 @@
25
25
  "@solana/web3.js": "^1.47.3",
26
26
  "@typechain/ethers-v5": "^10.0.0",
27
27
  "@types/bn.js": "^5.1.0",
28
+ "@types/express": "^4.17.14",
28
29
  "@types/node-fetch": "^2.6.2",
29
30
  "aptos-sdk": "npm:aptos@^1.3.16",
30
31
  "bignumber.js": "^9.1.0",
@@ -34,6 +35,7 @@
34
35
  "command-line-usage": "^6.1.3",
35
36
  "csv-parse": "^5.3.0",
36
37
  "ethers": "~5.7.1",
38
+ "express": "^4.18.2",
37
39
  "form-data": "^4.0.0",
38
40
  "fs-extra": "^10.1.0",
39
41
  "google-protobuf": "^3.15.8",
@@ -78,5 +80,8 @@
78
80
  "lib/**/*",
79
81
  "src/**/*",
80
82
  "templates/**/*"
81
- ]
83
+ ],
84
+ "engines": {
85
+ "node": ">=16"
86
+ }
82
87
  }
@@ -251,9 +251,9 @@ export class AptosAccountProcessor {
251
251
  public onTimeInterval(
252
252
  handler: (resources: MoveResource[], ctx: AptosResourceContext) => void,
253
253
  timeIntervalInMinutes = 60,
254
- typpe?: string
254
+ type?: string
255
255
  ) {
256
- return this.onInterval(handler, timeIntervalInMinutes, undefined, typpe)
256
+ return this.onInterval(handler, timeIntervalInMinutes, undefined, type)
257
257
  }
258
258
 
259
259
  public onVersionInterval(
@@ -3,5 +3,5 @@ export type { EventInstance, TypedEventInstance, TypedEntryFunctionPayload } fro
3
3
  export { TYPE_REGISTRY, TypeRegistry } from './types'
4
4
  export type { FunctionNameAndCallFilter, EventFilter, CallFilter, ArgumentsFilter } from './aptos-processor'
5
5
  export { AptosBaseProcessor, AptosAccountProcessor } from './aptos-processor'
6
- export { AptosContext } from './context'
6
+ export { AptosContext, AptosResourceContext } from './context'
7
7
  export { AptosBindOptions, AptosNetwork, getRpcClient } from './network'
@@ -56,7 +56,7 @@ export async function generateForNetwork(srcDir: string, outputDir: string, netw
56
56
 
57
57
  while (loader.pendingAccounts.size > 0) {
58
58
  for (const account of loader.pendingAccounts) {
59
- console.log(`download depended module for account ${account} at ${getChainName(network)}`)
59
+ console.log(`download dependent module for account ${account} at ${getChainName(network)}`)
60
60
 
61
61
  try {
62
62
  const modules = await client.getAccountModules(account)
@@ -326,7 +326,12 @@ function generateCallArgsStructs(module: MoveModule, func: MoveFunction) {
326
326
 
327
327
  // the first param is always signer so ignore
328
328
  // TODO check if there is any edge case
329
- const fields = func.params.slice(1).map((param) => {
329
+ let params = func.params
330
+ if (func.params[0] === '&signer') {
331
+ params = params.slice(1)
332
+ }
333
+
334
+ const fields = params.map((param) => {
330
335
  return `${generateType(param)}`
331
336
  })
332
337
 
@@ -387,27 +392,6 @@ function getEventStructs(module: MoveModule) {
387
392
  return eventMap
388
393
  }
389
394
 
390
- function isEvent(struct: MoveStruct, module: MoveModule) {
391
- const hasAbility = struct.abilities.includes('drop') && struct.abilities.includes('store')
392
-
393
- if (!hasAbility) {
394
- return false
395
- }
396
- if (struct.name.endsWith('Event')) {
397
- return true
398
- }
399
-
400
- // for (const struct of module.structs) {
401
- // for (const field of struct.fields) {
402
- // if (field.type.startsWith('0x1::event::EventHandle')
403
- // }
404
- // }
405
-
406
- return false
407
-
408
- //&&
409
- }
410
-
411
395
  function generateOnEvents(module: MoveModule, struct: MoveStruct): string {
412
396
  // for struct that has drop + store
413
397
  // if (!isEvent(struct, module)) {
@@ -282,8 +282,8 @@ export namespace coin {
282
282
  }
283
283
 
284
284
  export interface FreezeCoinStorePayload
285
- extends aptos.TypedEntryFunctionPayload<[Address]> {
286
- arguments_typed: [Address];
285
+ extends aptos.TypedEntryFunctionPayload<[Address, Address]> {
286
+ arguments_typed: [Address, Address];
287
287
  type_arguments: [string];
288
288
  }
289
289
 
@@ -294,8 +294,8 @@ export namespace coin {
294
294
  }
295
295
 
296
296
  export interface UnfreezeCoinStorePayload
297
- extends aptos.TypedEntryFunctionPayload<[Address]> {
298
- arguments_typed: [Address];
297
+ extends aptos.TypedEntryFunctionPayload<[Address, Address]> {
298
+ arguments_typed: [Address, Address];
299
299
  type_arguments: [string];
300
300
  }
301
301
 
@@ -2163,8 +2163,8 @@ export namespace vesting {
2163
2163
  }
2164
2164
 
2165
2165
  export interface DistributePayload
2166
- extends aptos.TypedEntryFunctionPayload<[]> {
2167
- arguments_typed: [];
2166
+ extends aptos.TypedEntryFunctionPayload<[Address]> {
2167
+ arguments_typed: [Address];
2168
2168
  type_arguments: [];
2169
2169
  }
2170
2170
 
@@ -2205,8 +2205,8 @@ export namespace vesting {
2205
2205
  }
2206
2206
 
2207
2207
  export interface UnlockRewardsPayload
2208
- extends aptos.TypedEntryFunctionPayload<[]> {
2209
- arguments_typed: [];
2208
+ extends aptos.TypedEntryFunctionPayload<[Address]> {
2209
+ arguments_typed: [Address];
2210
2210
  type_arguments: [];
2211
2211
  }
2212
2212
 
@@ -2228,8 +2228,9 @@ export namespace vesting {
2228
2228
  type_arguments: [];
2229
2229
  }
2230
2230
 
2231
- export interface VestPayload extends aptos.TypedEntryFunctionPayload<[]> {
2232
- arguments_typed: [];
2231
+ export interface VestPayload
2232
+ extends aptos.TypedEntryFunctionPayload<[Address]> {
2233
+ arguments_typed: [Address];
2233
2234
  type_arguments: [];
2234
2235
  }
2235
2236
 
@@ -2486,8 +2487,8 @@ export namespace aptos_coin {
2486
2487
  }
2487
2488
 
2488
2489
  export interface DelegateMintCapabilityPayload
2489
- extends aptos.TypedEntryFunctionPayload<[Address]> {
2490
- arguments_typed: [Address];
2490
+ extends aptos.TypedEntryFunctionPayload<[Address, Address]> {
2491
+ arguments_typed: [Address, Address];
2491
2492
  type_arguments: [];
2492
2493
  }
2493
2494
 
@@ -2869,8 +2870,8 @@ export class aptos_account extends aptos.AptosBaseProcessor {
2869
2870
 
2870
2871
  export namespace aptos_account {
2871
2872
  export interface CreateAccountPayload
2872
- extends aptos.TypedEntryFunctionPayload<[]> {
2873
- arguments_typed: [];
2873
+ extends aptos.TypedEntryFunctionPayload<[Address]> {
2874
+ arguments_typed: [Address];
2874
2875
  type_arguments: [];
2875
2876
  }
2876
2877
 
@@ -3414,8 +3415,8 @@ export namespace aptos_governance {
3414
3415
  }
3415
3416
 
3416
3417
  export interface AddApprovedScriptHashScriptPayload
3417
- extends aptos.TypedEntryFunctionPayload<[]> {
3418
- arguments_typed: [];
3418
+ extends aptos.TypedEntryFunctionPayload<[bigint]> {
3419
+ arguments_typed: [bigint];
3419
3420
  type_arguments: [];
3420
3421
  }
3421
3422
 
@@ -3982,8 +3983,8 @@ export namespace staking_contract {
3982
3983
  }
3983
3984
 
3984
3985
  export interface DistributePayload
3985
- extends aptos.TypedEntryFunctionPayload<[Address]> {
3986
- arguments_typed: [Address];
3986
+ extends aptos.TypedEntryFunctionPayload<[Address, Address]> {
3987
+ arguments_typed: [Address, Address];
3987
3988
  type_arguments: [];
3988
3989
  }
3989
3990
 
@@ -837,25 +837,33 @@ export namespace token_transfers {
837
837
 
838
838
  export interface CancelOfferScriptPayload
839
839
  extends aptos.TypedEntryFunctionPayload<
840
- [Address, Address, string, string, bigint]
840
+ [Address, Address, Address, string, string, bigint]
841
841
  > {
842
- arguments_typed: [Address, Address, string, string, bigint];
842
+ arguments_typed: [Address, Address, Address, string, string, bigint];
843
843
  type_arguments: [];
844
844
  }
845
845
 
846
846
  export interface ClaimScriptPayload
847
847
  extends aptos.TypedEntryFunctionPayload<
848
- [Address, Address, string, string, bigint]
848
+ [Address, Address, Address, string, string, bigint]
849
849
  > {
850
- arguments_typed: [Address, Address, string, string, bigint];
850
+ arguments_typed: [Address, Address, Address, string, string, bigint];
851
851
  type_arguments: [];
852
852
  }
853
853
 
854
854
  export interface OfferScriptPayload
855
855
  extends aptos.TypedEntryFunctionPayload<
856
- [Address, Address, string, string, bigint, bigint]
856
+ [Address, Address, Address, string, string, bigint, bigint]
857
857
  > {
858
- arguments_typed: [Address, Address, string, string, bigint, bigint];
858
+ arguments_typed: [
859
+ Address,
860
+ Address,
861
+ Address,
862
+ string,
863
+ string,
864
+ bigint,
865
+ bigint
866
+ ];
859
867
  type_arguments: [];
860
868
  }
861
869