From 2f8c58b11b3deef624bf657513bde4d7fefa96d1 Mon Sep 17 00:00:00 2001 From: aramissennyeydd Date: Thu, 28 Nov 2024 20:46:34 -0500 Subject: [PATCH] remove experimental service from core services Signed-off-by: aramissennyeydd --- .../src/wiring/BackendInitializer.ts | 20 ++++--------- packages/backend-plugin-api/src/alpha.ts | 3 ++ .../src/services/definitions/coreServices.ts | 11 ------- .../definitions/experimentalServices.ts | 29 +++++++++++++++++++ packages/backend/src/instanceMetadata.ts | 3 +- 5 files changed, 40 insertions(+), 26 deletions(-) create mode 100644 packages/backend-plugin-api/src/services/definitions/experimentalServices.ts diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.ts b/packages/backend-app-api/src/wiring/BackendInitializer.ts index ce7717c0cb..ec36847855 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.ts @@ -35,7 +35,11 @@ import type { // eslint-disable-next-line @backstage/no-relative-monorepo-imports import type { InternalServiceFactory } from '../../../backend-plugin-api/src/services/system/types'; import { ForwardedError, ConflictError } from '@backstage/errors'; -import { featureDiscoveryServiceRef } from '@backstage/backend-plugin-api/alpha'; +import { + experimentalServices, + featureDiscoveryServiceRef, + BackendFeatureMeta, +} from '@backstage/backend-plugin-api/alpha'; import { DependencyGraph } from '../lib/DependencyGraph'; import { ServiceRegistry } from './ServiceRegistry'; import { createInitializationLogger } from './createInitializationLogger'; @@ -97,18 +101,6 @@ const instanceRegistry = new (class InstanceRegistry { }; })(); -// Duplicating from `@backstage/backend-plugin-api` to avoid a deep import. -type BackendFeatureMeta = - | { - type: 'plugin'; - pluginId: string; - } - | { - type: 'module'; - pluginId: string; - moduleId: string; - }; - function createInstanceMetadataServiceFactory( registrations: InternalBackendRegistrations[], ) { @@ -136,7 +128,7 @@ function createInstanceMetadataServiceFactory( }) .flat(); return createServiceFactory({ - service: coreServices.EXPERIMENTAL_instanceMetadata, + service: experimentalServices.EXPERIMENTAL_instanceMetadata, deps: {}, factory: async () => ({ getInstalledFeatures: () => installedFeatures }), }); diff --git a/packages/backend-plugin-api/src/alpha.ts b/packages/backend-plugin-api/src/alpha.ts index 3f26c66fe9..8749537bd2 100644 --- a/packages/backend-plugin-api/src/alpha.ts +++ b/packages/backend-plugin-api/src/alpha.ts @@ -34,3 +34,6 @@ export const featureDiscoveryServiceRef = id: 'core.featureDiscovery', scope: 'root', }); + +export { experimentalServices } from './services/definitions/experimentalServices'; +export type { BackendFeatureMeta } from './services/definitions/InstanceMetadataService'; diff --git a/packages/backend-plugin-api/src/services/definitions/coreServices.ts b/packages/backend-plugin-api/src/services/definitions/coreServices.ts index 06e8905614..f87bff023c 100644 --- a/packages/backend-plugin-api/src/services/definitions/coreServices.ts +++ b/packages/backend-plugin-api/src/services/definitions/coreServices.ts @@ -251,15 +251,4 @@ export namespace coreServices { export const urlReader = createServiceRef< import('./UrlReaderService').UrlReaderService >({ id: 'core.urlReader' }); - - /** - * EXPERIMENTAL: Instance metadata service. - * - * @public - */ - export const EXPERIMENTAL_instanceMetadata = createServiceRef< - import('./InstanceMetadataService').InstanceMetadataService - >({ - id: 'core.instanceMetadata', - }); } diff --git a/packages/backend-plugin-api/src/services/definitions/experimentalServices.ts b/packages/backend-plugin-api/src/services/definitions/experimentalServices.ts new file mode 100644 index 0000000000..b1c820742d --- /dev/null +++ b/packages/backend-plugin-api/src/services/definitions/experimentalServices.ts @@ -0,0 +1,29 @@ +/* + * 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 dbf2acba54..923fc8beea 100644 --- a/packages/backend/src/instanceMetadata.ts +++ b/packages/backend/src/instanceMetadata.ts @@ -17,6 +17,7 @@ import { coreServices, createBackendPlugin, } from '@backstage/backend-plugin-api'; +import { experimentalServices } from '@backstage/backend-plugin-api/alpha'; // Example usage of the instance metadata service to log the installed features. export default createBackendPlugin({ @@ -24,7 +25,7 @@ export default createBackendPlugin({ register(env) { env.registerInit({ deps: { - instanceMetadata: coreServices.EXPERIMENTAL_instanceMetadata, + instanceMetadata: experimentalServices.EXPERIMENTAL_instanceMetadata, logger: coreServices.logger, }, async init({ instanceMetadata, logger }) {