@berish/mvc-router5-plugin
Version:
Router5 plugin for @berish/mvc-core
47 lines • 1.91 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseQueryParameters = void 0;
const linq_1 = __importDefault(require("@berish/linq"));
const regExpForDigits = /^([\d]+)/gm;
function parseQueryParameters(params) {
const parseValue = (value) => {
if (!value)
return null;
if (value === '[]')
return [];
if (value.toLowerCase() === 'false')
return false;
if (value.toLowerCase() === 'true')
return true;
if (!isNaN(Number(value)))
return Number(value);
return value;
};
const parseCurrentPath = (params) => {
const allKeys = linq_1.default.from(Object.keys(params));
const currentKeys = allKeys.where((m) => m.indexOf('.') === -1);
const out = allKeys.every((m) => m.search(regExpForDigits) !== -1) ? [] : {};
for (const currentKey of currentKeys) {
out[currentKey] = parseValue(params[currentKey]);
}
const allSubKeys = allKeys.except(currentKeys);
const subKeys = allSubKeys.select((m) => m.split('.')[0]).distinct();
for (const subKey of subKeys) {
const currentSubKeys = allSubKeys
.where((m) => m.startsWith(subKey + '.'))
.select((m) => m.substring(subKey.length + 1));
const newParams = {};
for (const currentSubKey of currentSubKeys) {
newParams[currentSubKey] = params[subKey + '.' + currentSubKey];
}
out[subKey] = parseCurrentPath(newParams);
}
return out;
};
return parseCurrentPath(params);
}
exports.parseQueryParameters = parseQueryParameters;
//# sourceMappingURL=parseQueryParameters.js.map