From a319a5977408f8cee44f81548c2313df4e7569ce Mon Sep 17 00:00:00 2001 From: Damon Kaswell Date: Thu, 12 Jan 2023 09:54:40 -0800 Subject: [PATCH] One more try on types Signed-off-by: Damon Kaswell --- .../api-report.md | 21 +++++++++++-------- .../src/engine/IncrementalIngestionEngine.ts | 8 +++---- .../src/module/WrapperProviders.ts | 4 ++-- ...gestionEntityProviderCatalogModule.test.ts | 2 +- ...talIngestionEntityProviderCatalogModule.ts | 2 +- .../src/run.ts | 2 +- .../src/service/IncrementalCatalogBuilder.ts | 4 ++-- .../src/types.ts | 8 +++---- 8 files changed, 26 insertions(+), 25 deletions(-) diff --git a/plugins/catalog-backend-module-incremental-ingestion/api-report.md b/plugins/catalog-backend-module-incremental-ingestion/api-report.md index aa526a8fe8..c79d07ad26 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/api-report.md +++ b/plugins/catalog-backend-module-incremental-ingestion/api-report.md @@ -18,23 +18,23 @@ import { Router } from 'express'; import type { UrlReader } from '@backstage/backend-common'; // @public -export type EntityIteratorResult = +export type EntityIteratorResult = | { done: false; entities: DeferredEntity[]; - cursor: unknown; + cursor: T; } | { done: true; entities?: DeferredEntity[]; - cursor?: unknown; + cursor?: T; }; // @public (undocumented) export class IncrementalCatalogBuilder { // (undocumented) - addIncrementalEntityProvider( - provider: IncrementalEntityProvider, + addIncrementalEntityProvider( + provider: IncrementalEntityProvider, options: IncrementalEntityProviderOptions, ): void; // (undocumented) @@ -48,8 +48,8 @@ export class IncrementalCatalogBuilder { } // @public -export interface IncrementalEntityProvider { - around(burst: (context: unknown) => Promise): Promise; +export interface IncrementalEntityProvider { + around(burst: (context: TContext) => Promise): Promise; deltaMapper?: (payload: unknown) => { delta: | { @@ -61,7 +61,10 @@ export interface IncrementalEntityProvider { | undefined; }; getProviderName(): string; - next(context: unknown, cursor?: unknown): Promise; + next( + context: TContext, + cursor?: TCursor, + ): Promise>; } // @public (undocumented) @@ -77,7 +80,7 @@ export interface IncrementalEntityProviderOptions { // @alpha export const incrementalIngestionEntityProviderCatalogModule: (options: { providers: { - provider: IncrementalEntityProvider; + provider: IncrementalEntityProvider; options: IncrementalEntityProviderOptions; }[]; }) => BackendFeature; diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts b/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts index 6213dcf786..e4d11b5f0d 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts @@ -23,7 +23,7 @@ import { v4 } from 'uuid'; import { stringifyError } from '@backstage/errors'; import { EventParams, EventSubscriber } from '@backstage/plugin-events-node'; -export class IncrementalIngestionEngine +export class IncrementalIngestionEngine implements IterationEngine, EventSubscriber { private readonly restLength: Duration; @@ -32,7 +32,7 @@ export class IncrementalIngestionEngine private manager: IncrementalIngestionDatabaseManager; - constructor(private options: IterationEngineOptions) { + constructor(private options: IterationEngineOptions) { this.manager = options.manager; this.restLength = Duration.fromObject(options.restLength); this.backoff = options.backoff ?? [ @@ -347,13 +347,11 @@ export class IncrementalIngestionEngine `incremental-engine: Received ${this.providerEventTopic} event`, ); - const payload = eventPayload as TInput; - if (!provider.deltaMapper) { return; } - const update = provider.deltaMapper(payload); + const update = provider.deltaMapper(eventPayload); if (update.delta) { if (update.delta.added.length > 0) { diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts index 2308db681b..e714568c4b 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts @@ -81,8 +81,8 @@ export class WrapperProviders { ).createRouter(); } - private async startProvider( - provider: IncrementalEntityProvider, + private async startProvider( + provider: IncrementalEntityProvider, providerOptions: IncrementalEntityProviderOptions, connection: EntityProviderConnection, ) { diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.test.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.test.ts index d196693db8..06cbcb010e 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.test.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.test.ts @@ -24,7 +24,7 @@ import { incrementalIngestionEntityProviderCatalogModule } from './incrementalIn describe('bitbucketServerEntityProviderCatalogModule', () => { it('should register provider at the catalog extension point', async () => { - const provider1: IncrementalEntityProvider = { + const provider1: IncrementalEntityProvider = { getProviderName: () => 'provider1', around: burst => burst(0), next: async (cursor, _context) => { diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts index 2ed7dda728..0ecb45292c 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/incrementalIngestionEntityProviderCatalogModule.ts @@ -38,7 +38,7 @@ export const incrementalIngestionEntityProviderCatalogModule = env, options: { providers: Array<{ - provider: IncrementalEntityProvider; + provider: IncrementalEntityProvider; options: IncrementalEntityProviderOptions; }>; }, diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/run.ts b/plugins/catalog-backend-module-incremental-ingestion/src/run.ts index 2dee5716c0..08d95f4417 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/run.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/run.ts @@ -36,7 +36,7 @@ import { incrementalIngestionEntityProviderCatalogModule, } from '.'; -const provider: IncrementalEntityProvider = { +const provider: IncrementalEntityProvider = { getProviderName: () => 'test-provider', around: burst => burst(0), next: async (_context, cursor) => { diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts b/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts index e65698d4a4..6d2b3e2be5 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts @@ -68,8 +68,8 @@ export class IncrementalCatalogBuilder { return { incrementalAdminRouter }; } - addIncrementalEntityProvider( - provider: IncrementalEntityProvider, + addIncrementalEntityProvider( + provider: IncrementalEntityProvider, options: IncrementalEntityProviderOptions, ) { const { burstInterval, burstLength, restLength } = options; diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/types.ts b/plugins/catalog-backend-module-incremental-ingestion/src/types.ts index f1325f5cc9..24919e2647 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/types.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/types.ts @@ -46,7 +46,7 @@ import { IncrementalIngestionDatabaseManager } from './database/IncrementalInges * * @public */ -export interface IncrementalEntityProvider { +export interface IncrementalEntityProvider { /** * This name must be unique between all of the entity providers * operating in the catalog. @@ -80,7 +80,7 @@ export interface IncrementalEntityProvider { * If present, this method maps incoming payloads to apply updates * outside of the incremental ingestion schedule. */ - deltaMapper?: (payload: TInput) => { + deltaMapper?: (payload: unknown) => { delta: | { added: DeferredEntity[]; @@ -167,11 +167,11 @@ export interface IterationEngine { taskFn: TaskFunction; } -export interface IterationEngineOptions { +export interface IterationEngineOptions { logger: Logger; connection: EntityProviderConnection; manager: IncrementalIngestionDatabaseManager; - provider: IncrementalEntityProvider; + provider: IncrementalEntityProvider; restLength: DurationObjectUnits; ready: Promise; backoff?: IncrementalEntityProviderOptions['backoff'];