diff --git a/.changeset/beige-coins-type.md b/.changeset/beige-coins-type.md new file mode 100644 index 0000000000..340170a83e --- /dev/null +++ b/.changeset/beige-coins-type.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-app-api': patch +'@backstage/backend-plugin-api': patch +--- + +Made `ApiRef.defaultFactory` internal. diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.ts index 9df092db42..864390000f 100644 --- a/packages/backend-app-api/src/wiring/ServiceRegistry.ts +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.ts @@ -13,12 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { ServiceFactory, FactoryFunc, ServiceRef, } from '@backstage/backend-plugin-api'; +/** + * Keep in sync with `@backstage/backend-plugin-api/src/services/system/types.ts` + * @internal + */ +export type InternalServiceRef = ServiceRef & { + __defaultFactory?: (service: ServiceRef) => Promise>; +}; + export class ServiceRegistry { readonly #providedFactories: Map; readonly #loadedDefaultFactories: Map>; @@ -38,7 +47,7 @@ export class ServiceRegistry { get(ref: ServiceRef): FactoryFunc | undefined { let factory = this.#providedFactories.get(ref.id); - const { defaultFactory } = ref; + const { __defaultFactory: defaultFactory } = ref as InternalServiceRef; if (!factory && !defaultFactory) { return undefined; } diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md index 01423390e6..f1e0389191 100644 --- a/packages/backend-plugin-api/api-report.md +++ b/packages/backend-plugin-api/api-report.md @@ -180,7 +180,6 @@ export type ServiceFactory = { export type ServiceRef = { id: string; T: T; - defaultFactory?: (service: ServiceRef) => Promise>; toString(): string; $$ref: 'service'; }; diff --git a/packages/backend-plugin-api/src/services/system/types.ts b/packages/backend-plugin-api/src/services/system/types.ts index 3d6ebfc0dd..d622b3917f 100644 --- a/packages/backend-plugin-api/src/services/system/types.ts +++ b/packages/backend-plugin-api/src/services/system/types.ts @@ -28,15 +28,20 @@ export type ServiceRef = { */ T: T; + toString(): string; + + $$ref: 'service'; +}; + +/** + * @internal + */ +export type InternalServiceRef = ServiceRef & { /** * The default factory that will be used to create service * instances if no other factory is provided. */ - defaultFactory?: (service: ServiceRef) => Promise>; - - toString(): string; - - $$ref: 'service'; + __defaultFactory?: (service: ServiceRef) => Promise>; }; /** @public */ @@ -70,12 +75,12 @@ export function createServiceRef(options: { get T(): T { throw new Error(`tried to read ServiceRef.T of ${this}`); }, - defaultFactory, toString() { return `serviceRef{${options.id}}`; }, $$ref: 'service', // TODO: declare - }; + __defaultFactory: defaultFactory, + } as InternalServiceRef; } /**