@sentio/cli 2.5.0-rc.3 → 2.5.0-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commands/run-create.js +11 -6
- package/lib/commands/run-create.js.map +1 -1
- package/lib/commands/run-upload.d.ts +6 -1
- package/lib/commands/run-upload.js +32 -21
- package/lib/commands/run-upload.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/run-create.ts +11 -6
- package/src/commands/run-upload.ts +39 -23
|
@@ -71,11 +71,16 @@ export async function runCreate(argv) {
|
|
|
71
71
|
process.exit(1);
|
|
72
72
|
}
|
|
73
73
|
const templateFolder = url.fileURLToPath(new URL('../../templates/' + chainType, import.meta.url));
|
|
74
|
-
const
|
|
74
|
+
const projectFullName = options.name || 'default';
|
|
75
|
+
let projectSlug = projectFullName;
|
|
76
|
+
const projectParts = projectSlug.split('/');
|
|
77
|
+
if (projectParts.length > 0) {
|
|
78
|
+
projectSlug = projectParts[1];
|
|
79
|
+
}
|
|
75
80
|
const rootDir = options.directory || process.cwd();
|
|
76
|
-
const dstFolder = path.resolve(rootDir,
|
|
81
|
+
const dstFolder = path.resolve(rootDir, projectSlug);
|
|
77
82
|
if (fs.existsSync(dstFolder)) {
|
|
78
|
-
console.error(chalk.red("can't create project '" +
|
|
83
|
+
console.error(chalk.red("can't create project '" + projectSlug + "', directory already existed"));
|
|
79
84
|
process.exit(1);
|
|
80
85
|
}
|
|
81
86
|
fs.copySync(templateFolder, dstFolder, {
|
|
@@ -98,14 +103,14 @@ export async function runCreate(argv) {
|
|
|
98
103
|
}
|
|
99
104
|
if (options.name) {
|
|
100
105
|
const sentioYamlPath = path.resolve(dstFolder, 'sentio.yaml');
|
|
101
|
-
fs.writeFileSync(sentioYamlPath, 'project: ' +
|
|
106
|
+
fs.writeFileSync(sentioYamlPath, 'project: ' + projectFullName + '\n', { flag: 'w+' });
|
|
102
107
|
const packageJsonPath = path.resolve(dstFolder, 'package.json');
|
|
103
108
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
104
109
|
const sdkVersion = '^' + (await latestVersion('@sentio/sdk'));
|
|
105
110
|
packageJson.dependencies['@sentio/sdk'] = sdkVersion;
|
|
106
111
|
const cliVersion = '^' + (await latestVersion('@sentio/cli'));
|
|
107
112
|
packageJson.devDependencies['@sentio/cli'] = cliVersion;
|
|
108
|
-
packageJson.name =
|
|
113
|
+
packageJson.name = projectSlug;
|
|
109
114
|
if (options.subproject) {
|
|
110
115
|
delete packageJson.dependencies['@sentio/sdk'];
|
|
111
116
|
delete packageJson.devDependencies['@sentio/cli'];
|
|
@@ -114,7 +119,7 @@ export async function runCreate(argv) {
|
|
|
114
119
|
packageJson.scripts.postinstall = 'sentio gen';
|
|
115
120
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
116
121
|
}
|
|
117
|
-
console.log(chalk.green("successfully create project '" +
|
|
122
|
+
console.log(chalk.green("successfully create project '" + projectFullName + "'"));
|
|
118
123
|
}
|
|
119
124
|
}
|
|
120
125
|
//# sourceMappingURL=run-create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-create.js","sourceRoot":"","sources":["../../src/commands/run-create.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAC1C,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,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,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,aAAa,EAAE,IAAI;YACnB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,cAAc;SAC5B;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,OAAO;YACb,WAAW,EACT,4GAA4G;SAC/G;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,qFAAqF;YAClG,IAAI,EAAE,MAAM;SACb;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,GAAG;YACV,WAAW,EACT,iJAAiJ;YACnJ,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,KAAK;SACpB;KACF,CAAA;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC7B;YACE,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,sBAAsB;SAChC;QACD;YACE,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,iBAAiB;SAC9B;KACF,CAAC,CAAA;IAEF,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KACnB;SAAM;QACL,MAAM,SAAS,GAAW,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7D,QAAQ,SAAS,EAAE;YACjB,KAAK,KAAK;gBACR,MAAK;YACP,KAAK,OAAO;gBACV,MAAK;YACP,KAAK,KAAK;gBACR,MAAK;YACP,KAAK,QAAQ;gBACX,MAAK;YACP;gBACE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC,CAAA;gBAC5G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAClB;QAED,MAAM,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,GAAG,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAClG,MAAM,
|
|
1
|
+
{"version":3,"file":"run-create.js","sourceRoot":"","sources":["../../src/commands/run-create.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport path from 'path'\nimport fs from 'fs-extra'\nimport chalk from 'chalk'\nimport latestVersion from 'latest-version'\nimport url from 'url'\n\nexport async function runCreate(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: 'name',\n alias: 'n',\n defaultOption: true,\n type: String,\n description: 'Project name',\n },\n {\n name: 'subproject',\n alias: 'p',\n type: Boolean,\n description:\n 'If this is a subproject in mono-repo setup, in this case sdk version is controlled in parent package.json.',\n },\n {\n name: 'directory',\n alias: 'd',\n description: '(Optional) The root direct new project will be created, default current working dir',\n type: String,\n },\n {\n name: 'chain-type',\n alias: 'c',\n description:\n 'The type of project you want to create, can be eth, aptos, solana, raw (if you want to start from scratch and support multiple types of chains)',\n type: String,\n defaultValue: 'eth',\n },\n ]\n\n const options = commandLineArgs(optionDefinitions, { argv })\n const usage = commandLineUsage([\n {\n header: 'Create a template project',\n content: 'sentio create <name>',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n\n if (options.help || !options.name) {\n console.log(usage)\n } else {\n const chainType: string = options['chain-type'].toLowerCase()\n switch (chainType) {\n case 'eth':\n break\n case 'aptos':\n break\n case 'raw':\n break\n case 'solana':\n break\n default:\n console.error(chalk.red('non supported chain-type for template creation, use --help for more information.'))\n console.log(usage)\n process.exit(1)\n }\n\n const templateFolder = url.fileURLToPath(new URL('../../templates/' + chainType, import.meta.url))\n const projectFullName = options.name || 'default'\n let projectSlug = projectFullName\n const projectParts = projectSlug.split('/')\n if (projectParts.length > 0) {\n projectSlug = projectParts[1]\n }\n\n const rootDir = options.directory || process.cwd()\n const dstFolder = path.resolve(rootDir, projectSlug)\n if (fs.existsSync(dstFolder)) {\n console.error(chalk.red(\"can't create project '\" + projectSlug + \"', directory already existed\"))\n process.exit(1)\n }\n\n fs.copySync(templateFolder, dstFolder, {\n filter: (src, _) => {\n // TODO read from .gitignore to be more reliable\n if (\n src.endsWith('types') ||\n src.endsWith('dist') ||\n src.endsWith('node_modules') ||\n src.endsWith('.lock') ||\n src.endsWith('dist')\n ) {\n return false\n }\n return true\n },\n overwrite: false,\n })\n const gitignoreFile = path.join(dstFolder, 'gitignore')\n if (fs.existsSync(gitignoreFile)) {\n fs.renameSync(gitignoreFile, path.join(dstFolder, '.gitignore'))\n }\n if (options.name) {\n const sentioYamlPath = path.resolve(dstFolder, 'sentio.yaml')\n fs.writeFileSync(sentioYamlPath, 'project: ' + projectFullName + '\\n', { flag: 'w+' })\n\n const packageJsonPath = path.resolve(dstFolder, 'package.json')\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))\n\n const sdkVersion = '^' + (await latestVersion('@sentio/sdk'))\n packageJson.dependencies['@sentio/sdk'] = sdkVersion\n\n const cliVersion = '^' + (await latestVersion('@sentio/cli'))\n packageJson.devDependencies['@sentio/cli'] = cliVersion\n packageJson.name = projectSlug\n\n if (options.subproject) {\n delete packageJson.dependencies['@sentio/sdk']\n delete packageJson.devDependencies['@sentio/cli']\n }\n\n // Don't add directly to avoid deps issue\n packageJson.scripts.postinstall = 'sentio gen'\n\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2))\n }\n console.log(chalk.green(\"successfully create project '\" + projectFullName + \"'\"))\n }\n}\n"]}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import { YamlProjectConfig } from '../config.js';
|
|
2
2
|
export declare function runUpload(processorConfig: YamlProjectConfig, argv: string[]): Promise<void>;
|
|
3
|
-
|
|
3
|
+
interface Auth {
|
|
4
|
+
'api-key'?: string;
|
|
5
|
+
authorization?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function uploadFile(options: YamlProjectConfig, auth: Auth): Promise<void>;
|
|
8
|
+
export {};
|
|
@@ -23,7 +23,12 @@ const uploadOptionDefinitions = [
|
|
|
23
23
|
{
|
|
24
24
|
name: 'api-key',
|
|
25
25
|
type: String,
|
|
26
|
-
description: '(Optional) Manually provide API key rather than use saved credential',
|
|
26
|
+
description: '(Optional) Manually provide API key rather than use saved credential, if both api-key and jwt-token is provided, use api-key.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'token',
|
|
30
|
+
type: String,
|
|
31
|
+
description: '(Optional) Manually provide token rather than use saved credential, if both api-key and token is provided, use api-key.',
|
|
27
32
|
},
|
|
28
33
|
{
|
|
29
34
|
name: 'host',
|
|
@@ -93,36 +98,42 @@ export async function runUpload(processorConfig, argv) {
|
|
|
93
98
|
finalizeHost(processorConfig);
|
|
94
99
|
FinalizeProjectName(processorConfig, options.owner, options.name);
|
|
95
100
|
console.log(processorConfig);
|
|
96
|
-
|
|
101
|
+
const uploadAuth = {};
|
|
102
|
+
let apiKey = ReadKey(options.host);
|
|
97
103
|
if (options['api-key']) {
|
|
98
|
-
|
|
104
|
+
apiKey = options['api-key'];
|
|
105
|
+
}
|
|
106
|
+
if (apiKey) {
|
|
107
|
+
uploadAuth['api-key'] = apiKey;
|
|
108
|
+
}
|
|
109
|
+
else if (options['token']) {
|
|
110
|
+
uploadAuth.authorization = 'Bearer ' + options['token'];
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const isProd = options.host === 'https://app.sentio.xyz';
|
|
114
|
+
const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host;
|
|
115
|
+
console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'));
|
|
116
|
+
process.exit(1);
|
|
99
117
|
}
|
|
100
118
|
if (processorConfig.build) {
|
|
101
119
|
await buildProcessor(false, options);
|
|
102
120
|
}
|
|
103
|
-
return uploadFile(processorConfig,
|
|
121
|
+
return uploadFile(processorConfig, uploadAuth);
|
|
104
122
|
}
|
|
105
|
-
async function createProject(options,
|
|
123
|
+
async function createProject(options, auth) {
|
|
106
124
|
const url = new URL('/api/v1/projects', options.host);
|
|
107
125
|
const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project];
|
|
108
126
|
return fetch(url.href, {
|
|
109
127
|
method: 'POST',
|
|
110
128
|
headers: {
|
|
111
|
-
|
|
129
|
+
...auth,
|
|
112
130
|
},
|
|
113
131
|
body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),
|
|
114
132
|
});
|
|
115
133
|
}
|
|
116
|
-
export async function uploadFile(options,
|
|
134
|
+
export async function uploadFile(options, auth) {
|
|
117
135
|
console.log(chalk.blue('Prepare to upload'));
|
|
118
136
|
const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js');
|
|
119
|
-
const apiKey = apiKeyOverride || ReadKey(options.host);
|
|
120
|
-
const isProd = options.host === 'https://app.sentio.xyz';
|
|
121
|
-
if (!apiKey) {
|
|
122
|
-
const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host;
|
|
123
|
-
console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'));
|
|
124
|
-
process.exit(1);
|
|
125
|
-
}
|
|
126
137
|
if (!fs.existsSync(PROCESSOR_FILE)) {
|
|
127
138
|
console.error(chalk.red('File not existed ', PROCESSOR_FILE, "don't use --nobuild"));
|
|
128
139
|
process.exit(1);
|
|
@@ -152,7 +163,7 @@ export async function uploadFile(options, apiKeyOverride) {
|
|
|
152
163
|
}
|
|
153
164
|
console.log(chalk.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'));
|
|
154
165
|
// get gcs upload url
|
|
155
|
-
const initUploadResRaw = await initUpload(options.host,
|
|
166
|
+
const initUploadResRaw = await initUpload(options.host, auth, options.project, getSdkVersion());
|
|
156
167
|
if (!initUploadResRaw.ok) {
|
|
157
168
|
// console.error(chalk.red('Failed to get upload url'))
|
|
158
169
|
console.error(chalk.red((await initUploadResRaw.json()).message));
|
|
@@ -166,7 +177,7 @@ export async function uploadFile(options, apiKeyOverride) {
|
|
|
166
177
|
const answer = await new Promise((resolve) => rl.question(`Do you want to create it and continue the uploading process? (yes/no) `, resolve));
|
|
167
178
|
if (['y', 'yes'].includes(answer.toLowerCase())) {
|
|
168
179
|
rl.close();
|
|
169
|
-
const res = await createProject(options,
|
|
180
|
+
const res = await createProject(options, auth);
|
|
170
181
|
if (!res.ok) {
|
|
171
182
|
console.error(chalk.red('Create Project Failed'));
|
|
172
183
|
console.error(chalk.red((await res.json()).message));
|
|
@@ -203,7 +214,7 @@ export async function uploadFile(options, apiKeyOverride) {
|
|
|
203
214
|
return;
|
|
204
215
|
}
|
|
205
216
|
// finish uploading
|
|
206
|
-
const finishUploadResRaw = await finishUpload(options.host,
|
|
217
|
+
const finishUploadResRaw = await finishUpload(options.host, auth, options.project, getSdkVersion(), sha256, commitSha, gitUrl, options.debug);
|
|
207
218
|
if (!finishUploadResRaw.ok) {
|
|
208
219
|
console.error(chalk.red('Failed to finish uploading'));
|
|
209
220
|
console.error(chalk.red(await finishUploadResRaw.text()));
|
|
@@ -240,12 +251,12 @@ export async function uploadFile(options, apiKeyOverride) {
|
|
|
240
251
|
};
|
|
241
252
|
await tryUploading();
|
|
242
253
|
}
|
|
243
|
-
async function initUpload(host,
|
|
254
|
+
async function initUpload(host, auth, projectSlug, sdkVersion) {
|
|
244
255
|
const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host);
|
|
245
256
|
return fetch(initUploadUrl.href, {
|
|
246
257
|
method: 'POST',
|
|
247
258
|
headers: {
|
|
248
|
-
|
|
259
|
+
...auth,
|
|
249
260
|
},
|
|
250
261
|
body: JSON.stringify({
|
|
251
262
|
project_slug: projectSlug,
|
|
@@ -253,12 +264,12 @@ async function initUpload(host, apiKey, projectSlug, sdkVersion) {
|
|
|
253
264
|
}),
|
|
254
265
|
});
|
|
255
266
|
}
|
|
256
|
-
async function finishUpload(host,
|
|
267
|
+
async function finishUpload(host, auth, projectSlug, sdkVersion, sha256, commitSha, gitUrl, debug) {
|
|
257
268
|
const finishUploadUrl = new URL(`/api/v1/processors/finish_upload`, host);
|
|
258
269
|
return fetch(finishUploadUrl.href, {
|
|
259
270
|
method: 'POST',
|
|
260
271
|
headers: {
|
|
261
|
-
|
|
272
|
+
...auth,
|
|
262
273
|
},
|
|
263
274
|
body: JSON.stringify({
|
|
264
275
|
project_slug: projectSlug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-upload.js","sourceRoot":"","sources":["../../src/commands/run-upload.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport { finalizeHost, FinalizeProjectName, YamlProjectConfig } from '../config.js'\nimport { URL } from 'url'\nimport fetch from 'node-fetch'\nimport { buildOptionDefinitions, buildProcessor } from './build.js'\nimport chalk from 'chalk'\nimport path from 'path'\nimport { ReadKey } from '../key.js'\nimport fs from 'fs'\nimport { createHash } from 'crypto'\nimport { execSync } from 'child_process'\nimport { getSdkVersion } from '../utils.js'\nimport readline from 'readline'\nimport * as process from 'process'\n\nconst uploadOptionDefinitions = [\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: '(Optional) Manually provide API key rather than use saved credential',\n },\n {\n name: 'host',\n description: '(Optional) Override Sentio Host name',\n type: String,\n },\n {\n name: 'owner',\n description: '(Optional) Override Project owner',\n type: String,\n },\n {\n name: 'name',\n description: '(Optional) Override Project name',\n type: String,\n },\n {\n name: 'nobuild',\n description: '(Optional) Skip build & pack file before uploading, default false',\n type: Boolean,\n },\n {\n name: 'debug',\n description: '(Optional) Run driver in debug mode, default false',\n type: Boolean,\n },\n]\n\nfunction mergeOptions(options1: commandLineArgs.OptionDefinition[], options2: commandLineArgs.OptionDefinition[]) {\n const res = Object.assign([], options1)\n const added = new Set<string>()\n for (const opt of options1) {\n added.add(opt.name)\n }\n for (const opt of options2) {\n if (!added.has(opt.name)) {\n res.push(opt)\n }\n }\n return res\n}\n\nexport async function runUpload(processorConfig: YamlProjectConfig, argv: string[]) {\n const optionDefinitions = mergeOptions(uploadOptionDefinitions, buildOptionDefinitions)\n\n const options = commandLineArgs(optionDefinitions, { argv })\n if (options.help) {\n const usage = commandLineUsage([\n {\n header: 'Sentio upload',\n content: 'sentio upload',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n console.log(usage)\n process.exit(0)\n }\n\n if (options.host) {\n processorConfig.host = options.host\n }\n if (options.nobuild) {\n processorConfig.build = false\n }\n if (options.debug) {\n processorConfig.debug = true\n }\n finalizeHost(processorConfig)\n FinalizeProjectName(processorConfig, options.owner, options.name)\n console.log(processorConfig)\n\n let apiOverride = undefined\n if (options['api-key']) {\n apiOverride = options['api-key']\n }\n if (processorConfig.build) {\n await buildProcessor(false, options)\n }\n return uploadFile(processorConfig, apiOverride)\n}\n\nasync function createProject(options: YamlProjectConfig, 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.href, {\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: YamlProjectConfig, apiKeyOverride: string) {\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()) as { message: string }).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()) as { message: string }).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()) as { url: string }\n const uploadUrl = initUploadRes.url\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, version } = (await finishUploadResRaw.json()) as {\n projectFullSlug: string\n version: string\n }\n console.log('\\t', chalk.blue('Check status:'), `${options.host}/${projectFullSlug}/datasource`)\n console.log('\\t', chalk.blue('Version:'), version)\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.href, {\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.href, {\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"]}
|
|
1
|
+
{"version":3,"file":"run-upload.js","sourceRoot":"","sources":["../../src/commands/run-upload.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport { finalizeHost, FinalizeProjectName, YamlProjectConfig } from '../config.js'\nimport { URL } from 'url'\nimport fetch from 'node-fetch'\nimport { buildOptionDefinitions, buildProcessor } from './build.js'\nimport chalk from 'chalk'\nimport path from 'path'\nimport { ReadKey } from '../key.js'\nimport fs from 'fs'\nimport { createHash } from 'crypto'\nimport { execSync } from 'child_process'\nimport { getSdkVersion } from '../utils.js'\nimport readline from 'readline'\nimport * as process from 'process'\n\nconst uploadOptionDefinitions = [\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:\n '(Optional) Manually provide API key rather than use saved credential, if both api-key and jwt-token is provided, use api-key.',\n },\n {\n name: 'token',\n type: String,\n description:\n '(Optional) Manually provide token rather than use saved credential, if both api-key and token is provided, use api-key.',\n },\n {\n name: 'host',\n description: '(Optional) Override Sentio Host name',\n type: String,\n },\n {\n name: 'owner',\n description: '(Optional) Override Project owner',\n type: String,\n },\n {\n name: 'name',\n description: '(Optional) Override Project name',\n type: String,\n },\n {\n name: 'nobuild',\n description: '(Optional) Skip build & pack file before uploading, default false',\n type: Boolean,\n },\n {\n name: 'debug',\n description: '(Optional) Run driver in debug mode, default false',\n type: Boolean,\n },\n]\n\nfunction mergeOptions(options1: commandLineArgs.OptionDefinition[], options2: commandLineArgs.OptionDefinition[]) {\n const res = Object.assign([], options1)\n const added = new Set<string>()\n for (const opt of options1) {\n added.add(opt.name)\n }\n for (const opt of options2) {\n if (!added.has(opt.name)) {\n res.push(opt)\n }\n }\n return res\n}\n\nexport async function runUpload(processorConfig: YamlProjectConfig, argv: string[]) {\n const optionDefinitions = mergeOptions(uploadOptionDefinitions, buildOptionDefinitions)\n\n const options = commandLineArgs(optionDefinitions, { argv })\n if (options.help) {\n const usage = commandLineUsage([\n {\n header: 'Sentio upload',\n content: 'sentio upload',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n console.log(usage)\n process.exit(0)\n }\n\n if (options.host) {\n processorConfig.host = options.host\n }\n if (options.nobuild) {\n processorConfig.build = false\n }\n if (options.debug) {\n processorConfig.debug = true\n }\n finalizeHost(processorConfig)\n FinalizeProjectName(processorConfig, options.owner, options.name)\n console.log(processorConfig)\n\n const uploadAuth: Auth = {}\n\n let apiKey = ReadKey(options.host)\n if (options['api-key']) {\n apiKey = options['api-key']\n }\n if (apiKey) {\n uploadAuth['api-key'] = apiKey\n } else if (options['token']) {\n uploadAuth.authorization = 'Bearer ' + options['token']\n } else {\n const isProd = options.host === 'https://app.sentio.xyz'\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 (processorConfig.build) {\n await buildProcessor(false, options)\n }\n return uploadFile(processorConfig, uploadAuth)\n}\n\nasync function createProject(options: YamlProjectConfig, auth: Auth) {\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.href, {\n method: 'POST',\n headers: {\n ...auth,\n },\n body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),\n })\n}\n\ninterface Auth {\n 'api-key'?: string\n authorization?: string\n}\n\nexport async function uploadFile(options: YamlProjectConfig, auth: Auth) {\n console.log(chalk.blue('Prepare to upload'))\n\n const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js')\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, auth, 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()) as { message: string }).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, auth)\n if (!res.ok) {\n console.error(chalk.red('Create Project Failed'))\n console.error(chalk.red(((await res.json()) as { message: string }).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()) as { url: string }\n const uploadUrl = initUploadRes.url\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 auth,\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, version } = (await finishUploadResRaw.json()) as {\n projectFullSlug: string\n version: string\n }\n console.log('\\t', chalk.blue('Check status:'), `${options.host}/${projectFullSlug}/datasource`)\n console.log('\\t', chalk.blue('Version:'), version)\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, auth: Auth, projectSlug: string, sdkVersion: string) {\n const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host)\n return fetch(initUploadUrl.href, {\n method: 'POST',\n headers: {\n ...auth,\n },\n body: JSON.stringify({\n project_slug: projectSlug,\n sdk_version: sdkVersion,\n }),\n })\n}\n\nasync function finishUpload(\n host: string,\n auth: Auth,\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.href, {\n method: 'POST',\n headers: {\n ...auth,\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/package.json
CHANGED
|
@@ -76,12 +76,17 @@ export async function runCreate(argv: string[]) {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
const templateFolder = url.fileURLToPath(new URL('../../templates/' + chainType, import.meta.url))
|
|
79
|
-
const
|
|
79
|
+
const projectFullName = options.name || 'default'
|
|
80
|
+
let projectSlug = projectFullName
|
|
81
|
+
const projectParts = projectSlug.split('/')
|
|
82
|
+
if (projectParts.length > 0) {
|
|
83
|
+
projectSlug = projectParts[1]
|
|
84
|
+
}
|
|
80
85
|
|
|
81
86
|
const rootDir = options.directory || process.cwd()
|
|
82
|
-
const dstFolder = path.resolve(rootDir,
|
|
87
|
+
const dstFolder = path.resolve(rootDir, projectSlug)
|
|
83
88
|
if (fs.existsSync(dstFolder)) {
|
|
84
|
-
console.error(chalk.red("can't create project '" +
|
|
89
|
+
console.error(chalk.red("can't create project '" + projectSlug + "', directory already existed"))
|
|
85
90
|
process.exit(1)
|
|
86
91
|
}
|
|
87
92
|
|
|
@@ -107,7 +112,7 @@ export async function runCreate(argv: string[]) {
|
|
|
107
112
|
}
|
|
108
113
|
if (options.name) {
|
|
109
114
|
const sentioYamlPath = path.resolve(dstFolder, 'sentio.yaml')
|
|
110
|
-
fs.writeFileSync(sentioYamlPath, 'project: ' +
|
|
115
|
+
fs.writeFileSync(sentioYamlPath, 'project: ' + projectFullName + '\n', { flag: 'w+' })
|
|
111
116
|
|
|
112
117
|
const packageJsonPath = path.resolve(dstFolder, 'package.json')
|
|
113
118
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
|
|
@@ -117,7 +122,7 @@ export async function runCreate(argv: string[]) {
|
|
|
117
122
|
|
|
118
123
|
const cliVersion = '^' + (await latestVersion('@sentio/cli'))
|
|
119
124
|
packageJson.devDependencies['@sentio/cli'] = cliVersion
|
|
120
|
-
packageJson.name =
|
|
125
|
+
packageJson.name = projectSlug
|
|
121
126
|
|
|
122
127
|
if (options.subproject) {
|
|
123
128
|
delete packageJson.dependencies['@sentio/sdk']
|
|
@@ -129,6 +134,6 @@ export async function runCreate(argv: string[]) {
|
|
|
129
134
|
|
|
130
135
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2))
|
|
131
136
|
}
|
|
132
|
-
console.log(chalk.green("successfully create project '" +
|
|
137
|
+
console.log(chalk.green("successfully create project '" + projectFullName + "'"))
|
|
133
138
|
}
|
|
134
139
|
}
|
|
@@ -24,7 +24,14 @@ const uploadOptionDefinitions = [
|
|
|
24
24
|
{
|
|
25
25
|
name: 'api-key',
|
|
26
26
|
type: String,
|
|
27
|
-
description:
|
|
27
|
+
description:
|
|
28
|
+
'(Optional) Manually provide API key rather than use saved credential, if both api-key and jwt-token is provided, use api-key.',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'token',
|
|
32
|
+
type: String,
|
|
33
|
+
description:
|
|
34
|
+
'(Optional) Manually provide token rather than use saved credential, if both api-key and token is provided, use api-key.',
|
|
28
35
|
},
|
|
29
36
|
{
|
|
30
37
|
name: 'host',
|
|
@@ -99,42 +106,51 @@ export async function runUpload(processorConfig: YamlProjectConfig, argv: string
|
|
|
99
106
|
FinalizeProjectName(processorConfig, options.owner, options.name)
|
|
100
107
|
console.log(processorConfig)
|
|
101
108
|
|
|
102
|
-
|
|
109
|
+
const uploadAuth: Auth = {}
|
|
110
|
+
|
|
111
|
+
let apiKey = ReadKey(options.host)
|
|
103
112
|
if (options['api-key']) {
|
|
104
|
-
|
|
113
|
+
apiKey = options['api-key']
|
|
105
114
|
}
|
|
115
|
+
if (apiKey) {
|
|
116
|
+
uploadAuth['api-key'] = apiKey
|
|
117
|
+
} else if (options['token']) {
|
|
118
|
+
uploadAuth.authorization = 'Bearer ' + options['token']
|
|
119
|
+
} else {
|
|
120
|
+
const isProd = options.host === 'https://app.sentio.xyz'
|
|
121
|
+
const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host
|
|
122
|
+
console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'))
|
|
123
|
+
process.exit(1)
|
|
124
|
+
}
|
|
125
|
+
|
|
106
126
|
if (processorConfig.build) {
|
|
107
127
|
await buildProcessor(false, options)
|
|
108
128
|
}
|
|
109
|
-
return uploadFile(processorConfig,
|
|
129
|
+
return uploadFile(processorConfig, uploadAuth)
|
|
110
130
|
}
|
|
111
131
|
|
|
112
|
-
async function createProject(options: YamlProjectConfig,
|
|
132
|
+
async function createProject(options: YamlProjectConfig, auth: Auth) {
|
|
113
133
|
const url = new URL('/api/v1/projects', options.host)
|
|
114
134
|
const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project]
|
|
115
135
|
return fetch(url.href, {
|
|
116
136
|
method: 'POST',
|
|
117
137
|
headers: {
|
|
118
|
-
|
|
138
|
+
...auth,
|
|
119
139
|
},
|
|
120
140
|
body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),
|
|
121
141
|
})
|
|
122
142
|
}
|
|
123
143
|
|
|
124
|
-
|
|
144
|
+
interface Auth {
|
|
145
|
+
'api-key'?: string
|
|
146
|
+
authorization?: string
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export async function uploadFile(options: YamlProjectConfig, auth: Auth) {
|
|
125
150
|
console.log(chalk.blue('Prepare to upload'))
|
|
126
151
|
|
|
127
152
|
const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js')
|
|
128
153
|
|
|
129
|
-
const apiKey = apiKeyOverride || ReadKey(options.host)
|
|
130
|
-
|
|
131
|
-
const isProd = options.host === 'https://app.sentio.xyz'
|
|
132
|
-
if (!apiKey) {
|
|
133
|
-
const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host
|
|
134
|
-
console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'))
|
|
135
|
-
process.exit(1)
|
|
136
|
-
}
|
|
137
|
-
|
|
138
154
|
if (!fs.existsSync(PROCESSOR_FILE)) {
|
|
139
155
|
console.error(chalk.red('File not existed ', PROCESSOR_FILE, "don't use --nobuild"))
|
|
140
156
|
process.exit(1)
|
|
@@ -165,7 +181,7 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
|
|
|
165
181
|
console.log(chalk.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'))
|
|
166
182
|
|
|
167
183
|
// get gcs upload url
|
|
168
|
-
const initUploadResRaw = await initUpload(options.host,
|
|
184
|
+
const initUploadResRaw = await initUpload(options.host, auth, options.project, getSdkVersion())
|
|
169
185
|
if (!initUploadResRaw.ok) {
|
|
170
186
|
// console.error(chalk.red('Failed to get upload url'))
|
|
171
187
|
console.error(chalk.red(((await initUploadResRaw.json()) as { message: string }).message))
|
|
@@ -182,7 +198,7 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
|
|
|
182
198
|
)
|
|
183
199
|
if (['y', 'yes'].includes(answer.toLowerCase())) {
|
|
184
200
|
rl.close()
|
|
185
|
-
const res = await createProject(options,
|
|
201
|
+
const res = await createProject(options, auth)
|
|
186
202
|
if (!res.ok) {
|
|
187
203
|
console.error(chalk.red('Create Project Failed'))
|
|
188
204
|
console.error(chalk.red(((await res.json()) as { message: string }).message))
|
|
@@ -221,7 +237,7 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
|
|
|
221
237
|
// finish uploading
|
|
222
238
|
const finishUploadResRaw = await finishUpload(
|
|
223
239
|
options.host,
|
|
224
|
-
|
|
240
|
+
auth,
|
|
225
241
|
options.project,
|
|
226
242
|
getSdkVersion(),
|
|
227
243
|
sha256,
|
|
@@ -270,12 +286,12 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
|
|
|
270
286
|
await tryUploading()
|
|
271
287
|
}
|
|
272
288
|
|
|
273
|
-
async function initUpload(host: string,
|
|
289
|
+
async function initUpload(host: string, auth: Auth, projectSlug: string, sdkVersion: string) {
|
|
274
290
|
const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host)
|
|
275
291
|
return fetch(initUploadUrl.href, {
|
|
276
292
|
method: 'POST',
|
|
277
293
|
headers: {
|
|
278
|
-
|
|
294
|
+
...auth,
|
|
279
295
|
},
|
|
280
296
|
body: JSON.stringify({
|
|
281
297
|
project_slug: projectSlug,
|
|
@@ -286,7 +302,7 @@ async function initUpload(host: string, apiKey: string, projectSlug: string, sdk
|
|
|
286
302
|
|
|
287
303
|
async function finishUpload(
|
|
288
304
|
host: string,
|
|
289
|
-
|
|
305
|
+
auth: Auth,
|
|
290
306
|
projectSlug: string,
|
|
291
307
|
sdkVersion: string,
|
|
292
308
|
sha256: string,
|
|
@@ -298,7 +314,7 @@ async function finishUpload(
|
|
|
298
314
|
return fetch(finishUploadUrl.href, {
|
|
299
315
|
method: 'POST',
|
|
300
316
|
headers: {
|
|
301
|
-
|
|
317
|
+
...auth,
|
|
302
318
|
},
|
|
303
319
|
body: JSON.stringify({
|
|
304
320
|
project_slug: projectSlug,
|