From 2c57c0c4991d27d229fccba9624b776dae331c39 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 2 Sep 2022 10:57:50 +0200 Subject: [PATCH] backend-plugin-api: made defaultFactories internal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Signed-off-by: Patrik Oldsberg --- .changeset/beige-coins-type.md | 6 ++++++ .../src/wiring/ServiceRegistry.ts | 11 ++++++++++- packages/backend-plugin-api/api-report.md | 1 - .../src/services/system/types.ts | 19 ++++++++++++------- 4 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 .changeset/beige-coins-type.md 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; } /**