From f1f21b8cd76937367a0b4df7c0a074458b16c018 Mon Sep 17 00:00:00 2001 From: aramissennyeydd Date: Tue, 10 Jun 2025 11:18:21 -0400 Subject: [PATCH 1/3] fix: loosen regex requirements for config keys Signed-off-by: aramissennyeydd --- packages/config-loader/src/sources/EnvConfigSource.ts | 2 +- packages/config/src/reader.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/config-loader/src/sources/EnvConfigSource.ts b/packages/config-loader/src/sources/EnvConfigSource.ts index 5b4590e107..88d7d8e772 100644 --- a/packages/config-loader/src/sources/EnvConfigSource.ts +++ b/packages/config-loader/src/sources/EnvConfigSource.ts @@ -85,7 +85,7 @@ export class EnvConfigSource implements ConfigSource { const ENV_PREFIX = 'APP_CONFIG_'; // Update the same pattern in config package if this is changed -const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i; +const CONFIG_KEY_PART_PATTERN = /^[\w-_]+$/i; /** * Read runtime configuration from the environment. diff --git a/packages/config/src/reader.ts b/packages/config/src/reader.ts index 52c33f8618..d865ba8172 100644 --- a/packages/config/src/reader.ts +++ b/packages/config/src/reader.ts @@ -18,7 +18,7 @@ import { JsonValue, JsonObject } from '@backstage/types'; import { AppConfig, Config } from './types'; // Update the same pattern in config-loader package if this is changed -const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i; +const CONFIG_KEY_PART_PATTERN = /^[\w-_]+$/i; function isObject(value: JsonValue | undefined): value is JsonObject { return typeof value === 'object' && value !== null && !Array.isArray(value); From ff2361826d9addef4a123ef978b1a48132138060 Mon Sep 17 00:00:00 2001 From: aramissennyeydd Date: Tue, 10 Jun 2025 11:19:12 -0400 Subject: [PATCH 2/3] add changeset Signed-off-by: aramissennyeydd --- .changeset/dry-hornets-stop.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/dry-hornets-stop.md diff --git a/.changeset/dry-hornets-stop.md b/.changeset/dry-hornets-stop.md new file mode 100644 index 0000000000..4979d463a8 --- /dev/null +++ b/.changeset/dry-hornets-stop.md @@ -0,0 +1,6 @@ +--- +'@backstage/config-loader': patch +'@backstage/config': patch +--- + +Loosen the requirements for a key to be considered valid config. From b3a705f3cd1749b6b7e80397a79c2155976834a4 Mon Sep 17 00:00:00 2001 From: aramissennyeydd Date: Tue, 10 Jun 2025 11:53:15 -0400 Subject: [PATCH 3/3] allow x-2 in config Signed-off-by: aramissennyeydd --- packages/config-loader/src/sources/EnvConfigSource.ts | 2 +- packages/config/src/reader.test.ts | 1 + packages/config/src/reader.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/config-loader/src/sources/EnvConfigSource.ts b/packages/config-loader/src/sources/EnvConfigSource.ts index 88d7d8e772..d724f00c6d 100644 --- a/packages/config-loader/src/sources/EnvConfigSource.ts +++ b/packages/config-loader/src/sources/EnvConfigSource.ts @@ -85,7 +85,7 @@ export class EnvConfigSource implements ConfigSource { const ENV_PREFIX = 'APP_CONFIG_'; // Update the same pattern in config package if this is changed -const CONFIG_KEY_PART_PATTERN = /^[\w-_]+$/i; +const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/i; /** * Read runtime configuration from the environment. diff --git a/packages/config/src/reader.test.ts b/packages/config/src/reader.test.ts index 97982ac265..3f6b9ac40a 100644 --- a/packages/config/src/reader.test.ts +++ b/packages/config/src/reader.test.ts @@ -171,6 +171,7 @@ describe('ConfigReader', () => { expect(config.getOptionalString('x_x')).toBeUndefined(); expect(config.getOptionalString('x-X')).toBeUndefined(); expect(config.getOptionalString('x0')).toBeUndefined(); + expect(config.getOptionalString('x-2')).toBeUndefined(); expect(config.getOptionalString('X-x2')).toBeUndefined(); expect(config.getOptionalString('x0_x0')).toBeUndefined(); expect(config.getOptionalString('x_x-x_x')).toBeUndefined(); diff --git a/packages/config/src/reader.ts b/packages/config/src/reader.ts index d865ba8172..2e83de9bf2 100644 --- a/packages/config/src/reader.ts +++ b/packages/config/src/reader.ts @@ -18,7 +18,7 @@ import { JsonValue, JsonObject } from '@backstage/types'; import { AppConfig, Config } from './types'; // Update the same pattern in config-loader package if this is changed -const CONFIG_KEY_PART_PATTERN = /^[\w-_]+$/i; +const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/i; function isObject(value: JsonValue | undefined): value is JsonObject { return typeof value === 'object' && value !== null && !Array.isArray(value);