UNPKG

@viewdo/dxp-story-cli

Version:

DXP Story Management CLI

134 lines 4.97 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeNullProperties = exports.replaceInText = exports.reconcileLists = exports.requireValue = exports.flattenArray = exports.isValidDomain = exports.findFiles = exports.distinctArray = exports.isEmpty = void 0; exports.handleAxiosError = handleAxiosError; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const kind_of_1 = __importDefault(require("kind-of")); // Arrays ------------------------------------------ const flattenArray = (list) => list.reduce((a, b) => a.concat(Array.isArray(b) ? flattenArray(b) : b), []); exports.flattenArray = flattenArray; const distinctArray = (list) => [...new Set(list)]; exports.distinctArray = distinctArray; const reconcileLists = (current, previous, protected_items) => { let remove = previous.filter((namespace) => !current.includes(namespace) && !protected_items.includes(namespace)); let add = current.filter((namespace) => !previous.includes(namespace) && !protected_items.includes(namespace)); return { add, remove }; }; exports.reconcileLists = reconcileLists; // Validation ----------------------------------- const isValidDomain = (v) => { if (!v) return false; var re = /^(?!:\/\/)([a-zA-Z0-9-\*]+\.){0,5}[a-zA-Z0-9-][a-zA-Z0-9-]+\.[a-zA-Z]{2,64}?$/gi; return re.test(v); }; exports.isValidDomain = isValidDomain; const requireValue = (name) => { throw new Error(`A value for ${name} is required`.red); }; exports.requireValue = requireValue; const findFiles = (dir, file_list = []) => { return fs_1.default .readdirSync(dir) .map((file) => fs_1.default.statSync(path_1.default.join(dir, file)).isDirectory() ? findFiles(path_1.default.join(dir, file), file_list) : file_list.concat(path_1.default.join(dir, file))[0]); }; exports.findFiles = findFiles; const replaceInText = (vars, text) => { let result = text.toString(); Object.getOwnPropertyNames(vars).forEach((p) => { result = result.replace("$" + p.toUpperCase(), vars[p].toString()); }); return result; }; exports.replaceInText = replaceInText; const removeNullProperties = (node) => { Object.keys(node).forEach((key) => { if (isEmpty(node[key])) delete node[key]; else if (typeof node[key] === "object" && key != "parameters") removeNullProperties(node[key]); }); }; exports.removeNullProperties = removeNullProperties; const isEmpty = (value, omitZero = false, omitArrays = true) => { switch ((0, kind_of_1.default)(value)) { case "null": case "undefined": return true; case "boolean": case "function": case "date": case "regexp": return false; case "string": case "arguments": return value.length === 0; case "file": case "map": case "set": return value.size === 0; case "number": return omitZero ? value === 0 : false; case "error": return value.message === ""; case "array": if (omitArrays) return false; for (let ele of value) { if (!isEmpty(ele, omitZero)) { return false; } } return true; case "object": return false; default: { return true; } } }; exports.isEmpty = isEmpty; function handleAxiosError(err) { let message = err.toString(); if (err.response) { /* * The request was made and the server responded with a * status code that falls out of the range of 2xx */ const data = err.response.data; if (err.response.status) message = err.response.statusText; if (data.title) { message = data.title; if (data.errors) Object.keys(data.errors).forEach(e => { message = `\r\n\t${message.toString()} ${e}: ${data.errors[e]}`; }); } else if (data.message) message = data.message.toString(); else if (data) message = data; } else if (err.request) { /* * The request was made but no response was received, `error.request` * is an instance of XMLHttpRequest in the browser and an instance * of http.ClientRequest in Node.js */ message = `Unable to reach ${err.config.url}`; } else { // Something happened in setting up the request and triggered an Error message = err.message || err.toString(); } //this.console.dir(err) return Promise.reject({ message }); } //# sourceMappingURL=Utilities.js.map