From 5c399429d9545ca9e35b6b4b552a55a7abbb3c4d Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 13:50:33 +0100 Subject: [PATCH] chore: small refactor and some new config.d.ts Signed-off-by: blam --- packages/backend-defaults/config.d.ts | 18 +++++++++++++++++ packages/config-loader/src/schema/collect.ts | 21 ++++++++++---------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/packages/backend-defaults/config.d.ts b/packages/backend-defaults/config.d.ts index e2a748f85d..0cdd4ef244 100644 --- a/packages/backend-defaults/config.d.ts +++ b/packages/backend-defaults/config.d.ts @@ -22,6 +22,24 @@ export interface Config { }; backend?: { + /** + * Backend configuration for when request authentication is enabled + * + * @deprecated this will be removed when the backwards compatibility is no longer needed with backend-common + */ + auth?: { + /** Keys shared by all backends for signing and validating backend tokens. */ + keys?: { + /** + * Secret for generating tokens. Should be a base64 string, recommended + * length is 24 bytes. + * + * @visibility secret + */ + secret: string; + }[]; + }; + /** * The full base URL of the backend, as seen from the browser's point of * view as it makes calls to the backend. diff --git a/packages/config-loader/src/schema/collect.ts b/packages/config-loader/src/schema/collect.ts index eb788d1038..074248b89b 100644 --- a/packages/config-loader/src/schema/collect.ts +++ b/packages/config-loader/src/schema/collect.ts @@ -153,18 +153,17 @@ export async function collectConfigSchemas( ]); const tsSchemas = await compileTsSchemas(tsSchemaPaths); + const allSchemas = schemas.concat(tsSchemas); - return schemas - .concat(tsSchemas) - .filter( - ({ packageName }, _, original) => - !( - packageName === '@backstage/backend-common' && - original.some( - ({ packageName: p }) => p === '@backstage/backend-defaults', - ) - ), - ); + const isMissingBackendDefaults = !allSchemas.some( + ({ packageName }) => packageName === '@backstage/backend-defaults', + ); + + // Filter out the backend-common schema unless the backend-defaults schema is missing + return allSchemas.filter( + ({ packageName }) => + packageName !== '@backstage/backend-common' || isMissingBackendDefaults, + ); } // This handles the support of TypeScript .d.ts config schema declarations.