apify-cli 0.19.3-beta.5 → 1.0.0-beta.0
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/README.md +73 -52
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +16 -0
- package/bin/run.js +16 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/commands/actor/get-input.d.ts +6 -0
- package/dist/commands/actor/get-input.d.ts.map +1 -0
- package/dist/commands/actor/get-input.js +14 -0
- package/dist/commands/actor/get-input.js.map +1 -0
- package/dist/commands/actor/get-value.d.ts +9 -0
- package/dist/commands/actor/get-value.d.ts.map +1 -0
- package/dist/commands/actor/get-value.js +27 -0
- package/dist/commands/actor/get-value.js.map +1 -0
- package/dist/commands/actor/index.d.ts +6 -0
- package/dist/commands/actor/index.d.ts.map +1 -0
- package/dist/commands/actor/index.js +13 -0
- package/dist/commands/actor/index.js.map +1 -0
- package/dist/commands/actor/push-data.d.ts +11 -0
- package/dist/commands/actor/push-data.d.ts.map +1 -0
- package/dist/commands/actor/push-data.js +56 -0
- package/dist/commands/actor/push-data.js.map +1 -0
- package/dist/commands/actor/set-value.d.ts +15 -0
- package/dist/commands/actor/set-value.d.ts.map +1 -0
- package/dist/commands/actor/set-value.js +76 -0
- package/dist/commands/actor/set-value.js.map +1 -0
- package/dist/commands/call.d.ts +15 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +142 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/check-version.d.ts +11 -0
- package/dist/commands/check-version.d.ts.map +1 -0
- package/dist/commands/check-version.js +39 -0
- package/dist/commands/check-version.js.map +1 -0
- package/dist/commands/create.d.ts +14 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +181 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/edit-input-schema.d.ts +11 -0
- package/dist/commands/edit-input-schema.d.ts.map +1 -0
- package/{src → dist}/commands/edit-input-schema.js +81 -85
- package/dist/commands/edit-input-schema.js.map +1 -0
- package/dist/commands/info.d.ts +6 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +26 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init-wrap-scrapy.d.ts +10 -0
- package/dist/commands/init-wrap-scrapy.d.ts.map +1 -0
- package/dist/commands/init-wrap-scrapy.js +41 -0
- package/dist/commands/init-wrap-scrapy.js.map +1 -0
- package/dist/commands/init.d.ts +12 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +88 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login-new.d.ts +10 -0
- package/dist/commands/login-new.d.ts.map +1 -0
- package/{src → dist}/commands/login-new.js +79 -82
- package/dist/commands/login-new.js.map +1 -0
- package/dist/commands/login.d.ts +9 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +43 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +6 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +20 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/pull.d.ts +12 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +148 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +16 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +242 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/run.d.ts +12 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/{src → dist}/commands/run.js +96 -109
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/secrets/add.d.ts +10 -0
- package/dist/commands/secrets/add.d.ts.map +1 -0
- package/dist/commands/secrets/add.js +31 -0
- package/dist/commands/secrets/add.js.map +1 -0
- package/dist/commands/secrets/index.d.ts +6 -0
- package/dist/commands/secrets/index.d.ts.map +1 -0
- package/dist/commands/secrets/index.js +24 -0
- package/dist/commands/secrets/index.js.map +1 -0
- package/dist/commands/secrets/rm.d.ts +9 -0
- package/dist/commands/secrets/rm.d.ts.map +1 -0
- package/dist/commands/secrets/rm.js +27 -0
- package/dist/commands/secrets/rm.js.map +1 -0
- package/dist/commands/vis.d.ts +9 -0
- package/dist/commands/vis.d.ts.map +1 -0
- package/dist/commands/vis.js +52 -0
- package/dist/commands/vis.js.map +1 -0
- package/dist/hooks/init.d.ts +7 -0
- package/dist/hooks/init.d.ts.map +1 -0
- package/dist/hooks/init.js +17 -0
- package/dist/hooks/init.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/actor.d.ts +27 -0
- package/dist/lib/actor.d.ts.map +1 -0
- package/{src → dist}/lib/actor.js +21 -44
- package/dist/lib/actor.js.map +1 -0
- package/dist/lib/apify-oclif-help.d.ts +15 -0
- package/dist/lib/apify-oclif-help.d.ts.map +1 -0
- package/dist/lib/apify-oclif-help.js +19 -0
- package/dist/lib/apify-oclif-help.js.map +1 -0
- package/dist/lib/apify_command.d.ts +22 -0
- package/dist/lib/apify_command.d.ts.map +1 -0
- package/dist/lib/apify_command.js +103 -0
- package/dist/lib/apify_command.js.map +1 -0
- package/dist/lib/community.d.ts +2 -0
- package/dist/lib/community.d.ts.map +1 -0
- package/dist/lib/community.js +4 -0
- package/dist/lib/community.js.map +1 -0
- package/dist/lib/consts.d.ts +45 -0
- package/dist/lib/consts.d.ts.map +1 -0
- package/dist/lib/consts.js +54 -0
- package/dist/lib/consts.js.map +1 -0
- package/dist/lib/create-utils.d.ts +8 -0
- package/dist/lib/create-utils.d.ts.map +1 -0
- package/{src → dist}/lib/create-utils.js +74 -113
- package/dist/lib/create-utils.js.map +1 -0
- package/dist/lib/exec.d.ts +4 -0
- package/dist/lib/exec.d.ts.map +1 -0
- package/{src → dist}/lib/exec.js +15 -16
- package/dist/lib/exec.js.map +1 -0
- package/dist/lib/files.d.ts +14 -0
- package/dist/lib/files.d.ts.map +1 -0
- package/dist/lib/files.js +58 -0
- package/dist/lib/files.js.map +1 -0
- package/dist/lib/input_schema.d.ts +26 -0
- package/dist/lib/input_schema.d.ts.map +1 -0
- package/{src → dist}/lib/input_schema.js +34 -55
- package/dist/lib/input_schema.js.map +1 -0
- package/dist/lib/local_state.d.ts +11 -0
- package/dist/lib/local_state.d.ts.map +1 -0
- package/dist/lib/local_state.js +27 -0
- package/dist/lib/local_state.js.map +1 -0
- package/dist/lib/outputs.d.ts +7 -0
- package/dist/lib/outputs.d.ts.map +1 -0
- package/{src → dist}/lib/outputs.js +8 -15
- package/dist/lib/outputs.js.map +1 -0
- package/dist/lib/project_analyzer.d.ts +4 -0
- package/dist/lib/project_analyzer.d.ts.map +1 -0
- package/{src → dist}/lib/project_analyzer.js +6 -11
- package/dist/lib/project_analyzer.js.map +1 -0
- package/dist/lib/projects/CrawleeAnalyzer.d.ts +4 -0
- package/dist/lib/projects/CrawleeAnalyzer.d.ts.map +1 -0
- package/{src → dist}/lib/projects/CrawleeAnalyzer.js +7 -24
- package/dist/lib/projects/CrawleeAnalyzer.js.map +1 -0
- package/dist/lib/projects/OldApifySDKAnalyzer.d.ts +4 -0
- package/dist/lib/projects/OldApifySDKAnalyzer.d.ts.map +1 -0
- package/{src → dist}/lib/projects/OldApifySDKAnalyzer.js +9 -32
- package/dist/lib/projects/OldApifySDKAnalyzer.js.map +1 -0
- package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.d.ts +17 -0
- package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.d.ts.map +1 -0
- package/{src/lib/scrapy-wrapper → dist/lib/projects/scrapy}/ScrapyProjectAnalyzer.js +33 -36
- package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.js.map +1 -0
- package/dist/lib/projects/scrapy/Spider.d.ts +14 -0
- package/dist/lib/projects/scrapy/Spider.d.ts.map +1 -0
- package/dist/lib/projects/scrapy/Spider.js +33 -0
- package/dist/lib/projects/scrapy/Spider.js.map +1 -0
- package/dist/lib/projects/scrapy/SpiderFileAnalyzer.d.ts +7 -0
- package/dist/lib/projects/scrapy/SpiderFileAnalyzer.d.ts.map +1 -0
- package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js +25 -0
- package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js.map +1 -0
- package/dist/lib/projects/scrapy/wrapScrapyProject.d.ts +4 -0
- package/dist/lib/projects/scrapy/wrapScrapyProject.d.ts.map +1 -0
- package/{src/lib/scrapy-wrapper/index.js → dist/lib/projects/scrapy/wrapScrapyProject.js} +43 -73
- package/dist/lib/projects/scrapy/wrapScrapyProject.js.map +1 -0
- package/dist/lib/projects/shared.d.ts +2 -0
- package/dist/lib/projects/shared.d.ts.map +1 -0
- package/dist/lib/projects/shared.js +13 -0
- package/dist/lib/projects/shared.js.map +1 -0
- package/dist/lib/secrets.d.ts +22 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/{src → dist}/lib/secrets.js +32 -40
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/telemetry.d.ts +21 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +87 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/types.d.ts +11 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +106 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/{src → dist}/lib/utils.js +235 -347
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/version_check.d.ts +14 -0
- package/dist/lib/version_check.d.ts.map +1 -0
- package/{src → dist}/lib/version_check.js +25 -54
- package/dist/lib/version_check.js.map +1 -0
- package/oclif.manifest.json +722 -1
- package/package.json +137 -113
- package/index.js +0 -1
- package/src/bin/run +0 -16
- package/src/commands/actor/get-input.js +0 -12
- package/src/commands/actor/get-value.js +0 -23
- package/src/commands/actor/index.js +0 -13
- package/src/commands/actor/push-data.js +0 -44
- package/src/commands/actor/set-value.js +0 -63
- package/src/commands/call.js +0 -131
- package/src/commands/check-version.js +0 -28
- package/src/commands/create.js +0 -203
- package/src/commands/info.js +0 -24
- package/src/commands/init-wrap-scrapy.js +0 -34
- package/src/commands/init.js +0 -84
- package/src/commands/login.js +0 -40
- package/src/commands/logout.js +0 -18
- package/src/commands/pull.js +0 -154
- package/src/commands/push.js +0 -234
- package/src/commands/secrets/add.js +0 -28
- package/src/commands/secrets/index.js +0 -24
- package/src/commands/secrets/rm.js +0 -23
- package/src/commands/vis.js +0 -50
- package/src/hooks/init.js +0 -16
- package/src/lib/apify-oclif-help.js +0 -23
- package/src/lib/apify_command.js +0 -82
- package/src/lib/community.js +0 -3
- package/src/lib/consts.js +0 -69
- package/src/lib/files.js +0 -76
- package/src/lib/local_state.js +0 -39
- package/src/lib/scrapy-wrapper/Spider.js +0 -10
- package/src/lib/scrapy-wrapper/SpiderFileAnalyzer.js +0 -26
- package/src/lib/telemetry.js +0 -104
- /package/{src/bin → bin}/run.cmd +0 -0
|
@@ -1,77 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const { getLoggedClient } = require('../lib/utils');
|
|
13
|
-
const { getLocalUserInfo } = require('../lib/utils');
|
|
14
|
-
|
|
1
|
+
import { cryptoRandomObjectId } from '@apify/utilities';
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import computerName from 'computer-name';
|
|
4
|
+
import cors from 'cors';
|
|
5
|
+
import express from 'express';
|
|
6
|
+
import inquirer from 'inquirer';
|
|
7
|
+
import open from 'open';
|
|
8
|
+
import { ApifyCommand } from '../lib/apify_command.js';
|
|
9
|
+
import { error, info, success, warning } from '../lib/outputs.js';
|
|
10
|
+
import { useApifyIdentity } from '../lib/telemetry.js';
|
|
11
|
+
import { getLocalUserInfo, getLoggedClient } from '../lib/utils.js';
|
|
15
12
|
const CONSOLE_BASE_URL = 'https://console.apify.com/account?tab=integrations';
|
|
16
13
|
// const CONSOLE_BASE_URL = 'http://localhost:3000/account?tab=integrations';
|
|
17
14
|
const CONSOLE_URL_ORIGIN = new URL(CONSOLE_BASE_URL).origin;
|
|
18
|
-
|
|
19
15
|
const API_BASE_URL = CONSOLE_BASE_URL.includes('localhost') ? 'http://localhost:3333' : undefined;
|
|
20
|
-
|
|
21
16
|
// Not really checked right now, but it might come useful if we ever need to do some breaking changes
|
|
22
17
|
const API_VERSION = 'v1';
|
|
23
|
-
|
|
24
18
|
const tryToLogin = async (token) => {
|
|
25
19
|
const isUserLogged = await getLoggedClient(token, API_BASE_URL);
|
|
26
|
-
const userInfo = getLocalUserInfo();
|
|
20
|
+
const userInfo = await getLocalUserInfo();
|
|
27
21
|
if (isUserLogged) {
|
|
28
22
|
await useApifyIdentity(userInfo.id);
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
23
|
+
success(`You are logged in to Apify as ${userInfo.username || userInfo.id}!`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
error('Login to Apify failed, the provided API token is not valid.');
|
|
32
27
|
}
|
|
33
28
|
return isUserLogged;
|
|
34
29
|
};
|
|
35
|
-
|
|
36
|
-
class LoginNewCommand extends ApifyCommand {
|
|
30
|
+
export class LoginNewCommand extends ApifyCommand {
|
|
37
31
|
async run() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const { flags } = this.parse(LoginNewCommand);
|
|
41
|
-
const { token } = flags;
|
|
32
|
+
warning('This command is still experimental and might break at any time. Use at your own risk.\n');
|
|
33
|
+
const { token } = this.flags;
|
|
42
34
|
if (token) {
|
|
43
|
-
|
|
35
|
+
await tryToLogin(token);
|
|
36
|
+
return;
|
|
44
37
|
}
|
|
45
|
-
|
|
46
38
|
const answer = await inquirer.prompt([{
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
39
|
+
type: 'list',
|
|
40
|
+
name: 'loginMethod',
|
|
41
|
+
message: 'Choose how you want to log in to Apify',
|
|
42
|
+
choices: [
|
|
43
|
+
{ value: 'console', name: 'Through Apify Console in your default browser', short: 'Through Apify Console' },
|
|
44
|
+
{ value: 'manual', name: 'Enter API token manually', short: 'Manually' },
|
|
45
|
+
],
|
|
46
|
+
loop: false,
|
|
47
|
+
}]);
|
|
57
48
|
if (answer.loginMethod === 'console') {
|
|
58
49
|
let server;
|
|
59
50
|
const app = express();
|
|
60
|
-
|
|
61
51
|
// To send requests from browser to localhost, CORS has to be configured properly
|
|
62
52
|
app.use(cors({
|
|
63
53
|
origin: CONSOLE_URL_ORIGIN,
|
|
64
54
|
allowedHeaders: ['Content-Type', 'Authorization'],
|
|
65
55
|
}));
|
|
66
|
-
|
|
67
56
|
// Turn off keepalive, otherwise closing the server when command is finished is lagging
|
|
68
|
-
app.use((
|
|
57
|
+
app.use((_, res, next) => {
|
|
69
58
|
res.set('Connection', 'close');
|
|
70
59
|
next();
|
|
71
60
|
});
|
|
72
|
-
|
|
73
61
|
app.use(express.json());
|
|
74
|
-
|
|
75
62
|
// Basic authorization via a random token, which is passed to the Apify Console,
|
|
76
63
|
// and that sends it back via the `token` query param, or `Authorization` header
|
|
77
64
|
const authToken = cryptoRandomObjectId();
|
|
@@ -86,84 +73,94 @@ class LoginNewCommand extends ApifyCommand {
|
|
|
86
73
|
}
|
|
87
74
|
}
|
|
88
75
|
}
|
|
89
|
-
|
|
90
76
|
if (serverToken !== authToken) {
|
|
91
77
|
res.status(401);
|
|
92
78
|
res.send('Authorization failed');
|
|
93
|
-
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
94
81
|
next();
|
|
95
82
|
}
|
|
96
83
|
});
|
|
97
|
-
|
|
98
84
|
const apiRouter = express.Router();
|
|
99
85
|
app.use(`/api/${API_VERSION}`, apiRouter);
|
|
100
|
-
|
|
101
86
|
apiRouter.post('/login-token', async (req, res) => {
|
|
102
87
|
try {
|
|
103
88
|
if (req.body.apiToken) {
|
|
104
89
|
await tryToLogin(req.body.apiToken);
|
|
105
|
-
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
106
92
|
throw new Error('Request did not contain API token');
|
|
107
93
|
}
|
|
108
94
|
res.end();
|
|
109
|
-
}
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
110
97
|
const errorMessage = `Login to Apify failed with error: ${err.message}`;
|
|
111
|
-
|
|
98
|
+
error(errorMessage);
|
|
112
99
|
res.status(500);
|
|
113
100
|
res.send(errorMessage);
|
|
114
101
|
}
|
|
115
102
|
server.close();
|
|
116
103
|
});
|
|
117
|
-
|
|
118
104
|
apiRouter.post('/exit', (req, res) => {
|
|
119
105
|
if (req.body.isWindowClosed) {
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
106
|
+
error('Login to Apify failed, the console window was closed.');
|
|
107
|
+
}
|
|
108
|
+
else if (req.body.actionCanceled) {
|
|
109
|
+
error('Login to Apify failed, the action was canceled in the Apify Console.');
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
error('Login to Apify failed.');
|
|
125
113
|
}
|
|
126
|
-
|
|
127
114
|
res.end();
|
|
128
115
|
server.close();
|
|
129
116
|
});
|
|
130
|
-
|
|
131
117
|
// Listening on port 0 will assign a random available port
|
|
132
118
|
server = app.listen(0);
|
|
133
119
|
const { port } = server.address();
|
|
134
|
-
|
|
135
120
|
const consoleUrl = new URL(CONSOLE_BASE_URL);
|
|
136
121
|
consoleUrl.searchParams.set('localCliCommand', 'login');
|
|
137
|
-
consoleUrl.searchParams.set('localCliPort', port);
|
|
122
|
+
consoleUrl.searchParams.set('localCliPort', `${port}`);
|
|
138
123
|
consoleUrl.searchParams.set('localCliToken', authToken);
|
|
139
124
|
consoleUrl.searchParams.set('localCliApiVersion', API_VERSION);
|
|
140
125
|
try {
|
|
141
126
|
consoleUrl.searchParams.set('localCliComputerName', encodeURIComponent(computerName()));
|
|
142
|
-
}
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
143
129
|
// Ignore errors from fetching computer name as it's not critical
|
|
144
130
|
}
|
|
145
|
-
|
|
146
|
-
outputs.info(`Opening Apify Console at "${consoleUrl.href}"...`);
|
|
131
|
+
info(`Opening Apify Console at "${consoleUrl.href}"...`);
|
|
147
132
|
await open(consoleUrl.href);
|
|
148
|
-
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
149
135
|
const tokenAnswer = await inquirer.prompt([{ name: 'token', message: 'Insert your Apify API token', type: 'password' }]);
|
|
150
|
-
|
|
136
|
+
await tryToLogin(tokenAnswer.token);
|
|
151
137
|
}
|
|
152
138
|
}
|
|
153
139
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
140
|
+
Object.defineProperty(LoginNewCommand, "description", {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
configurable: true,
|
|
143
|
+
writable: true,
|
|
144
|
+
value: 'Logs in to your Apify account using your API token.\nThe API token and other account '
|
|
145
|
+
+ 'information is stored in the ~/.apify directory, from where it is read by all other "apify" commands. '
|
|
146
|
+
+ 'To log out, call "apify logout".'
|
|
147
|
+
});
|
|
148
|
+
Object.defineProperty(LoginNewCommand, "flags", {
|
|
149
|
+
enumerable: true,
|
|
150
|
+
configurable: true,
|
|
151
|
+
writable: true,
|
|
152
|
+
value: {
|
|
153
|
+
token: Flags.string({
|
|
154
|
+
char: 't',
|
|
155
|
+
description: '[Optional] Apify API token',
|
|
156
|
+
required: false,
|
|
157
|
+
}),
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
Object.defineProperty(LoginNewCommand, "hidden", {
|
|
161
|
+
enumerable: true,
|
|
162
|
+
configurable: true,
|
|
163
|
+
writable: true,
|
|
164
|
+
value: true
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=login-new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-new.js","sourceRoot":"","sources":["../../src/commands/login-new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ApifyCommand } from '../lib/apify_command.js';
|
|
2
|
+
export declare class LoginCommand extends ApifyCommand<typeof LoginCommand> {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
token: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
6
|
+
};
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAKvD,qBAAa,YAAa,SAAQ,YAAY,CAAC,OAAO,YAAY,CAAC;IAC/D,OAAgB,WAAW,SAEU;IAErC,OAAgB,KAAK;;MAMnB;IAEI,GAAG;CAgBZ"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import { ApifyCommand } from '../lib/apify_command.js';
|
|
4
|
+
import { error, success } from '../lib/outputs.js';
|
|
5
|
+
import { useApifyIdentity } from '../lib/telemetry.js';
|
|
6
|
+
import { getLocalUserInfo, getLoggedClient } from '../lib/utils.js';
|
|
7
|
+
export class LoginCommand extends ApifyCommand {
|
|
8
|
+
async run() {
|
|
9
|
+
let { token } = this.flags;
|
|
10
|
+
if (!token) {
|
|
11
|
+
console.log('Enter your Apify API token. You can find it at https://console.apify.com/account#/integrations');
|
|
12
|
+
const tokenPrompt = await inquirer.prompt([{ name: 'token', message: 'token:', type: 'password' }]);
|
|
13
|
+
({ token } = tokenPrompt);
|
|
14
|
+
}
|
|
15
|
+
const isUserLogged = await getLoggedClient(token);
|
|
16
|
+
const userInfo = await getLocalUserInfo();
|
|
17
|
+
await useApifyIdentity(userInfo.id);
|
|
18
|
+
return isUserLogged
|
|
19
|
+
? success(`You are logged in to Apify as ${userInfo.username || userInfo.id}!`)
|
|
20
|
+
: error('Login to Apify failed, the provided API token is not valid.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(LoginCommand, "description", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: 'Logs in to your Apify account using a provided API token.\nThe API token and other account '
|
|
28
|
+
+ 'information is stored in the ~/.apify directory, from where it is read by all other "apify" commands. '
|
|
29
|
+
+ 'To log out, call "apify logout".'
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(LoginCommand, "flags", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: {
|
|
36
|
+
token: Flags.string({
|
|
37
|
+
char: 't',
|
|
38
|
+
description: '[Optional] Apify API token',
|
|
39
|
+
required: false,
|
|
40
|
+
}),
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,OAAO,YAAa,SAAQ,YAAiC;IAa/D,KAAK,CAAC,GAAG;QACL,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,gGAAgG,CAAC,CAAC;YAC9G,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAoB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YACvH,CAAC,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC1C,MAAM,gBAAgB,CAAC,QAAQ,CAAC,EAAG,CAAC,CAAC;QACrC,OAAO,YAAY;YACf,CAAC,CAAC,OAAO,CAAC,iCAAiC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,GAAG,CAAC;YAC/E,CAAC,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC/E,CAAC;;AA3Be;;;;WAAc,6FAA6F;UACzH,wGAAwG;UACxG,kCAAkC;GAAC;AAErB;;;;WAAQ;QACpB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,KAAK;SAClB,CAAC;KACL;GAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMvD,qBAAa,aAAc,SAAQ,YAAY,CAAC,OAAO,aAAa,CAAC;IACjE,OAAgB,WAAW,SACoE;IAEzF,GAAG;CAKZ"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ApifyCommand } from '../lib/apify_command.js';
|
|
2
|
+
import { AUTH_FILE_PATH } from '../lib/consts.js';
|
|
3
|
+
import { rimrafPromised } from '../lib/files.js';
|
|
4
|
+
import { success } from '../lib/outputs.js';
|
|
5
|
+
import { regenerateLocalDistinctId } from '../lib/telemetry.js';
|
|
6
|
+
export class LogoutCommand extends ApifyCommand {
|
|
7
|
+
async run() {
|
|
8
|
+
await rimrafPromised(AUTH_FILE_PATH());
|
|
9
|
+
regenerateLocalDistinctId();
|
|
10
|
+
success('You are logged out from your Apify account.');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(LogoutCommand, "description", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
value: 'Logs out of your Apify account.\nThe command deletes the API token and all other '
|
|
18
|
+
+ 'account information stored in the ~/.apify directory. To log in again, call "apify login".'
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,OAAO,aAAc,SAAQ,YAAkC;IAIjE,KAAK,CAAC,GAAG;QACL,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC;QACvC,yBAAyB,EAAE,CAAC;QAC5B,OAAO,CAAC,6CAA6C,CAAC,CAAC;IAC3D,CAAC;;AAPe;;;;WAAc,mFAAmF;UAC/G,4FAA4F;GAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ApifyCommand } from '../lib/apify_command.js';
|
|
2
|
+
export declare class PullCommand extends ApifyCommand<typeof PullCommand> {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
version: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
6
|
+
};
|
|
7
|
+
static args: {
|
|
8
|
+
actorId: import("@oclif/core/lib/interfaces/parser.js").Arg<string | undefined, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAavD,qBAAa,WAAY,SAAQ,YAAY,CAAC,OAAO,WAAW,CAAC;IAC7D,OAAgB,WAAW,SACsF;IAEjH,OAAgB,KAAK;;MAMnB;IAEF,OAAgB,IAAI;;MAMlB;IAEI,GAAG;CA2GZ"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { mkdirSync, readdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
import { Args, Flags } from '@oclif/core';
|
|
5
|
+
import AdmZip from 'adm-zip';
|
|
6
|
+
import axios from 'axios';
|
|
7
|
+
import jju from 'jju';
|
|
8
|
+
import { gt } from 'semver';
|
|
9
|
+
import tiged from 'tiged';
|
|
10
|
+
import { ApifyCommand } from '../lib/apify_command.js';
|
|
11
|
+
import { LOCAL_CONFIG_PATH } from '../lib/consts.js';
|
|
12
|
+
import { error, success } from '../lib/outputs.js';
|
|
13
|
+
import { getLocalConfigOrThrow, getLocalUserInfo, getLoggedClientOrThrow } from '../lib/utils.js';
|
|
14
|
+
const extractGitHubZip = async (url, directoryPath) => {
|
|
15
|
+
const { data } = await axios.get(url, { responseType: 'arraybuffer' });
|
|
16
|
+
const zipFile = new AdmZip(Buffer.from(data, 'binary'));
|
|
17
|
+
zipFile.extractEntryTo(zipFile.getEntries()[0].entryName, directoryPath, false);
|
|
18
|
+
};
|
|
19
|
+
export class PullCommand extends ApifyCommand {
|
|
20
|
+
async run() {
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
const localConfig = await getLocalConfigOrThrow(cwd);
|
|
23
|
+
const userInfo = await getLocalUserInfo();
|
|
24
|
+
const apifyClient = await getLoggedClientOrThrow();
|
|
25
|
+
const isActorAutomaticallyDetected = !this.args?.actorId;
|
|
26
|
+
const usernameOrId = userInfo.username || userInfo.id;
|
|
27
|
+
const actorId = this.args?.actorId || localConfig?.id || (localConfig?.name ? `${usernameOrId}/${localConfig.name}` : undefined);
|
|
28
|
+
if (!actorId)
|
|
29
|
+
throw new Error('Cannot find Actor in this directory.');
|
|
30
|
+
let actor;
|
|
31
|
+
try {
|
|
32
|
+
actor = await apifyClient.actor(actorId).get();
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw new Error(`Cannot find Actor with ID/name '${actorId}' in your account.`);
|
|
36
|
+
}
|
|
37
|
+
if (!actor)
|
|
38
|
+
throw new Error(`Cannot find Actor with ID/name '${actorId}' in your account.`);
|
|
39
|
+
const { name, versions } = actor;
|
|
40
|
+
let correctVersion = null;
|
|
41
|
+
if (this.flags?.version) {
|
|
42
|
+
correctVersion = versions.find((version) => version.versionNumber === this.flags?.version);
|
|
43
|
+
if (!correctVersion) {
|
|
44
|
+
throw new Error(`Cannot find version ${this.flags?.version} of Actor ${actorId}.`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (!correctVersion) {
|
|
48
|
+
correctVersion = versions.reduce((match, curr) => {
|
|
49
|
+
if (gt(`${curr.versionNumber}.0`, `${match.versionNumber}.0`))
|
|
50
|
+
return curr;
|
|
51
|
+
return match;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const dirpath = isActorAutomaticallyDetected ? cwd : join(cwd, name);
|
|
55
|
+
mkdirSync(dirpath, { recursive: true });
|
|
56
|
+
if (!isActorAutomaticallyDetected && !(readdirSync(dirpath).length === 0)) {
|
|
57
|
+
error(`Directory ${dirpath} is not empty. Please empty it or choose another directory.`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
switch (correctVersion.sourceType) {
|
|
61
|
+
case 'TARBALL': {
|
|
62
|
+
await extractGitHubZip(correctVersion.tarballUrl, dirpath);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case 'SOURCE_FILES': {
|
|
66
|
+
const { sourceFiles } = correctVersion;
|
|
67
|
+
for (const file of sourceFiles) {
|
|
68
|
+
const folderPath = dirname(file.name);
|
|
69
|
+
mkdirSync(`${dirpath}/${folderPath}`, { recursive: true });
|
|
70
|
+
// @ts-expect-error TODO: is this an actual field?
|
|
71
|
+
if (!file.folder) {
|
|
72
|
+
const fileContent = file.format === 'BASE64' ? Buffer.from(file.content, 'base64').toString() : file.content;
|
|
73
|
+
if (file.name === LOCAL_CONFIG_PATH) {
|
|
74
|
+
const actorJson = jju.parse(fileContent);
|
|
75
|
+
actorJson.name = actor.name;
|
|
76
|
+
writeFileSync(`${dirpath}/${file.name}`, jju.update(fileContent, actorJson));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
writeFileSync(`${dirpath}/${file.name}`, fileContent);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case 'GIT_REPO': {
|
|
86
|
+
// e.g. https://github.com/jakubbalada/Datasety.git#master:RejstrikPolitickychStran
|
|
87
|
+
const { gitRepoUrl } = correctVersion;
|
|
88
|
+
const [repoUrl, branchDirPart] = gitRepoUrl.split('#');
|
|
89
|
+
let branch;
|
|
90
|
+
let dir;
|
|
91
|
+
if (branchDirPart)
|
|
92
|
+
[branch, dir] = branchDirPart.split(':');
|
|
93
|
+
let branchDirRepoUrl = repoUrl;
|
|
94
|
+
if (dir)
|
|
95
|
+
branchDirRepoUrl += `/${dir}`;
|
|
96
|
+
if (branch)
|
|
97
|
+
branchDirRepoUrl += `#${branch}`;
|
|
98
|
+
const emitter = tiged(branchDirRepoUrl);
|
|
99
|
+
try {
|
|
100
|
+
await emitter.clone(dirpath);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
throw new Error(`Failed to pull Actor from ${gitRepoUrl}. ${err.message}`);
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 'GITHUB_GIST': {
|
|
108
|
+
await extractGitHubZip(`${correctVersion.gitHubGistUrl}/archive/master.zip`, dirpath);
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
default:
|
|
112
|
+
throw new Error(`Unknown source type: ${correctVersion.sourceType}`);
|
|
113
|
+
}
|
|
114
|
+
success(isActorAutomaticallyDetected ? `Actor ${name} updated at ${dirpath}/` : `Pulled to ${dirpath}/`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
Object.defineProperty(PullCommand, "description", {
|
|
118
|
+
enumerable: true,
|
|
119
|
+
configurable: true,
|
|
120
|
+
writable: true,
|
|
121
|
+
value: 'Pulls an Actor from the Apify platform to the current directory. '
|
|
122
|
+
+ 'If it is defined as Git repository, it will be cloned. If it is defined as Web IDE, it will fetch the files.'
|
|
123
|
+
});
|
|
124
|
+
Object.defineProperty(PullCommand, "flags", {
|
|
125
|
+
enumerable: true,
|
|
126
|
+
configurable: true,
|
|
127
|
+
writable: true,
|
|
128
|
+
value: {
|
|
129
|
+
version: Flags.string({
|
|
130
|
+
char: 'v',
|
|
131
|
+
description: 'Actor version number which will be pulled, e.g. 1.2. Default: the highest version',
|
|
132
|
+
required: false,
|
|
133
|
+
}),
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
Object.defineProperty(PullCommand, "args", {
|
|
137
|
+
enumerable: true,
|
|
138
|
+
configurable: true,
|
|
139
|
+
writable: true,
|
|
140
|
+
value: {
|
|
141
|
+
actorId: Args.string({
|
|
142
|
+
required: false,
|
|
143
|
+
description: 'Name or ID of the Actor to run (e.g. "apify/hello-world" or "E2jjCZBezvAZnX8Rb"). '
|
|
144
|
+
+ 'If not provided, the command will update the Actor in the current directory based on its name in ".actor/actor.json" file.',
|
|
145
|
+
}),
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=pull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApifyCommand } from '../lib/apify_command.js';
|
|
2
|
+
export declare class PushCommand extends ApifyCommand<typeof PushCommand> {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
'version-number': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
6
|
+
version: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
'build-tag': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
'wait-for-finish': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
'no-prompt': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
actorId: import("@oclif/core/lib/interfaces/parser.js").Arg<string | undefined, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AA6BvD,qBAAa,WAAY,SAAQ,YAAY,CAAC,OAAO,WAAW,CAAC;IAC7D,OAAgB,WAAW,SAIoE;IAE/F,OAAgB,KAAK;;;;;;MA2BnB;IAEF,OAAgB,IAAI;;MAMlB;IAEI,GAAG;CAmKZ"}
|