payload
Version:
Node, React, Headless CMS and Application Framework built on Next.js
30 lines (29 loc) • 1.08 kB
JavaScript
// @ts-strict-ignore
import { isSafeFromPollution } from './utilities.js';
export const processNested = function(data) {
if (!data || data.length < 1) {
return Object.create(null);
}
const d = Object.create(null), keys = Object.keys(data);
for(let i = 0; i < keys.length; i++){
const key = keys[i], keyParts = key.replace(new RegExp(/\[/g), '.').replace(new RegExp(/\]/g), '').split('.'), value = data[key];
let current = d;
for(let index = 0; index < keyParts.length; index++){
const k = keyParts[index];
// Ensure we don't allow prototype pollution
if (!isSafeFromPollution(current, k)) {
continue;
}
if (index >= keyParts.length - 1) {
current[k] = value;
} else {
if (!current[k]) {
current[k] = !keyParts[index + 1] ? [] : Object.create(null);
}
current = current[k];
}
}
}
return d;
};
//# sourceMappingURL=processNested.js.map