chore(core): monorepo, esm targeting, improved management (#8707)

This commit is contained in:
Nathan Walker
2020-08-25 20:00:59 -07:00
committed by GitHub
parent 6f15334934
commit 020ad4da37
4271 changed files with 148599 additions and 149734 deletions

View File

@ -0,0 +1,128 @@
const { chmodSync, createWriteStream } = require("fs");
const { tmpdir, EOL } = require("os");
const { join, relative, isAbsolute } = require("path");
const os = require("os");
const { mkdir } = require("shelljs");
// const { get } = require("request");
const { getProxySettings } = require("proxy-lib");
const semver = require("semver");
const CONSTANTS = {
SNAPSHOT_TMP_DIR: join(tmpdir(), "snapshot-tools"),
MAC_OS_NAME: "darwin",
WIN_OS_NAME: "win",
LINUX_OS_NAME: "linux"
};
const createDirectory = dir => mkdir('-p', dir);
function getHostOS() {
const hostOS = os.type().toLowerCase();
if (hostOS.startsWith(CONSTANTS.MAC_OS_NAME))
return CONSTANTS.MAC_OS_NAME;
if (hostOS.startsWith(CONSTANTS.LINUX_OS_NAME))
return CONSTANTS.LINUX_OS_NAME;
if (hostOS.startsWith(CONSTANTS.WIN_OS_NAME))
return CONSTANTS.WIN_OS_NAME;
return hostOS;
}
function getHostOSVersion() {
return os.release();
}
function getHostOSArch() {
return os.arch();
}
function has32BitArch(targetArchs) {
return (Array.isArray(targetArchs) && targetArchs.some(arch => arch === "arm" || arch === "ia32")) ||
(targetArchs === "arm" || targetArchs === "ia32");
}
function isSubPath(parentPath, childPath) {
const relativePath = relative(parentPath, childPath);
return relativePath === "" ||
(relativePath && !relativePath.startsWith('..') && !isAbsolute(relativePath));
}
function isMacOSCatalinaOrHigher() {
let isCatalinaOrHigher = false;
const catalinaVersion = "19.0.0";
const hostOS = getHostOS();
if (hostOS === CONSTANTS.MAC_OS_NAME) {
const hostOSVersion = getHostOSVersion();
isCatalinaOrHigher = semver.gte(hostOSVersion, catalinaVersion);
}
return isCatalinaOrHigher;
}
function isWindows() {
return getHostOS() === CONSTANTS.WIN_OS_NAME;
}
const downloadFile = (url, destinationFilePath, timeout) =>
new Promise((resolve, reject) => {
// getRequestOptions(url, timeout)
// .then(options =>
// get(options)
// .on("error", reject)
// .pipe(createWriteStream(destinationFilePath, { autoClose: true }))
// .on("finish", _ => {
// chmodSync(destinationFilePath, 0755);
// return resolve(destinationFilePath);
// })
// ).catch(reject);
});
const getJsonFile = url =>
new Promise((resolve, reject) => {
// getRequestOptions(url)
// .then(options =>
// get(options, (error, response, body) => {
// if (error) {
// return reject(error);
// }
// if (!response || response.statusCode !== 200) {
// return reject(`Couldn't fetch ${url}! Response:${EOL}${response}`);
// }
// try {
// const data = JSON.parse(body);
// resolve(data);
// } catch (error) {
// reject(`Couldn't parse json data! Original error:${EOL}${error}`);
// }
// })
// ).catch(reject);
});
const getRequestOptions = (url, timeout) =>
new Promise((resolve, reject) => {
const options = { url, timeout };
getProxySettings()
.then(proxySettings => {
const allOptions = Object.assign(options, proxySettings);
resolve(allOptions);
})
.catch(error =>
reject(`Couldn't get proxy settings! Original error:${EOL}${error}`));
});
module.exports = {
CONSTANTS,
createDirectory,
has32BitArch,
getHostOS,
getHostOSVersion,
getHostOSArch,
isMacOSCatalinaOrHigher,
downloadFile,
getJsonFile,
isSubPath,
isWindows
};