@datacamp/learn-vm-scripts 0.0.1-rc.2 → 0.0.1-rc.3
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 +1 -1
- package/dist/index.cjs +96871 -0
- package/dist/index.js +96870 -9
- package/package.json +6 -5
- package/dist/awsLogin.js +0 -19
- package/dist/awsLogin.js.map +0 -1
- package/dist/azureLogin.js +0 -30
- package/dist/azureLogin.js.map +0 -1
- package/dist/cloudLoginService.js +0 -89
- package/dist/cloudLoginService.js.map +0 -1
- package/dist/databricksLogin.js +0 -11
- package/dist/databricksLogin.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/setup.js +0 -21
- package/dist/setup.js.map +0 -1
- package/dist/startInputWatcher.js +0 -80
- package/dist/startInputWatcher.js.map +0 -1
- package/dist/startInputWatcher.spec.js +0 -50
- package/dist/startInputWatcher.spec.js.map +0 -1
- package/dist/utils.js +0 -9
- package/dist/utils.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datacamp/learn-vm-scripts",
|
|
3
|
-
"version": "0.0.1-rc.
|
|
3
|
+
"version": "0.0.1-rc.3",
|
|
4
4
|
"repository": "git@github.com:datacamp-engineering/learn-vm-scripts.git",
|
|
5
5
|
"description": "Scripts used by VMs in learn.",
|
|
6
|
-
"main": "./dist/index.
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
10
|
"bin": {
|
|
11
|
-
"vm-scripts": "./dist/index.
|
|
11
|
+
"vm-scripts": "./dist/index.cjs"
|
|
12
12
|
},
|
|
13
13
|
"type": "module",
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "
|
|
15
|
+
"build": "esbuild src/index.ts --bundle --platform=node --outfile=dist/index.cjs",
|
|
16
16
|
"dev": "NODE_ENV=development yarn build && yarn cli",
|
|
17
17
|
"lint": "eslint --ext ts .",
|
|
18
18
|
"deduplicate": "yarn-deduplicate",
|
|
19
|
-
"cli": "node dist/index.
|
|
19
|
+
"cli": "node dist/index.cjs",
|
|
20
20
|
"test": "vitest"
|
|
21
21
|
},
|
|
22
22
|
"keywords": [],
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"@types/yargs": "^17.0.32",
|
|
40
40
|
"@typescript-eslint/eslint-plugin": "^7.17.0",
|
|
41
41
|
"@typescript-eslint/parser": "^7.17.0",
|
|
42
|
+
"esbuild": "^0.23.0",
|
|
42
43
|
"eslint": "^8.32.0",
|
|
43
44
|
"eslint-config-prettier": "^9.1.0",
|
|
44
45
|
"eslint-plugin-jest": "^28.6.0",
|
package/dist/awsLogin.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import ora from 'ora';
|
|
3
|
-
import { ensureHttps } from './utils';
|
|
4
|
-
export async function loginToAWS({ url, username, page, password, }) {
|
|
5
|
-
const spinner = ora('Launching browser...').start();
|
|
6
|
-
spinner.succeed('Browser launched');
|
|
7
|
-
spinner.start('Navigating to AWS login page...');
|
|
8
|
-
await page.goto(ensureHttps(url));
|
|
9
|
-
await page.waitForSelector('input[name="username"]');
|
|
10
|
-
await page.type('input[name="username"]', username);
|
|
11
|
-
await page.waitForSelector('input[name="password"]');
|
|
12
|
-
await page.type('input[name="password"]', password);
|
|
13
|
-
await page.waitForSelector('input[id="remember_account_checkbox"]');
|
|
14
|
-
await page.click('input[id="remember_account_checkbox"]');
|
|
15
|
-
await page.waitForSelector('a[id="signin_button"]');
|
|
16
|
-
await page.click('a[id="signin_button"]');
|
|
17
|
-
spinner.succeed(chalk.green('Logged in to AWS successfully'));
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=awsLogin.js.map
|
package/dist/awsLogin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"awsLogin.js","sourceRoot":"","sources":["../src/awsLogin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAC/B,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,QAAQ,GAMT;IACC,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAElC,MAAM,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACrD,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAEpD,MAAM,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACrD,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAEpD,MAAM,IAAI,CAAC,eAAe,CAAC,uCAAuC,CAAC,CAAC;IACpE,MAAM,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE1D,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IACpD,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/azureLogin.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import ora from 'ora';
|
|
3
|
-
import { AZURE_LOGIN_URL, ensureHttps } from './utils';
|
|
4
|
-
export async function loginToAzure({ url, username, page, password, }) {
|
|
5
|
-
const spinner = ora('Launching browser...').start();
|
|
6
|
-
spinner.succeed('Browser launched');
|
|
7
|
-
spinner.start('Navigating to Azure login page...');
|
|
8
|
-
await page.goto(ensureHttps(url || AZURE_LOGIN_URL));
|
|
9
|
-
spinner.start('Entering email...');
|
|
10
|
-
await page.waitForNavigation();
|
|
11
|
-
await page.waitForSelector('[name="loginfmt"]');
|
|
12
|
-
await page.type('[name="loginfmt"]', username);
|
|
13
|
-
await page.click('[type="submit"]');
|
|
14
|
-
spinner.start('Entering password...');
|
|
15
|
-
await new Promise((resolve) => {
|
|
16
|
-
setTimeout(resolve, 1000);
|
|
17
|
-
});
|
|
18
|
-
await page.waitForSelector('input[type="password"]', { visible: true });
|
|
19
|
-
await page.type('input[type="password"]', password);
|
|
20
|
-
await page.keyboard.press('Enter');
|
|
21
|
-
await page.waitForNavigation();
|
|
22
|
-
await page.waitForSelector('[type="submit"]');
|
|
23
|
-
await page.click('[type="submit"]');
|
|
24
|
-
// continue after "Stay signed-in" modal:
|
|
25
|
-
await page.keyboard.press('Enter');
|
|
26
|
-
spinner.start('Logging in...');
|
|
27
|
-
await page.waitForNavigation();
|
|
28
|
-
spinner.succeed(chalk.green('Logged in to Azure successfully'));
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=azureLogin.js.map
|
package/dist/azureLogin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"azureLogin.js","sourceRoot":"","sources":["../src/azureLogin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,QAAQ,GAMT;IACC,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;IAErD,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAE/B,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC5B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAE/B,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEpC,yCAAyC;IACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import yargs from 'yargs';
|
|
2
|
-
import * as fs from 'node:fs/promises';
|
|
3
|
-
import * as readline from 'node:readline';
|
|
4
|
-
import * as z from 'zod';
|
|
5
|
-
import { setupBrowser } from './setup.js';
|
|
6
|
-
import { loginToAzure } from './azureLogin.js';
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import { loginToAWS } from './awsLogin.js';
|
|
9
|
-
import { loginToDatabricks } from './databricksLogin.js';
|
|
10
|
-
const argv = yargs(process.argv.slice(2))
|
|
11
|
-
.options({
|
|
12
|
-
inputFilePath: { demandOption: true, type: 'string' },
|
|
13
|
-
outputFilePath: { demandOption: true, type: 'string' },
|
|
14
|
-
})
|
|
15
|
-
.parseSync();
|
|
16
|
-
const Input = z.object({
|
|
17
|
-
cloudProvider: z.enum(['aws', 'azure', 'databricks']),
|
|
18
|
-
password: z.string(),
|
|
19
|
-
url: z.string(),
|
|
20
|
-
username: z.string(),
|
|
21
|
-
});
|
|
22
|
-
const handleInput = async (line) => {
|
|
23
|
-
try {
|
|
24
|
-
console.log('DEBUG line: ', line);
|
|
25
|
-
const { cloudProvider, url, password, username } = Input.parse(JSON.parse(line));
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
27
|
-
const { browser, page } = await setupBrowser();
|
|
28
|
-
switch (cloudProvider) {
|
|
29
|
-
case 'azure':
|
|
30
|
-
await loginToAzure({ url, username, page, password });
|
|
31
|
-
break;
|
|
32
|
-
case 'aws':
|
|
33
|
-
if (!url) {
|
|
34
|
-
console.error(chalk.red('AWS URL is required'));
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
await loginToAWS({ url, username, page, password });
|
|
38
|
-
break;
|
|
39
|
-
case 'databricks':
|
|
40
|
-
if (!url) {
|
|
41
|
-
console.error(chalk.red('Databricks URL is required'));
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
await loginToAzure({
|
|
45
|
-
url: undefined,
|
|
46
|
-
username,
|
|
47
|
-
page,
|
|
48
|
-
password,
|
|
49
|
-
});
|
|
50
|
-
await loginToDatabricks({ url, page });
|
|
51
|
-
break;
|
|
52
|
-
default:
|
|
53
|
-
console.error(chalk.red('Unsupported cloud provider'));
|
|
54
|
-
}
|
|
55
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
console.error(chalk.red(`Error: ${error.message}`));
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
const startInputWatcher = async () => {
|
|
62
|
-
let position = 0;
|
|
63
|
-
const inputFileHandle = await fs.open(argv.inputFilePath, 'r');
|
|
64
|
-
const outputFileHandle = await fs.open(argv.outputFilePath, 'a');
|
|
65
|
-
for await (const event of fs.watch(argv.inputFilePath)) {
|
|
66
|
-
if (event.eventType !== 'change') {
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
const stats = await inputFileHandle.stat();
|
|
70
|
-
if (stats.size === position) {
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
const stream = inputFileHandle.createReadStream({
|
|
74
|
-
start: position,
|
|
75
|
-
end: stats.size,
|
|
76
|
-
});
|
|
77
|
-
const rl = readline.createInterface({
|
|
78
|
-
input: stream,
|
|
79
|
-
crlfDelay: Infinity,
|
|
80
|
-
});
|
|
81
|
-
for await (const line of rl) {
|
|
82
|
-
await handleInput(line);
|
|
83
|
-
await outputFileHandle.appendFile(`Done: ${line}\n`);
|
|
84
|
-
}
|
|
85
|
-
position = stats.size;
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
void startInputWatcher();
|
|
89
|
-
//# sourceMappingURL=cloudLoginService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloudLoginService.js","sourceRoot":"","sources":["../src/cloudLoginService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtC,OAAO,CAAC;IACP,aAAa,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrD,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;CACvD,CAAC;KACD,SAAS,EAAE,CAAC;AAEf,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACzC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,KAAK,CAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CACjB,CAAC;QAEF,6DAA6D;QAC7D,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;QAE/C,QAAQ,aAAa,EAAE,CAAC;YACtB,KAAK,OAAO;gBACV,MAAM,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,YAAY,CAAC;oBACjB,GAAG,EAAE,SAAS;oBACd,QAAQ;oBACR,IAAI;oBACJ,QAAQ;iBACT,CAAC,CAAC;gBACH,MAAM,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,8DAA8D;IAChE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;IACnC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAEjE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,gBAAgB,CAAC;YAC9C,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,KAAK,CAAC,IAAI;SAChB,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF,KAAK,iBAAiB,EAAE,CAAC"}
|
package/dist/databricksLogin.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import ora from 'ora';
|
|
3
|
-
import { ensureHttps } from './utils';
|
|
4
|
-
export async function loginToDatabricks({ url, page, }) {
|
|
5
|
-
const spinner = ora('Navigating to Databricks login page...').start();
|
|
6
|
-
await page.goto(ensureHttps(url));
|
|
7
|
-
await page.waitForSelector('.aad-btn');
|
|
8
|
-
await page.click('.aad-btn');
|
|
9
|
-
spinner.succeed(chalk.green('Logged in to Databricks successfully'));
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=databricksLogin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"databricksLogin.js","sourceRoot":"","sources":["../src/databricksLogin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,GAAG,EACH,IAAI,GAIL;IACC,MAAM,OAAO,GAAG,GAAG,CAAC,wCAAwC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEtE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAElC,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtC,OAAO,CAAC;IACP,aAAa,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrD,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;CACvD,CAAC;KACD,SAAS,EAAE,CAAC;AAEf,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/setup.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import * as dotenv from 'dotenv';
|
|
2
|
-
import puppeteer from 'puppeteer-core';
|
|
3
|
-
const envFile = process.env.NODE_ENV === 'production' ? '.env' : '.env.development';
|
|
4
|
-
dotenv.config({ path: envFile });
|
|
5
|
-
export async function setupBrowser() {
|
|
6
|
-
const browser = await puppeteer.launch({
|
|
7
|
-
args: ['--start-maximized', '--enable-save-password-bubble'],
|
|
8
|
-
executablePath: process.env.EXECUTABLE_PATH,
|
|
9
|
-
headless: false,
|
|
10
|
-
defaultViewport: null,
|
|
11
|
-
ignoreDefaultArgs: ['--enable-automation'],
|
|
12
|
-
userDataDir: process.env.USER_DATA_DIR,
|
|
13
|
-
});
|
|
14
|
-
const pages = await browser.pages();
|
|
15
|
-
if (pages[0] !== undefined) {
|
|
16
|
-
return { browser, page: pages[0] };
|
|
17
|
-
}
|
|
18
|
-
const page = await browser.newPage();
|
|
19
|
-
return { browser, page };
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=setup.js.map
|
package/dist/setup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACtE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;QACrC,IAAI,EAAE,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;QAC5D,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3C,QAAQ,EAAE,KAAK;QACf,eAAe,EAAE,IAAI;QACrB,iBAAiB,EAAE,CAAC,qBAAqB,CAAC;QAC1C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;KACvC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import * as fs from 'node:fs/promises';
|
|
2
|
-
import * as readline from 'node:readline';
|
|
3
|
-
import * as z from 'zod';
|
|
4
|
-
import { setupBrowser } from './setup';
|
|
5
|
-
import { loginToAzure } from './azureLogin';
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
import { loginToAWS } from './awsLogin';
|
|
8
|
-
import { loginToDatabricks } from './databricksLogin';
|
|
9
|
-
const Input = z.object({
|
|
10
|
-
cloudProvider: z.enum(['aws', 'azure', 'databricks']),
|
|
11
|
-
password: z.string(),
|
|
12
|
-
url: z.string(),
|
|
13
|
-
username: z.string(),
|
|
14
|
-
});
|
|
15
|
-
const handleInput = async (line) => {
|
|
16
|
-
try {
|
|
17
|
-
const { cloudProvider, url, password, username } = Input.parse(JSON.parse(line));
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
19
|
-
const { browser, page } = await setupBrowser();
|
|
20
|
-
switch (cloudProvider) {
|
|
21
|
-
case 'azure':
|
|
22
|
-
await loginToAzure({ url, username, page, password });
|
|
23
|
-
break;
|
|
24
|
-
case 'aws':
|
|
25
|
-
if (!url) {
|
|
26
|
-
console.error(chalk.red('AWS URL is required'));
|
|
27
|
-
process.exit(1);
|
|
28
|
-
}
|
|
29
|
-
await loginToAWS({ url, username, page, password });
|
|
30
|
-
break;
|
|
31
|
-
case 'databricks':
|
|
32
|
-
if (!url) {
|
|
33
|
-
console.error(chalk.red('Databricks URL is required'));
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
await loginToAzure({
|
|
37
|
-
url: undefined,
|
|
38
|
-
username,
|
|
39
|
-
page,
|
|
40
|
-
password,
|
|
41
|
-
});
|
|
42
|
-
await loginToDatabricks({ url, page });
|
|
43
|
-
break;
|
|
44
|
-
default:
|
|
45
|
-
console.error(chalk.red('Unsupported cloud provider'));
|
|
46
|
-
}
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
console.error(chalk.red(`Error: ${error.message}`));
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
export const startInputWatcher = async ({ inputFilePath, outputFilePath, }) => {
|
|
54
|
-
let position = 0;
|
|
55
|
-
const inputFileHandle = await fs.open(inputFilePath, 'r');
|
|
56
|
-
const outputFileHandle = await fs.open(outputFilePath, 'a');
|
|
57
|
-
for await (const event of fs.watch(inputFilePath)) {
|
|
58
|
-
if (event.eventType !== 'change') {
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
const stats = await inputFileHandle.stat();
|
|
62
|
-
if (stats.size === position) {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
const stream = inputFileHandle.createReadStream({
|
|
66
|
-
start: position,
|
|
67
|
-
end: stats.size,
|
|
68
|
-
});
|
|
69
|
-
const rl = readline.createInterface({
|
|
70
|
-
input: stream,
|
|
71
|
-
crlfDelay: Infinity,
|
|
72
|
-
});
|
|
73
|
-
for await (const line of rl) {
|
|
74
|
-
await handleInput(line);
|
|
75
|
-
await outputFileHandle.appendFile(`Done: ${line}\n`);
|
|
76
|
-
}
|
|
77
|
-
position = stats.size;
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=startInputWatcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startInputWatcher.js","sourceRoot":"","sources":["../src/startInputWatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { loginToAzure } from './azureLogin';
|
|
2
|
-
import { startInputWatcher } from './startInputWatcher';
|
|
3
|
-
import * as fs from 'node:fs/promises';
|
|
4
|
-
import { test, describe, expect, afterEach, vitest, beforeEach, } from 'vitest';
|
|
5
|
-
import { setupBrowser } from './setup';
|
|
6
|
-
vitest.mock('./azureLogin');
|
|
7
|
-
vitest.mock('./setup');
|
|
8
|
-
const loginToAzureMock = loginToAzure;
|
|
9
|
-
const setupBrowserMock = setupBrowser;
|
|
10
|
-
describe('startInputWatcher', () => {
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
setupBrowserMock.mockResolvedValue({
|
|
13
|
-
browser: 'chrome',
|
|
14
|
-
page: 'some-page',
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
afterEach(() => {
|
|
19
|
-
vitest.restoreAllMocks();
|
|
20
|
-
});
|
|
21
|
-
test('starts an input watcher that calls loginToAzure', async () => {
|
|
22
|
-
loginToAzureMock.mockResolvedValue(undefined);
|
|
23
|
-
const temporaryDirectory = await fs.mkdtemp('/tmp/');
|
|
24
|
-
const inputFilePath = `${temporaryDirectory}/input.txt`;
|
|
25
|
-
const outputFilePath = `${temporaryDirectory}/output.txt`;
|
|
26
|
-
await fs.writeFile(inputFilePath, '');
|
|
27
|
-
await fs.writeFile(outputFilePath, '');
|
|
28
|
-
void startInputWatcher({
|
|
29
|
-
inputFilePath,
|
|
30
|
-
outputFilePath,
|
|
31
|
-
});
|
|
32
|
-
const input = {
|
|
33
|
-
cloudProvider: 'azure',
|
|
34
|
-
password: 'password',
|
|
35
|
-
url: 'url',
|
|
36
|
-
username: 'username',
|
|
37
|
-
};
|
|
38
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
39
|
-
await fs.writeFile(inputFilePath, JSON.stringify(input));
|
|
40
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
41
|
-
expect(loginToAzureMock).toHaveBeenCalledOnce();
|
|
42
|
-
expect(loginToAzureMock).toHaveBeenCalledWith({
|
|
43
|
-
url: input.url,
|
|
44
|
-
username: input.username,
|
|
45
|
-
password: input.password,
|
|
46
|
-
page: 'some-page',
|
|
47
|
-
});
|
|
48
|
-
}, { timeout: 100000000 });
|
|
49
|
-
});
|
|
50
|
-
//# sourceMappingURL=startInputWatcher.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startInputWatcher.spec.js","sourceRoot":"","sources":["../src/startInputWatcher.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAEL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,GACX,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEvB,MAAM,gBAAgB,GAAG,YAAmD,CAAC;AAC7E,MAAM,gBAAgB,GAAG,YAAmD,CAAC;AAE7E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,CAAC,iBAAiB,CAAC;YACjC,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,WAAW;YACjB,8DAA8D;SACxD,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAI,CACF,iDAAiD,EACjD,KAAK,IAAI,EAAE;QACT,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,GAAG,kBAAkB,YAAY,CAAC;QACxD,MAAM,cAAc,GAAG,GAAG,kBAAkB,aAAa,CAAC;QAC1D,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,iBAAiB,CAAC;YACrB,aAAa;YACb,cAAc;SACf,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG;YACZ,aAAa,EAAE,OAAO;YACtB,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,UAAU;SACrB,CAAC;QACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC;YAC5C,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;IACL,CAAC,EACD,EAAE,OAAO,EAAE,SAAS,EAAE,CACvB,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/utils.js
DELETED
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAE3D,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|