UNPKG

@datocms/rest-client-utils

Version:
53 lines 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildNormalizedParams = void 0; const ARRAY_INDEX = '__ARRAY_INDEX__'; function buildKey(path) { return path.reduce((result, chunk, index) => index === 0 ? chunk : chunk === ARRAY_INDEX ? `${result}[]` : `${result}[${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 ${JSON.stringify(value)}`; } function buildNormalizedParams(value, path = []) { const 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 (const innerValue of value) { for (const param of buildNormalizedParams(innerValue, [ ...path, ARRAY_INDEX, ])) { result.push(param); } } } else if (value) { for (const [key, innerValue] of Object.entries(value)) { for (const param of buildNormalizedParams(innerValue, [...path, key])) { result.push(param); } } } } return result; } exports.buildNormalizedParams = buildNormalizedParams; //# sourceMappingURL=buildNormalizedParams.js.map