diff --git a/.changeset/angry-rules-fail.md b/.changeset/angry-rules-fail.md
new file mode 100644
index 0000000000..cc52d4478e
--- /dev/null
+++ b/.changeset/angry-rules-fail.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog': patch
+---
+
+Add unstable prop for disabling unregister entity menu
diff --git a/.changeset/big-pens-train.md b/.changeset/big-pens-train.md
new file mode 100644
index 0000000000..5c4f8dc7b0
--- /dev/null
+++ b/.changeset/big-pens-train.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Unsubscribe from broker after response is flushed
diff --git a/.changeset/lemon-crabs-confess.md b/.changeset/lemon-crabs-confess.md
new file mode 100644
index 0000000000..0d87843df5
--- /dev/null
+++ b/.changeset/lemon-crabs-confess.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Updating fs-extra to 10.0.0 to handle broken symbolic links correctly
diff --git a/.changeset/polite-spies-judge.md b/.changeset/polite-spies-judge.md
new file mode 100644
index 0000000000..075bcf1598
--- /dev/null
+++ b/.changeset/polite-spies-judge.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend-module-rails': patch
+---
+
+updated paths to consider differences between platform (windows corrected)
diff --git a/.changeset/real-plums-vanish.md b/.changeset/real-plums-vanish.md
new file mode 100644
index 0000000000..a653a6bdf2
--- /dev/null
+++ b/.changeset/real-plums-vanish.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Add Sign In and Handler resolver for Microsoft provider
diff --git a/.changeset/shy-rules-design.md b/.changeset/shy-rules-design.md
new file mode 100644
index 0000000000..4f009e5aa8
--- /dev/null
+++ b/.changeset/shy-rules-design.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-scaffolder-backend': minor
+---
+
+Updated inputs for the `publish:github:pull-request` action.
+
+Now requires a `repoUrl` instead of separate `owner` and `repo` inputs. This aligns with the output of the `RepoUrlPicker` ui field used by the pull-request sample template.
diff --git a/.changeset/techdocs-typescript-isnt-fun.md b/.changeset/techdocs-typescript-isnt-fun.md
new file mode 100644
index 0000000000..9341c1c14a
--- /dev/null
+++ b/.changeset/techdocs-typescript-isnt-fun.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-techdocs-backend': patch
+---
+
+It is no longer required to provide a generator and a preparer to the TechDocs
+router factory when running TechDocs in the "recommended" (e.g. externally
+prepared and generated docs) configuration.
diff --git a/.changeset/wise-rockets-smoke.md b/.changeset/wise-rockets-smoke.md
new file mode 100644
index 0000000000..c81d20519d
--- /dev/null
+++ b/.changeset/wise-rockets-smoke.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-common': patch
+---
+
+Document the default behavior of `statusCheck` option in `createStatusCheckRouter`.
diff --git a/.changeset/young-tables-reply.md b/.changeset/young-tables-reply.md
new file mode 100644
index 0000000000..e08a875c14
--- /dev/null
+++ b/.changeset/young-tables-reply.md
@@ -0,0 +1,16 @@
+---
+'@backstage/backend-common': patch
+'@backstage/cli': patch
+'@backstage/config-loader': patch
+'@backstage/create-app': patch
+'@backstage/techdocs-common': patch
+'@backstage/plugin-app-backend': patch
+'@backstage/plugin-auth-backend': patch
+'@backstage/plugin-catalog-backend': patch
+'@backstage/plugin-kubernetes-backend': patch
+'@backstage/plugin-rollbar-backend': patch
+'@backstage/plugin-scaffolder-backend': patch
+'@backstage/plugin-techdocs-backend': patch
+---
+
+Revert the upgrade to `fs-extra@10.0.0` as that seemed to have broken all installs inexplicably.
diff --git a/docs/overview/stability-index.md b/docs/overview/stability-index.md
index 1cdde89a78..2b730024fd 100644
--- a/docs/overview/stability-index.md
+++ b/docs/overview/stability-index.md
@@ -332,8 +332,7 @@ Stability: `1`
The backend scaffolder plugin that provides an implementation for templates in
the catalog.
-Stability: `1`. There is planned work to rework the scaffolder in
-https://github.com/backstage/backstage/issues/2771.
+Stability: `2`.
### `tech-radar` [GitHub](https://github.com/backstage/backstage/tree/master/plugins/tech-radar/)
diff --git a/microsite/static/img/backstage-k8s.svg b/microsite/static/img/backstage-k8s.svg
index 2796a396e7..28b6ef8f92 100644
--- a/microsite/static/img/backstage-k8s.svg
+++ b/microsite/static/img/backstage-k8s.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/microsite/static/img/backstage-software-catalog.svg b/microsite/static/img/backstage-software-catalog.svg
index 101439497b..5cad498d35 100644
--- a/microsite/static/img/backstage-software-catalog.svg
+++ b/microsite/static/img/backstage-software-catalog.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/microsite/static/img/backstage-software-templates.svg b/microsite/static/img/backstage-software-templates.svg
index 3984cd2870..e64428de82 100644
--- a/microsite/static/img/backstage-software-templates.svg
+++ b/microsite/static/img/backstage-software-templates.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/microsite/static/img/backstage-techdocs.svg b/microsite/static/img/backstage-techdocs.svg
index aa9362b1bc..643cde325c 100644
--- a/microsite/static/img/backstage-techdocs.svg
+++ b/microsite/static/img/backstage-techdocs.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/microsite/static/img/rails-icon.png b/microsite/static/img/rails-icon.png
index f7b8b69bd9..04f63766fe 100644
Binary files a/microsite/static/img/rails-icon.png and b/microsite/static/img/rails-icon.png differ
diff --git a/package.json b/package.json
index 09dc55617b..93517d3374 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
"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": "yarn tsc:full && 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",
@@ -44,15 +44,14 @@
"**/@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-documenter": "^7.12.16",
- "@microsoft/api-extractor": "7.13.2-pr1916.0",
- "@microsoft/api-extractor-model": "^7.12.5"
+ "@microsoft/api-documenter": "^7.13.30",
+ "@microsoft/api-extractor": "^7.18.1",
+ "@microsoft/api-extractor-model": "^7.13.3"
},
"devDependencies": {
"@changesets/cli": "^2.14.0",
@@ -61,7 +60,7 @@
"command-exists": "^1.2.9",
"concurrently": "^6.0.0",
"eslint-plugin-notice": "^0.9.10",
- "fs-extra": "^10.0.0",
+ "fs-extra": "9.1.0",
"husky": "^6.0.0",
"lerna": "^4.0.0",
"lint-staged": "^10.1.0",
diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md
index 22eac06ed2..94f1147b5a 100644
--- a/packages/backend-common/api-report.md
+++ b/packages/backend-common/api-report.md
@@ -3,6 +3,8 @@
> 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';
@@ -32,105 +34,133 @@ 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;
- // (undocumented)
- readTree(url: string, options?: ReadTreeOptions): Promise;
- // (undocumented)
- readUrl(url: string, _options?: ReadUrlOptions): Promise;
- // (undocumented)
- search(url: string, options?: SearchOptions): Promise;
- // (undocumented)
- toString(): string;
+ constructor(
+ integration: AzureIntegration,
+ deps: {
+ treeResponseFactory: ReadTreeResponseFactory;
+ },
+ );
+ // (undocumented)
+ static factory: ReaderFactory;
+ // (undocumented)
+ read(url: string): Promise;
+ // (undocumented)
+ readTree(url: string, options?: ReadTreeOptions): Promise;
+ // (undocumented)
+ readUrl(url: string, _options?: ReadUrlOptions): Promise;
+ // (undocumented)
+ search(url: string, options?: SearchOptions): Promise;
+ // (undocumented)
+ toString(): string;
}
// @public
export class BitbucketUrlReader implements UrlReader {
- constructor(integration: BitbucketIntegration, deps: {
- treeResponseFactory: ReadTreeResponseFactory;
- });
- // (undocumented)
- static factory: ReaderFactory;
- // (undocumented)
- read(url: string): Promise;
- // (undocumented)
- readTree(url: string, options?: ReadTreeOptions): Promise;
- // (undocumented)
- readUrl(url: string, _options?: ReadUrlOptions): Promise;
- // (undocumented)
- search(url: string, options?: SearchOptions): Promise;
- // (undocumented)
- toString(): string;
+ constructor(
+ integration: BitbucketIntegration,
+ deps: {
+ treeResponseFactory: ReadTreeResponseFactory;
+ },
+ );
+ // (undocumented)
+ static factory: ReaderFactory;
+ // (undocumented)
+ read(url: string): Promise;
+ // (undocumented)
+ readTree(url: string, options?: ReadTreeOptions): Promise;
+ // (undocumented)
+ readUrl(url: string, _options?: ReadUrlOptions): Promise;
+ // (undocumented)
+ search(url: string, options?: SearchOptions): Promise;
+ // (undocumented)
+ toString(): string;
}
// @public
export interface CacheClient {
- delete(key: string): Promise;
- get(key: string): Promise;
- set(key: string, value: JsonValue, options?: CacheSetOptions): Promise;
+ delete(key: string): Promise;
+ get(key: string): Promise;
+ set(key: string, value: JsonValue, options?: CacheSetOptions): Promise;
}
// @public
export class CacheManager {
- forPlugin(pluginId: string): PluginCacheManager;
- static fromConfig(config: Config, options?: CacheManagerOptions): CacheManager;
- }
+ forPlugin(pluginId: string): PluginCacheManager;
+ static fromConfig(
+ config: Config,
+ options?: CacheManagerOptions,
+ ): CacheManager;
+}
// @public (undocumented)
export const coloredFormat: winston.Logform.Format;
// @public (undocumented)
export interface ContainerRunner {
- // (undocumented)
- runContainer(opts: RunContainerOptions): Promise;
+ // (undocumented)
+ runContainer(opts: RunContainerOptions): Promise;
}
// @public @deprecated
export const createDatabase: typeof createDatabaseClient;
// @public
-export function createDatabaseClient(dbConfig: Config, overrides?: Partial): Knex;
+export function createDatabaseClient(
+ dbConfig: Config,
+ overrides?: Partial,
+): Knex;
// @public (undocumented)
-export function createRootLogger(options?: winston.LoggerOptions, env?: NodeJS.ProcessEnv): winston.Logger;
+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;
+export function createStatusCheckRouter(
+ options: StatusCheckRouterOptions,
+): Promise;
// @public (undocumented)
export class DatabaseManager {
- forPlugin(pluginId: string): PluginDatabaseManager;
- static fromConfig(config: Config): DatabaseManager;
- }
+ forPlugin(pluginId: string): PluginDatabaseManager;
+ static fromConfig(config: Config): DatabaseManager;
+}
// @public (undocumented)
export class DockerContainerRunner implements ContainerRunner {
- constructor({ dockerClient }: {
- dockerClient: Docker;
- });
- // (undocumented)
- runContainer({ imageName, command, args, logStream, mountDirs, workingDir, envVars, }: RunContainerOptions): Promise;
+ constructor({ dockerClient }: { dockerClient: Docker });
+ // (undocumented)
+ runContainer({
+ imageName,
+ command,
+ args,
+ logStream,
+ mountDirs,
+ workingDir,
+ envVars,
+ }: RunContainerOptions): Promise;
}
// @public
-export function ensureDatabaseExists(dbConfig: Config, ...databases: Array): Promise;
+export function ensureDatabaseExists(
+ dbConfig: Config,
+ ...databases: Array
+): Promise;
// @public
-export function errorHandler(options?: ErrorHandlerOptions): ErrorRequestHandler;
+export function errorHandler(
+ options?: ErrorHandlerOptions,
+): ErrorRequestHandler;
// @public (undocumented)
export type ErrorHandlerOptions = {
- showStackTraces?: boolean;
- logger?: Logger_2;
- logClientErrors?: boolean;
+ showStackTraces?: boolean;
+ logger?: Logger_2;
+ logClientErrors?: boolean;
};
// @public (undocumented)
@@ -141,128 +171,154 @@ export function getVoidLogger(): winston.Logger;
// @public (undocumented)
export class Git {
- // (undocumented)
- add({ dir, filepath, }: {
- dir: string;
- filepath: string;
- }): Promise;
- // (undocumented)
- addRemote({ dir, url, remote, }: {
- dir: string;
- remote: string;
- url: string;
- }): Promise;
- // (undocumented)
- clone({ url, dir, ref, }: {
- url: string;
- dir: string;
- ref?: string;
- }): Promise;
- // (undocumented)
- commit({ dir, message, author, committer, }: {
- dir: string;
- message: string;
- author: {
- name: string;
- email: string;
- };
- committer: {
- name: string;
- email: string;
- };
- }): Promise;
- // (undocumented)
- currentBranch({ dir, fullName, }: {
- dir: string;
- fullName?: boolean;
- }): Promise;
- // (undocumented)
- fetch({ dir, remote, }: {
- dir: string;
- remote?: string;
- }): Promise;
- // (undocumented)
- static fromAuth: ({ username, password, logger, }: {
- username?: string | undefined;
- password?: string | undefined;
- logger?: Logger_2 | undefined;
- }) => Git;
- // (undocumented)
- init({ dir, defaultBranch, }: {
- dir: string;
- defaultBranch?: string;
- }): Promise;
- // (undocumented)
- merge({ dir, theirs, ours, author, committer, }: {
- dir: string;
- theirs: string;
- ours?: string;
- author: {
- name: string;
- email: string;
- };
- committer: {
- name: string;
- email: string;
- };
- }): Promise;
- // (undocumented)
- push({ dir, remote }: {
- dir: string;
- remote: string;
- }): Promise;
- // (undocumented)
- readCommit({ dir, sha, }: {
- dir: string;
- sha: string;
- }): Promise;
- // (undocumented)
- resolveRef({ dir, ref, }: {
- dir: string;
- ref: string;
- }): Promise;
+ // (undocumented)
+ add({ dir, filepath }: { dir: string; filepath: string }): Promise;
+ // (undocumented)
+ addRemote({
+ dir,
+ url,
+ remote,
+ }: {
+ dir: string;
+ remote: string;
+ url: string;
+ }): Promise;
+ // (undocumented)
+ clone({
+ url,
+ dir,
+ ref,
+ }: {
+ url: string;
+ dir: string;
+ ref?: string;
+ }): Promise;
+ // (undocumented)
+ commit({
+ dir,
+ message,
+ author,
+ committer,
+ }: {
+ dir: string;
+ message: string;
+ author: {
+ name: string;
+ email: string;
+ };
+ committer: {
+ name: string;
+ email: string;
+ };
+ }): Promise;
+ // (undocumented)
+ currentBranch({
+ dir,
+ fullName,
+ }: {
+ dir: string;
+ fullName?: boolean;
+ }): Promise;
+ // (undocumented)
+ fetch({ dir, remote }: { dir: string; remote?: string }): Promise;
+ // (undocumented)
+ static fromAuth: ({
+ username,
+ password,
+ logger,
+ }: {
+ username?: string | undefined;
+ password?: string | undefined;
+ logger?: Logger_2 | undefined;
+ }) => Git;
+ // (undocumented)
+ init({
+ dir,
+ defaultBranch,
+ }: {
+ dir: string;
+ defaultBranch?: string;
+ }): Promise;
+ // (undocumented)
+ merge({
+ dir,
+ theirs,
+ ours,
+ author,
+ committer,
+ }: {
+ dir: string;
+ theirs: string;
+ ours?: string;
+ author: {
+ name: string;
+ email: string;
+ };
+ committer: {
+ name: string;
+ email: string;
+ };
+ }): Promise;
+ // (undocumented)
+ push({ dir, remote }: { dir: string; remote: string }): Promise;
+ // (undocumented)
+ readCommit({
+ dir,
+ sha,
+ }: {
+ dir: string;
+ sha: string;
+ }): Promise;
+ // (undocumented)
+ resolveRef({ dir, ref }: { dir: string; ref: string }): Promise;
}
// @public
export class GithubUrlReader implements UrlReader {
- constructor(integration: GitHubIntegration, deps: {
- treeResponseFactory: ReadTreeResponseFactory;
- credentialsProvider: GithubCredentialsProvider;
- });
- // (undocumented)
- static factory: ReaderFactory;
- // (undocumented)
- read(url: string): Promise;
- // (undocumented)
- readTree(url: string, options?: ReadTreeOptions): Promise;
- // (undocumented)
- readUrl(url: string, options?: ReadUrlOptions): Promise;
- // (undocumented)
- search(url: string, options?: SearchOptions): Promise;
- // (undocumented)
- toString(): string;
+ constructor(
+ integration: GitHubIntegration,
+ deps: {
+ treeResponseFactory: ReadTreeResponseFactory;
+ credentialsProvider: GithubCredentialsProvider;
+ },
+ );
+ // (undocumented)
+ static factory: ReaderFactory;
+ // (undocumented)
+ read(url: string): Promise;
+ // (undocumented)
+ readTree(url: string, options?: ReadTreeOptions): Promise;
+ // (undocumented)
+ readUrl(url: string, options?: ReadUrlOptions): Promise;
+ // (undocumented)
+ search(url: string, options?: SearchOptions): Promise;
+ // (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;
- // (undocumented)
- readTree(url: string, options?: ReadTreeOptions): Promise;
- // (undocumented)
- readUrl(url: string, options?: ReadUrlOptions): Promise;
- // (undocumented)
- search(url: string, options?: SearchOptions): Promise;
- // (undocumented)
- toString(): string;
+ constructor(
+ integration: GitLabIntegration,
+ deps: {
+ treeResponseFactory: ReadTreeResponseFactory;
+ },
+ );
+ // (undocumented)
+ static factory: ReaderFactory;
+ // (undocumented)
+ read(url: string): Promise;
+ // (undocumented)
+ readTree(url: string, options?: ReadTreeOptions): Promise;
+ // (undocumented)
+ readUrl(url: string, options?: ReadUrlOptions): Promise;
+ // (undocumented)
+ search(url: string, options?: SearchOptions): Promise;
+ // (undocumented)
+ toString(): string;
}
-export { isChildPath }
+export { isChildPath };
// @public
export function loadBackendConfig(options: Options): Promise;
@@ -272,32 +328,32 @@ export function notFoundHandler(): RequestHandler;
// @public
export type PluginCacheManager = {
- getClient: (options?: ClientOptions) => CacheClient;
+ getClient: (options?: ClientOptions) => CacheClient;
};
// @public
export interface PluginDatabaseManager {
- getClient(): Promise;
+ getClient(): Promise;
}
// @public
export type PluginEndpointDiscovery = {
- getBaseUrl(pluginId: string): Promise;
- getExternalBaseUrl(pluginId: string): Promise;
+ getBaseUrl(pluginId: string): Promise;
+ getExternalBaseUrl(pluginId: string): Promise;
};
// @public
export type ReadTreeResponse = {
- files(): Promise;
- archive(): Promise;
- dir(options?: ReadTreeResponseDirOptions): Promise;
- etag: string;
+ files(): Promise;
+ archive(): Promise;
+ dir(options?: ReadTreeResponseDirOptions): Promise;
+ etag: string;
};
// @public
export type ReadTreeResponseFile = {
- path: string;
- content(): Promise;
+ path: string;
+ content(): Promise;
};
// @public
@@ -311,37 +367,37 @@ export function resolveSafeChildPath(base: string, path: string): string;
// @public (undocumented)
export type RunContainerOptions = {
- imageName: string;
- command?: string | string[];
- args: string[];
- logStream?: Writable;
- mountDirs?: Record;
- workingDir?: string;
- envVars?: Record;
+ imageName: string;
+ command?: string | string[];
+ args: string[];
+ logStream?: Writable;
+ mountDirs?: Record;
+ workingDir?: string;
+ envVars?: Record;
};
// @public
export type SearchResponse = {
- files: SearchResponseFile[];
- etag: string;
+ files: SearchResponseFile[];
+ etag: string;
};
// @public
export type SearchResponseFile = {
- url: string;
- content(): Promise;
+ url: string;
+ content(): Promise;
};
// @public (undocumented)
export type ServiceBuilder = {
- loadConfig(config: ConfigReader): ServiceBuilder;
- setPort(port: number): ServiceBuilder;
- setHost(host: string): ServiceBuilder;
- setLogger(logger: Logger_2): ServiceBuilder;
- enableCors(options: cors.CorsOptions): ServiceBuilder;
- setHttpsSettings(settings: HttpsSettings): ServiceBuilder;
- addRouter(root: string, router: Router | RequestHandler): ServiceBuilder;
- start(): Promise;
+ loadConfig(config: ConfigReader): ServiceBuilder;
+ setPort(port: number): ServiceBuilder;
+ setHost(host: string): ServiceBuilder;
+ setLogger(logger: Logger_2): ServiceBuilder;
+ enableCors(options: cors.CorsOptions): ServiceBuilder;
+ setHttpsSettings(settings: HttpsSettings): ServiceBuilder;
+ addRouter(root: string, router: Router | RequestHandler): ServiceBuilder;
+ start(): Promise;
};
// @public (undocumented)
@@ -352,47 +408,53 @@ export const SingleConnectionDatabaseManager: typeof DatabaseManager;
// @public
export class SingleHostDiscovery implements PluginEndpointDiscovery {
- static fromConfig(config: Config, options?: {
- basePath?: string;
- }): SingleHostDiscovery;
- // (undocumented)
- getBaseUrl(pluginId: string): Promise;
- // (undocumented)
- getExternalBaseUrl(pluginId: string): Promise;
- }
+ static fromConfig(
+ config: Config,
+ options?: {
+ basePath?: string;
+ },
+ ): SingleHostDiscovery;
+ // (undocumented)
+ getBaseUrl(pluginId: string): Promise;
+ // (undocumented)
+ getExternalBaseUrl(pluginId: string): Promise;
+}
// @public (undocumented)
export type StatusCheck = () => Promise;
// @public
-export function statusCheckHandler(options?: StatusCheckHandlerOptions): Promise;
+export function statusCheckHandler(
+ options?: StatusCheckHandlerOptions,
+): Promise;
// @public (undocumented)
export interface StatusCheckHandlerOptions {
- statusCheck?: StatusCheck;
+ statusCheck?: StatusCheck;
}
// @public
export type UrlReader = {
- read(url: string): Promise;
- readUrl?(url: string, options?: ReadUrlOptions): Promise;
- readTree(url: string, options?: ReadTreeOptions): Promise;
- search(url: string, options?: SearchOptions): Promise;
+ read(url: string): Promise;
+ readUrl?(url: string, options?: ReadUrlOptions): Promise;
+ readTree(url: string, options?: ReadTreeOptions): Promise;
+ search(url: string, options?: SearchOptions): Promise;
};
// @public
export class UrlReaders {
- static create({ logger, config, factories }: CreateOptions): UrlReader;
- static default({ logger, config, factories }: CreateOptions): UrlReader;
+ static create({ logger, config, factories }: CreateOptions): UrlReader;
+ static default({ logger, config, factories }: CreateOptions): UrlReader;
}
// @public
-export function useHotCleanup(_module: NodeModule, cancelEffect: () => void): void;
+export function useHotCleanup(
+ _module: NodeModule,
+ cancelEffect: () => void,
+): void;
// @public
export function useHotMemoize(_module: NodeModule, valueFactory: () => T): T;
-
// (No @packageDocumentation comment for this package)
-
```
diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json
index e777e947c2..6cf20b8234 100644
--- a/packages/backend-common/package.json
+++ b/packages/backend-common/package.json
@@ -47,7 +47,7 @@
"dockerode": "^3.2.1",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
- "fs-extra": "^10.0.0",
+ "fs-extra": "9.1.0",
"git-url-parse": "~11.4.4",
"helmet": "^4.0.0",
"isomorphic-git": "^1.8.0",
diff --git a/packages/backend-common/src/service/createStatusCheckRouter.ts b/packages/backend-common/src/service/createStatusCheckRouter.ts
index ab24a6953b..fd794cc9c4 100644
--- a/packages/backend-common/src/service/createStatusCheckRouter.ts
+++ b/packages/backend-common/src/service/createStatusCheckRouter.ts
@@ -22,6 +22,10 @@ import { errorHandler, statusCheckHandler, StatusCheck } from '../middleware';
export interface StatusCheckRouterOptions {
logger: Logger;
path?: string;
+ /**
+ * If not implemented, the default express middleware always returns 200.
+ * Override this to implement your own logic for a health check.
+ */
statusCheck?: StatusCheck;
}
diff --git a/packages/backend-test-utils/api-report.md b/packages/backend-test-utils/api-report.md
index 28d4a00463..184ed74978 100644
--- a/packages/backend-test-utils/api-report.md
+++ b/packages/backend-test-utils/api-report.md
@@ -3,29 +3,30 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
-
import { Knex } from 'knex';
// @public (undocumented)
export function isDockerDisabledForTests(): boolean;
// @public
-export type TestDatabaseId = 'POSTGRES_13' | 'POSTGRES_9' | 'MYSQL_8' | 'SQLITE_3';
+export type TestDatabaseId =
+ | 'POSTGRES_13'
+ | 'POSTGRES_9'
+ | 'MYSQL_8'
+ | 'SQLITE_3';
// @public
export class TestDatabases {
- static create(options?: {
- ids?: TestDatabaseId[];
- disableDocker?: boolean;
- }): TestDatabases;
- // (undocumented)
- eachSupportedId(): [TestDatabaseId][];
- init(id: TestDatabaseId): Promise;
- // (undocumented)
- supports(id: TestDatabaseId): boolean;
+ static create(options?: {
+ ids?: TestDatabaseId[];
+ disableDocker?: boolean;
+ }): TestDatabases;
+ // (undocumented)
+ eachSupportedId(): [TestDatabaseId][];
+ init(id: TestDatabaseId): Promise;
+ // (undocumented)
+ supports(id: TestDatabaseId): boolean;
}
-
// (No @packageDocumentation comment for this package)
-
```
diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md
index 1f911c84e9..2abdeb8c75 100644
--- a/packages/catalog-client/api-report.md
+++ b/packages/catalog-client/api-report.md
@@ -3,83 +3,130 @@
> 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';
+ type?: string;
+ target: string;
+ dryRun?: boolean;
+ presence?: 'optional' | 'required';
};
// @public (undocumented)
export type AddLocationResponse = {
- location: Location_2;
- entities: Entity[];
+ location: Location_2;
+ entities: Entity[];
};
// @public (undocumented)
export interface CatalogApi {
- // (undocumented)
- addLocation(location: AddLocationRequest, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getEntities(request?: CatalogEntitiesRequest, options?: CatalogRequestOptions): Promise>;
- // (undocumented)
- getEntityByName(name: EntityName, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getLocationById(id: string, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getOriginLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- removeEntityByUid(uid: string, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- removeLocationById(id: string, options?: CatalogRequestOptions): Promise;
+ // (undocumented)
+ addLocation(
+ location: AddLocationRequest,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getEntities(
+ request?: CatalogEntitiesRequest,
+ options?: CatalogRequestOptions,
+ ): Promise>;
+ // (undocumented)
+ getEntityByName(
+ name: EntityName,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getLocationByEntity(
+ entity: Entity,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getLocationById(
+ id: string,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getOriginLocationByEntity(
+ entity: Entity,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ removeEntityByUid(
+ uid: string,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ removeLocationById(
+ id: string,
+ options?: CatalogRequestOptions,
+ ): Promise;
}
// @public (undocumented)
export class CatalogClient implements CatalogApi {
- constructor(options: {
- discoveryApi: DiscoveryApi;
- });
- // (undocumented)
- addLocation({ type, target, dryRun, presence }: AddLocationRequest, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getEntities(request?: CatalogEntitiesRequest, options?: CatalogRequestOptions): Promise>;
- // (undocumented)
- getEntityByName(compoundName: EntityName, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getLocationById(id: string, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- getOriginLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- removeEntityByUid(uid: string, options?: CatalogRequestOptions): Promise;
- // (undocumented)
- removeLocationById(id: string, options?: CatalogRequestOptions): Promise;
- }
+ constructor(options: { discoveryApi: DiscoveryApi });
+ // (undocumented)
+ addLocation(
+ { type, target, dryRun, presence }: AddLocationRequest,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getEntities(
+ request?: CatalogEntitiesRequest,
+ options?: CatalogRequestOptions,
+ ): Promise>;
+ // (undocumented)
+ getEntityByName(
+ compoundName: EntityName,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getLocationByEntity(
+ entity: Entity,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getLocationById(
+ id: string,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ getOriginLocationByEntity(
+ entity: Entity,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ removeEntityByUid(
+ uid: string,
+ options?: CatalogRequestOptions,
+ ): Promise;
+ // (undocumented)
+ removeLocationById(
+ id: string,
+ options?: CatalogRequestOptions,
+ ): Promise;
+}
// @public (undocumented)
export type CatalogEntitiesRequest = {
- filter?: Record[] | Record | undefined;
- fields?: string[] | undefined;
+ filter?:
+ | Record[]
+ | Record
+ | undefined;
+ fields?: string[] | undefined;
};
// @public (undocumented)
export type CatalogListResponse = {
- items: T[];
+ items: T[];
};
// @public
-export const ENTITY_STATUS_CATALOG_PROCESSING_TYPE = "backstage.io/catalog-processing";
-
+export const ENTITY_STATUS_CATALOG_PROCESSING_TYPE =
+ 'backstage.io/catalog-processing';
// (No @packageDocumentation comment for this package)
-
```
diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md
index 5d055566be..74027716de 100644
--- a/packages/catalog-model/api-report.md
+++ b/packages/catalog-model/api-report.md
@@ -3,7 +3,6 @@
> 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';
@@ -11,204 +10,222 @@ import { SerializedError } from '@backstage/errors';
import * as yup from 'yup';
// @public @deprecated (undocumented)
-export const analyzeLocationSchema: yup.ObjectSchema<{
+export const analyzeLocationSchema: yup.ObjectSchema<
+ {
location: LocationSpec;
-}, object>;
+ },
+ object
+>;
// @public (undocumented)
interface ApiEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'API';
- // (undocumented)
- spec: {
- type: string;
- lifecycle: string;
- owner: string;
- definition: string;
- system?: string;
- };
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'API';
+ // (undocumented)
+ spec: {
+ type: string;
+ lifecycle: string;
+ owner: string;
+ definition: string;
+ system?: string;
+ };
}
-
-export { ApiEntityV1alpha1 as ApiEntity }
-
-export { ApiEntityV1alpha1 }
+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;
+ 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;
+export function compareEntityToRef(
+ entity: Entity,
+ ref: EntityRef | EntityName,
+ context?: EntityRefContext,
+): boolean;
// @public (undocumented)
interface ComponentEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'Component';
- // (undocumented)
- spec: {
- type: string;
- lifecycle: string;
- owner: string;
- subcomponentOf?: string;
- providesApis?: string[];
- consumesApis?: string[];
- dependsOn?: string[];
- system?: string;
- };
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'Component';
+ // (undocumented)
+ spec: {
+ type: string;
+ lifecycle: string;
+ owner: string;
+ subcomponentOf?: string;
+ providesApis?: string[];
+ consumesApis?: string[];
+ dependsOn?: string[];
+ system?: string;
+ };
}
-
-export { ComponentEntityV1alpha1 as ComponentEntity }
-
-export { ComponentEntityV1alpha1 }
+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;
- }
+ constructor(namespace?: string);
+ // (undocumented)
+ enforce(entity: Entity): Promise;
+}
// @public (undocumented)
interface DomainEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'Domain';
- // (undocumented)
- spec: {
- owner: string;
- };
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'Domain';
+ // (undocumented)
+ spec: {
+ owner: string;
+ };
}
-
-export { DomainEntityV1alpha1 as DomainEntity }
-
-export { DomainEntityV1alpha1 }
+export { DomainEntityV1alpha1 as DomainEntity };
+export { DomainEntityV1alpha1 };
// @public (undocumented)
export const domainEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
-export const EDIT_URL_ANNOTATION = "backstage.io/edit-url";
+export const EDIT_URL_ANNOTATION = 'backstage.io/edit-url';
// @public
export type Entity = {
- apiVersion: string;
- kind: string;
- metadata: EntityMeta;
- spec?: JsonObject;
- relations?: EntityRelation[];
- status?: UNSTABLE_EntityStatus;
+ apiVersion: string;
+ kind: string;
+ metadata: EntityMeta;
+ spec?: JsonObject;
+ relations?: EntityRelation[];
+ status?: UNSTABLE_EntityStatus;
};
// @public
-export const ENTITY_DEFAULT_NAMESPACE = "default";
+export const ENTITY_DEFAULT_NAMESPACE = 'default';
// @public
-export const ENTITY_META_GENERATED_FIELDS: readonly ["uid", "etag", "generation"];
+export const ENTITY_META_GENERATED_FIELDS: readonly [
+ 'uid',
+ 'etag',
+ 'generation',
+];
// @public
export type EntityEnvelope = {
- apiVersion: string;
- kind: string;
- metadata: {
- name: string;
- namespace?: string;
- };
+ apiVersion: string;
+ kind: string;
+ metadata: {
+ name: string;
+ namespace?: string;
+ };
};
// @public
-export function entityEnvelopeSchemaValidator(schema?: unknown): (data: unknown) => T;
+export function entityEnvelopeSchemaValidator<
+ T extends EntityEnvelope = EntityEnvelope
+>(schema?: unknown): (data: unknown) => T;
// @public
export function entityHasChanges(previous: Entity, next: Entity): boolean;
// @public
-export function entityKindSchemaValidator(schema: unknown): (data: unknown) => T | false;
+export function entityKindSchemaValidator(
+ schema: unknown,
+): (data: unknown) => T | false;
// @public
export type EntityLink = {
- url: string;
- title?: string;
- icon?: string;
+ 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;
- annotations?: Record;
- tags?: string[];
- links?: EntityLink[];
+ uid?: string;
+ etag?: string;
+ generation?: number;
+ name: string;
+ namespace?: string;
+ description?: string;
+ labels?: Record;
+ annotations?: Record;
+ tags?: string[];
+ links?: EntityLink[];
};
// @public
export type EntityName = {
- kind: string;
- namespace: string;
- name: string;
+ kind: string;
+ namespace: string;
+ name: string;
};
// @public (undocumented)
export const EntityPolicies: {
- allOf(policies: EntityPolicy[]): AllEntityPolicies;
- oneOf(policies: EntityPolicy[]): AnyEntityPolicy;
+ allOf(policies: EntityPolicy[]): AllEntityPolicies;
+ oneOf(policies: EntityPolicy[]): AnyEntityPolicy;
};
// @public
export type EntityPolicy = {
- enforce(entity: Entity): Promise;
+ enforce(entity: Entity): Promise;
};
// @public
-export type EntityRef = string | {
- kind?: string;
- namespace?: string;
- name: string;
-};
+export type EntityRef =
+ | string
+ | {
+ kind?: string;
+ namespace?: string;
+ name: string;
+ };
// @public
export type EntityRelation = {
- type: string;
- target: EntityName;
+ type: string;
+ target: EntityName;
};
// @public
export type EntityRelationSpec = {
- source: EntityName;
- type: string;
- target: EntityName;
+ source: EntityName;
+ type: string;
+ target: EntityName;
};
// @public
-export function entitySchemaValidator(schema?: unknown): (data: unknown) => T;
+export function entitySchemaValidator(
+ schema?: unknown,
+): (data: unknown) => T;
// @public
export class FieldFormatEntityPolicy implements EntityPolicy {
- constructor(validators?: Validators);
- // (undocumented)
- enforce(entity: Entity): Promise;
- }
+ constructor(validators?: Validators);
+ // (undocumented)
+ enforce(entity: Entity): Promise;
+}
// @public
export function generateEntityEtag(): string;
@@ -223,95 +240,93 @@ export function generateUpdatedEntity(previous: Entity, next: Entity): Entity;
export function getEntityName(entity: Entity): EntityName;
// @public
-export function getEntitySourceLocation(entity: Entity): {
- type: string;
- target: string;
+export function getEntitySourceLocation(
+ entity: Entity,
+): {
+ type: string;
+ target: string;
};
// @public (undocumented)
interface GroupEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'Group';
- // (undocumented)
- spec: {
- type: string;
- profile?: {
- displayName?: string;
- email?: string;
- picture?: string;
- };
- parent?: string;
- children: string[];
- members?: string[];
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'Group';
+ // (undocumented)
+ spec: {
+ type: string;
+ profile?: {
+ displayName?: string;
+ email?: string;
+ picture?: string;
};
+ parent?: string;
+ children: string[];
+ members?: string[];
+ };
}
-
-export { GroupEntityV1alpha1 as GroupEntity }
-
-export { GroupEntityV1alpha1 }
+export { GroupEntityV1alpha1 as GroupEntity };
+export { GroupEntityV1alpha1 };
// @public (undocumented)
export const groupEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
-export type JSONSchema = JSONSchema7 & {
+export type JSONSchema = JSONSchema7 &
+ {
[key in string]?: JsonValue;
-};
+ };
// @public
export type KindValidator = {
- check(entity: Entity): Promise;
+ check(entity: Entity): Promise;
};
// @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;
+ // (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;
+ id: string;
} & LocationSpec;
-
-export { Location_2 as Location }
+export { Location_2 as Location };
// @public (undocumented)
-export const LOCATION_ANNOTATION = "backstage.io/managed-by-location";
+export const LOCATION_ANNOTATION = 'backstage.io/managed-by-location';
// @public (undocumented)
interface LocationEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'Location';
- // (undocumented)
- spec: {
- type?: string;
- target?: string;
- targets?: string[];
- };
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'Location';
+ // (undocumented)
+ spec: {
+ type?: string;
+ target?: string;
+ targets?: string[];
+ };
}
-
-export { LocationEntityV1alpha1 as LocationEntity }
-
-export { LocationEntityV1alpha1 }
+export { LocationEntityV1alpha1 as LocationEntity };
+export { LocationEntityV1alpha1 };
// @public (undocumented)
export const locationEntityV1alpha1Validator: KindValidator;
@@ -321,9 +336,9 @@ export const locationSchema: yup.ObjectSchema;
// @public (undocumented)
export type LocationSpec = {
- type: string;
- target: string;
- presence?: 'optional' | 'required';
+ type: string;
+ target: string;
+ presence?: 'optional' | 'required';
};
// @public @deprecated (undocumented)
@@ -334,190 +349,209 @@ export function makeValidator(overrides?: Partial): Validators;
// @public
export class NoForeignRootFieldsEntityPolicy implements EntityPolicy {
- constructor(knownFields?: string[]);
- // (undocumented)
- enforce(entity: Entity): Promise;
- }
+ constructor(knownFields?: string[]);
+ // (undocumented)
+ enforce(entity: Entity): Promise;
+}
// @public (undocumented)
-export const ORIGIN_LOCATION_ANNOTATION = "backstage.io/managed-by-origin-location";
+export const ORIGIN_LOCATION_ANNOTATION =
+ 'backstage.io/managed-by-origin-location';
// @public
-export function parseEntityName(ref: EntityRef, context?: EntityRefContext): EntityName;
+export function parseEntityName(
+ ref: EntityRef,
+ context?: EntityRefContext,
+): EntityName;
// @public
-export function parseEntityRef(ref: EntityRef, context?: {
+export function parseEntityRef(
+ ref: EntityRef,
+ context?: {
defaultKind: string;
defaultNamespace: string;
-}): {
- kind: string;
- namespace: string;
- name: string;
+ },
+): {
+ kind: string;
+ namespace: string;
+ name: string;
};
// @public (undocumented)
-export function parseEntityRef(ref: EntityRef, context?: {
+export function parseEntityRef(
+ ref: EntityRef,
+ context?: {
defaultKind: string;
-}): {
- kind: string;
- namespace?: string;
- name: string;
+ },
+): {
+ kind: string;
+ namespace?: string;
+ name: string;
};
// @public (undocumented)
-export function parseEntityRef(ref: EntityRef, context?: {
+export function parseEntityRef(
+ ref: EntityRef,
+ context?: {
defaultNamespace: string;
-}): {
- kind?: string;
- namespace: string;
- name: string;
+ },
+): {
+ kind?: string;
+ namespace: string;
+ name: string;
};
// @public
-export function parseLocationReference(ref: string): {
- type: string;
- target: string;
+export function parseLocationReference(
+ ref: string,
+): {
+ type: string;
+ target: string;
};
// @public (undocumented)
-export const RELATION_API_CONSUMED_BY = "apiConsumedBy";
+export const RELATION_API_CONSUMED_BY = 'apiConsumedBy';
// @public (undocumented)
-export const RELATION_API_PROVIDED_BY = "apiProvidedBy";
+export const RELATION_API_PROVIDED_BY = 'apiProvidedBy';
// @public (undocumented)
-export const RELATION_CHILD_OF = "childOf";
+export const RELATION_CHILD_OF = 'childOf';
// @public
-export const RELATION_CONSUMES_API = "consumesApi";
+export const RELATION_CONSUMES_API = 'consumesApi';
// @public (undocumented)
-export const RELATION_DEPENDENCY_OF = "dependencyOf";
+export const RELATION_DEPENDENCY_OF = 'dependencyOf';
// @public
-export const RELATION_DEPENDS_ON = "dependsOn";
+export const RELATION_DEPENDS_ON = 'dependsOn';
// @public (undocumented)
-export const RELATION_HAS_MEMBER = "hasMember";
+export const RELATION_HAS_MEMBER = 'hasMember';
// @public (undocumented)
-export const RELATION_HAS_PART = "hasPart";
+export const RELATION_HAS_PART = 'hasPart';
// @public
-export const RELATION_MEMBER_OF = "memberOf";
+export const RELATION_MEMBER_OF = 'memberOf';
// @public
-export const RELATION_OWNED_BY = "ownedBy";
+export const RELATION_OWNED_BY = 'ownedBy';
// @public (undocumented)
-export const RELATION_OWNER_OF = "ownerOf";
+export const RELATION_OWNER_OF = 'ownerOf';
// @public
-export const RELATION_PARENT_OF = "parentOf";
+export const RELATION_PARENT_OF = 'parentOf';
// @public
-export const RELATION_PART_OF = "partOf";
+export const RELATION_PART_OF = 'partOf';
// @public (undocumented)
-export const RELATION_PROVIDES_API = "providesApi";
+export const RELATION_PROVIDES_API = 'providesApi';
// @public (undocumented)
interface ResourceEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'Resource';
- // (undocumented)
- spec: {
- type: string;
- owner: string;
- dependsOn?: string[];
- system?: string;
- };
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'Resource';
+ // (undocumented)
+ spec: {
+ type: string;
+ owner: string;
+ dependsOn?: string[];
+ system?: string;
+ };
}
-
-export { ResourceEntityV1alpha1 as ResourceEntity }
-
-export { ResourceEntityV1alpha1 }
+export { ResourceEntityV1alpha1 as ResourceEntity };
+export { ResourceEntityV1alpha1 };
// @public (undocumented)
export const resourceEntityV1alpha1Validator: KindValidator;
// @public
export class SchemaValidEntityPolicy implements EntityPolicy {
- // (undocumented)
- enforce(entity: Entity): Promise;
- }
+ // (undocumented)
+ enforce(entity: Entity): Promise;
+}
// @public @deprecated
-export function serializeEntityRef(ref: Entity | {
- kind?: string;
- namespace?: string;
- name: string;
-}): EntityRef;
+export function serializeEntityRef(
+ ref:
+ | Entity
+ | {
+ kind?: string;
+ namespace?: string;
+ name: string;
+ },
+): EntityRef;
// @public (undocumented)
-export const SOURCE_LOCATION_ANNOTATION = "backstage.io/source-location";
+export const SOURCE_LOCATION_ANNOTATION = 'backstage.io/source-location';
// @public
-export function stringifyEntityRef(ref: Entity | {
- kind: string;
- namespace?: string;
- name: string;
-}): string;
+export function stringifyEntityRef(
+ ref:
+ | Entity
+ | {
+ kind: string;
+ namespace?: string;
+ name: string;
+ },
+): string;
// @public
export function stringifyLocationReference(ref: {
- type: string;
- target: string;
+ type: string;
+ target: string;
}): string;
// @public (undocumented)
interface SystemEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'System';
- // (undocumented)
- spec: {
- owner: string;
- domain?: string;
- };
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'System';
+ // (undocumented)
+ spec: {
+ owner: string;
+ domain?: string;
+ };
}
-
-export { SystemEntityV1alpha1 as SystemEntity }
-
-export { SystemEntityV1alpha1 }
+export { SystemEntityV1alpha1 as SystemEntity };
+export { SystemEntityV1alpha1 };
// @public (undocumented)
export const systemEntityV1alpha1Validator: KindValidator;
// @public (undocumented)
export interface TemplateEntityV1beta2 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1beta2';
- // (undocumented)
- kind: 'Template';
- // (undocumented)
- metadata: EntityMeta & {
- title?: string;
- };
- // (undocumented)
- spec: {
- type: string;
- parameters?: JsonObject | JsonObject[];
- steps: Array<{
- id?: string;
- name?: string;
- action: string;
- input?: JsonObject;
- if?: string | boolean;
- }>;
- output?: {
- [name: string]: string;
- };
- owner?: string;
+ // (undocumented)
+ apiVersion: 'backstage.io/v1beta2';
+ // (undocumented)
+ kind: 'Template';
+ // (undocumented)
+ metadata: EntityMeta & {
+ title?: string;
+ };
+ // (undocumented)
+ spec: {
+ type: string;
+ parameters?: JsonObject | JsonObject[];
+ steps: Array<{
+ id?: string;
+ name?: string;
+ action: string;
+ input?: JsonObject;
+ if?: string | boolean;
+ }>;
+ output?: {
+ [name: string]: string;
};
+ owner?: string;
+ };
}
// @public (undocumented)
@@ -525,15 +559,15 @@ export const templateEntityV1beta2Validator: KindValidator;
// @alpha
export type UNSTABLE_EntityStatus = {
- items?: UNSTABLE_EntityStatusItem[];
+ items?: UNSTABLE_EntityStatusItem[];
};
// @alpha
export type UNSTABLE_EntityStatusItem = {
- type: string;
- level: UNSTABLE_EntityStatusLevel;
- message: string;
- error?: SerializedError;
+ type: string;
+ level: UNSTABLE_EntityStatusLevel;
+ message: string;
+ error?: SerializedError;
};
// @alpha
@@ -541,45 +575,41 @@ export type UNSTABLE_EntityStatusLevel = 'info' | 'warning' | 'error';
// @public (undocumented)
interface UserEntityV1alpha1 extends Entity {
- // (undocumented)
- apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
- // (undocumented)
- kind: 'User';
- // (undocumented)
- spec: {
- profile?: {
- displayName?: string;
- email?: string;
- picture?: string;
- };
- memberOf: string[];
+ // (undocumented)
+ apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1';
+ // (undocumented)
+ kind: 'User';
+ // (undocumented)
+ spec: {
+ profile?: {
+ displayName?: string;
+ email?: string;
+ picture?: string;
};
+ memberOf: string[];
+ };
}
-
-export { UserEntityV1alpha1 as UserEntity }
-
-export { UserEntityV1alpha1 }
+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;
+ 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";
-
+export const VIEW_URL_ANNOTATION = 'backstage.io/view-url';
// (No @packageDocumentation comment for this package)
-
```
diff --git a/packages/cli/package.json b/packages/cli/package.json
index c9bde05bd7..a7032879bc 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -77,7 +77,7 @@
"express": "^4.17.1",
"file-loader": "^6.2.0",
"fork-ts-checker-webpack-plugin": "^6.2.9",
- "fs-extra": "^10.0.0",
+ "fs-extra": "9.1.0",
"handlebars": "^4.7.3",
"html-webpack-plugin": "^4.3.0",
"inquirer": "^7.0.4",
diff --git a/packages/config-loader/api-report.md b/packages/config-loader/api-report.md
index a09311b786..ffd15b0c9a 100644
--- a/packages/config-loader/api-report.md
+++ b/packages/config-loader/api-report.md
@@ -3,15 +3,17 @@
> 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;
+ process(
+ appConfigs: AppConfig[],
+ options?: ConfigProcessingOptions,
+ ): AppConfig[];
+ serialize(): JsonObject;
};
// @public
@@ -22,10 +24,10 @@ export function loadConfig(options: LoadConfigOptions): Promise;
// @public (undocumented)
export type LoadConfigOptions = {
- configRoot: string;
- configPaths: string[];
- env?: string;
- experimentalEnvFunc?: EnvFunc;
+ configRoot: string;
+ configPaths: string[];
+ env?: string;
+ experimentalEnvFunc?: EnvFunc;
};
// @public
@@ -36,10 +38,8 @@ export function mergeConfigSchemas(schemas: JSONSchema7[]): JSONSchema7;
// @public
export function readEnvConfig(env: {
- [name: string]: string | undefined;
+ [name: string]: string | undefined;
}): AppConfig[];
-
// (No @packageDocumentation comment for this package)
-
```
diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json
index d5a4f600fd..cff324484a 100644
--- a/packages/config-loader/package.json
+++ b/packages/config-loader/package.json
@@ -34,7 +34,7 @@
"@backstage/config": "^0.1.5",
"@types/json-schema": "^7.0.6",
"ajv": "^7.0.3",
- "fs-extra": "^10.0.0",
+ "fs-extra": "9.1.0",
"json-schema": "^0.3.0",
"json-schema-merge-allof": "^0.8.1",
"typescript-json-schema": "^0.50.1",
diff --git a/packages/config/api-report.md b/packages/config/api-report.md
index be250778ec..0c243aab48 100644
--- a/packages/config/api-report.md
+++ b/packages/config/api-report.md
@@ -3,79 +3,82 @@
> 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;
+ context: string;
+ data: JsonObject;
};
// @public (undocumented)
export type Config = {
- has(key: string): boolean;
- keys(): string[];
- get(key?: string): T;
- getOptional(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;
+ has(key: string): boolean;
+ keys(): string[];
+ get(key?: string): T;
+ getOptional(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(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(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 {
+ constructor(
+ data: JsonObject | undefined,
+ context?: string,
+ fallback?: ConfigReader | undefined,
+ prefix?: string,
+ );
+ // (undocumented)
+ static fromConfigs(configs: AppConfig[]): ConfigReader;
+ // (undocumented)
+ get(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(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 {}
+
// @public (undocumented)
export type JsonObject = {
- [key in string]?: JsonValue;
+ [key in string]?: JsonValue;
};
// @public (undocumented)
@@ -84,7 +87,5 @@ export type JsonPrimitive = number | string | boolean | null;
// @public (undocumented)
export type JsonValue = JsonObject | JsonArray | JsonPrimitive;
-
// (No @packageDocumentation comment for this package)
-
```
diff --git a/packages/core-app-api/api-report.md b/packages/core-app-api/api-report.md
index 8cb18cf1ce..af86f042a0 100644
--- a/packages/core-app-api/api-report.md
+++ b/packages/core-app-api/api-report.md
@@ -3,7 +3,6 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
-
import { AlertApi } from '@backstage/core-plugin-api';
import { AlertMessage } from '@backstage/core-plugin-api';
import { AnyApiFactory } from '@backstage/core-plugin-api';
@@ -57,72 +56,97 @@ import { SubRouteRef } from '@backstage/core-plugin-api';
// @public
export class AlertApiForwarder implements AlertApi {
- // (undocumented)
- alert$(): Observable;
- // (undocumented)
- post(alert: AlertMessage): void;
- }
+ // (undocumented)
+ alert$(): Observable;
+ // (undocumented)
+ post(alert: AlertMessage): void;
+}
// @public (undocumented)
export type ApiFactoryHolder = {
- get(api: ApiRef): ApiFactory | undefined;
+ get(
+ api: ApiRef,
+ ):
+ | ApiFactory<
+ T,
+ T,
+ {
+ [key in string]: unknown;
+ }
+ >
+ | undefined;
};
// @public
export class ApiFactoryRegistry implements ApiFactoryHolder {
- // (undocumented)
- get(api: ApiRef): ApiFactory | undefined;
- // (undocumented)
- getAllApis(): Set;
- register(scope: ApiFactoryScope, factory: ApiFactory): boolean;
+ // (undocumented)
+ get(
+ api: ApiRef,
+ ):
+ | ApiFactory<
+ T,
+ T,
+ {
+ [x: string]: unknown;
+ }
+ >
+ | undefined;
+ // (undocumented)
+ getAllApis(): Set;
+ register<
+ Api,
+ Impl extends Api,
+ Deps extends {
+ [name in string]: unknown;
+ }
+ >(scope: ApiFactoryScope, factory: ApiFactory): boolean;
}
// @public (undocumented)
export const ApiProvider: {
- ({ apis, children, }: PropsWithChildren): JSX.Element;
- propTypes: {
- apis: PropTypes.Validator any>;
- }>>;
- children: PropTypes.Requireable;
- };
+ ({ apis, children }: PropsWithChildren): JSX.Element;
+ propTypes: {
+ apis: PropTypes.Validator<
+ PropTypes.InferProps<{
+ get: PropTypes.Validator<(...args: any[]) => any>;
+ }>
+ >;
+ children: PropTypes.Requireable;
+ };
};
// @public (undocumented)
export class ApiRegistry implements ApiHolder {
- constructor(apis: Map);
- // (undocumented)
- static builder(): ApiRegistryBuilder;
- // (undocumented)
- static from(apis: ApiImpl[]): ApiRegistry;
- // (undocumented)
- get(api: ApiRef): T | undefined;
- static with(api: ApiRef, impl: T): ApiRegistry;
- with(api: ApiRef, impl: T): ApiRegistry;
+ constructor(apis: Map);
+ // (undocumented)
+ static builder(): ApiRegistryBuilder;
+ // (undocumented)
+ static from(apis: ApiImpl[]): ApiRegistry;
+ // (undocumented)
+ get(api: ApiRef): T | undefined;
+ static with(api: ApiRef, impl: T): ApiRegistry;
+ with(api: ApiRef, impl: T): ApiRegistry;
}
// @public (undocumented)
export class ApiResolver implements ApiHolder {
- constructor(factories: ApiFactoryHolder);
- // (undocumented)
- get(ref: ApiRef): T | undefined;
- static validateFactories(factories: ApiFactoryHolder, apis: Iterable): void;
+ constructor(factories: ApiFactoryHolder);
+ // (undocumented)
+ get(ref: ApiRef): T | undefined;
+ static validateFactories(
+ factories: ApiFactoryHolder,
+ apis: Iterable,
+ ): void;
}
// @public (undocumented)
export type AppComponents = {
- NotFoundErrorPage: ComponentType<{}>;
- BootErrorPage: ComponentType;
- Progress: ComponentType<{}>;
- Router: ComponentType<{}>;
- ErrorBoundaryFallback: ComponentType;
- SignInPage?: ComponentType;
+ NotFoundErrorPage: ComponentType<{}>;
+ BootErrorPage: ComponentType;
+ Progress: ComponentType<{}>;
+ Router: ComponentType<{}>;
+ ErrorBoundaryFallback: ComponentType;
+ SignInPage?: ComponentType;
};
// @public
@@ -130,72 +154,88 @@ export type AppConfigLoader = () => Promise;
// @public (undocumented)
export type AppContext = {
- getPlugins(): BackstagePlugin[];
- getSystemIcon(key: string): IconComponent | undefined;
- getComponents(): AppComponents;
+ getPlugins(): BackstagePlugin[];
+ getSystemIcon(key: string): IconComponent | undefined;
+ getComponents(): AppComponents;
};
// @public (undocumented)
export type AppOptions = {
- apis?: Iterable;
- icons?: Partial & {
- [key in string]: IconComponent;
+ apis?: Iterable;
+ icons?: Partial &
+ {
+ [key in string]: IconComponent;
};
- plugins?: BackstagePluginWithAnyOutput[];
- components?: Partial;
- themes?: AppTheme[];
- configLoader?: AppConfigLoader;
- bindRoutes?(context: {
- bind: AppRouteBinder;
- }): void;
+ plugins?: BackstagePluginWithAnyOutput[];
+ components?: Partial;
+ themes?: AppTheme[];
+ configLoader?: AppConfigLoader;
+ bindRoutes?(context: { bind: AppRouteBinder }): void;
};
// @public (undocumented)
-export type AppRouteBinder = (externalRoutes: ExternalRoutes, targetRoutes: PartialKeys, KeysWithType>>) => void;
+ }
+>(
+ externalRoutes: ExternalRoutes,
+ targetRoutes: PartialKeys<
+ TargetRouteMap,
+ KeysWithType>
+ >,
+) => void;
// @public (undocumented)
export class AppThemeSelector implements AppThemeApi {
- constructor(themes: AppTheme[]);
- // (undocumented)
- activeThemeId$(): Observable;
- // (undocumented)
- static createWithStorage(themes: AppTheme[]): AppThemeSelector;
- // (undocumented)
- getActiveThemeId(): string | undefined;
- // (undocumented)
- getInstalledThemes(): AppTheme[];
- // (undocumented)
- setActiveThemeId(themeId?: string): void;
- }
+ constructor(themes: AppTheme[]);
+ // (undocumented)
+ activeThemeId$(): Observable;
+ // (undocumented)
+ static createWithStorage(themes: AppTheme[]): AppThemeSelector;
+ // (undocumented)
+ getActiveThemeId(): string | undefined;
+ // (undocumented)
+ getInstalledThemes(): AppTheme[];
+ // (undocumented)
+ setActiveThemeId(themeId?: string): void;
+}
// @public (undocumented)
export class Auth0Auth {
- // (undocumented)
- static create({ discoveryApi, environment, provider, oauthRequestApi, defaultScopes, }: OAuthApiCreateOptions): typeof auth0AuthApiRef.T;
+ // (undocumented)
+ static create({
+ discoveryApi,
+ environment,
+ provider,
+ oauthRequestApi,
+ defaultScopes,
+ }: OAuthApiCreateOptions): typeof auth0AuthApiRef.T;
}
// @public (undocumented)
export type BackstageApp = {
- getPlugins(): BackstagePlugin[];
- getSystemIcon(key: string): IconComponent | undefined;
- getProvider(): ComponentType<{}>;
- getRouter(): ComponentType<{}>;
+ getPlugins(): BackstagePlugin[];
+ getSystemIcon(key: string): IconComponent | undefined;
+ getProvider(): ComponentType<{}>;
+ getRouter(): ComponentType<{}>;
};
// @public (undocumented)
-export type BackstagePluginWithAnyOutput = Omit, 'output'> & {
- output(): (PluginOutput | UnknownPluginOutput)[];
+export type BackstagePluginWithAnyOutput = Omit<
+ BackstagePlugin,
+ 'output'
+> & {
+ output(): (PluginOutput | UnknownPluginOutput)[];
};
// @public (undocumented)
export type BootErrorPageProps = {
- step: 'load-config' | 'load-chunk';
- error: Error;
+ step: 'load-config' | 'load-chunk';
+ error: Error;
};
-export { ConfigReader }
+export { ConfigReader };
// @public
export function createApp(options?: AppOptions): PrivateAppImpl;
@@ -205,36 +245,36 @@ export const defaultConfigLoader: AppConfigLoader;
// @public
export class ErrorAlerter implements ErrorApi {
- constructor(alertApi: AlertApi, errorApi: ErrorApi);
- // (undocumented)
- error$(): Observable<{
- error: {
- name: string;
- message: string;
- stack?: string | undefined;
- };
- context?: ErrorContext | undefined;
- }>;
- // (undocumented)
- post(error: Error, context?: ErrorContext): void;
+ constructor(alertApi: AlertApi, errorApi: ErrorApi);
+ // (undocumented)
+ error$(): Observable<{
+ error: {
+ name: string;
+ message: string;
+ stack?: string | undefined;
+ };
+ context?: ErrorContext | undefined;
+ }>;
+ // (undocumented)
+ post(error: Error, context?: ErrorContext): void;
}
// @public
export class ErrorApiForwarder implements ErrorApi {
- // (undocumented)
- error$(): Observable<{
- error: Error;
- context?: ErrorContext;
- }>;
- // (undocumented)
- post(error: Error, context?: ErrorContext): void;
- }
+ // (undocumented)
+ error$(): Observable<{
+ error: Error;
+ context?: ErrorContext;
+ }>;
+ // (undocumented)
+ post(error: Error, context?: ErrorContext): void;
+}
// @public (undocumented)
export type ErrorBoundaryFallbackProps = {
- plugin?: BackstagePlugin;
- error: Error;
- resetError: () => void;
+ plugin?: BackstagePlugin;
+ error: Error;
+ resetError: () => void;
};
// @public (undocumented)
@@ -242,191 +282,254 @@ export const FeatureFlagged: (props: FeatureFlaggedProps) => JSX.Element;
// @public (undocumented)
export type FeatureFlaggedProps = {
- children: ReactNode;
-} & ({
- with: string;
-} | {
- without: string;
-});
+ children: ReactNode;
+} & (
+ | {
+ with: string;
+ }
+ | {
+ without: string;
+ }
+);
// @public (undocumented)
export const FlatRoutes: (props: FlatRoutesProps) => JSX.Element | null;
// @public (undocumented)
export class GithubAuth implements OAuthApi, SessionApi {
- constructor(sessionManager: SessionManager