Merge pull request #5242 from backstage/mob/api-extractor

Add api-extractor to manage the public API of core packages
This commit is contained in:
Patrik Oldsberg
2021-04-27 23:18:40 +02:00
committed by GitHub
21 changed files with 2559 additions and 9 deletions
+3
View File
@@ -85,6 +85,9 @@ jobs:
- name: type checking and declarations
run: yarn tsc:full
- name: check api reports
run: yarn build:api-reports:only --ci
- name: build changed packages
if: ${{ steps.yarn-lock.outcome == 'success' }}
run: yarn lerna -- run build --since origin/master --include-dependencies
+1
View File
@@ -4,6 +4,7 @@ microsite
coverage
*.hbs
templates
api-report.md
plugins/scaffolder-backend/sample-templates
.vscode
dist-types
+9
View File
@@ -9,6 +9,9 @@
"start": "yarn workspace example-app start",
"start-backend": "yarn workspace example-backend start",
"build": "lerna run build",
"build:api-reports": "tsc && yarn build:api-reports:only",
"build:api-reports:only": "ts-node -T -P scripts/tsconfig.json scripts/api-extractor.ts",
"build:api-docs": "yarn build:api-reports --docs",
"tsc": "tsc",
"tsc:full": "tsc --skipLibCheck false --incremental false",
"clean": "backstage-cli clean && lerna run clean",
@@ -39,10 +42,16 @@
"**/@roadiehq/**/@backstage/core": "*",
"**/@roadiehq/**/@backstage/plugin-catalog": "*",
"**/@roadiehq/**/@backstage/catalog-model": "*",
"**/@microsoft/api-extractor/typescript": "^4.0.3",
"graphql-language-service-interface": "2.8.2",
"graphql-language-service-parser": "1.9.0"
},
"version": "1.0.0",
"dependencies": {
"@microsoft/api-extractor": "7.13.2-pr1916.0",
"@microsoft/api-documenter": "^7.12.16",
"@microsoft/api-extractor-model": "^7.12.5"
},
"devDependencies": {
"@changesets/cli": "^2.14.0",
"@octokit/openapi-types": "^2.2.0",
+341
View File
@@ -0,0 +1,341 @@
## API Report File for "@backstage/backend-common"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AzureIntegration } from '@backstage/integration';
import { BitbucketIntegration } from '@backstage/integration';
import { Config } from '@backstage/config';
import { ConfigReader } from '@backstage/config';
import cors from 'cors';
import Docker from 'dockerode';
import { ErrorRequestHandler } from 'express';
import express from 'express';
import { Format } from 'logform';
import { GithubCredentialsProvider } from '@backstage/integration';
import { GitHubIntegration } from '@backstage/integration';
import { GitLabIntegration } from '@backstage/integration';
import * as http from 'http';
import { Knex } from 'knex';
import { Logger } from 'winston';
import { MergeResult } from 'isomorphic-git';
import { PushResult } from 'isomorphic-git';
import { Readable } from 'stream';
import { ReadCommitResult } from 'isomorphic-git';
import { RequestHandler } from 'express';
import { Router } from 'express';
import { Server } from 'http';
import * as winston from 'winston';
import { Writable } from 'stream';
// @public (undocumented)
export class AzureUrlReader implements UrlReader {
constructor(integration: AzureIntegration, deps: {
treeResponseFactory: ReadTreeResponseFactory;
});
// (undocumented)
static factory: ReaderFactory;
// (undocumented)
read(url: string): Promise<Buffer>;
// (undocumented)
readTree(url: string, options?: ReadTreeOptions): Promise<ReadTreeResponse>;
// (undocumented)
search(url: string, options?: SearchOptions): Promise<SearchResponse>;
// (undocumented)
toString(): string;
}
// @public
export class BitbucketUrlReader implements UrlReader {
constructor(integration: BitbucketIntegration, deps: {
treeResponseFactory: ReadTreeResponseFactory;
});
// (undocumented)
static factory: ReaderFactory;
// (undocumented)
read(url: string): Promise<Buffer>;
// (undocumented)
readTree(url: string, options?: ReadTreeOptions): Promise<ReadTreeResponse>;
// (undocumented)
search(url: string, options?: SearchOptions): Promise<SearchResponse>;
// (undocumented)
toString(): string;
}
// @public (undocumented)
export const coloredFormat: Format;
// @public @deprecated
export const createDatabase: typeof createDatabaseClient;
// @public
export function createDatabaseClient(dbConfig: Config, overrides?: Partial<Knex.Config>): Knex<any, unknown[]>;
// @public (undocumented)
export function createRootLogger(options?: winston.LoggerOptions, env?: NodeJS.ProcessEnv): winston.Logger;
// @public
export function createServiceBuilder(_module: NodeModule): ServiceBuilderImpl;
// @public (undocumented)
export function createStatusCheckRouter(options: StatusCheckRouterOptions): Promise<express.Router>;
// @public
export function ensureDatabaseExists(dbConfig: Config, ...databases: Array<string>): Promise<void>;
// @public
export function errorHandler(options?: ErrorHandlerOptions): ErrorRequestHandler;
// @public (undocumented)
export type ErrorHandlerOptions = {
showStackTraces?: boolean;
logger?: Logger;
logClientErrors?: boolean;
};
// @public (undocumented)
export function getRootLogger(): winston.Logger;
// @public
export function getVoidLogger(): winston.Logger;
// @public (undocumented)
export class Git {
// (undocumented)
add({ dir, filepath, }: {
dir: string;
filepath: string;
}): Promise<void>;
// (undocumented)
addRemote({ dir, url, remote, }: {
dir: string;
remote: string;
url: string;
}): Promise<void>;
// (undocumented)
clone({ url, dir, ref, }: {
url: string;
dir: string;
ref?: string;
}): Promise<void>;
// (undocumented)
commit({ dir, message, author, committer, }: {
dir: string;
message: string;
author: {
name: string;
email: string;
};
committer: {
name: string;
email: string;
};
}): Promise<string>;
// (undocumented)
currentBranch({ dir, fullName, }: {
dir: string;
fullName?: boolean;
}): Promise<string | undefined>;
// (undocumented)
fetch({ dir, remote, }: {
dir: string;
remote?: string;
}): Promise<void>;
// (undocumented)
static fromAuth: ({ username, password, logger, }: {
username?: string | undefined;
password?: string | undefined;
logger?: Logger | undefined;
}) => Git;
// (undocumented)
init({ dir }: {
dir: string;
}): Promise<void>;
// (undocumented)
merge({ dir, theirs, ours, author, committer, }: {
dir: string;
theirs: string;
ours?: string;
author: {
name: string;
email: string;
};
committer: {
name: string;
email: string;
};
}): Promise<MergeResult>;
// (undocumented)
push({ dir, remote }: {
dir: string;
remote: string;
}): Promise<PushResult>;
// (undocumented)
readCommit({ dir, sha, }: {
dir: string;
sha: string;
}): Promise<ReadCommitResult>;
// (undocumented)
resolveRef({ dir, ref, }: {
dir: string;
ref: string;
}): Promise<string>;
}
// @public
export class GithubUrlReader implements UrlReader {
constructor(integration: GitHubIntegration, deps: {
treeResponseFactory: ReadTreeResponseFactory;
credentialsProvider: GithubCredentialsProvider;
});
// (undocumented)
static factory: ReaderFactory;
// (undocumented)
read(url: string): Promise<Buffer>;
// (undocumented)
readTree(url: string, options?: ReadTreeOptions): Promise<ReadTreeResponse>;
// (undocumented)
search(url: string, options?: SearchOptions): Promise<SearchResponse>;
// (undocumented)
toString(): string;
}
// @public (undocumented)
export class GitlabUrlReader implements UrlReader {
constructor(integration: GitLabIntegration, deps: {
treeResponseFactory: ReadTreeResponseFactory;
});
// (undocumented)
static factory: ReaderFactory;
// (undocumented)
read(url: string): Promise<Buffer>;
// (undocumented)
readTree(url: string, options?: ReadTreeOptions): Promise<ReadTreeResponse>;
// (undocumented)
search(url: string, options?: SearchOptions): Promise<SearchResponse>;
// (undocumented)
toString(): string;
}
// @public
export function loadBackendConfig(options: Options): Promise<Config>;
// @public
export function notFoundHandler(): RequestHandler;
// @public
export interface PluginDatabaseManager {
getClient(): Promise<Knex>;
}
// @public
export type PluginEndpointDiscovery = {
getBaseUrl(pluginId: string): Promise<string>;
getExternalBaseUrl(pluginId: string): Promise<string>;
};
// @public (undocumented)
export type ReadTreeResponse = {
files(): Promise<ReadTreeResponseFile[]>;
archive(): Promise<NodeJS.ReadableStream>;
dir(options?: ReadTreeResponseDirOptions): Promise<string>;
etag: string;
};
// @public
export type ReadTreeResponseFile = {
path: string;
content(): Promise<Buffer>;
};
// @public
export function requestLoggingHandler(logger?: Logger): RequestHandler;
// @public
export function resolvePackagePath(name: string, ...paths: string[]): string;
// @public (undocumented)
export const runDockerContainer: ({ imageName, args, logStream, dockerClient, mountDirs, workingDir, envVars, createOptions, }: RunDockerContainerOptions) => Promise<{
error: any;
statusCode: any;
}>;
// @public
export type SearchResponse = {
files: SearchResponseFile[];
etag: string;
};
// @public
export type SearchResponseFile = {
url: string;
content(): Promise<Buffer>;
};
// @public (undocumented)
export type ServiceBuilder = {
loadConfig(config: ConfigReader): ServiceBuilder;
setPort(port: number): ServiceBuilder;
setHost(host: string): ServiceBuilder;
setLogger(logger: Logger): ServiceBuilder;
enableCors(options: cors.CorsOptions): ServiceBuilder;
setHttpsSettings(settings: HttpsSettings): ServiceBuilder;
addRouter(root: string, router: Router | RequestHandler): ServiceBuilder;
start(): Promise<Server>;
};
// @public (undocumented)
export function setRootLogger(newLogger: winston.Logger): void;
// @public
export class SingleConnectionDatabaseManager {
forPlugin(pluginId: string): PluginDatabaseManager;
static fromConfig(config: Config): SingleConnectionDatabaseManager;
}
// @public
export class SingleHostDiscovery implements PluginEndpointDiscovery {
static fromConfig(config: Config, options?: {
basePath?: string;
}): SingleHostDiscovery;
// (undocumented)
getBaseUrl(pluginId: string): Promise<string>;
// (undocumented)
getExternalBaseUrl(pluginId: string): Promise<string>;
}
// @public (undocumented)
export type StatusCheck = () => Promise<any>;
// @public
export function statusCheckHandler(options?: StatusCheckHandlerOptions): Promise<RequestHandler>;
// @public (undocumented)
export interface StatusCheckHandlerOptions {
statusCheck?: StatusCheck;
}
// @public
export type UrlReader = {
read(url: string): Promise<Buffer>;
readTree(url: string, options?: ReadTreeOptions): Promise<ReadTreeResponse>;
search(url: string, options?: SearchOptions): Promise<SearchResponse>;
};
// @public
export class UrlReaders {
static create({ logger, config, factories }: CreateOptions): UrlReader;
static default({ logger, config, factories }: CreateOptions): UrlReader;
}
// @public
export function useHotCleanup(_module: NodeModule, cancelEffect: () => void): void;
// @public
export function useHotMemoize<T>(_module: NodeModule, valueFactory: () => T): T;
// (No @packageDocumentation comment for this package)
```
+82
View File
@@ -0,0 +1,82 @@
## API Report File for "@backstage/catalog-client"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { Entity } from '@backstage/catalog-model';
import { EntityName } from '@backstage/catalog-model';
import { Location as Location_2 } from '@backstage/catalog-model';
// @public (undocumented)
export type AddLocationRequest = {
type?: string;
target: string;
dryRun?: boolean;
presence?: 'optional' | 'required';
};
// @public (undocumented)
export type AddLocationResponse = {
location: Location_2;
entities: Entity[];
};
// @public (undocumented)
export interface CatalogApi {
// (undocumented)
addLocation(location: AddLocationRequest, options?: CatalogRequestOptions): Promise<AddLocationResponse>;
// (undocumented)
getEntities(request?: CatalogEntitiesRequest, options?: CatalogRequestOptions): Promise<CatalogListResponse<Entity>>;
// (undocumented)
getEntityByName(name: EntityName, options?: CatalogRequestOptions): Promise<Entity | undefined>;
// (undocumented)
getLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise<Location_2 | undefined>;
// (undocumented)
getLocationById(id: string, options?: CatalogRequestOptions): Promise<Location_2 | undefined>;
// (undocumented)
getOriginLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise<Location_2 | undefined>;
// (undocumented)
removeEntityByUid(uid: string, options?: CatalogRequestOptions): Promise<void>;
// (undocumented)
removeLocationById(id: string, options?: CatalogRequestOptions): Promise<void>;
}
// @public (undocumented)
export class CatalogClient implements CatalogApi {
constructor(options: {
discoveryApi: DiscoveryApi;
});
// (undocumented)
addLocation({ type, target, dryRun, presence }: AddLocationRequest, options?: CatalogRequestOptions): Promise<AddLocationResponse>;
// (undocumented)
getEntities(request?: CatalogEntitiesRequest, options?: CatalogRequestOptions): Promise<CatalogListResponse<Entity>>;
// (undocumented)
getEntityByName(compoundName: EntityName, options?: CatalogRequestOptions): Promise<Entity | undefined>;
// (undocumented)
getLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise<Location_2 | undefined>;
// (undocumented)
getLocationById(id: string, options?: CatalogRequestOptions): Promise<Location_2 | undefined>;
// (undocumented)
getOriginLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise<Location_2 | undefined>;
// (undocumented)
removeEntityByUid(uid: string, options?: CatalogRequestOptions): Promise<void>;
// (undocumented)
removeLocationById(id: string, options?: CatalogRequestOptions): Promise<void>;
}
// @public (undocumented)
export type CatalogEntitiesRequest = {
filter?: Record<string, string | string[]> | undefined;
fields?: string[] | undefined;
};
// @public (undocumented)
export type CatalogListResponse<T> = {
items: T[];
};
// (No @packageDocumentation comment for this package)
```
+571
View File
@@ -0,0 +1,571 @@
## API Report File for "@backstage/catalog-model"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { JsonObject } from '@backstage/config';
import { JSONSchema7 } from 'json-schema';
import { JsonValue } from '@backstage/config';
import * as yup from 'yup';
// @public (undocumented)
export const analyzeLocationSchema: yup.ObjectSchema<{
location: LocationSpec;
}, object>;
// @public (undocumented)
interface ApiEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION[number];
// (undocumented)
kind: typeof KIND;
// (undocumented)
spec: {
type: string;
lifecycle: string;
owner: string;
definition: string;
system?: string;
};
}
export { ApiEntityV1alpha1 as ApiEntity }
export { ApiEntityV1alpha1 }
// @public (undocumented)
export const apiEntityV1alpha1Validator: KindValidator;
// @public
export class CommonValidatorFunctions {
static isJsonSafe(value: unknown): boolean;
static isValidDnsLabel(value: unknown): boolean;
static isValidDnsSubdomain(value: unknown): boolean;
static isValidPrefixAndOrSuffix(value: unknown, separator: string, isValidPrefix: (value: string) => boolean, isValidSuffix: (value: string) => boolean): boolean;
static isValidString(value: unknown): boolean;
static isValidUrl(value: unknown): boolean;
}
// @public
export function compareEntityToRef(entity: Entity, ref: EntityRef | EntityName, context?: EntityRefContext): boolean;
// @public (undocumented)
interface ComponentEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_2[number];
// (undocumented)
kind: typeof KIND_2;
// (undocumented)
spec: {
type: string;
lifecycle: string;
owner: string;
subcomponentOf?: string;
providesApis?: string[];
consumesApis?: string[];
dependsOn?: string[];
system?: string;
};
}
export { ComponentEntityV1alpha1 as ComponentEntity }
export { ComponentEntityV1alpha1 }
// @public (undocumented)
export const componentEntityV1alpha1Validator: KindValidator;
// @public
export class DefaultNamespaceEntityPolicy implements EntityPolicy {
constructor(namespace?: string);
// (undocumented)
enforce(entity: Entity): Promise<Entity>;
}
// @public (undocumented)
interface DomainEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_3[number];
// (undocumented)
kind: typeof KIND_3;
// (undocumented)
spec: {
owner: string;
};
}
export { DomainEntityV1alpha1 as DomainEntity }
export { DomainEntityV1alpha1 }
// @public (undocumented)
export const domainEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
export const EDIT_URL_ANNOTATION = "backstage.io/edit-url";
// @public
export type Entity = {
apiVersion: string;
kind: string;
metadata: EntityMeta;
spec?: JsonObject;
relations?: EntityRelation[];
};
// @public
export const ENTITY_DEFAULT_NAMESPACE = "default";
// @public
export const ENTITY_META_GENERATED_FIELDS: readonly ["uid", "etag", "generation"];
// @public
export function entityHasChanges(previous: Entity, next: Entity): boolean;
// @public
export type EntityLink = {
url: string;
title?: string;
icon?: string;
};
// @public
export type EntityMeta = JsonObject & {
uid?: string;
etag?: string;
generation?: number;
name: string;
namespace?: string;
description?: string;
labels?: Record<string, string>;
annotations?: Record<string, string>;
tags?: string[];
links?: EntityLink[];
};
// @public
export type EntityName = {
kind: string;
namespace: string;
name: string;
};
// @public (undocumented)
export const EntityPolicies: {
allOf(policies: EntityPolicy[]): AllEntityPolicies;
oneOf(policies: EntityPolicy[]): AnyEntityPolicy;
};
// @public
export type EntityPolicy = {
enforce(entity: Entity): Promise<Entity | undefined>;
};
// @public
export type EntityRef = string | {
kind?: string;
namespace?: string;
name: string;
};
// @public
export type EntityRelation = {
type: string;
target: EntityName;
};
// @public
export type EntityRelationSpec = {
source: EntityName;
type: string;
target: EntityName;
};
// @public
export class FieldFormatEntityPolicy implements EntityPolicy {
constructor(validators?: Validators);
// (undocumented)
enforce(entity: Entity): Promise<Entity>;
}
// @public
export function generateEntityEtag(): string;
// @public
export function generateEntityUid(): string;
// @public
export function generateUpdatedEntity(previous: Entity, next: Entity): Entity;
// @public
export function getEntityName(entity: Entity): EntityName;
// @public
export function getEntitySourceLocation(entity: Entity): {
type: string;
target: string;
};
// @public (undocumented)
interface GroupEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_4[number];
// (undocumented)
kind: typeof KIND_4;
// (undocumented)
spec: {
type: string;
profile?: {
displayName?: string;
email?: string;
picture?: string;
};
parent?: string;
children: string[];
members?: string[];
};
}
export { GroupEntityV1alpha1 as GroupEntity }
export { GroupEntityV1alpha1 }
// @public (undocumented)
export const groupEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
export type JSONSchema = JSONSchema7 & {
[key in string]?: JsonValue;
};
// @public
export type KindValidator = {
check(entity: Entity): Promise<boolean>;
};
// @public
export class KubernetesValidatorFunctions {
// (undocumented)
static isValidAnnotationKey(value: unknown): boolean;
// (undocumented)
static isValidAnnotationValue(value: unknown): boolean;
// (undocumented)
static isValidApiVersion(value: unknown): boolean;
// (undocumented)
static isValidKind(value: unknown): boolean;
// (undocumented)
static isValidLabelKey(value: unknown): boolean;
// (undocumented)
static isValidLabelValue(value: unknown): boolean;
// (undocumented)
static isValidNamespace(value: unknown): boolean;
// (undocumented)
static isValidObjectName(value: unknown): boolean;
}
// @public (undocumented)
type Location_2 = {
id: string;
} & LocationSpec;
export { Location_2 as Location }
// @public (undocumented)
export const LOCATION_ANNOTATION = "backstage.io/managed-by-location";
// @public (undocumented)
interface LocationEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_5[number];
// (undocumented)
kind: typeof KIND_5;
// (undocumented)
spec: {
type?: string;
target?: string;
targets?: string[];
};
}
export { LocationEntityV1alpha1 as LocationEntity }
export { LocationEntityV1alpha1 }
// @public (undocumented)
export const locationEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
export const locationSchema: yup.ObjectSchema<Location_2, object>;
// @public (undocumented)
export type LocationSpec = {
type: string;
target: string;
presence?: 'optional' | 'required';
};
// @public (undocumented)
export const locationSpecSchema: yup.ObjectSchema<LocationSpec, object>;
// @public (undocumented)
export function makeValidator(overrides?: Partial<Validators>): Validators;
// @public
export class NoForeignRootFieldsEntityPolicy implements EntityPolicy {
constructor(knownFields?: string[]);
// (undocumented)
enforce(entity: Entity): Promise<Entity>;
}
// @public (undocumented)
export const ORIGIN_LOCATION_ANNOTATION = "backstage.io/managed-by-origin-location";
// @public
export function parseEntityName(ref: EntityRef, context?: EntityRefContext): EntityName;
// @public
export function parseEntityRef(ref: EntityRef, context?: {
defaultKind: string;
defaultNamespace: string;
}): {
kind: string;
namespace: string;
name: string;
};
// @public (undocumented)
export function parseEntityRef(ref: EntityRef, context?: {
defaultKind: string;
}): {
kind: string;
namespace?: string;
name: string;
};
// @public (undocumented)
export function parseEntityRef(ref: EntityRef, context?: {
defaultNamespace: string;
}): {
kind?: string;
namespace: string;
name: string;
};
// @public
export function parseLocationReference(ref: string): {
type: string;
target: string;
};
// @public (undocumented)
export const RELATION_API_CONSUMED_BY = "apiConsumedBy";
// @public (undocumented)
export const RELATION_API_PROVIDED_BY = "apiProvidedBy";
// @public (undocumented)
export const RELATION_CHILD_OF = "childOf";
// @public
export const RELATION_CONSUMES_API = "consumesApi";
// @public (undocumented)
export const RELATION_DEPENDENCY_OF = "dependencyOf";
// @public
export const RELATION_DEPENDS_ON = "dependsOn";
// @public (undocumented)
export const RELATION_HAS_MEMBER = "hasMember";
// @public (undocumented)
export const RELATION_HAS_PART = "hasPart";
// @public
export const RELATION_MEMBER_OF = "memberOf";
// @public
export const RELATION_OWNED_BY = "ownedBy";
// @public (undocumented)
export const RELATION_OWNER_OF = "ownerOf";
// @public
export const RELATION_PARENT_OF = "parentOf";
// @public
export const RELATION_PART_OF = "partOf";
// @public (undocumented)
export const RELATION_PROVIDES_API = "providesApi";
// @public (undocumented)
interface ResourceEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_6[number];
// (undocumented)
kind: typeof KIND_6;
// (undocumented)
spec: {
type: string;
owner: string;
dependsOn?: string[];
system?: string;
};
}
export { ResourceEntityV1alpha1 as ResourceEntity }
export { ResourceEntityV1alpha1 }
// @public (undocumented)
export const resourceEntityV1alpha1Validator: KindValidator;
// @public @deprecated (undocumented)
export function schemaValidator(kind: string, apiVersion: readonly string[], schema: yup.Schema<any>): KindValidator;
// @public
export class SchemaValidEntityPolicy implements EntityPolicy {
// (undocumented)
enforce(entity: Entity): Promise<Entity>;
}
// @public @deprecated
export function serializeEntityRef(ref: Entity | {
kind?: string;
namespace?: string;
name: string;
}): EntityRef;
// @public (undocumented)
export const SOURCE_LOCATION_ANNOTATION = "backstage.io/source-location";
// @public
export function stringifyEntityRef(ref: Entity | {
kind: string;
namespace?: string;
name: string;
}): string;
// @public
export function stringifyLocationReference(ref: {
type: string;
target: string;
}): string;
// @public (undocumented)
interface SystemEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_7[number];
// (undocumented)
kind: typeof KIND_7;
// (undocumented)
spec: {
owner: string;
domain?: string;
};
}
export { SystemEntityV1alpha1 as SystemEntity }
export { SystemEntityV1alpha1 }
// @public (undocumented)
export const systemEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
interface TemplateEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_8[number];
// (undocumented)
kind: typeof KIND_8;
// (undocumented)
spec: {
type: string;
templater: string;
path?: string;
schema: JSONSchema;
};
}
export { TemplateEntityV1alpha1 as TemplateEntity }
export { TemplateEntityV1alpha1 }
// @public (undocumented)
export const templateEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
export interface TemplateEntityV1beta2 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_9[number];
// (undocumented)
kind: typeof KIND_9;
// (undocumented)
metadata: EntityMeta & {
title?: string;
};
// (undocumented)
spec: {
type: string;
parameters?: JsonObject | JsonObject[];
steps: Array<{
id?: string;
name?: string;
action: string;
parameters?: JsonObject;
}>;
output?: {
[name: string]: string;
};
};
}
// @public (undocumented)
export const templateEntityV1beta2Validator: KindValidator;
// @public (undocumented)
interface UserEntityV1alpha1 extends Entity {
// (undocumented)
apiVersion: typeof API_VERSION_10[number];
// (undocumented)
kind: typeof KIND_10;
// (undocumented)
spec: {
profile?: {
displayName?: string;
email?: string;
picture?: string;
};
memberOf: string[];
};
}
export { UserEntityV1alpha1 as UserEntity }
export { UserEntityV1alpha1 }
// @public (undocumented)
export const userEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
export type Validators = {
isValidApiVersion(value: unknown): boolean;
isValidKind(value: unknown): boolean;
isValidEntityName(value: unknown): boolean;
isValidNamespace(value: unknown): boolean;
isValidLabelKey(value: unknown): boolean;
isValidLabelValue(value: unknown): boolean;
isValidAnnotationKey(value: unknown): boolean;
isValidAnnotationValue(value: unknown): boolean;
isValidTag(value: unknown): boolean;
};
// @public
export const VIEW_URL_ANNOTATION = "backstage.io/view-url";
// (No @packageDocumentation comment for this package)
```
+25
View File
@@ -0,0 +1,25 @@
## API Report File for "@backstage/cli-common"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
// @public
export function findPaths(searchDir: string): Paths;
// @public (undocumented)
export type Paths = {
ownDir: string;
ownRoot: string;
targetDir: string;
targetRoot: string;
resolveOwn: ResolveFunc;
resolveOwnRoot: ResolveFunc;
resolveTarget: ResolveFunc;
resolveTargetRoot: ResolveFunc;
};
// (No @packageDocumentation comment for this package)
```
+45
View File
@@ -0,0 +1,45 @@
## API Report File for "@backstage/config-loader"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AppConfig } from '@backstage/config';
import { JsonObject } from '@backstage/config';
import { JSONSchema7 } from 'json-schema';
// @public
export type ConfigSchema = {
process(appConfigs: AppConfig[], options?: ConfigProcessingOptions): AppConfig[];
serialize(): JsonObject;
};
// @public
export type ConfigVisibility = typeof CONFIG_VISIBILITIES[number];
// @public (undocumented)
export function loadConfig(options: LoadConfigOptions): Promise<AppConfig[]>;
// @public (undocumented)
export type LoadConfigOptions = {
configRoot: string;
configPaths: string[];
env?: string;
experimentalEnvFunc?: EnvFunc;
};
// @public
export function loadConfigSchema(options: Options): Promise<ConfigSchema>;
// @public
export function mergeConfigSchemas(schemas: JSONSchema7[]): JSONSchema7;
// @public
export function readEnvConfig(env: {
[name: string]: string | undefined;
}): AppConfig[];
// (No @packageDocumentation comment for this package)
```
+90
View File
@@ -0,0 +1,90 @@
## API Report File for "@backstage/config"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
// @public (undocumented)
export type AppConfig = {
context: string;
data: JsonObject;
};
// @public (undocumented)
export type Config = {
has(key: string): boolean;
keys(): string[];
get<T = JsonValue>(key?: string): T;
getOptional<T = JsonValue>(key?: string): T | undefined;
getConfig(key: string): Config;
getOptionalConfig(key: string): Config | undefined;
getConfigArray(key: string): Config[];
getOptionalConfigArray(key: string): Config[] | undefined;
getNumber(key: string): number;
getOptionalNumber(key: string): number | undefined;
getBoolean(key: string): boolean;
getOptionalBoolean(key: string): boolean | undefined;
getString(key: string): string;
getOptionalString(key: string): string | undefined;
getStringArray(key: string): string[];
getOptionalStringArray(key: string): string[] | undefined;
};
// @public (undocumented)
export class ConfigReader implements Config {
constructor(data: JsonObject | undefined, context?: string, fallback?: ConfigReader | undefined, prefix?: string);
// (undocumented)
static fromConfigs(configs: AppConfig[]): ConfigReader;
// (undocumented)
get<T = JsonValue>(key?: string): T;
// (undocumented)
getBoolean(key: string): boolean;
// (undocumented)
getConfig(key: string): ConfigReader;
// (undocumented)
getConfigArray(key: string): ConfigReader[];
// (undocumented)
getNumber(key: string): number;
// (undocumented)
getOptional<T = JsonValue>(key?: string): T | undefined;
// (undocumented)
getOptionalBoolean(key: string): boolean | undefined;
// (undocumented)
getOptionalConfig(key: string): ConfigReader | undefined;
// (undocumented)
getOptionalConfigArray(key: string): ConfigReader[] | undefined;
// (undocumented)
getOptionalNumber(key: string): number | undefined;
// (undocumented)
getOptionalString(key: string): string | undefined;
// (undocumented)
getOptionalStringArray(key: string): string[] | undefined;
// (undocumented)
getString(key: string): string;
// (undocumented)
getStringArray(key: string): string[];
// (undocumented)
has(key: string): boolean;
// (undocumented)
keys(): string[];
}
// @public (undocumented)
export interface JsonArray extends Array<JsonValue> {
}
// @public (undocumented)
export type JsonObject = {
[key in string]?: JsonValue;
};
// @public (undocumented)
export type JsonPrimitive = number | string | boolean | null;
// @public (undocumented)
export type JsonValue = JsonObject | JsonArray | JsonPrimitive;
// (No @packageDocumentation comment for this package)
```
+26
View File
@@ -0,0 +1,26 @@
## API Report File for "@backstage/dev-utils"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { ApiFactory } from '@backstage/core';
import { ComponentType } from 'react';
import { createPlugin } from '@backstage/core';
import { Entity } from '@backstage/catalog-model';
import { GridProps } from '@material-ui/core';
import { IconComponent } from '@backstage/core';
import { ReactNode } from 'react';
// @public
export function createDevApp(): DevAppBuilder;
// @public (undocumented)
export const EntityGridItem: ({ entity, classes, ...rest }: Omit<GridProps<"div", {}>, "container" | "item"> & {
entity: Entity;
}) => JSX.Element;
// (No @packageDocumentation comment for this package)
```
+88
View File
@@ -0,0 +1,88 @@
## API Report File for "@backstage/errors"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { JsonObject } from '@backstage/config';
// @public
export class AuthenticationError extends CustomErrorBase {
}
// @public
export class ConflictError extends CustomErrorBase {
}
// @public (undocumented)
export class CustomErrorBase extends Error {
constructor(message?: string, cause?: Error);
// (undocumented)
readonly cause?: Error;
}
// @public
export function deserializeError<T extends Error = Error>(data: SerializedError): T;
// @public
export type ErrorResponse = {
error: SerializedError;
request?: {
method: string;
url: string;
};
response: {
statusCode: number;
};
};
// @public
export class InputError extends CustomErrorBase {
}
// @public
export class NotAllowedError extends CustomErrorBase {
}
// @public
export class NotFoundError extends CustomErrorBase {
}
// @public
export class NotModifiedError extends CustomErrorBase {
}
// @public
export function parseErrorResponse(response: Response): Promise<ErrorResponse>;
// @public
export class ResponseError extends Error {
constructor(props: {
message: string;
response: Response;
data: ErrorResponse;
cause: Error;
});
readonly cause: Error;
readonly data: ErrorResponse;
static fromResponse(response: Response): Promise<ResponseError>;
readonly response: Response;
}
// @public
export type SerializedError = JsonObject & {
name: string;
message: string;
stack?: string;
code?: string;
};
// @public
export function serializeError(error: Error, options?: {
includeStack?: boolean;
}): SerializedError;
// (No @packageDocumentation comment for this package)
```
+23
View File
@@ -0,0 +1,23 @@
## API Report File for "@backstage/integration-react"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { ApiRef } from '@backstage/core';
import { Config } from '@backstage/config';
import { ScmIntegrationRegistry } from '@backstage/integration';
// @public (undocumented)
export class ScmIntegrationsApi {
// (undocumented)
static fromConfig(config: Config): ScmIntegrationRegistry;
}
// @public (undocumented)
export const scmIntegrationsApiRef: ApiRef<ScmIntegrationRegistry>;
// (No @packageDocumentation comment for this package)
```
+279
View File
@@ -0,0 +1,279 @@
## API Report File for "@backstage/integration"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { Config } from '@backstage/config';
// @public (undocumented)
export class AzureIntegration implements ScmIntegration {
constructor(integrationConfig: AzureIntegrationConfig);
// (undocumented)
get config(): AzureIntegrationConfig;
// (undocumented)
static factory: ScmIntegrationsFactory<AzureIntegration>;
// (undocumented)
resolveEditUrl(url: string): string;
// (undocumented)
resolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
// (undocumented)
get title(): string;
// (undocumented)
get type(): string;
}
// @public
export type AzureIntegrationConfig = {
host: string;
token?: string;
};
// @public (undocumented)
export class BitbucketIntegration implements ScmIntegration {
constructor(integrationConfig: BitbucketIntegrationConfig);
// (undocumented)
get config(): BitbucketIntegrationConfig;
// (undocumented)
static factory: ScmIntegrationsFactory<BitbucketIntegration>;
// (undocumented)
resolveEditUrl(url: string): string;
// (undocumented)
resolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
// (undocumented)
get title(): string;
// (undocumented)
get type(): string;
}
// @public
export type BitbucketIntegrationConfig = {
host: string;
apiBaseUrl?: string;
token?: string;
username?: string;
appPassword?: string;
};
// @public
export function defaultScmResolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
// @public
export function getAzureCommitsUrl(url: string): string;
// @public
export function getAzureDownloadUrl(url: string): string;
// @public
export function getAzureFileFetchUrl(url: string): string;
// @public
export function getAzureRequestOptions(config: AzureIntegrationConfig, additionalHeaders?: Record<string, string>): RequestInit;
// @public
export function getBitbucketDefaultBranch(url: string, config: BitbucketIntegrationConfig): Promise<string>;
// @public
export function getBitbucketDownloadUrl(url: string, config: BitbucketIntegrationConfig): Promise<string>;
// @public
export function getBitbucketFileFetchUrl(url: string, config: BitbucketIntegrationConfig): string;
// @public
export function getBitbucketRequestOptions(config: BitbucketIntegrationConfig): RequestInit;
// @public
export function getGitHubFileFetchUrl(url: string, config: GitHubIntegrationConfig): string;
// @public
export function getGitHubRequestOptions(config: GitHubIntegrationConfig): RequestInit;
// @public
export function getGitLabFileFetchUrl(url: string, config: GitLabIntegrationConfig): Promise<string>;
// @public
export function getGitLabRequestOptions(config: GitLabIntegrationConfig): RequestInit;
// @public (undocumented)
export class GithubCredentialsProvider {
// (undocumented)
static create(config: GitHubIntegrationConfig): GithubCredentialsProvider;
getCredentials(opts: {
url: string;
}): Promise<GithubCredentials>;
}
// @public (undocumented)
export class GitHubIntegration implements ScmIntegration {
constructor(integrationConfig: GitHubIntegrationConfig);
// (undocumented)
get config(): GitHubIntegrationConfig;
// (undocumented)
static factory: ScmIntegrationsFactory<GitHubIntegration>;
// (undocumented)
resolveEditUrl(url: string): string;
// (undocumented)
resolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
// (undocumented)
get title(): string;
// (undocumented)
get type(): string;
}
// @public
export type GitHubIntegrationConfig = {
host: string;
apiBaseUrl?: string;
rawBaseUrl?: string;
token?: string;
apps?: GithubAppConfig[];
};
// @public (undocumented)
export class GitLabIntegration implements ScmIntegration {
constructor(integrationConfig: GitLabIntegrationConfig);
// (undocumented)
get config(): GitLabIntegrationConfig;
// (undocumented)
static factory: ScmIntegrationsFactory<GitLabIntegration>;
// (undocumented)
resolveEditUrl(url: string): string;
// (undocumented)
resolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
// (undocumented)
get title(): string;
// (undocumented)
get type(): string;
}
// @public
export type GitLabIntegrationConfig = {
host: string;
apiBaseUrl: string;
token?: string;
baseUrl: string;
};
// @public
export type GoogleGcsIntegrationConfig = {
clientEmail?: string;
privateKey?: string;
};
// @public
export function readAzureIntegrationConfig(config: Config): AzureIntegrationConfig;
// @public
export function readAzureIntegrationConfigs(configs: Config[]): AzureIntegrationConfig[];
// @public
export function readBitbucketIntegrationConfig(config: Config): BitbucketIntegrationConfig;
// @public
export function readBitbucketIntegrationConfigs(configs: Config[]): BitbucketIntegrationConfig[];
// @public
export function readGitHubIntegrationConfig(config: Config): GitHubIntegrationConfig;
// @public
export function readGitHubIntegrationConfigs(configs: Config[]): GitHubIntegrationConfig[];
// @public
export function readGitLabIntegrationConfig(config: Config): GitLabIntegrationConfig;
// @public
export function readGitLabIntegrationConfigs(configs: Config[]): GitLabIntegrationConfig[];
// @public
export function readGoogleGcsIntegrationConfig(config: Config): GoogleGcsIntegrationConfig;
// @public
export interface ScmIntegration {
resolveEditUrl(url: string): string;
resolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
title: string;
type: string;
}
// @public
export interface ScmIntegrationRegistry extends ScmIntegrationsGroup<ScmIntegration> {
// (undocumented)
azure: ScmIntegrationsGroup<AzureIntegration>;
// (undocumented)
bitbucket: ScmIntegrationsGroup<BitbucketIntegration>;
// (undocumented)
github: ScmIntegrationsGroup<GitHubIntegration>;
// (undocumented)
gitlab: ScmIntegrationsGroup<GitLabIntegration>;
resolveEditUrl(url: string): string;
resolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
}
// @public (undocumented)
export class ScmIntegrations implements ScmIntegrationRegistry {
constructor(integrationsByType: IntegrationsByType);
// (undocumented)
get azure(): ScmIntegrationsGroup<AzureIntegration>;
// (undocumented)
get bitbucket(): ScmIntegrationsGroup<BitbucketIntegration>;
// (undocumented)
byHost(host: string): ScmIntegration | undefined;
// (undocumented)
byUrl(url: string | URL): ScmIntegration | undefined;
// (undocumented)
static fromConfig(config: Config): ScmIntegrations;
// (undocumented)
get github(): ScmIntegrationsGroup<GitHubIntegration>;
// (undocumented)
get gitlab(): ScmIntegrationsGroup<GitLabIntegration>;
// (undocumented)
list(): ScmIntegration[];
// (undocumented)
resolveEditUrl(url: string): string;
// (undocumented)
resolveUrl(options: {
url: string;
base: string;
lineNumber?: number;
}): string;
}
// @public
export interface ScmIntegrationsGroup<T extends ScmIntegration> {
byHost(host: string): T | undefined;
byUrl(url: string | URL): T | undefined;
list(): T[];
}
// (No @packageDocumentation comment for this package)
```
+55
View File
@@ -0,0 +1,55 @@
## API Report File for "@backstage/search-common"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { JsonObject } from '@backstage/config';
// @public
export interface DocumentCollator {
// (undocumented)
execute(): Promise<IndexableDocument[]>;
}
// @public
export interface DocumentDecorator {
// (undocumented)
execute(documents: IndexableDocument[]): Promise<IndexableDocument[]>;
}
// @public
export interface IndexableDocument {
location: string;
text: string;
title: string;
}
// @public (undocumented)
export interface SearchQuery {
// (undocumented)
filters?: JsonObject;
// (undocumented)
pageCursor: string;
// (undocumented)
term: string;
// (undocumented)
types?: string[];
}
// @public (undocumented)
export interface SearchResult {
// (undocumented)
document: IndexableDocument;
}
// @public (undocumented)
export interface SearchResultSet {
// (undocumented)
results: SearchResult[];
}
// (No @packageDocumentation comment for this package)
```
+178
View File
@@ -0,0 +1,178 @@
## API Report File for "@backstage/techdocs-common"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AzureIntegrationConfig } from '@backstage/integration';
import { Config } from '@backstage/config';
import Docker from 'dockerode';
import { Entity } from '@backstage/catalog-model';
import { EntityName } from '@backstage/catalog-model';
import express from 'express';
import { GitHubIntegrationConfig } from '@backstage/integration';
import { GitLabIntegrationConfig } from '@backstage/integration';
import { Logger } from 'winston';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { UrlReader } from '@backstage/backend-common';
import { Writable } from 'stream';
// @public (undocumented)
export const checkoutGitRepository: (repoUrl: string, config: Config, logger: Logger) => Promise<string>;
// @public (undocumented)
export class CommonGitPreparer implements PreparerBase {
constructor(config: Config, logger: Logger);
// (undocumented)
prepare(entity: Entity, options?: {
etag?: string;
}): Promise<PreparerResponse>;
}
// @public (undocumented)
export class DirectoryPreparer implements PreparerBase {
constructor(config: Config, logger: Logger, reader: UrlReader);
// (undocumented)
prepare(entity: Entity): Promise<PreparerResponse>;
}
// @public (undocumented)
export type GeneratorBase = {
run(opts: GeneratorRunOptions): Promise<void>;
};
// @public
export type GeneratorBuilder = {
register(protocol: SupportedGeneratorKey, generator: GeneratorBase): void;
get(entity: Entity): GeneratorBase;
};
// @public (undocumented)
export class Generators implements GeneratorBuilder {
// (undocumented)
static fromConfig(config: Config, { logger }: {
logger: Logger;
}): Promise<GeneratorBuilder>;
// (undocumented)
get(entity: Entity): GeneratorBase;
// (undocumented)
register(generatorKey: SupportedGeneratorKey, generator: GeneratorBase): void;
}
// @public (undocumented)
export const getAzureIntegrationConfig: (config: Config, host: string) => AzureIntegrationConfig;
// @public (undocumented)
export const getDefaultBranch: (repositoryUrl: string, config: Config) => Promise<string>;
// @public (undocumented)
export const getDocFilesFromRepository: (reader: UrlReader, entity: Entity, opts?: {
etag?: string | undefined;
logger?: Logger | undefined;
} | undefined) => Promise<PreparerResponse>;
// @public (undocumented)
export function getGitHost(url: string): string;
// @public (undocumented)
export const getGitHubIntegrationConfig: (config: Config, host: string) => GitHubIntegrationConfig;
// @public (undocumented)
export const getGitLabIntegrationConfig: (config: Config, host: string) => GitLabIntegrationConfig;
// @public (undocumented)
export const getGitRepositoryTempFolder: (repositoryUrl: string, config: Config) => Promise<string>;
// @public (undocumented)
export function getGitRepoType(url: string): string;
// @public (undocumented)
export const getLastCommitTimestamp: (repositoryLocation: string, logger: Logger) => Promise<number>;
// @public (undocumented)
export const getLocationForEntity: (entity: Entity) => ParsedLocationAnnotation;
// @public (undocumented)
export const getTokenForGitRepo: (repositoryUrl: string, config: Config) => Promise<string | undefined>;
// @public (undocumented)
export type ParsedLocationAnnotation = {
type: RemoteProtocol;
target: string;
};
// @public (undocumented)
export const parseReferenceAnnotation: (annotationName: string, entity: Entity) => ParsedLocationAnnotation;
// @public (undocumented)
export type PreparerBase = {
prepare(entity: Entity, options?: {
logger?: Logger;
etag?: string;
}): Promise<PreparerResponse>;
};
// @public (undocumented)
export type PreparerBuilder = {
register(protocol: RemoteProtocol, preparer: PreparerBase): void;
get(entity: Entity): PreparerBase;
};
// @public (undocumented)
export class Preparers implements PreparerBuilder {
// (undocumented)
static fromConfig(config: Config, { logger, reader }: factoryOptions): Promise<PreparerBuilder>;
// (undocumented)
get(entity: Entity): PreparerBase;
// (undocumented)
register(protocol: RemoteProtocol, preparer: PreparerBase): void;
}
// @public
export class Publisher {
// (undocumented)
static fromConfig(config: Config, { logger, discovery }: factoryOptions_2): Promise<PublisherBase>;
}
// @public
export interface PublisherBase {
docsRouter(): express.Handler;
fetchTechDocsMetadata(entityName: EntityName): Promise<TechDocsMetadata>;
getReadiness(): Promise<ReadinessResponse>;
hasDocsBeenGenerated(entityName: Entity): Promise<boolean>;
publish(request: PublishRequest): Promise<PublishResponse>;
}
// @public
export type PublisherType = 'local' | 'googleGcs' | 'awsS3' | 'azureBlobStorage' | 'openStackSwift';
// @public
export type RemoteProtocol = 'url' | 'dir' | 'github' | 'gitlab' | 'file' | 'azure/api';
// @public (undocumented)
export class TechdocsGenerator implements GeneratorBase {
constructor(logger: Logger, config: Config);
// (undocumented)
run({ inputDir, outputDir, dockerClient, parsedLocationAnnotation, etag, }: GeneratorRunOptions): Promise<void>;
}
// @public
export type TechDocsMetadata = {
site_name: string;
site_description: string;
etag: string;
};
// @public (undocumented)
export class UrlPreparer implements PreparerBase {
constructor(reader: UrlReader, logger: Logger);
// (undocumented)
prepare(entity: Entity, options?: {
etag?: string;
}): Promise<PreparerResponse>;
}
// (No @packageDocumentation comment for this package)
```
+86
View File
@@ -0,0 +1,86 @@
## API Report File for "@backstage/test-utils-core"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { ReactElement } from 'react';
import { RenderResult } from '@testing-library/react';
// @public (undocumented)
export type AsyncLogCollector = () => Promise<void>;
// @public (undocumented)
export type CollectedLogs<T extends LogFuncs> = {
[key in T]: string[];
};
// @public (undocumented)
export class Keyboard {
constructor(target: any, { debug }?: {
debug?: boolean | undefined;
});
// (undocumented)
click(): Promise<void>;
// (undocumented)
debug: boolean;
// (undocumented)
document: any;
// (undocumented)
enter(value: any): Promise<void>;
// (undocumented)
escape(): Promise<void>;
// (undocumented)
get focused(): any;
// (undocumented)
static fromReadableInput(input: any): any;
// (undocumented)
_log(message: any, ...args: any[]): void;
// (undocumented)
_pretty(element: any): string;
// (undocumented)
send(chars: any): Promise<void>;
// (undocumented)
_sendKey(key: any, charCode: any, action: any): Promise<void>;
// (undocumented)
tab(): Promise<void>;
// (undocumented)
static toReadableInput(chars: any): any;
// (undocumented)
toString(): string;
// (undocumented)
static type(target: any, input: any): Promise<void>;
// (undocumented)
type(input: any): Promise<void>;
// (undocumented)
static typeDebug(target: any, input: any): Promise<void>;
}
// @public (undocumented)
export type LogCollector = AsyncLogCollector | SyncLogCollector;
// @public (undocumented)
export type LogFuncs = 'log' | 'warn' | 'error';
// @public (undocumented)
export function renderWithEffects(nodes: ReactElement): Promise<RenderResult>;
// @public (undocumented)
export type SyncLogCollector = () => void;
// @public (undocumented)
export function withLogCollector(callback: AsyncLogCollector): Promise<CollectedLogs<LogFuncs>>;
// @public (undocumented)
export function withLogCollector(callback: SyncLogCollector): CollectedLogs<LogFuncs>;
// @public (undocumented)
export function withLogCollector<T extends LogFuncs>(logsToCollect: T[], callback: AsyncLogCollector): Promise<CollectedLogs<T>>;
// @public (undocumented)
export function withLogCollector<T extends LogFuncs>(logsToCollect: T[], callback: SyncLogCollector): CollectedLogs<T>;
// (No @packageDocumentation comment for this package)
```
+82
View File
@@ -0,0 +1,82 @@
## API Report File for "@backstage/test-utils"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { ComponentType } from 'react';
import { ErrorApi } from '@backstage/core-api';
import { ErrorContext } from '@backstage/core-api';
import { ExternalRouteRef } from '@backstage/core-api';
import { Observable } from '@backstage/core-api';
import { ReactElement } from 'react';
import { ReactNode } from 'react';
import { RenderResult } from '@testing-library/react';
import { RouteRef } from '@backstage/core-api';
import { StorageApi } from '@backstage/core-api';
import { StorageValueChange } from '@backstage/core-api';
// @public (undocumented)
export function mockBreakpoint(initialBreakpoint?: Breakpoint): {
set(breakpoint: Breakpoint): void;
remove(): void;
};
// @public (undocumented)
export class MockErrorApi implements ErrorApi {
constructor(options?: Options);
// (undocumented)
error$(): Observable<{
error: Error;
context?: ErrorContext;
}>;
// (undocumented)
getErrors(): ErrorWithContext[];
// (undocumented)
post(error: Error, context?: ErrorContext): void;
// (undocumented)
waitForError(pattern: RegExp, timeoutMs?: number): Promise<ErrorWithContext>;
}
// @public (undocumented)
export class MockStorageApi implements StorageApi {
// (undocumented)
static create(data?: MockStorageBucket): MockStorageApi;
// (undocumented)
forBucket(name: string): StorageApi;
// (undocumented)
get<T>(key: string): T | undefined;
// (undocumented)
observe$<T>(key: string): Observable<StorageValueChange<T>>;
// (undocumented)
remove(key: string): Promise<void>;
// (undocumented)
set<T>(key: string, data: T): Promise<void>;
}
// @public (undocumented)
export type MockStorageBucket = {
[key: string]: any;
};
// @public (undocumented)
export const msw: {
setupDefaultHandlers: (worker: {
listen: (t: any) => void;
close: () => void;
resetHandlers: () => void;
}) => void;
};
// @public
export function renderInTestApp(Component: ComponentType | ReactNode, options?: TestAppOptions): Promise<RenderResult>;
// @public
export function wrapInTestApp(Component: ComponentType | ReactNode, options?: TestAppOptions): ReactElement;
export * from "@backstage/test-utils-core";
// (No @packageDocumentation comment for this package)
```
+89
View File
@@ -0,0 +1,89 @@
## API Report File for "@backstage/theme"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { Overrides } from '@material-ui/core/styles/overrides';
import { Palette } from '@material-ui/core/styles/createPalette';
import { PaletteOptions } from '@material-ui/core/styles/createPalette';
import { Theme } from '@material-ui/core';
import { ThemeOptions } from '@material-ui/core';
// @public (undocumented)
export type BackstagePalette = Palette & PaletteAdditions;
// @public (undocumented)
export type BackstagePaletteOptions = PaletteOptions & PaletteAdditions;
// @public (undocumented)
export interface BackstageTheme extends Theme {
// (undocumented)
getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme;
// (undocumented)
page: PageTheme;
// (undocumented)
palette: BackstagePalette;
}
// @public (undocumented)
export interface BackstageThemeOptions extends ThemeOptions {
// (undocumented)
getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme;
// (undocumented)
page: PageTheme;
// (undocumented)
palette: BackstagePaletteOptions;
}
// @public (undocumented)
export const colorVariants: Record<string, string[]>;
// @public (undocumented)
export function createTheme(options: SimpleThemeOptions): BackstageTheme;
// @public (undocumented)
export function createThemeOptions(options: SimpleThemeOptions): BackstageThemeOptions;
// @public (undocumented)
export function createThemeOverrides(theme: BackstageTheme): Overrides;
// @public (undocumented)
export const darkTheme: BackstageTheme;
// @public (undocumented)
export function genPageTheme(colors: string[], shape: string): PageTheme;
// @public (undocumented)
export const lightTheme: BackstageTheme;
// @public (undocumented)
export type PageTheme = {
colors: string[];
shape: string;
backgroundImage: string;
};
// @public (undocumented)
export const pageTheme: Record<string, PageTheme>;
// @public (undocumented)
export type PageThemeSelector = {
themeId: string;
};
// @public (undocumented)
export const shapes: Record<string, string>;
// @public
export type SimpleThemeOptions = {
palette: BackstagePaletteOptions;
defaultPageTheme: string;
pageTheme?: Record<string, PageTheme>;
fontFamily?: string;
};
// (No @packageDocumentation comment for this package)
```
+327
View File
@@ -0,0 +1,327 @@
/*
* Copyright 2021 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint-disable import/no-extraneous-dependencies */
// eslint-disable-next-line no-restricted-imports
import {
resolve as resolvePath,
relative as relativePath,
dirname,
} from 'path';
import fs from 'fs-extra';
import {
Extractor,
ExtractorConfig,
CompilerState,
ExtractorLogLevel,
} from '@microsoft/api-extractor';
import { ApiPackage, ApiModel } from '@microsoft/api-extractor-model';
import { MarkdownDocumenter } from '@microsoft/api-documenter/lib/documenters/MarkdownDocumenter';
const tmpDir = resolvePath(__dirname, '../node_modules/.cache/api-extractor');
/**
* All of this monkey patching below is because MUI has these bare package.json file as a method
* for making TypeScript accept imports like `@material-ui/core/Button`, and improve tree-shaking
* by declaring them side effect free.
*
* The package.json lookup logic in api-extractor really doesn't like that though, as it enforces
* that the 'name' field exists in all package.json files that it discovers. This below is just
* making sure that we ignore those file package.json files instead of crashing.
*/
const {
PackageJsonLookup,
} = require('@rushstack/node-core-library/lib/PackageJsonLookup');
const old = PackageJsonLookup.prototype.tryGetPackageJsonFilePathFor;
PackageJsonLookup.prototype.tryGetPackageJsonFilePathFor = function tryGetPackageJsonFilePathForPatch(
path: string,
) {
if (
path.includes('@material-ui') &&
!dirname(path).endsWith('@material-ui')
) {
return undefined;
}
return old.call(this, path);
};
const DOCUMENTED_PACKAGES = [
'packages/backend-common',
'packages/catalog-client',
'packages/catalog-model',
'packages/cli-common',
'packages/config',
'packages/config-loader',
// TODO(Rugvip): Enable these once `import * as ...` and `import()` PRs have landed, #1796 & #1916.
// 'packages/core',
// 'packages/core-api',
'packages/dev-utils',
'packages/errors',
'packages/integration',
'packages/integration-react',
'packages/search-common',
'packages/techdocs-common',
'packages/test-utils',
'packages/test-utils-core',
'packages/theme',
];
interface ApiExtractionOptions {
packageDirs: string[];
outputDir: string;
isLocalBuild: boolean;
}
async function runApiExtraction({
packageDirs,
outputDir,
isLocalBuild,
}: ApiExtractionOptions) {
await fs.remove(outputDir);
const entryPoints = packageDirs.map(packageDir => {
return resolvePath(__dirname, `../dist-types/${packageDir}/src/index.d.ts`);
});
let compilerState: CompilerState | undefined = undefined;
for (const packageDir of packageDirs) {
console.log(`## Processing ${packageDir}`);
const projectFolder = resolvePath(__dirname, '..', packageDir);
const packagePath = resolvePath(__dirname, `../${packageDir}/package.json`);
const extractorConfig = ExtractorConfig.prepare({
configObject: {
mainEntryPointFilePath: resolvePath(
__dirname,
'../dist-types/packages/<unscopedPackageName>/src/index.d.ts',
),
bundledPackages: [],
compiler: {
tsconfigFilePath: resolvePath(__dirname, '../tsconfig.json'),
},
apiReport: {
enabled: true,
reportFileName: 'api-report.md',
reportFolder: projectFolder,
reportTempFolder: resolvePath(outputDir, '<unscopedPackageName>'),
},
docModel: {
enabled: true,
apiJsonFilePath: resolvePath(
outputDir,
'<unscopedPackageName>.api.json',
),
},
dtsRollup: {
enabled: false,
},
tsdocMetadata: {
enabled: false,
},
messages: {
// Silence warnings, as these will prevent the CI build to work
compilerMessageReporting: {
default: {
logLevel: 'none' as ExtractorLogLevel.None,
// These contain absolute file paths, so can't be included in the report
// addToApiReportFile: true,
},
},
extractorMessageReporting: {
default: {
logLevel: 'none' as ExtractorLogLevel.Warning,
// addToApiReportFile: true,
},
},
tsdocMessageReporting: {
default: {
logLevel: 'none' as ExtractorLogLevel.Warning,
// addToApiReportFile: true,
},
},
},
newlineKind: 'lf',
projectFolder,
},
configObjectFullPath: projectFolder,
packageJsonFullPath: packagePath,
});
if (!compilerState) {
compilerState = CompilerState.create(extractorConfig, {
additionalEntryPoints: entryPoints,
});
}
// Message verbosity can't be configured, so just skip the check instead
(Extractor as any)._checkCompilerCompatibility = () => {};
let shouldLogInstructions = false;
let conflictingFile: undefined | string = undefined;
// Invoke API Extractor
const extractorResult = Extractor.invoke(extractorConfig, {
localBuild: isLocalBuild,
showVerboseMessages: false,
showDiagnostics: false,
messageCallback(message) {
if (
message.text.includes(
'You have changed the public API signature for this project.',
)
) {
shouldLogInstructions = true;
const match = message.text.match(
/Please copy the file "(.*)" to "api-report\.md"/,
);
if (match) {
conflictingFile = match[1];
}
}
},
compilerState,
});
if (!extractorResult.succeeded) {
if (shouldLogInstructions) {
console.log('');
console.log(
'*************************************************************************************',
);
console.log(
'* You have uncommitted changes to the public API of a package. *',
);
console.log(
'* To solve this, run `yarn build:api-reports` and commit all api-report.md changes. *',
);
console.log(
'*************************************************************************************',
);
console.log('');
if (conflictingFile) {
console.log('');
console.log(
`The conflicting file is ${relativePath(
tmpDir,
conflictingFile,
)}, with the following content:`,
);
console.log('');
const content = await fs.readFile(conflictingFile, 'utf8');
console.log(content);
console.log('');
}
}
throw new Error(
`API Extractor completed with ${extractorResult.errorCount} errors` +
` and ${extractorResult.warningCount} warnings`,
);
}
}
}
function isComponentMember(member: any) {
// React components are annotated with @component, and we want to skip those
return Boolean(member.docComment.match(/\n\s*\**\s*@component/m));
}
async function buildDocs({
inputDir,
outputDir,
}: {
inputDir: string;
outputDir: string;
}) {
const parseFile = async (filename: string): Promise<any> => {
console.log(`Reading ${filename}`);
return fs.readJson(resolvePath(inputDir, filename));
};
const filenames = await fs.readdir(inputDir);
const serializedPackages = await Promise.all(
filenames
.filter(filename => filename.match(/\.api\.json$/i))
.map(parseFile),
);
const newModel = new ApiModel();
for (const serialized of serializedPackages) {
serialized.members[0].members = serialized.members[0].members.filter(
member => !isComponentMember(member),
);
const pkg = ApiPackage.deserialize(
serialized,
serialized.metadata,
) as ApiPackage;
newModel.addMember(pkg);
}
await fs.remove(outputDir);
await fs.ensureDir(outputDir);
const documenter = new MarkdownDocumenter({
apiModel: newModel,
documenterConfig: {
outputTarget: 'markdown',
newlineKind: '\n',
// De ba dålig kod
configFilePath: '',
configFile: {},
} as any,
outputFolder: outputDir,
});
documenter.generateFiles();
}
async function main() {
const isCiBuild = process.argv.includes('--ci');
const isDocsBuild = process.argv.includes('--docs');
console.log('# Generating package API reports');
await runApiExtraction({
packageDirs: DOCUMENTED_PACKAGES,
outputDir: tmpDir,
isLocalBuild: !isCiBuild,
});
if (isDocsBuild) {
console.log('# Generating package documentation');
await buildDocs({
inputDir: tmpDir,
outputDir: resolvePath(__dirname, '..', 'docs/reference'),
});
}
}
main().catch(error => {
console.error(error.stack || String(error));
process.exit(1);
});
+6
View File
@@ -0,0 +1,6 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"module": "CommonJS"
}
}
+153 -9
View File
@@ -3809,11 +3809,54 @@
dependencies:
"@types/whatwg-streams" "^0.0.7"
"@microsoft/api-documenter@^7.12.16":
version "7.12.21"
resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.12.21.tgz#cdafcd4575d42e55eb8ca338a3a5fb868f9d5872"
integrity sha512-XZQKnMppgkTHeGh92fQ7kidT2Bxr3o775Mo9gP21+kTQs3LnvukHmSnFwBTHTXpvOq1wnkbT430dRvxdayWECQ==
dependencies:
"@microsoft/api-extractor-model" "7.12.5"
"@microsoft/tsdoc" "0.12.24"
"@rushstack/node-core-library" "3.36.2"
"@rushstack/ts-command-line" "4.7.10"
colors "~1.2.1"
js-yaml "~3.13.1"
resolve "~1.17.0"
"@microsoft/api-extractor-model@7.12.5", "@microsoft/api-extractor-model@^7.12.5", "@microsoft/api-extractor-model@workspace:*":
version "7.12.5"
resolved "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.12.5.tgz#28d2804865ceba9cd89ab4f05cff99d16fa6c9b8"
integrity sha512-oeHZW83JWjIVoCDvdwI5nsZGPxThbq4gZTLAYNeJGZE/mKEO0iayMPGmI3EllJBjwQsFvNVU+O/HGULhB2to/g==
dependencies:
"@microsoft/tsdoc" "0.12.24"
"@rushstack/node-core-library" "3.36.2"
"@microsoft/api-extractor@7.13.2-pr1916.0":
version "7.13.2-pr1916.0"
resolved "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.13.2-pr1916.0.tgz#2e10cb928ea81b56cd5f63264da11f1f9b9310a5"
integrity sha512-0/HajL+NUixuNGMfFZbHmKJn5VEqiF45q2FXhu8UrggutdJ+9M6wZ++fejUHfxlC/WhQVrVVRtf4xvVM3oIW+A==
dependencies:
"@microsoft/api-extractor-model" "workspace:*"
"@microsoft/tsdoc" "0.12.24"
"@rushstack/node-core-library" "workspace:*"
"@rushstack/rig-package" "workspace:*"
"@rushstack/ts-command-line" "workspace:*"
colors "~1.2.1"
lodash "~4.17.15"
resolve "~1.17.0"
semver "~7.3.0"
source-map "~0.6.1"
typescript "~4.1.3"
"@microsoft/microsoft-graph-types@^1.25.0":
version "1.25.0"
resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-1.25.0.tgz#1f543ebc029a115dd1d48a1ae99d7ddd5ee9af57"
integrity sha512-RsuA+ROaU3voWzG9TVBkRKxmLatteRGduFDi5p0k3FUHho49rm9SvrA7DUyYbSXLy2xXRx9AnjKM9klYBeKEiQ==
"@microsoft/tsdoc@0.12.24":
version "0.12.24"
resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz#30728e34ebc90351dd3aff4e18d038eed2c3e098"
integrity sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -4357,6 +4400,39 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"
"@rushstack/node-core-library@3.36.2", "@rushstack/node-core-library@workspace:*":
version "3.36.2"
resolved "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.36.2.tgz#ba00d313577f9b06d5aafaa29da0d94e594874c0"
integrity sha512-5J8xSY/PuCKR+yfxS497l0PP43kBUeD86S4eS3RzrmMle04J4522MWal8mk1T1EIDpYpgi8qScannU9oVxoStA==
dependencies:
"@types/node" "10.17.13"
colors "~1.2.1"
fs-extra "~7.0.1"
import-lazy "~4.0.0"
jju "~1.4.0"
resolve "~1.17.0"
semver "~7.3.0"
timsort "~0.3.0"
z-schema "~3.18.3"
"@rushstack/rig-package@workspace:*":
version "0.2.12"
resolved "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.2.12.tgz#c434d62b28e0418a040938226f8913971d0424c7"
integrity sha512-nbePcvF8hQwv0ql9aeQxcaMPK/h1OLAC00W7fWCRWIvD2MchZOE8jumIIr66HGrfG2X1sw++m/ZYI4D+BM5ovQ==
dependencies:
resolve "~1.17.0"
strip-json-comments "~3.1.1"
"@rushstack/ts-command-line@4.7.10", "@rushstack/ts-command-line@workspace:*":
version "4.7.10"
resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.7.10.tgz#a2ec6efb1945b79b496671ce90eb1be4f1397d31"
integrity sha512-8t042g8eerypNOEcdpxwRA3uCmz0duMo21rG4Z2mdz7JxJeylDmzjlU3wDdef2t3P1Z61JCdZB6fbm1Mh0zi7w==
dependencies:
"@types/argparse" "1.0.38"
argparse "~1.0.9"
colors "~1.2.1"
string-argv "~0.3.1"
"@samverschueren/stream-to-observable@^0.3.0":
version "0.3.0"
resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
@@ -5567,6 +5643,11 @@
dependencies:
"@types/glob" "*"
"@types/argparse@1.0.38":
version "1.0.38"
resolved "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9"
integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==
"@types/aria-query@^4.2.0":
version "4.2.0"
resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0"
@@ -6315,6 +6396,11 @@
resolved "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz#90c5c4a8d72bbbfe53033f122341343249183448"
integrity sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg==
"@types/node@10.17.13":
version "10.17.13"
resolved "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c"
integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==
"@types/node@^10.1.0", "@types/node@^10.12.0":
version "10.17.35"
resolved "https://registry.npmjs.org/@types/node/-/node-10.17.35.tgz#58058f29b870e6ae57b20e4f6e928f02b7129f56"
@@ -7811,7 +7897,7 @@ arg@^4.1.0:
resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
argparse@^1.0.10, argparse@^1.0.7:
argparse@^1.0.10, argparse@^1.0.7, argparse@~1.0.9:
version "1.0.10"
resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
@@ -9917,6 +10003,11 @@ colors@^1.1.2, colors@^1.2.1:
resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
colors@~1.2.1:
version "1.2.5"
resolved "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc"
integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==
colorspace@1.1.x:
version "1.1.2"
resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5"
@@ -9965,7 +10056,7 @@ commander@2.3.0:
resolved "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=
commander@^2.19.0, commander@^2.20.0, commander@^2.20.3, commander@~2.20.3:
commander@^2.19.0, commander@^2.20.0, commander@^2.20.3, commander@^2.7.1, commander@~2.20.3:
version "2.20.3"
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -13566,7 +13657,7 @@ fs-extra@^0.30.0:
path-is-absolute "^1.0.0"
rimraf "^2.2.8"
fs-extra@^7.0.1:
fs-extra@^7.0.1, fs-extra@~7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
@@ -15214,6 +15305,11 @@ import-lazy@^2.1.0:
resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
import-lazy@~4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153"
integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==
import-local@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
@@ -16616,6 +16712,11 @@ jest@^26.0.1:
import-local "^3.0.2"
jest-cli "^26.6.3"
jju@~1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a"
integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo=
jmespath@0.15.0:
version "0.15.0"
resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
@@ -16696,6 +16797,14 @@ js-yaml@^4.0.0:
dependencies:
argparse "^2.0.1"
js-yaml@~3.13.1:
version "3.13.1"
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -17686,7 +17795,7 @@ lodash.flattendeep@^4.0.0:
resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
lodash.get@^4:
lodash.get@^4, lodash.get@^4.0.0:
version "4.4.2"
resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
@@ -17701,6 +17810,11 @@ lodash.isboolean@^3.0.3:
resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
lodash.isequal@^4.0.0:
version "4.5.0"
resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
lodash.isinteger@^4.0.4:
version "4.0.4"
resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
@@ -17786,7 +17900,7 @@ lodash@4.17.15:
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
lodash@4.x, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.20, lodash@~4.17.4:
lodash@4.x, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.15, lodash@~4.17.20, lodash@~4.17.4:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -23004,6 +23118,13 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17
is-core-module "^2.2.0"
path-parse "^1.0.6"
resolve@~1.17.0:
version "1.17.0"
resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
dependencies:
path-parse "^1.0.6"
responselike@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
@@ -23434,6 +23555,13 @@ semver@~5.3.0:
resolved "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
semver@~7.3.0:
version "7.3.5"
resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
dependencies:
lru-cache "^6.0.0"
send@0.17.1:
version "0.17.1"
resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
@@ -24314,7 +24442,7 @@ strict-uri-encode@^2.0.0:
resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
string-argv@0.3.1:
string-argv@0.3.1, string-argv@~0.3.1:
version "0.3.1"
resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
@@ -24540,7 +24668,7 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@@ -25144,7 +25272,7 @@ timers-ext@^0.1.7:
es5-ext "~0.10.46"
next-tick "1"
timsort@^0.3.0:
timsort@^0.3.0, timsort@~0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
@@ -25651,7 +25779,7 @@ typescript-json-schema@^0.49.0:
typescript "^4.1.3"
yargs "^16.2.0"
typescript@^4.0.3, typescript@^4.1.3:
typescript@^4.0.3, typescript@^4.1.3, typescript@~4.1.3:
version "4.2.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3"
integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==
@@ -26217,6 +26345,11 @@ validate.io-number@^1.0.3:
resolved "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz#f63ffeda248bf28a67a8d48e0e3b461a1665baf8"
integrity sha1-9j/+2iSL8opnqNSODjtGGhZluvg=
validator@^8.0.0:
version "8.2.0"
resolved "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9"
integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==
vary@^1, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -27131,6 +27264,17 @@ yup@^0.29.3:
synchronous-promise "^2.0.13"
toposort "^2.0.2"
z-schema@~3.18.3:
version "3.18.4"
resolved "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2"
integrity sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==
dependencies:
lodash.get "^4.0.0"
lodash.isequal "^4.0.0"
validator "^8.0.0"
optionalDependencies:
commander "^2.7.1"
zen-observable-ts@^0.8.21:
version "0.8.21"
resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d"