From 187c439d76253a153545bab9903a93dc62cbd4ca Mon Sep 17 00:00:00 2001 From: VeraZab Date: Wed, 2 May 2018 20:52:43 -0400 Subject: [PATCH 1/4] Remove key and keysrc when no dataSources --- src/lib/dereference.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/dereference.js b/src/lib/dereference.js index af958696f..25e64a39d 100644 --- a/src/lib/dereference.js +++ b/src/lib/dereference.js @@ -10,12 +10,17 @@ export default function dereference(container, dataSources) { const srcRef = parent[key]; const data = dataSources[srcRef]; + const dataKey = key.replace(SRC_ATTR_PATTERN, ''); if (!Array.isArray(data)) { + if (Object.keys(dataSources).length === 0) { + delete parent[dataKey]; + delete parent[key]; + } + return; } - const dataKey = key.replace(SRC_ATTR_PATTERN, ''); parent[dataKey] = data; }; From 5b032390a5e03f795c76d918c0d4a690ca9a3382 Mon Sep 17 00:00:00 2001 From: VeraZab Date: Thu, 3 May 2018 10:46:51 -0400 Subject: [PATCH 2/4] Review comments --- src/lib/dereference.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/dereference.js b/src/lib/dereference.js index 25e64a39d..9ec3bd079 100644 --- a/src/lib/dereference.js +++ b/src/lib/dereference.js @@ -2,7 +2,7 @@ import walkObject from './walkObject'; const SRC_ATTR_PATTERN = /src$/; -export default function dereference(container, dataSources) { +export default function dereference(container, dataSources, deleteKeys) { const replacer = (key, parent) => { if (!SRC_ATTR_PATTERN.test(key)) { return; @@ -12,12 +12,12 @@ export default function dereference(container, dataSources) { const data = dataSources[srcRef]; const dataKey = key.replace(SRC_ATTR_PATTERN, ''); - if (!Array.isArray(data)) { - if (Object.keys(dataSources).length === 0) { - delete parent[dataKey]; - delete parent[key]; - } + if (deleteKeys && !(srcRef in dataSources)) { + delete parent[dataKey]; + return; + } + if (!Array.isArray(data)) { return; } From 8757bb171ee97e540012387283a4c87586cdbc59 Mon Sep 17 00:00:00 2001 From: VeraZab Date: Thu, 3 May 2018 11:14:18 -0400 Subject: [PATCH 3/4] Add deleteKeys to config --- src/lib/dereference.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/dereference.js b/src/lib/dereference.js index 9ec3bd079..989ff734c 100644 --- a/src/lib/dereference.js +++ b/src/lib/dereference.js @@ -2,7 +2,7 @@ import walkObject from './walkObject'; const SRC_ATTR_PATTERN = /src$/; -export default function dereference(container, dataSources, deleteKeys) { +export default function dereference(container, dataSources, config = {deleteKeys: false}) { const replacer = (key, parent) => { if (!SRC_ATTR_PATTERN.test(key)) { return; @@ -12,7 +12,7 @@ export default function dereference(container, dataSources, deleteKeys) { const data = dataSources[srcRef]; const dataKey = key.replace(SRC_ATTR_PATTERN, ''); - if (deleteKeys && !(srcRef in dataSources)) { + if (config.deleteKeys && !(srcRef in dataSources)) { delete parent[dataKey]; return; } From e5886e2beec998a6905866b122615c038da9127c Mon Sep 17 00:00:00 2001 From: VeraZab Date: Thu, 3 May 2018 11:21:26 -0400 Subject: [PATCH 4/4] Prettier --- src/lib/dereference.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/dereference.js b/src/lib/dereference.js index 989ff734c..beac9b806 100644 --- a/src/lib/dereference.js +++ b/src/lib/dereference.js @@ -2,7 +2,11 @@ import walkObject from './walkObject'; const SRC_ATTR_PATTERN = /src$/; -export default function dereference(container, dataSources, config = {deleteKeys: false}) { +export default function dereference( + container, + dataSources, + config = {deleteKeys: false} +) { const replacer = (key, parent) => { if (!SRC_ATTR_PATTERN.test(key)) { return;