zipy-cli
Version:
CLI for Zipyai
148 lines (147 loc) • 5.22 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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateAuthKey = exports.validateApiKey = exports.cliLog = exports.callUploadApi = exports.createUploadApiRequest = exports.filterMapsAndJsFiles = exports.readFolderContents = void 0;
const form_data_1 = __importDefault(require("form-data"));
const fs_1 = __importDefault(require("fs"));
const axios_1 = __importDefault(require("axios"));
const config_json_1 = __importDefault(require("../config/config.json"));
const glob_1 = __importDefault(require("glob"));
const util_1 = __importDefault(require("util"));
const Constant_1 = __importDefault(require("../constant/Constant"));
const readdir = util_1.default.promisify(fs_1.default.readdir);
const stat = util_1.default.promisify(fs_1.default.stat);
const globPromise = util_1.default.promisify(glob_1.default);
const { resolve } = require("path");
/**
*
* @param dir
* @returns all files in the directory. Accepts plain string or a glob pattern
*/
const readFolderContents = (dir) => __awaiter(void 0, void 0, void 0, function* () {
if (fs_1.default.existsSync(dir) && !glob_1.default.hasMagic(dir)) {
let files = [];
files = yield readFolderRecursively(dir);
return files;
}
else if (glob_1.default.hasMagic(dir)) {
let files = yield globPromise(dir);
return files;
}
else {
throw new Error("Directory not found");
}
});
exports.readFolderContents = readFolderContents;
/**
*
* @param dir
* @returns returns list of all files in the folder and sub folders
*/
function readFolderRecursively(dir) {
return __awaiter(this, void 0, void 0, function* () {
const dirContents = yield readdir(dir);
const files = yield Promise.all(dirContents.map((subdir) => __awaiter(this, void 0, void 0, function* () {
const res = resolve(dir, subdir);
return (yield stat(res)).isDirectory() ? readFolderRecursively(res) : res;
})));
return files.reduce((a, f) => a.concat(f), []);
});
}
/**
*
* @param files
* @returns filters map files from the list of the files
*/
const filterMapsAndJsFiles = (files) => {
return files.filter((f) => {
let fileArr = f.split(".");
return fileArr[fileArr.length - 1] === "map";
});
};
exports.filterMapsAndJsFiles = filterMapsAndJsFiles;
/**
*
* @param api_key
* @param release_ver
* @param files
* @returns Creates request for uploading sourcemap files to the server
*/
const createUploadApiRequest = (api_key, authKey, release_ver, files) => {
const data = new form_data_1.default();
data.append("api_key", api_key);
data.append("auth_key", authKey);
data.append("release_ver", release_ver);
files.forEach((file) => __awaiter(void 0, void 0, void 0, function* () {
const fileStream = fs_1.default.createReadStream(`${file}`);
data.append("file", fileStream);
}));
return data;
};
exports.createUploadApiRequest = createUploadApiRequest;
/**
*
* @param username
* @param password
* @param requestData
* @returns Calls upload files API for uploading source maps to the server
*/
const callUploadApi = (requestData) => {
const apiCallData = {
method: "post",
url: config_json_1.default.url,
data: requestData,
maxContentLength: 419430400,
maxBodyLength: 419430400,
};
return new Promise((res, rej) => {
(0, axios_1.default)(apiCallData)
.then(function (response) {
res(response);
})
.catch(function (err) {
(0, exports.cliLog)(Constant_1.default.ERROR, `Error in uploading file. Error is: ${err.message}`);
rej(err);
});
});
};
exports.callUploadApi = callUploadApi;
/**
* Print cli logs with proper date, time and status
*
* @param status
* @param message
*/
const cliLog = (status, message) => {
console.log(`${new Date().toUTCString()} [${status}] ${message}`);
};
exports.cliLog = cliLog;
/**
*
* @param apiKey
* @returns boolean
*/
const validateApiKey = (apiKey) => {
return Constant_1.default.API_KEY_REGEX.test(apiKey);
};
exports.validateApiKey = validateApiKey;
/**
*
* @param authKey
* @returns boolean
*/
const validateAuthKey = (authKey) => {
return Constant_1.default.AUTH_KEY_REGEX.test(authKey);
};
exports.validateAuthKey = validateAuthKey;