From f6ed7d5d0d966c14bb48895e094741abde9be7f3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 15 Nov 2020 21:29:30 +0100 Subject: [PATCH] config-loader: normalize data paths to ensure consistent behavior --- .../config-loader/src/lib/schema/compile.ts | 6 +++++- .../src/lib/schema/filtering.test.ts | 18 +++++++++--------- .../config-loader/src/lib/schema/filtering.ts | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/config-loader/src/lib/schema/compile.ts b/packages/config-loader/src/lib/schema/compile.ts index 5009dccce7..93ab8e978f 100644 --- a/packages/config-loader/src/lib/schema/compile.ts +++ b/packages/config-loader/src/lib/schema/compile.ts @@ -56,7 +56,11 @@ export function compileConfigSchemas( return false; } if (visibility) { - visibilityByPath.set(dataPath, visibility); + const normalizedPath = dataPath.replace( + /\['?(.*?)'?\]/g, + (_, segment) => `.${segment}`, + ); + visibilityByPath.set(normalizedPath, visibility); } return true; }; diff --git a/packages/config-loader/src/lib/schema/filtering.test.ts b/packages/config-loader/src/lib/schema/filtering.test.ts index 8e3fb61ae5..bfad2ca95a 100644 --- a/packages/config-loader/src/lib/schema/filtering.test.ts +++ b/packages/config-loader/src/lib/schema/filtering.test.ts @@ -40,18 +40,18 @@ const data = { const visiblity = new Map( Object.entries({ - '.arr[0]': 'frontend', - '.arr[1]': 'backend', - '.arr[2]': 'secret', + '.arr.0': 'frontend', + '.arr.1': 'backend', + '.arr.2': 'secret', '.obj.f': 'frontend', '.obj.b': 'backend', '.obj.b.s': 'secret', - '.objArr[0].f': 'frontend', - '.objArr[0].b': 'backend', - '.objArr[0].s': 'secret', - '.objArr[1].f': 'frontend', - '.objArr[1].b': 'backend', - '.objArr[1].s': 'secret', + '.objArr.0.f': 'frontend', + '.objArr.0.b': 'backend', + '.objArr.0.s': 'secret', + '.objArr.1.f': 'frontend', + '.objArr.1.b': 'backend', + '.objArr.1.s': 'secret', '.arrF': 'frontend', '.arrB': 'backend', '.arrS': 'secret', diff --git a/packages/config-loader/src/lib/schema/filtering.ts b/packages/config-loader/src/lib/schema/filtering.ts index 74e75f465d..10a97f9a7f 100644 --- a/packages/config-loader/src/lib/schema/filtering.ts +++ b/packages/config-loader/src/lib/schema/filtering.ts @@ -49,7 +49,7 @@ export function filterByVisibility( const arr = new Array(); for (const [index, value] of jsonVal.entries()) { - const out = transform(value, `${path}[${index}]`); + const out = transform(value, `${path}.${index}`); if (out !== undefined) { arr.push(out); }