generate api reports

Signed-off-by: Emma Indal <emma.indahl@gmail.com>
Co-authored-by: Camila Loiola <camilaibs@gmail.com>
This commit is contained in:
Emma Indal
2023-03-06 15:00:11 +01:00
committed by Camila Belo
parent 4cc252bdd5
commit 5db02fc935
12 changed files with 369 additions and 192 deletions
@@ -0,0 +1,62 @@
## API Report File for "@backstage/plugin-search-backend-node"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
import { DocumentDecoratorFactory } from '@backstage/plugin-search-common';
import { DocumentTypeInfo } from '@backstage/plugin-search-common';
import { ExtensionPoint } from '@backstage/backend-plugin-api';
import { SearchEngine } from '@backstage/plugin-search-common';
import { ServiceRef } from '@backstage/backend-plugin-api';
import { TaskRunner } from '@backstage/backend-tasks';
// @alpha
export type IndexServiceBuildOptions = {
searchEngine: SearchEngine;
collators: RegisterCollatorParameters[];
decorators: RegisterDecoratorParameters[];
};
// @public
export interface RegisterCollatorParameters {
factory: DocumentCollatorFactory;
schedule: TaskRunner;
}
// @public
export interface RegisterDecoratorParameters {
factory: DocumentDecoratorFactory;
}
// @alpha
export interface SearchEngineRegistryExtensionPoint {
// (undocumented)
setSearchEngine(searchEngine: SearchEngine): void;
}
// @alpha
export const searchEngineRegistryExtensionPoint: ExtensionPoint<SearchEngineRegistryExtensionPoint>;
// @alpha
export interface SearchIndexRegistryExtensionPoint {
// (undocumented)
addCollator(options: RegisterCollatorParameters): void;
// (undocumented)
addDecorator(options: RegisterDecoratorParameters): void;
}
// @alpha
export const searchIndexRegistryExtensionPoint: ExtensionPoint<SearchIndexRegistryExtensionPoint>;
// @alpha
export interface SearchIndexService {
getDocumentTypes(): Record<string, DocumentTypeInfo>;
start(options: IndexServiceBuildOptions): Promise<void>;
}
// @alpha
export const searchIndexService: ServiceRef<SearchIndexService, 'plugin'>;
// (No @packageDocumentation comment for this package)
```
+76 -35
View File
@@ -34,43 +34,70 @@ import {
} from './types';
import { IndexBuilder } from './IndexBuilder';
import { Scheduler } from './Scheduler';
export interface SearchIndexBuilderService {
build(options: IndexBuilderServiceBuildOptions): Promise<{
scheduler: Scheduler;
}>;
/**
* @alpha
* Options for build method on {@link SearchIndexService}.
*/
export type IndexServiceBuildOptions = {
searchEngine: SearchEngine;
collators: RegisterCollatorParameters[];
decorators: RegisterDecoratorParameters[];
};
/**
* @alpha
* Interface for implementation of index service.
*/
export interface SearchIndexService {
/**
* Starts indexing process
*/
start(options: IndexServiceBuildOptions): Promise<void>;
/**
* Returns an index types list.
*/
getDocumentTypes(): Record<string, DocumentTypeInfo>;
}
/**
* @alpha
* Interface for search index registry extension point.
*/
export interface SearchIndexRegistryExtensionPoint {
addCollator(options: RegisterCollatorParameters): void;
addDecorator(options: RegisterDecoratorParameters): void;
}
/**
* @alpha
* Interface for search engine registry extension point.
*/
export interface SearchEngineRegistryExtensionPoint {
setSearchEngine(searchEngine: SearchEngine): void;
}
type DefaultSearchIndexBuilderServiceOptions = {
type DefaultSearchIndexServiceOptions = {
logger: Logger;
};
class DefaultSearchIndexBuilderService implements SearchIndexBuilderService {
/**
* @alpha
* Reponsible for register the indexing task and start the schedule.
*/
class DefaultSearchIndexService implements SearchIndexService {
private logger: Logger;
private indexBuilder: IndexBuilder | null = null;
private constructor(options: DefaultSearchIndexBuilderServiceOptions) {
private constructor(options: DefaultSearchIndexServiceOptions) {
this.logger = options.logger;
}
static fromConfig(options: DefaultSearchIndexBuilderServiceOptions) {
return new DefaultSearchIndexBuilderService(options);
static fromConfig(options: DefaultSearchIndexServiceOptions) {
return new DefaultSearchIndexService(options);
}
build(
options: IndexBuilderServiceBuildOptions,
): Promise<{ scheduler: Scheduler }> {
async start(options: IndexServiceBuildOptions): Promise<void> {
this.indexBuilder = new IndexBuilder({
logger: this.logger,
searchEngine: options.searchEngine,
@@ -84,7 +111,8 @@ class DefaultSearchIndexBuilderService implements SearchIndexBuilderService {
this.indexBuilder?.addDecorator(decorator),
);
return this.indexBuilder?.build();
const { scheduler } = await this.indexBuilder?.build();
scheduler.start();
}
getDocumentTypes(): Record<string, DocumentTypeInfo> {
@@ -92,35 +120,48 @@ class DefaultSearchIndexBuilderService implements SearchIndexBuilderService {
}
}
export const searchIndexBuilderService =
createServiceRef<SearchIndexBuilderService>({
id: 'search.index.builder',
defaultFactory: async service =>
createServiceFactory({
service,
deps: {
logger: coreServices.logger,
},
factory({ logger }) {
return DefaultSearchIndexBuilderService.fromConfig({
logger: loggerToWinstonLogger(logger),
});
},
}),
});
/**
* @alpha
* Service that builds a search index.
*/
export const searchIndexServiceRef = createServiceRef<SearchIndexService>({
id: 'search.index.service',
defaultFactory: async service =>
createServiceFactory({
service,
deps: {
logger: coreServices.logger,
},
factory({ logger }) {
return DefaultSearchIndexService.fromConfig({
logger: loggerToWinstonLogger(logger),
});
},
}),
});
/**
* @alpha
* Extension point for register a search engine.
*/
export const searchEngineRegistryExtensionPoint =
createExtensionPoint<SearchEngineRegistryExtensionPoint>({
id: 'search.engine.registry',
});
/**
* @alpha
* Extension point for registering collators and decorators
*/
export const searchIndexRegistryExtensionPoint =
createExtensionPoint<SearchIndexRegistryExtensionPoint>({
id: 'search.index.registry',
});
export type IndexBuilderServiceBuildOptions = {
searchEngine: SearchEngine;
collators: RegisterCollatorParameters[];
decorators: RegisterDecoratorParameters[];
};
/**
* @alpha
*/
export type {
RegisterCollatorParameters,
RegisterDecoratorParameters,
} from './types';
@@ -26,12 +26,6 @@ import lunr from 'lunr';
import { v4 as uuid } from 'uuid';
import { Logger } from 'winston';
import { LunrSearchEngineIndexer } from './LunrSearchEngineIndexer';
import {
coreServices,
createBackendModule,
} from '@backstage/backend-plugin-api';
import { searchEngineRegistryExtensionPoint } from '../alpha';
import { loggerToWinstonLogger } from '@backstage/backend-common';
/**
* Type of translated query for the Lunr Search Engine.
@@ -340,21 +334,3 @@ export function parseHighlightFields({
}),
);
}
export const lunrSearchEngineModule = createBackendModule({
moduleId: 'lunrSearchEngineModule',
pluginId: 'search',
register(env) {
env.registerInit({
deps: {
searchEngineRegistry: searchEngineRegistryExtensionPoint,
logger: coreServices.logger,
},
async init({ searchEngineRegistry, logger }) {
searchEngineRegistry.setSearchEngine(
new LunrSearchEngine({ logger: loggerToWinstonLogger(logger) }),
);
},
});
},
});
@@ -14,7 +14,7 @@
* limitations under the License.
*/
export { LunrSearchEngine, lunrSearchEngineModule } from './LunrSearchEngine';
export { LunrSearchEngine } from './LunrSearchEngine';
export type {
ConcreteLunrQuery,
LunrQueryTranslator,
+1 -1
View File
@@ -23,7 +23,7 @@
export { IndexBuilder } from './IndexBuilder';
export { Scheduler } from './Scheduler';
export * from './collators';
export { LunrSearchEngine, lunrSearchEngineModule } from './engines';
export { LunrSearchEngine } from './engines';
export type {
ConcreteLunrQuery,
LunrQueryTranslator,