UNPKG

web-dev-server

Version:

Node.js simple http server for common development or training purposes.

142 lines 7.41 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.Protected = void 0; var ObjectHelper_1 = require("../Tools/Helpers/ObjectHelper"); var Protected = /** @class */ (function () { function Protected() { } /** * Get param value from given collection (`GET`, `POST` or http headers), * filtered by characters defined in second argument through `replace()`. * Place into second argument only char groups you want to keep. * @param collection Array with request params or array with request headers. * @param name Parameter string name. * @param replaceFilter If String - list of regular expression characters to only keep, if array - `replace()` pattern and reverse, if `false`, raw value is returned. * @param ifNullValue Default value returned if given param name is null. * @param targetType Target type to retype param value or default if-null value. If param is an array, every param item will be retyped into given target type. */ Protected.GetParamFromCollection = function (paramsCollection, name, nameReplaceFilter, valueReplaceFilter, ifNullValue) { if (paramsCollection === void 0) { paramsCollection = {}; } if (name === void 0) { name = ""; } if (nameReplaceFilter === void 0) { nameReplaceFilter = "a-zA-Z0-9_;, /\.\:\-\@"; } if (valueReplaceFilter === void 0) { valueReplaceFilter = "a-zA-Z0-9_;, /\.\:\-\@"; } if (ifNullValue === void 0) { ifNullValue = null; } var rawValue = paramsCollection instanceof Map ? paramsCollection.get(name) : paramsCollection[name]; if (rawValue == null) return ObjectHelper_1.ObjectHelper.IsPrimitiveType(ifNullValue) ? ifNullValue : JSON.parse(JSON.stringify(ifNullValue)); return Protected.GetParamItem(rawValue, nameReplaceFilter, valueReplaceFilter, ifNullValue); }; /** * Get filtered param or header value for characters defined as second argument to use them in `replace()`. * @param rawValue * @param replaceFilter If String - list of regular expression characters to only keep, if array - `replace()` pattern and reverse, if `false`, raw value is returned. * @param ifNullValue Default value returned if given param name is null. * @param targetType Target type to retype param value or default if-null value. If param is an array, every param item will be retyped into given target type. */ Protected.GetParamItem = function (rawValue, nameReplaceFilter, valueReplaceFilter, ifNullValue) { if (rawValue === void 0) { rawValue = null; } if (nameReplaceFilter === void 0) { nameReplaceFilter = "a-zA-Z0-9_;, /\.\:\-\@"; } if (valueReplaceFilter === void 0) { valueReplaceFilter = "a-zA-Z0-9_;, /\.\:\-\@"; } if (ifNullValue === void 0) { ifNullValue = null; } var result, rawValueArr, rawValueKeys, rawValueKey; if (rawValue == null) // if there is NULL in target collection return ObjectHelper_1.ObjectHelper.IsPrimitiveType(ifNullValue) ? ifNullValue : JSON.parse(JSON.stringify(ifNullValue)); // if there is not NULL in target collection if (rawValue.constructor === String && rawValue.trim().length === 0) { // if value after trim is empty string, return empty string result = ''; if (ifNullValue === null) return result; return ObjectHelper_1.ObjectHelper.IsPrimitiveType(ifNullValue) ? ifNullValue : JSON.parse(JSON.stringify(ifNullValue)); } else if (valueReplaceFilter === false || valueReplaceFilter === '' || valueReplaceFilter === '.*') { // if there is something in target collection and all chars are allowed return rawValue; } else if (rawValue instanceof Object) { // if there is something in target collection and it's an array if (rawValue.constructor.name.indexOf('Array') != -1) { result = []; rawValueArr = rawValue; for (var i = 0, l = rawValueArr.length; i < l; i++) { result[i] = Protected.GetParamItem(rawValueArr[i], nameReplaceFilter, valueReplaceFilter, ifNullValue); } } else { result = {}; rawValueKeys = Object.keys(rawValue); for (var i = 0, l = rawValueKeys.length; i < l; i++) { rawValueKey = rawValueKeys[i]; result[Protected.CleanParamValue(rawValueKey, nameReplaceFilter)] = Protected.GetParamItem(rawValueArr[rawValueKey], nameReplaceFilter, valueReplaceFilter, ifNullValue); } } return result; } else { // if there is something in target collection and it's not an array return Protected.CleanParamValue(rawValue, valueReplaceFilter); } }; /** * Clean param value by given list of allowed chars or by given `preg_replace()` pattern and reverse. * @param rawValue * @param replaceFilter If String - list of regular expression characters to only keep, if array - `replace()` pattern and reverse, if `false`, raw value is returned. * @return string */ Protected.CleanParamValue = function (rawValue, replaceFilter) { if (replaceFilter === void 0) { replaceFilter = "a-zA-Z0-9_;, /\.\:\-\@"; } var pattern, replace, patternRegExp, replaceStr = '', rawValueStr, resultValue; if (replaceFilter === false) return rawValue; rawValueStr = String(rawValue); if (replaceFilter instanceof RegExp) { resultValue = rawValueStr.replace(patternRegExp, replaceStr); } else if (replaceFilter instanceof Object) { pattern = replaceFilter['pattern']; replace = replaceFilter['replace']; resultValue = rawValueStr.replace(pattern, replace); } else { patternRegExp = new RegExp("[^" + replaceFilter.toString() + "]", "g"); resultValue = rawValueStr.replace(patternRegExp, replaceStr); } if (rawValue.match(/^(true|false)$/g)) { resultValue = rawValue === "true"; } else if (rawValue.match(/^(null|undefined)$/g)) { resultValue = rawValue === "null" ? null : undefined; } else if (rawValue.match(/^([eE0-9\+\-\.]+)$/g)) { var matchedDots = rawValue.match(/\./g); if (!matchedDots || (matchedDots && matchedDots.length < 2)) { // for numbers - there could be no dot or only single dot char: resultValue = parseFloat(rawValue); if (isNaN(resultValue)) resultValue = rawValue; } else { // something like: 127.0.0.1: resultValue = rawValue; } } else { resultValue = rawValue; } return resultValue; }; return Protected; }()); exports.Protected = Protected; //# sourceMappingURL=Protected.js.map