web-dev-server
Version:
Node.js simple http server for common development or training purposes.
142 lines • 7.41 kB
JavaScript
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