From bfdfac62305473373e87582d84655841b6c1c6d3 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 14 Aug 2024 14:26:53 +0200 Subject: [PATCH] Revert "refactor: remove deprecated url reader service types" This reverts commit c32b5f3467cf6d0bcd355fde0fb0e4bce77f1b38. Signed-off-by: Johan Haals --- packages/backend-common/api-report.md | 36 +++++++++++ .../backend-common/src/deprecated/index.ts | 63 +++++++++++++++++++ packages/backend-plugin-api/api-report.md | 28 +++++++++ .../services/definitions/UrlReaderService.ts | 47 ++++++++++++++ .../src/services/definitions/index.ts | 9 +++ plugins/search-backend-node/api-report.md | 4 +- plugins/search-backend-node/package.json | 3 +- ...ewlineDelimitedJsonCollatorFactory.test.ts | 14 ++--- .../NewlineDelimitedJsonCollatorFactory.ts | 7 ++- plugins/techdocs-node/src/helpers.test.ts | 24 +++---- yarn.lock | 2 +- 11 files changed, 210 insertions(+), 27 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 32fdf769c7..11a5befad4 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -49,12 +49,21 @@ import { PluginMetadataService } from '@backstage/backend-plugin-api'; import { PushResult } from 'isomorphic-git'; import { Readable } from 'stream'; import { ReadCommitResult } from 'isomorphic-git'; +import { ReadTreeOptions as ReadTreeOptions_2 } from '@backstage/backend-plugin-api'; +import { ReadTreeResponse as ReadTreeResponse_2 } from '@backstage/backend-plugin-api'; +import { ReadTreeResponseDirOptions as ReadTreeResponseDirOptions_2 } from '@backstage/backend-plugin-api'; +import { ReadTreeResponseFile as ReadTreeResponseFile_2 } from '@backstage/backend-plugin-api'; +import { ReadUrlOptions as ReadUrlOptions_2 } from '@backstage/backend-plugin-api'; +import { ReadUrlResponse as ReadUrlResponse_2 } from '@backstage/backend-plugin-api'; import { RequestHandler } from 'express'; import { resolvePackagePath as resolvePackagePath_2 } from '@backstage/backend-plugin-api'; import { resolveSafeChildPath as resolveSafeChildPath_2 } from '@backstage/backend-plugin-api'; import { RootConfigService } from '@backstage/backend-plugin-api'; import { Router } from 'express'; import { SchedulerService } from '@backstage/backend-plugin-api'; +import { SearchOptions as SearchOptions_2 } from '@backstage/backend-plugin-api'; +import { SearchResponse as SearchResponse_2 } from '@backstage/backend-plugin-api'; +import { SearchResponseFile as SearchResponseFile_2 } from '@backstage/backend-plugin-api'; import { Server } from 'http'; import { ServiceRef } from '@backstage/backend-plugin-api'; import { TokenManagerService } from '@backstage/backend-plugin-api'; @@ -502,6 +511,15 @@ export interface PullOptions { // @public @deprecated (undocumented) export type ReaderFactory = ReaderFactory_2; +// @public @deprecated (undocumented) +export type ReadTreeOptions = ReadTreeOptions_2; + +// @public @deprecated (undocumented) +export type ReadTreeResponse = ReadTreeResponse_2; + +// @public @deprecated (undocumented) +export type ReadTreeResponseDirOptions = ReadTreeResponseDirOptions_2; + // Warning: (ae-forgotten-export) The symbol "ReadTreeResponseFactory_2" needs to be exported by the entry point index.d.ts // // @public @deprecated (undocumented) @@ -512,6 +530,15 @@ export type ReadTreeResponseFactory = ReadTreeResponseFactory_2; // @public @deprecated (undocumented) export type ReadTreeResponseFactoryOptions = ReadTreeResponseFactoryOptions_2; +// @public @deprecated (undocumented) +export type ReadTreeResponseFile = ReadTreeResponseFile_2; + +// @public @deprecated (undocumented) +export type ReadUrlOptions = ReadUrlOptions_2; + +// @public @deprecated (undocumented) +export type ReadUrlResponse = ReadUrlResponse_2; + // Warning: (ae-forgotten-export) The symbol "ReadUrlResponseFactory_2" needs to be exported by the entry point index.d.ts // // @public @deprecated (undocumented) @@ -556,6 +583,15 @@ export type RunContainerOptions = { pullOptions?: PullOptions; }; +// @public @deprecated (undocumented) +export type SearchOptions = SearchOptions_2; + +// @public @deprecated (undocumented) +export type SearchResponse = SearchResponse_2; + +// @public @deprecated (undocumented) +export type SearchResponseFile = SearchResponseFile_2; + // @public @deprecated export class ServerTokenManager implements TokenManager { // (undocumented) diff --git a/packages/backend-common/src/deprecated/index.ts b/packages/backend-common/src/deprecated/index.ts index 8c37017eb7..e3e4101d25 100644 --- a/packages/backend-common/src/deprecated/index.ts +++ b/packages/backend-common/src/deprecated/index.ts @@ -85,6 +85,15 @@ import { resolvePackagePath as _resolvePackagePath, resolveSafeChildPath as _resolveSafeChildPath, isChildPath as _isChildPath, + ReadTreeOptions as _ReadTreeOptions, + ReadTreeResponse as _ReadTreeResponse, + ReadTreeResponseFile as _ReadTreeResponseFile, + ReadTreeResponseDirOptions as _ReadTreeResponseDirOptions, + ReadUrlOptions as _ReadUrlOptions, + ReadUrlResponse as _ReadUrlResponse, + SearchOptions as _SearchOptions, + SearchResponse as _SearchResponse, + SearchResponseFile as _SearchResponseFile, UrlReaderService as _UrlReaderService, LifecycleService, PluginMetadataService, @@ -403,6 +412,60 @@ export type ReadUrlResponseFactoryFromStreamOptions = */ export type UrlReaderPredicateTuple = _UrlReaderPredicateTuple; +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeOptions` from `@backstage/backend-plugin-api` instead + */ +export type ReadTreeOptions = _ReadTreeOptions; + +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeResponse` from `@backstage/backend-plugin-api` instead + */ +export type ReadTreeResponse = _ReadTreeResponse; + +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeResponseFile` from `@backstage/backend-plugin-api` instead + */ +export type ReadTreeResponseFile = _ReadTreeResponseFile; + +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeResponseDirOptions` from `@backstage/backend-plugin-api` instead + */ +export type ReadTreeResponseDirOptions = _ReadTreeResponseDirOptions; + +/** + * @public + * @deprecated Use `UrlReaderServiceReadUrlOptions` from `@backstage/backend-plugin-api` instead + */ +export type ReadUrlOptions = _ReadUrlOptions; + +/** + * @public + * @deprecated Use `UrlReaderServiceReadUrlResponse` from `@backstage/backend-plugin-api` instead + */ +export type ReadUrlResponse = _ReadUrlResponse; + +/** + * @public + * @deprecated Use `UrlReaderServiceSearchOptions` from `@backstage/backend-plugin-api` instead + */ +export type SearchOptions = _SearchOptions; + +/** + * @public + * @deprecated Use `UrlReaderServiceSearchResponse` from `@backstage/backend-plugin-api` instead + */ +export type SearchResponse = _SearchResponse; + +/** + * @public + * @deprecated Use `UrlReaderServiceSearchResponseFile` from `@backstage/backend-plugin-api` instead + */ +export type SearchResponseFile = _SearchResponseFile; + /** * @public * @deprecated Use `UrlReaderService` from `@backstage/backend-plugin-api` instead diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md index 0864064625..319ddf0bc6 100644 --- a/packages/backend-plugin-api/api-report.md +++ b/packages/backend-plugin-api/api-report.md @@ -553,6 +553,25 @@ export function readSchedulerServiceTaskScheduleDefinitionFromConfig( config: Config, ): SchedulerServiceTaskScheduleDefinition; +// @public @deprecated (undocumented) +export type ReadTreeOptions = UrlReaderServiceReadTreeOptions; + +// @public @deprecated (undocumented) +export type ReadTreeResponse = UrlReaderServiceReadTreeResponse; + +// @public @deprecated (undocumented) +export type ReadTreeResponseDirOptions = + UrlReaderServiceReadTreeResponseDirOptions; + +// @public @deprecated (undocumented) +export type ReadTreeResponseFile = UrlReaderServiceReadTreeResponseFile; + +// @public @deprecated (undocumented) +export type ReadUrlOptions = UrlReaderServiceReadUrlOptions; + +// @public @deprecated (undocumented) +export type ReadUrlResponse = UrlReaderServiceReadUrlResponse; + // @public export function resolvePackagePath(name: string, ...paths: string[]): string; @@ -688,6 +707,15 @@ export interface SchedulerServiceTaskScheduleDefinitionConfig { timeout: string | HumanDuration; } +// @public @deprecated (undocumented) +export type SearchOptions = UrlReaderServiceSearchOptions; + +// @public @deprecated (undocumented) +export type SearchResponse = UrlReaderServiceSearchResponse; + +// @public @deprecated (undocumented) +export type SearchResponseFile = UrlReaderServiceSearchResponseFile; + // @public (undocumented) export interface ServiceFactory< TService = unknown, diff --git a/packages/backend-plugin-api/src/services/definitions/UrlReaderService.ts b/packages/backend-plugin-api/src/services/definitions/UrlReaderService.ts index 9b327cfbf0..25b787107e 100644 --- a/packages/backend-plugin-api/src/services/definitions/UrlReaderService.ts +++ b/packages/backend-plugin-api/src/services/definitions/UrlReaderService.ts @@ -368,3 +368,50 @@ export type UrlReaderServiceSearchResponseFile = { */ lastModifiedAt?: Date; }; + +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeOptions` instead + */ +export type ReadTreeOptions = UrlReaderServiceReadTreeOptions; +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeResponse` instead + */ +export type ReadTreeResponse = UrlReaderServiceReadTreeResponse; +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeResponseDirOptions` instead + */ +export type ReadTreeResponseDirOptions = + UrlReaderServiceReadTreeResponseDirOptions; +/** + * @public + * @deprecated Use `UrlReaderServiceReadTreeResponseFile` instead + */ +export type ReadTreeResponseFile = UrlReaderServiceReadTreeResponseFile; +/** + * @public + * @deprecated Use `UrlReaderServiceReadUrlResponse` instead + */ +export type ReadUrlResponse = UrlReaderServiceReadUrlResponse; +/** + * @public + * @deprecated Use `UrlReaderServiceReadUrlOptions` instead + */ +export type ReadUrlOptions = UrlReaderServiceReadUrlOptions; +/** + * @public + * @deprecated Use `UrlReaderServiceSearchOptions` instead + */ +export type SearchOptions = UrlReaderServiceSearchOptions; +/** + * @public + * @deprecated Use `UrlReaderServiceSearchResponse` instead + */ +export type SearchResponse = UrlReaderServiceSearchResponse; +/** + * @public + * @deprecated Use `UrlReaderServiceSearchResponseFile` instead + */ +export type SearchResponseFile = UrlReaderServiceSearchResponseFile; diff --git a/packages/backend-plugin-api/src/services/definitions/index.ts b/packages/backend-plugin-api/src/services/definitions/index.ts index 194658dc0e..5e30d444fd 100644 --- a/packages/backend-plugin-api/src/services/definitions/index.ts +++ b/packages/backend-plugin-api/src/services/definitions/index.ts @@ -66,6 +66,15 @@ export type { } from './SchedulerService'; export type { TokenManagerService } from './TokenManagerService'; export type { + ReadTreeOptions, + ReadTreeResponse, + ReadTreeResponseDirOptions, + ReadTreeResponseFile, + ReadUrlResponse, + ReadUrlOptions, + SearchOptions, + SearchResponse, + SearchResponseFile, UrlReaderServiceReadTreeOptions, UrlReaderServiceReadTreeResponse, UrlReaderServiceReadTreeResponseDirOptions, diff --git a/plugins/search-backend-node/api-report.md b/plugins/search-backend-node/api-report.md index 03269c72e8..5e8961a65e 100644 --- a/plugins/search-backend-node/api-report.md +++ b/plugins/search-backend-node/api-report.md @@ -20,7 +20,7 @@ import { SearchQuery } from '@backstage/plugin-search-common'; import { TaskFunction } from '@backstage/backend-tasks'; import { TaskRunner } from '@backstage/backend-tasks'; import { Transform } from 'stream'; -import { UrlReaderService } from '@backstage/backend-plugin-api'; +import { UrlReader } from '@backstage/backend-common'; import { Writable } from 'stream'; // @public @@ -138,7 +138,7 @@ export class NewlineDelimitedJsonCollatorFactory export type NewlineDelimitedJsonCollatorFactoryOptions = { type: string; searchPattern: string; - reader: UrlReaderService; + reader: UrlReader; logger: LoggerService; visibilityPermission?: Permission; }; diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index c8a833e92a..d7a7191faa 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -53,7 +53,7 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-defaults": "workspace:^", + "@backstage/backend-common": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-tasks": "workspace:^", "@backstage/config": "workspace:^", @@ -67,6 +67,7 @@ "uuid": "^9.0.0" }, "devDependencies": { + "@backstage/backend-common": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/ndjson": "^2.0.1" diff --git a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts index 45f3635232..45cc98e9ba 100644 --- a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts +++ b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts @@ -14,16 +14,16 @@ * limitations under the License. */ +import { + ReadUrlResponse, + UrlReader, + UrlReaders, +} from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { Readable } from 'stream'; import { NewlineDelimitedJsonCollatorFactory } from './NewlineDelimitedJsonCollatorFactory'; import { TestPipeline } from '../test-utils'; import { mockServices } from '@backstage/backend-test-utils'; -import { - UrlReaderService, - UrlReaderServiceReadUrlResponse, -} from '@backstage/backend-plugin-api'; -import { UrlReaders } from '@backstage/backend-defaults/urlReader'; describe('DefaultCatalogCollatorFactory', () => { const config = new ConfigReader({}); @@ -42,9 +42,7 @@ describe('DefaultCatalogCollatorFactory', () => { describe('getCollator', () => { let readable: Readable; let reader: jest.Mocked< - UrlReaderService & { - readUrl: jest.Mock>; - } + UrlReader & { readUrl: jest.Mock> } >; let factory: NewlineDelimitedJsonCollatorFactory; diff --git a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts index bf78b98040..e7d749dd41 100644 --- a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts +++ b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts @@ -18,8 +18,9 @@ import { Config } from '@backstage/config'; import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; import { Permission } from '@backstage/plugin-permission-common'; import { Readable } from 'stream'; +import { UrlReader } from '@backstage/backend-common'; import { parse as parseNdjson } from 'ndjson'; -import { LoggerService, UrlReaderService } from '@backstage/backend-plugin-api'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Options for instantiate NewlineDelimitedJsonCollatorFactory @@ -28,7 +29,7 @@ import { LoggerService, UrlReaderService } from '@backstage/backend-plugin-api'; export type NewlineDelimitedJsonCollatorFactoryOptions = { type: string; searchPattern: string; - reader: UrlReaderService; + reader: UrlReader; logger: LoggerService; visibilityPermission?: Permission; }; @@ -72,7 +73,7 @@ export class NewlineDelimitedJsonCollatorFactory private constructor( type: string, private readonly searchPattern: string, - private readonly reader: UrlReaderService, + private readonly reader: UrlReader, private readonly logger: LoggerService, visibilityPermission: Permission | undefined, ) { diff --git a/plugins/techdocs-node/src/helpers.test.ts b/plugins/techdocs-node/src/helpers.test.ts index e0c9ac41ca..4f77a5432b 100644 --- a/plugins/techdocs-node/src/helpers.test.ts +++ b/plugins/techdocs-node/src/helpers.test.ts @@ -14,6 +14,13 @@ * limitations under the License. */ +import { + ReadTreeResponse, + ReadUrlOptions, + ReadUrlResponse, + SearchResponse, + UrlReader, +} from '@backstage/backend-common'; import { Entity, getEntitySourceLocation } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; @@ -27,13 +34,6 @@ import { parseReferenceAnnotation, transformDirLocation, } from './helpers'; -import { - UrlReaderService, - UrlReaderServiceReadTreeResponse, - UrlReaderServiceReadUrlOptions, - UrlReaderServiceReadUrlResponse, - UrlReaderServiceSearchResponse, -} from '@backstage/backend-plugin-api'; jest.mock('@backstage/catalog-model', () => ({ ...jest.requireActual('@backstage/catalog-model'), @@ -290,19 +290,19 @@ describe('getLocationForEntity', () => { describe('getDocFilesFromRepository', () => { it('should read a remote directory using UrlReader.readTree', async () => { - class MockUrlReader implements UrlReaderService { + class MockUrlReader implements UrlReader { async read() { return Buffer.from('mock'); } async readUrl( _url: string, - _options?: UrlReaderServiceReadUrlOptions | undefined, - ): Promise { + _options?: ReadUrlOptions | undefined, + ): Promise { throw new Error('Method not implemented.'); } - async readTree(): Promise { + async readTree(): Promise { return { dir: async () => { return '/tmp/testfolder'; @@ -317,7 +317,7 @@ describe('getDocFilesFromRepository', () => { }; } - async search(): Promise { + async search(): Promise { return { etag: '', files: [], diff --git a/yarn.lock b/yarn.lock index edab1f5580..4c47bc5771 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7554,7 +7554,7 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-search-backend-node@workspace:plugins/search-backend-node" dependencies: - "@backstage/backend-defaults": "workspace:^" + "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" "@backstage/backend-test-utils": "workspace:^"