From e65b6622e6ae9bde37e2c2e3071169c0b4b65b79 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 10 Sep 2021 16:52:59 +0200 Subject: [PATCH] version-bridge: restructure module layout Signed-off-by: Patrik Oldsberg --- ...versionedValues.ts => VersionedContext.ts} | 26 +----------- .../version-bridge/src/lib/VersionedValue.ts | 40 +++++++++++++++++++ packages/version-bridge/src/lib/index.ts | 13 +++++- 3 files changed, 52 insertions(+), 27 deletions(-) rename packages/version-bridge/src/lib/{versionedValues.ts => VersionedContext.ts} (65%) create mode 100644 packages/version-bridge/src/lib/VersionedValue.ts diff --git a/packages/version-bridge/src/lib/versionedValues.ts b/packages/version-bridge/src/lib/VersionedContext.ts similarity index 65% rename from packages/version-bridge/src/lib/versionedValues.ts rename to packages/version-bridge/src/lib/VersionedContext.ts index 7686842ecd..310e091d0b 100644 --- a/packages/version-bridge/src/lib/versionedValues.ts +++ b/packages/version-bridge/src/lib/VersionedContext.ts @@ -16,31 +16,7 @@ import { createContext, useContext, Context } from 'react'; import { getGlobalSingleton, setGlobalSingleton } from './globalObject'; - -/** - * The versioned value interface is a container for a set of values that - * can be looked up by version. It is intended to be used as a container - * for values that can be versioned independently of package versions. - */ -export type VersionedValue = { - atVersion( - version: Version, - ): Versions[Version] | undefined; -}; - -/** - * Creates a container for a map of versioned values that implements VersionedValue. - */ -export function createVersionedValueMap< - Versions extends { [version: number]: any }, ->(versions: Versions): VersionedValue { - Object.freeze(versions); - return { - atVersion(version) { - return versions[version]; - }, - }; -} +import { createVersionedValueMap, VersionedValue } from './VersionedValue'; export function useVersionedContext< Versions extends { [version in number]: any }, diff --git a/packages/version-bridge/src/lib/VersionedValue.ts b/packages/version-bridge/src/lib/VersionedValue.ts new file mode 100644 index 0000000000..3b3064fc7e --- /dev/null +++ b/packages/version-bridge/src/lib/VersionedValue.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The versioned value interface is a container for a set of values that + * can be looked up by version. It is intended to be used as a container + * for values that can be versioned independently of package versions. + */ +export type VersionedValue = { + atVersion( + version: Version, + ): Versions[Version] | undefined; +}; + +/** + * Creates a container for a map of versioned values that implements VersionedValue. + */ +export function createVersionedValueMap< + Versions extends { [version: number]: any }, +>(versions: Versions): VersionedValue { + Object.freeze(versions); + return { + atVersion(version) { + return versions[version]; + }, + }; +} diff --git a/packages/version-bridge/src/lib/index.ts b/packages/version-bridge/src/lib/index.ts index 2c4c4cbe2a..8951694428 100644 --- a/packages/version-bridge/src/lib/index.ts +++ b/packages/version-bridge/src/lib/index.ts @@ -14,5 +14,14 @@ * limitations under the License. */ -export * from './globalObject'; -export * from './versionedValues'; +export { + getGlobalSingleton, + getOrCreateGlobalSingleton, + setGlobalSingleton, +} from './globalObject'; +export { + createVersionedContextForTesting, + useVersionedContext, +} from './versionedValues'; +export { createVersionedValueMap } from './VersionedValue'; +export type { VersionedValue } from './VersionedValue';