From af86ae9e570616edeacde796bdbd64c83ea92de4 Mon Sep 17 00:00:00 2001 From: aramissennyeydd Date: Fri, 29 Nov 2024 09:44:09 -0500 Subject: [PATCH] move to a top level service Signed-off-by: aramissennyeydd --- .../src/wiring/BackendInitializer.test.ts | 5 ++-- .../src/wiring/BackendInitializer.ts | 4 +-- .../backend-plugin-api/report-alpha.api.md | 25 ++++++++++++++++ packages/backend-plugin-api/src/alpha.ts | 17 +++++++++-- .../definitions/InstanceMetadataService.ts | 2 ++ .../definitions/experimentalServices.ts | 29 ------------------- packages/backend/src/instanceMetadata.ts | 4 +-- 7 files changed, 48 insertions(+), 38 deletions(-) delete mode 100644 packages/backend-plugin-api/src/services/definitions/experimentalServices.ts diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index 61c70a3ebe..29c1041afc 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -27,7 +27,7 @@ import { createBackendFeatureLoader, } from '@backstage/backend-plugin-api'; import { BackendInitializer } from './BackendInitializer'; -import { experimentalServices } from '@backstage/backend-plugin-api/alpha'; +import { EXPERIMENTAL_instanceMetadataServiceRef } from '@backstage/backend-plugin-api/alpha'; class MockLogger { debug() {} @@ -743,8 +743,7 @@ describe('BackendInitializer', () => { register(reg) { reg.registerInit({ deps: { - instanceMetadata: - experimentalServices.EXPERIMENTAL_instanceMetadata, + instanceMetadata: EXPERIMENTAL_instanceMetadataServiceRef, }, async init({ instanceMetadata }) { expect(instanceMetadata.getInstalledFeatures()).toEqual([ diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.ts b/packages/backend-app-api/src/wiring/BackendInitializer.ts index ec36847855..93352479bf 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.ts @@ -36,7 +36,7 @@ import type { import type { InternalServiceFactory } from '../../../backend-plugin-api/src/services/system/types'; import { ForwardedError, ConflictError } from '@backstage/errors'; import { - experimentalServices, + EXPERIMENTAL_instanceMetadataServiceRef, featureDiscoveryServiceRef, BackendFeatureMeta, } from '@backstage/backend-plugin-api/alpha'; @@ -128,7 +128,7 @@ function createInstanceMetadataServiceFactory( }) .flat(); return createServiceFactory({ - service: experimentalServices.EXPERIMENTAL_instanceMetadata, + service: EXPERIMENTAL_instanceMetadataServiceRef, deps: {}, factory: async () => ({ getInstalledFeatures: () => installedFeatures }), }); diff --git a/packages/backend-plugin-api/report-alpha.api.md b/packages/backend-plugin-api/report-alpha.api.md index dea357502e..dd20930e2e 100644 --- a/packages/backend-plugin-api/report-alpha.api.md +++ b/packages/backend-plugin-api/report-alpha.api.md @@ -6,6 +6,25 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; import { ServiceRef } from '@backstage/backend-plugin-api'; +// @alpha (undocumented) +export type BackendFeatureMeta = + | { + type: 'plugin'; + pluginId: string; + } + | { + type: 'module'; + pluginId: string; + moduleId: string; + }; + +// @alpha +export const EXPERIMENTAL_instanceMetadataServiceRef: ServiceRef< + InstanceMetadataService, + 'plugin', + 'singleton' +>; + // @alpha (undocumented) export interface FeatureDiscoveryService { // (undocumented) @@ -21,5 +40,11 @@ export const featureDiscoveryServiceRef: ServiceRef< 'singleton' >; +// @alpha (undocumented) +export interface InstanceMetadataService { + // (undocumented) + getInstalledFeatures: () => BackendFeatureMeta[]; +} + // (No @packageDocumentation comment for this package) ``` diff --git a/packages/backend-plugin-api/src/alpha.ts b/packages/backend-plugin-api/src/alpha.ts index 8749537bd2..8d9e126b16 100644 --- a/packages/backend-plugin-api/src/alpha.ts +++ b/packages/backend-plugin-api/src/alpha.ts @@ -35,5 +35,18 @@ export const featureDiscoveryServiceRef = scope: 'root', }); -export { experimentalServices } from './services/definitions/experimentalServices'; -export type { BackendFeatureMeta } from './services/definitions/InstanceMetadataService'; +/** + * EXPERIMENTAL: Instance metadata service. + * + * @alpha + */ +export const EXPERIMENTAL_instanceMetadataServiceRef = createServiceRef< + import('./services/definitions/InstanceMetadataService').InstanceMetadataService +>({ + id: 'experimental.instanceMetadata', +}); + +export type { + BackendFeatureMeta, + InstanceMetadataService, +} from './services/definitions/InstanceMetadataService'; diff --git a/packages/backend-plugin-api/src/services/definitions/InstanceMetadataService.ts b/packages/backend-plugin-api/src/services/definitions/InstanceMetadataService.ts index c9eea973bd..869d361343 100644 --- a/packages/backend-plugin-api/src/services/definitions/InstanceMetadataService.ts +++ b/packages/backend-plugin-api/src/services/definitions/InstanceMetadataService.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +/** @alpha */ export type BackendFeatureMeta = | { type: 'plugin'; @@ -25,6 +26,7 @@ export type BackendFeatureMeta = moduleId: string; }; +/** @alpha */ export interface InstanceMetadataService { getInstalledFeatures: () => BackendFeatureMeta[]; } diff --git a/packages/backend-plugin-api/src/services/definitions/experimentalServices.ts b/packages/backend-plugin-api/src/services/definitions/experimentalServices.ts deleted file mode 100644 index b1c820742d..0000000000 --- a/packages/backend-plugin-api/src/services/definitions/experimentalServices.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2024 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. - */ -import { createServiceRef } from '../system'; - -export namespace experimentalServices { - /** - * EXPERIMENTAL: Instance metadata service. - * - * @public - */ - export const EXPERIMENTAL_instanceMetadata = createServiceRef< - import('./InstanceMetadataService').InstanceMetadataService - >({ - id: 'core.instanceMetadata', - }); -} diff --git a/packages/backend/src/instanceMetadata.ts b/packages/backend/src/instanceMetadata.ts index 923fc8beea..a27922f71f 100644 --- a/packages/backend/src/instanceMetadata.ts +++ b/packages/backend/src/instanceMetadata.ts @@ -17,7 +17,7 @@ import { coreServices, createBackendPlugin, } from '@backstage/backend-plugin-api'; -import { experimentalServices } from '@backstage/backend-plugin-api/alpha'; +import { EXPERIMENTAL_instanceMetadataServiceRef } from '@backstage/backend-plugin-api/alpha'; // Example usage of the instance metadata service to log the installed features. export default createBackendPlugin({ @@ -25,7 +25,7 @@ export default createBackendPlugin({ register(env) { env.registerInit({ deps: { - instanceMetadata: experimentalServices.EXPERIMENTAL_instanceMetadata, + instanceMetadata: EXPERIMENTAL_instanceMetadataServiceRef, logger: coreServices.logger, }, async init({ instanceMetadata, logger }) {