diff --git a/packages/core-api/src/apis/ApiFactoryRegistry.ts b/packages/core-api/src/apis/ApiFactoryRegistry.ts index b81b560220..9d75944d8b 100644 --- a/packages/core-api/src/apis/ApiFactoryRegistry.ts +++ b/packages/core-api/src/apis/ApiFactoryRegistry.ts @@ -41,9 +41,9 @@ type FactoryTuple = { export class ApiFactoryRegistry implements ApiFactoryHolder { private readonly factories = new Map(); - register( + register( scope: ApiFactoryScope, - factory: ApiFactory, + factory: ApiFactory, ) { const level = ScopeLevels[scope]; const existing = this.factories.get(factory.implements); @@ -55,14 +55,12 @@ export class ApiFactoryRegistry implements ApiFactoryHolder { return true; } - get( - api: ApiRef, - ): ApiFactory | undefined { + get(api: ApiRef): ApiFactory | undefined { const tuple = this.factories.get(api); if (!tuple) { return undefined; } - return tuple.factory as ApiFactory; + return tuple.factory as ApiFactory; } getAllApis(): Set { diff --git a/packages/core-api/src/apis/ApiTestRegistry.ts b/packages/core-api/src/apis/ApiTestRegistry.ts index 6c85db056c..d41d959e99 100644 --- a/packages/core-api/src/apis/ApiTestRegistry.ts +++ b/packages/core-api/src/apis/ApiTestRegistry.ts @@ -31,7 +31,9 @@ export class ApiTestRegistry implements ApiHolder { return this.load(ref); } - register(factory: ApiFactory): ApiTestRegistry { + register( + factory: ApiFactory, + ): ApiTestRegistry { this.factories.set(factory.implements, factory); return this; } diff --git a/packages/core-api/src/apis/helpers.ts b/packages/core-api/src/apis/helpers.ts index 95be80e541..dda6c57fb0 100644 --- a/packages/core-api/src/apis/helpers.ts +++ b/packages/core-api/src/apis/helpers.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { ApiFactory } from './types'; +import { ApiFactory, TypesToApiRefs } from './types'; import { ApiRef } from './ApiRef'; /** @@ -26,25 +26,24 @@ export function createApiFactory< Api, Impl extends Api, Deps extends { [name in string]: unknown } ->(factory: ApiFactory): ApiFactory; -export function createApiFactory( +>(factory: ApiFactory): ApiFactory; +export function createApiFactory( api: ApiRef, - instance: Impl, -): ApiFactory; + instance: Api, +): ApiFactory; export function createApiFactory< Api, - Impl extends Api, Deps extends { [name in string]: unknown } >( - factory: ApiFactory | ApiRef, - instance?: Impl, -): ApiFactory { + factory: ApiFactory | ApiRef, + instance?: Api, +): ApiFactory { if ('id' in factory) { - return ({ + return { implements: factory, - deps: {}, + deps: {} as TypesToApiRefs, factory: () => instance!, - } as unknown) as ApiFactory; + }; } return factory; } diff --git a/packages/core-api/src/apis/types.ts b/packages/core-api/src/apis/types.ts index bb09fbecae..5b2956cfa1 100644 --- a/packages/core-api/src/apis/types.ts +++ b/packages/core-api/src/apis/types.ts @@ -30,24 +30,16 @@ export type ApiHolder = { get(api: ApiRef): T | undefined; }; -export type ApiFactory< - Api, - Impl, - Deps extends { [name in string]: unknown } -> = { +export type ApiFactory = { implements: ApiRef; deps: TypesToApiRefs; - factory(deps: Deps): Impl extends Api ? Impl : never; + factory(deps: Deps): Api; }; -export type AnyApiFactory = ApiFactory< - unknown, - unknown, - { [key in string]: unknown } ->; +export type AnyApiFactory = ApiFactory; export type ApiFactoryHolder = { get( api: ApiRef, - ): ApiFactory | undefined; + ): ApiFactory | undefined; };