esa-cli
Version:
A CLI for operating Alibaba Cloud ESA Functions and Pages.
82 lines (81 loc) • 3.59 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import chalk from 'chalk';
import { Box, Text, useApp, useInput, render } from 'ink';
import React, { useEffect } from 'react';
import t from '../../i18n/index.js';
import logger from '../../libs/logger.js';
import { checkOS, Platforms } from '../../utils/checkOS.js';
import { getDevOpenBrowserUrl } from '../../utils/fileUtils/index.js';
import openInBrowser from '../../utils/openInBrowser.js';
const InteractionBox = ({ worker }) => {
const { exit } = useApp();
const inspectLink = chalk.underline.blue('chrome://inspect/#devices');
const remoteTarget = chalk.blue('Remote Target');
const inspect = chalk.blue('inspect');
const OS = checkOS();
const useEw2 = OS === Platforms.AppleArm || Platforms.AppleIntel || Platforms.LinuxX86;
/* eslint-disable no-unused-vars */
useInput((input) => __awaiter(void 0, void 0, void 0, function* () {
switch (input.toLowerCase()) {
case 'c':
console.clear();
logger.block();
break;
case 'b': {
yield openInBrowser(getDevOpenBrowserUrl());
break;
}
case 'd': {
if (useEw2)
return;
logger.log(t('dev_input_inspect_tip1', { inspectLink }).d(`👉 Please visit ${inspectLink} in the Chrome browser`));
logger.log(t('dev_input_inspect_tip2', { inspect, remoteTarget }).d(`👉 See your debugger under ${remoteTarget} and click the ${inspect} button`));
break;
}
case 'x':
exit();
break;
default:
break;
}
}));
useEffect(() => {
return () => {
if (worker) {
worker.stop();
}
};
}, []);
return (React.createElement(React.Fragment, null,
React.createElement(Box, { borderStyle: "classic", paddingLeft: 1, paddingRight: 1 },
React.createElement(Text, { bold: true }, "[b]"),
React.createElement(Text, null, " open a browser, "),
!useEw2 ? (React.createElement(React.Fragment, null,
React.createElement(Text, { bold: true }, "[d]"),
React.createElement(Text, null, " open Devtools, "))) : null,
React.createElement(Text, { bold: true }, "[c]"),
React.createElement(Text, null, " clear console, "),
React.createElement(Text, { bold: true }, "[x]"),
React.createElement(Text, null, " to exit"))));
};
const doProcess = (worker) => {
const devElement = render(React.createElement(InteractionBox, { worker: worker }));
return {
devElement,
exit: () => {
devElement.unmount();
setTimeout(() => {
process.exit(0);
}, 500);
}
};
};
export default doProcess;