UNPKG

zipy-cli

Version:

CLI for Zipyai

148 lines (147 loc) 5.22 kB
"use strict"; 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;