From 97dc99dba97779b9f9c2d65e22388f3f7721f285 Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Sun, 28 Nov 2021 12:31:51 +0100 Subject: [PATCH] Use the new flattening across other sources of data. Remove leading "." for entries one level deep --- extended-request.ts | 12 ++++++------ util.ts | 14 ++++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/extended-request.ts b/extended-request.ts index 42f8d62..14af85f 100644 --- a/extended-request.ts +++ b/extended-request.ts @@ -188,11 +188,11 @@ export default class ExtendedRequest { return []; } return flattenObjectEntries( - Object.entries(parseCookie(this.getCookie())) - .map(([key, value]) => [key, value || ""]) - .map(([key, value]) => { - return [key, StolenDataEntry.parseValue(value)]; - }) + Object.entries(parseCookie(this.getCookie())).map(([key, value]) => [ + key, + value || "", + ]), + StolenDataEntry.parseValue ).map(([key, value]) => new StolenDataEntry(this, "cookie", key, value)); } @@ -290,7 +290,7 @@ export default class ExtendedRequest { .map((header) => { return [ header.name, - StolenDataEntry.parseValue(decodeURIComponent(header.value)), + StolenDataEntry.parseValue(safeDecodeURIComponent(header.value)), ]; }) ).map(([key, value]) => new StolenDataEntry(this, "header", key, value)); diff --git a/util.ts b/util.ts index 20a3794..611860d 100644 --- a/util.ts +++ b/util.ts @@ -204,22 +204,24 @@ export function flattenObject( ret = [], parsed = false ): [string, string][] { + const prefix = key === "" ? "" : `${key}.`; if (Array.isArray(obj)) { - for (let i in obj) { - flattenObject(obj[i], parser, key + "." + i, ret); + if (obj.length == 1) { + flattenObject(obj[0], parser, key, ret); + } else { + for (let i in obj) { + flattenObject(obj[i], parser, prefix + i, ret); + } } } else if (typeof obj === "object") { for (const [subkey, value] of Object.entries(obj)) { - flattenObject(value, parser, key + "." + subkey, ret); + flattenObject(value, parser, prefix + subkey, ret); } } else if (!parsed) { flattenObject(parser(obj), parser, key, ret, true); } else { ret.push([key, obj]); } - if (key == "") { - console.log("FLATTENING!", obj, ret); - } return ret; }