From 2f3a9ee3bc756802f77bf5e33c0d84f33b357a31 Mon Sep 17 00:00:00 2001 From: roycalvo Date: Mon, 11 Jan 2021 21:42:36 +1100 Subject: [PATCH] Fixed logic on addDataType function to set non-string values on nested objects as non-string values --- .gitignore | 4 +++- lib/helpers.js | 64 +++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index e33bd7e..c7e967c 100644 --- a/.gitignore +++ b/.gitignore @@ -57,5 +57,7 @@ typings/ # dotenv environment variables file .env -example.js +# vscode launch configuration +.vscode +example.js diff --git a/lib/helpers.js b/lib/helpers.js index 4d1e662..b6bbf43 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -5,6 +5,49 @@ const readline = require("readline"), let s3Metadata = null; +let unflatten = function(data) { + "use strict"; + if (Object(data) !== data || Array.isArray(data)) + return data; + var regex = /\.?([^.\[\]]+)|\[(\d+)\]/g, + resultholder = {}; + for (var p in data) { + var cur = resultholder, + prop = "", + m; + while (m = regex.exec(p)) { + cur = cur[prop] || (cur[prop] = (m[2] ? [] : {})); + prop = m[2] || m[1]; + } + cur[prop] = data[p]; + } + return resultholder[""] || resultholder; +}; + +let flatten = function(data) { + var result = {}; + function recurse (cur, prop) { + if (Object(cur) !== cur) { + result[prop] = cur; + } else if (Array.isArray(cur)) { + for(var i=0, l=cur.length; i