diff --git a/src/lib/dereference.js b/src/lib/dereference.js index af958696f..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) { +export default function dereference( + container, + dataSources, + config = {deleteKeys: false} +) { const replacer = (key, parent) => { if (!SRC_ATTR_PATTERN.test(key)) { return; @@ -10,12 +14,17 @@ export default function dereference(container, dataSources) { const srcRef = parent[key]; const data = dataSources[srcRef]; + const dataKey = key.replace(SRC_ATTR_PATTERN, ''); + + if (config.deleteKeys && !(srcRef in dataSources)) { + delete parent[dataKey]; + return; + } if (!Array.isArray(data)) { return; } - const dataKey = key.replace(SRC_ATTR_PATTERN, ''); parent[dataKey] = data; };