fix types in frontend api client
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
@@ -15,3 +15,5 @@
|
||||
*/
|
||||
|
||||
export * from './service/router';
|
||||
|
||||
export * from './service/jsoncoverage-types';
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
"@backstage/core-api": "^0.2.12",
|
||||
"@backstage/dev-utils": "^0.1.11",
|
||||
"@backstage/plugin-catalog-react": "^0.1.0",
|
||||
"@backstage/plugin-code-coverage-backend": "^0.1.0",
|
||||
"@backstage/theme": "^0.2.3",
|
||||
"@material-ui/core": "^4.11.0",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
import { createApiRef } from '@backstage/core';
|
||||
import { Config } from '@backstage/config';
|
||||
import { EntityName, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import {
|
||||
JsonCodeCoverage,
|
||||
JsonCoverageHistory,
|
||||
} from '@backstage/plugin-code-coverage-backend';
|
||||
|
||||
export class FetchError extends Error {
|
||||
get name(): string {
|
||||
@@ -34,15 +38,15 @@ export class FetchError extends Error {
|
||||
|
||||
export type CodeCoverageApi = {
|
||||
url: string;
|
||||
getCoverageForEntity: (entity: EntityName) => Promise<any>;
|
||||
getCoverageForEntity: (entity: EntityName) => Promise<JsonCodeCoverage>;
|
||||
getFileContentFromEntity: (
|
||||
entity: EntityName,
|
||||
filePath: string,
|
||||
) => Promise<any>;
|
||||
) => Promise<string>;
|
||||
getCoverageHistoryForEntity: (
|
||||
entity: EntityName,
|
||||
limit?: number,
|
||||
) => Promise<any>;
|
||||
) => Promise<JsonCoverageHistory>;
|
||||
};
|
||||
|
||||
export const codeCoverageApiRef = createApiRef<CodeCoverageApi>({
|
||||
@@ -57,7 +61,7 @@ export class CodeCoverageRestApi implements CodeCoverageApi {
|
||||
|
||||
constructor(public url: string) {}
|
||||
|
||||
private async fetch<T = any | string>(
|
||||
private async fetch<T = unknown | string | JsonCoverageHistory>(
|
||||
input: string,
|
||||
init?: RequestInit,
|
||||
): Promise<T | string> {
|
||||
@@ -69,18 +73,21 @@ export class CodeCoverageRestApi implements CodeCoverageApi {
|
||||
return await resp.text();
|
||||
}
|
||||
|
||||
async getCoverageForEntity(entityName: EntityName): Promise<any> {
|
||||
async getCoverageForEntity(
|
||||
entityName: EntityName,
|
||||
): Promise<JsonCodeCoverage> {
|
||||
const entity = stringifyEntityRef(entityName);
|
||||
return await this.fetch<any>(`/api/code-coverage/report?entity=${entity}`);
|
||||
return (await this.fetch<JsonCodeCoverage>(
|
||||
`/api/code-coverage/report?entity=${entity}`,
|
||||
)) as JsonCodeCoverage;
|
||||
}
|
||||
|
||||
async getFileContentFromEntity(
|
||||
entityName: EntityName,
|
||||
filePath: string,
|
||||
): Promise<any> {
|
||||
): Promise<string> {
|
||||
const entity = stringifyEntityRef(entityName);
|
||||
return await this.fetch<any>(
|
||||
/// file-content?entity=component:default/mycomponent&path=src/some-file.go
|
||||
return await this.fetch<string>(
|
||||
`/api/code-coverage/file-content?entity=${entity}&path=${filePath}`,
|
||||
);
|
||||
}
|
||||
@@ -88,13 +95,13 @@ export class CodeCoverageRestApi implements CodeCoverageApi {
|
||||
async getCoverageHistoryForEntity(
|
||||
entityName: EntityName,
|
||||
limit?: number,
|
||||
): Promise<any> {
|
||||
): Promise<JsonCoverageHistory> {
|
||||
const entity = stringifyEntityRef(entityName);
|
||||
const hasValidLimit = limit && limit > 0;
|
||||
return await this.fetch<any>(
|
||||
return (await this.fetch<JsonCoverageHistory>(
|
||||
`/api/code-coverage/history?entity=${entity}${
|
||||
hasValidLimit ? `&limit=${limit}` : ''
|
||||
}`,
|
||||
);
|
||||
)) as JsonCoverageHistory;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,9 +93,17 @@ export const FileContent = ({ filename, coverage }: Props) => {
|
||||
|
||||
if (loading) {
|
||||
return <Progress />;
|
||||
} else if (error) {
|
||||
}
|
||||
if (error) {
|
||||
return <Alert severity="error">{error.message}</Alert>;
|
||||
}
|
||||
if (!value) {
|
||||
return (
|
||||
<Alert severity="error">
|
||||
Unable to retrieve file content for {filename}
|
||||
</Alert>
|
||||
);
|
||||
}
|
||||
|
||||
const [language] = filename.split('.').slice(-1);
|
||||
const highlightedLines = highlightLines(language, value.split('\n'));
|
||||
|
||||
Reference in New Issue
Block a user