@datacamp/learn-vm-scripts 0.0.10 → 1.0.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/dist/index.cjs +71 -26
- package/dist/local.cjs +40 -19
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -92669,6 +92669,9 @@ function ensureHttps(url) {
|
|
|
92669
92669
|
}
|
|
92670
92670
|
return url;
|
|
92671
92671
|
}
|
|
92672
|
+
var unreachable = (_) => {
|
|
92673
|
+
throw new Error("unreachable");
|
|
92674
|
+
};
|
|
92672
92675
|
|
|
92673
92676
|
// src/setInput.ts
|
|
92674
92677
|
var setInput = ({
|
|
@@ -92690,7 +92693,7 @@ var log = (message) => {
|
|
|
92690
92693
|
};
|
|
92691
92694
|
|
|
92692
92695
|
// src/azureLogin.ts
|
|
92693
|
-
var
|
|
92696
|
+
var closeOnboardingPopups = async (page) => {
|
|
92694
92697
|
const welcomeSurveyCloseButton = 'span.fxs-welcomesurvey-close-icon[role="button"]';
|
|
92695
92698
|
await page.waitForSelector(welcomeSurveyCloseButton);
|
|
92696
92699
|
await page.click(welcomeSurveyCloseButton);
|
|
@@ -92702,7 +92705,8 @@ async function loginToAzure({
|
|
|
92702
92705
|
url,
|
|
92703
92706
|
username,
|
|
92704
92707
|
page,
|
|
92705
|
-
password
|
|
92708
|
+
password,
|
|
92709
|
+
skipOnboarding = true
|
|
92706
92710
|
}) {
|
|
92707
92711
|
log("Navigating to Azure login page...");
|
|
92708
92712
|
await Promise.all([
|
|
@@ -92738,7 +92742,12 @@ async function loginToAzure({
|
|
|
92738
92742
|
log("Ensuring user stays signed in ...");
|
|
92739
92743
|
await page.waitForSelector('[type="submit"]');
|
|
92740
92744
|
await page.click('[type="submit"]');
|
|
92741
|
-
|
|
92745
|
+
if (skipOnboarding) {
|
|
92746
|
+
log("Skipping onboarding...");
|
|
92747
|
+
void closeOnboardingPopups(page).catch((error) => {
|
|
92748
|
+
console.error("Error in onboarding of Azure login: ", error);
|
|
92749
|
+
});
|
|
92750
|
+
}
|
|
92742
92751
|
log("Logged in to Azure successfully");
|
|
92743
92752
|
}
|
|
92744
92753
|
|
|
@@ -92788,8 +92797,17 @@ async function loginToAWS({
|
|
|
92788
92797
|
// src/databricksLogin.ts
|
|
92789
92798
|
async function loginToDatabricks({
|
|
92790
92799
|
url,
|
|
92791
|
-
page
|
|
92800
|
+
page,
|
|
92801
|
+
username,
|
|
92802
|
+
password
|
|
92792
92803
|
}) {
|
|
92804
|
+
await loginToAzure({
|
|
92805
|
+
url: void 0,
|
|
92806
|
+
username,
|
|
92807
|
+
page,
|
|
92808
|
+
password,
|
|
92809
|
+
skipOnboarding: false
|
|
92810
|
+
});
|
|
92793
92811
|
log("Navigating to Databricks login page...");
|
|
92794
92812
|
await page.goto(ensureHttps(url));
|
|
92795
92813
|
await page.waitForSelector(".aad-btn");
|
|
@@ -92835,9 +92853,51 @@ var resetChrome = async ({ userDataDir }) => {
|
|
|
92835
92853
|
console.log("Chrome reset!");
|
|
92836
92854
|
};
|
|
92837
92855
|
|
|
92856
|
+
// src/snowflakeLogin.ts
|
|
92857
|
+
var findAsync = (elements, predicate) => {
|
|
92858
|
+
const promises = elements.map(predicate);
|
|
92859
|
+
return Promise.all(promises).then(
|
|
92860
|
+
(results) => elements.find((_, i) => results[i])
|
|
92861
|
+
);
|
|
92862
|
+
};
|
|
92863
|
+
async function loginToSnowflake({
|
|
92864
|
+
url,
|
|
92865
|
+
username,
|
|
92866
|
+
page,
|
|
92867
|
+
password
|
|
92868
|
+
}) {
|
|
92869
|
+
log("Navigating to Snowflake login page...");
|
|
92870
|
+
await page.goto(ensureHttps(url));
|
|
92871
|
+
await page.waitForSelector('input[name="username"]');
|
|
92872
|
+
await setInput({
|
|
92873
|
+
page,
|
|
92874
|
+
querySelector: 'input[name="username"]',
|
|
92875
|
+
value: username
|
|
92876
|
+
});
|
|
92877
|
+
await page.waitForSelector('input[name="password"]');
|
|
92878
|
+
await setInput({
|
|
92879
|
+
page,
|
|
92880
|
+
querySelector: 'input[name="password"]',
|
|
92881
|
+
value: password
|
|
92882
|
+
});
|
|
92883
|
+
const loginButton = 'div[data-test-id="loginButton"][aria-disabled="false"]';
|
|
92884
|
+
await page.waitForSelector(loginButton);
|
|
92885
|
+
await page.click(loginButton);
|
|
92886
|
+
log("Logged in to Snowflake!");
|
|
92887
|
+
log("Skipping optional parts of login");
|
|
92888
|
+
await page.waitForSelector('[data-testid="Dialog Footer"]');
|
|
92889
|
+
log("Dialog Footer found");
|
|
92890
|
+
const buttons = await page.$$('div[role="button"]');
|
|
92891
|
+
const notNowButton = await findAsync(buttons, async (button) => {
|
|
92892
|
+
const innerText = await page.evaluate((el) => el.innerText, button);
|
|
92893
|
+
return innerText === "Not now";
|
|
92894
|
+
});
|
|
92895
|
+
await notNowButton?.click();
|
|
92896
|
+
}
|
|
92897
|
+
|
|
92838
92898
|
// src/startInputWatcher.ts
|
|
92839
92899
|
var Input = objectType({
|
|
92840
|
-
cloudProvider: enumType(["aws", "azure", "databricks"]),
|
|
92900
|
+
cloudProvider: enumType(["aws", "azure", "databricks", "snowflake"]),
|
|
92841
92901
|
password: stringType(),
|
|
92842
92902
|
url: stringType(),
|
|
92843
92903
|
username: stringType()
|
|
@@ -92849,30 +92909,15 @@ var handleInput = async ({ line, page }) => {
|
|
|
92849
92909
|
);
|
|
92850
92910
|
switch (cloudProvider) {
|
|
92851
92911
|
case "azure":
|
|
92852
|
-
|
|
92853
|
-
break;
|
|
92912
|
+
return loginToAzure({ url, username, page, password });
|
|
92854
92913
|
case "aws":
|
|
92855
|
-
|
|
92856
|
-
console.error("AWS URL is required");
|
|
92857
|
-
process.exit(1);
|
|
92858
|
-
}
|
|
92859
|
-
await loginToAWS({ url, username, page, password });
|
|
92860
|
-
break;
|
|
92914
|
+
return loginToAWS({ url, username, page, password });
|
|
92861
92915
|
case "databricks":
|
|
92862
|
-
|
|
92863
|
-
|
|
92864
|
-
|
|
92865
|
-
}
|
|
92866
|
-
await loginToAzure({
|
|
92867
|
-
url: void 0,
|
|
92868
|
-
username,
|
|
92869
|
-
page,
|
|
92870
|
-
password
|
|
92871
|
-
});
|
|
92872
|
-
await loginToDatabricks({ url, page });
|
|
92873
|
-
break;
|
|
92916
|
+
return loginToDatabricks({ url, page, password, username });
|
|
92917
|
+
case "snowflake":
|
|
92918
|
+
return loginToSnowflake({ url, username, page, password });
|
|
92874
92919
|
default:
|
|
92875
|
-
|
|
92920
|
+
return unreachable(cloudProvider);
|
|
92876
92921
|
}
|
|
92877
92922
|
} catch (error) {
|
|
92878
92923
|
console.error(`Error: "${error.message}" on input ${line}`);
|
package/dist/local.cjs
CHANGED
|
@@ -85609,13 +85609,7 @@ async function setupPuppeteerPage({
|
|
|
85609
85609
|
userDataDir: userDataDir2
|
|
85610
85610
|
}) {
|
|
85611
85611
|
const browser = await puppeteer_core_default.launch({
|
|
85612
|
-
args: [
|
|
85613
|
-
"--start-maximized"
|
|
85614
|
-
// '--kiosk',
|
|
85615
|
-
// '--no-prompts',
|
|
85616
|
-
// '--no-dialogs',
|
|
85617
|
-
// '--disable-pinch',
|
|
85618
|
-
],
|
|
85612
|
+
args: ["--start-maximized", "--enable-save-password-bubble"],
|
|
85619
85613
|
executablePath: executablePath3,
|
|
85620
85614
|
headless: false,
|
|
85621
85615
|
defaultViewport: null,
|
|
@@ -85629,6 +85623,11 @@ async function setupPuppeteerPage({
|
|
|
85629
85623
|
return browser.newPage();
|
|
85630
85624
|
}
|
|
85631
85625
|
|
|
85626
|
+
// src/log.ts
|
|
85627
|
+
var log = (message) => {
|
|
85628
|
+
console.log(`[${(/* @__PURE__ */ new Date()).toISOString()}] ${message}`);
|
|
85629
|
+
};
|
|
85630
|
+
|
|
85632
85631
|
// src/utils.ts
|
|
85633
85632
|
var AZURE_LOGIN_URL = "https://portal.azure.com/";
|
|
85634
85633
|
function ensureHttps(url) {
|
|
@@ -85639,11 +85638,6 @@ function ensureHttps(url) {
|
|
|
85639
85638
|
return url;
|
|
85640
85639
|
}
|
|
85641
85640
|
|
|
85642
|
-
// src/log.ts
|
|
85643
|
-
var log = (message) => {
|
|
85644
|
-
console.log(`[${(/* @__PURE__ */ new Date()).toISOString()}] ${message}`);
|
|
85645
|
-
};
|
|
85646
|
-
|
|
85647
85641
|
// src/setInput.ts
|
|
85648
85642
|
var setInput = ({
|
|
85649
85643
|
page,
|
|
@@ -85659,7 +85653,7 @@ var setInput = ({
|
|
|
85659
85653
|
};
|
|
85660
85654
|
|
|
85661
85655
|
// src/azureLogin.ts
|
|
85662
|
-
var
|
|
85656
|
+
var closeOnboardingPopups = async (page) => {
|
|
85663
85657
|
const welcomeSurveyCloseButton = 'span.fxs-welcomesurvey-close-icon[role="button"]';
|
|
85664
85658
|
await page.waitForSelector(welcomeSurveyCloseButton);
|
|
85665
85659
|
await page.click(welcomeSurveyCloseButton);
|
|
@@ -85671,7 +85665,8 @@ async function loginToAzure({
|
|
|
85671
85665
|
url,
|
|
85672
85666
|
username,
|
|
85673
85667
|
page,
|
|
85674
|
-
password
|
|
85668
|
+
password,
|
|
85669
|
+
skipOnboarding = true
|
|
85675
85670
|
}) {
|
|
85676
85671
|
log("Navigating to Azure login page...");
|
|
85677
85672
|
await Promise.all([
|
|
@@ -85707,10 +85702,36 @@ async function loginToAzure({
|
|
|
85707
85702
|
log("Ensuring user stays signed in ...");
|
|
85708
85703
|
await page.waitForSelector('[type="submit"]');
|
|
85709
85704
|
await page.click('[type="submit"]');
|
|
85710
|
-
|
|
85705
|
+
if (skipOnboarding) {
|
|
85706
|
+
log("Skipping onboarding...");
|
|
85707
|
+
void closeOnboardingPopups(page).catch((error) => {
|
|
85708
|
+
console.error("Error in onboarding of Azure login: ", error);
|
|
85709
|
+
});
|
|
85710
|
+
}
|
|
85711
85711
|
log("Logged in to Azure successfully");
|
|
85712
85712
|
}
|
|
85713
85713
|
|
|
85714
|
+
// src/databricksLogin.ts
|
|
85715
|
+
async function loginToDatabricks({
|
|
85716
|
+
url,
|
|
85717
|
+
page,
|
|
85718
|
+
username,
|
|
85719
|
+
password
|
|
85720
|
+
}) {
|
|
85721
|
+
await loginToAzure({
|
|
85722
|
+
url: void 0,
|
|
85723
|
+
username,
|
|
85724
|
+
page,
|
|
85725
|
+
password,
|
|
85726
|
+
skipOnboarding: false
|
|
85727
|
+
});
|
|
85728
|
+
log("Navigating to Databricks login page...");
|
|
85729
|
+
await page.goto(ensureHttps(url));
|
|
85730
|
+
await page.waitForSelector(".aad-btn");
|
|
85731
|
+
await page.click(".aad-btn");
|
|
85732
|
+
log("Logged in to Databricks successfully");
|
|
85733
|
+
}
|
|
85734
|
+
|
|
85714
85735
|
// src/local.ts
|
|
85715
85736
|
var executablePath2 = `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`;
|
|
85716
85737
|
var userDataDir = `/tmp/chrome-learn-vm-scripts-data-dir`;
|
|
@@ -85719,10 +85740,10 @@ var main = async () => {
|
|
|
85719
85740
|
executablePath: executablePath2,
|
|
85720
85741
|
userDataDir
|
|
85721
85742
|
});
|
|
85722
|
-
await
|
|
85723
|
-
url: "
|
|
85724
|
-
username: "student-
|
|
85725
|
-
password: "
|
|
85743
|
+
await loginToDatabricks({
|
|
85744
|
+
url: "adb-3441331393732493.13.azuredatabricks.net",
|
|
85745
|
+
username: "student-759f4c3e-6920-46f2-ab12-9cf921068e4a@datacamplearn.onmicrosoft.com",
|
|
85746
|
+
password: "b_ufA6HDCWtljmRfP@5s",
|
|
85726
85747
|
page
|
|
85727
85748
|
});
|
|
85728
85749
|
};
|
package/package.json
CHANGED