UNPKG

@openshift-assisted/ui-lib

Version:

React component library for the Assisted Installer UI

134 lines 5.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isMajorMinorVersionEqualOrGreater = exports.getMajorMinorVersion = exports.downloadFile = exports.stringToJSON = exports.validateFileName = exports.getMaxFileSizeMessage = exports.fileSize = exports.validateFileSize = exports.isStringValidJSON = exports.isStringValidYAML = exports.validateFileType = exports.getKeys = exports.getRandomString = exports.getErrorMessage = exports.INCORRECT_TYPE_FILE_MESSAGE = exports.FILE_TYPE_MESSAGE = exports.FILENAME_REGEX = void 0; const tslib_1 = require("tslib"); const filesize_js_1 = tslib_1.__importDefault(require("filesize.js")); const camelCase_js_1 = tslib_1.__importDefault(require("lodash-es/camelCase.js")); const isString_js_1 = tslib_1.__importDefault(require("lodash-es/isString.js")); const js_yaml_1 = require("js-yaml"); const configurations_1 = require("./configurations"); exports.FILENAME_REGEX = /^[^\/]*\.(json|ya?ml(\.patch_?[a-zA-Z0-9_]*)?)$/; exports.FILE_TYPE_MESSAGE = 'Unsupported file type. Please provide a valid YAML file.'; exports.INCORRECT_TYPE_FILE_MESSAGE = 'File type is not supported. File type must be yaml, yml ,json , yaml.patch. or yml.patch.'; const getErrorMessage = (error) => { if (error instanceof Error) { return error.message; } if ((0, isString_js_1.default)(error)) { return error; } return 'Unexpected error'; }; exports.getErrorMessage = getErrorMessage; const getRandomString = (length) => Array(length + 1) .join((Math.random().toString(36) + '00000000000000000').slice(2, 18)) .slice(0, length); exports.getRandomString = getRandomString; const getKeys = (obj) => Object.keys(obj); exports.getKeys = getKeys; const validateFileType = (value) => { return (0, exports.isStringValidYAML)(value) || (0, exports.isStringValidJSON)(value); }; exports.validateFileType = validateFileType; const isStringValidYAML = (input) => { try { (0, js_yaml_1.loadAll)(input); return true; } catch (_a) { return false; } }; exports.isStringValidYAML = isStringValidYAML; const isStringValidJSON = (input) => { try { JSON.parse(input); return true; } catch (_a) { return false; } }; exports.isStringValidJSON = isStringValidJSON; const validateFileSize = (value) => { const contentFile = new Blob([value], { type: 'text/plain;charset=utf-8' }); return contentFile.size <= configurations_1.MAX_FILE_SIZE_BYTES * configurations_1.MAX_FILE_SIZE_OFFSET_FACTOR; }; exports.validateFileSize = validateFileSize; const fileSize = (...args) => filesize_js_1.default .call(null, ...args) .toUpperCase() .replace(/I/, 'i'); exports.fileSize = fileSize; exports.getMaxFileSizeMessage = `File size is too big. The file size must be less than ${(0, exports.fileSize)(configurations_1.MAX_FILE_SIZE_BYTES, 0, 'si')}.`; const validateFileName = (fileName) => { return new RegExp(exports.FILENAME_REGEX).test(fileName || ''); }; exports.validateFileName = validateFileName; const stringToJSON = (jsonString) => { let jsObject; if (jsonString) { try { const camelCased = jsonString.replace(/"([\w-]+)":/g, (_match, offset) => `"${(0, camelCase_js_1.default)(offset)}":`); jsObject = JSON.parse(camelCased); } catch (e) { // console.error('Failed to parse api string', e, jsonString); } } else { // console.info('Empty api string received.'); } return jsObject; }; exports.stringToJSON = stringToJSON; const downloadFile = (fileUrl, dataBlob, fileName) => { const link = document.createElement('a'); if (fileUrl && fileUrl !== '') { link.setAttribute('href', fileUrl); } if (dataBlob) { const file = new Blob([dataBlob], { type: 'octet/stream' }); link.setAttribute('href', URL.createObjectURL(file)); } if (fileName) { link.setAttribute('download', fileName); } link.style.visibility = 'hidden'; document.body.appendChild(link); link.click(); document.body.removeChild(link); }; exports.downloadFile = downloadFile; const getMajorMinorVersion = (version = '') => { const match = /[0-9].[0-9][0-9]?/g.exec(version); return (match === null || match === void 0 ? void 0 : match[0]) || ''; }; exports.getMajorMinorVersion = getMajorMinorVersion; // Converts an Openshift version to a comparable integer const getComparableVersionInt = (version) => { const majorMinorParts = version.split('.').slice(0, 2).map(Number); if (majorMinorParts.length < 2 || majorMinorParts.some(isNaN)) { // If the version doesn't have the required format, returning 0 makes it be considered // older than any other version return 0; } const major = majorMinorParts[0]; const minor = majorMinorParts[1]; // Assumes minor versions will not go past 999 return major * 1000 + minor; }; /** * Handles version comparison for major and minor parts only. * * @param checkVersion the version we want to know about * @param toVersion the version we want to test against * @returns true if "checkVersion" is equal or greater than "toVersion" (major and minor only) */ const isMajorMinorVersionEqualOrGreater = (checkVersion = '', toVersion) => { const checkVersionNum = getComparableVersionInt(checkVersion); const toVersionNum = getComparableVersionInt(toVersion); return checkVersionNum >= toVersionNum; }; exports.isMajorMinorVersionEqualOrGreater = isMajorMinorVersionEqualOrGreater; //# sourceMappingURL=utils.js.map