UNPKG

@apideck/portman

Version:

Port OpenAPI Spec to Postman Collection, with contract & variation tests included

127 lines 4.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeKeyForVar = exports.renderBracketPath = exports.renderSafeFullPath = exports.detectUnsafeCharacters = exports.renderChainPath = void 0; var tslib_1 = require("tslib"); var renderChainPath = function (path, legacyMode) { if (legacyMode === void 0) { legacyMode = false; } var m = process.version.match(/(\d+)\.(\d+)\.(\d+)/) || ['10.0.0', '10']; var _a = tslib_1.__read(m.slice(1).map(function (_) { return parseInt(_); }), 1), major = _a[0]; if (major < 14 || legacyMode) { return (0, exports.renderSafeFullPath)(path); } var safePath = (0, exports.renderBracketPath)(path); return safePath .replace(/\./g, '?.') .replace(/\[+/g, '?.[') .replace(/\?\.\?\.+/g, '?.'); }; exports.renderChainPath = renderChainPath; var detectUnsafeCharacters = function (path) { var e_1, _a; var specialChars = ['`', '@', '^', '-', '?', '*', ')', '/', '>', 'ル']; var hasSpecialChars = function (str, chars) { return chars.some(function (char) { return str.includes(char); }); }; var getStringBetweenBrackets = function (str) { var start = str.indexOf('['); var end = str.indexOf(']'); return str.slice(start + 1, end); }; var regexCharacterInBrackets = /\[.*?\]/g; var matches = path.match(regexCharacterInBrackets); if (matches) { try { for (var matches_1 = tslib_1.__values(matches), matches_1_1 = matches_1.next(); !matches_1_1.done; matches_1_1 = matches_1.next()) { var match = matches_1_1.value; var str = getStringBetweenBrackets(match); if (hasSpecialChars(str, specialChars)) { if ((str.startsWith("'") && str.endsWith("'")) || (str.startsWith('"') && str.endsWith('"'))) { return false; } return true; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (matches_1_1 && !matches_1_1.done && (_a = matches_1.return)) _a.call(matches_1); } finally { if (e_1) throw e_1.error; } } } if (hasSpecialChars(path, specialChars)) { if (path.includes("'") || path.includes("\"")) { return false; } return true; } return false; }; exports.detectUnsafeCharacters = detectUnsafeCharacters; var renderSafeFullPath = function (path) { var safePath = (0, exports.renderBracketPath)(path); var s = safePath.split('.'); if (s.length === 1) { if ((0, exports.detectUnsafeCharacters)(safePath)) { return "['".concat(safePath, "']"); } return safePath; } var newPath = ""; for (var index = 0; index < s.length; index++) { var nextPath = s.slice(0, index + 1); newPath += "".concat(nextPath.join('.'), " && "); } return "".concat(newPath.slice(0, -4)); }; exports.renderSafeFullPath = renderSafeFullPath; var renderBracketPath = function (path) { var s = path.split('.'); if (s.length === 1) { if ((0, exports.detectUnsafeCharacters)(path)) { return "[\"".concat(path, "\"]"); } return path; } var newPath = ""; for (var index = 0; index < s.length; index++) { var nextPath = s[index]; var p = nextPath.split('['); if (p.length === 1) { if ((0, exports.detectUnsafeCharacters)(nextPath)) { newPath += "[\"".concat(nextPath, "\"]."); } else if (nextPath.includes(']')) { newPath += "[".concat(nextPath, "."); } else { newPath += "".concat(nextPath, "."); } } var newPart = ""; for (var partIndex = 0; partIndex < p.length; partIndex++) { var nextPart = p[partIndex]; if ((0, exports.detectUnsafeCharacters)(nextPart)) { newPart += "[\"".concat(nextPart, "\"]"); } else if (nextPart.includes(']')) { newPart += "[".concat(nextPart); } else { newPart += "".concat(nextPart); } } if (p.length > 1) { newPath += "".concat(newPart, "."); } } return newPath.slice(0, -1).replace(/\.$/, ''); }; exports.renderBracketPath = renderBracketPath; var sanitizeKeyForVar = function (key) { return key.replace(/[^a-zA-Z0-9_$]/g, '_'); }; exports.sanitizeKeyForVar = sanitizeKeyForVar; //# sourceMappingURL=renderChainPath.js.map