@datocms/rest-client-utils
Version:
Utilities for DatoCMS REST API clients
64 lines • 2.37 kB
JavaScript
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var ARRAY_INDEX = '__ARRAY_INDEX__';
function buildKey(path) {
return path.reduce(function (result, chunk, index) {
return index === 0
? chunk
: chunk === ARRAY_INDEX
? "".concat(result, "[]")
: "".concat(result, "[").concat(chunk, "]");
}, '');
}
function serializeValue(value) {
if (typeof value === 'number' || typeof value === 'string') {
return value.toString();
}
if (value === true) {
return 'true';
}
if (value === false) {
return 'false';
}
throw "Don't know how to serialize param value ".concat(JSON.stringify(value));
}
export function buildNormalizedParams(value, path) {
if (path === void 0) { path = []; }
var result = [];
if (typeof value === 'number' ||
typeof value === 'string' ||
typeof value === 'boolean') {
result.push([buildKey(path), serializeValue(value)]);
}
else if (typeof value === 'object') {
if (Array.isArray(value)) {
for (var _i = 0, _a = value; _i < _a.length; _i++) {
var innerValue = _a[_i];
for (var _b = 0, _c = buildNormalizedParams(innerValue, __spreadArray(__spreadArray([], path, true), [
ARRAY_INDEX,
], false)); _b < _c.length; _b++) {
var param = _c[_b];
result.push(param);
}
}
}
else if (value) {
for (var _d = 0, _e = Object.entries(value); _d < _e.length; _d++) {
var _f = _e[_d], key = _f[0], innerValue = _f[1];
for (var _g = 0, _h = buildNormalizedParams(innerValue, __spreadArray(__spreadArray([], path, true), [key], false)); _g < _h.length; _g++) {
var param = _h[_g];
result.push(param);
}
}
}
}
return result;
}
//# sourceMappingURL=buildNormalizedParams.js.map