From 81f8f95585845905ea7e1ca7232bb86bbebe7d78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustaf=20R=C3=A4ntil=C3=A4?= Date: Fri, 28 Oct 2022 14:54:30 +0200 Subject: [PATCH 1/3] feat(version-bridge): Make version bridge inspectable, to ease debugging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gustaf Räntilä --- .../version-bridge/src/lib/VersionedValue.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/version-bridge/src/lib/VersionedValue.ts b/packages/version-bridge/src/lib/VersionedValue.ts index b7c2153e38..cc8ae2aeae 100644 --- a/packages/version-bridge/src/lib/VersionedValue.ts +++ b/packages/version-bridge/src/lib/VersionedValue.ts @@ -36,9 +36,27 @@ export function createVersionedValueMap< Versions extends { [version: number]: unknown }, >(versions: Versions): VersionedValue { Object.freeze(versions); - return { + const versionedValue: VersionedValue = { atVersion(version) { return versions[version]; }, }; + Object.defineProperty(versionedValue, '$value', { + configurable: false, + enumerable: true, + get() { + const highest = Object.keys(versions) + .map(v => parseInt(v, 10)) + .sort((a, b) => b - a)[0]; + return versions[highest]; + }, + }); + Object.defineProperty(versionedValue, '$map', { + configurable: false, + enumerable: true, + get() { + return versions; + }, + }); + return versionedValue; } From e70984325dc88254f512f85a55ec75570415db2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustaf=20R=C3=A4ntil=C3=A4?= Date: Fri, 28 Oct 2022 15:36:07 +0200 Subject: [PATCH 2/3] chore(changeset): Add changeset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gustaf Räntilä --- .changeset/early-jars-laugh.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/early-jars-laugh.md diff --git a/.changeset/early-jars-laugh.md b/.changeset/early-jars-laugh.md new file mode 100644 index 0000000000..1cf0a0e036 --- /dev/null +++ b/.changeset/early-jars-laugh.md @@ -0,0 +1,5 @@ +--- +'@backstage/version-bridge': minor +--- + +Debuggable/inspectable versioned values From dc5b8f7b3083df1dfa3db9abc5429104dd08b18f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustaf=20R=C3=A4ntil=C3=A4?= Date: Wed, 9 Nov 2022 10:22:42 +0100 Subject: [PATCH 3/3] chore(version-bridge): Removed highest-version shortcut, and made the map configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gustaf Räntilä --- .changeset/early-jars-laugh.md | 2 +- packages/version-bridge/src/lib/VersionedValue.ts | 12 +----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/.changeset/early-jars-laugh.md b/.changeset/early-jars-laugh.md index 1cf0a0e036..9b9de4ab80 100644 --- a/.changeset/early-jars-laugh.md +++ b/.changeset/early-jars-laugh.md @@ -1,5 +1,5 @@ --- -'@backstage/version-bridge': minor +'@backstage/version-bridge': patch --- Debuggable/inspectable versioned values diff --git a/packages/version-bridge/src/lib/VersionedValue.ts b/packages/version-bridge/src/lib/VersionedValue.ts index cc8ae2aeae..51a9fd7879 100644 --- a/packages/version-bridge/src/lib/VersionedValue.ts +++ b/packages/version-bridge/src/lib/VersionedValue.ts @@ -41,18 +41,8 @@ export function createVersionedValueMap< return versions[version]; }, }; - Object.defineProperty(versionedValue, '$value', { - configurable: false, - enumerable: true, - get() { - const highest = Object.keys(versions) - .map(v => parseInt(v, 10)) - .sort((a, b) => b - a)[0]; - return versions[highest]; - }, - }); Object.defineProperty(versionedValue, '$map', { - configurable: false, + configurable: true, enumerable: true, get() { return versions;