aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/create-turbo/src/utils/isOnline.ts
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
commitdd84b9d64fb98746a230cd24233ff50a562c39c9 (patch)
treeb583261ef00b3afe72ec4d6dacb31e57779a6faf /packages/create-turbo/src/utils/isOnline.ts
parent0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff)
downloadHydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz
HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip
Diffstat (limited to 'packages/create-turbo/src/utils/isOnline.ts')
-rw-r--r--packages/create-turbo/src/utils/isOnline.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/create-turbo/src/utils/isOnline.ts b/packages/create-turbo/src/utils/isOnline.ts
new file mode 100644
index 0000000..f02b2e6
--- /dev/null
+++ b/packages/create-turbo/src/utils/isOnline.ts
@@ -0,0 +1,40 @@
+import { execSync } from "child_process";
+import dns from "dns";
+import url from "url";
+
+function getProxy(): string | undefined {
+ if (process.env.https_proxy) {
+ return process.env.https_proxy;
+ }
+
+ try {
+ const httpsProxy = execSync("npm config get https-proxy").toString().trim();
+ return httpsProxy !== "null" ? httpsProxy : undefined;
+ } catch (e) {
+ return;
+ }
+}
+
+export function isOnline(): Promise<boolean> {
+ return new Promise((resolve) => {
+ dns.lookup("registry.yarnpkg.com", (registryErr) => {
+ if (!registryErr) {
+ return resolve(true);
+ }
+
+ const proxy = getProxy();
+ if (!proxy) {
+ return resolve(false);
+ }
+
+ const { hostname } = url.parse(proxy);
+ if (!hostname) {
+ return resolve(false);
+ }
+
+ dns.lookup(hostname, (proxyErr) => {
+ resolve(proxyErr == null);
+ });
+ });
+ });
+}